@firela/api-types 0.0.0-canary.32edff08 → 0.0.0-canary.3d558482

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,10 +74,6 @@ 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
  */
@@ -119,17 +107,17 @@ type AccountResponseDto = {
119
107
  */
120
108
  isCustom: boolean;
121
109
  /**
122
- * i18n key for display name
110
+ * Localized display name (ADR-0114, read-time projection)
123
111
  */
124
- i18nKey?: string;
112
+ displayName?: string;
125
113
  /**
126
114
  * Icon identifier
127
115
  */
128
116
  icon?: string;
129
117
  /**
130
- * Account metadata
118
+ * Open directive metadata (ADR-0115 Decision 9)
131
119
  */
132
- openMeta?: {
120
+ openDirectiveMeta?: {
133
121
  [key: string]: unknown;
134
122
  };
135
123
  /**
@@ -172,10 +160,6 @@ type AccountListResponseDto = {
172
160
  total: number;
173
161
  };
174
162
  type UpdateAccountDto = {
175
- /**
176
- * Display name to distinguish accounts at the same path
177
- */
178
- displayName?: string;
179
163
  /**
180
164
  * Allowed currencies (null = no restriction)
181
165
  */
@@ -184,18 +168,14 @@ type UpdateAccountDto = {
184
168
  * Booking method for cost basis
185
169
  */
186
170
  bookingMethod?: 'FIFO' | 'LIFO' | 'HIFO' | 'AVERAGE' | 'STRICT' | 'STRICT_WITH_SIZE' | 'NONE';
187
- /**
188
- * i18n key for display name
189
- */
190
- i18nKey?: string;
191
171
  /**
192
172
  * Icon identifier
193
173
  */
194
174
  icon?: string;
195
175
  /**
196
- * Additional metadata (merged with existing)
176
+ * Open directive metadata (merged with existing; NOT an opening-balance amount)
197
177
  */
198
- openMeta?: {
178
+ openDirectiveMeta?: {
199
179
  [key: string]: unknown;
200
180
  };
201
181
  /**
@@ -221,6 +201,26 @@ type ReopenAccountDto = {
221
201
  */
222
202
  reopenDate?: string;
223
203
  };
204
+ type CreateOpeningBalanceDto = {
205
+ /**
206
+ * Opening balance amount (non-negative)
207
+ */
208
+ amount: number;
209
+ /**
210
+ * Currency code
211
+ */
212
+ currency: string;
213
+ /**
214
+ * Opening-balance date (defaults to now)
215
+ */
216
+ date?: string;
217
+ };
218
+ type OpeningBalanceResultDto = {
219
+ /**
220
+ * Created opening-balance transaction id.
221
+ */
222
+ transactionId: string;
223
+ };
224
224
  type AccountStandardResponseDto = {
225
225
  /**
226
226
  * Account path (hierarchical, colon-separated)
@@ -230,10 +230,6 @@ type AccountStandardResponseDto = {
230
230
  * Account type in Beancount hierarchy
231
231
  */
232
232
  type: 'Assets' | 'Liabilities' | 'Income' | 'Expenses' | 'Equity';
233
- /**
234
- * i18n key for localized display name
235
- */
236
- i18nKey: string;
237
233
  /**
238
234
  * Short localized display name
239
235
  */
@@ -266,10 +262,6 @@ type AccountStandardListResponseDto = {
266
262
  region: string;
267
263
  };
268
264
  type TemplateMetadataDto = {
269
- /**
270
- * Whether this path can be extended
271
- */
272
- extendable: boolean;
273
265
  /**
274
266
  * Root account type
275
267
  */
@@ -293,6 +285,50 @@ type RegionInfoDto = {
293
285
  type RegionsMetadataResponseDto = {
294
286
  regions: Array<RegionInfoDto>;
295
287
  };
288
+ type CostSpecDto = {
289
+ /**
290
+ * Cost specification mode (mirrors engine CostSpec)
291
+ */
292
+ mode: 'per-unit' | 'total' | 'date' | 'label' | 'auto';
293
+ /**
294
+ * Per-unit cost (required when mode is "per-unit")
295
+ */
296
+ numberPerUnit?: string;
297
+ /**
298
+ * Total cost for all units (required when mode is "total")
299
+ */
300
+ totalNumber?: string;
301
+ /**
302
+ * Cost currency (required in all modes)
303
+ */
304
+ currency: string;
305
+ /**
306
+ * Lot acquisition date, ISO 8601 (required when mode is "date")
307
+ */
308
+ date?: string;
309
+ /**
310
+ * Lot label (required when mode is "label"; optional tag in buy modes)
311
+ */
312
+ label?: string;
313
+ /**
314
+ * Merge lots for AVERAGE booking (mode: auto)
315
+ */
316
+ merge?: boolean;
317
+ };
318
+ /**
319
+ * Cost specification mode (mirrors engine CostSpec)
320
+ */
321
+ type mode = 'per-unit' | 'total' | 'date' | 'label' | 'auto';
322
+ type AmountDto = {
323
+ /**
324
+ * Amount as decimal string (max 15 integer + 15 decimal digits)
325
+ */
326
+ number: string;
327
+ /**
328
+ * Currency/commodity code
329
+ */
330
+ currency: string;
331
+ };
296
332
  type CreatePostingDto = {
297
333
  /**
298
334
  * Account name in Beancount format (must start with uppercase, colon-separated)
@@ -312,6 +348,14 @@ type CreatePostingDto = {
312
348
  meta?: {
313
349
  [key: string]: unknown;
314
350
  };
351
+ /**
352
+ * Cost basis (Beancount `{...}`). Maps to engine costSpec. Required for commodity holdings so they carry a monetary weight that can balance.
353
+ */
354
+ cost?: CostSpecDto;
355
+ /**
356
+ * Price annotation (Beancount `@...`). Maps to engine price. Used for valuation; cost takes priority for balance weight.
357
+ */
358
+ price?: AmountDto;
315
359
  };
316
360
  type CreateTransactionDto = {
317
361
  /**
@@ -361,6 +405,24 @@ type CreateTransactionDto = {
361
405
  * Transaction flag: * (cleared), ! (pending)
362
406
  */
363
407
  type flag = '*' | '!';
408
+ type CostDetailDto = {
409
+ /**
410
+ * Per-unit cost basis (mirrors engine Cost.number)
411
+ */
412
+ number?: string;
413
+ /**
414
+ * Cost currency
415
+ */
416
+ currency?: string;
417
+ /**
418
+ * Lot acquisition date (ISO yyyy-mm-dd)
419
+ */
420
+ date?: string;
421
+ /**
422
+ * Lot label
423
+ */
424
+ label?: string;
425
+ };
364
426
  type PostingResponseDto = {
365
427
  /**
366
428
  * Account name
@@ -374,6 +436,10 @@ type PostingResponseDto = {
374
436
  * Currency
375
437
  */
376
438
  currency?: string;
439
+ /**
440
+ * Booking-resolved cost (mirrors engine Cost). Undefined when the posting has no cost basis.
441
+ */
442
+ cost?: CostDetailDto;
377
443
  };
378
444
  type RecurringSuggestionDto = {
379
445
  /**
@@ -513,6 +579,54 @@ type BatchTransactionResponseDto = {
513
579
  */
514
580
  failed: Array<BatchTransactionErrorDto>;
515
581
  };
582
+ type CorrectTransactionDto = {
583
+ /**
584
+ * Transaction date (ISO 8601 format)
585
+ */
586
+ date: string;
587
+ /**
588
+ * Transaction flag: * (cleared), ! (pending)
589
+ */
590
+ flag?: '*' | '!';
591
+ /**
592
+ * Payee name
593
+ */
594
+ payee?: string;
595
+ /**
596
+ * Transaction narration/description
597
+ */
598
+ narration: string;
599
+ /**
600
+ * Transaction tags (without # prefix)
601
+ */
602
+ tags?: Array<string>;
603
+ /**
604
+ * Transaction links (without ^ prefix)
605
+ */
606
+ links?: Array<string>;
607
+ /**
608
+ * Transaction postings (minimum 1, typically 2 for double-entry)
609
+ */
610
+ postings: Array<CreatePostingDto>;
611
+ /**
612
+ * Transaction-level metadata
613
+ */
614
+ meta?: {
615
+ [key: string]: unknown;
616
+ };
617
+ /**
618
+ * Unique key for idempotent transaction creation. If provided, duplicate requests with the same key will return the existing transaction.
619
+ */
620
+ idempotencyKey?: string;
621
+ /**
622
+ * Auto-create accounts if not found. When true, missing accounts will be automatically created. When false (default for API), missing accounts will cause a validation error. Set to true for quick entry scenarios where you want to create accounts on-the-fly.
623
+ */
624
+ autoCreateAccounts?: boolean;
625
+ /**
626
+ * Reason for correcting/superseding the original transaction
627
+ */
628
+ correctionReason?: string;
629
+ };
516
630
  type PostingDetailDto = {
517
631
  /**
518
632
  * Posting ID
@@ -523,9 +637,9 @@ type PostingDetailDto = {
523
637
  */
524
638
  accountId: string;
525
639
  /**
526
- * Account name
640
+ * Fully-qualified Beancount account path
527
641
  */
528
- accountName: string;
642
+ account: string;
529
643
  /**
530
644
  * Amount as decimal string. Typed optional but always present in responses: interpolation fills any MISSING posting before it is persisted or returned.
531
645
  */
@@ -546,6 +660,10 @@ type PostingDetailDto = {
546
660
  * Cost date
547
661
  */
548
662
  costDate?: string;
663
+ /**
664
+ * Booking-resolved cost (mirrors engine Cost). Undefined when the posting has no cost basis.
665
+ */
666
+ cost?: CostDetailDto;
549
667
  /**
550
668
  * Price amount
551
669
  */
@@ -636,6 +754,14 @@ type TransactionDetailDto = {
636
754
  * Correction reason (if voided or superseded)
637
755
  */
638
756
  correctionReason?: string;
757
+ /**
758
+ * ID of the transaction that supersedes this one (set when status=SUPERSEDED)
759
+ */
760
+ supersededBy?: string;
761
+ /**
762
+ * ID of the transaction this one corrected/replaced (back-link on the replacement)
763
+ */
764
+ originalTxn?: string;
639
765
  };
640
766
  /**
641
767
  * Transaction flag
@@ -645,6 +771,48 @@ type flag2 = 'CLEARED' | 'PENDING' | 'PADDING' | 'SUMMARIZE' | 'TRANSFER' | 'CON
645
771
  * Transaction status
646
772
  */
647
773
  type status2 = 'ACTIVE' | 'VOIDED' | 'SUPERSEDED';
774
+ type BalanceByCurrencyDto = {
775
+ /**
776
+ * ISO 4217 currency code
777
+ */
778
+ currency: string;
779
+ /**
780
+ * Balance amount
781
+ */
782
+ balance: string;
783
+ };
784
+ type ExchangeRateWarningDto = {
785
+ /**
786
+ * Warning type
787
+ */
788
+ type: string;
789
+ /**
790
+ * Currency without exchange rate
791
+ */
792
+ currency: string;
793
+ /**
794
+ * Total amount affected
795
+ */
796
+ totalAmount: string;
797
+ };
798
+ type TransactionListSummaryDto = {
799
+ /**
800
+ * 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.
801
+ */
802
+ totalAmount: string;
803
+ /**
804
+ * Base currency (ISO 4217)
805
+ */
806
+ currency: string;
807
+ /**
808
+ * Raw (unconverted) balance per currency
809
+ */
810
+ balanceByCurrency: Array<BalanceByCurrencyDto>;
811
+ /**
812
+ * Currencies missing an FX rate (omitted when empty)
813
+ */
814
+ warnings?: Array<ExchangeRateWarningDto>;
815
+ };
648
816
  type TransactionListResponseDto = {
649
817
  /**
650
818
  * List of transactions
@@ -662,6 +830,10 @@ type TransactionListResponseDto = {
662
830
  * Number of items skipped
663
831
  */
664
832
  offset: number;
833
+ /**
834
+ * 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.
835
+ */
836
+ summary?: TransactionListSummaryDto;
665
837
  };
666
838
  type TagSuggestionDto = {
667
839
  /**
@@ -1038,17 +1210,17 @@ type ResolveResultDto = {
1038
1210
  [key: string]: string;
1039
1211
  };
1040
1212
  /**
1041
- * Resolution ID for undo
1213
+ * Resolution ID for undo. Absent when the resolver rejected the decision (review stayed PENDING).
1042
1214
  */
1043
- resolutionId: string;
1215
+ resolutionId?: string;
1044
1216
  /**
1045
1217
  * Whether this decision can be undone
1046
1218
  */
1047
- canUndo: boolean;
1219
+ canUndo?: boolean;
1048
1220
  /**
1049
1221
  * Deadline for undo (24h from resolution)
1050
1222
  */
1051
- undoDeadline: string;
1223
+ undoDeadline?: string;
1052
1224
  /**
1053
1225
  * Rule ID if learning was triggered (ACCEPT_AND_LEARN actions). Use this to deep-link to the rule management page.
1054
1226
  */
@@ -1508,6 +1680,104 @@ type UpdateCommodityDto = {
1508
1680
  [key: string]: unknown;
1509
1681
  };
1510
1682
  };
1683
+ type CreateBeanPriceDto = {
1684
+ /**
1685
+ * Currency being priced (e.g., USD, AAPL, BTC)
1686
+ */
1687
+ currency: string;
1688
+ /**
1689
+ * Quote currency (pricing currency, e.g., CNY, EUR)
1690
+ */
1691
+ quoteCurrency: string;
1692
+ /**
1693
+ * Price amount (MUST be >= 0 per Beancount spec, supports up to 15 decimal places). Zero allowed for conversion entries, negative strictly prohibited.
1694
+ */
1695
+ amount: number;
1696
+ /**
1697
+ * Price date (ISO 8601 format)
1698
+ */
1699
+ date: string;
1700
+ /**
1701
+ * Metadata (validated by Zod schema, max field lengths enforced)
1702
+ */
1703
+ metadata?: {
1704
+ [key: string]: unknown;
1705
+ };
1706
+ };
1707
+ type PriceResponseDto = {
1708
+ /**
1709
+ * Unique identifier
1710
+ */
1711
+ id: string;
1712
+ /**
1713
+ * User ID (owner of the price)
1714
+ */
1715
+ userId: string;
1716
+ /**
1717
+ * Currency being priced (e.g., USD, AAPL, BTC)
1718
+ */
1719
+ currency: string;
1720
+ /**
1721
+ * Quote currency (pricing currency, e.g., USD, CNY)
1722
+ */
1723
+ quoteCurrency: string;
1724
+ /**
1725
+ * Price amount (corresponds to Beancount Amount.number). Supports up to 15 decimal places.
1726
+ */
1727
+ amount: number;
1728
+ /**
1729
+ * Price date (ISO 8601 format). Represents the date this price was valid.
1730
+ */
1731
+ date: string;
1732
+ /**
1733
+ * Metadata (corresponds to Beancount meta field). Contains source, confidence, note, etc.
1734
+ */
1735
+ meta: {
1736
+ [key: string]: unknown;
1737
+ };
1738
+ /**
1739
+ * Creation timestamp
1740
+ */
1741
+ createdAt: string;
1742
+ /**
1743
+ * Last update timestamp
1744
+ */
1745
+ updatedAt: string;
1746
+ };
1747
+ type PriceListResponseDto = {
1748
+ /**
1749
+ * List of prices
1750
+ */
1751
+ items: Array<PriceResponseDto>;
1752
+ /**
1753
+ * Total number of prices
1754
+ */
1755
+ total: number;
1756
+ };
1757
+ type UpdateBeanPriceDto = {
1758
+ /**
1759
+ * Currency being priced
1760
+ */
1761
+ currency?: string;
1762
+ /**
1763
+ * Quote currency (pricing currency)
1764
+ */
1765
+ quoteCurrency?: string;
1766
+ /**
1767
+ * Price amount (MUST be >= 0 per Beancount spec)
1768
+ */
1769
+ amount?: number;
1770
+ /**
1771
+ * Price date (ISO 8601 format)
1772
+ */
1773
+ date?: string;
1774
+ /**
1775
+ * Metadata
1776
+ */
1777
+ metadata?: {
1778
+ [key: string]: unknown;
1779
+ };
1780
+ };
1511
1781
  type CreateRecurringRuleDto = {
1512
1782
  /**
1513
1783
  * Rule name (unique per user)
@@ -2455,20 +2725,38 @@ type SignupDto = {
2455
2725
  */
2456
2726
  turnstileToken?: string;
2457
2727
  };
2458
- type UpdateUserSettingDto = {
2728
+ type SignupResponseDto = {
2459
2729
  /**
2460
- * Security ID
2730
+ * JWT auth token
2461
2731
  */
2462
- secId?: number;
2732
+ authToken: string;
2463
2733
  /**
2464
- * Annual interest rate
2734
+ * Auto-generated access token
2465
2735
  */
2466
- annualInterestRate?: number;
2736
+ accessToken: string;
2467
2737
  /**
2468
- * Currency code
2738
+ * Assigned user role
2469
2739
  */
2470
- currency?: string;
2471
- /**
2740
+ role: 'USER' | 'ADMIN' | 'DEMO' | 'INACTIVE' | 'PAID' | 'OPS';
2741
+ };
2742
+ /**
2743
+ * Assigned user role
2744
+ */
2745
+ type role = 'USER' | 'ADMIN' | 'DEMO' | 'INACTIVE' | 'PAID' | 'OPS';
2746
+ type UpdateUserSettingDto = {
2747
+ /**
2748
+ * Security ID
2749
+ */
2750
+ secId?: number;
2751
+ /**
2752
+ * Annual interest rate
2753
+ */
2754
+ annualInterestRate?: number;
2755
+ /**
2756
+ * Currency code
2757
+ */
2758
+ currency?: string;
2759
+ /**
2472
2760
  * Base currency code
2473
2761
  */
2474
2762
  baseCurrency?: string;
@@ -2517,43 +2805,435 @@ type UpdateUserSettingDto = {
2517
2805
  */
2518
2806
  isRestrictedView?: boolean;
2519
2807
  /**
2520
- * Language code
2808
+ * Language code
2809
+ */
2810
+ language?: string;
2811
+ /**
2812
+ * Locale code
2813
+ */
2814
+ locale?: string;
2815
+ /**
2816
+ * Projected total amount
2817
+ */
2818
+ projectedTotalAmount?: number;
2819
+ /**
2820
+ * Retirement date in ISO 8601 format
2821
+ */
2822
+ retirementDate?: string;
2823
+ /**
2824
+ * Savings rate percentage
2825
+ */
2826
+ savingsRate?: number;
2827
+ /**
2828
+ * View mode
2829
+ */
2830
+ viewMode?: 'DEFAULT' | 'ZEN';
2831
+ };
2832
+ /**
2833
+ * Color scheme
2834
+ */
2835
+ type colorScheme = 'DARK' | 'LIGHT';
2836
+ /**
2837
+ * View mode
2838
+ */
2839
+ type viewMode = 'DEFAULT' | 'ZEN';
2840
+ type UpdatePropertyDto = {
2841
+ /**
2842
+ * Property value
2843
+ */
2844
+ value: string;
2845
+ };
2846
+ type CurrencyBalanceDto = {
2847
+ /**
2848
+ * ISO 4217 currency code
2849
+ */
2850
+ currency: string;
2851
+ /**
2852
+ * Balance amount
2853
+ */
2854
+ balance: string;
2855
+ };
2856
+ type TimeSeriesPointDto = {
2857
+ /**
2858
+ * Date in YYYY-MM-DD format
2859
+ */
2860
+ date: string;
2861
+ /**
2862
+ * Value at this date (in base currency)
2863
+ */
2864
+ value: string;
2865
+ /**
2866
+ * Change from previous point
2867
+ */
2868
+ change?: {
2869
+ [key: string]: unknown;
2870
+ };
2871
+ /**
2872
+ * Total assets at this date (in base currency)
2873
+ */
2874
+ assets?: string;
2875
+ /**
2876
+ * Total liabilities at this date (in base currency)
2877
+ */
2878
+ liabilities?: string;
2879
+ /**
2880
+ * Multi-currency breakdown for this point
2881
+ */
2882
+ byCurrency?: Array<CurrencyBalanceDto>;
2883
+ };
2884
+ type TrendSummaryDto = {
2885
+ /**
2886
+ * Value at start of period
2887
+ */
2888
+ startValue: string;
2889
+ /**
2890
+ * Value at end of period
2891
+ */
2892
+ endValue: string;
2893
+ /**
2894
+ * Total change over period
2895
+ */
2896
+ totalChange: string;
2897
+ /**
2898
+ * Total change percentage
2899
+ */
2900
+ totalChangePercentage: string;
2901
+ };
2902
+ type MultiCurrencyPointDto = {
2903
+ /**
2904
+ * Date in YYYY-MM-DD format
2905
+ */
2906
+ date: string;
2907
+ /**
2908
+ * Balances by currency
2909
+ */
2910
+ byCurrency: Array<CurrencyBalanceDto>;
2911
+ };
2912
+ type PortfolioTrendsResponseDto = {
2913
+ /**
2914
+ * Time series data points
2915
+ */
2916
+ series: Array<TimeSeriesPointDto>;
2917
+ /**
2918
+ * Period summary
2919
+ */
2920
+ summary: TrendSummaryDto;
2921
+ /**
2922
+ * Period requested
2923
+ */
2924
+ period: string;
2925
+ /**
2926
+ * Data granularity
2927
+ */
2928
+ granularity: string;
2929
+ /**
2930
+ * Base currency for converted values
2931
+ */
2932
+ currency: string;
2933
+ /**
2934
+ * Multi-currency time series (each point has currency breakdown)
2935
+ */
2936
+ byCurrency?: Array<MultiCurrencyPointDto>;
2937
+ /**
2938
+ * Exchange rate warnings
2939
+ */
2940
+ warnings?: Array<ExchangeRateWarningDto>;
2941
+ };
2942
+ type CashFlowPointDto = {
2943
+ /**
2944
+ * Month key (YYYY-MM)
2945
+ */
2946
+ month: string;
2947
+ /**
2948
+ * Income in base currency (absolute, converted)
2949
+ */
2950
+ income: string;
2951
+ /**
2952
+ * Expense in base currency (absolute, converted)
2953
+ */
2954
+ expense: string;
2955
+ /**
2956
+ * netSavings = income − expense (savings positive)
2957
+ */
2958
+ netSavings: string;
2959
+ };
2960
+ type CashFlowTrendSummaryDto = {
2961
+ /**
2962
+ * Total income across the period
2963
+ */
2964
+ totalIncome: string;
2965
+ /**
2966
+ * Total expense across the period
2967
+ */
2968
+ totalExpense: string;
2969
+ /**
2970
+ * income − expense across the period
2971
+ */
2972
+ totalNetSavings: string;
2973
+ /**
2974
+ * totalNetSavings divided by the window length (N months, incl. zero-filled)
2975
+ */
2976
+ averageMonthlyNetSavings: string;
2977
+ };
2978
+ type CashFlowTrendsResponseDto = {
2979
+ /**
2980
+ * Monthly cash-flow series (fixed N-month window, zero-filled)
2981
+ */
2982
+ series: Array<CashFlowPointDto>;
2983
+ /**
2984
+ * Period totals
2985
+ */
2986
+ summary: CashFlowTrendSummaryDto;
2987
+ /**
2988
+ * Period requested
2989
+ */
2990
+ period: string;
2991
+ /**
2992
+ * Data granularity (v1 returns month buckets)
2993
+ */
2994
+ granularity: string;
2995
+ /**
2996
+ * Base currency for converted values
2997
+ */
2998
+ currency: string;
2999
+ /**
3000
+ * Exchange rate warnings (e.g. missing rate for a currency)
3001
+ */
3002
+ warnings?: Array<ExchangeRateWarningDto>;
3003
+ };
3004
+ type GenerateSnapshotBody = unknown;
3005
+ type GenerateSnapshotResponse = unknown;
3006
+ type BackfillSnapshotsBody = unknown;
3007
+ type BackfillSnapshotsResponse = unknown;
3008
+ type CreateBeanEventDto = {
3009
+ /**
3010
+ * Life event date (ISO 8601)
3011
+ */
3012
+ date: string;
3013
+ /**
3014
+ * Life event type (e.g., "employer", "location", "marital-status") — user-defined, no enum constraint at engine layer
3015
+ */
3016
+ type: string;
3017
+ /**
3018
+ * Life event description. Empty string is a VALID value (distinct from absence).
3019
+ */
3020
+ description: string;
3021
+ /**
3022
+ * Product-side metadata (lives in BeanEvent.meta JSON, never in engine Event fields)
3023
+ */
3024
+ meta?: {
3025
+ [key: string]: unknown;
3026
+ };
3027
+ };
3028
+ type EventResponseDto = {
3029
+ /**
3030
+ * Unique identifier
3031
+ */
3032
+ id: string;
3033
+ /**
3034
+ * User ID (owner of the life event)
3035
+ */
3036
+ userId: string;
3037
+ /**
3038
+ * Life event date (ISO 8601 format)
3039
+ */
3040
+ date: string;
3041
+ /**
3042
+ * Life event type (user-defined, e.g., "employer", "location")
3043
+ */
3044
+ type: string;
3045
+ /**
3046
+ * Life event description. May be an empty string (a valid value distinct from absence).
3047
+ */
3048
+ description: string;
3049
+ /**
3050
+ * Product-side metadata (free-form JSON)
3051
+ */
3052
+ meta: {
3053
+ [key: string]: unknown;
3054
+ };
3055
+ /**
3056
+ * Creation timestamp
3057
+ */
3058
+ createdAt: string;
3059
+ /**
3060
+ * Last update timestamp. Also emitted as the ETag response header for If-Match optimistic concurrency.
3061
+ */
3062
+ updatedAt: string;
3063
+ };
3064
+ type EventListResponseDto = {
3065
+ /**
3066
+ * List of life events
3067
+ */
3068
+ items: Array<EventResponseDto>;
3069
+ /**
3070
+ * Total number of life events matching the query
3071
+ */
3072
+ total: number;
3073
+ };
3074
+ type UpdateBeanEventDto = {
3075
+ /**
3076
+ * Life event date (ISO 8601)
3077
+ */
3078
+ date?: string;
3079
+ /**
3080
+ * Life event type (user-defined)
3081
+ */
3082
+ type?: string;
3083
+ /**
3084
+ * Life event description. Empty string is a VALID value (distinct from absence).
3085
+ */
3086
+ description?: string;
3087
+ /**
3088
+ * Product-side metadata (free-form JSON)
3089
+ */
3090
+ meta?: {
3091
+ [key: string]: unknown;
3092
+ };
3093
+ };
3094
+ type OnboardingAccountDto = {
3095
+ /**
3096
+ * Account path (Assets/Liabilities only; format validated by the account service)
3097
+ */
3098
+ path: string;
3099
+ /**
3100
+ * ISO 4217 currency code (3 letters)
3101
+ */
3102
+ currency: string;
3103
+ /**
3104
+ * Opening balance as a non-negative Decimal string (e.g. "1000.00")
3105
+ */
3106
+ openingBalance?: string;
3107
+ /**
3108
+ * Platform ID to bind the account to (references Platform.id); omit for unbound
3109
+ */
3110
+ platformId?: string;
3111
+ };
3112
+ type OnboardingDto = {
3113
+ /**
3114
+ * Asset/Liability accounts to register with opening balances
3115
+ */
3116
+ accounts?: Array<OnboardingAccountDto>;
3117
+ /**
3118
+ * Skip asset registration; only bootstrap the core account set
3119
+ */
3120
+ skipAssetRegistration?: boolean;
3121
+ };
3122
+ type ActualBalanceDto = {
3123
+ /**
3124
+ * Actual balance amount as a decimal string (preserves precision for tolerance inference).
3125
+ */
3126
+ amount: string;
3127
+ /**
3128
+ * Currency code (ISO 4217 or commodity ticker).
3129
+ */
3130
+ ccy: string;
3131
+ };
3132
+ type ComputeReconciliationDto = {
3133
+ /**
3134
+ * BeanAccount id to reconcile.
3135
+ */
3136
+ accountId: string;
3137
+ /**
3138
+ * Assertion date (ISO 8601, e.g. "2026-07-24").
3139
+ */
3140
+ asOfDate: string;
3141
+ /**
3142
+ * Actual balance from the external statement.
3143
+ */
3144
+ actualBalance: ActualBalanceDto;
3145
+ };
3146
+ type ReconciliationComputeResultDto = {
3147
+ accountId: string;
3148
+ asOfDate: string;
3149
+ /**
3150
+ * System-computed book balance (decimal string).
3151
+ */
3152
+ bookBalance: string;
3153
+ /**
3154
+ * User-entered actual balance (decimal string).
3155
+ */
3156
+ actualBalance: string;
3157
+ currency: string;
3158
+ /**
3159
+ * Diff = book − actual (decimal string).
3160
+ */
3161
+ diff: string;
3162
+ /**
3163
+ * Applied tolerance (decimal string).
3164
+ */
3165
+ tolerance: string;
3166
+ /**
3167
+ * true when |diff| ≤ tolerance.
3168
+ */
3169
+ withinTolerance: boolean;
3170
+ /**
3171
+ * Suggested next action: assert when within tolerance, pad otherwise.
3172
+ */
3173
+ suggestedAction: 'assert' | 'pad';
3174
+ };
3175
+ /**
3176
+ * Suggested next action: assert when within tolerance, pad otherwise.
3177
+ */
3178
+ type suggestedAction = 'assert' | 'pad';
3179
+ type AssertReconciliationDto = {
3180
+ /**
3181
+ * BeanAccount id to reconcile.
3182
+ */
3183
+ accountId: string;
3184
+ /**
3185
+ * Assertion date (ISO 8601, e.g. "2026-07-24").
3186
+ */
3187
+ asOfDate: string;
3188
+ /**
3189
+ * Actual balance from the external statement.
3190
+ */
3191
+ actualBalance: ActualBalanceDto;
3192
+ /**
3193
+ * Optional explicit tolerance override. Omit to infer from amount precision (Beancount default).
3194
+ */
3195
+ tolerance?: string;
3196
+ };
3197
+ type ReconciliationRecordDto = {
3198
+ id: string;
3199
+ accountId: string;
3200
+ date: string;
3201
+ /**
3202
+ * Asserted (actual) amount.
2521
3203
  */
2522
- language?: string;
3204
+ amount: string;
3205
+ currency: string;
3206
+ tolerance?: string;
2523
3207
  /**
2524
- * Locale code
3208
+ * book − actual.
2525
3209
  */
2526
- locale?: string;
3210
+ diffAmount?: string;
3211
+ diffCurrency?: string;
3212
+ createdAt: string;
3213
+ };
3214
+ type PadReconciliationDto = {
2527
3215
  /**
2528
- * Projected total amount
3216
+ * BeanAccount id to reconcile.
2529
3217
  */
2530
- projectedTotalAmount?: number;
3218
+ accountId: string;
2531
3219
  /**
2532
- * Retirement date in ISO 8601 format
3220
+ * Assertion date (ISO 8601, e.g. "2026-07-24").
2533
3221
  */
2534
- retirementDate?: string;
3222
+ asOfDate: string;
2535
3223
  /**
2536
- * Savings rate percentage
3224
+ * Actual balance from the external statement.
2537
3225
  */
2538
- savingsRate?: number;
3226
+ actualBalance: ActualBalanceDto;
2539
3227
  /**
2540
- * View mode
3228
+ * Pad source account. Defaults to Equity:Opening-Balances (official Beancount convention).
2541
3229
  */
2542
- viewMode?: 'DEFAULT' | 'ZEN';
3230
+ sourceAccount?: string;
2543
3231
  };
2544
- /**
2545
- * Color scheme
2546
- */
2547
- type colorScheme = 'DARK' | 'LIGHT';
2548
- /**
2549
- * View mode
2550
- */
2551
- type viewMode = 'DEFAULT' | 'ZEN';
2552
- type UpdatePropertyDto = {
3232
+ type PadResultDto = {
2553
3233
  /**
2554
- * Property value
3234
+ * Created pad adjusting transaction id.
2555
3235
  */
2556
- value: string;
3236
+ transactionId: string;
2557
3237
  };
2558
3238
  type FileImportDto = {
2559
3239
  /**
@@ -2799,70 +3479,6 @@ type UpdateImporterConfigDto = {
2799
3479
  */
2800
3480
  data?: UpdateConfigDataDto;
2801
3481
  };
2802
- type CreatePlatformDto = {
2803
- /**
2804
- * Platform name
2805
- */
2806
- name: string;
2807
- /**
2808
- * Platform canonical identifier (lowercase, kebab-case)
2809
- */
2810
- canonical: string;
2811
- /**
2812
- * Platform aliases (multi-language names for lookup)
2813
- */
2814
- aliases: Array<string>;
2815
- /**
2816
- * Platform URL
2817
- */
2818
- url: string;
2819
- /**
2820
- * Platform type
2821
- */
2822
- type: 'BANK' | 'BROKERAGE' | 'CRYPTO_EXCHANGE' | 'PAYMENT' | 'INVESTMENT' | 'INSURANCE' | 'OTHER';
2823
- /**
2824
- * Platform logo URL
2825
- */
2826
- logoUrl?: string;
2827
- /**
2828
- * Whether the platform is active
2829
- */
2830
- isActive?: boolean;
2831
- };
2832
- /**
2833
- * Platform type
2834
- */
2835
- type type3 = 'BANK' | 'BROKERAGE' | 'CRYPTO_EXCHANGE' | 'PAYMENT' | 'INVESTMENT' | 'INSURANCE' | 'OTHER';
2836
- type UpdatePlatformDto = {
2837
- /**
2838
- * Platform name
2839
- */
2840
- name?: string;
2841
- /**
2842
- * Platform canonical identifier (lowercase, kebab-case)
2843
- */
2844
- canonical?: string;
2845
- /**
2846
- * Platform aliases (multi-language names for lookup)
2847
- */
2848
- aliases?: Array<string>;
2849
- /**
2850
- * Platform URL
2851
- */
2852
- url?: string;
2853
- /**
2854
- * Platform type
2855
- */
2856
- type?: 'BANK' | 'BROKERAGE' | 'CRYPTO_EXCHANGE' | 'PAYMENT' | 'INVESTMENT' | 'INSURANCE' | 'OTHER';
2857
- /**
2858
- * Platform logo URL
2859
- */
2860
- logoUrl?: string;
2861
- /**
2862
- * Whether the platform is active
2863
- */
2864
- isActive?: boolean;
2865
- };
2866
3482
  type ProviderSyncConfigDto = {
2867
3483
  /**
2868
3484
  * Source account for the first posting
@@ -2884,6 +3500,10 @@ type ProviderSyncConfigDto = {
2884
3500
  * Filter pending transactions
2885
3501
  */
2886
3502
  filterPending?: boolean;
3503
+ /**
3504
+ * External account ID for per-batch providers (e.g. GoCardless). Overrides sourceAccount when an ExternalAccountLink mapping exists.
3505
+ */
3506
+ externalAccountId?: string;
2887
3507
  };
2888
3508
  type ProviderSyncDto = {
2889
3509
  /**
@@ -2935,7 +3555,43 @@ type SupportedProvidersResponseDto = {
2935
3555
  */
2936
3556
  providers: Array<string>;
2937
3557
  };
3558
+ type CreateExternalAccountLinkDto = {
3559
+ /**
3560
+ * Open Banking provider (whitelist)
3561
+ */
3562
+ provider: 'plaid' | 'teller' | 'truelayer' | 'gocardless' | 'simplefin' | 'yodlee' | 'beancount-direct' | 'parsed-bill';
3563
+ /**
3564
+ * External account ID from the provider
3565
+ */
3566
+ externalAccountId: string;
3567
+ /**
3568
+ * Target BeanAccount ID (must belong to the JWT user)
3569
+ */
3570
+ beanAccountId: string;
3571
+ };
3572
+ /**
3573
+ * Open Banking provider (whitelist)
3574
+ */
3575
+ type provider = 'plaid' | 'teller' | 'truelayer' | 'gocardless' | 'simplefin' | 'yodlee' | 'beancount-direct' | 'parsed-bill';
3576
+ type ExternalAccountLinkResponseDto = {
3577
+ id: string;
3578
+ provider: string;
3579
+ externalAccountId: string;
3580
+ beanAccountId: string;
3581
+ isActive: boolean;
3582
+ createdAt: string;
3583
+ updatedAt: string;
3584
+ };
3585
+ type ExternalAccountLinkListResponseDto = {
3586
+ items: Array<ExternalAccountLinkResponseDto>;
3587
+ total: number;
3588
+ /**
3589
+ * Filter by provider (query param)
3590
+ */
3591
+ provider?: string;
3592
+ };
2938
3593
  type ParserTelemetryReportDto = unknown;
3594
+ type UncoveredFormatMissDto = unknown;
2939
3595
  type ProcessNlpDto = {
2940
3596
  /**
2941
3597
  * Natural language text describing a transaction (Chinese)
@@ -3421,63 +4077,207 @@ type NlpResponseDto = {
3421
4077
  */
3422
4078
  payeeData?: NlpPayeeConfirmationDataDto;
3423
4079
  /**
3424
- * Overall confidence score (0-1)
4080
+ * Overall confidence score (0-1)
4081
+ */
4082
+ confidence?: number;
4083
+ /**
4084
+ * Confidence threshold for automatic creation (default: 0.75). When confidence < threshold, action will be "confirm" requiring user verification.
4085
+ */
4086
+ confidenceThreshold?: number;
4087
+ /**
4088
+ * Recurring transaction match info (when action is "created"). Contains match details when transaction matches a pending expected transaction.
4089
+ */
4090
+ recurringMatch?: RecurringMatchInfoDto;
4091
+ /**
4092
+ * Recurring rule creation suggestion (when action is "created"). Contains suggestion to create a recurring rule based on detected patterns. Only present when no existing rule matched and similar historical transactions were found.
4093
+ */
4094
+ recurringSuggestion?: RecurringSuggestionDto;
4095
+ /**
4096
+ * Suggested accounts for this transaction. Contains recommended source and destination accounts based on the detected intent and rules.
4097
+ */
4098
+ suggestedAccounts?: NlpSuggestedAccountsDto;
4099
+ /**
4100
+ * Default accounts for the user/region. These are fallback accounts used when no specific suggestion is available.
4101
+ */
4102
+ defaultAccounts?: NlpDefaultAccountsDto;
4103
+ };
4104
+ /**
4105
+ * Response status
4106
+ */
4107
+ type status4 = 'success' | 'pending' | 'error';
4108
+ /**
4109
+ * Action taken or requested
4110
+ */
4111
+ type action2 = 'created' | 'ask' | 'confirm' | 'confirm_duplicate' | 'confirm_rule' | 'confirm_account' | 'confirm_payee' | 'cancel';
4112
+ /**
4113
+ * Transaction intent detected by EntityRouter (v6.0: 5 core intents). Frontend uses this to render scenario-specific form fields.
4114
+ */
4115
+ type intent = 'expense' | 'asset' | 'income' | 'liability' | 'equity';
4116
+ /**
4117
+ * Asset sub-type (only present when intent is "asset"). Determines which asset-related form to render.
4118
+ */
4119
+ type assetSubType = 'transfer' | 'banking' | 'investment';
4120
+ /**
4121
+ * Liability sub-type (only present when intent is "liability"). borrow: borrowing money (Liabilities → Assets), repay: repaying debt (Assets → Liabilities).
4122
+ */
4123
+ type liabilitySubType = 'borrow' | 'repay';
4124
+ /**
4125
+ * Equity sub-type (only present when intent is "equity"). opening: account opening balance (Equity → Assets), adjustment: balance correction.
4126
+ */
4127
+ type equitySubType = 'opening' | 'adjustment';
4128
+ type PlatformListItemDto = {
4129
+ /**
4130
+ * Global platform ID
4131
+ */
4132
+ id: string;
4133
+ /**
4134
+ * Platform name
4135
+ */
4136
+ name: string;
4137
+ /**
4138
+ * Platform URL
4139
+ */
4140
+ url: string;
4141
+ /**
4142
+ * Platform type
4143
+ */
4144
+ type: 'BANK' | 'BROKERAGE' | 'CRYPTO_EXCHANGE' | 'PAYMENT' | 'INVESTMENT' | 'INSURANCE' | 'OTHER';
4145
+ /**
4146
+ * Canonical identifier in ACCOUNT_RE format (e.g., "icbc")
4147
+ */
4148
+ canonical: string;
4149
+ /**
4150
+ * Suggested path segment — canonical with first char uppercased (ACC_COMP_NAME_RE)
4151
+ */
4152
+ suggestedSegment: string;
4153
+ /**
4154
+ * Logo URL
4155
+ */
4156
+ logoUrl: string | null;
4157
+ /**
4158
+ * Whether user has accounts using this platform
4159
+ */
4160
+ isBound: boolean;
4161
+ };
4162
+ /**
4163
+ * Platform type
4164
+ */
4165
+ type type3 = 'BANK' | 'BROKERAGE' | 'CRYPTO_EXCHANGE' | 'PAYMENT' | 'INVESTMENT' | 'INSURANCE' | 'OTHER';
4166
+ type PlatformMatchResultDto = {
4167
+ /**
4168
+ * Global platform ID
4169
+ */
4170
+ id: string;
4171
+ /**
4172
+ * Platform name (e.g., "ICBC")
4173
+ */
4174
+ name: string;
4175
+ /**
4176
+ * Canonical identifier in ACCOUNT_RE format (e.g., "icbc")
4177
+ */
4178
+ canonical: string;
4179
+ /**
4180
+ * Platform type
4181
+ */
4182
+ type: 'BANK' | 'BROKERAGE' | 'CRYPTO_EXCHANGE' | 'PAYMENT' | 'INVESTMENT' | 'INSURANCE' | 'OTHER';
4183
+ /**
4184
+ * Suggested path segment — canonical, already in ACCOUNT_RE format
4185
+ */
4186
+ suggestedSegment: string;
4187
+ /**
4188
+ * Logo URL
4189
+ */
4190
+ logoUrl: string | null;
4191
+ /**
4192
+ * How this row matched: 'exact' > 'prefix' > 'substring'
4193
+ */
4194
+ matchType: 'exact' | 'prefix' | 'substring';
4195
+ };
4196
+ /**
4197
+ * How this row matched: 'exact' > 'prefix' > 'substring'
4198
+ */
4199
+ type matchType = 'exact' | 'prefix' | 'substring';
4200
+ type PlatformMatchResponseDto = {
4201
+ /**
4202
+ * Ranked matches, best tier first (at most 10 rows)
4203
+ */
4204
+ platforms: Array<PlatformMatchResultDto>;
4205
+ /**
4206
+ * Overall match quality — top row's tier, or 'none' when no hits
4207
+ */
4208
+ matchType: 'none' | 'exact' | 'prefix' | 'substring';
4209
+ /**
4210
+ * Total matches before LIMIT (truncation transparency)
4211
+ */
4212
+ total: number;
4213
+ /**
4214
+ * true when total > platforms.length (more matches exist)
4215
+ */
4216
+ hasMore: boolean;
4217
+ };
4218
+ /**
4219
+ * Overall match quality — top row's tier, or 'none' when no hits
4220
+ */
4221
+ type matchType2 = 'none' | 'exact' | 'prefix' | 'substring';
4222
+ type CreatePlatformDto = {
4223
+ /**
4224
+ * Platform name
4225
+ */
4226
+ name: string;
4227
+ /**
4228
+ * Platform canonical identifier (lowercase, kebab-case)
4229
+ */
4230
+ canonical: string;
4231
+ /**
4232
+ * Platform aliases (multi-language names for lookup)
4233
+ */
4234
+ aliases: Array<string>;
4235
+ /**
4236
+ * Platform URL
4237
+ */
4238
+ url: string;
4239
+ /**
4240
+ * Platform type
4241
+ */
4242
+ type: 'BANK' | 'BROKERAGE' | 'CRYPTO_EXCHANGE' | 'PAYMENT' | 'INVESTMENT' | 'INSURANCE' | 'OTHER';
4243
+ /**
4244
+ * Platform logo URL
4245
+ */
4246
+ logoUrl?: string;
4247
+ /**
4248
+ * Whether the platform is active
3425
4249
  */
3426
- confidence?: number;
4250
+ isActive?: boolean;
4251
+ };
4252
+ type UpdatePlatformDto = {
3427
4253
  /**
3428
- * Confidence threshold for automatic creation (default: 0.75). When confidence < threshold, action will be "confirm" requiring user verification.
4254
+ * Platform name
3429
4255
  */
3430
- confidenceThreshold?: number;
4256
+ name?: string;
3431
4257
  /**
3432
- * Recurring transaction match info (when action is "created"). Contains match details when transaction matches a pending expected transaction.
4258
+ * Platform canonical identifier (lowercase, kebab-case)
3433
4259
  */
3434
- recurringMatch?: RecurringMatchInfoDto;
4260
+ canonical?: string;
3435
4261
  /**
3436
- * Recurring rule creation suggestion (when action is "created"). Contains suggestion to create a recurring rule based on detected patterns. Only present when no existing rule matched and similar historical transactions were found.
4262
+ * Platform aliases (multi-language names for lookup)
3437
4263
  */
3438
- recurringSuggestion?: RecurringSuggestionDto;
4264
+ aliases?: Array<string>;
3439
4265
  /**
3440
- * Suggested accounts for this transaction. Contains recommended source and destination accounts based on the detected intent and rules.
4266
+ * Platform URL
3441
4267
  */
3442
- suggestedAccounts?: NlpSuggestedAccountsDto;
4268
+ url?: string;
3443
4269
  /**
3444
- * Default accounts for the user/region. These are fallback accounts used when no specific suggestion is available.
4270
+ * Platform type
3445
4271
  */
3446
- defaultAccounts?: NlpDefaultAccountsDto;
3447
- };
3448
- /**
3449
- * Response status
3450
- */
3451
- type status4 = 'success' | 'pending' | 'error';
3452
- /**
3453
- * Action taken or requested
3454
- */
3455
- type action2 = 'created' | 'ask' | 'confirm' | 'confirm_duplicate' | 'confirm_rule' | 'confirm_account' | 'confirm_payee' | 'cancel';
3456
- /**
3457
- * Transaction intent detected by EntityRouter (v6.0: 5 core intents). Frontend uses this to render scenario-specific form fields.
3458
- */
3459
- type intent = 'expense' | 'asset' | 'income' | 'liability' | 'equity';
3460
- /**
3461
- * Asset sub-type (only present when intent is "asset"). Determines which asset-related form to render.
3462
- */
3463
- type assetSubType = 'transfer' | 'banking' | 'investment';
3464
- /**
3465
- * Liability sub-type (only present when intent is "liability"). borrow: borrowing money (Liabilities → Assets), repay: repaying debt (Assets → Liabilities).
3466
- */
3467
- type liabilitySubType = 'borrow' | 'repay';
3468
- /**
3469
- * Equity sub-type (only present when intent is "equity"). opening: account opening balance (Equity → Assets), adjustment: balance correction.
3470
- */
3471
- type equitySubType = 'opening' | 'adjustment';
3472
- type BalanceByCurrencyDto = {
4272
+ type?: 'BANK' | 'BROKERAGE' | 'CRYPTO_EXCHANGE' | 'PAYMENT' | 'INVESTMENT' | 'INSURANCE' | 'OTHER';
3473
4273
  /**
3474
- * ISO 4217 currency code
4274
+ * Platform logo URL
3475
4275
  */
3476
- currency: string;
4276
+ logoUrl?: string;
3477
4277
  /**
3478
- * Balance amount
4278
+ * Whether the platform is active
3479
4279
  */
3480
- balance: string;
4280
+ isActive?: boolean;
3481
4281
  };
3482
4282
  type NetWorthByCurrencyDto = {
3483
4283
  /**
@@ -3517,20 +4317,6 @@ type ConvertedNetWorthDto = {
3517
4317
  [key: string]: unknown;
3518
4318
  };
3519
4319
  };
3520
- type ExchangeRateWarningDto = {
3521
- /**
3522
- * Warning type
3523
- */
3524
- type: string;
3525
- /**
3526
- * Currency without exchange rate
3527
- */
3528
- currency: string;
3529
- /**
3530
- * Total amount affected
3531
- */
3532
- totalAmount: string;
3533
- };
3534
4320
  type NetWorthResponseDto = {
3535
4321
  /**
3536
4322
  * Total net worth (assets - liabilities, converted to base currency)
@@ -3594,6 +4380,10 @@ type AccountItemDto = {
3594
4380
  * Currency code
3595
4381
  */
3596
4382
  currency: string;
4383
+ /**
4384
+ * FX-converted balance in base currency; omitted when not convertible
4385
+ */
4386
+ convertedBalance?: string;
3597
4387
  };
3598
4388
  type PlatformGroupDto = {
3599
4389
  /**
@@ -3609,9 +4399,39 @@ type PlatformGroupDto = {
3609
4399
  */
3610
4400
  accounts: Array<AccountItemDto>;
3611
4401
  /**
3612
- * Total balance across all accounts in platform
4402
+ * FX-converted total balance in base currency
3613
4403
  */
3614
4404
  totalBalance: string;
4405
+ /**
4406
+ * Raw (unconverted) balances grouped by currency
4407
+ */
4408
+ balanceByCurrency: Array<BalanceByCurrencyDto>;
4409
+ /**
4410
+ * Converted balance in base currency (omitted when no currency is convertible)
4411
+ */
4412
+ convertedBalance?: string;
4413
+ /**
4414
+ * Share of the grand converted total (0-100); 0 when grand total is 0
4415
+ */
4416
+ sharePct: number;
4417
+ };
4418
+ type AccountExchangeRateWarningDto = {
4419
+ /**
4420
+ * Warning type
4421
+ */
4422
+ type: string;
4423
+ /**
4424
+ * Currency without exchange rate
4425
+ */
4426
+ currency: string;
4427
+ /**
4428
+ * Affected account paths
4429
+ */
4430
+ accounts: Array<string>;
4431
+ /**
4432
+ * Total amount in this currency
4433
+ */
4434
+ totalAmount: string;
3615
4435
  };
3616
4436
  type AccountsSummaryDto = {
3617
4437
  /**
@@ -3622,6 +4442,14 @@ type AccountsSummaryDto = {
3622
4442
  * Total number of platforms
3623
4443
  */
3624
4444
  totalPlatforms: number;
4445
+ /**
4446
+ * Base currency for conversion
4447
+ */
4448
+ baseCurrency: string;
4449
+ /**
4450
+ * Per-account exchange rate warnings
4451
+ */
4452
+ warnings?: Array<AccountExchangeRateWarningDto>;
3625
4453
  };
3626
4454
  type AccountsResponseDto = {
3627
4455
  /**
@@ -3654,6 +4482,10 @@ type AccountItemWithAssetClassDto = {
3654
4482
  * Currency code
3655
4483
  */
3656
4484
  currency: string;
4485
+ /**
4486
+ * FX-converted balance in base currency; omitted when not convertible
4487
+ */
4488
+ convertedBalance?: string;
3657
4489
  /**
3658
4490
  * Asset class
3659
4491
  */
@@ -3670,7 +4502,15 @@ type AccountItemWithAssetClassDto = {
3670
4502
  * Risk level
3671
4503
  */
3672
4504
  riskLevel?: string;
4505
+ /**
4506
+ * ADR-0105 classification provenance (holding level always; account level only on FALLBACK)
4507
+ */
4508
+ source?: 'USER_META' | 'FIAT_CURRENCY' | 'OPENBB_MAPPING' | 'FALLBACK';
3673
4509
  };
4510
+ /**
4511
+ * ADR-0105 classification provenance (holding level always; account level only on FALLBACK)
4512
+ */
4513
+ type source2 = 'USER_META' | 'FIAT_CURRENCY' | 'OPENBB_MAPPING' | 'FALLBACK';
3674
4514
  type AssetClassGroupDto = {
3675
4515
  /**
3676
4516
  * Asset class name
@@ -3697,24 +4537,6 @@ type AssetClassGroupDto = {
3697
4537
  * Asset class name
3698
4538
  */
3699
4539
  type assetClass = 'LIQUIDITY' | 'EQUITY' | 'FIXED_INCOME' | 'PRECIOUS_METALS' | 'COMMODITY' | 'INSURANCE' | 'ALTERNATIVE_INVESTMENT' | 'PERSONAL_ASSETS' | 'LIABILITY' | 'REAL_ESTATE' | 'INDEX';
3700
- type AccountExchangeRateWarningDto = {
3701
- /**
3702
- * Warning type
3703
- */
3704
- type: string;
3705
- /**
3706
- * Currency without exchange rate
3707
- */
3708
- currency: string;
3709
- /**
3710
- * Affected account paths
3711
- */
3712
- accounts: Array<string>;
3713
- /**
3714
- * Total amount in this currency
3715
- */
3716
- totalAmount: string;
3717
- };
3718
4540
  type AssetClassSummaryDto = {
3719
4541
  /**
3720
4542
  * Total number of accounts
@@ -3732,6 +4554,12 @@ type AssetClassSummaryDto = {
3732
4554
  * Exchange rate warnings
3733
4555
  */
3734
4556
  warnings?: Array<AccountExchangeRateWarningDto>;
4557
+ /**
4558
+ * ADR-0105 §4 fallback provenance stats (holding level only). valueRatio is the grey-area share of total converted value; count is the number of source=FALLBACK holdings.
4559
+ */
4560
+ fallback?: {
4561
+ [key: string]: unknown;
4562
+ };
3735
4563
  };
3736
4564
  type AssetClassAccountsResponseDto = {
3737
4565
  /**
@@ -3742,6 +4570,54 @@ type AssetClassAccountsResponseDto = {
3742
4570
  * Summary statistics
3743
4571
  */
3744
4572
  summary: AssetClassSummaryDto;
4573
+ /**
4574
+ * ADR-0105 §6 holding-level grey-area bucket (source=FALLBACK holdings peeled out of groups). Present only for groupBy=holdingAssetClass when FALLBACK holdings exist.
4575
+ */
4576
+ uncategorized?: AssetClassGroupDto;
4577
+ };
4578
+ type HoldingAssetClassAccountSliceDto = {
4579
+ /**
4580
+ * Account ID
4581
+ */
4582
+ accountId: string;
4583
+ /**
4584
+ * Full account path
4585
+ */
4586
+ accountPath: string;
4587
+ /**
4588
+ * Currency of the holding with the largest converted base value; undefined when no holding is convertible
4589
+ */
4590
+ accountCurrency?: string;
4591
+ /**
4592
+ * Account's market value in base currency (Σ converted holdings; grey bucket included)
4593
+ */
4594
+ marketValueBase: string;
4595
+ /**
4596
+ * Share of the global total (0-100). 0 when globalTotal is zero (no NaN/Infinity).
4597
+ */
4598
+ shareOfTotalPct: number;
4599
+ /**
4600
+ * Per-account asset-class breakdown
4601
+ */
4602
+ groups: Array<AssetClassGroupDto>;
4603
+ /**
4604
+ * Per-account grey bucket (source=FALLBACK holdings, incl. broker cash)
4605
+ */
4606
+ uncategorized?: AssetClassGroupDto;
4607
+ /**
4608
+ * Every holding row for this account (account ID in each row’s `id` field)
4609
+ */
4610
+ holdings: Array<AccountItemWithAssetClassDto>;
4611
+ };
4612
+ type HoldingAssetClassCrossAccountResponseDto = {
4613
+ /**
4614
+ * Merged cross-account holding aggregation
4615
+ */
4616
+ global: AssetClassAccountsResponseDto;
4617
+ /**
4618
+ * Per-account slices
4619
+ */
4620
+ byAccount: Array<HoldingAssetClassAccountSliceDto>;
3745
4621
  };
3746
4622
  type CashFlowByCurrencyDto = {
3747
4623
  /**
@@ -3819,104 +4695,243 @@ type CashFlowResponseDto = {
3819
4695
  */
3820
4696
  warnings?: Array<ExchangeRateWarningDto>;
3821
4697
  };
3822
- type CurrencyBalanceDto = {
4698
+ type CategoryGroupDto = {
3823
4699
  /**
3824
- * ISO 4217 currency code
4700
+ * Functional category (account-path Group segment); regional and universal account paths merge under it
4701
+ */
4702
+ category: string;
4703
+ /**
4704
+ * Converted total for this category in base currency (expense amount when flow=expense, income amount when flow=income)
4705
+ */
4706
+ totalExpense: string;
4707
+ /**
4708
+ * Share of grand total (0-100); 0 when grand total is 0
4709
+ */
4710
+ sharePct: number;
4711
+ /**
4712
+ * Raw (unconverted) expense per currency
4713
+ */
4714
+ balanceByCurrency: Array<BalanceByCurrencyDto>;
4715
+ /**
4716
+ * Converted total in base currency (omitted when FX missing for all currencies in this category)
4717
+ */
4718
+ convertedBalance?: string;
4719
+ };
4720
+ type ExpensesByCategorySummaryDto = {
4721
+ /**
4722
+ * Total across all categories, converted (convertible categories only); expense totals when flow=expense, income totals when flow=income
4723
+ */
4724
+ totalExpense: string;
4725
+ /**
4726
+ * Number of categories
4727
+ */
4728
+ categoryCount: number;
4729
+ };
4730
+ type ExpensesByCategoryResponseDto = {
4731
+ /**
4732
+ * Period requested
4733
+ */
4734
+ period: string;
4735
+ /**
4736
+ * Base currency for converted values
4737
+ */
4738
+ baseCurrency: string;
4739
+ /**
4740
+ * Expense groups by functional category, sorted by converted total desc
4741
+ */
4742
+ groups: Array<CategoryGroupDto>;
4743
+ /**
4744
+ * Summary statistics
4745
+ */
4746
+ summary: ExpensesByCategorySummaryDto;
4747
+ /**
4748
+ * Exchange rate warnings (e.g. missing rate for a currency)
4749
+ */
4750
+ warnings?: Array<ExchangeRateWarningDto>;
4751
+ };
4752
+ type MonetaryDto = {
4753
+ /**
4754
+ * Amount (Decimal string)
4755
+ */
4756
+ amount: string;
4757
+ /**
4758
+ * ISO 4217 currency
3825
4759
  */
3826
4760
  currency: string;
3827
4761
  /**
3828
- * Balance amount
4762
+ * Converted to user base currency (Decimal string)
3829
4763
  */
3830
- balance: string;
4764
+ baseCcyEquivalent?: {
4765
+ [key: string]: unknown;
4766
+ } | null;
3831
4767
  };
3832
- type TimeSeriesPointDto = {
4768
+ type CurrentPriceDto = {
3833
4769
  /**
3834
- * Date in YYYY-MM-DD format
4770
+ * Price amount (Decimal string)
4771
+ */
4772
+ amount: string;
4773
+ /**
4774
+ * Price currency (ISO 4217)
4775
+ */
4776
+ currency: string;
4777
+ /**
4778
+ * Price date (ISO 8601)
3835
4779
  */
3836
4780
  date: string;
3837
4781
  /**
3838
- * Value at this date (in base currency)
4782
+ * Price source
3839
4783
  */
3840
- value: string;
4784
+ source: 'USER_OVERRIDE' | 'OPENBB_EQUITY' | 'OPENBB_CURRENCY';
4785
+ };
4786
+ /**
4787
+ * Price source
4788
+ */
4789
+ type source3 = 'USER_OVERRIDE' | 'OPENBB_EQUITY' | 'OPENBB_CURRENCY';
4790
+ type FxRateDto = {
4791
+ from: string;
4792
+ to: string;
3841
4793
  /**
3842
- * Change from previous point
4794
+ * FX rate (Decimal string)
3843
4795
  */
3844
- change?: {
3845
- [key: string]: unknown;
3846
- };
4796
+ rate: string;
3847
4797
  /**
3848
- * Multi-currency breakdown for this point
4798
+ * Rate date (ISO 8601)
3849
4799
  */
3850
- byCurrency?: Array<CurrencyBalanceDto>;
4800
+ date: string;
3851
4801
  };
3852
- type TrendSummaryDto = {
4802
+ type HoldingPnlRowDto = {
3853
4803
  /**
3854
- * Value at start of period
4804
+ * Account UUID
3855
4805
  */
3856
- startValue: string;
4806
+ accountId: string;
3857
4807
  /**
3858
- * Value at end of period
4808
+ * Full account path
3859
4809
  */
3860
- endValue: string;
4810
+ accountPath: string;
3861
4811
  /**
3862
- * Total change over period
4812
+ * Account settlement currency (ISO 4217), from cost currency
4813
+ */
4814
+ accountCcy?: {
4815
+ [key: string]: unknown;
4816
+ } | null;
4817
+ /**
4818
+ * Broker type derived from Platform.type
4819
+ */
4820
+ brokerType?: {
4821
+ [key: string]: unknown;
4822
+ } | null;
4823
+ /**
4824
+ * Commodity symbol
4825
+ */
4826
+ symbol: string;
4827
+ /**
4828
+ * Chart segment token (libs/common resolver)
4829
+ */
4830
+ chartToken: 'equity' | 'fund' | 'bond' | 'cash' | 'other';
4831
+ assetClass: string;
4832
+ assetSubClass?: {
4833
+ [key: string]: unknown;
4834
+ } | null;
4835
+ /**
4836
+ * Net held units (Decimal string)
4837
+ */
4838
+ units: string;
4839
+ /**
4840
+ * Average cost per unit; null when cost currency conflicts or no cost
4841
+ */
4842
+ averageCostPerUnit?: MonetaryDto | null;
4843
+ /**
4844
+ * Cost basis of held units
3863
4845
  */
3864
- totalChange: string;
4846
+ costBasis?: MonetaryDto | null;
3865
4847
  /**
3866
- * Total change percentage
4848
+ * Market value at asOf price
3867
4849
  */
3868
- totalChangePercentage: string;
3869
- };
3870
- type MultiCurrencyPointDto = {
4850
+ marketValue?: MonetaryDto | null;
3871
4851
  /**
3872
- * Date in YYYY-MM-DD format
4852
+ * Price used for market value
3873
4853
  */
3874
- date: string;
4854
+ currentPrice?: CurrentPriceDto | null;
3875
4855
  /**
3876
- * Balances by currency
4856
+ * Unrealized P&L in base currency (Decimal string); null when any FX/price missing
3877
4857
  */
3878
- byCurrency: Array<CurrencyBalanceDto>;
3879
- };
3880
- type PortfolioTrendsResponseDto = {
4858
+ unrealizedPnlBase?: {
4859
+ [key: string]: unknown;
4860
+ } | null;
3881
4861
  /**
3882
- * Time series data points
4862
+ * Unrealized P&L % (Decimal string)
3883
4863
  */
3884
- series: Array<TimeSeriesPointDto>;
4864
+ unrealizedPnlPct?: {
4865
+ [key: string]: unknown;
4866
+ } | null;
3885
4867
  /**
3886
- * Period summary
4868
+ * Historical FX rate applied to cost basis
3887
4869
  */
3888
- summary: TrendSummaryDto;
4870
+ costFxRate?: FxRateDto | null;
3889
4871
  /**
3890
- * Period requested
4872
+ * FX rate applied to market value
3891
4873
  */
3892
- period: string;
4874
+ marketFxRate?: FxRateDto | null;
3893
4875
  /**
3894
- * Data granularity
4876
+ * Share of invested assets % (Decimal string); only for invested chartTokens
3895
4877
  */
3896
- granularity: string;
4878
+ pctOfInvestedAssets?: {
4879
+ [key: string]: unknown;
4880
+ } | null;
3897
4881
  /**
3898
- * Base currency for converted values
4882
+ * 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
3899
4883
  */
3900
- currency: string;
4884
+ realizedPnl?: MonetaryDto | null;
4885
+ };
4886
+ /**
4887
+ * Chart segment token (libs/common resolver)
4888
+ */
4889
+ type chartToken = 'equity' | 'fund' | 'bond' | 'cash' | 'other';
4890
+ type HoldingPnlWarningDto = {
3901
4891
  /**
3902
- * Multi-currency time series (each point has currency breakdown)
4892
+ * Warning type
3903
4893
  */
3904
- byCurrency?: Array<MultiCurrencyPointDto>;
4894
+ type: 'MISSING_COST_FX_RATE' | 'MISSING_MARKET_FX_RATE' | 'MISSING_SALE_PRICE' | 'MISSING_REALIZED_FX_RATE' | 'OVERSOLD_LOTS' | 'NO_PRICE' | 'MIXED_COST_CURRENCY';
4895
+ symbol?: {
4896
+ [key: string]: unknown;
4897
+ } | null;
4898
+ accountId?: {
4899
+ [key: string]: unknown;
4900
+ } | null;
4901
+ currency?: {
4902
+ [key: string]: unknown;
4903
+ } | null;
4904
+ };
4905
+ /**
4906
+ * Warning type
4907
+ */
4908
+ type type4 = 'MISSING_COST_FX_RATE' | 'MISSING_MARKET_FX_RATE' | 'MISSING_SALE_PRICE' | 'MISSING_REALIZED_FX_RATE' | 'OVERSOLD_LOTS' | 'NO_PRICE' | 'MIXED_COST_CURRENCY';
4909
+ type HoldingPnlResponseDto = {
4910
+ asOfDate: string;
4911
+ baseCurrency: string;
3905
4912
  /**
3906
- * Exchange rate warnings
4913
+ * Realized-P&L lot-matching method (FIFO or average). Unrealized cost basis remains average regardless of this value (#473).
3907
4914
  */
3908
- warnings?: Array<ExchangeRateWarningDto>;
4915
+ method: 'average' | 'FIFO';
4916
+ rows: Array<HoldingPnlRowDto>;
4917
+ warnings: Array<HoldingPnlWarningDto>;
3909
4918
  };
3910
- type GenerateSnapshotBody = unknown;
3911
- type GenerateSnapshotResponse = unknown;
3912
- type BackfillSnapshotsBody = unknown;
3913
- type BackfillSnapshotsResponse = unknown;
4919
+ /**
4920
+ * Realized-P&L lot-matching method (FIFO or average). Unrealized cost basis remains average regardless of this value (#473).
4921
+ */
4922
+ type method = 'average' | 'FIFO';
3914
4923
  type AnonymousLoginDto = {
3915
4924
  /**
3916
4925
  * Access token for anonymous login
3917
4926
  */
3918
4927
  accessToken: string;
3919
4928
  };
4929
+ type AnonymousLoginResponseDto = {
4930
+ /**
4931
+ * JWT auth token
4932
+ */
4933
+ authToken: string;
4934
+ };
3920
4935
  type AccountControllerCreateData = {
3921
4936
  /**
3922
4937
  * Region code for tenant context
@@ -3943,7 +4958,7 @@ type AccountControllerFindAllData = {
3943
4958
  */
3944
4959
  region: 'cn' | 'us' | 'de' | 'gb';
3945
4960
  /**
3946
- * Search term for path or i18nKey
4961
+ * Search term for account path
3947
4962
  */
3948
4963
  search?: string;
3949
4964
  /**
@@ -4014,6 +5029,18 @@ type AccountControllerReopenData = {
4014
5029
  requestBody: ReopenAccountDto;
4015
5030
  };
4016
5031
  type AccountControllerReopenResponse = AccountResponseDto;
5032
+ type AccountControllerAddOpeningBalanceData = {
5033
+ /**
5034
+ * Account UUID
5035
+ */
5036
+ id: string;
5037
+ /**
5038
+ * Region code for tenant context
5039
+ */
5040
+ region: 'cn' | 'us' | 'de' | 'gb';
5041
+ requestBody: CreateOpeningBalanceDto;
5042
+ };
5043
+ type AccountControllerAddOpeningBalanceResponse = OpeningBalanceResultDto;
4017
5044
  type AccountStandardsControllerGetTemplatesData = {
4018
5045
  /**
4019
5046
  * Region code (cn, us, de)
@@ -4063,6 +5090,10 @@ type TransactionControllerListData = {
4063
5090
  * Filter by account ID (transactions with postings to this account)
4064
5091
  */
4065
5092
  accountId?: string;
5093
+ /**
5094
+ * Filter by ADR-0075 functional category (Group segment); matches any posting to an Expenses/Income account whose derived Group segment equals this value
5095
+ */
5096
+ category?: string;
4066
5097
  /**
4067
5098
  * Filter by start date (inclusive), format: YYYY-MM-DD
4068
5099
  */
@@ -4101,6 +5132,18 @@ type TransactionControllerCreateBatchData = {
4101
5132
  requestBody: BatchCreateTransactionDto;
4102
5133
  };
4103
5134
  type TransactionControllerCreateBatchResponse = BatchTransactionResponseDto;
5135
+ type TransactionControllerCorrectData = {
5136
+ /**
5137
+ * Original transaction ID to correct
5138
+ */
5139
+ id: string;
5140
+ /**
5141
+ * Region code for tenant context
5142
+ */
5143
+ region: 'cn' | 'us' | 'de' | 'gb';
5144
+ requestBody: CorrectTransactionDto;
5145
+ };
5146
+ type TransactionControllerCorrectResponse = TransactionDetailDto;
4104
5147
  type TransactionControllerSuggestTagsData = {
4105
5148
  /**
4106
5149
  * Max suggestions (1-100, default 10)
@@ -4159,7 +5202,7 @@ type TransactionControllerDeleteData = {
4159
5202
  type TransactionControllerDeleteResponse = void;
4160
5203
  type BalanceControllerGetBalanceData = {
4161
5204
  /**
4162
- * Account name (e.g., "Assets:Bank:Checking")
5205
+ * Account name (e.g., "Assets:Checking")
4163
5206
  */
4164
5207
  account: string;
4165
5208
  /**
@@ -4471,6 +5514,91 @@ type CommodityControllerBulkCreateData = {
4471
5514
  region: 'cn' | 'us' | 'de' | 'gb';
4472
5515
  };
4473
5516
  type CommodityControllerBulkCreateResponse = Array<CommodityResponseDto>;
5517
+ type PriceControllerCreateData = {
5518
+ /**
5519
+ * Region code for tenant context
5520
+ */
5521
+ region: 'cn' | 'us' | 'de' | 'gb';
5522
+ requestBody: CreateBeanPriceDto;
5523
+ };
5524
+ type PriceControllerCreateResponse = PriceResponseDto;
5525
+ type PriceControllerFindAllData = {
5526
+ /**
5527
+ * Filter by currency (e.g., BTC, AAPL, USD)
5528
+ */
5529
+ currency?: string;
5530
+ /**
5531
+ * Filter prices from this date (ISO 8601 format)
5532
+ */
5533
+ dateFrom?: string;
5534
+ /**
5535
+ * Filter prices to this date (ISO 8601 format)
5536
+ */
5537
+ dateTo?: string;
5538
+ /**
5539
+ * Number of items per page (default: 20, max: 100)
5540
+ */
5541
+ limit?: number;
5542
+ /**
5543
+ * Page number for pagination (default: 1)
5544
+ */
5545
+ page?: number;
5546
+ /**
5547
+ * Filter by quote currency (pricing currency, e.g., USD, CNY)
5548
+ */
5549
+ quoteCurrency?: string;
5550
+ /**
5551
+ * Region code for tenant context
5552
+ */
5553
+ region: 'cn' | 'us' | 'de' | 'gb';
5554
+ /**
5555
+ * Search term for currency or quoteCurrency (case-insensitive partial match)
5556
+ */
5557
+ search?: string;
5558
+ };
5559
+ type PriceControllerFindAllResponse = PriceListResponseDto;
5560
+ type PriceControllerFindOneData = {
5561
+ /**
5562
+ * Price ID
5563
+ */
5564
+ id: string;
5565
+ /**
5566
+ * Region code for tenant context
5567
+ */
5568
+ region: 'cn' | 'us' | 'de' | 'gb';
5569
+ };
5570
+ type PriceControllerFindOneResponse = PriceResponseDto;
5571
+ type PriceControllerUpdateData = {
5572
+ /**
5573
+ * Price ID
5574
+ */
5575
+ id: string;
5576
+ /**
5577
+ * Region code for tenant context
5578
+ */
5579
+ region: 'cn' | 'us' | 'de' | 'gb';
5580
+ requestBody: UpdateBeanPriceDto;
5581
+ };
5582
+ type PriceControllerUpdateResponse = PriceResponseDto;
5583
+ type PriceControllerDeleteData = {
5584
+ /**
5585
+ * Price ID
5586
+ */
5587
+ id: string;
5588
+ /**
5589
+ * Region code for tenant context
5590
+ */
5591
+ region: 'cn' | 'us' | 'de' | 'gb';
5592
+ };
5593
+ type PriceControllerDeleteResponse = void;
5594
+ type PriceControllerBulkCreateData = {
5595
+ /**
5596
+ * Region code for tenant context
5597
+ */
5598
+ region: 'cn' | 'us' | 'de' | 'gb';
5599
+ requestBody: Array<string>;
5600
+ };
5601
+ type PriceControllerBulkCreateResponse = Array<PriceResponseDto>;
4474
5602
  type RecurringRuleControllerCreateData = {
4475
5603
  /**
4476
5604
  * Region code for tenant context
@@ -4794,7 +5922,7 @@ type UserControllerGetUserResponse = unknown;
4794
5922
  type UserControllerSignupUserData = {
4795
5923
  requestBody: SignupDto;
4796
5924
  };
4797
- type UserControllerSignupUserResponse = unknown;
5925
+ type UserControllerSignupUserResponse = SignupResponseDto;
4798
5926
  type UserControllerDeleteUserData = {
4799
5927
  /**
4800
5928
  * User ID to delete
@@ -4835,19 +5963,197 @@ type PropertyControllerGetByKeyData = {
4835
5963
  type PropertyControllerGetByKeyResponse = unknown;
4836
5964
  type PropertyControllerUpdateData = {
4837
5965
  /**
4838
- * Property key
5966
+ * Property key
5967
+ */
5968
+ key: string;
5969
+ requestBody: UpdatePropertyDto;
5970
+ };
5971
+ type PropertyControllerUpdateResponse = unknown;
5972
+ type PropertyControllerDeleteData = {
5973
+ /**
5974
+ * Property key
5975
+ */
5976
+ key: string;
5977
+ };
5978
+ type PropertyControllerDeleteResponse = void;
5979
+ type ReportingControllerGetPortfolioTrendsData = {
5980
+ /**
5981
+ * Data granularity
5982
+ */
5983
+ granularity?: 'day' | 'week' | 'month';
5984
+ /**
5985
+ * Time period
5986
+ */
5987
+ period?: '1m' | '3m' | '6m' | '1y';
5988
+ /**
5989
+ * Region code for tenant context
5990
+ */
5991
+ region: 'cn' | 'us' | 'de' | 'gb';
5992
+ };
5993
+ type ReportingControllerGetPortfolioTrendsResponse = PortfolioTrendsResponseDto;
5994
+ type ReportingControllerGetCashFlowTrendsData = {
5995
+ /**
5996
+ * Data granularity (accepted for API symmetry; v1 returns month buckets)
5997
+ */
5998
+ granularity?: 'day' | 'week' | 'month';
5999
+ /**
6000
+ * Time period
6001
+ */
6002
+ period?: '1m' | '3m' | '6m' | '1y';
6003
+ /**
6004
+ * Region code for tenant context
6005
+ */
6006
+ region: 'cn' | 'us' | 'de' | 'gb';
6007
+ };
6008
+ type ReportingControllerGetCashFlowTrendsResponse = CashFlowTrendsResponseDto;
6009
+ type ReportingControllerGenerateSnapshotData = {
6010
+ /**
6011
+ * Region code for tenant context
6012
+ */
6013
+ region: 'cn' | 'us' | 'de' | 'gb';
6014
+ /**
6015
+ * Optional date (defaults to today)
6016
+ */
6017
+ requestBody: GenerateSnapshotBody;
6018
+ };
6019
+ type ReportingControllerGenerateSnapshotResponse = GenerateSnapshotResponse;
6020
+ type ReportingControllerBackfillSnapshotsData = {
6021
+ /**
6022
+ * Region code for tenant context
6023
+ */
6024
+ region: 'cn' | 'us' | 'de' | 'gb';
6025
+ requestBody: BackfillSnapshotsBody;
6026
+ };
6027
+ type ReportingControllerBackfillSnapshotsResponse = BackfillSnapshotsResponse;
6028
+ type EventControllerCreateData = {
6029
+ /**
6030
+ * Region code for tenant context (decorative for life events)
6031
+ */
6032
+ region: 'cn' | 'us' | 'de' | 'gb';
6033
+ requestBody: CreateBeanEventDto;
6034
+ };
6035
+ type EventControllerCreateResponse = EventResponseDto;
6036
+ type EventControllerFindAllData = {
6037
+ /**
6038
+ * Filter life events from this date (ISO 8601 format)
6039
+ */
6040
+ from?: string;
6041
+ /**
6042
+ * Number of items per page (default: 20, max: 100)
6043
+ */
6044
+ limit?: number;
6045
+ /**
6046
+ * Page number for pagination (default: 1)
6047
+ */
6048
+ page?: number;
6049
+ /**
6050
+ * Search term for description (case-insensitive partial match)
6051
+ */
6052
+ q?: string;
6053
+ /**
6054
+ * Region code for tenant context (decorative for life events)
6055
+ */
6056
+ region: 'cn' | 'us' | 'de' | 'gb';
6057
+ /**
6058
+ * Filter life events to this date (ISO 8601 format)
6059
+ */
6060
+ to?: string;
6061
+ /**
6062
+ * Filter by life event type (exact match)
6063
+ */
6064
+ type?: string;
6065
+ };
6066
+ type EventControllerFindAllResponse = EventListResponseDto;
6067
+ type EventControllerFindOneData = {
6068
+ /**
6069
+ * Life event ID
6070
+ */
6071
+ id: string;
6072
+ /**
6073
+ * Region code for tenant context (decorative for life events)
6074
+ */
6075
+ region: 'cn' | 'us' | 'de' | 'gb';
6076
+ };
6077
+ type EventControllerFindOneResponse = EventResponseDto;
6078
+ type EventControllerUpdateData = {
6079
+ /**
6080
+ * Life event ID
6081
+ */
6082
+ id: string;
6083
+ /**
6084
+ * Region code for tenant context (decorative for life events)
6085
+ */
6086
+ region: 'cn' | 'us' | 'de' | 'gb';
6087
+ requestBody: UpdateBeanEventDto;
6088
+ };
6089
+ type EventControllerUpdateResponse = EventResponseDto;
6090
+ type EventControllerDeleteData = {
6091
+ /**
6092
+ * Life event ID
6093
+ */
6094
+ id: string;
6095
+ /**
6096
+ * Region code for tenant context (decorative for life events)
6097
+ */
6098
+ region: 'cn' | 'us' | 'de' | 'gb';
6099
+ };
6100
+ type EventControllerDeleteResponse = void;
6101
+ type EventControllerGetSliceData = {
6102
+ accountPattern: string;
6103
+ granularity: string;
6104
+ /**
6105
+ * Life event ID
6106
+ */
6107
+ id: string;
6108
+ /**
6109
+ * Region code for tenant context (decorative for life events)
6110
+ */
6111
+ region: 'cn' | 'us' | 'de' | 'gb';
6112
+ };
6113
+ type EventControllerGetSliceResponse = unknown;
6114
+ type OnboardingControllerBootstrapData = {
6115
+ /**
6116
+ * Region code for tenant context
6117
+ */
6118
+ region: 'cn' | 'us' | 'de' | 'gb';
6119
+ requestBody: OnboardingDto;
6120
+ };
6121
+ type OnboardingControllerBootstrapResponse = unknown;
6122
+ type ReconciliationControllerComputeData = {
6123
+ /**
6124
+ * Region code for tenant context (decorative for reconciliation)
6125
+ */
6126
+ region: 'cn' | 'us' | 'de' | 'gb';
6127
+ requestBody: ComputeReconciliationDto;
6128
+ };
6129
+ type ReconciliationControllerComputeResponse = ReconciliationComputeResultDto;
6130
+ type ReconciliationControllerAssertData = {
6131
+ /**
6132
+ * Region code for tenant context (decorative for reconciliation)
6133
+ */
6134
+ region: 'cn' | 'us' | 'de' | 'gb';
6135
+ requestBody: AssertReconciliationDto;
6136
+ };
6137
+ type ReconciliationControllerAssertResponse = ReconciliationRecordDto;
6138
+ type ReconciliationControllerPadData = {
6139
+ /**
6140
+ * Region code for tenant context (decorative for reconciliation)
6141
+ */
6142
+ region: 'cn' | 'us' | 'de' | 'gb';
6143
+ requestBody: PadReconciliationDto;
6144
+ };
6145
+ type ReconciliationControllerPadResponse = PadResultDto;
6146
+ type ReconciliationControllerHistoryData = {
6147
+ /**
6148
+ * BeanAccount id
4839
6149
  */
4840
- key: string;
4841
- requestBody: UpdatePropertyDto;
4842
- };
4843
- type PropertyControllerUpdateResponse = unknown;
4844
- type PropertyControllerDeleteData = {
6150
+ accountId: string;
4845
6151
  /**
4846
- * Property key
6152
+ * Region code for tenant context (decorative for reconciliation)
4847
6153
  */
4848
- key: string;
6154
+ region: 'cn' | 'us' | 'de' | 'gb';
4849
6155
  };
4850
- type PropertyControllerDeleteResponse = void;
6156
+ type ReconciliationControllerHistoryResponse = Array<ReconciliationRecordDto>;
4851
6157
  type ExportControllerExportBeancountResponse = unknown;
4852
6158
  type FileImportControllerImportFileData = {
4853
6159
  /**
@@ -4927,47 +6233,15 @@ type ImporterConfigControllerResetConfigData = {
4927
6233
  region: 'cn' | 'us' | 'de' | 'gb';
4928
6234
  };
4929
6235
  type ImporterConfigControllerResetConfigResponse = ImporterConfigDto;
4930
- type PlatformControllerFindAllResponse = unknown;
4931
- type PlatformControllerCreateData = {
4932
- requestBody: CreatePlatformDto;
4933
- };
4934
- type PlatformControllerCreateResponse = unknown;
4935
- type PlatformControllerGetPlatformListResponse = unknown;
4936
- type PlatformControllerMatchPlatformsData = {
4937
- /**
4938
- * Search query — Chinese name, English name, or abbreviation
4939
- */
4940
- q: string;
4941
- /**
4942
- * Region code for category override lookup
4943
- */
4944
- region?: string;
4945
- };
4946
- type PlatformControllerMatchPlatformsResponse = unknown;
4947
- type PlatformControllerUpdateData = {
4948
- /**
4949
- * Platform ID
4950
- */
4951
- id: string;
4952
- requestBody: UpdatePlatformDto;
4953
- };
4954
- type PlatformControllerUpdateResponse = unknown;
4955
- type PlatformControllerDeleteData = {
4956
- /**
4957
- * Platform ID
4958
- */
4959
- id: string;
4960
- };
4961
- type PlatformControllerDeleteResponse = void;
4962
6236
  type ProviderSyncControllerSyncData = {
4963
6237
  /**
4964
6238
  * Provider name
4965
6239
  */
4966
6240
  providerName: 'plaid' | 'teller' | 'truelayer' | 'gocardless' | 'simplefin' | 'yodlee' | 'beancount-direct' | 'parsed-bill';
4967
6241
  /**
4968
- * Region code
6242
+ * Region code for tenant context
4969
6243
  */
4970
- region: unknown;
6244
+ region: 'cn' | 'us' | 'de' | 'gb';
4971
6245
  requestBody: ProviderSyncDto;
4972
6246
  };
4973
6247
  type ProviderSyncControllerSyncResponse = ProviderSyncResponseDto;
@@ -4989,6 +6263,38 @@ type ProviderSyncControllerIsProviderSupportedData = {
4989
6263
  region: 'cn' | 'us' | 'de' | 'gb';
4990
6264
  };
4991
6265
  type ProviderSyncControllerIsProviderSupportedResponse = unknown;
6266
+ type ExternalAccountLinkControllerCreateData = {
6267
+ /**
6268
+ * Region code for tenant context
6269
+ */
6270
+ region: 'cn' | 'us' | 'de' | 'gb';
6271
+ requestBody: CreateExternalAccountLinkDto;
6272
+ };
6273
+ type ExternalAccountLinkControllerCreateResponse = ExternalAccountLinkResponseDto;
6274
+ type ExternalAccountLinkControllerFindAllData = {
6275
+ provider: string;
6276
+ /**
6277
+ * Region code for tenant context
6278
+ */
6279
+ region: 'cn' | 'us' | 'de' | 'gb';
6280
+ };
6281
+ type ExternalAccountLinkControllerFindAllResponse = ExternalAccountLinkListResponseDto;
6282
+ type ExternalAccountLinkControllerFindOneData = {
6283
+ id: string;
6284
+ /**
6285
+ * Region code for tenant context
6286
+ */
6287
+ region: 'cn' | 'us' | 'de' | 'gb';
6288
+ };
6289
+ type ExternalAccountLinkControllerFindOneResponse = ExternalAccountLinkResponseDto;
6290
+ type ExternalAccountLinkControllerRemoveData = {
6291
+ id: string;
6292
+ /**
6293
+ * Region code for tenant context
6294
+ */
6295
+ region: 'cn' | 'us' | 'de' | 'gb';
6296
+ };
6297
+ type ExternalAccountLinkControllerRemoveResponse = void;
4992
6298
  type TelemetryControllerReportTelemetryData = {
4993
6299
  /**
4994
6300
  * Region code for tenant context
@@ -4997,6 +6303,25 @@ type TelemetryControllerReportTelemetryData = {
4997
6303
  requestBody: ParserTelemetryReportDto;
4998
6304
  };
4999
6305
  type TelemetryControllerReportTelemetryResponse = unknown;
6306
+ type TelemetryControllerReportCoverageMissData = {
6307
+ /**
6308
+ * Region code for tenant context
6309
+ */
6310
+ region: 'cn' | 'us' | 'de' | 'gb';
6311
+ requestBody: UncoveredFormatMissDto;
6312
+ };
6313
+ type TelemetryControllerReportCoverageMissResponse = unknown;
6314
+ type TelemetryControllerGetCoverageMetricsData = {
6315
+ /**
6316
+ * Region code for tenant context
6317
+ */
6318
+ region: 'cn' | 'us' | 'de' | 'gb';
6319
+ /**
6320
+ * Top-N uncovered formats (default 10)
6321
+ */
6322
+ topN?: unknown;
6323
+ };
6324
+ type TelemetryControllerGetCoverageMetricsResponse = unknown;
5000
6325
  type NlpControllerProcessNaturalLanguageData = {
5001
6326
  /**
5002
6327
  * Region code for tenant context
@@ -5030,6 +6355,38 @@ type NlpControllerGetSessionData = {
5030
6355
  sessionId?: string;
5031
6356
  };
5032
6357
  type NlpControllerGetSessionResponse = unknown;
6358
+ type PlatformControllerFindAllResponse = unknown;
6359
+ type PlatformControllerCreateData = {
6360
+ requestBody: CreatePlatformDto;
6361
+ };
6362
+ type PlatformControllerCreateResponse = unknown;
6363
+ type PlatformControllerGetPlatformListResponse = Array<PlatformListItemDto>;
6364
+ type PlatformControllerMatchPlatformsData = {
6365
+ /**
6366
+ * Search query — Chinese name, English name, or abbreviation
6367
+ */
6368
+ q: string;
6369
+ /**
6370
+ * Region code for category override lookup
6371
+ */
6372
+ region?: string;
6373
+ };
6374
+ type PlatformControllerMatchPlatformsResponse = PlatformMatchResponseDto;
6375
+ type PlatformControllerUpdateData = {
6376
+ /**
6377
+ * Platform ID
6378
+ */
6379
+ id: string;
6380
+ requestBody: UpdatePlatformDto;
6381
+ };
6382
+ type PlatformControllerUpdateResponse = unknown;
6383
+ type PlatformControllerDeleteData = {
6384
+ /**
6385
+ * Platform ID
6386
+ */
6387
+ id: string;
6388
+ };
6389
+ type PlatformControllerDeleteResponse = void;
5033
6390
  type DashboardControllerGetNetWorthData = {
5034
6391
  /**
5035
6392
  * Date for balance calculation (ISO 8601 format)
@@ -5042,6 +6399,10 @@ type DashboardControllerGetNetWorthData = {
5042
6399
  };
5043
6400
  type DashboardControllerGetNetWorthResponse = NetWorthResponseDto;
5044
6401
  type DashboardControllerGetAccountsData = {
6402
+ /**
6403
+ * Scope to a single account (only valid with groupBy=holdingAssetClass, ADR-0105 §6)
6404
+ */
6405
+ accountId?: string;
5045
6406
  /**
5046
6407
  * Date for balance calculation (ISO 8601 format)
5047
6408
  */
@@ -5049,13 +6410,13 @@ type DashboardControllerGetAccountsData = {
5049
6410
  /**
5050
6411
  * Grouping strategy
5051
6412
  */
5052
- groupBy?: 'platform' | 'assetClass';
6413
+ groupBy?: 'platform' | 'assetClass' | 'holdingAssetClass' | 'holdingAssetClassByAccount';
5053
6414
  /**
5054
6415
  * Region code for tenant context
5055
6416
  */
5056
6417
  region: 'cn' | 'us' | 'de' | 'gb';
5057
6418
  };
5058
- type DashboardControllerGetAccountsResponse = AccountsResponseDto | AssetClassAccountsResponseDto;
6419
+ type DashboardControllerGetAccountsResponse = AccountsResponseDto | AssetClassAccountsResponseDto | HoldingAssetClassCrossAccountResponseDto;
5059
6420
  type DashboardControllerGetCashFlowData = {
5060
6421
  /**
5061
6422
  * Period in YYYY-MM format
@@ -5067,13 +6428,17 @@ type DashboardControllerGetCashFlowData = {
5067
6428
  region: 'cn' | 'us' | 'de' | 'gb';
5068
6429
  };
5069
6430
  type DashboardControllerGetCashFlowResponse = CashFlowResponseDto;
5070
- type ReportingControllerGetPortfolioTrendsData = {
6431
+ type DashboardControllerGetExpensesData = {
5071
6432
  /**
5072
- * Data granularity
6433
+ * Account root to aggregate (expense → ^Expenses:, income → ^Income:)
5073
6434
  */
5074
- granularity?: 'day' | 'week' | 'month';
6435
+ flow?: 'expense' | 'income';
5075
6436
  /**
5076
- * Time period
6437
+ * Grouping strategy
6438
+ */
6439
+ groupBy?: 'category';
6440
+ /**
6441
+ * Time window (1m = current calendar month)
5077
6442
  */
5078
6443
  period?: '1m' | '3m' | '6m' | '1y';
5079
6444
  /**
@@ -5081,31 +6446,31 @@ type ReportingControllerGetPortfolioTrendsData = {
5081
6446
  */
5082
6447
  region: 'cn' | 'us' | 'de' | 'gb';
5083
6448
  };
5084
- type ReportingControllerGetPortfolioTrendsResponse = PortfolioTrendsResponseDto;
5085
- type ReportingControllerGenerateSnapshotData = {
6449
+ type DashboardControllerGetExpensesResponse = ExpensesByCategoryResponseDto;
6450
+ type HoldingPnlControllerGetHoldingPnlData = {
5086
6451
  /**
5087
- * Region code for tenant context
6452
+ * Scope to a single account
5088
6453
  */
5089
- region: 'cn' | 'us' | 'de' | 'gb';
6454
+ accountId?: string;
5090
6455
  /**
5091
- * Optional date (defaults to today)
6456
+ * As-of date (ISO 8601), defaults to today
5092
6457
  */
5093
- requestBody: GenerateSnapshotBody;
5094
- };
5095
- type ReportingControllerGenerateSnapshotResponse = GenerateSnapshotResponse;
5096
- type ReportingControllerBackfillSnapshotsData = {
6458
+ asOf?: string;
6459
+ /**
6460
+ * Realized-P&L lot-matching method (default average). Does not affect the average-cost unrealized basis.
6461
+ */
6462
+ method?: 'FIFO' | 'average';
5097
6463
  /**
5098
6464
  * Region code for tenant context
5099
6465
  */
5100
6466
  region: 'cn' | 'us' | 'de' | 'gb';
5101
- requestBody: BackfillSnapshotsBody;
5102
6467
  };
5103
- type ReportingControllerBackfillSnapshotsResponse = BackfillSnapshotsResponse;
6468
+ type HoldingPnlControllerGetHoldingPnlResponse = HoldingPnlResponseDto;
5104
6469
  type ApiKeysControllerCreateApiKeyResponse = unknown;
5105
6470
  type AuthControllerAccessTokenLoginData = {
5106
6471
  requestBody: AnonymousLoginDto;
5107
6472
  };
5108
- type AuthControllerAccessTokenLoginResponse = unknown;
6473
+ type AuthControllerAccessTokenLoginResponse = AnonymousLoginResponseDto;
5109
6474
  type CacheControllerFlushCacheResponse = unknown;
5110
6475
  type ExchangeRateControllerGetExchangeRateData = {
5111
6476
  /**
@@ -5240,6 +6605,25 @@ type $OpenApiTs = {
5240
6605
  };
5241
6606
  };
5242
6607
  };
6608
+ '/api/v1/{region}/bean/accounts/{id}/opening-balance': {
6609
+ post: {
6610
+ req: AccountControllerAddOpeningBalanceData;
6611
+ res: {
6612
+ /**
6613
+ * Opening-balance transaction created
6614
+ */
6615
+ 201: OpeningBalanceResultDto;
6616
+ /**
6617
+ * Account not found
6618
+ */
6619
+ 404: unknown;
6620
+ /**
6621
+ * An opening balance already exists for this account
6622
+ */
6623
+ 409: unknown;
6624
+ };
6625
+ };
6626
+ };
5243
6627
  '/api/v1/{region}/bean/account-standards': {
5244
6628
  get: {
5245
6629
  req: AccountStandardsControllerGetTemplatesData;
@@ -5336,6 +6720,29 @@ type $OpenApiTs = {
5336
6720
  };
5337
6721
  };
5338
6722
  };
6723
+ '/api/v1/{region}/bean/transactions/{id}/correct': {
6724
+ post: {
6725
+ req: TransactionControllerCorrectData;
6726
+ res: {
6727
+ /**
6728
+ * Corrected transaction created
6729
+ */
6730
+ 201: TransactionDetailDto;
6731
+ /**
6732
+ * Original transaction not found
6733
+ */
6734
+ 404: ApiProblemResponseDto;
6735
+ /**
6736
+ * Original no longer ACTIVE (concurrent modification)
6737
+ */
6738
+ 409: ApiProblemResponseDto;
6739
+ /**
6740
+ * Pipeline validation failed (does not balance, invalid accounts)
6741
+ */
6742
+ 422: ApiProblemResponseDto;
6743
+ };
6744
+ };
6745
+ };
5339
6746
  '/api/v1/{region}/bean/transactions/tags': {
5340
6747
  get: {
5341
6748
  req: TransactionControllerSuggestTagsData;
@@ -5730,98 +7137,182 @@ type $OpenApiTs = {
5730
7137
  };
5731
7138
  };
5732
7139
  };
5733
- '/api/v1/{region}/bean/commodities': {
7140
+ '/api/v1/{region}/bean/commodities': {
7141
+ post: {
7142
+ req: CommodityControllerCreateData;
7143
+ res: {
7144
+ /**
7145
+ * Commodity created successfully
7146
+ */
7147
+ 201: CommodityResponseDto;
7148
+ /**
7149
+ * Invalid input data
7150
+ */
7151
+ 400: ApiProblemResponseDto;
7152
+ /**
7153
+ * Commodity already exists
7154
+ */
7155
+ 409: ApiProblemResponseDto;
7156
+ };
7157
+ };
7158
+ get: {
7159
+ req: CommodityControllerFindAllData;
7160
+ res: {
7161
+ /**
7162
+ * Commodities retrieved successfully
7163
+ */
7164
+ 200: CommodityListResponseDto;
7165
+ };
7166
+ };
7167
+ };
7168
+ '/api/v1/{region}/bean/commodities/{symbol}': {
7169
+ get: {
7170
+ req: CommodityControllerFindOneData;
7171
+ res: {
7172
+ /**
7173
+ * Commodity retrieved successfully
7174
+ */
7175
+ 200: CommodityResponseDto;
7176
+ /**
7177
+ * Commodity not found
7178
+ */
7179
+ 404: ApiProblemResponseDto;
7180
+ };
7181
+ };
7182
+ put: {
7183
+ req: CommodityControllerUpdateData;
7184
+ res: {
7185
+ /**
7186
+ * Commodity updated successfully
7187
+ */
7188
+ 200: CommodityResponseDto;
7189
+ /**
7190
+ * Invalid input data
7191
+ */
7192
+ 400: ApiProblemResponseDto;
7193
+ /**
7194
+ * Commodity not found
7195
+ */
7196
+ 404: ApiProblemResponseDto;
7197
+ };
7198
+ };
7199
+ delete: {
7200
+ req: CommodityControllerDeleteData;
7201
+ res: {
7202
+ /**
7203
+ * Commodity deleted successfully
7204
+ */
7205
+ 204: void;
7206
+ /**
7207
+ * Commodity not found
7208
+ */
7209
+ 404: ApiProblemResponseDto;
7210
+ };
7211
+ };
7212
+ };
7213
+ '/api/v1/{region}/bean/commodities/{symbol}/ensure': {
7214
+ post: {
7215
+ req: CommodityControllerGetOrCreateData;
7216
+ res: {
7217
+ /**
7218
+ * Commodity retrieved or created
7219
+ */
7220
+ 200: CommodityResponseDto;
7221
+ };
7222
+ };
7223
+ };
7224
+ '/api/v1/{region}/bean/commodities/bulk': {
7225
+ post: {
7226
+ req: CommodityControllerBulkCreateData;
7227
+ res: {
7228
+ /**
7229
+ * Commodities created successfully
7230
+ */
7231
+ 201: Array<CommodityResponseDto>;
7232
+ };
7233
+ };
7234
+ };
7235
+ '/api/v1/{region}/bean/prices': {
5734
7236
  post: {
5735
- req: CommodityControllerCreateData;
7237
+ req: PriceControllerCreateData;
5736
7238
  res: {
5737
7239
  /**
5738
- * Commodity created successfully
7240
+ * Price created successfully
5739
7241
  */
5740
- 201: CommodityResponseDto;
7242
+ 201: PriceResponseDto;
5741
7243
  /**
5742
- * Invalid input data
7244
+ * Currency or quoteCurrency commodity not found
5743
7245
  */
5744
- 400: ApiProblemResponseDto;
7246
+ 404: unknown;
5745
7247
  /**
5746
- * Commodity already exists
7248
+ * Price already exists for this currency pair and date
5747
7249
  */
5748
- 409: ApiProblemResponseDto;
7250
+ 409: unknown;
5749
7251
  };
5750
7252
  };
5751
7253
  get: {
5752
- req: CommodityControllerFindAllData;
7254
+ req: PriceControllerFindAllData;
5753
7255
  res: {
5754
7256
  /**
5755
- * Commodities retrieved successfully
7257
+ * Prices retrieved successfully
5756
7258
  */
5757
- 200: CommodityListResponseDto;
7259
+ 200: PriceListResponseDto;
5758
7260
  };
5759
7261
  };
5760
7262
  };
5761
- '/api/v1/{region}/bean/commodities/{symbol}': {
7263
+ '/api/v1/{region}/bean/prices/{id}': {
5762
7264
  get: {
5763
- req: CommodityControllerFindOneData;
7265
+ req: PriceControllerFindOneData;
5764
7266
  res: {
5765
7267
  /**
5766
- * Commodity retrieved successfully
7268
+ * Price retrieved successfully
5767
7269
  */
5768
- 200: CommodityResponseDto;
7270
+ 200: PriceResponseDto;
5769
7271
  /**
5770
- * Commodity not found
7272
+ * Price not found
5771
7273
  */
5772
- 404: ApiProblemResponseDto;
7274
+ 404: unknown;
5773
7275
  };
5774
7276
  };
5775
7277
  put: {
5776
- req: CommodityControllerUpdateData;
7278
+ req: PriceControllerUpdateData;
5777
7279
  res: {
5778
7280
  /**
5779
- * Commodity updated successfully
7281
+ * Price updated successfully
5780
7282
  */
5781
- 200: CommodityResponseDto;
7283
+ 200: PriceResponseDto;
5782
7284
  /**
5783
- * Invalid input data
7285
+ * Price not found
5784
7286
  */
5785
- 400: ApiProblemResponseDto;
7287
+ 404: unknown;
5786
7288
  /**
5787
- * Commodity not found
7289
+ * Updated price conflicts with existing price
5788
7290
  */
5789
- 404: ApiProblemResponseDto;
7291
+ 409: unknown;
5790
7292
  };
5791
7293
  };
5792
7294
  delete: {
5793
- req: CommodityControllerDeleteData;
7295
+ req: PriceControllerDeleteData;
5794
7296
  res: {
5795
7297
  /**
5796
- * Commodity deleted successfully
7298
+ * Price deleted successfully
5797
7299
  */
5798
7300
  204: void;
5799
7301
  /**
5800
- * Commodity not found
5801
- */
5802
- 404: ApiProblemResponseDto;
5803
- };
5804
- };
5805
- };
5806
- '/api/v1/{region}/bean/commodities/{symbol}/ensure': {
5807
- post: {
5808
- req: CommodityControllerGetOrCreateData;
5809
- res: {
5810
- /**
5811
- * Commodity retrieved or created
7302
+ * Price not found
5812
7303
  */
5813
- 200: CommodityResponseDto;
7304
+ 404: unknown;
5814
7305
  };
5815
7306
  };
5816
7307
  };
5817
- '/api/v1/{region}/bean/commodities/bulk': {
7308
+ '/api/v1/{region}/bean/prices/bulk': {
5818
7309
  post: {
5819
- req: CommodityControllerBulkCreateData;
7310
+ req: PriceControllerBulkCreateData;
5820
7311
  res: {
5821
7312
  /**
5822
- * Commodities created successfully
7313
+ * Prices created successfully
5823
7314
  */
5824
- 201: Array<CommodityResponseDto>;
7315
+ 201: Array<PriceResponseDto>;
5825
7316
  };
5826
7317
  };
5827
7318
  };
@@ -6312,7 +7803,7 @@ type $OpenApiTs = {
6312
7803
  /**
6313
7804
  * User created successfully
6314
7805
  */
6315
- 201: unknown;
7806
+ 201: SignupResponseDto;
6316
7807
  /**
6317
7808
  * Invalid Turnstile token (when Turnstile is enabled)
6318
7809
  */
@@ -6425,45 +7916,292 @@ type $OpenApiTs = {
6425
7916
  */
6426
7917
  403: unknown;
6427
7918
  /**
6428
- * Property not found
7919
+ * Property not found
7920
+ */
7921
+ 404: unknown;
7922
+ };
7923
+ };
7924
+ put: {
7925
+ req: PropertyControllerUpdateData;
7926
+ res: {
7927
+ /**
7928
+ * Property updated successfully
7929
+ */
7930
+ 200: unknown;
7931
+ /**
7932
+ * Unauthorized
7933
+ */
7934
+ 401: unknown;
7935
+ /**
7936
+ * Forbidden - insufficient permissions
7937
+ */
7938
+ 403: unknown;
7939
+ };
7940
+ };
7941
+ delete: {
7942
+ req: PropertyControllerDeleteData;
7943
+ res: {
7944
+ /**
7945
+ * Property deleted successfully
7946
+ */
7947
+ 204: void;
7948
+ /**
7949
+ * Unauthorized
7950
+ */
7951
+ 401: unknown;
7952
+ /**
7953
+ * Forbidden - insufficient permissions
7954
+ */
7955
+ 403: unknown;
7956
+ /**
7957
+ * Property not found
7958
+ */
7959
+ 404: unknown;
7960
+ };
7961
+ };
7962
+ };
7963
+ '/api/v1/{region}/reporting/portfolio/trends': {
7964
+ get: {
7965
+ req: ReportingControllerGetPortfolioTrendsData;
7966
+ res: {
7967
+ /**
7968
+ * Trends retrieved successfully
7969
+ */
7970
+ 200: PortfolioTrendsResponseDto;
7971
+ /**
7972
+ * User not authenticated
7973
+ */
7974
+ 401: unknown;
7975
+ };
7976
+ };
7977
+ };
7978
+ '/api/v1/{region}/reporting/cash-flow/trends': {
7979
+ get: {
7980
+ req: ReportingControllerGetCashFlowTrendsData;
7981
+ res: {
7982
+ /**
7983
+ * Cash-flow trends retrieved successfully
7984
+ */
7985
+ 200: CashFlowTrendsResponseDto;
7986
+ /**
7987
+ * User not authenticated
7988
+ */
7989
+ 401: unknown;
7990
+ };
7991
+ };
7992
+ };
7993
+ '/api/v1/{region}/reporting/snapshots/generate': {
7994
+ post: {
7995
+ req: ReportingControllerGenerateSnapshotData;
7996
+ res: {
7997
+ /**
7998
+ * Snapshot generated successfully
7999
+ */
8000
+ 200: GenerateSnapshotResponse;
8001
+ /**
8002
+ * Invalid date format
8003
+ */
8004
+ 400: unknown;
8005
+ /**
8006
+ * User not authenticated
8007
+ */
8008
+ 401: unknown;
8009
+ };
8010
+ };
8011
+ };
8012
+ '/api/v1/{region}/reporting/snapshots/backfill': {
8013
+ post: {
8014
+ req: ReportingControllerBackfillSnapshotsData;
8015
+ res: {
8016
+ /**
8017
+ * Backfill completed successfully
8018
+ */
8019
+ 200: BackfillSnapshotsResponse;
8020
+ /**
8021
+ * Invalid date format or range
8022
+ */
8023
+ 400: unknown;
8024
+ /**
8025
+ * User not authenticated
8026
+ */
8027
+ 401: unknown;
8028
+ /**
8029
+ * Backfill already in progress for this user
8030
+ */
8031
+ 409: unknown;
8032
+ };
8033
+ };
8034
+ };
8035
+ '/api/v1/{region}/bean/events': {
8036
+ post: {
8037
+ req: EventControllerCreateData;
8038
+ res: {
8039
+ /**
8040
+ * Life event created successfully
8041
+ */
8042
+ 201: EventResponseDto;
8043
+ /**
8044
+ * Life event already exists for this (userId, type, date) combination
8045
+ */
8046
+ 409: unknown;
8047
+ };
8048
+ };
8049
+ get: {
8050
+ req: EventControllerFindAllData;
8051
+ res: {
8052
+ /**
8053
+ * Life events retrieved successfully
8054
+ */
8055
+ 200: EventListResponseDto;
8056
+ };
8057
+ };
8058
+ };
8059
+ '/api/v1/{region}/bean/events/{id}': {
8060
+ get: {
8061
+ req: EventControllerFindOneData;
8062
+ res: {
8063
+ /**
8064
+ * Life event retrieved successfully
8065
+ */
8066
+ 200: EventResponseDto;
8067
+ /**
8068
+ * Life event not found
8069
+ */
8070
+ 404: unknown;
8071
+ };
8072
+ };
8073
+ put: {
8074
+ req: EventControllerUpdateData;
8075
+ res: {
8076
+ /**
8077
+ * Life event updated successfully
8078
+ */
8079
+ 200: EventResponseDto;
8080
+ /**
8081
+ * If-Match header is not a valid ISO 8601 date
8082
+ */
8083
+ 400: unknown;
8084
+ /**
8085
+ * Life event not found
8086
+ */
8087
+ 404: unknown;
8088
+ /**
8089
+ * Updated event conflicts with an existing (userId, type, date) combination
8090
+ */
8091
+ 409: unknown;
8092
+ /**
8093
+ * If-Match precondition failed (updatedAt mismatch)
8094
+ */
8095
+ 412: unknown;
8096
+ };
8097
+ };
8098
+ delete: {
8099
+ req: EventControllerDeleteData;
8100
+ res: {
8101
+ /**
8102
+ * Life event deleted successfully
8103
+ */
8104
+ 204: void;
8105
+ /**
8106
+ * Life event not found
8107
+ */
8108
+ 404: unknown;
8109
+ };
8110
+ };
8111
+ };
8112
+ '/api/v1/{region}/bean/events/{id}/slice': {
8113
+ get: {
8114
+ req: EventControllerGetSliceData;
8115
+ res: {
8116
+ /**
8117
+ * Time-series sliced by the life event range
8118
+ */
8119
+ 200: unknown;
8120
+ /**
8121
+ * accountPattern query param is empty
8122
+ */
8123
+ 400: unknown;
8124
+ /**
8125
+ * Life event not found
8126
+ */
8127
+ 404: unknown;
8128
+ };
8129
+ };
8130
+ };
8131
+ '/api/v1/{region}/bean/onboarding': {
8132
+ post: {
8133
+ req: OnboardingControllerBootstrapData;
8134
+ res: {
8135
+ /**
8136
+ * Onboarding bootstrap result.
8137
+ */
8138
+ 201: unknown;
8139
+ /**
8140
+ * Invalid region/account path/duplicate paths.
8141
+ */
8142
+ 422: unknown;
8143
+ };
8144
+ };
8145
+ };
8146
+ '/api/v1/{region}/bean/reconciliations': {
8147
+ post: {
8148
+ req: ReconciliationControllerComputeData;
8149
+ res: {
8150
+ /**
8151
+ * Reconciliation preview
8152
+ */
8153
+ 200: ReconciliationComputeResultDto;
8154
+ /**
8155
+ * Account not found
8156
+ */
8157
+ 404: unknown;
8158
+ };
8159
+ };
8160
+ };
8161
+ '/api/v1/{region}/bean/reconciliations/assert': {
8162
+ post: {
8163
+ req: ReconciliationControllerAssertData;
8164
+ res: {
8165
+ /**
8166
+ * Balance assertion recorded
8167
+ */
8168
+ 201: ReconciliationRecordDto;
8169
+ /**
8170
+ * Account not found
6429
8171
  */
6430
8172
  404: unknown;
6431
8173
  };
6432
8174
  };
6433
- put: {
6434
- req: PropertyControllerUpdateData;
8175
+ };
8176
+ '/api/v1/{region}/bean/reconciliations/pad': {
8177
+ post: {
8178
+ req: ReconciliationControllerPadData;
6435
8179
  res: {
6436
8180
  /**
6437
- * Property updated successfully
8181
+ * Pad adjusting entry generated
6438
8182
  */
6439
- 200: unknown;
8183
+ 201: PadResultDto;
6440
8184
  /**
6441
- * Unauthorized
8185
+ * Book already within tolerance — no pad needed
6442
8186
  */
6443
- 401: unknown;
8187
+ 400: unknown;
6444
8188
  /**
6445
- * Forbidden - insufficient permissions
8189
+ * Account not found
6446
8190
  */
6447
- 403: unknown;
8191
+ 404: unknown;
6448
8192
  };
6449
8193
  };
6450
- delete: {
6451
- req: PropertyControllerDeleteData;
8194
+ };
8195
+ '/api/v1/{region}/bean/accounts/{accountId}/reconciliations': {
8196
+ get: {
8197
+ req: ReconciliationControllerHistoryData;
6452
8198
  res: {
6453
8199
  /**
6454
- * Property deleted successfully
6455
- */
6456
- 204: void;
6457
- /**
6458
- * Unauthorized
6459
- */
6460
- 401: unknown;
6461
- /**
6462
- * Forbidden - insufficient permissions
8200
+ * Reconciliation history
6463
8201
  */
6464
- 403: unknown;
8202
+ 200: Array<ReconciliationRecordDto>;
6465
8203
  /**
6466
- * Property not found
8204
+ * Account not found
6467
8205
  */
6468
8206
  404: unknown;
6469
8207
  };
@@ -6619,143 +8357,145 @@ type $OpenApiTs = {
6619
8357
  };
6620
8358
  };
6621
8359
  };
6622
- '/api/v1/bean/platforms': {
6623
- get: {
8360
+ '/api/v1/{region}/bean/import/provider/{providerName}/sync': {
8361
+ post: {
8362
+ req: ProviderSyncControllerSyncData;
6624
8363
  res: {
6625
8364
  /**
6626
- * List of platforms with binding and account counts
8365
+ * Sync completed successfully
6627
8366
  */
6628
- 200: unknown;
6629
- };
6630
- };
6631
- post: {
6632
- req: PlatformControllerCreateData;
6633
- res: {
8367
+ 200: ProviderSyncResponseDto;
6634
8368
  /**
6635
- * Platform created successfully
8369
+ * Invalid request data
6636
8370
  */
6637
- 201: unknown;
8371
+ 400: unknown;
6638
8372
  /**
6639
- * Platform already exists
8373
+ * Missing or invalid authentication
6640
8374
  */
6641
- 409: unknown;
8375
+ 401: unknown;
8376
+ /**
8377
+ * Provider not supported
8378
+ */
8379
+ 404: unknown;
6642
8380
  };
6643
8381
  };
6644
8382
  };
6645
- '/api/v1/bean/platforms/list': {
8383
+ '/api/v1/{region}/bean/import/provider/supported': {
6646
8384
  get: {
8385
+ req: ProviderSyncControllerGetSupportedProvidersData;
6647
8386
  res: {
6648
8387
  /**
6649
- * List of platforms with user binding status
8388
+ * List of supported providers
6650
8389
  */
6651
- 200: unknown;
8390
+ 200: SupportedProvidersResponseDto;
8391
+ /**
8392
+ * Missing or invalid authentication
8393
+ */
8394
+ 401: unknown;
6652
8395
  };
6653
8396
  };
6654
8397
  };
6655
- '/api/v1/bean/platforms/match': {
8398
+ '/api/v1/{region}/bean/import/provider/{providerName}/supported': {
6656
8399
  get: {
6657
- req: PlatformControllerMatchPlatformsData;
8400
+ req: ProviderSyncControllerIsProviderSupportedData;
6658
8401
  res: {
6659
8402
  /**
6660
- * List of matching platforms with suggested segment names
8403
+ * Provider support status
6661
8404
  */
6662
8405
  200: unknown;
8406
+ /**
8407
+ * Missing or invalid authentication
8408
+ */
8409
+ 401: unknown;
6663
8410
  };
6664
8411
  };
6665
8412
  };
6666
- '/api/v1/bean/platforms/{id}': {
6667
- put: {
6668
- req: PlatformControllerUpdateData;
8413
+ '/api/v1/{region}/bean/external-account-links': {
8414
+ post: {
8415
+ req: ExternalAccountLinkControllerCreateData;
6669
8416
  res: {
6670
8417
  /**
6671
- * Platform updated successfully
8418
+ * Link created.
6672
8419
  */
6673
- 200: unknown;
8420
+ 201: ExternalAccountLinkResponseDto;
6674
8421
  /**
6675
- * Platform not found
8422
+ * beanAccountId not owned, or an active link already exists.
6676
8423
  */
6677
- 404: unknown;
8424
+ 422: unknown;
6678
8425
  };
6679
8426
  };
6680
- delete: {
6681
- req: PlatformControllerDeleteData;
8427
+ get: {
8428
+ req: ExternalAccountLinkControllerFindAllData;
6682
8429
  res: {
6683
8430
  /**
6684
- * Platform deleted successfully
6685
- */
6686
- 204: void;
6687
- /**
6688
- * Platform not found
8431
+ * Links retrieved.
6689
8432
  */
6690
- 404: unknown;
8433
+ 200: ExternalAccountLinkListResponseDto;
6691
8434
  };
6692
8435
  };
6693
8436
  };
6694
- '/api/v1/{region}/bean/import/provider/{providerName}/sync': {
6695
- post: {
6696
- req: ProviderSyncControllerSyncData;
8437
+ '/api/v1/{region}/bean/external-account-links/{id}': {
8438
+ get: {
8439
+ req: ExternalAccountLinkControllerFindOneData;
6697
8440
  res: {
6698
8441
  /**
6699
- * Sync completed successfully
6700
- */
6701
- 200: ProviderSyncResponseDto;
6702
- /**
6703
- * Invalid request data
8442
+ * Link retrieved.
6704
8443
  */
6705
- 400: unknown;
8444
+ 200: ExternalAccountLinkResponseDto;
6706
8445
  /**
6707
- * Missing or invalid authentication
8446
+ * Link not found or not owned by the user.
6708
8447
  */
6709
- 401: unknown;
8448
+ 422: unknown;
8449
+ };
8450
+ };
8451
+ delete: {
8452
+ req: ExternalAccountLinkControllerRemoveData;
8453
+ res: {
6710
8454
  /**
6711
- * Provider not supported
8455
+ * Link soft-deleted; historical transactions are unaffected.
6712
8456
  */
6713
- 404: unknown;
8457
+ 204: void;
6714
8458
  };
6715
8459
  };
6716
8460
  };
6717
- '/api/v1/{region}/bean/import/provider/supported': {
6718
- get: {
6719
- req: ProviderSyncControllerGetSupportedProvidersData;
8461
+ '/api/v1/{region}/bean/import/parser-telemetry': {
8462
+ post: {
8463
+ req: TelemetryControllerReportTelemetryData;
6720
8464
  res: {
6721
8465
  /**
6722
- * List of supported providers
8466
+ * Telemetry report received
6723
8467
  */
6724
- 200: SupportedProvidersResponseDto;
8468
+ 200: unknown;
6725
8469
  /**
6726
- * Missing or invalid authentication
8470
+ * Unauthorized
6727
8471
  */
6728
8472
  401: unknown;
6729
8473
  };
6730
8474
  };
6731
8475
  };
6732
- '/api/v1/{region}/bean/import/provider/{providerName}/supported': {
6733
- get: {
6734
- req: ProviderSyncControllerIsProviderSupportedData;
8476
+ '/api/v1/{region}/bean/import/parser-coverage-miss': {
8477
+ post: {
8478
+ req: TelemetryControllerReportCoverageMissData;
6735
8479
  res: {
6736
8480
  /**
6737
- * Provider support status
8481
+ * Coverage miss report received
6738
8482
  */
6739
8483
  200: unknown;
6740
8484
  /**
6741
- * Missing or invalid authentication
8485
+ * Unauthorized
6742
8486
  */
6743
8487
  401: unknown;
6744
8488
  };
6745
8489
  };
6746
8490
  };
6747
- '/api/v1/{region}/bean/import/parser-telemetry': {
6748
- post: {
6749
- req: TelemetryControllerReportTelemetryData;
8491
+ '/api/v1/{region}/bean/import/parser-coverage-metrics': {
8492
+ get: {
8493
+ req: TelemetryControllerGetCoverageMetricsData;
6750
8494
  res: {
6751
8495
  /**
6752
- * Telemetry report received
8496
+ * Coverage metrics
6753
8497
  */
6754
8498
  200: unknown;
6755
- /**
6756
- * Unauthorized
6757
- */
6758
- 401: unknown;
6759
8499
  };
6760
8500
  };
6761
8501
  };
@@ -6806,6 +8546,78 @@ type $OpenApiTs = {
6806
8546
  };
6807
8547
  };
6808
8548
  };
8549
+ '/api/v1/bean/platforms': {
8550
+ get: {
8551
+ res: {
8552
+ /**
8553
+ * List of platforms with binding and account counts
8554
+ */
8555
+ 200: unknown;
8556
+ };
8557
+ };
8558
+ post: {
8559
+ req: PlatformControllerCreateData;
8560
+ res: {
8561
+ /**
8562
+ * Platform created successfully
8563
+ */
8564
+ 201: unknown;
8565
+ /**
8566
+ * Platform already exists
8567
+ */
8568
+ 409: unknown;
8569
+ };
8570
+ };
8571
+ };
8572
+ '/api/v1/bean/platforms/list': {
8573
+ get: {
8574
+ res: {
8575
+ /**
8576
+ * List of platforms with user binding status
8577
+ */
8578
+ 200: Array<PlatformListItemDto>;
8579
+ };
8580
+ };
8581
+ };
8582
+ '/api/v1/bean/platforms/match': {
8583
+ get: {
8584
+ req: PlatformControllerMatchPlatformsData;
8585
+ res: {
8586
+ /**
8587
+ * Matching platforms with overall match type and truncation flag
8588
+ */
8589
+ 200: PlatformMatchResponseDto;
8590
+ };
8591
+ };
8592
+ };
8593
+ '/api/v1/bean/platforms/{id}': {
8594
+ put: {
8595
+ req: PlatformControllerUpdateData;
8596
+ res: {
8597
+ /**
8598
+ * Platform updated successfully
8599
+ */
8600
+ 200: unknown;
8601
+ /**
8602
+ * Platform not found
8603
+ */
8604
+ 404: unknown;
8605
+ };
8606
+ };
8607
+ delete: {
8608
+ req: PlatformControllerDeleteData;
8609
+ res: {
8610
+ /**
8611
+ * Platform deleted successfully
8612
+ */
8613
+ 204: void;
8614
+ /**
8615
+ * Platform not found
8616
+ */
8617
+ 404: unknown;
8618
+ };
8619
+ };
8620
+ };
6809
8621
  '/api/v1/{region}/dashboard/net-worth': {
6810
8622
  get: {
6811
8623
  req: DashboardControllerGetNetWorthData;
@@ -6828,7 +8640,7 @@ type $OpenApiTs = {
6828
8640
  /**
6829
8641
  * Accounts retrieved successfully. Response type depends on groupBy parameter.
6830
8642
  */
6831
- 200: AccountsResponseDto | AssetClassAccountsResponseDto;
8643
+ 200: AccountsResponseDto | AssetClassAccountsResponseDto | HoldingAssetClassCrossAccountResponseDto;
6832
8644
  /**
6833
8645
  * User not authenticated
6834
8646
  */
@@ -6855,31 +8667,16 @@ type $OpenApiTs = {
6855
8667
  };
6856
8668
  };
6857
8669
  };
6858
- '/api/v1/{region}/reporting/portfolio/trends': {
8670
+ '/api/v1/{region}/dashboard/expenses': {
6859
8671
  get: {
6860
- req: ReportingControllerGetPortfolioTrendsData;
6861
- res: {
6862
- /**
6863
- * Trends retrieved successfully
6864
- */
6865
- 200: PortfolioTrendsResponseDto;
6866
- /**
6867
- * User not authenticated
6868
- */
6869
- 401: unknown;
6870
- };
6871
- };
6872
- };
6873
- '/api/v1/{region}/reporting/snapshots/generate': {
6874
- post: {
6875
- req: ReportingControllerGenerateSnapshotData;
8672
+ req: DashboardControllerGetExpensesData;
6876
8673
  res: {
6877
8674
  /**
6878
- * Snapshot generated successfully
8675
+ * Expenses retrieved successfully
6879
8676
  */
6880
- 200: GenerateSnapshotResponse;
8677
+ 200: ExpensesByCategoryResponseDto;
6881
8678
  /**
6882
- * Invalid date format
8679
+ * Invalid groupBy or period
6883
8680
  */
6884
8681
  400: unknown;
6885
8682
  /**
@@ -6889,26 +8686,22 @@ type $OpenApiTs = {
6889
8686
  };
6890
8687
  };
6891
8688
  };
6892
- '/api/v1/{region}/reporting/snapshots/backfill': {
6893
- post: {
6894
- req: ReportingControllerBackfillSnapshotsData;
8689
+ '/api/v1/{region}/investment/holdings/pnl': {
8690
+ get: {
8691
+ req: HoldingPnlControllerGetHoldingPnlData;
6895
8692
  res: {
6896
8693
  /**
6897
- * Backfill completed successfully
8694
+ * Holding P&L retrieved successfully
6898
8695
  */
6899
- 200: BackfillSnapshotsResponse;
8696
+ 200: HoldingPnlResponseDto;
6900
8697
  /**
6901
- * Invalid date format or range
8698
+ * Invalid asOf format/value/future date, invalid accountId format, or unsupported method
6902
8699
  */
6903
8700
  400: unknown;
6904
8701
  /**
6905
8702
  * User not authenticated
6906
8703
  */
6907
8704
  401: unknown;
6908
- /**
6909
- * Backfill already in progress for this user
6910
- */
6911
- 409: unknown;
6912
8705
  };
6913
8706
  };
6914
8707
  };
@@ -6933,7 +8726,7 @@ type $OpenApiTs = {
6933
8726
  /**
6934
8727
  * Login successful
6935
8728
  */
6936
- 200: unknown;
8729
+ 200: AnonymousLoginResponseDto;
6937
8730
  /**
6938
8731
  * Invalid access token
6939
8732
  */
@@ -7101,7 +8894,7 @@ declare class BeanAccountsService {
7101
8894
  * @param data.type Filter by account type
7102
8895
  * @param data.status Filter by status
7103
8896
  * @param data.isCustom Filter by custom (user-created) accounts only
7104
- * @param data.search Search term for path or i18nKey
8897
+ * @param data.search Search term for account path
7105
8898
  * @param data.limit Maximum number of results
7106
8899
  * @param data.offset Number of results to skip
7107
8900
  * @returns AccountListResponseDto Accounts retrieved successfully
@@ -7161,6 +8954,17 @@ declare class BeanAccountsService {
7161
8954
  * @throws ApiError
7162
8955
  */
7163
8956
  static accountControllerReopen(data: AccountControllerReopenData): CancelablePromise<AccountControllerReopenResponse>;
8957
+ /**
8958
+ * Post an opening-balance transaction
8959
+ * 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.
8960
+ * @param data The data for the request.
8961
+ * @param data.id Account UUID
8962
+ * @param data.region Region code for tenant context
8963
+ * @param data.requestBody
8964
+ * @returns OpeningBalanceResultDto Opening-balance transaction created
8965
+ * @throws ApiError
8966
+ */
8967
+ static accountControllerAddOpeningBalance(data: AccountControllerAddOpeningBalanceData): CancelablePromise<AccountControllerAddOpeningBalanceResponse>;
7164
8968
  }
7165
8969
  declare class BeanTransactionsService {
7166
8970
  /**
@@ -7186,6 +8990,7 @@ declare class BeanTransactionsService {
7186
8990
  * @param data.status Filter by transaction status
7187
8991
  * @param data.search Search in narration and payee fields (max 200 chars)
7188
8992
  * @param data.accountId Filter by account ID (transactions with postings to this account)
8993
+ * @param data.category Filter by ADR-0075 functional category (Group segment); matches any posting to an Expenses/Income account whose derived Group segment equals this value
7189
8994
  * @returns TransactionListResponseDto Transaction list
7190
8995
  * @throws ApiError
7191
8996
  */
@@ -7201,6 +9006,17 @@ declare class BeanTransactionsService {
7201
9006
  * @throws ApiError
7202
9007
  */
7203
9008
  static transactionControllerCreateBatch(data: TransactionControllerCreateBatchData): CancelablePromise<TransactionControllerCreateBatchResponse>;
9009
+ /**
9010
+ * Correct (supersede) a transaction
9011
+ * Atomically voids the original (SUPERSEDED) and creates a replacement through the full validation pipeline.
9012
+ * @param data The data for the request.
9013
+ * @param data.id Original transaction ID to correct
9014
+ * @param data.region Region code for tenant context
9015
+ * @param data.requestBody
9016
+ * @returns TransactionDetailDto Corrected transaction created
9017
+ * @throws ApiError
9018
+ */
9019
+ static transactionControllerCorrect(data: TransactionControllerCorrectData): CancelablePromise<TransactionControllerCorrectResponse>;
7204
9020
  /**
7205
9021
  * Suggest transaction tags
7206
9022
  * Returns distinct tags from the user ACTIVE transactions, sorted by usage, for autocomplete. Optional q performs a case-insensitive prefix match.
@@ -7250,7 +9066,7 @@ declare class BeanBalancesService {
7250
9066
  * Query account balance
7251
9067
  * Calculate account balance at a specific date for a single currency
7252
9068
  * @param data The data for the request.
7253
- * @param data.account Account name (e.g., "Assets:Bank:Checking")
9069
+ * @param data.account Account name (e.g., "Assets:Checking")
7254
9070
  * @param data.region Region code for tenant context
7255
9071
  * @param data.date Date to calculate balance at (ISO 8601 format)
7256
9072
  * @param data.currency Currency to query (e.g., "USD", "CNY")
@@ -7367,7 +9183,7 @@ declare class ProviderSyncService {
7367
9183
  *
7368
9184
  * @param data The data for the request.
7369
9185
  * @param data.providerName Provider name
7370
- * @param data.region Region code
9186
+ * @param data.region Region code for tenant context
7371
9187
  * @param data.requestBody
7372
9188
  * @returns ProviderSyncResponseDto Sync completed successfully
7373
9189
  * @throws ApiError
@@ -7480,4 +9296,4 @@ type OpenAPIConfig = {
7480
9296
  };
7481
9297
  declare const OpenAPI: OpenAPIConfig;
7482
9298
 
7483
- 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 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 CashFlowResponseDto, 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 CreateAccountDto, type CreateCommodityDto, type CreatePayeeDto, type CreatePayeeProfileDto, type CreatePlatformDto, type CreatePostingDto, type CreateRecurringRuleDto, type CreateRuleFromTransactionDto, type CreateTransactionDto, type CreateTransactionRuleDto, type CurrencyBalanceDto, type DashboardControllerGetAccountsData, type DashboardControllerGetAccountsResponse, type DashboardControllerGetCashFlowData, type DashboardControllerGetCashFlowResponse, type DashboardControllerGetNetWorthData, type DashboardControllerGetNetWorthResponse, type DecisionOptionDto, type DeleteOwnUserDto, type EnterNowDto, 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 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 GenerateSnapshotBody, type GenerateSnapshotResponse, type HealthControllerCheckDatabaseResponse, type HealthControllerCheckOpenBbResponse, type HealthControllerCheckRedisResponse, type HealthControllerGetCircuitBreakersHealthResponse, type HealthControllerGetHealthResponse, type HealthControllerGetMetricsResponse, type HealthControllerResetCircuitBreakerData, type HealthControllerResetCircuitBreakerResponse, HealthService, 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 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 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 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 TelemetryControllerReportTelemetryData, type TelemetryControllerReportTelemetryResponse, type TemplateMetadataDto, type TemplateMetadataResponseDto, type TestRuleDto, type TestRuleResponseDto, type TimeSeriesPointDto, 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 UndoResultDto, type UpdateAccountDto, 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 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 paymentSource, type period, type source, type status, type status2, type status3, type status4, type suggestedFrequency, type type, type type2, type type3, type value, type viewMode };
9299
+ 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 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 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 };