@firela/api-types 0.0.0-canary.8c68ebbe → 0.0.0-canary.92035f3d

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.mts CHANGED
@@ -27,13 +27,9 @@ type CreateAccountDto = {
27
27
  */
28
28
  path: string;
29
29
  /**
30
- * Display name to distinguish accounts at the same path (default: "")
30
+ * Account open date (server defaults to today)
31
31
  */
32
- displayName?: string;
33
- /**
34
- * Account open date
35
- */
36
- openDate: string;
32
+ openDate?: string;
37
33
  /**
38
34
  * Allowed currencies (null = no restriction)
39
35
  */
@@ -50,18 +46,14 @@ type CreateAccountDto = {
50
46
  * Whether this is a custom (user-created) account
51
47
  */
52
48
  isCustom?: boolean;
53
- /**
54
- * i18n key for display name (overrides template)
55
- */
56
- i18nKey?: string;
57
49
  /**
58
50
  * Icon identifier (overrides template)
59
51
  */
60
52
  icon?: string;
61
53
  /**
62
- * Additional metadata
54
+ * Open directive metadata (NOT an opening-balance amount — use the opening-balance endpoint)
63
55
  */
64
- openMeta?: {
56
+ openDirectiveMeta?: {
65
57
  [key: string]: unknown;
66
58
  };
67
59
  /**
@@ -82,14 +74,14 @@ type AccountResponseDto = {
82
74
  * Account path (hierarchical, colon-separated)
83
75
  */
84
76
  path: string;
85
- /**
86
- * Display name distinguishing multiple accounts at the same path
87
- */
88
- displayName: string;
89
77
  /**
90
78
  * Account type (root segment)
91
79
  */
92
80
  type: 'Assets' | 'Liabilities' | 'Income' | 'Expenses' | 'Equity';
81
+ /**
82
+ * Account-level asset sub-class (product type, e.g. STOCK/DEPOSIT/CREDIT_CARD/PERSONAL_LOAN). Computed from the account path via the asset-classifier (ADR-0077). Null for non-asset accounts (Income/Expenses/Equity) or unmatched paths.
83
+ */
84
+ assetSubClass?: 'DEPOSIT' | 'CASH' | 'MONEY_MARKET_FUND' | 'STOCK' | 'ETF' | 'MUTUAL_FUND' | 'EQUITY_COMPENSATION' | 'GOVERNMENT_BOND' | 'CORPORATE_BOND' | 'BOND_FUND' | 'PRIMARY_RESIDENCE' | 'INVESTMENT_PROPERTY' | 'REIT' | 'GOLD' | 'SILVER' | 'PRECIOUS_METAL' | 'PRECIOUS_METAL_FUND' | 'COMMODITY' | 'COMMODITY_FUND' | 'CRYPTOCURRENCY' | 'RETIREMENT_ACCOUNT' | 'HEALTH_ACCOUNT' | 'EDUCATION_ACCOUNT' | 'INSURANCE' | 'PRIVATE_EQUITY' | 'HEDGE_FUND' | 'COLLECTIBLES' | 'MORTGAGE' | 'STUDENT_LOAN' | 'CREDIT_CARD' | 'PERSONAL_LOAN' | 'OTHER' | null;
93
85
  /**
94
86
  * Account status
95
87
  */
@@ -119,17 +111,17 @@ type AccountResponseDto = {
119
111
  */
120
112
  isCustom: boolean;
121
113
  /**
122
- * i18n key for display name
114
+ * Localized display name (ADR-0114, read-time projection)
123
115
  */
124
- i18nKey?: string;
116
+ displayName?: string;
125
117
  /**
126
118
  * Icon identifier
127
119
  */
128
120
  icon?: string;
129
121
  /**
130
- * Account metadata
122
+ * Open directive metadata (ADR-0115 Decision 9)
131
123
  */
132
- openMeta?: {
124
+ openDirectiveMeta?: {
133
125
  [key: string]: unknown;
134
126
  };
135
127
  /**
@@ -157,6 +149,10 @@ type AccountResponseDto = {
157
149
  * Account type (root segment)
158
150
  */
159
151
  type type = 'Assets' | 'Liabilities' | 'Income' | 'Expenses' | 'Equity';
152
+ /**
153
+ * Account-level asset sub-class (product type, e.g. STOCK/DEPOSIT/CREDIT_CARD/PERSONAL_LOAN). Computed from the account path via the asset-classifier (ADR-0077). Null for non-asset accounts (Income/Expenses/Equity) or unmatched paths.
154
+ */
155
+ type assetSubClass = 'DEPOSIT' | 'CASH' | 'MONEY_MARKET_FUND' | 'STOCK' | 'ETF' | 'MUTUAL_FUND' | 'EQUITY_COMPENSATION' | 'GOVERNMENT_BOND' | 'CORPORATE_BOND' | 'BOND_FUND' | 'PRIMARY_RESIDENCE' | 'INVESTMENT_PROPERTY' | 'REIT' | 'GOLD' | 'SILVER' | 'PRECIOUS_METAL' | 'PRECIOUS_METAL_FUND' | 'COMMODITY' | 'COMMODITY_FUND' | 'CRYPTOCURRENCY' | 'RETIREMENT_ACCOUNT' | 'HEALTH_ACCOUNT' | 'EDUCATION_ACCOUNT' | 'INSURANCE' | 'PRIVATE_EQUITY' | 'HEDGE_FUND' | 'COLLECTIBLES' | 'MORTGAGE' | 'STUDENT_LOAN' | 'CREDIT_CARD' | 'PERSONAL_LOAN' | 'OTHER';
160
156
  /**
161
157
  * Account status
162
158
  */
@@ -172,10 +168,6 @@ type AccountListResponseDto = {
172
168
  total: number;
173
169
  };
174
170
  type UpdateAccountDto = {
175
- /**
176
- * Display name to distinguish accounts at the same path
177
- */
178
- displayName?: string;
179
171
  /**
180
172
  * Allowed currencies (null = no restriction)
181
173
  */
@@ -184,18 +176,14 @@ type UpdateAccountDto = {
184
176
  * Booking method for cost basis
185
177
  */
186
178
  bookingMethod?: 'FIFO' | 'LIFO' | 'HIFO' | 'AVERAGE' | 'STRICT' | 'STRICT_WITH_SIZE' | 'NONE';
187
- /**
188
- * i18n key for display name
189
- */
190
- i18nKey?: string;
191
179
  /**
192
180
  * Icon identifier
193
181
  */
194
182
  icon?: string;
195
183
  /**
196
- * Additional metadata (merged with existing)
184
+ * Open directive metadata (merged with existing; NOT an opening-balance amount)
197
185
  */
198
- openMeta?: {
186
+ openDirectiveMeta?: {
199
187
  [key: string]: unknown;
200
188
  };
201
189
  /**
@@ -221,6 +209,26 @@ type ReopenAccountDto = {
221
209
  */
222
210
  reopenDate?: string;
223
211
  };
212
+ type CreateOpeningBalanceDto = {
213
+ /**
214
+ * Opening balance amount (non-negative)
215
+ */
216
+ amount: number;
217
+ /**
218
+ * Currency code
219
+ */
220
+ currency: string;
221
+ /**
222
+ * Opening-balance date (defaults to now)
223
+ */
224
+ date?: string;
225
+ };
226
+ type OpeningBalanceResultDto = {
227
+ /**
228
+ * Created opening-balance transaction id.
229
+ */
230
+ transactionId: string;
231
+ };
224
232
  type AccountStandardResponseDto = {
225
233
  /**
226
234
  * Account path (hierarchical, colon-separated)
@@ -230,10 +238,6 @@ type AccountStandardResponseDto = {
230
238
  * Account type in Beancount hierarchy
231
239
  */
232
240
  type: 'Assets' | 'Liabilities' | 'Income' | 'Expenses' | 'Equity';
233
- /**
234
- * i18n key for localized display name
235
- */
236
- i18nKey: string;
237
241
  /**
238
242
  * Short localized display name
239
243
  */
@@ -266,10 +270,6 @@ type AccountStandardListResponseDto = {
266
270
  region: string;
267
271
  };
268
272
  type TemplateMetadataDto = {
269
- /**
270
- * Whether this path can be extended
271
- */
272
- extendable: boolean;
273
273
  /**
274
274
  * Root account type
275
275
  */
@@ -779,6 +779,48 @@ type flag2 = 'CLEARED' | 'PENDING' | 'PADDING' | 'SUMMARIZE' | 'TRANSFER' | 'CON
779
779
  * Transaction status
780
780
  */
781
781
  type status2 = 'ACTIVE' | 'VOIDED' | 'SUPERSEDED';
782
+ type BalanceByCurrencyDto = {
783
+ /**
784
+ * ISO 4217 currency code
785
+ */
786
+ currency: string;
787
+ /**
788
+ * Balance amount
789
+ */
790
+ balance: string;
791
+ };
792
+ type ExchangeRateWarningDto = {
793
+ /**
794
+ * Warning type
795
+ */
796
+ type: string;
797
+ /**
798
+ * Currency without exchange rate
799
+ */
800
+ currency: string;
801
+ /**
802
+ * Total amount affected
803
+ */
804
+ totalAmount: string;
805
+ };
806
+ type TransactionListSummaryDto = {
807
+ /**
808
+ * Partial converted total in base currency (rated currencies only, raw Beancount sign). When warnings is non-empty this excludes currencies missing an FX rate; may be "0.00" if ALL non-base currencies lack a rate. Converted at the dateTo (or current) available rate.
809
+ */
810
+ totalAmount: string;
811
+ /**
812
+ * Base currency (ISO 4217)
813
+ */
814
+ currency: string;
815
+ /**
816
+ * Raw (unconverted) balance per currency
817
+ */
818
+ balanceByCurrency: Array<BalanceByCurrencyDto>;
819
+ /**
820
+ * Currencies missing an FX rate (omitted when empty)
821
+ */
822
+ warnings?: Array<ExchangeRateWarningDto>;
823
+ };
782
824
  type TransactionListResponseDto = {
783
825
  /**
784
826
  * List of transactions
@@ -796,6 +838,10 @@ type TransactionListResponseDto = {
796
838
  * Number of items skipped
797
839
  */
798
840
  offset: number;
841
+ /**
842
+ * Amount summary for the full filtered set (#514). Present only when the request has a single account OR category viewpoint; omitted for search-only / plain-list / dual-perspective requests.
843
+ */
844
+ summary?: TransactionListSummaryDto;
799
845
  };
800
846
  type TagSuggestionDto = {
801
847
  /**
@@ -1642,6 +1688,104 @@ type UpdateCommodityDto = {
1642
1688
  [key: string]: unknown;
1643
1689
  };
1644
1690
  };
1691
+ type CreateBeanPriceDto = {
1692
+ /**
1693
+ * Currency being priced (e.g., USD, AAPL, BTC)
1694
+ */
1695
+ currency: string;
1696
+ /**
1697
+ * Quote currency (pricing currency, e.g., CNY, EUR)
1698
+ */
1699
+ quoteCurrency: string;
1700
+ /**
1701
+ * Price amount (MUST be >= 0 per Beancount spec, supports up to 15 decimal places). Zero allowed for conversion entries, negative strictly prohibited.
1702
+ */
1703
+ amount: number;
1704
+ /**
1705
+ * Price date (ISO 8601 format)
1706
+ */
1707
+ date: string;
1708
+ /**
1709
+ * Metadata (validated by Zod schema, max field lengths enforced)
1710
+ */
1711
+ metadata?: {
1712
+ [key: string]: unknown;
1713
+ };
1714
+ };
1715
+ type PriceResponseDto = {
1716
+ /**
1717
+ * Unique identifier
1718
+ */
1719
+ id: string;
1720
+ /**
1721
+ * User ID (owner of the price)
1722
+ */
1723
+ userId: string;
1724
+ /**
1725
+ * Currency being priced (e.g., USD, AAPL, BTC)
1726
+ */
1727
+ currency: string;
1728
+ /**
1729
+ * Quote currency (pricing currency, e.g., USD, CNY)
1730
+ */
1731
+ quoteCurrency: string;
1732
+ /**
1733
+ * Price amount (corresponds to Beancount Amount.number). Supports up to 15 decimal places.
1734
+ */
1735
+ amount: number;
1736
+ /**
1737
+ * Price date (ISO 8601 format). Represents the date this price was valid.
1738
+ */
1739
+ date: string;
1740
+ /**
1741
+ * Metadata (corresponds to Beancount meta field). Contains source, confidence, note, etc.
1742
+ */
1743
+ meta: {
1744
+ [key: string]: unknown;
1745
+ };
1746
+ /**
1747
+ * Creation timestamp
1748
+ */
1749
+ createdAt: string;
1750
+ /**
1751
+ * Last update timestamp
1752
+ */
1753
+ updatedAt: string;
1754
+ };
1755
+ type PriceListResponseDto = {
1756
+ /**
1757
+ * List of prices
1758
+ */
1759
+ items: Array<PriceResponseDto>;
1760
+ /**
1761
+ * Total number of prices
1762
+ */
1763
+ total: number;
1764
+ };
1765
+ type UpdateBeanPriceDto = {
1766
+ /**
1767
+ * Currency being priced
1768
+ */
1769
+ currency?: string;
1770
+ /**
1771
+ * Quote currency (pricing currency)
1772
+ */
1773
+ quoteCurrency?: string;
1774
+ /**
1775
+ * Price amount (MUST be >= 0 per Beancount spec)
1776
+ */
1777
+ amount?: number;
1778
+ /**
1779
+ * Price date (ISO 8601 format)
1780
+ */
1781
+ date?: string;
1782
+ /**
1783
+ * Metadata
1784
+ */
1785
+ metadata?: {
1786
+ [key: string]: unknown;
1787
+ };
1788
+ };
1645
1789
  type CreateRecurringRuleDto = {
1646
1790
  /**
1647
1791
  * Rule name (unique per user)
@@ -2239,356 +2383,198 @@ type ForecastResponseDto = {
2239
2383
  */
2240
2384
  periodEnd: string;
2241
2385
  };
2242
- type CreateTransactionRuleDto = {
2243
- name: string;
2244
- description?: string;
2245
- narrationKeywords?: Array<unknown[]>;
2246
- payeeKeywords?: Array<unknown[]>;
2247
- categoryKeywords?: Array<unknown[]>;
2386
+ type CurrencyBalanceDto = {
2248
2387
  /**
2249
- * Payment method keywords (e.g., HuaBei, YuEBao)
2388
+ * ISO 4217 currency code
2250
2389
  */
2251
- methodKeywords?: Array<unknown[]>;
2390
+ currency: string;
2252
2391
  /**
2253
- * Destination account for expenses/income (e.g., Expenses:Food:Coffee)
2392
+ * Balance amount
2254
2393
  */
2255
- categoryAccount?: string;
2256
- matchLogic: 'OR' | 'AND';
2394
+ balance: string;
2395
+ };
2396
+ type TimeSeriesPointDto = {
2257
2397
  /**
2258
- * Minimum transaction amount (inclusive)
2398
+ * Date in YYYY-MM-DD format
2259
2399
  */
2260
- amountMin?: number;
2400
+ date: string;
2261
2401
  /**
2262
- * Maximum transaction amount (inclusive)
2402
+ * Value at this date (in base currency)
2263
2403
  */
2264
- amountMax?: number;
2265
- priority: number;
2266
- additionalTags?: Array<unknown[]>;
2267
- additionalMetadata?: {
2404
+ value: string;
2405
+ /**
2406
+ * Change from previous point
2407
+ */
2408
+ change?: {
2268
2409
  [key: string]: unknown;
2269
2410
  };
2270
2411
  /**
2271
- * If true, update existing rule with matching payeeKeywords[0] instead of creating new rule
2412
+ * Total assets at this date (in base currency)
2272
2413
  */
2273
- upsertByPayee?: boolean;
2274
- };
2275
- type matchLogic = 'OR' | 'AND';
2276
- type AmountRangeDto = {
2414
+ assets?: string;
2277
2415
  /**
2278
- * Minimum amount
2416
+ * Total liabilities at this date (in base currency)
2279
2417
  */
2280
- min?: number;
2418
+ liabilities?: string;
2281
2419
  /**
2282
- * Maximum amount
2420
+ * Multi-currency breakdown for this point
2283
2421
  */
2284
- max?: number;
2422
+ byCurrency?: Array<CurrencyBalanceDto>;
2285
2423
  };
2286
- type TransactionRuleResponseDto = {
2424
+ type TrendSummaryDto = {
2287
2425
  /**
2288
- * Rule ID
2426
+ * Value at start of period
2289
2427
  */
2290
- id: string;
2428
+ startValue: string;
2291
2429
  /**
2292
- * Rule name
2430
+ * Value at end of period
2293
2431
  */
2294
- name: string;
2432
+ endValue: string;
2295
2433
  /**
2296
- * Rule description
2434
+ * Total change over period
2297
2435
  */
2298
- description?: string;
2436
+ totalChange: string;
2299
2437
  /**
2300
- * Keywords to match in transaction narration
2438
+ * Total change percentage
2301
2439
  */
2302
- narrationKeywords: Array<string>;
2440
+ totalChangePercentage: string;
2441
+ };
2442
+ type MultiCurrencyPointDto = {
2303
2443
  /**
2304
- * Keywords to match in payee name
2444
+ * Date in YYYY-MM-DD format
2305
2445
  */
2306
- payeeKeywords: Array<string>;
2446
+ date: string;
2307
2447
  /**
2308
- * Keywords to match in category
2448
+ * Balances by currency
2309
2449
  */
2310
- categoryKeywords: Array<string>;
2450
+ byCurrency: Array<CurrencyBalanceDto>;
2451
+ };
2452
+ type PortfolioTrendsResponseDto = {
2311
2453
  /**
2312
- * Keywords to match in payment method
2454
+ * Time series data points
2313
2455
  */
2314
- methodKeywords: Array<string>;
2315
- /**
2316
- * Destination account for categorization
2317
- */
2318
- categoryAccount?: string;
2319
- /**
2320
- * Keyword matching logic
2321
- */
2322
- matchLogic: 'OR' | 'AND';
2323
- /**
2324
- * Amount range for matching
2325
- */
2326
- amountRange?: AmountRangeDto;
2327
- /**
2328
- * Rule priority (0-1000, higher = first match)
2329
- */
2330
- priority: number;
2331
- /**
2332
- * Whether the rule is enabled
2333
- */
2334
- enabled: boolean;
2335
- /**
2336
- * Learning source: NLP, REVIEW_CENTER, or null for manual
2337
- */
2338
- learningSource?: 'NLP' | 'REVIEW_CENTER' | null;
2339
- /**
2340
- * Whether auto-apply is enabled for this rule
2341
- */
2342
- autoApplyEnabled: boolean;
2343
- /**
2344
- * Number of confirmations for NLP-learned rules
2345
- */
2346
- confirmationCount: number;
2347
- /**
2348
- * Additional tags
2349
- */
2350
- additionalTags: Array<string>;
2456
+ series: Array<TimeSeriesPointDto>;
2351
2457
  /**
2352
- * Additional metadata
2458
+ * Period summary
2353
2459
  */
2354
- additionalMetadata?: {
2355
- [key: string]: string;
2356
- };
2460
+ summary: TrendSummaryDto;
2357
2461
  /**
2358
- * Created timestamp
2462
+ * Period requested
2359
2463
  */
2360
- createdAt: string;
2464
+ period: string;
2361
2465
  /**
2362
- * Updated timestamp
2466
+ * Data granularity
2363
2467
  */
2364
- updatedAt: string;
2365
- };
2366
- /**
2367
- * Learning source: NLP, REVIEW_CENTER, or null for manual
2368
- */
2369
- type learningSource = 'NLP' | 'REVIEW_CENTER';
2370
- type TransactionRuleListResponseDto = {
2371
- data: Array<TransactionRuleResponseDto>;
2468
+ granularity: string;
2372
2469
  /**
2373
- * Total count of rules
2470
+ * Base currency for converted values
2374
2471
  */
2375
- total: number;
2472
+ currency: string;
2376
2473
  /**
2377
- * Results per page
2474
+ * Multi-currency time series (each point has currency breakdown)
2378
2475
  */
2379
- limit: number;
2476
+ byCurrency?: Array<MultiCurrencyPointDto>;
2380
2477
  /**
2381
- * Pagination offset
2478
+ * Exchange rate warnings
2382
2479
  */
2383
- offset: number;
2480
+ warnings?: Array<ExchangeRateWarningDto>;
2384
2481
  };
2385
- type ValidateRuleDto = {
2386
- name: string;
2387
- description?: string;
2388
- narrationKeywords?: Array<unknown[]>;
2389
- payeeKeywords?: Array<unknown[]>;
2390
- categoryKeywords?: Array<unknown[]>;
2391
- /**
2392
- * Payment method keywords (e.g., HuaBei, YuEBao)
2393
- */
2394
- methodKeywords?: Array<unknown[]>;
2482
+ type CashFlowPointDto = {
2395
2483
  /**
2396
- * Destination account for expenses/income (e.g., Expenses:Food:Coffee)
2484
+ * Month key (YYYY-MM)
2397
2485
  */
2398
- categoryAccount?: string;
2399
- matchLogic: 'OR' | 'AND';
2486
+ month: string;
2400
2487
  /**
2401
- * Minimum transaction amount (inclusive)
2488
+ * Income in base currency (absolute, converted)
2402
2489
  */
2403
- amountMin?: number;
2490
+ income: string;
2404
2491
  /**
2405
- * Maximum transaction amount (inclusive)
2492
+ * Expense in base currency (absolute, converted)
2406
2493
  */
2407
- amountMax?: number;
2408
- priority: number;
2409
- additionalTags?: Array<unknown[]>;
2410
- additionalMetadata?: {
2411
- [key: string]: unknown;
2412
- };
2494
+ expense: string;
2413
2495
  /**
2414
- * If true, update existing rule with matching payeeKeywords[0] instead of creating new rule
2496
+ * netSavings = income expense (savings positive)
2415
2497
  */
2416
- upsertByPayee?: boolean;
2498
+ netSavings: string;
2417
2499
  };
2418
- type ValidateRuleResponseDto = {
2419
- /**
2420
- * Whether the rule configuration is valid
2421
- */
2422
- valid: boolean;
2500
+ type CashFlowTrendSummaryDto = {
2423
2501
  /**
2424
- * List of validation errors (empty if valid)
2502
+ * Total income across the period
2425
2503
  */
2426
- errors: Array<unknown[]>;
2504
+ totalIncome: string;
2427
2505
  /**
2428
- * List of validation warnings (non-blocking issues)
2506
+ * Total expense across the period
2429
2507
  */
2430
- warnings: Array<unknown[]>;
2431
- };
2432
- type BulkCreateRulesDto = {
2508
+ totalExpense: string;
2433
2509
  /**
2434
- * Array of rules to import
2510
+ * income expense across the period
2435
2511
  */
2436
- rules: Array<unknown[]>;
2512
+ totalNetSavings: string;
2437
2513
  /**
2438
- * Conflict handling strategy: skip (default) ignores duplicates, replace soft-deletes existing rule
2514
+ * totalNetSavings divided by the window length (N months, incl. zero-filled)
2439
2515
  */
2440
- conflictStrategy: 'replace' | 'skip';
2516
+ averageMonthlyNetSavings: string;
2441
2517
  };
2442
- /**
2443
- * Conflict handling strategy: skip (default) ignores duplicates, replace soft-deletes existing rule
2444
- */
2445
- type conflictStrategy = 'replace' | 'skip';
2446
- type BulkCreateRulesResponseDto = {
2447
- /**
2448
- * Number of successfully created rules
2449
- */
2450
- successCount: number;
2451
- /**
2452
- * Number of failed rules
2453
- */
2454
- failureCount: number;
2518
+ type CashFlowTrendsResponseDto = {
2455
2519
  /**
2456
- * Error details for failed rules
2520
+ * Monthly cash-flow series (fixed N-month window, zero-filled)
2457
2521
  */
2458
- errors: Array<{
2459
- index?: number;
2460
- message?: string;
2461
- }>;
2522
+ series: Array<CashFlowPointDto>;
2462
2523
  /**
2463
- * IDs of successfully created rules
2524
+ * Period totals
2464
2525
  */
2465
- createdRuleIds: Array<string>;
2466
- };
2467
- type ExportRulesResponseDto = {
2526
+ summary: CashFlowTrendSummaryDto;
2468
2527
  /**
2469
- * Export timestamp
2528
+ * Period requested
2470
2529
  */
2471
- exportedAt: string;
2530
+ period: string;
2472
2531
  /**
2473
- * User ID
2532
+ * Data granularity (v1 returns month buckets)
2474
2533
  */
2475
- userId: string;
2534
+ granularity: string;
2476
2535
  /**
2477
- * Number of exported rules
2536
+ * Base currency for converted values
2478
2537
  */
2479
- ruleCount: number;
2538
+ currency: string;
2480
2539
  /**
2481
- * Exported rules
2540
+ * Exchange rate warnings (e.g. missing rate for a currency)
2482
2541
  */
2483
- rules: unknown[];
2542
+ warnings?: Array<ExchangeRateWarningDto>;
2484
2543
  };
2485
- type RuleStatisticsResponseDto = {
2486
- /**
2487
- * Statistics time period
2488
- */
2489
- period: '7d' | '30d' | '90d';
2490
- /**
2491
- * Total number of rules
2492
- */
2493
- totalRules: number;
2494
- /**
2495
- * Number of rules with at least one match
2496
- */
2497
- rulesWithMatches: number;
2498
- /**
2499
- * Total number of matches across all rules
2500
- */
2501
- totalMatches: number;
2502
- /**
2503
- * Average confidence score across all matches
2504
- */
2505
- averageConfidence: number;
2544
+ type GenerateSnapshotBody = unknown;
2545
+ type GenerateSnapshotResponse = unknown;
2546
+ type BackfillSnapshotsBody = unknown;
2547
+ type BackfillSnapshotsResponse = unknown;
2548
+ type DeleteOwnUserDto = {
2506
2549
  /**
2507
- * Per-rule statistics
2550
+ * Access token for user verification
2508
2551
  */
2509
- ruleStats: Array<{
2510
- ruleId?: string;
2511
- ruleName?: string;
2512
- matchCount?: number;
2513
- averageConfidence?: number;
2514
- }>;
2552
+ accessToken: string;
2515
2553
  };
2516
- /**
2517
- * Statistics time period
2518
- */
2519
- type period = '7d' | '30d' | '90d';
2520
- type UpdateTransactionRuleDto = {
2521
- name?: string;
2522
- description?: string;
2523
- narrationKeywords?: Array<unknown[]>;
2524
- payeeKeywords?: Array<unknown[]>;
2525
- categoryKeywords?: Array<unknown[]>;
2526
- /**
2527
- * Payment method keywords (e.g., HuaBei, YuEBao)
2528
- */
2529
- methodKeywords?: Array<unknown[]>;
2530
- /**
2531
- * Destination account for expenses/income (e.g., Expenses:Food:Coffee)
2532
- */
2533
- categoryAccount?: string;
2534
- matchLogic?: 'OR' | 'AND';
2535
- /**
2536
- * Minimum transaction amount (inclusive)
2537
- */
2538
- amountMin?: number;
2539
- /**
2540
- * Maximum transaction amount (inclusive)
2541
- */
2542
- amountMax?: number;
2543
- priority?: number;
2554
+ type SignupDto = {
2544
2555
  /**
2545
- * Enable or disable the rule
2556
+ * Cloudflare Turnstile verification token (optional when Turnstile disabled)
2546
2557
  */
2547
- enabled?: boolean;
2548
- additionalTags?: Array<unknown[]>;
2549
- additionalMetadata?: {
2550
- [key: string]: unknown;
2551
- };
2552
- };
2553
- type TestRuleDto = {
2554
- narration: string;
2555
- payee?: string;
2556
- categoryAccount?: string;
2557
- amount?: number;
2558
- currency?: string;
2558
+ turnstileToken?: string;
2559
2559
  };
2560
- type TestRuleResponseDto = {
2561
- /**
2562
- * Rule ID that was tested
2563
- */
2564
- ruleId: string;
2565
- /**
2566
- * Whether the rule matched the test data
2567
- */
2568
- matches: boolean;
2569
- /**
2570
- * Match confidence score (0-1)
2571
- */
2572
- confidence: number;
2560
+ type SignupResponseDto = {
2573
2561
  /**
2574
- * Details of which fields matched
2562
+ * JWT auth token
2575
2563
  */
2576
- matchDetails: {
2577
- [key: string]: unknown;
2578
- };
2579
- };
2580
- type DeleteOwnUserDto = {
2564
+ authToken: string;
2581
2565
  /**
2582
- * Access token for user verification
2566
+ * Auto-generated access token
2583
2567
  */
2584
2568
  accessToken: string;
2585
- };
2586
- type SignupDto = {
2587
2569
  /**
2588
- * Cloudflare Turnstile verification token (optional when Turnstile disabled)
2570
+ * Assigned user role
2589
2571
  */
2590
- turnstileToken?: string;
2572
+ role: 'USER' | 'ADMIN' | 'DEMO' | 'INACTIVE' | 'PAID' | 'OPS';
2591
2573
  };
2574
+ /**
2575
+ * Assigned user role
2576
+ */
2577
+ type role = 'USER' | 'ADMIN' | 'DEMO' | 'INACTIVE' | 'PAID' | 'OPS';
2592
2578
  type UpdateUserSettingDto = {
2593
2579
  /**
2594
2580
  * Security ID
@@ -2689,7 +2675,345 @@ type UpdatePropertyDto = {
2689
2675
  */
2690
2676
  value: string;
2691
2677
  };
2692
- type CreateBeanEventDto = {
2678
+ type CreateTransactionRuleDto = {
2679
+ name: string;
2680
+ description?: string;
2681
+ narrationKeywords?: Array<unknown[]>;
2682
+ payeeKeywords?: Array<unknown[]>;
2683
+ categoryKeywords?: Array<unknown[]>;
2684
+ /**
2685
+ * Payment method keywords (e.g., HuaBei, YuEBao)
2686
+ */
2687
+ methodKeywords?: Array<unknown[]>;
2688
+ /**
2689
+ * Destination account for expenses/income (e.g., Expenses:Food:Coffee)
2690
+ */
2691
+ categoryAccount?: string;
2692
+ matchLogic: 'OR' | 'AND';
2693
+ /**
2694
+ * Minimum transaction amount (inclusive)
2695
+ */
2696
+ amountMin?: number;
2697
+ /**
2698
+ * Maximum transaction amount (inclusive)
2699
+ */
2700
+ amountMax?: number;
2701
+ priority: number;
2702
+ additionalTags?: Array<unknown[]>;
2703
+ additionalMetadata?: {
2704
+ [key: string]: unknown;
2705
+ };
2706
+ /**
2707
+ * If true, update existing rule with matching payeeKeywords[0] instead of creating new rule
2708
+ */
2709
+ upsertByPayee?: boolean;
2710
+ };
2711
+ type matchLogic = 'OR' | 'AND';
2712
+ type AmountRangeDto = {
2713
+ /**
2714
+ * Minimum amount
2715
+ */
2716
+ min?: number;
2717
+ /**
2718
+ * Maximum amount
2719
+ */
2720
+ max?: number;
2721
+ };
2722
+ type TransactionRuleResponseDto = {
2723
+ /**
2724
+ * Rule ID
2725
+ */
2726
+ id: string;
2727
+ /**
2728
+ * Rule name
2729
+ */
2730
+ name: string;
2731
+ /**
2732
+ * Rule description
2733
+ */
2734
+ description?: string;
2735
+ /**
2736
+ * Keywords to match in transaction narration
2737
+ */
2738
+ narrationKeywords: Array<string>;
2739
+ /**
2740
+ * Keywords to match in payee name
2741
+ */
2742
+ payeeKeywords: Array<string>;
2743
+ /**
2744
+ * Keywords to match in category
2745
+ */
2746
+ categoryKeywords: Array<string>;
2747
+ /**
2748
+ * Keywords to match in payment method
2749
+ */
2750
+ methodKeywords: Array<string>;
2751
+ /**
2752
+ * Destination account for categorization
2753
+ */
2754
+ categoryAccount?: string;
2755
+ /**
2756
+ * Keyword matching logic
2757
+ */
2758
+ matchLogic: 'OR' | 'AND';
2759
+ /**
2760
+ * Amount range for matching
2761
+ */
2762
+ amountRange?: AmountRangeDto;
2763
+ /**
2764
+ * Rule priority (0-1000, higher = first match)
2765
+ */
2766
+ priority: number;
2767
+ /**
2768
+ * Whether the rule is enabled
2769
+ */
2770
+ enabled: boolean;
2771
+ /**
2772
+ * Learning source: NLP, REVIEW_CENTER, or null for manual
2773
+ */
2774
+ learningSource?: 'NLP' | 'REVIEW_CENTER' | null;
2775
+ /**
2776
+ * Whether auto-apply is enabled for this rule
2777
+ */
2778
+ autoApplyEnabled: boolean;
2779
+ /**
2780
+ * Number of confirmations for NLP-learned rules
2781
+ */
2782
+ confirmationCount: number;
2783
+ /**
2784
+ * Additional tags
2785
+ */
2786
+ additionalTags: Array<string>;
2787
+ /**
2788
+ * Additional metadata
2789
+ */
2790
+ additionalMetadata?: {
2791
+ [key: string]: string;
2792
+ };
2793
+ /**
2794
+ * Created timestamp
2795
+ */
2796
+ createdAt: string;
2797
+ /**
2798
+ * Updated timestamp
2799
+ */
2800
+ updatedAt: string;
2801
+ };
2802
+ /**
2803
+ * Learning source: NLP, REVIEW_CENTER, or null for manual
2804
+ */
2805
+ type learningSource = 'NLP' | 'REVIEW_CENTER';
2806
+ type TransactionRuleListResponseDto = {
2807
+ data: Array<TransactionRuleResponseDto>;
2808
+ /**
2809
+ * Total count of rules
2810
+ */
2811
+ total: number;
2812
+ /**
2813
+ * Results per page
2814
+ */
2815
+ limit: number;
2816
+ /**
2817
+ * Pagination offset
2818
+ */
2819
+ offset: number;
2820
+ };
2821
+ type ValidateRuleDto = {
2822
+ name: string;
2823
+ description?: string;
2824
+ narrationKeywords?: Array<unknown[]>;
2825
+ payeeKeywords?: Array<unknown[]>;
2826
+ categoryKeywords?: Array<unknown[]>;
2827
+ /**
2828
+ * Payment method keywords (e.g., HuaBei, YuEBao)
2829
+ */
2830
+ methodKeywords?: Array<unknown[]>;
2831
+ /**
2832
+ * Destination account for expenses/income (e.g., Expenses:Food:Coffee)
2833
+ */
2834
+ categoryAccount?: string;
2835
+ matchLogic: 'OR' | 'AND';
2836
+ /**
2837
+ * Minimum transaction amount (inclusive)
2838
+ */
2839
+ amountMin?: number;
2840
+ /**
2841
+ * Maximum transaction amount (inclusive)
2842
+ */
2843
+ amountMax?: number;
2844
+ priority: number;
2845
+ additionalTags?: Array<unknown[]>;
2846
+ additionalMetadata?: {
2847
+ [key: string]: unknown;
2848
+ };
2849
+ /**
2850
+ * If true, update existing rule with matching payeeKeywords[0] instead of creating new rule
2851
+ */
2852
+ upsertByPayee?: boolean;
2853
+ };
2854
+ type ValidateRuleResponseDto = {
2855
+ /**
2856
+ * Whether the rule configuration is valid
2857
+ */
2858
+ valid: boolean;
2859
+ /**
2860
+ * List of validation errors (empty if valid)
2861
+ */
2862
+ errors: Array<unknown[]>;
2863
+ /**
2864
+ * List of validation warnings (non-blocking issues)
2865
+ */
2866
+ warnings: Array<unknown[]>;
2867
+ };
2868
+ type BulkCreateRulesDto = {
2869
+ /**
2870
+ * Array of rules to import
2871
+ */
2872
+ rules: Array<unknown[]>;
2873
+ /**
2874
+ * Conflict handling strategy: skip (default) ignores duplicates, replace soft-deletes existing rule
2875
+ */
2876
+ conflictStrategy: 'replace' | 'skip';
2877
+ };
2878
+ /**
2879
+ * Conflict handling strategy: skip (default) ignores duplicates, replace soft-deletes existing rule
2880
+ */
2881
+ type conflictStrategy = 'replace' | 'skip';
2882
+ type BulkCreateRulesResponseDto = {
2883
+ /**
2884
+ * Number of successfully created rules
2885
+ */
2886
+ successCount: number;
2887
+ /**
2888
+ * Number of failed rules
2889
+ */
2890
+ failureCount: number;
2891
+ /**
2892
+ * Error details for failed rules
2893
+ */
2894
+ errors: Array<{
2895
+ index?: number;
2896
+ message?: string;
2897
+ }>;
2898
+ /**
2899
+ * IDs of successfully created rules
2900
+ */
2901
+ createdRuleIds: Array<string>;
2902
+ };
2903
+ type ExportRulesResponseDto = {
2904
+ /**
2905
+ * Export timestamp
2906
+ */
2907
+ exportedAt: string;
2908
+ /**
2909
+ * User ID
2910
+ */
2911
+ userId: string;
2912
+ /**
2913
+ * Number of exported rules
2914
+ */
2915
+ ruleCount: number;
2916
+ /**
2917
+ * Exported rules
2918
+ */
2919
+ rules: unknown[];
2920
+ };
2921
+ type RuleStatisticsResponseDto = {
2922
+ /**
2923
+ * Statistics time period
2924
+ */
2925
+ period: '7d' | '30d' | '90d';
2926
+ /**
2927
+ * Total number of rules
2928
+ */
2929
+ totalRules: number;
2930
+ /**
2931
+ * Number of rules with at least one match
2932
+ */
2933
+ rulesWithMatches: number;
2934
+ /**
2935
+ * Total number of matches across all rules
2936
+ */
2937
+ totalMatches: number;
2938
+ /**
2939
+ * Average confidence score across all matches
2940
+ */
2941
+ averageConfidence: number;
2942
+ /**
2943
+ * Per-rule statistics
2944
+ */
2945
+ ruleStats: Array<{
2946
+ ruleId?: string;
2947
+ ruleName?: string;
2948
+ matchCount?: number;
2949
+ averageConfidence?: number;
2950
+ }>;
2951
+ };
2952
+ /**
2953
+ * Statistics time period
2954
+ */
2955
+ type period = '7d' | '30d' | '90d';
2956
+ type UpdateTransactionRuleDto = {
2957
+ name?: string;
2958
+ description?: string;
2959
+ narrationKeywords?: Array<unknown[]>;
2960
+ payeeKeywords?: Array<unknown[]>;
2961
+ categoryKeywords?: Array<unknown[]>;
2962
+ /**
2963
+ * Payment method keywords (e.g., HuaBei, YuEBao)
2964
+ */
2965
+ methodKeywords?: Array<unknown[]>;
2966
+ /**
2967
+ * Destination account for expenses/income (e.g., Expenses:Food:Coffee)
2968
+ */
2969
+ categoryAccount?: string;
2970
+ matchLogic?: 'OR' | 'AND';
2971
+ /**
2972
+ * Minimum transaction amount (inclusive)
2973
+ */
2974
+ amountMin?: number;
2975
+ /**
2976
+ * Maximum transaction amount (inclusive)
2977
+ */
2978
+ amountMax?: number;
2979
+ priority?: number;
2980
+ /**
2981
+ * Enable or disable the rule
2982
+ */
2983
+ enabled?: boolean;
2984
+ additionalTags?: Array<unknown[]>;
2985
+ additionalMetadata?: {
2986
+ [key: string]: unknown;
2987
+ };
2988
+ };
2989
+ type TestRuleDto = {
2990
+ narration: string;
2991
+ payee?: string;
2992
+ categoryAccount?: string;
2993
+ amount?: number;
2994
+ currency?: string;
2995
+ };
2996
+ type TestRuleResponseDto = {
2997
+ /**
2998
+ * Rule ID that was tested
2999
+ */
3000
+ ruleId: string;
3001
+ /**
3002
+ * Whether the rule matched the test data
3003
+ */
3004
+ matches: boolean;
3005
+ /**
3006
+ * Match confidence score (0-1)
3007
+ */
3008
+ confidence: number;
3009
+ /**
3010
+ * Details of which fields matched
3011
+ */
3012
+ matchDetails: {
3013
+ [key: string]: unknown;
3014
+ };
3015
+ };
3016
+ type CreateBeanEventDto = {
2693
3017
  /**
2694
3018
  * Life event date (ISO 8601)
2695
3019
  */
@@ -2701,79 +3025,223 @@ type CreateBeanEventDto = {
2701
3025
  /**
2702
3026
  * Life event description. Empty string is a VALID value (distinct from absence).
2703
3027
  */
2704
- description: string;
3028
+ description: string;
3029
+ /**
3030
+ * Product-side metadata (lives in BeanEvent.meta JSON, never in engine Event fields)
3031
+ */
3032
+ meta?: {
3033
+ [key: string]: unknown;
3034
+ };
3035
+ };
3036
+ type EventResponseDto = {
3037
+ /**
3038
+ * Unique identifier
3039
+ */
3040
+ id: string;
3041
+ /**
3042
+ * User ID (owner of the life event)
3043
+ */
3044
+ userId: string;
3045
+ /**
3046
+ * Life event date (ISO 8601 format)
3047
+ */
3048
+ date: string;
3049
+ /**
3050
+ * Life event type (user-defined, e.g., "employer", "location")
3051
+ */
3052
+ type: string;
3053
+ /**
3054
+ * Life event description. May be an empty string (a valid value distinct from absence).
3055
+ */
3056
+ description: string;
3057
+ /**
3058
+ * Product-side metadata (free-form JSON)
3059
+ */
3060
+ meta: {
3061
+ [key: string]: unknown;
3062
+ };
3063
+ /**
3064
+ * Creation timestamp
3065
+ */
3066
+ createdAt: string;
3067
+ /**
3068
+ * Last update timestamp. Also emitted as the ETag response header for If-Match optimistic concurrency.
3069
+ */
3070
+ updatedAt: string;
3071
+ };
3072
+ type EventListResponseDto = {
3073
+ /**
3074
+ * List of life events
3075
+ */
3076
+ items: Array<EventResponseDto>;
3077
+ /**
3078
+ * Total number of life events matching the query
3079
+ */
3080
+ total: number;
3081
+ };
3082
+ type UpdateBeanEventDto = {
3083
+ /**
3084
+ * Life event date (ISO 8601)
3085
+ */
3086
+ date?: string;
3087
+ /**
3088
+ * Life event type (user-defined)
3089
+ */
3090
+ type?: string;
3091
+ /**
3092
+ * Life event description. Empty string is a VALID value (distinct from absence).
3093
+ */
3094
+ description?: string;
3095
+ /**
3096
+ * Product-side metadata (free-form JSON)
3097
+ */
3098
+ meta?: {
3099
+ [key: string]: unknown;
3100
+ };
3101
+ };
3102
+ type OnboardingAccountDto = {
3103
+ /**
3104
+ * Account path (Assets/Liabilities only; format validated by the account service)
3105
+ */
3106
+ path: string;
3107
+ /**
3108
+ * ISO 4217 currency code (3 letters)
3109
+ */
3110
+ currency: string;
3111
+ /**
3112
+ * Opening balance as a non-negative Decimal string (e.g. "1000.00")
3113
+ */
3114
+ openingBalance?: string;
3115
+ /**
3116
+ * Platform ID to bind the account to (references Platform.id); omit for unbound
3117
+ */
3118
+ platformId?: string;
3119
+ };
3120
+ type OnboardingDto = {
3121
+ /**
3122
+ * Asset/Liability accounts to register with opening balances
3123
+ */
3124
+ accounts?: Array<OnboardingAccountDto>;
3125
+ /**
3126
+ * Skip asset registration; only bootstrap the core account set
3127
+ */
3128
+ skipAssetRegistration?: boolean;
3129
+ };
3130
+ type ActualBalanceDto = {
3131
+ /**
3132
+ * Actual balance amount as a decimal string (preserves precision for tolerance inference).
3133
+ */
3134
+ amount: string;
3135
+ /**
3136
+ * Currency code (ISO 4217 or commodity ticker).
3137
+ */
3138
+ ccy: string;
3139
+ };
3140
+ type ComputeReconciliationDto = {
3141
+ /**
3142
+ * BeanAccount id to reconcile.
3143
+ */
3144
+ accountId: string;
3145
+ /**
3146
+ * Assertion date (ISO 8601, e.g. "2026-07-24").
3147
+ */
3148
+ asOfDate: string;
3149
+ /**
3150
+ * Actual balance from the external statement.
3151
+ */
3152
+ actualBalance: ActualBalanceDto;
3153
+ };
3154
+ type ReconciliationComputeResultDto = {
3155
+ accountId: string;
3156
+ asOfDate: string;
3157
+ /**
3158
+ * System-computed book balance (decimal string).
3159
+ */
3160
+ bookBalance: string;
2705
3161
  /**
2706
- * Product-side metadata (lives in BeanEvent.meta JSON, never in engine Event fields)
3162
+ * User-entered actual balance (decimal string).
2707
3163
  */
2708
- meta?: {
2709
- [key: string]: unknown;
2710
- };
2711
- };
2712
- type EventResponseDto = {
3164
+ actualBalance: string;
3165
+ currency: string;
2713
3166
  /**
2714
- * Unique identifier
3167
+ * Diff = book − actual (decimal string).
2715
3168
  */
2716
- id: string;
3169
+ diff: string;
2717
3170
  /**
2718
- * User ID (owner of the life event)
3171
+ * Applied tolerance (decimal string).
2719
3172
  */
2720
- userId: string;
3173
+ tolerance: string;
2721
3174
  /**
2722
- * Life event date (ISO 8601 format)
3175
+ * true when |diff| tolerance.
2723
3176
  */
2724
- date: string;
3177
+ withinTolerance: boolean;
2725
3178
  /**
2726
- * Life event type (user-defined, e.g., "employer", "location")
3179
+ * Suggested next action: assert when within tolerance, pad otherwise.
2727
3180
  */
2728
- type: string;
3181
+ suggestedAction: 'assert' | 'pad';
3182
+ };
3183
+ /**
3184
+ * Suggested next action: assert when within tolerance, pad otherwise.
3185
+ */
3186
+ type suggestedAction = 'assert' | 'pad';
3187
+ type AssertReconciliationDto = {
2729
3188
  /**
2730
- * Life event description. May be an empty string (a valid value distinct from absence).
3189
+ * BeanAccount id to reconcile.
2731
3190
  */
2732
- description: string;
3191
+ accountId: string;
2733
3192
  /**
2734
- * Product-side metadata (free-form JSON)
3193
+ * Assertion date (ISO 8601, e.g. "2026-07-24").
2735
3194
  */
2736
- meta: {
2737
- [key: string]: unknown;
2738
- };
3195
+ asOfDate: string;
2739
3196
  /**
2740
- * Creation timestamp
3197
+ * Actual balance from the external statement.
2741
3198
  */
2742
- createdAt: string;
3199
+ actualBalance: ActualBalanceDto;
2743
3200
  /**
2744
- * Last update timestamp. Also emitted as the ETag response header for If-Match optimistic concurrency.
3201
+ * Optional explicit tolerance override. Omit to infer from amount precision (Beancount default).
2745
3202
  */
2746
- updatedAt: string;
3203
+ tolerance?: string;
2747
3204
  };
2748
- type EventListResponseDto = {
3205
+ type ReconciliationRecordDto = {
3206
+ id: string;
3207
+ accountId: string;
3208
+ date: string;
2749
3209
  /**
2750
- * List of life events
3210
+ * Asserted (actual) amount.
2751
3211
  */
2752
- items: Array<EventResponseDto>;
3212
+ amount: string;
3213
+ currency: string;
3214
+ tolerance?: string;
2753
3215
  /**
2754
- * Total number of life events matching the query
3216
+ * book actual.
2755
3217
  */
2756
- total: number;
3218
+ diffAmount?: string;
3219
+ diffCurrency?: string;
3220
+ createdAt: string;
2757
3221
  };
2758
- type UpdateBeanEventDto = {
3222
+ type PadReconciliationDto = {
2759
3223
  /**
2760
- * Life event date (ISO 8601)
3224
+ * BeanAccount id to reconcile.
2761
3225
  */
2762
- date?: string;
3226
+ accountId: string;
2763
3227
  /**
2764
- * Life event type (user-defined)
3228
+ * Assertion date (ISO 8601, e.g. "2026-07-24").
2765
3229
  */
2766
- type?: string;
3230
+ asOfDate: string;
2767
3231
  /**
2768
- * Life event description. Empty string is a VALID value (distinct from absence).
3232
+ * Actual balance from the external statement.
2769
3233
  */
2770
- description?: string;
3234
+ actualBalance: ActualBalanceDto;
2771
3235
  /**
2772
- * Product-side metadata (free-form JSON)
3236
+ * Pad source account. Defaults to Equity:Opening-Balances (official Beancount convention).
2773
3237
  */
2774
- meta?: {
2775
- [key: string]: unknown;
2776
- };
3238
+ sourceAccount?: string;
3239
+ };
3240
+ type PadResultDto = {
3241
+ /**
3242
+ * Created pad adjusting transaction id.
3243
+ */
3244
+ transactionId: string;
2777
3245
  };
2778
3246
  type FileImportDto = {
2779
3247
  /**
@@ -3019,70 +3487,6 @@ type UpdateImporterConfigDto = {
3019
3487
  */
3020
3488
  data?: UpdateConfigDataDto;
3021
3489
  };
3022
- type CreatePlatformDto = {
3023
- /**
3024
- * Platform name
3025
- */
3026
- name: string;
3027
- /**
3028
- * Platform canonical identifier (lowercase, kebab-case)
3029
- */
3030
- canonical: string;
3031
- /**
3032
- * Platform aliases (multi-language names for lookup)
3033
- */
3034
- aliases: Array<string>;
3035
- /**
3036
- * Platform URL
3037
- */
3038
- url: string;
3039
- /**
3040
- * Platform type
3041
- */
3042
- type: 'BANK' | 'BROKERAGE' | 'CRYPTO_EXCHANGE' | 'PAYMENT' | 'INVESTMENT' | 'INSURANCE' | 'OTHER';
3043
- /**
3044
- * Platform logo URL
3045
- */
3046
- logoUrl?: string;
3047
- /**
3048
- * Whether the platform is active
3049
- */
3050
- isActive?: boolean;
3051
- };
3052
- /**
3053
- * Platform type
3054
- */
3055
- type type3 = 'BANK' | 'BROKERAGE' | 'CRYPTO_EXCHANGE' | 'PAYMENT' | 'INVESTMENT' | 'INSURANCE' | 'OTHER';
3056
- type UpdatePlatformDto = {
3057
- /**
3058
- * Platform name
3059
- */
3060
- name?: string;
3061
- /**
3062
- * Platform canonical identifier (lowercase, kebab-case)
3063
- */
3064
- canonical?: string;
3065
- /**
3066
- * Platform aliases (multi-language names for lookup)
3067
- */
3068
- aliases?: Array<string>;
3069
- /**
3070
- * Platform URL
3071
- */
3072
- url?: string;
3073
- /**
3074
- * Platform type
3075
- */
3076
- type?: 'BANK' | 'BROKERAGE' | 'CRYPTO_EXCHANGE' | 'PAYMENT' | 'INVESTMENT' | 'INSURANCE' | 'OTHER';
3077
- /**
3078
- * Platform logo URL
3079
- */
3080
- logoUrl?: string;
3081
- /**
3082
- * Whether the platform is active
3083
- */
3084
- isActive?: boolean;
3085
- };
3086
3490
  type ProviderSyncConfigDto = {
3087
3491
  /**
3088
3492
  * Source account for the first posting
@@ -3104,6 +3508,10 @@ type ProviderSyncConfigDto = {
3104
3508
  * Filter pending transactions
3105
3509
  */
3106
3510
  filterPending?: boolean;
3511
+ /**
3512
+ * External account ID for per-batch providers (e.g. GoCardless). Overrides sourceAccount when an ExternalAccountLink mapping exists.
3513
+ */
3514
+ externalAccountId?: string;
3107
3515
  };
3108
3516
  type ProviderSyncDto = {
3109
3517
  /**
@@ -3155,6 +3563,41 @@ type SupportedProvidersResponseDto = {
3155
3563
  */
3156
3564
  providers: Array<string>;
3157
3565
  };
3566
+ type CreateExternalAccountLinkDto = {
3567
+ /**
3568
+ * Open Banking provider (whitelist)
3569
+ */
3570
+ provider: 'plaid' | 'teller' | 'truelayer' | 'gocardless' | 'simplefin' | 'yodlee' | 'beancount-direct' | 'parsed-bill';
3571
+ /**
3572
+ * External account ID from the provider
3573
+ */
3574
+ externalAccountId: string;
3575
+ /**
3576
+ * Target BeanAccount ID (must belong to the JWT user)
3577
+ */
3578
+ beanAccountId: string;
3579
+ };
3580
+ /**
3581
+ * Open Banking provider (whitelist)
3582
+ */
3583
+ type provider = 'plaid' | 'teller' | 'truelayer' | 'gocardless' | 'simplefin' | 'yodlee' | 'beancount-direct' | 'parsed-bill';
3584
+ type ExternalAccountLinkResponseDto = {
3585
+ id: string;
3586
+ provider: string;
3587
+ externalAccountId: string;
3588
+ beanAccountId: string;
3589
+ isActive: boolean;
3590
+ createdAt: string;
3591
+ updatedAt: string;
3592
+ };
3593
+ type ExternalAccountLinkListResponseDto = {
3594
+ items: Array<ExternalAccountLinkResponseDto>;
3595
+ total: number;
3596
+ /**
3597
+ * Filter by provider (query param)
3598
+ */
3599
+ provider?: string;
3600
+ };
3158
3601
  type ParserTelemetryReportDto = unknown;
3159
3602
  type UncoveredFormatMissDto = unknown;
3160
3603
  type ProcessNlpDto = {
@@ -3172,6 +3615,14 @@ type ProcessNlpDto = {
3172
3615
  parsedData?: {
3173
3616
  [key: string]: unknown;
3174
3617
  };
3618
+ /**
3619
+ * confirm_rule echo-back: rule id selected from the prior confirm_rule response (matchedRule.id or alternatives[i].ruleId). Applied directly when the session is confirming_rule — no NL re-parse.
3620
+ */
3621
+ selectedRuleId?: string;
3622
+ /**
3623
+ * confirm_account echo-back: account path selected from the prior confirm_account response (suggestedAccount, similarAccounts[i], or a typed path). Applied directly when the session is confirming_account — no NL re-parse.
3624
+ */
3625
+ selectedAccount?: string;
3175
3626
  };
3176
3627
  type NlpTransactionInfoDto = {
3177
3628
  /**
@@ -3405,9 +3856,9 @@ type NlpAccountConfirmationDataDto = {
3405
3856
  */
3406
3857
  invalidAccount: string;
3407
3858
  /**
3408
- * Suggested replacement account
3859
+ * Suggested replacement account (omitted when no clear candidate)
3409
3860
  */
3410
- suggestedAccount: string;
3861
+ suggestedAccount?: string;
3411
3862
  /**
3412
3863
  * Similar accounts for user selection
3413
3864
  */
@@ -3529,7 +3980,7 @@ type NlpSuggestedAccountDto = {
3529
3980
  */
3530
3981
  account: string;
3531
3982
  /**
3532
- * Confidence score for this suggestion (0-1)
3983
+ * Confidence score for this suggestion (0-1). Present = predicted (confirm/confirm_rule/confirm_account); omitted = actual persisted account (created). (#586)
3533
3984
  */
3534
3985
  confidence?: number;
3535
3986
  };
@@ -3569,7 +4020,7 @@ type NlpResponseDto = {
3569
4020
  /**
3570
4021
  * Action taken or requested
3571
4022
  */
3572
- action: 'created' | 'ask' | 'confirm' | 'confirm_duplicate' | 'confirm_rule' | 'confirm_account' | 'confirm_payee' | 'cancel';
4023
+ action: 'created' | 'ask' | 'confirm' | 'confirm_duplicate' | 'confirm_rule' | 'confirm_account' | 'confirm_payee' | 'cancel' | 'aborted';
3573
4024
  /**
3574
4025
  * Transaction intent detected by EntityRouter (v6.0: 5 core intents). Frontend uses this to render scenario-specific form fields.
3575
4026
  */
@@ -3658,11 +4109,11 @@ type NlpResponseDto = {
3658
4109
  */
3659
4110
  recurringSuggestion?: RecurringSuggestionDto;
3660
4111
  /**
3661
- * Suggested accounts for this transaction. Contains recommended source and destination accounts based on the detected intent and rules.
4112
+ * Suggested accounts for this transaction (#586). confirm/confirm_rule/confirm_account: predicted (source/destination carry confidence); created: actual persisted accounts (confidence omitted). confirm_account destination is the suggested replacement, never the invalid account.
3662
4113
  */
3663
4114
  suggestedAccounts?: NlpSuggestedAccountsDto;
3664
4115
  /**
3665
- * Default accounts for the user/region. These are fallback accounts used when no specific suggestion is available.
4116
+ * Default fallback accounts for the user/region (#586). v1 returns universal constants; per-user personalization is planned.
3666
4117
  */
3667
4118
  defaultAccounts?: NlpDefaultAccountsDto;
3668
4119
  };
@@ -3673,7 +4124,7 @@ type status4 = 'success' | 'pending' | 'error';
3673
4124
  /**
3674
4125
  * Action taken or requested
3675
4126
  */
3676
- type action2 = 'created' | 'ask' | 'confirm' | 'confirm_duplicate' | 'confirm_rule' | 'confirm_account' | 'confirm_payee' | 'cancel';
4127
+ type action2 = 'created' | 'ask' | 'confirm' | 'confirm_duplicate' | 'confirm_rule' | 'confirm_account' | 'confirm_payee' | 'cancel' | 'aborted';
3677
4128
  /**
3678
4129
  * Transaction intent detected by EntityRouter (v6.0: 5 core intents). Frontend uses this to render scenario-specific form fields.
3679
4130
  */
@@ -3690,15 +4141,159 @@ type liabilitySubType = 'borrow' | 'repay';
3690
4141
  * Equity sub-type (only present when intent is "equity"). opening: account opening balance (Equity → Assets), adjustment: balance correction.
3691
4142
  */
3692
4143
  type equitySubType = 'opening' | 'adjustment';
3693
- type BalanceByCurrencyDto = {
4144
+ type PlatformListItemDto = {
4145
+ /**
4146
+ * Global platform ID
4147
+ */
4148
+ id: string;
4149
+ /**
4150
+ * Platform name
4151
+ */
4152
+ name: string;
4153
+ /**
4154
+ * Platform URL
4155
+ */
4156
+ url: string;
4157
+ /**
4158
+ * Platform type
4159
+ */
4160
+ type: 'BANK' | 'BROKERAGE' | 'CRYPTO_EXCHANGE' | 'PAYMENT' | 'INVESTMENT' | 'INSURANCE' | 'OTHER';
4161
+ /**
4162
+ * Canonical identifier in ACCOUNT_RE format (e.g., "icbc")
4163
+ */
4164
+ canonical: string;
4165
+ /**
4166
+ * Suggested path segment — canonical with first char uppercased (ACC_COMP_NAME_RE)
4167
+ */
4168
+ suggestedSegment: string;
4169
+ /**
4170
+ * Logo URL
4171
+ */
4172
+ logoUrl: string | null;
4173
+ /**
4174
+ * Whether user has accounts using this platform
4175
+ */
4176
+ isBound: boolean;
4177
+ };
4178
+ /**
4179
+ * Platform type
4180
+ */
4181
+ type type3 = 'BANK' | 'BROKERAGE' | 'CRYPTO_EXCHANGE' | 'PAYMENT' | 'INVESTMENT' | 'INSURANCE' | 'OTHER';
4182
+ type PlatformMatchResultDto = {
4183
+ /**
4184
+ * Global platform ID
4185
+ */
4186
+ id: string;
4187
+ /**
4188
+ * Platform name (e.g., "ICBC")
4189
+ */
4190
+ name: string;
4191
+ /**
4192
+ * Canonical identifier in ACCOUNT_RE format (e.g., "icbc")
4193
+ */
4194
+ canonical: string;
4195
+ /**
4196
+ * Platform type
4197
+ */
4198
+ type: 'BANK' | 'BROKERAGE' | 'CRYPTO_EXCHANGE' | 'PAYMENT' | 'INVESTMENT' | 'INSURANCE' | 'OTHER';
4199
+ /**
4200
+ * Suggested path segment — canonical, already in ACCOUNT_RE format
4201
+ */
4202
+ suggestedSegment: string;
4203
+ /**
4204
+ * Logo URL
4205
+ */
4206
+ logoUrl: string | null;
4207
+ /**
4208
+ * How this row matched: 'exact' > 'prefix' > 'substring'
4209
+ */
4210
+ matchType: 'exact' | 'prefix' | 'substring';
4211
+ };
4212
+ /**
4213
+ * How this row matched: 'exact' > 'prefix' > 'substring'
4214
+ */
4215
+ type matchType = 'exact' | 'prefix' | 'substring';
4216
+ type PlatformMatchResponseDto = {
4217
+ /**
4218
+ * Ranked matches, best tier first (at most 10 rows)
4219
+ */
4220
+ platforms: Array<PlatformMatchResultDto>;
4221
+ /**
4222
+ * Overall match quality — top row's tier, or 'none' when no hits
4223
+ */
4224
+ matchType: 'none' | 'exact' | 'prefix' | 'substring';
4225
+ /**
4226
+ * Total matches before LIMIT (truncation transparency)
4227
+ */
4228
+ total: number;
4229
+ /**
4230
+ * true when total > platforms.length (more matches exist)
4231
+ */
4232
+ hasMore: boolean;
4233
+ };
4234
+ /**
4235
+ * Overall match quality — top row's tier, or 'none' when no hits
4236
+ */
4237
+ type matchType2 = 'none' | 'exact' | 'prefix' | 'substring';
4238
+ type CreatePlatformDto = {
4239
+ /**
4240
+ * Platform name
4241
+ */
4242
+ name: string;
4243
+ /**
4244
+ * Platform canonical identifier (lowercase, kebab-case)
4245
+ */
4246
+ canonical: string;
4247
+ /**
4248
+ * Platform aliases (multi-language names for lookup)
4249
+ */
4250
+ aliases: Array<string>;
4251
+ /**
4252
+ * Platform URL
4253
+ */
4254
+ url: string;
4255
+ /**
4256
+ * Platform type
4257
+ */
4258
+ type: 'BANK' | 'BROKERAGE' | 'CRYPTO_EXCHANGE' | 'PAYMENT' | 'INVESTMENT' | 'INSURANCE' | 'OTHER';
4259
+ /**
4260
+ * Platform logo URL
4261
+ */
4262
+ logoUrl?: string;
4263
+ /**
4264
+ * Whether the platform is active
4265
+ */
4266
+ isActive?: boolean;
4267
+ };
4268
+ type UpdatePlatformDto = {
4269
+ /**
4270
+ * Platform name
4271
+ */
4272
+ name?: string;
4273
+ /**
4274
+ * Platform canonical identifier (lowercase, kebab-case)
4275
+ */
4276
+ canonical?: string;
4277
+ /**
4278
+ * Platform aliases (multi-language names for lookup)
4279
+ */
4280
+ aliases?: Array<string>;
3694
4281
  /**
3695
- * ISO 4217 currency code
4282
+ * Platform URL
3696
4283
  */
3697
- currency: string;
4284
+ url?: string;
3698
4285
  /**
3699
- * Balance amount
4286
+ * Platform type
3700
4287
  */
3701
- balance: string;
4288
+ type?: 'BANK' | 'BROKERAGE' | 'CRYPTO_EXCHANGE' | 'PAYMENT' | 'INVESTMENT' | 'INSURANCE' | 'OTHER';
4289
+ /**
4290
+ * Platform logo URL
4291
+ */
4292
+ logoUrl?: string;
4293
+ /**
4294
+ * Whether the platform is active
4295
+ */
4296
+ isActive?: boolean;
3702
4297
  };
3703
4298
  type NetWorthByCurrencyDto = {
3704
4299
  /**
@@ -3738,20 +4333,6 @@ type ConvertedNetWorthDto = {
3738
4333
  [key: string]: unknown;
3739
4334
  };
3740
4335
  };
3741
- type ExchangeRateWarningDto = {
3742
- /**
3743
- * Warning type
3744
- */
3745
- type: string;
3746
- /**
3747
- * Currency without exchange rate
3748
- */
3749
- currency: string;
3750
- /**
3751
- * Total amount affected
3752
- */
3753
- totalAmount: string;
3754
- };
3755
4336
  type NetWorthResponseDto = {
3756
4337
  /**
3757
4338
  * Total net worth (assets - liabilities, converted to base currency)
@@ -3815,6 +4396,10 @@ type AccountItemDto = {
3815
4396
  * Currency code
3816
4397
  */
3817
4398
  currency: string;
4399
+ /**
4400
+ * FX-converted balance in base currency; omitted when not convertible
4401
+ */
4402
+ convertedBalance?: string;
3818
4403
  };
3819
4404
  type PlatformGroupDto = {
3820
4405
  /**
@@ -3830,9 +4415,39 @@ type PlatformGroupDto = {
3830
4415
  */
3831
4416
  accounts: Array<AccountItemDto>;
3832
4417
  /**
3833
- * Total balance across all accounts in platform
4418
+ * FX-converted total balance in base currency
3834
4419
  */
3835
4420
  totalBalance: string;
4421
+ /**
4422
+ * Raw (unconverted) balances grouped by currency
4423
+ */
4424
+ balanceByCurrency: Array<BalanceByCurrencyDto>;
4425
+ /**
4426
+ * Converted balance in base currency (omitted when no currency is convertible)
4427
+ */
4428
+ convertedBalance?: string;
4429
+ /**
4430
+ * Share of the grand converted total (0-100); 0 when grand total is 0
4431
+ */
4432
+ sharePct: number;
4433
+ };
4434
+ type AccountExchangeRateWarningDto = {
4435
+ /**
4436
+ * Warning type
4437
+ */
4438
+ type: string;
4439
+ /**
4440
+ * Currency without exchange rate
4441
+ */
4442
+ currency: string;
4443
+ /**
4444
+ * Affected account paths
4445
+ */
4446
+ accounts: Array<string>;
4447
+ /**
4448
+ * Total amount in this currency
4449
+ */
4450
+ totalAmount: string;
3836
4451
  };
3837
4452
  type AccountsSummaryDto = {
3838
4453
  /**
@@ -3843,6 +4458,14 @@ type AccountsSummaryDto = {
3843
4458
  * Total number of platforms
3844
4459
  */
3845
4460
  totalPlatforms: number;
4461
+ /**
4462
+ * Base currency for conversion
4463
+ */
4464
+ baseCurrency: string;
4465
+ /**
4466
+ * Per-account exchange rate warnings
4467
+ */
4468
+ warnings?: Array<AccountExchangeRateWarningDto>;
3846
4469
  };
3847
4470
  type AccountsResponseDto = {
3848
4471
  /**
@@ -3875,6 +4498,10 @@ type AccountItemWithAssetClassDto = {
3875
4498
  * Currency code
3876
4499
  */
3877
4500
  currency: string;
4501
+ /**
4502
+ * FX-converted balance in base currency; omitted when not convertible
4503
+ */
4504
+ convertedBalance?: string;
3878
4505
  /**
3879
4506
  * Asset class
3880
4507
  */
@@ -3926,24 +4553,6 @@ type AssetClassGroupDto = {
3926
4553
  * Asset class name
3927
4554
  */
3928
4555
  type assetClass = 'LIQUIDITY' | 'EQUITY' | 'FIXED_INCOME' | 'PRECIOUS_METALS' | 'COMMODITY' | 'INSURANCE' | 'ALTERNATIVE_INVESTMENT' | 'PERSONAL_ASSETS' | 'LIABILITY' | 'REAL_ESTATE' | 'INDEX';
3929
- type AccountExchangeRateWarningDto = {
3930
- /**
3931
- * Warning type
3932
- */
3933
- type: string;
3934
- /**
3935
- * Currency without exchange rate
3936
- */
3937
- currency: string;
3938
- /**
3939
- * Affected account paths
3940
- */
3941
- accounts: Array<string>;
3942
- /**
3943
- * Total amount in this currency
3944
- */
3945
- totalAmount: string;
3946
- };
3947
4556
  type AssetClassSummaryDto = {
3948
4557
  /**
3949
4558
  * Total number of accounts
@@ -4102,6 +4711,60 @@ type CashFlowResponseDto = {
4102
4711
  */
4103
4712
  warnings?: Array<ExchangeRateWarningDto>;
4104
4713
  };
4714
+ type CategoryGroupDto = {
4715
+ /**
4716
+ * Functional category (account-path Group segment); regional and universal account paths merge under it
4717
+ */
4718
+ category: string;
4719
+ /**
4720
+ * Converted total for this category in base currency (expense amount when flow=expense, income amount when flow=income)
4721
+ */
4722
+ totalExpense: string;
4723
+ /**
4724
+ * Share of grand total (0-100); 0 when grand total is 0
4725
+ */
4726
+ sharePct: number;
4727
+ /**
4728
+ * Raw (unconverted) expense per currency
4729
+ */
4730
+ balanceByCurrency: Array<BalanceByCurrencyDto>;
4731
+ /**
4732
+ * Converted total in base currency (omitted when FX missing for all currencies in this category)
4733
+ */
4734
+ convertedBalance?: string;
4735
+ };
4736
+ type ExpensesByCategorySummaryDto = {
4737
+ /**
4738
+ * Total across all categories, converted (convertible categories only); expense totals when flow=expense, income totals when flow=income
4739
+ */
4740
+ totalExpense: string;
4741
+ /**
4742
+ * Number of categories
4743
+ */
4744
+ categoryCount: number;
4745
+ };
4746
+ type ExpensesByCategoryResponseDto = {
4747
+ /**
4748
+ * Period requested
4749
+ */
4750
+ period: string;
4751
+ /**
4752
+ * Base currency for converted values
4753
+ */
4754
+ baseCurrency: string;
4755
+ /**
4756
+ * Expense groups by functional category, sorted by converted total desc
4757
+ */
4758
+ groups: Array<CategoryGroupDto>;
4759
+ /**
4760
+ * Summary statistics
4761
+ */
4762
+ summary: ExpensesByCategorySummaryDto;
4763
+ /**
4764
+ * Exchange rate warnings (e.g. missing rate for a currency)
4765
+ */
4766
+ warnings?: Array<ExchangeRateWarningDto>;
4767
+ };
4105
4768
  type MonetaryDto = {
4106
4769
  /**
4107
4770
  * Amount (Decimal string)
@@ -4224,250 +4887,192 @@ type HoldingPnlRowDto = {
4224
4887
  /**
4225
4888
  * FX rate applied to market value
4226
4889
  */
4227
- marketFxRate?: FxRateDto | null;
4228
- /**
4229
- * Share of invested assets % (Decimal string); only for invested chartTokens
4230
- */
4231
- pctOfInvestedAssets?: {
4232
- [key: string]: unknown;
4233
- } | null;
4234
- /**
4235
- * 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
4236
- */
4237
- realizedPnl?: MonetaryDto | null;
4238
- };
4239
- /**
4240
- * Chart segment token (libs/common resolver)
4241
- */
4242
- type chartToken = 'equity' | 'fund' | 'bond' | 'cash' | 'other';
4243
- type HoldingPnlWarningDto = {
4244
- /**
4245
- * Warning type
4246
- */
4247
- type: 'MISSING_COST_FX_RATE' | 'MISSING_MARKET_FX_RATE' | 'MISSING_SALE_PRICE' | 'MISSING_REALIZED_FX_RATE' | 'OVERSOLD_LOTS' | 'NO_PRICE' | 'MIXED_COST_CURRENCY';
4248
- symbol?: {
4249
- [key: string]: unknown;
4250
- } | null;
4251
- accountId?: {
4252
- [key: string]: unknown;
4253
- } | null;
4254
- currency?: {
4255
- [key: string]: unknown;
4256
- } | null;
4257
- };
4258
- /**
4259
- * Warning type
4260
- */
4261
- type type4 = 'MISSING_COST_FX_RATE' | 'MISSING_MARKET_FX_RATE' | 'MISSING_SALE_PRICE' | 'MISSING_REALIZED_FX_RATE' | 'OVERSOLD_LOTS' | 'NO_PRICE' | 'MIXED_COST_CURRENCY';
4262
- type HoldingPnlResponseDto = {
4263
- asOfDate: string;
4264
- baseCurrency: string;
4265
- /**
4266
- * Realized-P&L lot-matching method (FIFO or average). Unrealized cost basis remains average regardless of this value (#473).
4267
- */
4268
- method: 'average' | 'FIFO';
4269
- rows: Array<HoldingPnlRowDto>;
4270
- warnings: Array<HoldingPnlWarningDto>;
4271
- };
4272
- /**
4273
- * Realized-P&L lot-matching method (FIFO or average). Unrealized cost basis remains average regardless of this value (#473).
4274
- */
4275
- type method = 'average' | 'FIFO';
4276
- type CreateBeanPriceDto = {
4277
- /**
4278
- * Currency being priced (e.g., USD, AAPL, BTC)
4279
- */
4280
- currency: string;
4281
- /**
4282
- * Quote currency (pricing currency, e.g., CNY, EUR)
4283
- */
4284
- quoteCurrency: string;
4285
- /**
4286
- * Price amount (MUST be >= 0 per Beancount spec, supports up to 15 decimal places). Zero allowed for conversion entries, negative strictly prohibited.
4287
- */
4288
- amount: number;
4289
- /**
4290
- * Price date (ISO 8601 format)
4291
- */
4292
- date: string;
4293
- /**
4294
- * Metadata (validated by Zod schema, max field lengths enforced)
4295
- */
4296
- metadata?: {
4297
- [key: string]: unknown;
4298
- };
4299
- };
4300
- type PriceResponseDto = {
4301
- /**
4302
- * Unique identifier
4303
- */
4304
- id: string;
4305
- /**
4306
- * User ID (owner of the price)
4307
- */
4308
- userId: string;
4309
- /**
4310
- * Currency being priced (e.g., USD, AAPL, BTC)
4311
- */
4312
- currency: string;
4313
- /**
4314
- * Quote currency (pricing currency, e.g., USD, CNY)
4315
- */
4316
- quoteCurrency: string;
4317
- /**
4318
- * Price amount (corresponds to Beancount Amount.number). Supports up to 15 decimal places.
4319
- */
4320
- amount: number;
4321
- /**
4322
- * Price date (ISO 8601 format). Represents the date this price was valid.
4323
- */
4324
- date: string;
4325
- /**
4326
- * Metadata (corresponds to Beancount meta field). Contains source, confidence, note, etc.
4327
- */
4328
- meta: {
4329
- [key: string]: unknown;
4330
- };
4331
- /**
4332
- * Creation timestamp
4333
- */
4334
- createdAt: string;
4335
- /**
4336
- * Last update timestamp
4337
- */
4338
- updatedAt: string;
4339
- };
4340
- type PriceListResponseDto = {
4341
- /**
4342
- * List of prices
4343
- */
4344
- items: Array<PriceResponseDto>;
4345
- /**
4346
- * Total number of prices
4347
- */
4348
- total: number;
4349
- };
4350
- type UpdateBeanPriceDto = {
4351
- /**
4352
- * Currency being priced
4353
- */
4354
- currency?: string;
4355
- /**
4356
- * Quote currency (pricing currency)
4357
- */
4358
- quoteCurrency?: string;
4890
+ marketFxRate?: FxRateDto | null;
4359
4891
  /**
4360
- * Price amount (MUST be >= 0 per Beancount spec)
4892
+ * Share of invested assets % (Decimal string); only for invested chartTokens
4361
4893
  */
4362
- amount?: number;
4894
+ pctOfInvestedAssets?: {
4895
+ [key: string]: unknown;
4896
+ } | null;
4363
4897
  /**
4364
- * Price date (ISO 8601 format)
4898
+ * Cumulative realized P&L on sold lots (asOf-date cutoff); null when the method has no applicable sells, a sell lacks a price, or any required FX rate is missing (never-mix). When a sell spans multiple currencies (cross-currency sale), amount and currency reflect the base currency; baseCcyEquivalent is always the authoritative dual-FX figure
4365
4899
  */
4366
- date?: string;
4900
+ realizedPnl?: MonetaryDto | null;
4901
+ };
4902
+ /**
4903
+ * Chart segment token (libs/common resolver)
4904
+ */
4905
+ type chartToken = 'equity' | 'fund' | 'bond' | 'cash' | 'other';
4906
+ type HoldingPnlWarningDto = {
4367
4907
  /**
4368
- * Metadata
4908
+ * Warning type
4369
4909
  */
4370
- metadata?: {
4910
+ type: 'MISSING_COST_FX_RATE' | 'MISSING_MARKET_FX_RATE' | 'MISSING_SALE_PRICE' | 'MISSING_REALIZED_FX_RATE' | 'OVERSOLD_LOTS' | 'NO_PRICE' | 'MIXED_COST_CURRENCY';
4911
+ symbol?: {
4371
4912
  [key: string]: unknown;
4372
- };
4913
+ } | null;
4914
+ accountId?: {
4915
+ [key: string]: unknown;
4916
+ } | null;
4917
+ currency?: {
4918
+ [key: string]: unknown;
4919
+ } | null;
4373
4920
  };
4374
- type CurrencyBalanceDto = {
4921
+ /**
4922
+ * Warning type
4923
+ */
4924
+ type type4 = 'MISSING_COST_FX_RATE' | 'MISSING_MARKET_FX_RATE' | 'MISSING_SALE_PRICE' | 'MISSING_REALIZED_FX_RATE' | 'OVERSOLD_LOTS' | 'NO_PRICE' | 'MIXED_COST_CURRENCY';
4925
+ type HoldingPnlResponseDto = {
4926
+ asOfDate: string;
4927
+ baseCurrency: string;
4375
4928
  /**
4376
- * ISO 4217 currency code
4929
+ * Realized-P&L lot-matching method (FIFO or average). Unrealized cost basis remains average regardless of this value (#473).
4377
4930
  */
4378
- currency: string;
4931
+ method: 'average' | 'FIFO';
4932
+ rows: Array<HoldingPnlRowDto>;
4933
+ warnings: Array<HoldingPnlWarningDto>;
4934
+ };
4935
+ /**
4936
+ * Realized-P&L lot-matching method (FIFO or average). Unrealized cost basis remains average regardless of this value (#473).
4937
+ */
4938
+ type method = 'average' | 'FIFO';
4939
+ type AnonymousLoginDto = {
4379
4940
  /**
4380
- * Balance amount
4941
+ * Access token for anonymous login
4381
4942
  */
4382
- balance: string;
4943
+ accessToken: string;
4383
4944
  };
4384
- type TimeSeriesPointDto = {
4945
+ type AnonymousLoginResponseDto = {
4385
4946
  /**
4386
- * Date in YYYY-MM-DD format
4947
+ * JWT auth token
4387
4948
  */
4388
- date: string;
4949
+ authToken: string;
4950
+ };
4951
+ type SymbolSearchResultDto = {
4952
+ symbol: string;
4953
+ name?: {
4954
+ [key: string]: unknown;
4955
+ } | null;
4956
+ exchange?: {
4957
+ [key: string]: unknown;
4958
+ } | null;
4389
4959
  /**
4390
- * Value at this date (in base currency)
4960
+ * OpenBB asset_type (e.g. stock, etf)
4391
4961
  */
4392
- value: string;
4962
+ assetType?: {
4963
+ [key: string]: unknown;
4964
+ } | null;
4393
4965
  /**
4394
- * Change from previous point
4966
+ * IGN asset class (region.types.ts ASSET_CLASSES)
4395
4967
  */
4396
- change?: {
4968
+ assetClass?: {
4397
4969
  [key: string]: unknown;
4398
- };
4970
+ } | null;
4399
4971
  /**
4400
- * Multi-currency breakdown for this point
4972
+ * IGN asset sub-class (region.types.ts ASSET_SUB_CLASSES)
4401
4973
  */
4402
- byCurrency?: Array<CurrencyBalanceDto>;
4974
+ assetSubClass?: {
4975
+ [key: string]: unknown;
4976
+ } | null;
4977
+ /**
4978
+ * Trading currency (extra_data or inferred from exchange)
4979
+ */
4980
+ currency?: {
4981
+ [key: string]: unknown;
4982
+ } | null;
4403
4983
  };
4404
- type TrendSummaryDto = {
4984
+ type SymbolQuoteDto = {
4985
+ symbol?: string;
4986
+ name?: {
4987
+ [key: string]: unknown;
4988
+ } | null;
4989
+ exchange?: {
4990
+ [key: string]: unknown;
4991
+ } | null;
4405
4992
  /**
4406
- * Value at start of period
4993
+ * OpenBB asset_type
4407
4994
  */
4408
- startValue: string;
4995
+ assetType?: {
4996
+ [key: string]: unknown;
4997
+ } | null;
4409
4998
  /**
4410
- * Value at end of period
4999
+ * IGN asset class
4411
5000
  */
4412
- endValue: string;
5001
+ assetClass?: {
5002
+ [key: string]: unknown;
5003
+ } | null;
4413
5004
  /**
4414
- * Total change over period
5005
+ * IGN asset sub-class
4415
5006
  */
4416
- totalChange: string;
5007
+ assetSubClass?: {
5008
+ [key: string]: unknown;
5009
+ } | null;
4417
5010
  /**
4418
- * Total change percentage
5011
+ * Trading currency (extra_data or inferred from exchange)
4419
5012
  */
4420
- totalChangePercentage: string;
4421
- };
4422
- type MultiCurrencyPointDto = {
5013
+ currency?: {
5014
+ [key: string]: unknown;
5015
+ } | null;
4423
5016
  /**
4424
- * Date in YYYY-MM-DD format
5017
+ * Latest price (Decimal string)
4425
5018
  */
4426
- date: string;
5019
+ price?: {
5020
+ [key: string]: unknown;
5021
+ } | null;
4427
5022
  /**
4428
- * Balances by currency
5023
+ * Date the price was observed (ISO yyyy-MM-dd)
4429
5024
  */
4430
- byCurrency: Array<CurrencyBalanceDto>;
4431
- };
4432
- type PortfolioTrendsResponseDto = {
5025
+ priceDate?: {
5026
+ [key: string]: unknown;
5027
+ } | null;
4433
5028
  /**
4434
- * Time series data points
5029
+ * Change vs previous close, in percentage points (1.7 == 1.7%). openbb stores change_percent as a normalized decimal; this exposes percentage points for frontend convenience.
4435
5030
  */
4436
- series: Array<TimeSeriesPointDto>;
5031
+ changePercent?: {
5032
+ [key: string]: unknown;
5033
+ } | null;
4437
5034
  /**
4438
- * Period summary
5035
+ * Previous close (Decimal string)
4439
5036
  */
4440
- summary: TrendSummaryDto;
5037
+ prevClose?: {
5038
+ [key: string]: unknown;
5039
+ } | null;
4441
5040
  /**
4442
- * Period requested
5041
+ * Day open (Decimal string)
4443
5042
  */
4444
- period: string;
5043
+ open?: {
5044
+ [key: string]: unknown;
5045
+ } | null;
4445
5046
  /**
4446
- * Data granularity
5047
+ * Day high (Decimal string)
4447
5048
  */
4448
- granularity: string;
5049
+ high?: {
5050
+ [key: string]: unknown;
5051
+ } | null;
4449
5052
  /**
4450
- * Base currency for converted values
5053
+ * Day low (Decimal string)
4451
5054
  */
4452
- currency: string;
5055
+ low?: {
5056
+ [key: string]: unknown;
5057
+ } | null;
4453
5058
  /**
4454
- * Multi-currency time series (each point has currency breakdown)
5059
+ * Day volume (Decimal string)
4455
5060
  */
4456
- byCurrency?: Array<MultiCurrencyPointDto>;
5061
+ volume?: {
5062
+ [key: string]: unknown;
5063
+ } | null;
4457
5064
  /**
4458
- * Exchange rate warnings
5065
+ * 52-week high (Decimal string)
4459
5066
  */
4460
- warnings?: Array<ExchangeRateWarningDto>;
4461
- };
4462
- type GenerateSnapshotBody = unknown;
4463
- type GenerateSnapshotResponse = unknown;
4464
- type BackfillSnapshotsBody = unknown;
4465
- type BackfillSnapshotsResponse = unknown;
4466
- type AnonymousLoginDto = {
5067
+ yearHigh?: {
5068
+ [key: string]: unknown;
5069
+ } | null;
4467
5070
  /**
4468
- * Access token for anonymous login
5071
+ * 52-week low (Decimal string)
4469
5072
  */
4470
- accessToken: string;
5073
+ yearLow?: {
5074
+ [key: string]: unknown;
5075
+ } | null;
4471
5076
  };
4472
5077
  type AccountControllerCreateData = {
4473
5078
  /**
@@ -4495,7 +5100,7 @@ type AccountControllerFindAllData = {
4495
5100
  */
4496
5101
  region: 'cn' | 'us' | 'de' | 'gb';
4497
5102
  /**
4498
- * Search term for path or i18nKey
5103
+ * Search term for account path
4499
5104
  */
4500
5105
  search?: string;
4501
5106
  /**
@@ -4566,6 +5171,18 @@ type AccountControllerReopenData = {
4566
5171
  requestBody: ReopenAccountDto;
4567
5172
  };
4568
5173
  type AccountControllerReopenResponse = AccountResponseDto;
5174
+ type AccountControllerAddOpeningBalanceData = {
5175
+ /**
5176
+ * Account UUID
5177
+ */
5178
+ id: string;
5179
+ /**
5180
+ * Region code for tenant context
5181
+ */
5182
+ region: 'cn' | 'us' | 'de' | 'gb';
5183
+ requestBody: CreateOpeningBalanceDto;
5184
+ };
5185
+ type AccountControllerAddOpeningBalanceResponse = OpeningBalanceResultDto;
4569
5186
  type AccountStandardsControllerGetTemplatesData = {
4570
5187
  /**
4571
5188
  * Region code (cn, us, de)
@@ -4615,6 +5232,10 @@ type TransactionControllerListData = {
4615
5232
  * Filter by account ID (transactions with postings to this account)
4616
5233
  */
4617
5234
  accountId?: string;
5235
+ /**
5236
+ * Filter by ADR-0075 functional category (Group segment); matches any posting to an Expenses/Income account whose derived Group segment equals this value
5237
+ */
5238
+ category?: string;
4618
5239
  /**
4619
5240
  * Filter by start date (inclusive), format: YYYY-MM-DD
4620
5241
  */
@@ -4723,7 +5344,7 @@ type TransactionControllerDeleteData = {
4723
5344
  type TransactionControllerDeleteResponse = void;
4724
5345
  type BalanceControllerGetBalanceData = {
4725
5346
  /**
4726
- * Account name (e.g., "Assets:Bank:Checking")
5347
+ * Account name (e.g., "Assets:Checking")
4727
5348
  */
4728
5349
  account: string;
4729
5350
  /**
@@ -4962,79 +5583,164 @@ type PayeeProfileAdminControllerUnverifyData = {
4962
5583
  type PayeeProfileAdminControllerUnverifyResponse = PayeeProfileResponseDto;
4963
5584
  type CommodityControllerCreateData = {
4964
5585
  /**
4965
- * Region code for tenant context
5586
+ * Region code for tenant context
5587
+ */
5588
+ region: 'cn' | 'us' | 'de' | 'gb';
5589
+ requestBody: CreateCommodityDto;
5590
+ };
5591
+ type CommodityControllerCreateResponse = CommodityResponseDto;
5592
+ type CommodityControllerFindAllData = {
5593
+ /**
5594
+ * Region code for tenant context
5595
+ */
5596
+ region: 'cn' | 'us' | 'de' | 'gb';
5597
+ /**
5598
+ * Search term for symbol or metadata fields (partial match). Searches symbol and metadata.name.
5599
+ */
5600
+ search?: string;
5601
+ /**
5602
+ * Filter by exact symbol match
5603
+ */
5604
+ symbol?: string;
5605
+ };
5606
+ type CommodityControllerFindAllResponse = CommodityListResponseDto;
5607
+ type CommodityControllerFindOneData = {
5608
+ /**
5609
+ * Region code for tenant context
5610
+ */
5611
+ region: 'cn' | 'us' | 'de' | 'gb';
5612
+ /**
5613
+ * Commodity symbol
5614
+ */
5615
+ symbol: string;
5616
+ };
5617
+ type CommodityControllerFindOneResponse = CommodityResponseDto;
5618
+ type CommodityControllerUpdateData = {
5619
+ /**
5620
+ * Region code for tenant context
5621
+ */
5622
+ region: 'cn' | 'us' | 'de' | 'gb';
5623
+ requestBody: UpdateCommodityDto;
5624
+ /**
5625
+ * Commodity symbol
5626
+ */
5627
+ symbol: string;
5628
+ };
5629
+ type CommodityControllerUpdateResponse = CommodityResponseDto;
5630
+ type CommodityControllerDeleteData = {
5631
+ /**
5632
+ * Region code for tenant context
5633
+ */
5634
+ region: 'cn' | 'us' | 'de' | 'gb';
5635
+ /**
5636
+ * Commodity symbol
5637
+ */
5638
+ symbol: string;
5639
+ };
5640
+ type CommodityControllerDeleteResponse = void;
5641
+ type CommodityControllerGetOrCreateData = {
5642
+ /**
5643
+ * Region code for tenant context
5644
+ */
5645
+ region: 'cn' | 'us' | 'de' | 'gb';
5646
+ /**
5647
+ * Commodity symbol
5648
+ */
5649
+ symbol: string;
5650
+ };
5651
+ type CommodityControllerGetOrCreateResponse = CommodityResponseDto;
5652
+ type CommodityControllerBulkCreateData = {
5653
+ /**
5654
+ * Region code for tenant context
5655
+ */
5656
+ region: 'cn' | 'us' | 'de' | 'gb';
5657
+ };
5658
+ type CommodityControllerBulkCreateResponse = Array<CommodityResponseDto>;
5659
+ type PriceControllerCreateData = {
5660
+ /**
5661
+ * Region code for tenant context
5662
+ */
5663
+ region: 'cn' | 'us' | 'de' | 'gb';
5664
+ requestBody: CreateBeanPriceDto;
5665
+ };
5666
+ type PriceControllerCreateResponse = PriceResponseDto;
5667
+ type PriceControllerFindAllData = {
5668
+ /**
5669
+ * Filter by currency (e.g., BTC, AAPL, USD)
5670
+ */
5671
+ currency?: string;
5672
+ /**
5673
+ * Filter prices from this date (ISO 8601 format)
5674
+ */
5675
+ dateFrom?: string;
5676
+ /**
5677
+ * Filter prices to this date (ISO 8601 format)
4966
5678
  */
4967
- region: 'cn' | 'us' | 'de' | 'gb';
4968
- requestBody: CreateCommodityDto;
4969
- };
4970
- type CommodityControllerCreateResponse = CommodityResponseDto;
4971
- type CommodityControllerFindAllData = {
5679
+ dateTo?: string;
4972
5680
  /**
4973
- * Region code for tenant context
5681
+ * Number of items per page (default: 20, max: 100)
4974
5682
  */
4975
- region: 'cn' | 'us' | 'de' | 'gb';
5683
+ limit?: number;
4976
5684
  /**
4977
- * Search term for symbol or metadata fields (partial match). Searches symbol and metadata.name.
5685
+ * Page number for pagination (default: 1)
4978
5686
  */
4979
- search?: string;
5687
+ page?: number;
4980
5688
  /**
4981
- * Filter by exact symbol match
5689
+ * Filter by quote currency (pricing currency, e.g., USD, CNY)
4982
5690
  */
4983
- symbol?: string;
4984
- };
4985
- type CommodityControllerFindAllResponse = CommodityListResponseDto;
4986
- type CommodityControllerFindOneData = {
5691
+ quoteCurrency?: string;
4987
5692
  /**
4988
5693
  * Region code for tenant context
4989
5694
  */
4990
5695
  region: 'cn' | 'us' | 'de' | 'gb';
4991
5696
  /**
4992
- * Commodity symbol
5697
+ * Search term for currency or quoteCurrency (case-insensitive partial match)
4993
5698
  */
4994
- symbol: string;
5699
+ search?: string;
4995
5700
  };
4996
- type CommodityControllerFindOneResponse = CommodityResponseDto;
4997
- type CommodityControllerUpdateData = {
5701
+ type PriceControllerFindAllResponse = PriceListResponseDto;
5702
+ type PriceControllerFindOneData = {
5703
+ /**
5704
+ * Price ID
5705
+ */
5706
+ id: string;
4998
5707
  /**
4999
5708
  * Region code for tenant context
5000
5709
  */
5001
5710
  region: 'cn' | 'us' | 'de' | 'gb';
5002
- requestBody: UpdateCommodityDto;
5711
+ };
5712
+ type PriceControllerFindOneResponse = PriceResponseDto;
5713
+ type PriceControllerUpdateData = {
5003
5714
  /**
5004
- * Commodity symbol
5715
+ * Price ID
5005
5716
  */
5006
- symbol: string;
5007
- };
5008
- type CommodityControllerUpdateResponse = CommodityResponseDto;
5009
- type CommodityControllerDeleteData = {
5717
+ id: string;
5010
5718
  /**
5011
5719
  * Region code for tenant context
5012
5720
  */
5013
5721
  region: 'cn' | 'us' | 'de' | 'gb';
5722
+ requestBody: UpdateBeanPriceDto;
5723
+ };
5724
+ type PriceControllerUpdateResponse = PriceResponseDto;
5725
+ type PriceControllerDeleteData = {
5014
5726
  /**
5015
- * Commodity symbol
5727
+ * Price ID
5016
5728
  */
5017
- symbol: string;
5018
- };
5019
- type CommodityControllerDeleteResponse = void;
5020
- type CommodityControllerGetOrCreateData = {
5729
+ id: string;
5021
5730
  /**
5022
5731
  * Region code for tenant context
5023
5732
  */
5024
5733
  region: 'cn' | 'us' | 'de' | 'gb';
5025
- /**
5026
- * Commodity symbol
5027
- */
5028
- symbol: string;
5029
5734
  };
5030
- type CommodityControllerGetOrCreateResponse = CommodityResponseDto;
5031
- type CommodityControllerBulkCreateData = {
5735
+ type PriceControllerDeleteResponse = void;
5736
+ type PriceControllerBulkCreateData = {
5032
5737
  /**
5033
5738
  * Region code for tenant context
5034
5739
  */
5035
5740
  region: 'cn' | 'us' | 'de' | 'gb';
5741
+ requestBody: Array<string>;
5036
5742
  };
5037
- type CommodityControllerBulkCreateResponse = Array<CommodityResponseDto>;
5743
+ type PriceControllerBulkCreateResponse = Array<PriceResponseDto>;
5038
5744
  type RecurringRuleControllerCreateData = {
5039
5745
  /**
5040
5746
  * Region code for tenant context
@@ -5228,6 +5934,120 @@ type ForecastControllerGetForecastData = {
5228
5934
  region: 'cn' | 'us' | 'de' | 'gb';
5229
5935
  };
5230
5936
  type ForecastControllerGetForecastResponse = ForecastResponseDto;
5937
+ type ReportingControllerGetPortfolioTrendsData = {
5938
+ /**
5939
+ * Data granularity
5940
+ */
5941
+ granularity?: 'day' | 'week' | 'month';
5942
+ /**
5943
+ * Time period
5944
+ */
5945
+ period?: '1m' | '3m' | '6m' | '1y';
5946
+ /**
5947
+ * Region code for tenant context
5948
+ */
5949
+ region: 'cn' | 'us' | 'de' | 'gb';
5950
+ };
5951
+ type ReportingControllerGetPortfolioTrendsResponse = PortfolioTrendsResponseDto;
5952
+ type ReportingControllerGetCashFlowTrendsData = {
5953
+ /**
5954
+ * Data granularity (accepted for API symmetry; v1 returns month buckets)
5955
+ */
5956
+ granularity?: 'day' | 'week' | 'month';
5957
+ /**
5958
+ * Time period
5959
+ */
5960
+ period?: '1m' | '3m' | '6m' | '1y';
5961
+ /**
5962
+ * Region code for tenant context
5963
+ */
5964
+ region: 'cn' | 'us' | 'de' | 'gb';
5965
+ };
5966
+ type ReportingControllerGetCashFlowTrendsResponse = CashFlowTrendsResponseDto;
5967
+ type ReportingControllerGenerateSnapshotData = {
5968
+ /**
5969
+ * Region code for tenant context
5970
+ */
5971
+ region: 'cn' | 'us' | 'de' | 'gb';
5972
+ /**
5973
+ * Optional date (defaults to today)
5974
+ */
5975
+ requestBody: GenerateSnapshotBody;
5976
+ };
5977
+ type ReportingControllerGenerateSnapshotResponse = GenerateSnapshotResponse;
5978
+ type ReportingControllerBackfillSnapshotsData = {
5979
+ /**
5980
+ * Region code for tenant context
5981
+ */
5982
+ region: 'cn' | 'us' | 'de' | 'gb';
5983
+ requestBody: BackfillSnapshotsBody;
5984
+ };
5985
+ type ReportingControllerBackfillSnapshotsResponse = BackfillSnapshotsResponse;
5986
+ type UserControllerDeleteOwnUserData = {
5987
+ requestBody: DeleteOwnUserDto;
5988
+ };
5989
+ type UserControllerDeleteOwnUserResponse = void;
5990
+ type UserControllerGetUserData = {
5991
+ acceptLanguage: string;
5992
+ };
5993
+ type UserControllerGetUserResponse = unknown;
5994
+ type UserControllerSignupUserData = {
5995
+ requestBody: SignupDto;
5996
+ };
5997
+ type UserControllerSignupUserResponse = SignupResponseDto;
5998
+ type UserControllerDeleteUserData = {
5999
+ /**
6000
+ * User ID to delete
6001
+ */
6002
+ id: string;
6003
+ };
6004
+ type UserControllerDeleteUserResponse = void;
6005
+ type UserControllerGetUserInfoData = {
6006
+ /**
6007
+ * User ID
6008
+ */
6009
+ id: string;
6010
+ };
6011
+ type UserControllerGetUserInfoResponse = unknown;
6012
+ type UserControllerUpdateUserSettingData = {
6013
+ requestBody: UpdateUserSettingDto;
6014
+ };
6015
+ type UserControllerUpdateUserSettingResponse = unknown;
6016
+ type UserControllerGetAllUserSettingsByPageData = {
6017
+ /**
6018
+ * Page number
6019
+ */
6020
+ pageNo: number;
6021
+ /**
6022
+ * Page size
6023
+ */
6024
+ pageSize: number;
6025
+ };
6026
+ type UserControllerGetAllUserSettingsByPageResponse = unknown;
6027
+ type UserControllerGetAssetLiabilitySummaryResponse = unknown;
6028
+ type PropertyControllerGetAllResponse = unknown;
6029
+ type PropertyControllerGetByKeyData = {
6030
+ /**
6031
+ * Property key
6032
+ */
6033
+ key: string;
6034
+ };
6035
+ type PropertyControllerGetByKeyResponse = unknown;
6036
+ type PropertyControllerUpdateData = {
6037
+ /**
6038
+ * Property key
6039
+ */
6040
+ key: string;
6041
+ requestBody: UpdatePropertyDto;
6042
+ };
6043
+ type PropertyControllerUpdateResponse = unknown;
6044
+ type PropertyControllerDeleteData = {
6045
+ /**
6046
+ * Property key
6047
+ */
6048
+ key: string;
6049
+ };
6050
+ type PropertyControllerDeleteResponse = void;
5231
6051
  type TransactionRuleControllerCreateData = {
5232
6052
  /**
5233
6053
  * Region code for tenant context
@@ -5303,115 +6123,50 @@ type TransactionRuleControllerGetStatisticsData = {
5303
6123
  type TransactionRuleControllerGetStatisticsResponse = RuleStatisticsResponseDto;
5304
6124
  type TransactionRuleControllerGetDetailData = {
5305
6125
  /**
5306
- * Region code for tenant context
5307
- */
5308
- region: 'cn' | 'us' | 'de' | 'gb';
5309
- /**
5310
- * Rule ID
5311
- */
5312
- ruleId: string;
5313
- };
5314
- type TransactionRuleControllerGetDetailResponse = TransactionRuleResponseDto;
5315
- type TransactionRuleControllerUpdateData = {
5316
- /**
5317
- * Region code for tenant context
5318
- */
5319
- region: 'cn' | 'us' | 'de' | 'gb';
5320
- requestBody: UpdateTransactionRuleDto;
5321
- /**
5322
- * Rule ID to update
5323
- */
5324
- ruleId: string;
5325
- };
5326
- type TransactionRuleControllerUpdateResponse = TransactionRuleResponseDto;
5327
- type TransactionRuleControllerDeleteData = {
5328
- /**
5329
- * Region code for tenant context
5330
- */
5331
- region: 'cn' | 'us' | 'de' | 'gb';
5332
- /**
5333
- * Rule ID to delete
5334
- */
5335
- ruleId: string;
5336
- };
5337
- type TransactionRuleControllerDeleteResponse = void;
5338
- type TransactionRuleControllerTestData = {
5339
- /**
5340
- * Region code for tenant context
5341
- */
5342
- region: 'cn' | 'us' | 'de' | 'gb';
5343
- requestBody: TestRuleDto;
5344
- /**
5345
- * Rule ID to test
5346
- */
5347
- ruleId: string;
5348
- };
5349
- type TransactionRuleControllerTestResponse = TestRuleResponseDto;
5350
- type UserControllerDeleteOwnUserData = {
5351
- requestBody: DeleteOwnUserDto;
5352
- };
5353
- type UserControllerDeleteOwnUserResponse = void;
5354
- type UserControllerGetUserData = {
5355
- acceptLanguage: string;
5356
- };
5357
- type UserControllerGetUserResponse = unknown;
5358
- type UserControllerSignupUserData = {
5359
- requestBody: SignupDto;
5360
- };
5361
- type UserControllerSignupUserResponse = unknown;
5362
- type UserControllerDeleteUserData = {
5363
- /**
5364
- * User ID to delete
5365
- */
5366
- id: string;
5367
- };
5368
- type UserControllerDeleteUserResponse = void;
5369
- type UserControllerGetUserInfoData = {
5370
- /**
5371
- * User ID
5372
- */
5373
- id: string;
5374
- };
5375
- type UserControllerGetUserInfoResponse = unknown;
5376
- type UserControllerUpdateUserSettingData = {
5377
- requestBody: UpdateUserSettingDto;
5378
- };
5379
- type UserControllerUpdateUserSettingResponse = unknown;
5380
- type UserControllerGetAllUserSettingsByPageData = {
5381
- /**
5382
- * Page number
6126
+ * Region code for tenant context
5383
6127
  */
5384
- pageNo: number;
6128
+ region: 'cn' | 'us' | 'de' | 'gb';
5385
6129
  /**
5386
- * Page size
6130
+ * Rule ID
5387
6131
  */
5388
- pageSize: number;
6132
+ ruleId: string;
5389
6133
  };
5390
- type UserControllerGetAllUserSettingsByPageResponse = unknown;
5391
- type UserControllerGetAssetLiabilitySummaryResponse = unknown;
5392
- type PropertyControllerGetAllResponse = unknown;
5393
- type PropertyControllerGetByKeyData = {
6134
+ type TransactionRuleControllerGetDetailResponse = TransactionRuleResponseDto;
6135
+ type TransactionRuleControllerUpdateData = {
5394
6136
  /**
5395
- * Property key
6137
+ * Region code for tenant context
5396
6138
  */
5397
- key: string;
6139
+ region: 'cn' | 'us' | 'de' | 'gb';
6140
+ requestBody: UpdateTransactionRuleDto;
6141
+ /**
6142
+ * Rule ID to update
6143
+ */
6144
+ ruleId: string;
5398
6145
  };
5399
- type PropertyControllerGetByKeyResponse = unknown;
5400
- type PropertyControllerUpdateData = {
6146
+ type TransactionRuleControllerUpdateResponse = TransactionRuleResponseDto;
6147
+ type TransactionRuleControllerDeleteData = {
5401
6148
  /**
5402
- * Property key
6149
+ * Region code for tenant context
5403
6150
  */
5404
- key: string;
5405
- requestBody: UpdatePropertyDto;
6151
+ region: 'cn' | 'us' | 'de' | 'gb';
6152
+ /**
6153
+ * Rule ID to delete
6154
+ */
6155
+ ruleId: string;
5406
6156
  };
5407
- type PropertyControllerUpdateResponse = unknown;
5408
- type PropertyControllerDeleteData = {
6157
+ type TransactionRuleControllerDeleteResponse = void;
6158
+ type TransactionRuleControllerTestData = {
5409
6159
  /**
5410
- * Property key
6160
+ * Region code for tenant context
5411
6161
  */
5412
- key: string;
6162
+ region: 'cn' | 'us' | 'de' | 'gb';
6163
+ requestBody: TestRuleDto;
6164
+ /**
6165
+ * Rule ID to test
6166
+ */
6167
+ ruleId: string;
5413
6168
  };
5414
- type PropertyControllerDeleteResponse = void;
6169
+ type TransactionRuleControllerTestResponse = TestRuleResponseDto;
5415
6170
  type EventControllerCreateData = {
5416
6171
  /**
5417
6172
  * Region code for tenant context (decorative for life events)
@@ -5485,6 +6240,62 @@ type EventControllerDeleteData = {
5485
6240
  region: 'cn' | 'us' | 'de' | 'gb';
5486
6241
  };
5487
6242
  type EventControllerDeleteResponse = void;
6243
+ type EventControllerGetSliceData = {
6244
+ accountPattern: string;
6245
+ granularity: string;
6246
+ /**
6247
+ * Life event ID
6248
+ */
6249
+ id: string;
6250
+ /**
6251
+ * Region code for tenant context (decorative for life events)
6252
+ */
6253
+ region: 'cn' | 'us' | 'de' | 'gb';
6254
+ };
6255
+ type EventControllerGetSliceResponse = unknown;
6256
+ type OnboardingControllerBootstrapData = {
6257
+ /**
6258
+ * Region code for tenant context
6259
+ */
6260
+ region: 'cn' | 'us' | 'de' | 'gb';
6261
+ requestBody: OnboardingDto;
6262
+ };
6263
+ type OnboardingControllerBootstrapResponse = unknown;
6264
+ type ReconciliationControllerComputeData = {
6265
+ /**
6266
+ * Region code for tenant context (decorative for reconciliation)
6267
+ */
6268
+ region: 'cn' | 'us' | 'de' | 'gb';
6269
+ requestBody: ComputeReconciliationDto;
6270
+ };
6271
+ type ReconciliationControllerComputeResponse = ReconciliationComputeResultDto;
6272
+ type ReconciliationControllerAssertData = {
6273
+ /**
6274
+ * Region code for tenant context (decorative for reconciliation)
6275
+ */
6276
+ region: 'cn' | 'us' | 'de' | 'gb';
6277
+ requestBody: AssertReconciliationDto;
6278
+ };
6279
+ type ReconciliationControllerAssertResponse = ReconciliationRecordDto;
6280
+ type ReconciliationControllerPadData = {
6281
+ /**
6282
+ * Region code for tenant context (decorative for reconciliation)
6283
+ */
6284
+ region: 'cn' | 'us' | 'de' | 'gb';
6285
+ requestBody: PadReconciliationDto;
6286
+ };
6287
+ type ReconciliationControllerPadResponse = PadResultDto;
6288
+ type ReconciliationControllerHistoryData = {
6289
+ /**
6290
+ * BeanAccount id
6291
+ */
6292
+ accountId: string;
6293
+ /**
6294
+ * Region code for tenant context (decorative for reconciliation)
6295
+ */
6296
+ region: 'cn' | 'us' | 'de' | 'gb';
6297
+ };
6298
+ type ReconciliationControllerHistoryResponse = Array<ReconciliationRecordDto>;
5488
6299
  type ExportControllerExportBeancountResponse = unknown;
5489
6300
  type FileImportControllerImportFileData = {
5490
6301
  /**
@@ -5564,38 +6375,6 @@ type ImporterConfigControllerResetConfigData = {
5564
6375
  region: 'cn' | 'us' | 'de' | 'gb';
5565
6376
  };
5566
6377
  type ImporterConfigControllerResetConfigResponse = ImporterConfigDto;
5567
- type PlatformControllerFindAllResponse = unknown;
5568
- type PlatformControllerCreateData = {
5569
- requestBody: CreatePlatformDto;
5570
- };
5571
- type PlatformControllerCreateResponse = unknown;
5572
- type PlatformControllerGetPlatformListResponse = unknown;
5573
- type PlatformControllerMatchPlatformsData = {
5574
- /**
5575
- * Search query — Chinese name, English name, or abbreviation
5576
- */
5577
- q: string;
5578
- /**
5579
- * Region code for category override lookup
5580
- */
5581
- region?: string;
5582
- };
5583
- type PlatformControllerMatchPlatformsResponse = unknown;
5584
- type PlatformControllerUpdateData = {
5585
- /**
5586
- * Platform ID
5587
- */
5588
- id: string;
5589
- requestBody: UpdatePlatformDto;
5590
- };
5591
- type PlatformControllerUpdateResponse = unknown;
5592
- type PlatformControllerDeleteData = {
5593
- /**
5594
- * Platform ID
5595
- */
5596
- id: string;
5597
- };
5598
- type PlatformControllerDeleteResponse = void;
5599
6378
  type ProviderSyncControllerSyncData = {
5600
6379
  /**
5601
6380
  * Provider name
@@ -5626,6 +6405,38 @@ type ProviderSyncControllerIsProviderSupportedData = {
5626
6405
  region: 'cn' | 'us' | 'de' | 'gb';
5627
6406
  };
5628
6407
  type ProviderSyncControllerIsProviderSupportedResponse = unknown;
6408
+ type ExternalAccountLinkControllerCreateData = {
6409
+ /**
6410
+ * Region code for tenant context
6411
+ */
6412
+ region: 'cn' | 'us' | 'de' | 'gb';
6413
+ requestBody: CreateExternalAccountLinkDto;
6414
+ };
6415
+ type ExternalAccountLinkControllerCreateResponse = ExternalAccountLinkResponseDto;
6416
+ type ExternalAccountLinkControllerFindAllData = {
6417
+ provider: string;
6418
+ /**
6419
+ * Region code for tenant context
6420
+ */
6421
+ region: 'cn' | 'us' | 'de' | 'gb';
6422
+ };
6423
+ type ExternalAccountLinkControllerFindAllResponse = ExternalAccountLinkListResponseDto;
6424
+ type ExternalAccountLinkControllerFindOneData = {
6425
+ id: string;
6426
+ /**
6427
+ * Region code for tenant context
6428
+ */
6429
+ region: 'cn' | 'us' | 'de' | 'gb';
6430
+ };
6431
+ type ExternalAccountLinkControllerFindOneResponse = ExternalAccountLinkResponseDto;
6432
+ type ExternalAccountLinkControllerRemoveData = {
6433
+ id: string;
6434
+ /**
6435
+ * Region code for tenant context
6436
+ */
6437
+ region: 'cn' | 'us' | 'de' | 'gb';
6438
+ };
6439
+ type ExternalAccountLinkControllerRemoveResponse = void;
5629
6440
  type TelemetryControllerReportTelemetryData = {
5630
6441
  /**
5631
6442
  * Region code for tenant context
@@ -5686,158 +6497,90 @@ type NlpControllerGetSessionData = {
5686
6497
  sessionId?: string;
5687
6498
  };
5688
6499
  type NlpControllerGetSessionResponse = unknown;
5689
- type DashboardControllerGetNetWorthData = {
5690
- /**
5691
- * Date for balance calculation (ISO 8601 format)
5692
- */
5693
- date?: string;
5694
- /**
5695
- * Region code for tenant context
5696
- */
5697
- region: 'cn' | 'us' | 'de' | 'gb';
5698
- };
5699
- type DashboardControllerGetNetWorthResponse = NetWorthResponseDto;
5700
- type DashboardControllerGetAccountsData = {
5701
- /**
5702
- * Scope to a single account (only valid with groupBy=holdingAssetClass, ADR-0105 §6)
5703
- */
5704
- accountId?: string;
5705
- /**
5706
- * Date for balance calculation (ISO 8601 format)
5707
- */
5708
- date?: string;
5709
- /**
5710
- * Grouping strategy
5711
- */
5712
- groupBy?: 'platform' | 'assetClass' | 'holdingAssetClass' | 'holdingAssetClassByAccount';
5713
- /**
5714
- * Region code for tenant context
5715
- */
5716
- region: 'cn' | 'us' | 'de' | 'gb';
6500
+ type PlatformControllerFindAllResponse = unknown;
6501
+ type PlatformControllerCreateData = {
6502
+ requestBody: CreatePlatformDto;
5717
6503
  };
5718
- type DashboardControllerGetAccountsResponse = AccountsResponseDto | AssetClassAccountsResponseDto | HoldingAssetClassCrossAccountResponseDto;
5719
- type DashboardControllerGetCashFlowData = {
6504
+ type PlatformControllerCreateResponse = unknown;
6505
+ type PlatformControllerGetPlatformListResponse = Array<PlatformListItemDto>;
6506
+ type PlatformControllerMatchPlatformsData = {
5720
6507
  /**
5721
- * Period in YYYY-MM format
6508
+ * Search query Chinese name, English name, or abbreviation
5722
6509
  */
5723
- period: string;
6510
+ q: string;
5724
6511
  /**
5725
- * Region code for tenant context
6512
+ * Region code for category override lookup
5726
6513
  */
5727
- region: 'cn' | 'us' | 'de' | 'gb';
6514
+ region?: string;
5728
6515
  };
5729
- type DashboardControllerGetCashFlowResponse = CashFlowResponseDto;
5730
- type HoldingPnlControllerGetHoldingPnlData = {
5731
- /**
5732
- * Scope to a single account
5733
- */
5734
- accountId?: string;
5735
- /**
5736
- * As-of date (ISO 8601), defaults to today
5737
- */
5738
- asOf?: string;
5739
- /**
5740
- * Realized-P&L lot-matching method (default average). Does not affect the average-cost unrealized basis.
5741
- */
5742
- method?: 'FIFO' | 'average';
6516
+ type PlatformControllerMatchPlatformsResponse = PlatformMatchResponseDto;
6517
+ type PlatformControllerUpdateData = {
5743
6518
  /**
5744
- * Region code for tenant context
6519
+ * Platform ID
5745
6520
  */
5746
- region: 'cn' | 'us' | 'de' | 'gb';
6521
+ id: string;
6522
+ requestBody: UpdatePlatformDto;
5747
6523
  };
5748
- type HoldingPnlControllerGetHoldingPnlResponse = HoldingPnlResponseDto;
5749
- type PriceControllerCreateData = {
6524
+ type PlatformControllerUpdateResponse = unknown;
6525
+ type PlatformControllerDeleteData = {
5750
6526
  /**
5751
- * Region code for tenant context
6527
+ * Platform ID
5752
6528
  */
5753
- region: 'cn' | 'us' | 'de' | 'gb';
5754
- requestBody: CreateBeanPriceDto;
6529
+ id: string;
5755
6530
  };
5756
- type PriceControllerCreateResponse = PriceResponseDto;
5757
- type PriceControllerFindAllData = {
5758
- /**
5759
- * Filter by currency (e.g., BTC, AAPL, USD)
5760
- */
5761
- currency?: string;
5762
- /**
5763
- * Filter prices from this date (ISO 8601 format)
5764
- */
5765
- dateFrom?: string;
5766
- /**
5767
- * Filter prices to this date (ISO 8601 format)
5768
- */
5769
- dateTo?: string;
5770
- /**
5771
- * Number of items per page (default: 20, max: 100)
5772
- */
5773
- limit?: number;
5774
- /**
5775
- * Page number for pagination (default: 1)
5776
- */
5777
- page?: number;
6531
+ type PlatformControllerDeleteResponse = void;
6532
+ type DashboardControllerGetNetWorthData = {
5778
6533
  /**
5779
- * Filter by quote currency (pricing currency, e.g., USD, CNY)
6534
+ * Date for balance calculation (ISO 8601 format)
5780
6535
  */
5781
- quoteCurrency?: string;
6536
+ date?: string;
5782
6537
  /**
5783
6538
  * Region code for tenant context
5784
6539
  */
5785
6540
  region: 'cn' | 'us' | 'de' | 'gb';
5786
- /**
5787
- * Search term for currency or quoteCurrency (case-insensitive partial match)
5788
- */
5789
- search?: string;
5790
6541
  };
5791
- type PriceControllerFindAllResponse = PriceListResponseDto;
5792
- type PriceControllerFindOneData = {
6542
+ type DashboardControllerGetNetWorthResponse = NetWorthResponseDto;
6543
+ type DashboardControllerGetAccountsData = {
5793
6544
  /**
5794
- * Price ID
6545
+ * Scope to a single account (only valid with groupBy=holdingAssetClass, ADR-0105 §6)
5795
6546
  */
5796
- id: string;
6547
+ accountId?: string;
5797
6548
  /**
5798
- * Region code for tenant context
5799
- */
5800
- region: 'cn' | 'us' | 'de' | 'gb';
5801
- };
5802
- type PriceControllerFindOneResponse = PriceResponseDto;
5803
- type PriceControllerUpdateData = {
6549
+ * Date for balance calculation (ISO 8601 format)
6550
+ */
6551
+ date?: string;
5804
6552
  /**
5805
- * Price ID
6553
+ * Grouping strategy
5806
6554
  */
5807
- id: string;
6555
+ groupBy?: 'platform' | 'assetClass' | 'holdingAssetClass' | 'holdingAssetClassByAccount';
5808
6556
  /**
5809
6557
  * Region code for tenant context
5810
6558
  */
5811
6559
  region: 'cn' | 'us' | 'de' | 'gb';
5812
- requestBody: UpdateBeanPriceDto;
5813
6560
  };
5814
- type PriceControllerUpdateResponse = PriceResponseDto;
5815
- type PriceControllerDeleteData = {
6561
+ type DashboardControllerGetAccountsResponse = AccountsResponseDto | AssetClassAccountsResponseDto | HoldingAssetClassCrossAccountResponseDto;
6562
+ type DashboardControllerGetCashFlowData = {
5816
6563
  /**
5817
- * Price ID
6564
+ * Period in YYYY-MM format
5818
6565
  */
5819
- id: string;
6566
+ period: string;
5820
6567
  /**
5821
6568
  * Region code for tenant context
5822
6569
  */
5823
6570
  region: 'cn' | 'us' | 'de' | 'gb';
5824
6571
  };
5825
- type PriceControllerDeleteResponse = void;
5826
- type PriceControllerBulkCreateData = {
6572
+ type DashboardControllerGetCashFlowResponse = CashFlowResponseDto;
6573
+ type DashboardControllerGetExpensesData = {
5827
6574
  /**
5828
- * Region code for tenant context
6575
+ * Account root to aggregate (expense → ^Expenses:, income → ^Income:)
5829
6576
  */
5830
- region: 'cn' | 'us' | 'de' | 'gb';
5831
- requestBody: Array<string>;
5832
- };
5833
- type PriceControllerBulkCreateResponse = Array<PriceResponseDto>;
5834
- type ReportingControllerGetPortfolioTrendsData = {
6577
+ flow?: 'expense' | 'income';
5835
6578
  /**
5836
- * Data granularity
6579
+ * Grouping strategy
5837
6580
  */
5838
- granularity?: 'day' | 'week' | 'month';
6581
+ groupBy?: 'category';
5839
6582
  /**
5840
- * Time period
6583
+ * Time window (1m = current calendar month)
5841
6584
  */
5842
6585
  period?: '1m' | '3m' | '6m' | '1y';
5843
6586
  /**
@@ -5845,31 +6588,31 @@ type ReportingControllerGetPortfolioTrendsData = {
5845
6588
  */
5846
6589
  region: 'cn' | 'us' | 'de' | 'gb';
5847
6590
  };
5848
- type ReportingControllerGetPortfolioTrendsResponse = PortfolioTrendsResponseDto;
5849
- type ReportingControllerGenerateSnapshotData = {
6591
+ type DashboardControllerGetExpensesResponse = ExpensesByCategoryResponseDto;
6592
+ type HoldingPnlControllerGetHoldingPnlData = {
5850
6593
  /**
5851
- * Region code for tenant context
6594
+ * Scope to a single account
5852
6595
  */
5853
- region: 'cn' | 'us' | 'de' | 'gb';
6596
+ accountId?: string;
5854
6597
  /**
5855
- * Optional date (defaults to today)
6598
+ * As-of date (ISO 8601), defaults to today
5856
6599
  */
5857
- requestBody: GenerateSnapshotBody;
5858
- };
5859
- type ReportingControllerGenerateSnapshotResponse = GenerateSnapshotResponse;
5860
- type ReportingControllerBackfillSnapshotsData = {
6600
+ asOf?: string;
6601
+ /**
6602
+ * Realized-P&L lot-matching method (default average). Does not affect the average-cost unrealized basis.
6603
+ */
6604
+ method?: 'FIFO' | 'average';
5861
6605
  /**
5862
6606
  * Region code for tenant context
5863
6607
  */
5864
6608
  region: 'cn' | 'us' | 'de' | 'gb';
5865
- requestBody: BackfillSnapshotsBody;
5866
6609
  };
5867
- type ReportingControllerBackfillSnapshotsResponse = BackfillSnapshotsResponse;
6610
+ type HoldingPnlControllerGetHoldingPnlResponse = HoldingPnlResponseDto;
5868
6611
  type ApiKeysControllerCreateApiKeyResponse = unknown;
5869
6612
  type AuthControllerAccessTokenLoginData = {
5870
6613
  requestBody: AnonymousLoginDto;
5871
6614
  };
5872
- type AuthControllerAccessTokenLoginResponse = unknown;
6615
+ type AuthControllerAccessTokenLoginResponse = AnonymousLoginResponseDto;
5873
6616
  type CacheControllerFlushCacheResponse = unknown;
5874
6617
  type ExchangeRateControllerGetExchangeRateData = {
5875
6618
  /**
@@ -5896,6 +6639,29 @@ type HealthControllerResetCircuitBreakerData = {
5896
6639
  type HealthControllerResetCircuitBreakerResponse = unknown;
5897
6640
  type HealthControllerGetMetricsResponse = unknown;
5898
6641
  type InfoControllerGetInfoResponse = unknown;
6642
+ type SymbolControllerSearchData = {
6643
+ /**
6644
+ * Filter by OpenBB asset_type (e.g. stock, etf)
6645
+ */
6646
+ assetType?: string;
6647
+ /**
6648
+ * Filter by exchange code (e.g. US, HK, SS, SZ)
6649
+ */
6650
+ exchange?: string;
6651
+ /**
6652
+ * Maximum number of results (clamped 1..50)
6653
+ */
6654
+ limit?: number;
6655
+ /**
6656
+ * Search term — matched against symbol and instrument name. Empty string returns [].
6657
+ */
6658
+ q: string;
6659
+ };
6660
+ type SymbolControllerSearchResponse = Array<SymbolSearchResultDto>;
6661
+ type SymbolControllerGetQuoteData = {
6662
+ symbol: string;
6663
+ };
6664
+ type SymbolControllerGetQuoteResponse = SymbolQuoteDto;
5899
6665
  type $OpenApiTs = {
5900
6666
  '/api/v1/{region}/bean/accounts': {
5901
6667
  post: {
@@ -6004,6 +6770,25 @@ type $OpenApiTs = {
6004
6770
  };
6005
6771
  };
6006
6772
  };
6773
+ '/api/v1/{region}/bean/accounts/{id}/opening-balance': {
6774
+ post: {
6775
+ req: AccountControllerAddOpeningBalanceData;
6776
+ res: {
6777
+ /**
6778
+ * Opening-balance transaction created
6779
+ */
6780
+ 201: OpeningBalanceResultDto;
6781
+ /**
6782
+ * Account not found
6783
+ */
6784
+ 404: unknown;
6785
+ /**
6786
+ * An opening balance already exists for this account
6787
+ */
6788
+ 409: unknown;
6789
+ };
6790
+ };
6791
+ };
6007
6792
  '/api/v1/{region}/bean/account-standards': {
6008
6793
  get: {
6009
6794
  req: AccountStandardsControllerGetTemplatesData;
@@ -6612,6 +7397,90 @@ type $OpenApiTs = {
6612
7397
  };
6613
7398
  };
6614
7399
  };
7400
+ '/api/v1/{region}/bean/prices': {
7401
+ post: {
7402
+ req: PriceControllerCreateData;
7403
+ res: {
7404
+ /**
7405
+ * Price created successfully
7406
+ */
7407
+ 201: PriceResponseDto;
7408
+ /**
7409
+ * Currency or quoteCurrency commodity not found
7410
+ */
7411
+ 404: unknown;
7412
+ /**
7413
+ * Price already exists for this currency pair and date
7414
+ */
7415
+ 409: unknown;
7416
+ };
7417
+ };
7418
+ get: {
7419
+ req: PriceControllerFindAllData;
7420
+ res: {
7421
+ /**
7422
+ * Prices retrieved successfully
7423
+ */
7424
+ 200: PriceListResponseDto;
7425
+ };
7426
+ };
7427
+ };
7428
+ '/api/v1/{region}/bean/prices/{id}': {
7429
+ get: {
7430
+ req: PriceControllerFindOneData;
7431
+ res: {
7432
+ /**
7433
+ * Price retrieved successfully
7434
+ */
7435
+ 200: PriceResponseDto;
7436
+ /**
7437
+ * Price not found
7438
+ */
7439
+ 404: unknown;
7440
+ };
7441
+ };
7442
+ put: {
7443
+ req: PriceControllerUpdateData;
7444
+ res: {
7445
+ /**
7446
+ * Price updated successfully
7447
+ */
7448
+ 200: PriceResponseDto;
7449
+ /**
7450
+ * Price not found
7451
+ */
7452
+ 404: unknown;
7453
+ /**
7454
+ * Updated price conflicts with existing price
7455
+ */
7456
+ 409: unknown;
7457
+ };
7458
+ };
7459
+ delete: {
7460
+ req: PriceControllerDeleteData;
7461
+ res: {
7462
+ /**
7463
+ * Price deleted successfully
7464
+ */
7465
+ 204: void;
7466
+ /**
7467
+ * Price not found
7468
+ */
7469
+ 404: unknown;
7470
+ };
7471
+ };
7472
+ };
7473
+ '/api/v1/{region}/bean/prices/bulk': {
7474
+ post: {
7475
+ req: PriceControllerBulkCreateData;
7476
+ res: {
7477
+ /**
7478
+ * Prices created successfully
7479
+ */
7480
+ 201: Array<PriceResponseDto>;
7481
+ };
7482
+ };
7483
+ };
6615
7484
  '/api/v1/{region}/bean/recurring-rules': {
6616
7485
  post: {
6617
7486
  req: RecurringRuleControllerCreateData;
@@ -6862,397 +7731,469 @@ type $OpenApiTs = {
6862
7731
  };
6863
7732
  };
6864
7733
  };
6865
- '/api/v1/{region}/bean/transaction-rules': {
7734
+ '/api/v1/{region}/reporting/portfolio/trends': {
7735
+ get: {
7736
+ req: ReportingControllerGetPortfolioTrendsData;
7737
+ res: {
7738
+ /**
7739
+ * Trends retrieved successfully
7740
+ */
7741
+ 200: PortfolioTrendsResponseDto;
7742
+ /**
7743
+ * User not authenticated
7744
+ */
7745
+ 401: unknown;
7746
+ };
7747
+ };
7748
+ };
7749
+ '/api/v1/{region}/reporting/cash-flow/trends': {
7750
+ get: {
7751
+ req: ReportingControllerGetCashFlowTrendsData;
7752
+ res: {
7753
+ /**
7754
+ * Cash-flow trends retrieved successfully
7755
+ */
7756
+ 200: CashFlowTrendsResponseDto;
7757
+ /**
7758
+ * User not authenticated
7759
+ */
7760
+ 401: unknown;
7761
+ };
7762
+ };
7763
+ };
7764
+ '/api/v1/{region}/reporting/snapshots/generate': {
6866
7765
  post: {
6867
- req: TransactionRuleControllerCreateData;
7766
+ req: ReportingControllerGenerateSnapshotData;
6868
7767
  res: {
6869
7768
  /**
6870
- * Rule updated successfully (upsert mode)
7769
+ * Snapshot generated successfully
6871
7770
  */
6872
- 200: TransactionRuleResponseDto;
7771
+ 200: GenerateSnapshotResponse;
6873
7772
  /**
6874
- * Validation failed
7773
+ * Invalid date format
7774
+ */
7775
+ 400: unknown;
7776
+ /**
7777
+ * User not authenticated
7778
+ */
7779
+ 401: unknown;
7780
+ };
7781
+ };
7782
+ };
7783
+ '/api/v1/{region}/reporting/snapshots/backfill': {
7784
+ post: {
7785
+ req: ReportingControllerBackfillSnapshotsData;
7786
+ res: {
7787
+ /**
7788
+ * Backfill completed successfully
7789
+ */
7790
+ 200: BackfillSnapshotsResponse;
7791
+ /**
7792
+ * Invalid date format or range
7793
+ */
7794
+ 400: unknown;
7795
+ /**
7796
+ * User not authenticated
7797
+ */
7798
+ 401: unknown;
7799
+ /**
7800
+ * Backfill already in progress for this user
7801
+ */
7802
+ 409: unknown;
7803
+ };
7804
+ };
7805
+ };
7806
+ '/api/v1/users': {
7807
+ delete: {
7808
+ req: UserControllerDeleteOwnUserData;
7809
+ res: {
7810
+ /**
7811
+ * User deleted successfully
7812
+ */
7813
+ 204: void;
7814
+ /**
7815
+ * Invalid access token
7816
+ */
7817
+ 403: unknown;
7818
+ };
7819
+ };
7820
+ get: {
7821
+ req: UserControllerGetUserData;
7822
+ res: {
7823
+ /**
7824
+ * User retrieved successfully
7825
+ */
7826
+ 200: unknown;
7827
+ };
7828
+ };
7829
+ post: {
7830
+ req: UserControllerSignupUserData;
7831
+ res: {
7832
+ /**
7833
+ * User created successfully
6875
7834
  */
6876
- 400: ApiProblemResponseDto;
7835
+ 201: SignupResponseDto;
6877
7836
  /**
6878
- * Unauthorized
7837
+ * Invalid Turnstile token (when Turnstile is enabled)
6879
7838
  */
6880
- 401: ApiProblemResponseDto;
7839
+ 400: unknown;
6881
7840
  /**
6882
- * Resource conflict - another process is updating this rule
7841
+ * User signup is disabled
6883
7842
  */
6884
- 409: ApiProblemResponseDto;
7843
+ 403: unknown;
6885
7844
  };
6886
7845
  };
6887
- get: {
6888
- req: TransactionRuleControllerListData;
7846
+ };
7847
+ '/api/v1/users/{id}': {
7848
+ delete: {
7849
+ req: UserControllerDeleteUserData;
6889
7850
  res: {
6890
7851
  /**
6891
- * List of rules
7852
+ * User deleted successfully
6892
7853
  */
6893
- 200: TransactionRuleListResponseDto;
7854
+ 204: void;
6894
7855
  /**
6895
- * Unauthorized
7856
+ * Cannot delete own account or insufficient permissions
6896
7857
  */
6897
- 401: ApiProblemResponseDto;
7858
+ 403: unknown;
6898
7859
  };
6899
7860
  };
6900
7861
  };
6901
- '/api/v1/{region}/bean/transaction-rules/validate': {
6902
- post: {
6903
- req: TransactionRuleControllerValidateData;
7862
+ '/api/v1/users/{id}/info': {
7863
+ get: {
7864
+ req: UserControllerGetUserInfoData;
6904
7865
  res: {
6905
7866
  /**
6906
- * Validation result
6907
- */
6908
- 200: ValidateRuleResponseDto;
6909
- /**
6910
- * Validation failed
7867
+ * User info retrieved successfully
6911
7868
  */
6912
- 400: ApiProblemResponseDto;
7869
+ 200: unknown;
6913
7870
  /**
6914
- * Unauthorized
7871
+ * Cannot access other user info without admin permission
6915
7872
  */
6916
- 401: ApiProblemResponseDto;
7873
+ 403: unknown;
6917
7874
  };
6918
7875
  };
6919
7876
  };
6920
- '/api/v1/{region}/bean/transaction-rules/bulk': {
6921
- post: {
6922
- req: TransactionRuleControllerBulkCreateData;
7877
+ '/api/v1/users/setting': {
7878
+ put: {
7879
+ req: UserControllerUpdateUserSettingData;
6923
7880
  res: {
6924
7881
  /**
6925
- * Bulk create completed
6926
- */
6927
- 201: BulkCreateRulesResponseDto;
6928
- /**
6929
- * Invalid bulk create data
7882
+ * Settings updated successfully
6930
7883
  */
6931
- 400: ApiProblemResponseDto;
7884
+ 200: unknown;
6932
7885
  /**
6933
- * Unauthorized
7886
+ * Insufficient permissions
6934
7887
  */
6935
- 401: ApiProblemResponseDto;
7888
+ 403: unknown;
6936
7889
  };
6937
7890
  };
6938
7891
  };
6939
- '/api/v1/{region}/bean/transaction-rules/export/{format}': {
7892
+ '/api/v1/users/settings-by-page': {
6940
7893
  get: {
6941
- req: TransactionRuleControllerExportData;
7894
+ req: UserControllerGetAllUserSettingsByPageData;
6942
7895
  res: {
6943
7896
  /**
6944
- * Exported rules
6945
- */
6946
- 200: ExportRulesResponseDto;
6947
- /**
6948
- * Unsupported format
7897
+ * Settings list retrieved successfully
6949
7898
  */
6950
- 400: ApiProblemResponseDto;
7899
+ 200: unknown;
7900
+ };
7901
+ };
7902
+ };
7903
+ '/api/v1/users/asset-liability-summary': {
7904
+ get: {
7905
+ res: {
6951
7906
  /**
6952
- * Unauthorized
7907
+ * Summary retrieved successfully
6953
7908
  */
6954
- 401: ApiProblemResponseDto;
7909
+ 200: unknown;
6955
7910
  };
6956
7911
  };
6957
7912
  };
6958
- '/api/v1/{region}/bean/transaction-rules/statistics/{period}': {
7913
+ '/api/v1/admin/properties': {
6959
7914
  get: {
6960
- req: TransactionRuleControllerGetStatisticsData;
6961
7915
  res: {
6962
7916
  /**
6963
- * Rule statistics
7917
+ * Properties retrieved successfully
6964
7918
  */
6965
- 200: RuleStatisticsResponseDto;
7919
+ 200: unknown;
6966
7920
  /**
6967
7921
  * Unauthorized
6968
7922
  */
6969
- 401: ApiProblemResponseDto;
7923
+ 401: unknown;
7924
+ /**
7925
+ * Forbidden - insufficient permissions
7926
+ */
7927
+ 403: unknown;
6970
7928
  };
6971
7929
  };
6972
7930
  };
6973
- '/api/v1/{region}/bean/transaction-rules/{ruleId}': {
7931
+ '/api/v1/admin/properties/{key}': {
6974
7932
  get: {
6975
- req: TransactionRuleControllerGetDetailData;
7933
+ req: PropertyControllerGetByKeyData;
6976
7934
  res: {
6977
7935
  /**
6978
- * Rule details
7936
+ * Property retrieved successfully
6979
7937
  */
6980
- 200: TransactionRuleResponseDto;
7938
+ 200: unknown;
6981
7939
  /**
6982
7940
  * Unauthorized
6983
7941
  */
6984
- 401: ApiProblemResponseDto;
7942
+ 401: unknown;
6985
7943
  /**
6986
- * Forbidden - not owner of rule
7944
+ * Forbidden - insufficient permissions
6987
7945
  */
6988
- 403: ApiProblemResponseDto;
7946
+ 403: unknown;
6989
7947
  /**
6990
- * Rule not found
7948
+ * Property not found
6991
7949
  */
6992
- 404: ApiProblemResponseDto;
7950
+ 404: unknown;
6993
7951
  };
6994
7952
  };
6995
7953
  put: {
6996
- req: TransactionRuleControllerUpdateData;
7954
+ req: PropertyControllerUpdateData;
6997
7955
  res: {
6998
7956
  /**
6999
- * Rule updated successfully
7000
- */
7001
- 200: TransactionRuleResponseDto;
7002
- /**
7003
- * Validation failed
7957
+ * Property updated successfully
7004
7958
  */
7005
- 400: ApiProblemResponseDto;
7959
+ 200: unknown;
7006
7960
  /**
7007
7961
  * Unauthorized
7008
7962
  */
7009
- 401: ApiProblemResponseDto;
7010
- /**
7011
- * Forbidden - not owner of rule
7012
- */
7013
- 403: ApiProblemResponseDto;
7014
- /**
7015
- * Rule not found
7016
- */
7017
- 404: ApiProblemResponseDto;
7963
+ 401: unknown;
7018
7964
  /**
7019
- * Resource conflict - rule is being modified by another process
7965
+ * Forbidden - insufficient permissions
7020
7966
  */
7021
- 409: ApiProblemResponseDto;
7967
+ 403: unknown;
7022
7968
  };
7023
7969
  };
7024
7970
  delete: {
7025
- req: TransactionRuleControllerDeleteData;
7971
+ req: PropertyControllerDeleteData;
7026
7972
  res: {
7027
7973
  /**
7028
- * Rule deleted successfully
7974
+ * Property deleted successfully
7029
7975
  */
7030
7976
  204: void;
7031
7977
  /**
7032
7978
  * Unauthorized
7033
7979
  */
7034
- 401: ApiProblemResponseDto;
7035
- /**
7036
- * Forbidden - not owner of rule
7037
- */
7038
- 403: ApiProblemResponseDto;
7980
+ 401: unknown;
7039
7981
  /**
7040
- * Rule not found
7982
+ * Forbidden - insufficient permissions
7041
7983
  */
7042
- 404: ApiProblemResponseDto;
7984
+ 403: unknown;
7043
7985
  /**
7044
- * Resource conflict - rule is being modified by another process
7986
+ * Property not found
7045
7987
  */
7046
- 409: ApiProblemResponseDto;
7988
+ 404: unknown;
7047
7989
  };
7048
7990
  };
7049
7991
  };
7050
- '/api/v1/{region}/bean/transaction-rules/{ruleId}/test': {
7992
+ '/api/v1/{region}/bean/transaction-rules': {
7051
7993
  post: {
7052
- req: TransactionRuleControllerTestData;
7994
+ req: TransactionRuleControllerCreateData;
7053
7995
  res: {
7054
7996
  /**
7055
- * Test result
7997
+ * Rule updated successfully (upsert mode)
7056
7998
  */
7057
- 200: TestRuleResponseDto;
7999
+ 200: TransactionRuleResponseDto;
7058
8000
  /**
7059
- * Unauthorized
8001
+ * Validation failed
7060
8002
  */
7061
- 401: ApiProblemResponseDto;
8003
+ 400: ApiProblemResponseDto;
7062
8004
  /**
7063
- * Forbidden - not owner of rule
8005
+ * Unauthorized
7064
8006
  */
7065
- 403: ApiProblemResponseDto;
8007
+ 401: ApiProblemResponseDto;
7066
8008
  /**
7067
- * Rule not found
8009
+ * Resource conflict - another process is updating this rule
7068
8010
  */
7069
- 404: ApiProblemResponseDto;
8011
+ 409: ApiProblemResponseDto;
7070
8012
  };
7071
8013
  };
7072
- };
7073
- '/api/v1/users': {
7074
- delete: {
7075
- req: UserControllerDeleteOwnUserData;
8014
+ get: {
8015
+ req: TransactionRuleControllerListData;
7076
8016
  res: {
7077
8017
  /**
7078
- * User deleted successfully
7079
- */
7080
- 204: void;
7081
- /**
7082
- * Invalid access token
8018
+ * List of rules
7083
8019
  */
7084
- 403: unknown;
7085
- };
7086
- };
7087
- get: {
7088
- req: UserControllerGetUserData;
7089
- res: {
8020
+ 200: TransactionRuleListResponseDto;
7090
8021
  /**
7091
- * User retrieved successfully
8022
+ * Unauthorized
7092
8023
  */
7093
- 200: unknown;
8024
+ 401: ApiProblemResponseDto;
7094
8025
  };
7095
8026
  };
8027
+ };
8028
+ '/api/v1/{region}/bean/transaction-rules/validate': {
7096
8029
  post: {
7097
- req: UserControllerSignupUserData;
8030
+ req: TransactionRuleControllerValidateData;
7098
8031
  res: {
7099
8032
  /**
7100
- * User created successfully
8033
+ * Validation result
7101
8034
  */
7102
- 201: unknown;
8035
+ 200: ValidateRuleResponseDto;
7103
8036
  /**
7104
- * Invalid Turnstile token (when Turnstile is enabled)
8037
+ * Validation failed
7105
8038
  */
7106
- 400: unknown;
8039
+ 400: ApiProblemResponseDto;
7107
8040
  /**
7108
- * User signup is disabled
8041
+ * Unauthorized
7109
8042
  */
7110
- 403: unknown;
8043
+ 401: ApiProblemResponseDto;
7111
8044
  };
7112
8045
  };
7113
8046
  };
7114
- '/api/v1/users/{id}': {
7115
- delete: {
7116
- req: UserControllerDeleteUserData;
8047
+ '/api/v1/{region}/bean/transaction-rules/bulk': {
8048
+ post: {
8049
+ req: TransactionRuleControllerBulkCreateData;
7117
8050
  res: {
7118
8051
  /**
7119
- * User deleted successfully
8052
+ * Bulk create completed
7120
8053
  */
7121
- 204: void;
8054
+ 201: BulkCreateRulesResponseDto;
7122
8055
  /**
7123
- * Cannot delete own account or insufficient permissions
8056
+ * Invalid bulk create data
7124
8057
  */
7125
- 403: unknown;
8058
+ 400: ApiProblemResponseDto;
8059
+ /**
8060
+ * Unauthorized
8061
+ */
8062
+ 401: ApiProblemResponseDto;
7126
8063
  };
7127
8064
  };
7128
8065
  };
7129
- '/api/v1/users/{id}/info': {
8066
+ '/api/v1/{region}/bean/transaction-rules/export/{format}': {
7130
8067
  get: {
7131
- req: UserControllerGetUserInfoData;
8068
+ req: TransactionRuleControllerExportData;
7132
8069
  res: {
7133
8070
  /**
7134
- * User info retrieved successfully
7135
- */
7136
- 200: unknown;
7137
- /**
7138
- * Cannot access other user info without admin permission
8071
+ * Exported rules
7139
8072
  */
7140
- 403: unknown;
7141
- };
7142
- };
7143
- };
7144
- '/api/v1/users/setting': {
7145
- put: {
7146
- req: UserControllerUpdateUserSettingData;
7147
- res: {
8073
+ 200: ExportRulesResponseDto;
7148
8074
  /**
7149
- * Settings updated successfully
8075
+ * Unsupported format
7150
8076
  */
7151
- 200: unknown;
8077
+ 400: ApiProblemResponseDto;
7152
8078
  /**
7153
- * Insufficient permissions
8079
+ * Unauthorized
7154
8080
  */
7155
- 403: unknown;
8081
+ 401: ApiProblemResponseDto;
7156
8082
  };
7157
8083
  };
7158
8084
  };
7159
- '/api/v1/users/settings-by-page': {
8085
+ '/api/v1/{region}/bean/transaction-rules/statistics/{period}': {
7160
8086
  get: {
7161
- req: UserControllerGetAllUserSettingsByPageData;
8087
+ req: TransactionRuleControllerGetStatisticsData;
7162
8088
  res: {
7163
8089
  /**
7164
- * Settings list retrieved successfully
8090
+ * Rule statistics
7165
8091
  */
7166
- 200: unknown;
7167
- };
7168
- };
7169
- };
7170
- '/api/v1/users/asset-liability-summary': {
7171
- get: {
7172
- res: {
8092
+ 200: RuleStatisticsResponseDto;
7173
8093
  /**
7174
- * Summary retrieved successfully
8094
+ * Unauthorized
7175
8095
  */
7176
- 200: unknown;
8096
+ 401: ApiProblemResponseDto;
7177
8097
  };
7178
8098
  };
7179
8099
  };
7180
- '/api/v1/admin/properties': {
8100
+ '/api/v1/{region}/bean/transaction-rules/{ruleId}': {
7181
8101
  get: {
8102
+ req: TransactionRuleControllerGetDetailData;
7182
8103
  res: {
7183
8104
  /**
7184
- * Properties retrieved successfully
8105
+ * Rule details
7185
8106
  */
7186
- 200: unknown;
8107
+ 200: TransactionRuleResponseDto;
7187
8108
  /**
7188
8109
  * Unauthorized
7189
8110
  */
7190
- 401: unknown;
8111
+ 401: ApiProblemResponseDto;
7191
8112
  /**
7192
- * Forbidden - insufficient permissions
8113
+ * Forbidden - not owner of rule
7193
8114
  */
7194
- 403: unknown;
8115
+ 403: ApiProblemResponseDto;
8116
+ /**
8117
+ * Rule not found
8118
+ */
8119
+ 404: ApiProblemResponseDto;
7195
8120
  };
7196
8121
  };
7197
- };
7198
- '/api/v1/admin/properties/{key}': {
7199
- get: {
7200
- req: PropertyControllerGetByKeyData;
8122
+ put: {
8123
+ req: TransactionRuleControllerUpdateData;
7201
8124
  res: {
7202
8125
  /**
7203
- * Property retrieved successfully
8126
+ * Rule updated successfully
7204
8127
  */
7205
- 200: unknown;
8128
+ 200: TransactionRuleResponseDto;
8129
+ /**
8130
+ * Validation failed
8131
+ */
8132
+ 400: ApiProblemResponseDto;
7206
8133
  /**
7207
8134
  * Unauthorized
7208
8135
  */
7209
- 401: unknown;
8136
+ 401: ApiProblemResponseDto;
7210
8137
  /**
7211
- * Forbidden - insufficient permissions
8138
+ * Forbidden - not owner of rule
7212
8139
  */
7213
- 403: unknown;
8140
+ 403: ApiProblemResponseDto;
7214
8141
  /**
7215
- * Property not found
8142
+ * Rule not found
7216
8143
  */
7217
- 404: unknown;
8144
+ 404: ApiProblemResponseDto;
8145
+ /**
8146
+ * Resource conflict - rule is being modified by another process
8147
+ */
8148
+ 409: ApiProblemResponseDto;
7218
8149
  };
7219
8150
  };
7220
- put: {
7221
- req: PropertyControllerUpdateData;
8151
+ delete: {
8152
+ req: TransactionRuleControllerDeleteData;
7222
8153
  res: {
7223
8154
  /**
7224
- * Property updated successfully
8155
+ * Rule deleted successfully
7225
8156
  */
7226
- 200: unknown;
8157
+ 204: void;
7227
8158
  /**
7228
8159
  * Unauthorized
7229
8160
  */
7230
- 401: unknown;
8161
+ 401: ApiProblemResponseDto;
7231
8162
  /**
7232
- * Forbidden - insufficient permissions
8163
+ * Forbidden - not owner of rule
7233
8164
  */
7234
- 403: unknown;
8165
+ 403: ApiProblemResponseDto;
8166
+ /**
8167
+ * Rule not found
8168
+ */
8169
+ 404: ApiProblemResponseDto;
8170
+ /**
8171
+ * Resource conflict - rule is being modified by another process
8172
+ */
8173
+ 409: ApiProblemResponseDto;
7235
8174
  };
7236
8175
  };
7237
- delete: {
7238
- req: PropertyControllerDeleteData;
8176
+ };
8177
+ '/api/v1/{region}/bean/transaction-rules/{ruleId}/test': {
8178
+ post: {
8179
+ req: TransactionRuleControllerTestData;
7239
8180
  res: {
7240
8181
  /**
7241
- * Property deleted successfully
8182
+ * Test result
7242
8183
  */
7243
- 204: void;
8184
+ 200: TestRuleResponseDto;
7244
8185
  /**
7245
8186
  * Unauthorized
7246
8187
  */
7247
- 401: unknown;
8188
+ 401: ApiProblemResponseDto;
7248
8189
  /**
7249
- * Forbidden - insufficient permissions
8190
+ * Forbidden - not owner of rule
7250
8191
  */
7251
- 403: unknown;
8192
+ 403: ApiProblemResponseDto;
7252
8193
  /**
7253
- * Property not found
8194
+ * Rule not found
7254
8195
  */
7255
- 404: unknown;
8196
+ 404: ApiProblemResponseDto;
7256
8197
  };
7257
8198
  };
7258
8199
  };
@@ -7333,6 +8274,104 @@ type $OpenApiTs = {
7333
8274
  };
7334
8275
  };
7335
8276
  };
8277
+ '/api/v1/{region}/bean/events/{id}/slice': {
8278
+ get: {
8279
+ req: EventControllerGetSliceData;
8280
+ res: {
8281
+ /**
8282
+ * Time-series sliced by the life event range
8283
+ */
8284
+ 200: unknown;
8285
+ /**
8286
+ * accountPattern query param is empty
8287
+ */
8288
+ 400: unknown;
8289
+ /**
8290
+ * Life event not found
8291
+ */
8292
+ 404: unknown;
8293
+ };
8294
+ };
8295
+ };
8296
+ '/api/v1/{region}/bean/onboarding': {
8297
+ post: {
8298
+ req: OnboardingControllerBootstrapData;
8299
+ res: {
8300
+ /**
8301
+ * Onboarding bootstrap result.
8302
+ */
8303
+ 201: unknown;
8304
+ /**
8305
+ * Invalid region/account path/duplicate paths.
8306
+ */
8307
+ 422: unknown;
8308
+ };
8309
+ };
8310
+ };
8311
+ '/api/v1/{region}/bean/reconciliations': {
8312
+ post: {
8313
+ req: ReconciliationControllerComputeData;
8314
+ res: {
8315
+ /**
8316
+ * Reconciliation preview
8317
+ */
8318
+ 200: ReconciliationComputeResultDto;
8319
+ /**
8320
+ * Account not found
8321
+ */
8322
+ 404: unknown;
8323
+ };
8324
+ };
8325
+ };
8326
+ '/api/v1/{region}/bean/reconciliations/assert': {
8327
+ post: {
8328
+ req: ReconciliationControllerAssertData;
8329
+ res: {
8330
+ /**
8331
+ * Balance assertion recorded
8332
+ */
8333
+ 201: ReconciliationRecordDto;
8334
+ /**
8335
+ * Account not found
8336
+ */
8337
+ 404: unknown;
8338
+ };
8339
+ };
8340
+ };
8341
+ '/api/v1/{region}/bean/reconciliations/pad': {
8342
+ post: {
8343
+ req: ReconciliationControllerPadData;
8344
+ res: {
8345
+ /**
8346
+ * Pad adjusting entry generated
8347
+ */
8348
+ 201: PadResultDto;
8349
+ /**
8350
+ * Book already within tolerance — no pad needed
8351
+ */
8352
+ 400: unknown;
8353
+ /**
8354
+ * Account not found
8355
+ */
8356
+ 404: unknown;
8357
+ };
8358
+ };
8359
+ };
8360
+ '/api/v1/{region}/bean/accounts/{accountId}/reconciliations': {
8361
+ get: {
8362
+ req: ReconciliationControllerHistoryData;
8363
+ res: {
8364
+ /**
8365
+ * Reconciliation history
8366
+ */
8367
+ 200: Array<ReconciliationRecordDto>;
8368
+ /**
8369
+ * Account not found
8370
+ */
8371
+ 404: unknown;
8372
+ };
8373
+ };
8374
+ };
7336
8375
  '/api/v1/{region}/bean/export/beancount': {
7337
8376
  get: {
7338
8377
  res: {
@@ -7443,115 +8482,43 @@ type $OpenApiTs = {
7443
8482
  /**
7444
8483
  * Invalid input - Unsupported importer
7445
8484
  */
7446
- 400: ApiProblemResponseDto;
7447
- /**
7448
- * Unauthorized - Authentication required
7449
- */
7450
- 401: ApiProblemResponseDto;
7451
- };
7452
- };
7453
- put: {
7454
- req: ImporterConfigControllerUpdateConfigData;
7455
- res: {
7456
- /**
7457
- * Configuration updated successfully
7458
- */
7459
- 200: ImporterConfigDto;
7460
- /**
7461
- * Invalid input - Validation failed
7462
- */
7463
- 400: ApiProblemResponseDto;
7464
- /**
7465
- * Configuration not found
7466
- */
7467
- 404: ApiProblemResponseDto;
7468
- };
7469
- };
7470
- };
7471
- '/api/v1/{region}/bean/import/config/{importerId}/reset': {
7472
- post: {
7473
- req: ImporterConfigControllerResetConfigData;
7474
- res: {
7475
- /**
7476
- * Configuration reset successfully
7477
- */
7478
- 200: ImporterConfigDto;
7479
- /**
7480
- * Invalid input - Unsupported importer
7481
- */
7482
- 400: ApiProblemResponseDto;
7483
- };
7484
- };
7485
- };
7486
- '/api/v1/bean/platforms': {
7487
- get: {
7488
- res: {
7489
- /**
7490
- * List of platforms with binding and account counts
7491
- */
7492
- 200: unknown;
7493
- };
7494
- };
7495
- post: {
7496
- req: PlatformControllerCreateData;
7497
- res: {
7498
- /**
7499
- * Platform created successfully
7500
- */
7501
- 201: unknown;
7502
- /**
7503
- * Platform already exists
7504
- */
7505
- 409: unknown;
7506
- };
7507
- };
7508
- };
7509
- '/api/v1/bean/platforms/list': {
7510
- get: {
7511
- res: {
7512
- /**
7513
- * List of platforms with user binding status
7514
- */
7515
- 200: unknown;
7516
- };
7517
- };
7518
- };
7519
- '/api/v1/bean/platforms/match': {
7520
- get: {
7521
- req: PlatformControllerMatchPlatformsData;
7522
- res: {
8485
+ 400: ApiProblemResponseDto;
7523
8486
  /**
7524
- * List of matching platforms with suggested segment names
8487
+ * Unauthorized - Authentication required
7525
8488
  */
7526
- 200: unknown;
8489
+ 401: ApiProblemResponseDto;
7527
8490
  };
7528
8491
  };
7529
- };
7530
- '/api/v1/bean/platforms/{id}': {
7531
8492
  put: {
7532
- req: PlatformControllerUpdateData;
8493
+ req: ImporterConfigControllerUpdateConfigData;
7533
8494
  res: {
7534
8495
  /**
7535
- * Platform updated successfully
8496
+ * Configuration updated successfully
7536
8497
  */
7537
- 200: unknown;
8498
+ 200: ImporterConfigDto;
7538
8499
  /**
7539
- * Platform not found
8500
+ * Invalid input - Validation failed
7540
8501
  */
7541
- 404: unknown;
8502
+ 400: ApiProblemResponseDto;
8503
+ /**
8504
+ * Configuration not found
8505
+ */
8506
+ 404: ApiProblemResponseDto;
7542
8507
  };
7543
8508
  };
7544
- delete: {
7545
- req: PlatformControllerDeleteData;
8509
+ };
8510
+ '/api/v1/{region}/bean/import/config/{importerId}/reset': {
8511
+ post: {
8512
+ req: ImporterConfigControllerResetConfigData;
7546
8513
  res: {
7547
8514
  /**
7548
- * Platform deleted successfully
8515
+ * Configuration reset successfully
7549
8516
  */
7550
- 204: void;
8517
+ 200: ImporterConfigDto;
7551
8518
  /**
7552
- * Platform not found
8519
+ * Invalid input - Unsupported importer
7553
8520
  */
7554
- 404: unknown;
8521
+ 400: ApiProblemResponseDto;
7555
8522
  };
7556
8523
  };
7557
8524
  };
@@ -7608,6 +8575,54 @@ type $OpenApiTs = {
7608
8575
  };
7609
8576
  };
7610
8577
  };
8578
+ '/api/v1/{region}/bean/external-account-links': {
8579
+ post: {
8580
+ req: ExternalAccountLinkControllerCreateData;
8581
+ res: {
8582
+ /**
8583
+ * Link created.
8584
+ */
8585
+ 201: ExternalAccountLinkResponseDto;
8586
+ /**
8587
+ * beanAccountId not owned, or an active link already exists.
8588
+ */
8589
+ 422: unknown;
8590
+ };
8591
+ };
8592
+ get: {
8593
+ req: ExternalAccountLinkControllerFindAllData;
8594
+ res: {
8595
+ /**
8596
+ * Links retrieved.
8597
+ */
8598
+ 200: ExternalAccountLinkListResponseDto;
8599
+ };
8600
+ };
8601
+ };
8602
+ '/api/v1/{region}/bean/external-account-links/{id}': {
8603
+ get: {
8604
+ req: ExternalAccountLinkControllerFindOneData;
8605
+ res: {
8606
+ /**
8607
+ * Link retrieved.
8608
+ */
8609
+ 200: ExternalAccountLinkResponseDto;
8610
+ /**
8611
+ * Link not found or not owned by the user.
8612
+ */
8613
+ 422: unknown;
8614
+ };
8615
+ };
8616
+ delete: {
8617
+ req: ExternalAccountLinkControllerRemoveData;
8618
+ res: {
8619
+ /**
8620
+ * Link soft-deleted; historical transactions are unaffected.
8621
+ */
8622
+ 204: void;
8623
+ };
8624
+ };
8625
+ };
7611
8626
  '/api/v1/{region}/bean/import/parser-telemetry': {
7612
8627
  post: {
7613
8628
  req: TelemetryControllerReportTelemetryData;
@@ -7696,166 +8711,120 @@ type $OpenApiTs = {
7696
8711
  };
7697
8712
  };
7698
8713
  };
7699
- '/api/v1/{region}/dashboard/net-worth': {
8714
+ '/api/v1/bean/platforms': {
7700
8715
  get: {
7701
- req: DashboardControllerGetNetWorthData;
7702
8716
  res: {
7703
8717
  /**
7704
- * Net worth retrieved successfully
7705
- */
7706
- 200: NetWorthResponseDto;
7707
- /**
7708
- * User not authenticated
8718
+ * List of platforms with binding and account counts
7709
8719
  */
7710
- 401: unknown;
8720
+ 200: unknown;
7711
8721
  };
7712
8722
  };
7713
- };
7714
- '/api/v1/{region}/dashboard/accounts': {
7715
- get: {
7716
- req: DashboardControllerGetAccountsData;
8723
+ post: {
8724
+ req: PlatformControllerCreateData;
7717
8725
  res: {
7718
8726
  /**
7719
- * Accounts retrieved successfully. Response type depends on groupBy parameter.
8727
+ * Platform created successfully
7720
8728
  */
7721
- 200: AccountsResponseDto | AssetClassAccountsResponseDto | HoldingAssetClassCrossAccountResponseDto;
8729
+ 201: unknown;
7722
8730
  /**
7723
- * User not authenticated
8731
+ * Platform already exists
7724
8732
  */
7725
- 401: unknown;
8733
+ 409: unknown;
7726
8734
  };
7727
8735
  };
7728
8736
  };
7729
- '/api/v1/{region}/dashboard/cash-flow': {
8737
+ '/api/v1/bean/platforms/list': {
7730
8738
  get: {
7731
- req: DashboardControllerGetCashFlowData;
7732
8739
  res: {
7733
8740
  /**
7734
- * Cash flow retrieved successfully
7735
- */
7736
- 200: CashFlowResponseDto;
7737
- /**
7738
- * Invalid period format
7739
- */
7740
- 400: unknown;
7741
- /**
7742
- * User not authenticated
8741
+ * List of platforms with user binding status
7743
8742
  */
7744
- 401: unknown;
8743
+ 200: Array<PlatformListItemDto>;
7745
8744
  };
7746
8745
  };
7747
8746
  };
7748
- '/api/v1/{region}/investment/holdings/pnl': {
8747
+ '/api/v1/bean/platforms/match': {
7749
8748
  get: {
7750
- req: HoldingPnlControllerGetHoldingPnlData;
8749
+ req: PlatformControllerMatchPlatformsData;
7751
8750
  res: {
7752
8751
  /**
7753
- * Holding P&L retrieved successfully
7754
- */
7755
- 200: HoldingPnlResponseDto;
7756
- /**
7757
- * Invalid asOf format/value/future date, invalid accountId format, or unsupported method
7758
- */
7759
- 400: unknown;
7760
- /**
7761
- * User not authenticated
8752
+ * Matching platforms with overall match type and truncation flag
7762
8753
  */
7763
- 401: unknown;
8754
+ 200: PlatformMatchResponseDto;
7764
8755
  };
7765
8756
  };
7766
8757
  };
7767
- '/api/v1/{region}/bean/prices': {
7768
- post: {
7769
- req: PriceControllerCreateData;
8758
+ '/api/v1/bean/platforms/{id}': {
8759
+ put: {
8760
+ req: PlatformControllerUpdateData;
7770
8761
  res: {
7771
8762
  /**
7772
- * Price created successfully
8763
+ * Platform updated successfully
7773
8764
  */
7774
- 201: PriceResponseDto;
8765
+ 200: unknown;
7775
8766
  /**
7776
- * Currency or quoteCurrency commodity not found
8767
+ * Platform not found
7777
8768
  */
7778
8769
  404: unknown;
7779
- /**
7780
- * Price already exists for this currency pair and date
7781
- */
7782
- 409: unknown;
7783
- };
7784
- };
7785
- get: {
7786
- req: PriceControllerFindAllData;
7787
- res: {
7788
- /**
7789
- * Prices retrieved successfully
7790
- */
7791
- 200: PriceListResponseDto;
7792
8770
  };
7793
8771
  };
7794
- };
7795
- '/api/v1/{region}/bean/prices/{id}': {
7796
- get: {
7797
- req: PriceControllerFindOneData;
8772
+ delete: {
8773
+ req: PlatformControllerDeleteData;
7798
8774
  res: {
7799
8775
  /**
7800
- * Price retrieved successfully
8776
+ * Platform deleted successfully
7801
8777
  */
7802
- 200: PriceResponseDto;
8778
+ 204: void;
7803
8779
  /**
7804
- * Price not found
8780
+ * Platform not found
7805
8781
  */
7806
8782
  404: unknown;
7807
8783
  };
7808
8784
  };
7809
- put: {
7810
- req: PriceControllerUpdateData;
8785
+ };
8786
+ '/api/v1/{region}/dashboard/net-worth': {
8787
+ get: {
8788
+ req: DashboardControllerGetNetWorthData;
7811
8789
  res: {
7812
8790
  /**
7813
- * Price updated successfully
7814
- */
7815
- 200: PriceResponseDto;
7816
- /**
7817
- * Price not found
8791
+ * Net worth retrieved successfully
7818
8792
  */
7819
- 404: unknown;
8793
+ 200: NetWorthResponseDto;
7820
8794
  /**
7821
- * Updated price conflicts with existing price
8795
+ * User not authenticated
7822
8796
  */
7823
- 409: unknown;
8797
+ 401: unknown;
7824
8798
  };
7825
8799
  };
7826
- delete: {
7827
- req: PriceControllerDeleteData;
8800
+ };
8801
+ '/api/v1/{region}/dashboard/accounts': {
8802
+ get: {
8803
+ req: DashboardControllerGetAccountsData;
7828
8804
  res: {
7829
8805
  /**
7830
- * Price deleted successfully
8806
+ * Accounts retrieved successfully. Response type depends on groupBy parameter.
7831
8807
  */
7832
- 204: void;
8808
+ 200: AccountsResponseDto | AssetClassAccountsResponseDto | HoldingAssetClassCrossAccountResponseDto;
7833
8809
  /**
7834
- * Price not found
8810
+ * User not authenticated
7835
8811
  */
7836
- 404: unknown;
8812
+ 401: unknown;
7837
8813
  };
7838
8814
  };
7839
8815
  };
7840
- '/api/v1/{region}/bean/prices/bulk': {
7841
- post: {
7842
- req: PriceControllerBulkCreateData;
8816
+ '/api/v1/{region}/dashboard/cash-flow': {
8817
+ get: {
8818
+ req: DashboardControllerGetCashFlowData;
7843
8819
  res: {
7844
8820
  /**
7845
- * Prices created successfully
8821
+ * Cash flow retrieved successfully
7846
8822
  */
7847
- 201: Array<PriceResponseDto>;
7848
- };
7849
- };
7850
- };
7851
- '/api/v1/{region}/reporting/portfolio/trends': {
7852
- get: {
7853
- req: ReportingControllerGetPortfolioTrendsData;
7854
- res: {
8823
+ 200: CashFlowResponseDto;
7855
8824
  /**
7856
- * Trends retrieved successfully
8825
+ * Invalid period format
7857
8826
  */
7858
- 200: PortfolioTrendsResponseDto;
8827
+ 400: unknown;
7859
8828
  /**
7860
8829
  * User not authenticated
7861
8830
  */
@@ -7863,16 +8832,16 @@ type $OpenApiTs = {
7863
8832
  };
7864
8833
  };
7865
8834
  };
7866
- '/api/v1/{region}/reporting/snapshots/generate': {
7867
- post: {
7868
- req: ReportingControllerGenerateSnapshotData;
8835
+ '/api/v1/{region}/dashboard/expenses': {
8836
+ get: {
8837
+ req: DashboardControllerGetExpensesData;
7869
8838
  res: {
7870
8839
  /**
7871
- * Snapshot generated successfully
8840
+ * Expenses retrieved successfully
7872
8841
  */
7873
- 200: GenerateSnapshotResponse;
8842
+ 200: ExpensesByCategoryResponseDto;
7874
8843
  /**
7875
- * Invalid date format
8844
+ * Invalid groupBy or period
7876
8845
  */
7877
8846
  400: unknown;
7878
8847
  /**
@@ -7882,26 +8851,22 @@ type $OpenApiTs = {
7882
8851
  };
7883
8852
  };
7884
8853
  };
7885
- '/api/v1/{region}/reporting/snapshots/backfill': {
7886
- post: {
7887
- req: ReportingControllerBackfillSnapshotsData;
8854
+ '/api/v1/{region}/investment/holdings/pnl': {
8855
+ get: {
8856
+ req: HoldingPnlControllerGetHoldingPnlData;
7888
8857
  res: {
7889
8858
  /**
7890
- * Backfill completed successfully
8859
+ * Holding P&L retrieved successfully
7891
8860
  */
7892
- 200: BackfillSnapshotsResponse;
8861
+ 200: HoldingPnlResponseDto;
7893
8862
  /**
7894
- * Invalid date format or range
8863
+ * Invalid asOf format/value/future date, invalid accountId format, or unsupported method
7895
8864
  */
7896
8865
  400: unknown;
7897
8866
  /**
7898
8867
  * User not authenticated
7899
8868
  */
7900
8869
  401: unknown;
7901
- /**
7902
- * Backfill already in progress for this user
7903
- */
7904
- 409: unknown;
7905
8870
  };
7906
8871
  };
7907
8872
  };
@@ -7926,7 +8891,7 @@ type $OpenApiTs = {
7926
8891
  /**
7927
8892
  * Login successful
7928
8893
  */
7929
- 200: unknown;
8894
+ 200: AnonymousLoginResponseDto;
7930
8895
  /**
7931
8896
  * Invalid access token
7932
8897
  */
@@ -8073,6 +9038,32 @@ type $OpenApiTs = {
8073
9038
  };
8074
9039
  };
8075
9040
  };
9041
+ '/api/v1/market/symbols/search': {
9042
+ get: {
9043
+ req: SymbolControllerSearchData;
9044
+ res: {
9045
+ /**
9046
+ * Ranked search results
9047
+ */
9048
+ 200: Array<SymbolSearchResultDto>;
9049
+ };
9050
+ };
9051
+ };
9052
+ '/api/v1/market/symbols/{symbol}/quote': {
9053
+ get: {
9054
+ req: SymbolControllerGetQuoteData;
9055
+ res: {
9056
+ /**
9057
+ * Symbol quote
9058
+ */
9059
+ 200: SymbolQuoteDto;
9060
+ /**
9061
+ * Symbol not found in the openbb catalog
9062
+ */
9063
+ 404: unknown;
9064
+ };
9065
+ };
9066
+ };
8076
9067
  };
8077
9068
 
8078
9069
  declare class BeanAccountsService {
@@ -8094,7 +9085,7 @@ declare class BeanAccountsService {
8094
9085
  * @param data.type Filter by account type
8095
9086
  * @param data.status Filter by status
8096
9087
  * @param data.isCustom Filter by custom (user-created) accounts only
8097
- * @param data.search Search term for path or i18nKey
9088
+ * @param data.search Search term for account path
8098
9089
  * @param data.limit Maximum number of results
8099
9090
  * @param data.offset Number of results to skip
8100
9091
  * @returns AccountListResponseDto Accounts retrieved successfully
@@ -8154,6 +9145,17 @@ declare class BeanAccountsService {
8154
9145
  * @throws ApiError
8155
9146
  */
8156
9147
  static accountControllerReopen(data: AccountControllerReopenData): CancelablePromise<AccountControllerReopenResponse>;
9148
+ /**
9149
+ * Post an opening-balance transaction
9150
+ * Posts a double-entry opening-balance transaction against Equity:Opening-Balances for an existing Assets/Liabilities account. At most one active opening balance per account.
9151
+ * @param data The data for the request.
9152
+ * @param data.id Account UUID
9153
+ * @param data.region Region code for tenant context
9154
+ * @param data.requestBody
9155
+ * @returns OpeningBalanceResultDto Opening-balance transaction created
9156
+ * @throws ApiError
9157
+ */
9158
+ static accountControllerAddOpeningBalance(data: AccountControllerAddOpeningBalanceData): CancelablePromise<AccountControllerAddOpeningBalanceResponse>;
8157
9159
  }
8158
9160
  declare class BeanTransactionsService {
8159
9161
  /**
@@ -8179,6 +9181,7 @@ declare class BeanTransactionsService {
8179
9181
  * @param data.status Filter by transaction status
8180
9182
  * @param data.search Search in narration and payee fields (max 200 chars)
8181
9183
  * @param data.accountId Filter by account ID (transactions with postings to this account)
9184
+ * @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
8182
9185
  * @returns TransactionListResponseDto Transaction list
8183
9186
  * @throws ApiError
8184
9187
  */
@@ -8254,7 +9257,7 @@ declare class BeanBalancesService {
8254
9257
  * Query account balance
8255
9258
  * Calculate account balance at a specific date for a single currency
8256
9259
  * @param data The data for the request.
8257
- * @param data.account Account name (e.g., "Assets:Bank:Checking")
9260
+ * @param data.account Account name (e.g., "Assets:Checking")
8258
9261
  * @param data.region Region code for tenant context
8259
9262
  * @param data.date Date to calculate balance at (ISO 8601 format)
8260
9263
  * @param data.currency Currency to query (e.g., "USD", "CNY")
@@ -8484,4 +9487,4 @@ type OpenAPIConfig = {
8484
9487
  };
8485
9488
  declare const OpenAPI: OpenAPIConfig;
8486
9489
 
8487
- export { type $OpenApiTs, type AccountControllerCloseData, type AccountControllerCloseResponse, type AccountControllerCreateData, type AccountControllerCreateResponse, type AccountControllerDeleteData, type AccountControllerDeleteResponse, type AccountControllerFindAllData, type AccountControllerFindAllResponse, type AccountControllerFindOneData, type AccountControllerFindOneResponse, type AccountControllerReopenData, type AccountControllerReopenResponse, type AccountControllerUpdateData, type AccountControllerUpdateResponse, type AccountExchangeRateWarningDto, type AccountItemDto, type AccountItemWithAssetClassDto, type AccountListResponseDto, type AccountResponseDto, type AccountStandardListResponseDto, type AccountStandardResponseDto, type AccountStandardsControllerGetRegionsData, type AccountStandardsControllerGetRegionsResponse, type AccountStandardsControllerGetTemplateMetadataData, type AccountStandardsControllerGetTemplateMetadataResponse, type AccountStandardsControllerGetTemplatesData, type AccountStandardsControllerGetTemplatesResponse, type AccountsResponseDto, type AccountsSummaryDto, type AmountDto, type AmountRangeDto, type AnonymousLoginDto, type ApiKeysControllerCreateApiKeyResponse, type ApiProblemResponseDto, type AssetClassAccountsResponseDto, type AssetClassGroupDto, type AssetClassSummaryDto, type AuthControllerAccessTokenLoginData, type AuthControllerAccessTokenLoginResponse, type BackfillSnapshotsBody, type BackfillSnapshotsResponse, type BalanceByCurrencyDto, type BalanceControllerGetBalanceData, type BalanceControllerGetBalanceResponse, type BalanceControllerGetMultiCurrencyBalanceData, type BalanceControllerGetMultiCurrencyBalanceResponse, type BalanceResponseDto, type BatchCreateTransactionDto, type BatchResolveDto, type BatchResolveResultDto, type BatchTransactionErrorDto, type BatchTransactionResponseDto, BeanAccountsService, BeanBalancesService, BeanCommoditiesService, BeanTransactionsService, type BulkCreateRulesDto, type BulkCreateRulesResponseDto, type CacheControllerFlushCacheResponse, type CashFlowByCurrencyDto, type 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 CorrectTransactionDto, type CostDetailDto, type CostSpecDto, type CreateAccountDto, type CreateBeanEventDto, type CreateBeanPriceDto, type CreateCommodityDto, type CreatePayeeDto, type CreatePayeeProfileDto, type CreatePlatformDto, type CreatePostingDto, type CreateRecurringRuleDto, type CreateRuleFromTransactionDto, type CreateTransactionDto, type CreateTransactionRuleDto, type CurrencyBalanceDto, type CurrentPriceDto, type DashboardControllerGetAccountsData, type DashboardControllerGetAccountsResponse, type DashboardControllerGetCashFlowData, type DashboardControllerGetCashFlowResponse, type 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 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 ExportControllerExportBeancountResponse, type ExportRulesResponseDto, type FileImportControllerIdentifyFileData, type FileImportControllerIdentifyFileResponse, type FileImportControllerImportBeancountData, type FileImportControllerImportBeancountResponse, type FileImportControllerImportFileData, type FileImportControllerImportFileResponse, type FileImportDto, type ForecastControllerGetForecastData, type ForecastControllerGetForecastResponse, type ForecastItemDto, type ForecastResponseDto, type FxRateDto, type GenerateSnapshotBody, type GenerateSnapshotResponse, type HealthControllerCheckDatabaseResponse, type HealthControllerCheckOpenBbResponse, type HealthControllerCheckRedisResponse, type HealthControllerGetCircuitBreakersHealthResponse, type HealthControllerGetHealthResponse, type HealthControllerGetMetricsResponse, type HealthControllerResetCircuitBreakerData, type HealthControllerResetCircuitBreakerResponse, HealthService, type HoldingAssetClassAccountSliceDto, type HoldingAssetClassCrossAccountResponseDto, type HoldingPnlControllerGetHoldingPnlData, type HoldingPnlControllerGetHoldingPnlResponse, type HoldingPnlResponseDto, type HoldingPnlRowDto, type HoldingPnlWarningDto, type IdentifyResultDto, type ImportErrorDto, type ImportResultDto, type ImporterConfigControllerGetConfigData, type ImporterConfigControllerGetConfigResponse, type ImporterConfigControllerResetConfigData, type ImporterConfigControllerResetConfigResponse, type ImporterConfigControllerUpdateConfigData, type ImporterConfigControllerUpdateConfigResponse, type ImporterConfigDataDto, type ImporterConfigDto, type InfoControllerGetInfoResponse, type MapperDefaultsDto, type MonetaryDto, type MonthlyForecastDto, type MultiCurrencyBalanceResponseDto, type MultiCurrencyPointDto, type NetWorthByCurrencyDto, type NetWorthResponseDto, type NlpAccountConfirmationDataDto, type NlpAlternativePayeeDto, type NlpControllerClearSessionData, type NlpControllerClearSessionResponse, type NlpControllerGetSessionData, type NlpControllerGetSessionResponse, type NlpControllerProcessNaturalLanguageData, type NlpControllerProcessNaturalLanguageResponse, type NlpDefaultAccountsDto, type NlpDuplicateConfirmationDataDto, type NlpParsedDataDto, type NlpPayeeConfirmationDataDto, type NlpResponseDto, type NlpRuleConfirmationDataDto, type NlpSimilarityDto, type NlpSourceTransactionDto, type NlpSuggestedAccountDto, type NlpSuggestedAccountsDto, type NlpSuggestedPayeeDto, type NlpTargetTransactionDto, type NlpTransactionInfoDto, OpenAPI, type OpenAPIConfig, type ParserTelemetryReportDto, type PayeeAutocompleteResponseDto, type PayeeControllerAutocompleteData, type PayeeControllerAutocompleteResponse, type PayeeControllerCreateData, type PayeeControllerCreateResponse, type PayeeControllerDeleteData, type PayeeControllerDeleteResponse, type PayeeControllerFindAllData, type PayeeControllerFindAllResponse, type PayeeControllerFindOneData, type PayeeControllerFindOneResponse, type PayeeControllerGetTopPayeesData, type PayeeControllerGetTopPayeesResponse, type PayeeControllerUpdateData, type PayeeControllerUpdateResponse, type PayeeListResponseDto, type PayeeProfileAdminControllerCreateData, type PayeeProfileAdminControllerCreateResponse, type PayeeProfileAdminControllerDeleteData, type PayeeProfileAdminControllerDeleteResponse, type PayeeProfileAdminControllerFindAllData, type PayeeProfileAdminControllerFindAllResponse, type PayeeProfileAdminControllerFindOneData, type PayeeProfileAdminControllerFindOneResponse, type PayeeProfileAdminControllerUnverifyData, type PayeeProfileAdminControllerUnverifyResponse, type PayeeProfileAdminControllerUpdateData, type PayeeProfileAdminControllerUpdateResponse, type PayeeProfileAdminControllerVerifyData, type PayeeProfileAdminControllerVerifyResponse, type PayeeProfileListResponseDto, type PayeeProfileResponseDto, type PayeeResponseDto, type PayeeStatsResponseDto, type PlatformControllerCreateData, type PlatformControllerCreateResponse, type PlatformControllerDeleteData, type PlatformControllerDeleteResponse, type PlatformControllerFindAllResponse, type PlatformControllerGetPlatformListResponse, type PlatformControllerMatchPlatformsData, type PlatformControllerMatchPlatformsResponse, type PlatformControllerUpdateData, type PlatformControllerUpdateResponse, type PlatformGroupDto, type PortfolioTrendsResponseDto, type PostingDetailDto, type PostingResponseDto, type PriceControllerBulkCreateData, type PriceControllerBulkCreateResponse, type PriceControllerCreateData, type PriceControllerCreateResponse, type PriceControllerDeleteData, type PriceControllerDeleteResponse, type PriceControllerFindAllData, type PriceControllerFindAllResponse, type PriceControllerFindOneData, type PriceControllerFindOneResponse, type PriceControllerUpdateData, type PriceControllerUpdateResponse, type PriceListResponseDto, type PriceResponseDto, type ProcessNlpDto, type PropertyControllerDeleteData, type PropertyControllerDeleteResponse, type PropertyControllerGetAllResponse, type PropertyControllerGetByKeyData, type PropertyControllerGetByKeyResponse, type PropertyControllerUpdateData, type PropertyControllerUpdateResponse, type ProviderSyncConfigDto, type ProviderSyncControllerGetSupportedProvidersData, type ProviderSyncControllerGetSupportedProvidersResponse, type ProviderSyncControllerIsProviderSupportedData, type ProviderSyncControllerIsProviderSupportedResponse, type ProviderSyncControllerSyncData, type ProviderSyncControllerSyncResponse, type ProviderSyncDto, type ProviderSyncResponseDto, ProviderSyncService, type RecurringMatchInfoDto, type RecurringRuleControllerCreateData, type RecurringRuleControllerCreateFromTransactionData, type RecurringRuleControllerCreateFromTransactionResponse, type RecurringRuleControllerCreateResponse, type RecurringRuleControllerDeleteData, type RecurringRuleControllerDeleteResponse, type RecurringRuleControllerFindAllData, type RecurringRuleControllerFindAllResponse, type RecurringRuleControllerFindOneData, type RecurringRuleControllerFindOneResponse, type RecurringRuleControllerGetWithStatsData, type RecurringRuleControllerGetWithStatsResponse, type RecurringRuleControllerUpdateData, type RecurringRuleControllerUpdateResponse, type RecurringRuleResponseDto, type RecurringRuleWithStatsResponseDto, type RecurringSuggestionDto, type RegionConfigDto, type RegionInfoDto, type RegionsMetadataResponseDto, type ReopenAccountDto, type ReportingControllerBackfillSnapshotsData, type ReportingControllerBackfillSnapshotsResponse, type ReportingControllerGenerateSnapshotData, type ReportingControllerGenerateSnapshotResponse, type ReportingControllerGetPortfolioTrendsData, type ReportingControllerGetPortfolioTrendsResponse, type ResolveResultDto, type ResolveReviewDto, type ReviewControllerBatchResolveData, type ReviewControllerBatchResolveResponse, type ReviewControllerFindAllData, type ReviewControllerFindAllResponse, type ReviewControllerFindOneData, type ReviewControllerFindOneResponse, type ReviewControllerGetStatsData, type ReviewControllerGetStatsResponse, type ReviewControllerResolveData, type ReviewControllerResolveResponse, type ReviewControllerUndoData, type ReviewControllerUndoResponse, type ReviewDetailDto, type ReviewItemPreviewDto, type ReviewListResponseDto, type ReviewStatsDto, type ReviewSummaryDto, type RuleStatisticsResponseDto, type SignupDto, type SupportedProvidersResponseDto, type TagSuggestionDto, type TagSuggestionsResponseDto, type TelemetryControllerGetCoverageMetricsData, type TelemetryControllerGetCoverageMetricsResponse, type TelemetryControllerReportCoverageMissData, type TelemetryControllerReportCoverageMissResponse, type TelemetryControllerReportTelemetryData, type TelemetryControllerReportTelemetryResponse, type TemplateMetadataDto, type TemplateMetadataResponseDto, type TestRuleDto, type TestRuleResponseDto, type TimeSeriesPointDto, type TransactionControllerCorrectData, type TransactionControllerCorrectResponse, type TransactionControllerCreateBatchData, type TransactionControllerCreateBatchResponse, type TransactionControllerCreateData, type TransactionControllerCreateResponse, type TransactionControllerDeleteData, type TransactionControllerDeleteResponse, type TransactionControllerGetDetailData, type TransactionControllerGetDetailResponse, type TransactionControllerListData, type TransactionControllerListResponse, type TransactionControllerSuggestTagsData, type TransactionControllerSuggestTagsResponse, type TransactionControllerUpdateData, type TransactionControllerUpdateResponse, type TransactionDetailDto, type TransactionListResponseDto, type TransactionResponseDto, type TransactionRuleControllerBulkCreateData, type TransactionRuleControllerBulkCreateResponse, type TransactionRuleControllerCreateData, type TransactionRuleControllerCreateResponse, type TransactionRuleControllerDeleteData, type TransactionRuleControllerDeleteResponse, type TransactionRuleControllerExportData, type TransactionRuleControllerExportResponse, type TransactionRuleControllerGetDetailData, type TransactionRuleControllerGetDetailResponse, type TransactionRuleControllerGetStatisticsData, type TransactionRuleControllerGetStatisticsResponse, type TransactionRuleControllerListData, type TransactionRuleControllerListResponse, type TransactionRuleControllerTestData, type TransactionRuleControllerTestResponse, type TransactionRuleControllerUpdateData, type TransactionRuleControllerUpdateResponse, type TransactionRuleControllerValidateData, type TransactionRuleControllerValidateResponse, type TransactionRuleListResponseDto, type TransactionRuleResponseDto, type TransactionSummaryDto, type TrendSummaryDto, type UncoveredFormatMissDto, type UndoResultDto, type UpdateAccountDto, type UpdateBeanEventDto, type UpdateBeanPriceDto, type UpdateCommodityDto, type UpdateConfigDataDto, type UpdateImporterConfigDto, type UpdateMapperDefaultsDto, type UpdatePayeeDto, type UpdatePayeeProfileDto, type UpdatePlatformDto, type UpdatePropertyDto, type UpdateRecurringRuleDto, type UpdateTransactionDto, type UpdateTransactionRuleDto, type UpdateUserSettingDto, type UserControllerDeleteOwnUserData, type UserControllerDeleteOwnUserResponse, type UserControllerDeleteUserData, type UserControllerDeleteUserResponse, type UserControllerGetAllUserSettingsByPageData, type UserControllerGetAllUserSettingsByPageResponse, type UserControllerGetAssetLiabilitySummaryResponse, type UserControllerGetUserData, type UserControllerGetUserInfoData, type UserControllerGetUserInfoResponse, type UserControllerGetUserResponse, type UserControllerSignupUserData, type UserControllerSignupUserResponse, type UserControllerUpdateUserSettingData, type UserControllerUpdateUserSettingResponse, type ValidateRuleDto, type ValidateRuleResponseDto, type VersionedConfigDto, type action, type action2, type assetClass, type assetSubType, type bookingMethod, type branchType, type category, type chartToken, type colorScheme, type confidenceLevel, type conflictStrategy, type dataSource, type equitySubType, type flag, type flag2, type frequency, type importerId, type intent, type investmentAction, type learningSource, type liabilitySubType, type matchLogic, type method, type mode, type paymentSource, type period, type source, type source2, type source3, type status, type status2, type status3, type status4, type suggestedFrequency, type type, type type2, type type3, type type4, type value, type viewMode };
9490
+ export { type $OpenApiTs, type AccountControllerAddOpeningBalanceData, type AccountControllerAddOpeningBalanceResponse, type AccountControllerCloseData, type AccountControllerCloseResponse, type AccountControllerCreateData, type AccountControllerCreateResponse, type AccountControllerDeleteData, type AccountControllerDeleteResponse, type AccountControllerFindAllData, type AccountControllerFindAllResponse, type AccountControllerFindOneData, type AccountControllerFindOneResponse, type AccountControllerReopenData, type AccountControllerReopenResponse, type AccountControllerUpdateData, type AccountControllerUpdateResponse, type AccountExchangeRateWarningDto, type AccountItemDto, type AccountItemWithAssetClassDto, type AccountListResponseDto, type AccountResponseDto, type AccountStandardListResponseDto, type AccountStandardResponseDto, type AccountStandardsControllerGetRegionsData, type AccountStandardsControllerGetRegionsResponse, type AccountStandardsControllerGetTemplateMetadataData, type AccountStandardsControllerGetTemplateMetadataResponse, type AccountStandardsControllerGetTemplatesData, type AccountStandardsControllerGetTemplatesResponse, type AccountsResponseDto, type AccountsSummaryDto, type ActualBalanceDto, type AmountDto, type AmountRangeDto, type AnonymousLoginDto, type AnonymousLoginResponseDto, type ApiKeysControllerCreateApiKeyResponse, type ApiProblemResponseDto, type AssertReconciliationDto, type AssetClassAccountsResponseDto, type AssetClassGroupDto, type AssetClassSummaryDto, type AuthControllerAccessTokenLoginData, type AuthControllerAccessTokenLoginResponse, type BackfillSnapshotsBody, type BackfillSnapshotsResponse, type BalanceByCurrencyDto, type BalanceControllerGetBalanceData, type BalanceControllerGetBalanceResponse, type BalanceControllerGetMultiCurrencyBalanceData, type BalanceControllerGetMultiCurrencyBalanceResponse, type BalanceResponseDto, type BatchCreateTransactionDto, type BatchResolveDto, type BatchResolveResultDto, type BatchTransactionErrorDto, type BatchTransactionResponseDto, BeanAccountsService, BeanBalancesService, BeanCommoditiesService, BeanTransactionsService, type BulkCreateRulesDto, type BulkCreateRulesResponseDto, type CacheControllerFlushCacheResponse, type CashFlowByCurrencyDto, type CashFlowPointDto, type CashFlowResponseDto, type CashFlowTrendSummaryDto, type CashFlowTrendsResponseDto, type CategoryGroupDto, type CloseAccountDto, type CommodityControllerBulkCreateData, type CommodityControllerBulkCreateResponse, type CommodityControllerCreateData, type CommodityControllerCreateResponse, type CommodityControllerDeleteData, type CommodityControllerDeleteResponse, type CommodityControllerFindAllData, type CommodityControllerFindAllResponse, type CommodityControllerFindOneData, type CommodityControllerFindOneResponse, type CommodityControllerGetOrCreateData, type CommodityControllerGetOrCreateResponse, type CommodityControllerUpdateData, type CommodityControllerUpdateResponse, type CommodityListResponseDto, type CommodityResponseDto, type ComputeReconciliationDto, type ConfirmMatchDto, type ConvertedCashFlowDto, type ConvertedNetWorthDto, type CorrectTransactionDto, type CostDetailDto, type CostSpecDto, type CreateAccountDto, type CreateBeanEventDto, type CreateBeanPriceDto, type CreateCommodityDto, type CreateExternalAccountLinkDto, type CreateOpeningBalanceDto, type CreatePayeeDto, type CreatePayeeProfileDto, type CreatePlatformDto, type CreatePostingDto, type CreateRecurringRuleDto, type CreateRuleFromTransactionDto, type CreateTransactionDto, type CreateTransactionRuleDto, type CurrencyBalanceDto, type CurrentPriceDto, type DashboardControllerGetAccountsData, type DashboardControllerGetAccountsResponse, type DashboardControllerGetCashFlowData, type DashboardControllerGetCashFlowResponse, type DashboardControllerGetExpensesData, type DashboardControllerGetExpensesResponse, type DashboardControllerGetNetWorthData, type DashboardControllerGetNetWorthResponse, type DecisionOptionDto, type DeleteOwnUserDto, type EnterNowDto, type EventControllerCreateData, type EventControllerCreateResponse, type EventControllerDeleteData, type EventControllerDeleteResponse, type EventControllerFindAllData, type EventControllerFindAllResponse, type EventControllerFindOneData, type EventControllerFindOneResponse, type EventControllerGetSliceData, type EventControllerGetSliceResponse, type EventControllerUpdateData, type EventControllerUpdateResponse, type EventListResponseDto, type EventResponseDto, type ExchangeRateControllerGetExchangeRateData, type ExchangeRateControllerGetExchangeRateResponse, type ExchangeRateWarningDto, type ExpectedTransactionControllerConfirmMatchData, type ExpectedTransactionControllerConfirmMatchResponse, type ExpectedTransactionControllerEnterNowData, type ExpectedTransactionControllerEnterNowResponse, type ExpectedTransactionControllerFindAllData, type ExpectedTransactionControllerFindAllResponse, type ExpectedTransactionControllerFindOneData, type ExpectedTransactionControllerFindOneResponse, type ExpectedTransactionControllerFindOverdueData, type ExpectedTransactionControllerFindOverdueResponse, type ExpectedTransactionControllerSkipData, type ExpectedTransactionControllerSkipResponse, type ExpectedTransactionControllerUndoSkipData, type ExpectedTransactionControllerUndoSkipResponse, type ExpectedTransactionControllerUnmatchData, type ExpectedTransactionControllerUnmatchResponse, type ExpectedTransactionListResponseDto, type ExpectedTransactionResponseDto, type ExpectedTransactionRuleDto, type ExpensesByCategoryResponseDto, type ExpensesByCategorySummaryDto, type ExportControllerExportBeancountResponse, type ExportRulesResponseDto, type ExternalAccountLinkControllerCreateData, type ExternalAccountLinkControllerCreateResponse, type ExternalAccountLinkControllerFindAllData, type ExternalAccountLinkControllerFindAllResponse, type ExternalAccountLinkControllerFindOneData, type ExternalAccountLinkControllerFindOneResponse, type ExternalAccountLinkControllerRemoveData, type ExternalAccountLinkControllerRemoveResponse, type ExternalAccountLinkListResponseDto, type ExternalAccountLinkResponseDto, type FileImportControllerIdentifyFileData, type FileImportControllerIdentifyFileResponse, type FileImportControllerImportBeancountData, type FileImportControllerImportBeancountResponse, type FileImportControllerImportFileData, type FileImportControllerImportFileResponse, type FileImportDto, type ForecastControllerGetForecastData, type ForecastControllerGetForecastResponse, type ForecastItemDto, type ForecastResponseDto, type FxRateDto, type GenerateSnapshotBody, type GenerateSnapshotResponse, type HealthControllerCheckDatabaseResponse, type HealthControllerCheckOpenBbResponse, type HealthControllerCheckRedisResponse, type HealthControllerGetCircuitBreakersHealthResponse, type HealthControllerGetHealthResponse, type HealthControllerGetMetricsResponse, type HealthControllerResetCircuitBreakerData, type HealthControllerResetCircuitBreakerResponse, HealthService, type HoldingAssetClassAccountSliceDto, type HoldingAssetClassCrossAccountResponseDto, type HoldingPnlControllerGetHoldingPnlData, type HoldingPnlControllerGetHoldingPnlResponse, type HoldingPnlResponseDto, type HoldingPnlRowDto, type HoldingPnlWarningDto, type IdentifyResultDto, type ImportErrorDto, type ImportResultDto, type ImporterConfigControllerGetConfigData, type ImporterConfigControllerGetConfigResponse, type ImporterConfigControllerResetConfigData, type ImporterConfigControllerResetConfigResponse, type ImporterConfigControllerUpdateConfigData, type ImporterConfigControllerUpdateConfigResponse, type ImporterConfigDataDto, type ImporterConfigDto, type InfoControllerGetInfoResponse, type MapperDefaultsDto, type MonetaryDto, type MonthlyForecastDto, type MultiCurrencyBalanceResponseDto, type MultiCurrencyPointDto, type NetWorthByCurrencyDto, type NetWorthResponseDto, type NlpAccountConfirmationDataDto, type NlpAlternativePayeeDto, type NlpControllerClearSessionData, type NlpControllerClearSessionResponse, type NlpControllerGetSessionData, type NlpControllerGetSessionResponse, type NlpControllerProcessNaturalLanguageData, type NlpControllerProcessNaturalLanguageResponse, type NlpDefaultAccountsDto, type NlpDuplicateConfirmationDataDto, type NlpParsedDataDto, type NlpPayeeConfirmationDataDto, type NlpResponseDto, type NlpRuleConfirmationDataDto, type NlpSimilarityDto, type NlpSourceTransactionDto, type NlpSuggestedAccountDto, type NlpSuggestedAccountsDto, type NlpSuggestedPayeeDto, type NlpTargetTransactionDto, type NlpTransactionInfoDto, type OnboardingAccountDto, type OnboardingControllerBootstrapData, type OnboardingControllerBootstrapResponse, type OnboardingDto, OpenAPI, type OpenAPIConfig, type OpeningBalanceResultDto, type PadReconciliationDto, type PadResultDto, type ParserTelemetryReportDto, type PayeeAutocompleteResponseDto, type PayeeControllerAutocompleteData, type PayeeControllerAutocompleteResponse, type PayeeControllerCreateData, type PayeeControllerCreateResponse, type PayeeControllerDeleteData, type PayeeControllerDeleteResponse, type PayeeControllerFindAllData, type PayeeControllerFindAllResponse, type PayeeControllerFindOneData, type PayeeControllerFindOneResponse, type PayeeControllerGetTopPayeesData, type PayeeControllerGetTopPayeesResponse, type PayeeControllerUpdateData, type PayeeControllerUpdateResponse, type PayeeListResponseDto, type PayeeProfileAdminControllerCreateData, type PayeeProfileAdminControllerCreateResponse, type PayeeProfileAdminControllerDeleteData, type PayeeProfileAdminControllerDeleteResponse, type PayeeProfileAdminControllerFindAllData, type PayeeProfileAdminControllerFindAllResponse, type PayeeProfileAdminControllerFindOneData, type PayeeProfileAdminControllerFindOneResponse, type PayeeProfileAdminControllerUnverifyData, type PayeeProfileAdminControllerUnverifyResponse, type PayeeProfileAdminControllerUpdateData, type PayeeProfileAdminControllerUpdateResponse, type PayeeProfileAdminControllerVerifyData, type PayeeProfileAdminControllerVerifyResponse, type PayeeProfileListResponseDto, type PayeeProfileResponseDto, type PayeeResponseDto, type PayeeStatsResponseDto, type PlatformControllerCreateData, type PlatformControllerCreateResponse, type PlatformControllerDeleteData, type PlatformControllerDeleteResponse, type PlatformControllerFindAllResponse, type PlatformControllerGetPlatformListResponse, type PlatformControllerMatchPlatformsData, type PlatformControllerMatchPlatformsResponse, type PlatformControllerUpdateData, type PlatformControllerUpdateResponse, type PlatformGroupDto, type PlatformListItemDto, type PlatformMatchResponseDto, type PlatformMatchResultDto, type PortfolioTrendsResponseDto, type PostingDetailDto, type PostingResponseDto, type PriceControllerBulkCreateData, type PriceControllerBulkCreateResponse, type PriceControllerCreateData, type PriceControllerCreateResponse, type PriceControllerDeleteData, type PriceControllerDeleteResponse, type PriceControllerFindAllData, type PriceControllerFindAllResponse, type PriceControllerFindOneData, type PriceControllerFindOneResponse, type PriceControllerUpdateData, type PriceControllerUpdateResponse, type PriceListResponseDto, type PriceResponseDto, type ProcessNlpDto, type PropertyControllerDeleteData, type PropertyControllerDeleteResponse, type PropertyControllerGetAllResponse, type PropertyControllerGetByKeyData, type PropertyControllerGetByKeyResponse, type PropertyControllerUpdateData, type PropertyControllerUpdateResponse, type ProviderSyncConfigDto, type ProviderSyncControllerGetSupportedProvidersData, type ProviderSyncControllerGetSupportedProvidersResponse, type ProviderSyncControllerIsProviderSupportedData, type ProviderSyncControllerIsProviderSupportedResponse, type ProviderSyncControllerSyncData, type ProviderSyncControllerSyncResponse, type ProviderSyncDto, type ProviderSyncResponseDto, ProviderSyncService, type ReconciliationComputeResultDto, type ReconciliationControllerAssertData, type ReconciliationControllerAssertResponse, type ReconciliationControllerComputeData, type ReconciliationControllerComputeResponse, type ReconciliationControllerHistoryData, type ReconciliationControllerHistoryResponse, type ReconciliationControllerPadData, type ReconciliationControllerPadResponse, type ReconciliationRecordDto, type RecurringMatchInfoDto, type RecurringRuleControllerCreateData, type RecurringRuleControllerCreateFromTransactionData, type RecurringRuleControllerCreateFromTransactionResponse, type RecurringRuleControllerCreateResponse, type RecurringRuleControllerDeleteData, type RecurringRuleControllerDeleteResponse, type RecurringRuleControllerFindAllData, type RecurringRuleControllerFindAllResponse, type RecurringRuleControllerFindOneData, type RecurringRuleControllerFindOneResponse, type RecurringRuleControllerGetWithStatsData, type RecurringRuleControllerGetWithStatsResponse, type RecurringRuleControllerUpdateData, type RecurringRuleControllerUpdateResponse, type RecurringRuleResponseDto, type RecurringRuleWithStatsResponseDto, type RecurringSuggestionDto, type RegionConfigDto, type RegionInfoDto, type RegionsMetadataResponseDto, type ReopenAccountDto, type ReportingControllerBackfillSnapshotsData, type ReportingControllerBackfillSnapshotsResponse, type ReportingControllerGenerateSnapshotData, type ReportingControllerGenerateSnapshotResponse, type ReportingControllerGetCashFlowTrendsData, type ReportingControllerGetCashFlowTrendsResponse, type ReportingControllerGetPortfolioTrendsData, type ReportingControllerGetPortfolioTrendsResponse, type ResolveResultDto, type ResolveReviewDto, type ReviewControllerBatchResolveData, type ReviewControllerBatchResolveResponse, type ReviewControllerFindAllData, type ReviewControllerFindAllResponse, type ReviewControllerFindOneData, type ReviewControllerFindOneResponse, type ReviewControllerGetStatsData, type ReviewControllerGetStatsResponse, type ReviewControllerResolveData, type ReviewControllerResolveResponse, type ReviewControllerUndoData, type ReviewControllerUndoResponse, type ReviewDetailDto, type ReviewItemPreviewDto, type ReviewListResponseDto, type ReviewStatsDto, type ReviewSummaryDto, type RuleStatisticsResponseDto, type SignupDto, type SignupResponseDto, type SupportedProvidersResponseDto, type SymbolControllerGetQuoteData, type SymbolControllerGetQuoteResponse, type SymbolControllerSearchData, type SymbolControllerSearchResponse, type SymbolQuoteDto, type SymbolSearchResultDto, type TagSuggestionDto, type TagSuggestionsResponseDto, type TelemetryControllerGetCoverageMetricsData, type TelemetryControllerGetCoverageMetricsResponse, type TelemetryControllerReportCoverageMissData, type TelemetryControllerReportCoverageMissResponse, type TelemetryControllerReportTelemetryData, type TelemetryControllerReportTelemetryResponse, type TemplateMetadataDto, type TemplateMetadataResponseDto, type TestRuleDto, type TestRuleResponseDto, type TimeSeriesPointDto, type TransactionControllerCorrectData, type TransactionControllerCorrectResponse, type TransactionControllerCreateBatchData, type TransactionControllerCreateBatchResponse, type TransactionControllerCreateData, type TransactionControllerCreateResponse, type TransactionControllerDeleteData, type TransactionControllerDeleteResponse, type TransactionControllerGetDetailData, type TransactionControllerGetDetailResponse, type TransactionControllerListData, type TransactionControllerListResponse, type TransactionControllerSuggestTagsData, type TransactionControllerSuggestTagsResponse, type TransactionControllerUpdateData, type TransactionControllerUpdateResponse, type TransactionDetailDto, type TransactionListResponseDto, type TransactionListSummaryDto, type TransactionResponseDto, type TransactionRuleControllerBulkCreateData, type TransactionRuleControllerBulkCreateResponse, type TransactionRuleControllerCreateData, type TransactionRuleControllerCreateResponse, type TransactionRuleControllerDeleteData, type TransactionRuleControllerDeleteResponse, type TransactionRuleControllerExportData, type TransactionRuleControllerExportResponse, type TransactionRuleControllerGetDetailData, type TransactionRuleControllerGetDetailResponse, type TransactionRuleControllerGetStatisticsData, type TransactionRuleControllerGetStatisticsResponse, type TransactionRuleControllerListData, type TransactionRuleControllerListResponse, type TransactionRuleControllerTestData, type TransactionRuleControllerTestResponse, type TransactionRuleControllerUpdateData, type TransactionRuleControllerUpdateResponse, type TransactionRuleControllerValidateData, type TransactionRuleControllerValidateResponse, type TransactionRuleListResponseDto, type TransactionRuleResponseDto, type TransactionSummaryDto, type TrendSummaryDto, type UncoveredFormatMissDto, type UndoResultDto, type UpdateAccountDto, type UpdateBeanEventDto, type UpdateBeanPriceDto, type UpdateCommodityDto, type UpdateConfigDataDto, type UpdateImporterConfigDto, type UpdateMapperDefaultsDto, type UpdatePayeeDto, type UpdatePayeeProfileDto, type UpdatePlatformDto, type UpdatePropertyDto, type UpdateRecurringRuleDto, type UpdateTransactionDto, type UpdateTransactionRuleDto, type UpdateUserSettingDto, type UserControllerDeleteOwnUserData, type UserControllerDeleteOwnUserResponse, type UserControllerDeleteUserData, type UserControllerDeleteUserResponse, type UserControllerGetAllUserSettingsByPageData, type UserControllerGetAllUserSettingsByPageResponse, type UserControllerGetAssetLiabilitySummaryResponse, type UserControllerGetUserData, type UserControllerGetUserInfoData, type UserControllerGetUserInfoResponse, type UserControllerGetUserResponse, type UserControllerSignupUserData, type UserControllerSignupUserResponse, type UserControllerUpdateUserSettingData, type UserControllerUpdateUserSettingResponse, type ValidateRuleDto, type ValidateRuleResponseDto, type VersionedConfigDto, type action, type action2, type assetClass, type assetSubClass, type assetSubType, type bookingMethod, type branchType, type category, type chartToken, type colorScheme, type confidenceLevel, type conflictStrategy, type dataSource, type equitySubType, type flag, type flag2, type frequency, type importerId, type intent, type investmentAction, type learningSource, type liabilitySubType, type matchLogic, type matchType, type matchType2, type method, type mode, type paymentSource, type period, type provider, type role, type source, type source2, type source3, type status, type status2, type status3, type status4, type suggestedAction, type suggestedFrequency, type type, type type2, type type3, type type4, type value, type viewMode };