@firela/api-types 0.0.0-canary.8bf286b3 → 0.0.0-canary.8c76fd39

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.
@@ -164,9 +164,7 @@ export type AccountResponseDto = {
164
164
  /**
165
165
  * Platform ID (null if unbound)
166
166
  */
167
- platformId?: {
168
- [key: string]: unknown;
169
- };
167
+ platformId?: string;
170
168
  /**
171
169
  * Platform details (populated if platformId is set)
172
170
  */
@@ -327,15 +325,27 @@ export type AccountStandardResponseDto = {
327
325
  */
328
326
  type: 'Assets' | 'Liabilities' | 'Income' | 'Expenses' | 'Equity';
329
327
  /**
330
- * Short localized display name
328
+ * Short display name. Universal rows project to the request locale (Accept-Language); regional rows keep the authored native name — mixed-language by design (ADR-0131 class P vs class A).
331
329
  */
332
330
  name?: string;
333
331
  /**
334
- * Account description (stable semantics only)
332
+ * Authored market-language alternative names delivered verbatim (not localized copy, not xlf-managed, not locale-projected). Flat string[] per ADR-0129 D1; ADR-0131 class A.
333
+ */
334
+ aliases?: Array<string>;
335
+ /**
336
+ * Locale-projected search synonyms (e.g. the zh bank-card / debit-card everyday terms for the checking account). Pure-locale projection — absent when the locale has no seeded synonyms; English fallback rides the authored aliases field. Search-only vocabulary, not the NLP routing corpus (#698, ADR-0131 fourth-class adjudication).
337
+ */
338
+ searchTerms?: Array<string>;
339
+ /**
340
+ * Product denomination as a 3-letter ISO 4217 code, authored market data delivered verbatim (not localized, not xlf-managed). ADR-0131 class A. Absent = single-currency not asserted — consumers fall back to their own region currency (#714).
341
+ */
342
+ currency?: string;
343
+ /**
344
+ * Account description (stable semantics only). Mixed-language contract: universal rows project to the request locale via the accountDesc xlf axis with an en fallback (ADR-0131 class P, ADR-0132; unseeded locales falling back to English are expected); regional rows deliver the authored market language (ADR-0131 class A, verbatim, never xlf-managed).
335
345
  */
336
346
  description: string;
337
347
  /**
338
- * Account tags for categorization
348
+ * Account tags for categorization — structured metadata delivered verbatim (not localized, not xlf-managed). ADR-0131 class A.
339
349
  */
340
350
  tags: Array<string>;
341
351
  /**
@@ -429,6 +439,9 @@ export type TemplateMetadataResponseDto = {
429
439
  export type RegionConfigDto = {
430
440
  currency: string;
431
441
  dateFormat: string;
442
+ /**
443
+ * Region-qualified BCP-47 tag whose region subtag equals the region's own ISO 3166-1 code (e.g., ja-JP, zh-CN, en-HK)
444
+ */
432
445
  locale: string;
433
446
  };
434
447
 
@@ -1062,11 +1075,11 @@ export type TransactionListItemDto = {
1062
1075
  */
1063
1076
  originalTxn?: string;
1064
1077
  /**
1065
- * Per-leg sign-normalized row amount for the category viewpoint (ADR-0126): each posting on the category account set contributes its unitsNumber with Income-root legs negated and Expenses-root legs identity. Positive under normal booking but NOT clamped (explicit negative expense legs and net-flip refund months stay negative). Omitted outside the category viewpoint.
1078
+ * Row amount under the request viewpoint (ADR-0126). Category viewpoint (category + flow): per-leg sign-normalized sum over the category account set (Income-root legs negated, Expenses-root identity) positive under normal booking but NOT clamped (explicit negative expense legs and net-flip refund months stay negative). No viewpoint (plain list / search, no accountId): wallet money-flow net = raw-sign sum over cost-less Assets/Liabilities legs (income positive, expenses negative, transfers net ~0); color cue is the wallet sign (net < 0 = wealth-decreasing). Status-orthogonal: audit views match too (ADR-0128 amount-as-matching-key). Omitted under the account viewpoint (incl. dual) and for rows with no wallet leg.
1066
1079
  */
1067
1080
  viewpointAmount?: string;
1068
1081
  /**
1069
- * Currency of viewpointAmount. A row spanning multiple currencies takes the largest-magnitude currency group (known simplification, ADR-0126). Omitted outside the category viewpoint.
1082
+ * Currency of viewpointAmount. A row spanning multiple currencies takes the largest-magnitude currency group (known simplification, ADR-0126).
1070
1083
  */
1071
1084
  viewpointCurrency?: string;
1072
1085
  };
@@ -1821,7 +1834,7 @@ export type UpdatePayeeDto = {
1821
1834
  */
1822
1835
  customTags?: Array<string>;
1823
1836
  /**
1824
- * Metadata for extended information (location, notes, contact info, etc.). Will merge with existing metadata.
1837
+ * Metadata for extended information (location, notes, contact info, etc.)
1825
1838
  */
1826
1839
  meta?: {
1827
1840
  [key: string]: unknown;
@@ -2214,6 +2227,178 @@ export type UpdateCommodityDto = {
2214
2227
  };
2215
2228
  };
2216
2229
 
2230
+ export type CurrencyBalanceDto = {
2231
+ /**
2232
+ * ISO 4217 currency code
2233
+ */
2234
+ currency: string;
2235
+ /**
2236
+ * Balance amount
2237
+ */
2238
+ balance: string;
2239
+ };
2240
+
2241
+ export type TimeSeriesPointDto = {
2242
+ /**
2243
+ * Date in YYYY-MM-DD format
2244
+ */
2245
+ date: string;
2246
+ /**
2247
+ * Value at this date (in base currency)
2248
+ */
2249
+ value: string;
2250
+ /**
2251
+ * Change from previous point
2252
+ */
2253
+ change?: string;
2254
+ /**
2255
+ * Total assets at this date (in base currency)
2256
+ */
2257
+ assets?: string;
2258
+ /**
2259
+ * Total liabilities at this date (in base currency)
2260
+ */
2261
+ liabilities?: string;
2262
+ /**
2263
+ * Multi-currency breakdown for this point
2264
+ */
2265
+ byCurrency?: Array<CurrencyBalanceDto>;
2266
+ };
2267
+
2268
+ export type TrendSummaryDto = {
2269
+ /**
2270
+ * Value at start of period
2271
+ */
2272
+ startValue: string;
2273
+ /**
2274
+ * Value at end of period
2275
+ */
2276
+ endValue: string;
2277
+ /**
2278
+ * Total change over period
2279
+ */
2280
+ totalChange: string;
2281
+ /**
2282
+ * Total change percentage
2283
+ */
2284
+ totalChangePercentage: string;
2285
+ };
2286
+
2287
+ export type MultiCurrencyPointDto = {
2288
+ /**
2289
+ * Date in YYYY-MM-DD format
2290
+ */
2291
+ date: string;
2292
+ /**
2293
+ * Balances by currency
2294
+ */
2295
+ byCurrency: Array<CurrencyBalanceDto>;
2296
+ };
2297
+
2298
+ export type PortfolioTrendsResponseDto = {
2299
+ /**
2300
+ * Time series data points
2301
+ */
2302
+ series: Array<TimeSeriesPointDto>;
2303
+ /**
2304
+ * Period summary
2305
+ */
2306
+ summary: TrendSummaryDto;
2307
+ /**
2308
+ * Period requested
2309
+ */
2310
+ period: string;
2311
+ /**
2312
+ * Data granularity
2313
+ */
2314
+ granularity: string;
2315
+ /**
2316
+ * Base currency for converted values
2317
+ */
2318
+ currency: string;
2319
+ /**
2320
+ * Multi-currency time series (each point has currency breakdown)
2321
+ */
2322
+ byCurrency?: Array<MultiCurrencyPointDto>;
2323
+ /**
2324
+ * Exchange rate warnings
2325
+ */
2326
+ warnings?: Array<ExchangeRateWarningDto>;
2327
+ };
2328
+
2329
+ export type CashFlowPointDto = {
2330
+ /**
2331
+ * Month key (YYYY-MM)
2332
+ */
2333
+ month: string;
2334
+ /**
2335
+ * Income in base currency (absolute, converted)
2336
+ */
2337
+ income: string;
2338
+ /**
2339
+ * Expense in base currency (absolute, converted)
2340
+ */
2341
+ expense: string;
2342
+ /**
2343
+ * netSavings = income − expense (savings positive)
2344
+ */
2345
+ netSavings: string;
2346
+ };
2347
+
2348
+ export type CashFlowTrendSummaryDto = {
2349
+ /**
2350
+ * Total income across the period
2351
+ */
2352
+ totalIncome: string;
2353
+ /**
2354
+ * Total expense across the period
2355
+ */
2356
+ totalExpense: string;
2357
+ /**
2358
+ * income − expense across the period
2359
+ */
2360
+ totalNetSavings: string;
2361
+ /**
2362
+ * totalNetSavings divided by the window length (N months, incl. zero-filled)
2363
+ */
2364
+ averageMonthlyNetSavings: string;
2365
+ };
2366
+
2367
+ export type CashFlowTrendsResponseDto = {
2368
+ /**
2369
+ * Monthly cash-flow series (fixed N-month window, zero-filled)
2370
+ */
2371
+ series: Array<CashFlowPointDto>;
2372
+ /**
2373
+ * Period totals
2374
+ */
2375
+ summary: CashFlowTrendSummaryDto;
2376
+ /**
2377
+ * Period requested
2378
+ */
2379
+ period: string;
2380
+ /**
2381
+ * Data granularity (v1 returns month buckets)
2382
+ */
2383
+ granularity: string;
2384
+ /**
2385
+ * Base currency for converted values
2386
+ */
2387
+ currency: string;
2388
+ /**
2389
+ * Exchange rate warnings (e.g. missing rate for a currency)
2390
+ */
2391
+ warnings?: Array<ExchangeRateWarningDto>;
2392
+ };
2393
+
2394
+ export type GenerateSnapshotBody = unknown;
2395
+
2396
+ export type GenerateSnapshotResponse = unknown;
2397
+
2398
+ export type BackfillSnapshotsBody = unknown;
2399
+
2400
+ export type BackfillSnapshotsResponse = unknown;
2401
+
2217
2402
  export type CreateBeanPriceDto = {
2218
2403
  /**
2219
2404
  * Currency being priced (e.g., USD, AAPL, BTC)
@@ -2316,58 +2501,222 @@ export type UpdateBeanPriceDto = {
2316
2501
  };
2317
2502
  };
2318
2503
 
2319
- export type CreateRecurringRuleDto = {
2504
+ export type DeleteOwnUserDto = {
2320
2505
  /**
2321
- * Rule name (unique per user)
2506
+ * Access token for user verification
2322
2507
  */
2323
- name: string;
2508
+ accessToken: string;
2509
+ };
2510
+
2511
+ export type UserSettingsResponseDto = {
2324
2512
  /**
2325
- * Icon emoji
2513
+ * Stored base currency choice (ISO 4217) for net-worth/report aggregation. null = user never chose; aggregates fall back to the region default at display time (#713).
2326
2514
  */
2327
- icon?: string;
2515
+ baseCurrency: string | null;
2516
+ };
2517
+
2518
+ export type UserResponseDto = {
2328
2519
  /**
2329
- * Recurring frequency
2520
+ * User ID
2330
2521
  */
2331
- frequency:
2332
- | 'WEEKLY'
2333
- | 'BIWEEKLY'
2334
- | 'MONTHLY'
2335
- | 'BIMONTHLY'
2336
- | 'QUARTERLY'
2337
- | 'YEARLY'
2338
- | 'CUSTOM';
2522
+ id: string;
2339
2523
  /**
2340
- * Expected amount (positive number)
2524
+ * Assigned user role
2341
2525
  */
2342
- expectedAmount: number;
2526
+ role: string;
2343
2527
  /**
2344
- * Expected day of month (1-31)
2528
+ * Permission strings
2345
2529
  */
2346
- expectedDay?: number;
2530
+ permissions: Array<string>;
2347
2531
  /**
2348
- * Custom interval in days (required for CUSTOM frequency)
2532
+ * User settings
2349
2533
  */
2350
- customIntervalDays?: number;
2534
+ settings: UserSettingsResponseDto;
2535
+ };
2536
+
2537
+ export type SignupDto = {
2351
2538
  /**
2352
- * Currency code
2539
+ * Cloudflare Turnstile verification token (optional when Turnstile disabled)
2353
2540
  */
2354
- currency: string;
2541
+ turnstileToken?: string;
2542
+ };
2543
+
2544
+ export type SignupResponseDto = {
2355
2545
  /**
2356
- * Payee matching pattern (supports wildcards)
2546
+ * JWT auth token
2357
2547
  */
2358
- matchPayeePattern?: string;
2548
+ authToken: string;
2359
2549
  /**
2360
- * Amount tolerance percentage (0-1)
2550
+ * Auto-generated access token
2361
2551
  */
2362
- matchAmountTolerance: number;
2552
+ accessToken: string;
2363
2553
  /**
2364
- * Default expense account for auto-create
2554
+ * Assigned user role
2365
2555
  */
2366
- defaultExpenseAccount?: string;
2556
+ role: 'USER' | 'ADMIN' | 'DEMO' | 'INACTIVE' | 'PAID' | 'OPS';
2557
+ };
2558
+
2559
+ /**
2560
+ * Assigned user role
2561
+ */
2562
+ export type role = 'USER' | 'ADMIN' | 'DEMO' | 'INACTIVE' | 'PAID' | 'OPS';
2563
+
2564
+ export type UpdateUserSettingDto = {
2367
2565
  /**
2368
- * Default payment account for auto-create
2566
+ * Security ID
2369
2567
  */
2370
- defaultPaymentAccount?: string;
2568
+ secId?: number;
2569
+ /**
2570
+ * Annual interest rate
2571
+ */
2572
+ annualInterestRate?: number;
2573
+ /**
2574
+ * Currency code
2575
+ */
2576
+ currency?: string;
2577
+ /**
2578
+ * Base currency code
2579
+ */
2580
+ baseCurrency?: string;
2581
+ /**
2582
+ * Benchmark symbol
2583
+ */
2584
+ benchmark?: string;
2585
+ /**
2586
+ * Color scheme
2587
+ */
2588
+ colorScheme?: 'DARK' | 'LIGHT';
2589
+ /**
2590
+ * Date range filter
2591
+ */
2592
+ dateRange?: string;
2593
+ /**
2594
+ * Emergency fund amount
2595
+ */
2596
+ emergencyFund?: number;
2597
+ /**
2598
+ * Account filter IDs
2599
+ */
2600
+ 'filters.accounts'?: Array<string>;
2601
+ /**
2602
+ * Asset class filters
2603
+ */
2604
+ 'filters.assetClasses'?: Array<string>;
2605
+ /**
2606
+ * Data source filter
2607
+ */
2608
+ 'filters.dataSource'?: string;
2609
+ /**
2610
+ * Symbol filter
2611
+ */
2612
+ 'filters.symbol'?: string;
2613
+ /**
2614
+ * Tag filters
2615
+ */
2616
+ 'filters.tags'?: Array<string>;
2617
+ /**
2618
+ * Enable experimental features
2619
+ */
2620
+ isExperimentalFeatures?: boolean;
2621
+ /**
2622
+ * Enable restricted view mode
2623
+ */
2624
+ isRestrictedView?: boolean;
2625
+ /**
2626
+ * Language code
2627
+ */
2628
+ language?: string;
2629
+ /**
2630
+ * Locale code
2631
+ */
2632
+ locale?: string;
2633
+ /**
2634
+ * Projected total amount
2635
+ */
2636
+ projectedTotalAmount?: number;
2637
+ /**
2638
+ * Retirement date in ISO 8601 format
2639
+ */
2640
+ retirementDate?: string;
2641
+ /**
2642
+ * Savings rate percentage
2643
+ */
2644
+ savingsRate?: number;
2645
+ /**
2646
+ * View mode
2647
+ */
2648
+ viewMode?: 'DEFAULT' | 'ZEN';
2649
+ };
2650
+
2651
+ /**
2652
+ * Color scheme
2653
+ */
2654
+ export type colorScheme = 'DARK' | 'LIGHT';
2655
+
2656
+ /**
2657
+ * View mode
2658
+ */
2659
+ export type viewMode = 'DEFAULT' | 'ZEN';
2660
+
2661
+ export type UpdatePropertyDto = {
2662
+ /**
2663
+ * Property value
2664
+ */
2665
+ value: string;
2666
+ };
2667
+
2668
+ export type CreateRecurringRuleDto = {
2669
+ /**
2670
+ * Rule name (unique per user)
2671
+ */
2672
+ name: string;
2673
+ /**
2674
+ * Icon emoji
2675
+ */
2676
+ icon?: string;
2677
+ /**
2678
+ * Recurring frequency
2679
+ */
2680
+ frequency:
2681
+ | 'WEEKLY'
2682
+ | 'BIWEEKLY'
2683
+ | 'MONTHLY'
2684
+ | 'BIMONTHLY'
2685
+ | 'QUARTERLY'
2686
+ | 'YEARLY'
2687
+ | 'CUSTOM';
2688
+ /**
2689
+ * Expected amount (positive number)
2690
+ */
2691
+ expectedAmount: number;
2692
+ /**
2693
+ * Expected day of month (1-31)
2694
+ */
2695
+ expectedDay?: number;
2696
+ /**
2697
+ * Custom interval in days (required for CUSTOM frequency)
2698
+ */
2699
+ customIntervalDays?: number;
2700
+ /**
2701
+ * Currency code
2702
+ */
2703
+ currency?: string;
2704
+ /**
2705
+ * Payee matching pattern (supports wildcards)
2706
+ */
2707
+ matchPayeePattern?: string;
2708
+ /**
2709
+ * Amount tolerance percentage (0-1)
2710
+ */
2711
+ matchAmountTolerance: number;
2712
+ /**
2713
+ * Default expense account for auto-create
2714
+ */
2715
+ defaultExpenseAccount?: string;
2716
+ /**
2717
+ * Default payment account for auto-create
2718
+ */
2719
+ defaultPaymentAccount?: string;
2371
2720
  /**
2372
2721
  * Default payee for auto-create
2373
2722
  */
@@ -2414,9 +2763,7 @@ export type RecurringRuleResponseDto = {
2414
2763
  /**
2415
2764
  * Icon emoji
2416
2765
  */
2417
- icon?: {
2418
- [key: string]: unknown;
2419
- };
2766
+ icon?: string;
2420
2767
  /**
2421
2768
  * Recurring frequency
2422
2769
  */
@@ -2428,15 +2775,11 @@ export type RecurringRuleResponseDto = {
2428
2775
  /**
2429
2776
  * Expected day of month
2430
2777
  */
2431
- expectedDay?: {
2432
- [key: string]: unknown;
2433
- };
2778
+ expectedDay?: number;
2434
2779
  /**
2435
2780
  * Custom interval in days
2436
2781
  */
2437
- customIntervalDays?: {
2438
- [key: string]: unknown;
2439
- };
2782
+ customIntervalDays?: number;
2440
2783
  /**
2441
2784
  * Currency code
2442
2785
  */
@@ -2444,9 +2787,7 @@ export type RecurringRuleResponseDto = {
2444
2787
  /**
2445
2788
  * Payee matching pattern
2446
2789
  */
2447
- matchPayeePattern?: {
2448
- [key: string]: unknown;
2449
- };
2790
+ matchPayeePattern?: string;
2450
2791
  /**
2451
2792
  * Amount tolerance percentage
2452
2793
  */
@@ -2454,21 +2795,15 @@ export type RecurringRuleResponseDto = {
2454
2795
  /**
2455
2796
  * Default expense account
2456
2797
  */
2457
- defaultExpenseAccount?: {
2458
- [key: string]: unknown;
2459
- };
2798
+ defaultExpenseAccount?: string;
2460
2799
  /**
2461
2800
  * Default payment account
2462
2801
  */
2463
- defaultPaymentAccount?: {
2464
- [key: string]: unknown;
2465
- };
2802
+ defaultPaymentAccount?: string;
2466
2803
  /**
2467
2804
  * Default payee
2468
2805
  */
2469
- defaultPayee?: {
2470
- [key: string]: unknown;
2471
- };
2806
+ defaultPayee?: string;
2472
2807
  /**
2473
2808
  * Whether rule is active
2474
2809
  */
@@ -2480,9 +2815,7 @@ export type RecurringRuleResponseDto = {
2480
2815
  /**
2481
2816
  * Rule end date (YYYY-MM-DD)
2482
2817
  */
2483
- endDate?: {
2484
- [key: string]: unknown;
2485
- };
2818
+ endDate?: string;
2486
2819
  /**
2487
2820
  * Auto-create transaction on expected date
2488
2821
  */
@@ -2490,9 +2823,7 @@ export type RecurringRuleResponseDto = {
2490
2823
  /**
2491
2824
  * Last matched occurrence date (YYYY-MM-DD)
2492
2825
  */
2493
- lastOccurrence?: {
2494
- [key: string]: unknown;
2495
- };
2826
+ lastOccurrence?: string;
2496
2827
  /**
2497
2828
  * Total matched transactions count
2498
2829
  */
@@ -2545,9 +2876,7 @@ export type RecurringRuleWithStatsResponseDto = {
2545
2876
  /**
2546
2877
  * Icon emoji
2547
2878
  */
2548
- icon?: {
2549
- [key: string]: unknown;
2550
- };
2879
+ icon?: string;
2551
2880
  /**
2552
2881
  * Recurring frequency
2553
2882
  */
@@ -2559,15 +2888,11 @@ export type RecurringRuleWithStatsResponseDto = {
2559
2888
  /**
2560
2889
  * Expected day of month
2561
2890
  */
2562
- expectedDay?: {
2563
- [key: string]: unknown;
2564
- };
2891
+ expectedDay?: number;
2565
2892
  /**
2566
2893
  * Custom interval in days
2567
2894
  */
2568
- customIntervalDays?: {
2569
- [key: string]: unknown;
2570
- };
2895
+ customIntervalDays?: number;
2571
2896
  /**
2572
2897
  * Currency code
2573
2898
  */
@@ -2575,9 +2900,7 @@ export type RecurringRuleWithStatsResponseDto = {
2575
2900
  /**
2576
2901
  * Payee matching pattern
2577
2902
  */
2578
- matchPayeePattern?: {
2579
- [key: string]: unknown;
2580
- };
2903
+ matchPayeePattern?: string;
2581
2904
  /**
2582
2905
  * Amount tolerance percentage
2583
2906
  */
@@ -2585,21 +2908,15 @@ export type RecurringRuleWithStatsResponseDto = {
2585
2908
  /**
2586
2909
  * Default expense account
2587
2910
  */
2588
- defaultExpenseAccount?: {
2589
- [key: string]: unknown;
2590
- };
2911
+ defaultExpenseAccount?: string;
2591
2912
  /**
2592
2913
  * Default payment account
2593
2914
  */
2594
- defaultPaymentAccount?: {
2595
- [key: string]: unknown;
2596
- };
2915
+ defaultPaymentAccount?: string;
2597
2916
  /**
2598
2917
  * Default payee
2599
2918
  */
2600
- defaultPayee?: {
2601
- [key: string]: unknown;
2602
- };
2919
+ defaultPayee?: string;
2603
2920
  /**
2604
2921
  * Whether rule is active
2605
2922
  */
@@ -2611,9 +2928,7 @@ export type RecurringRuleWithStatsResponseDto = {
2611
2928
  /**
2612
2929
  * Rule end date (YYYY-MM-DD)
2613
2930
  */
2614
- endDate?: {
2615
- [key: string]: unknown;
2616
- };
2931
+ endDate?: string;
2617
2932
  /**
2618
2933
  * Auto-create transaction on expected date
2619
2934
  */
@@ -2621,9 +2936,7 @@ export type RecurringRuleWithStatsResponseDto = {
2621
2936
  /**
2622
2937
  * Last matched occurrence date (YYYY-MM-DD)
2623
2938
  */
2624
- lastOccurrence?: {
2625
- [key: string]: unknown;
2626
- };
2939
+ lastOccurrence?: string;
2627
2940
  /**
2628
2941
  * Total matched transactions count
2629
2942
  */
@@ -2647,9 +2960,7 @@ export type RecurringRuleWithStatsResponseDto = {
2647
2960
  /**
2648
2961
  * Next expected date (YYYY-MM-DD)
2649
2962
  */
2650
- nextExpectedDate?: {
2651
- [key: string]: unknown;
2652
- };
2963
+ nextExpectedDate?: string;
2653
2964
  /**
2654
2965
  * Total amount of all matched transactions
2655
2966
  */
@@ -2665,15 +2976,11 @@ export type RecurringRuleWithStatsResponseDto = {
2665
2976
  /**
2666
2977
  * First matched transaction date (YYYY-MM-DD)
2667
2978
  */
2668
- firstDate?: {
2669
- [key: string]: unknown;
2670
- };
2979
+ firstDate?: string;
2671
2980
  /**
2672
2981
  * Last matched transaction date (YYYY-MM-DD)
2673
2982
  */
2674
- lastDate?: {
2675
- [key: string]: unknown;
2676
- };
2983
+ lastDate?: string;
2677
2984
  /**
2678
2985
  * Amount variance (standard deviation squared)
2679
2986
  */
@@ -2686,7 +2993,7 @@ export type RecurringRuleWithStatsResponseDto = {
2686
2993
 
2687
2994
  export type UpdateRecurringRuleDto = {
2688
2995
  /**
2689
- * Rule name
2996
+ * Rule name (unique per user)
2690
2997
  */
2691
2998
  name?: string;
2692
2999
  /**
@@ -2705,23 +3012,19 @@ export type UpdateRecurringRuleDto = {
2705
3012
  | 'YEARLY'
2706
3013
  | 'CUSTOM';
2707
3014
  /**
2708
- * Expected amount
3015
+ * Expected amount (positive number)
2709
3016
  */
2710
3017
  expectedAmount?: number;
2711
3018
  /**
2712
3019
  * Expected day of month (1-31)
2713
3020
  */
2714
3021
  expectedDay?: number;
2715
- /**
2716
- * Custom interval in days
2717
- */
2718
- customIntervalDays?: number;
2719
3022
  /**
2720
3023
  * Currency code
2721
3024
  */
2722
3025
  currency?: string;
2723
3026
  /**
2724
- * Payee matching pattern
3027
+ * Payee matching pattern (supports wildcards)
2725
3028
  */
2726
3029
  matchPayeePattern?: string;
2727
3030
  /**
@@ -2729,29 +3032,33 @@ export type UpdateRecurringRuleDto = {
2729
3032
  */
2730
3033
  matchAmountTolerance?: number;
2731
3034
  /**
2732
- * Default expense account
3035
+ * Default expense account for auto-create
2733
3036
  */
2734
3037
  defaultExpenseAccount?: string;
2735
3038
  /**
2736
- * Default payment account
3039
+ * Default payment account for auto-create
2737
3040
  */
2738
3041
  defaultPaymentAccount?: string;
2739
3042
  /**
2740
- * Default payee
3043
+ * Default payee for auto-create
2741
3044
  */
2742
3045
  defaultPayee?: string;
2743
3046
  /**
2744
- * Auto-create transaction
3047
+ * Auto-create transaction when expected date arrives
2745
3048
  */
2746
3049
  autoCreate?: boolean;
2747
- /**
2748
- * Rule active status
2749
- */
2750
- isActive?: boolean;
2751
3050
  /**
2752
3051
  * Rule end date (ISO format)
2753
3052
  */
2754
3053
  endDate?: string;
3054
+ /**
3055
+ * Custom interval in days
3056
+ */
3057
+ customIntervalDays?: number;
3058
+ /**
3059
+ * Rule active status
3060
+ */
3061
+ isActive?: boolean;
2755
3062
  };
2756
3063
 
2757
3064
  export type ExpectedTransactionRuleDto = {
@@ -2762,9 +3069,7 @@ export type ExpectedTransactionRuleDto = {
2762
3069
  /**
2763
3070
  * Rule icon
2764
3071
  */
2765
- icon?: {
2766
- [key: string]: unknown;
2767
- };
3072
+ icon?: string;
2768
3073
  /**
2769
3074
  * Rule frequency
2770
3075
  */
@@ -2803,21 +3108,15 @@ export type ExpectedTransactionResponseDto = {
2803
3108
  /**
2804
3109
  * Matched transaction ID
2805
3110
  */
2806
- matchedTransactionId?: {
2807
- [key: string]: unknown;
2808
- };
3111
+ matchedTransactionId?: string;
2809
3112
  /**
2810
3113
  * Match timestamp (ISO 8601)
2811
3114
  */
2812
- matchedAt?: {
2813
- [key: string]: unknown;
2814
- };
3115
+ matchedAt?: string;
2815
3116
  /**
2816
3117
  * Match confidence score (0-1)
2817
3118
  */
2818
- matchConfidence?: {
2819
- [key: string]: unknown;
2820
- };
3119
+ matchConfidence?: number;
2821
3120
  /**
2822
3121
  * Whether this expected transaction is overdue
2823
3122
  */
@@ -2955,350 +3254,12 @@ export type ForecastResponseDto = {
2955
3254
  periodEnd: string;
2956
3255
  };
2957
3256
 
2958
- export type CurrencyBalanceDto = {
2959
- /**
2960
- * ISO 4217 currency code
2961
- */
2962
- currency: string;
2963
- /**
2964
- * Balance amount
2965
- */
2966
- balance: string;
2967
- };
2968
-
2969
- export type TimeSeriesPointDto = {
2970
- /**
2971
- * Date in YYYY-MM-DD format
2972
- */
2973
- date: string;
2974
- /**
2975
- * Value at this date (in base currency)
2976
- */
2977
- value: string;
2978
- /**
2979
- * Change from previous point
2980
- */
2981
- change?: {
2982
- [key: string]: unknown;
2983
- };
2984
- /**
2985
- * Total assets at this date (in base currency)
2986
- */
2987
- assets?: string;
2988
- /**
2989
- * Total liabilities at this date (in base currency)
2990
- */
2991
- liabilities?: string;
2992
- /**
2993
- * Multi-currency breakdown for this point
2994
- */
2995
- byCurrency?: Array<CurrencyBalanceDto>;
2996
- };
2997
-
2998
- export type TrendSummaryDto = {
2999
- /**
3000
- * Value at start of period
3001
- */
3002
- startValue: string;
3003
- /**
3004
- * Value at end of period
3005
- */
3006
- endValue: string;
3007
- /**
3008
- * Total change over period
3009
- */
3010
- totalChange: string;
3011
- /**
3012
- * Total change percentage
3013
- */
3014
- totalChangePercentage: string;
3015
- };
3016
-
3017
- export type MultiCurrencyPointDto = {
3018
- /**
3019
- * Date in YYYY-MM-DD format
3020
- */
3021
- date: string;
3022
- /**
3023
- * Balances by currency
3024
- */
3025
- byCurrency: Array<CurrencyBalanceDto>;
3026
- };
3027
-
3028
- export type PortfolioTrendsResponseDto = {
3029
- /**
3030
- * Time series data points
3031
- */
3032
- series: Array<TimeSeriesPointDto>;
3033
- /**
3034
- * Period summary
3035
- */
3036
- summary: TrendSummaryDto;
3037
- /**
3038
- * Period requested
3039
- */
3040
- period: string;
3041
- /**
3042
- * Data granularity
3043
- */
3044
- granularity: string;
3045
- /**
3046
- * Base currency for converted values
3047
- */
3048
- currency: string;
3049
- /**
3050
- * Multi-currency time series (each point has currency breakdown)
3051
- */
3052
- byCurrency?: Array<MultiCurrencyPointDto>;
3053
- /**
3054
- * Exchange rate warnings
3055
- */
3056
- warnings?: Array<ExchangeRateWarningDto>;
3057
- };
3058
-
3059
- export type CashFlowPointDto = {
3060
- /**
3061
- * Month key (YYYY-MM)
3062
- */
3063
- month: string;
3064
- /**
3065
- * Income in base currency (absolute, converted)
3066
- */
3067
- income: string;
3068
- /**
3069
- * Expense in base currency (absolute, converted)
3070
- */
3071
- expense: string;
3072
- /**
3073
- * netSavings = income − expense (savings positive)
3074
- */
3075
- netSavings: string;
3076
- };
3077
-
3078
- export type CashFlowTrendSummaryDto = {
3079
- /**
3080
- * Total income across the period
3081
- */
3082
- totalIncome: string;
3083
- /**
3084
- * Total expense across the period
3085
- */
3086
- totalExpense: string;
3087
- /**
3088
- * income − expense across the period
3089
- */
3090
- totalNetSavings: string;
3091
- /**
3092
- * totalNetSavings divided by the window length (N months, incl. zero-filled)
3093
- */
3094
- averageMonthlyNetSavings: string;
3095
- };
3096
-
3097
- export type CashFlowTrendsResponseDto = {
3098
- /**
3099
- * Monthly cash-flow series (fixed N-month window, zero-filled)
3100
- */
3101
- series: Array<CashFlowPointDto>;
3102
- /**
3103
- * Period totals
3104
- */
3105
- summary: CashFlowTrendSummaryDto;
3106
- /**
3107
- * Period requested
3108
- */
3109
- period: string;
3110
- /**
3111
- * Data granularity (v1 returns month buckets)
3112
- */
3113
- granularity: string;
3114
- /**
3115
- * Base currency for converted values
3116
- */
3117
- currency: string;
3118
- /**
3119
- * Exchange rate warnings (e.g. missing rate for a currency)
3120
- */
3121
- warnings?: Array<ExchangeRateWarningDto>;
3122
- };
3123
-
3124
- export type GenerateSnapshotBody = unknown;
3125
-
3126
- export type GenerateSnapshotResponse = unknown;
3127
-
3128
- export type BackfillSnapshotsBody = unknown;
3129
-
3130
- export type BackfillSnapshotsResponse = unknown;
3131
-
3132
- export type DeleteOwnUserDto = {
3133
- /**
3134
- * Access token for user verification
3135
- */
3136
- accessToken: string;
3137
- };
3138
-
3139
- export type UserSettingsResponseDto = {
3140
- /**
3141
- * Base currency (ISO 4217) for net-worth/report aggregation. Independent of region (ADR-0006).
3142
- */
3143
- baseCurrency: string | null;
3144
- };
3145
-
3146
- export type UserResponseDto = {
3147
- /**
3148
- * User ID
3149
- */
3150
- id: string;
3151
- /**
3152
- * Assigned user role
3153
- */
3154
- role: string;
3155
- /**
3156
- * Permission strings
3157
- */
3158
- permissions: Array<string>;
3159
- /**
3160
- * User settings
3161
- */
3162
- settings: UserSettingsResponseDto;
3163
- };
3164
-
3165
- export type SignupDto = {
3166
- /**
3167
- * Cloudflare Turnstile verification token (optional when Turnstile disabled)
3168
- */
3169
- turnstileToken?: string;
3170
- };
3171
-
3172
- export type SignupResponseDto = {
3173
- /**
3174
- * JWT auth token
3175
- */
3176
- authToken: string;
3177
- /**
3178
- * Auto-generated access token
3179
- */
3180
- accessToken: string;
3181
- /**
3182
- * Assigned user role
3183
- */
3184
- role: 'USER' | 'ADMIN' | 'DEMO' | 'INACTIVE' | 'PAID' | 'OPS';
3185
- };
3186
-
3187
- /**
3188
- * Assigned user role
3189
- */
3190
- export type role = 'USER' | 'ADMIN' | 'DEMO' | 'INACTIVE' | 'PAID' | 'OPS';
3191
-
3192
- export type UpdateUserSettingDto = {
3193
- /**
3194
- * Security ID
3195
- */
3196
- secId?: number;
3197
- /**
3198
- * Annual interest rate
3199
- */
3200
- annualInterestRate?: number;
3201
- /**
3202
- * Currency code
3203
- */
3204
- currency?: string;
3205
- /**
3206
- * Base currency code
3207
- */
3208
- baseCurrency?: string;
3209
- /**
3210
- * Benchmark symbol
3211
- */
3212
- benchmark?: string;
3213
- /**
3214
- * Color scheme
3215
- */
3216
- colorScheme?: 'DARK' | 'LIGHT';
3217
- /**
3218
- * Date range filter
3219
- */
3220
- dateRange?: string;
3221
- /**
3222
- * Emergency fund amount
3223
- */
3224
- emergencyFund?: number;
3225
- /**
3226
- * Account filter IDs
3227
- */
3228
- 'filters.accounts'?: Array<string>;
3229
- /**
3230
- * Asset class filters
3231
- */
3232
- 'filters.assetClasses'?: Array<string>;
3233
- /**
3234
- * Data source filter
3235
- */
3236
- 'filters.dataSource'?: string;
3237
- /**
3238
- * Symbol filter
3239
- */
3240
- 'filters.symbol'?: string;
3241
- /**
3242
- * Tag filters
3243
- */
3244
- 'filters.tags'?: Array<string>;
3245
- /**
3246
- * Enable experimental features
3247
- */
3248
- isExperimentalFeatures?: boolean;
3249
- /**
3250
- * Enable restricted view mode
3251
- */
3252
- isRestrictedView?: boolean;
3253
- /**
3254
- * Language code
3255
- */
3256
- language?: string;
3257
- /**
3258
- * Locale code
3259
- */
3260
- locale?: string;
3261
- /**
3262
- * Projected total amount
3263
- */
3264
- projectedTotalAmount?: number;
3265
- /**
3266
- * Retirement date in ISO 8601 format
3267
- */
3268
- retirementDate?: string;
3269
- /**
3270
- * Savings rate percentage
3271
- */
3272
- savingsRate?: number;
3273
- /**
3274
- * View mode
3275
- */
3276
- viewMode?: 'DEFAULT' | 'ZEN';
3277
- };
3278
-
3279
- /**
3280
- * Color scheme
3281
- */
3282
- export type colorScheme = 'DARK' | 'LIGHT';
3283
-
3284
- /**
3285
- * View mode
3286
- */
3287
- export type viewMode = 'DEFAULT' | 'ZEN';
3288
-
3289
- export type UpdatePropertyDto = {
3290
- /**
3291
- * Property value
3292
- */
3293
- value: string;
3294
- };
3295
-
3296
- export type CreateTransactionRuleDto = {
3297
- name: string;
3298
- description?: string;
3299
- narrationKeywords?: Array<unknown[]>;
3300
- payeeKeywords?: Array<unknown[]>;
3301
- categoryKeywords?: Array<unknown[]>;
3257
+ export type CreateTransactionRuleDto = {
3258
+ name: string;
3259
+ description?: string;
3260
+ narrationKeywords?: Array<unknown[]>;
3261
+ payeeKeywords?: Array<unknown[]>;
3262
+ categoryKeywords?: Array<unknown[]>;
3302
3263
  /**
3303
3264
  * Payment method keywords (e.g., HuaBei, YuEBao)
3304
3265
  */
@@ -3608,15 +3569,15 @@ export type UpdateTransactionRuleDto = {
3608
3569
  * Maximum transaction amount (inclusive)
3609
3570
  */
3610
3571
  amountMax?: number;
3611
- priority?: number;
3612
- /**
3613
- * Enable or disable the rule
3614
- */
3615
- enabled?: boolean;
3572
+ priority?: number;
3616
3573
  additionalTags?: Array<unknown[]>;
3617
3574
  additionalMetadata?: {
3618
3575
  [key: string]: unknown;
3619
3576
  };
3577
+ /**
3578
+ * Enable or disable the rule
3579
+ */
3580
+ enabled?: boolean;
3620
3581
  };
3621
3582
 
3622
3583
  export type TestRuleDto = {
@@ -4475,11 +4436,28 @@ export type ProcessNlpDto = {
4475
4436
  */
4476
4437
  selectedRuleId?: string;
4477
4438
  /**
4478
- * 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.
4439
+ * confirm_account echo-back: account path selected from the prior confirm_account response (suggestedAccount, similarAccounts[i].path, or a typed path). Applied directly when the session is confirming_account — no NL re-parse.
4479
4440
  */
4480
4441
  selectedAccount?: string;
4442
+ /**
4443
+ * Viewpoint account hint: the beancount path the user drilled into (e.g. from an account drill-down). Tie-break only — never overrides accounts resolved from the text. Must be an owned, OPEN Assets:/Liabilities: account; unresolvable hints are silently ignored.
4444
+ */
4445
+ viewpointAccount?: string;
4446
+ /**
4447
+ * Viewpoint category hint: the ADR-0075 Group segment the user drilled into (e.g. 'Food'). Resolved to a concrete OPEN account in that group; tie-break only — never overrides a category resolved from the text.
4448
+ */
4449
+ viewpointCategory?: string;
4450
+ /**
4451
+ * Companion flow root for viewpointCategory ('income' | 'expense'), mirroring the ADR-0126 list-endpoint invariant. Derived from the session's routed intent (multi-turn) when absent; a first-turn flow-less category hint is dropped — send the flow explicitly.
4452
+ */
4453
+ viewpointFlow?: 'income' | 'expense';
4481
4454
  };
4482
4455
 
4456
+ /**
4457
+ * Companion flow root for viewpointCategory ('income' | 'expense'), mirroring the ADR-0126 list-endpoint invariant. Derived from the session's routed intent (multi-turn) when absent; a first-turn flow-less category hint is dropped — send the flow explicitly.
4458
+ */
4459
+ export type viewpointFlow = 'income' | 'expense';
4460
+
4483
4461
  export type NlpTransactionInfoDto = {
4484
4462
  /**
4485
4463
  * Transaction ID
@@ -4705,6 +4683,17 @@ export type NlpRuleConfirmationDataDto = {
4705
4683
  reasons: Array<string>;
4706
4684
  };
4707
4685
 
4686
+ export type NlpAccountCandidateDto = {
4687
+ /**
4688
+ * Canonical beancount account path (echo back on selection)
4689
+ */
4690
+ path: string;
4691
+ /**
4692
+ * Localized display name (ADR-0114 read-time projection, user locale)
4693
+ */
4694
+ name: string;
4695
+ };
4696
+
4708
4697
  export type NlpAccountConfirmationDataDto = {
4709
4698
  /**
4710
4699
  * The invalid account name
@@ -4715,9 +4704,9 @@ export type NlpAccountConfirmationDataDto = {
4715
4704
  */
4716
4705
  suggestedAccount?: string;
4717
4706
  /**
4718
- * Similar accounts for user selection
4707
+ * Similar accounts for user selection (path + localized name, #680)
4719
4708
  */
4720
- similarAccounts: Array<string>;
4709
+ similarAccounts: Array<NlpAccountCandidateDto>;
4721
4710
  /**
4722
4711
  * Error message explaining the issue
4723
4712
  */
@@ -5177,6 +5166,55 @@ export type PlatformMatchResponseDto = {
5177
5166
  */
5178
5167
  export type matchType2 = 'none' | 'exact' | 'prefix' | 'substring';
5179
5168
 
5169
+ export type PlatformStandardsPlatformDto = {
5170
+ /**
5171
+ * Global platform ID
5172
+ */
5173
+ id: string;
5174
+ /**
5175
+ * Platform name (e.g., "ICBC")
5176
+ */
5177
+ name: string;
5178
+ /**
5179
+ * Canonical identifier in ACCOUNT_RE format (e.g., "icbc")
5180
+ */
5181
+ canonical: string;
5182
+ /**
5183
+ * Suggested path segment — canonical PascalCased per hyphen-part, hyphens preserved (e.g. "Apple-Pay")
5184
+ */
5185
+ suggestedSegment: string;
5186
+ /**
5187
+ * Platform type
5188
+ */
5189
+ type:
5190
+ | 'BANK'
5191
+ | 'BROKERAGE'
5192
+ | 'CRYPTO_EXCHANGE'
5193
+ | 'PAYMENT'
5194
+ | 'INVESTMENT'
5195
+ | 'INSURANCE'
5196
+ | 'OTHER';
5197
+ /**
5198
+ * Region-aware category (institution vocab, e.g. DigitalWallet/Bank) resolved against the final region. null = no region-aware suggestion; fall back to type.
5199
+ */
5200
+ category: string | null;
5201
+ };
5202
+
5203
+ export type PlatformStandardsResponseDto = {
5204
+ /**
5205
+ * The selected platform (institution lock source)
5206
+ */
5207
+ platform: PlatformStandardsPlatformDto;
5208
+ /**
5209
+ * Resolved template region (ISO 3166-1 alpha-2, UPPERCASE): the platform's own countryCode when set, else the region query param. For regions without a regional template file the template list falls back to the universal-only catalog while region still echoes the code.
5210
+ */
5211
+ region: string;
5212
+ /**
5213
+ * Candidate account-standard templates of the resolved region (groupable by productCategory client-side)
5214
+ */
5215
+ templates: Array<AccountStandardResponseDto>;
5216
+ };
5217
+
5180
5218
  export type CreatePlatformDto = {
5181
5219
  /**
5182
5220
  * Platform name
@@ -5373,11 +5411,11 @@ export type PlatformGroupDto = {
5373
5411
  */
5374
5412
  platformName: string;
5375
5413
  /**
5376
- * Accounts within this platform
5414
+ * Accounts within this platform (Assets and Liabilities rows, #696)
5377
5415
  */
5378
5416
  accounts: Array<AccountItemDto>;
5379
5417
  /**
5380
- * FX-converted total balance in base currency
5418
+ * FX-converted total balance in base currency (nets Assets + Liabilities rows; can be negative)
5381
5419
  */
5382
5420
  totalBalance: string;
5383
5421
  /**
@@ -5389,7 +5427,7 @@ export type PlatformGroupDto = {
5389
5427
  */
5390
5428
  convertedBalance?: string;
5391
5429
  /**
5392
- * Share of the grand converted total (0-100); 0 when grand total is 0
5430
+ * Share of the converted asset-side grand total (0-100); liability balances are excluded from the basis; 0 when grand total is 0 (#696)
5393
5431
  */
5394
5432
  sharePct: number;
5395
5433
  };
@@ -5415,7 +5453,7 @@ export type AccountExchangeRateWarningDto = {
5415
5453
 
5416
5454
  export type AccountsSummaryDto = {
5417
5455
  /**
5418
- * Total number of accounts
5456
+ * Total number of accounts (balance sheet: Assets + Liabilities, #696)
5419
5457
  */
5420
5458
  totalAccounts: number;
5421
5459
  /**
@@ -5767,9 +5805,7 @@ export type MonetaryDto = {
5767
5805
  /**
5768
5806
  * Converted to user base currency (Decimal string)
5769
5807
  */
5770
- baseCcyEquivalent?: {
5771
- [key: string]: unknown;
5772
- } | null;
5808
+ baseCcyEquivalent?: string | null;
5773
5809
  };
5774
5810
 
5775
5811
  export type CurrentPriceDto = {
@@ -5821,15 +5857,11 @@ export type HoldingPnlRowDto = {
5821
5857
  /**
5822
5858
  * Account settlement currency (ISO 4217), from cost currency
5823
5859
  */
5824
- accountCcy?: {
5825
- [key: string]: unknown;
5826
- } | null;
5860
+ accountCcy?: string | null;
5827
5861
  /**
5828
5862
  * Broker type derived from Platform.type
5829
5863
  */
5830
- brokerType?: {
5831
- [key: string]: unknown;
5832
- } | null;
5864
+ brokerType?: string | null;
5833
5865
  /**
5834
5866
  * Commodity symbol
5835
5867
  */
@@ -5839,9 +5871,7 @@ export type HoldingPnlRowDto = {
5839
5871
  */
5840
5872
  chartToken: 'equity' | 'fund' | 'bond' | 'cash' | 'other';
5841
5873
  assetClass: string;
5842
- assetSubClass?: {
5843
- [key: string]: unknown;
5844
- } | null;
5874
+ assetSubClass?: string | null;
5845
5875
  /**
5846
5876
  * Net held units (Decimal string)
5847
5877
  */
@@ -5865,15 +5895,11 @@ export type HoldingPnlRowDto = {
5865
5895
  /**
5866
5896
  * Unrealized P&L in base currency (Decimal string); null when any FX/price missing
5867
5897
  */
5868
- unrealizedPnlBase?: {
5869
- [key: string]: unknown;
5870
- } | null;
5898
+ unrealizedPnlBase?: string | null;
5871
5899
  /**
5872
5900
  * Unrealized P&L % (Decimal string)
5873
5901
  */
5874
- unrealizedPnlPct?: {
5875
- [key: string]: unknown;
5876
- } | null;
5902
+ unrealizedPnlPct?: string | null;
5877
5903
  /**
5878
5904
  * Historical FX rate applied to cost basis
5879
5905
  */
@@ -5885,9 +5911,7 @@ export type HoldingPnlRowDto = {
5885
5911
  /**
5886
5912
  * Share of invested assets % (Decimal string); only for invested chartTokens
5887
5913
  */
5888
- pctOfInvestedAssets?: {
5889
- [key: string]: unknown;
5890
- } | null;
5914
+ pctOfInvestedAssets?: string | null;
5891
5915
  /**
5892
5916
  * 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
5893
5917
  */
@@ -5911,15 +5935,9 @@ export type HoldingPnlWarningDto = {
5911
5935
  | 'OVERSOLD_LOTS'
5912
5936
  | 'NO_PRICE'
5913
5937
  | 'MIXED_COST_CURRENCY';
5914
- symbol?: {
5915
- [key: string]: unknown;
5916
- } | null;
5917
- accountId?: {
5918
- [key: string]: unknown;
5919
- } | null;
5920
- currency?: {
5921
- [key: string]: unknown;
5922
- } | null;
5938
+ symbol?: string | null;
5939
+ accountId?: string | null;
5940
+ currency?: string | null;
5923
5941
  };
5924
5942
 
5925
5943
  /**
@@ -6022,7 +6040,9 @@ export type ParserContributionSamplesDto = {
6022
6040
  /**
6023
6041
  * Client-sanitized sample rows (key = column name, value = cell)
6024
6042
  */
6025
- rows: Array<string>;
6043
+ rows: Array<{
6044
+ [key: string]: unknown;
6045
+ }>;
6026
6046
  rawHeaders?: Array<string>;
6027
6047
  };
6028
6048
 
@@ -6081,130 +6101,86 @@ export type ParserContributionRelayResponseDto = {
6081
6101
 
6082
6102
  export type SymbolSearchResultDto = {
6083
6103
  symbol: string;
6084
- name?: {
6085
- [key: string]: unknown;
6086
- } | null;
6087
- exchange?: {
6088
- [key: string]: unknown;
6089
- } | null;
6104
+ name?: string | null;
6105
+ exchange?: string | null;
6090
6106
  /**
6091
6107
  * OpenBB asset_type (e.g. stock, etf)
6092
6108
  */
6093
- assetType?: {
6094
- [key: string]: unknown;
6095
- } | null;
6109
+ assetType?: string | null;
6096
6110
  /**
6097
6111
  * IGN asset class (region.types.ts ASSET_CLASSES)
6098
6112
  */
6099
- assetClass?: {
6100
- [key: string]: unknown;
6101
- } | null;
6113
+ assetClass?: string | null;
6102
6114
  /**
6103
6115
  * IGN asset sub-class (region.types.ts ASSET_SUB_CLASSES)
6104
6116
  */
6105
- assetSubClass?: {
6106
- [key: string]: unknown;
6107
- } | null;
6117
+ assetSubClass?: string | null;
6108
6118
  /**
6109
6119
  * Trading currency (extra_data or inferred from exchange)
6110
6120
  */
6111
- currency?: {
6112
- [key: string]: unknown;
6113
- } | null;
6121
+ currency?: string | null;
6114
6122
  };
6115
6123
 
6116
6124
  export type SymbolQuoteDto = {
6117
6125
  symbol?: string;
6118
- name?: {
6119
- [key: string]: unknown;
6120
- } | null;
6121
- exchange?: {
6122
- [key: string]: unknown;
6123
- } | null;
6126
+ name?: string | null;
6127
+ exchange?: string | null;
6124
6128
  /**
6125
6129
  * OpenBB asset_type
6126
6130
  */
6127
- assetType?: {
6128
- [key: string]: unknown;
6129
- } | null;
6131
+ assetType?: string | null;
6130
6132
  /**
6131
6133
  * IGN asset class
6132
6134
  */
6133
- assetClass?: {
6134
- [key: string]: unknown;
6135
- } | null;
6135
+ assetClass?: string | null;
6136
6136
  /**
6137
6137
  * IGN asset sub-class
6138
6138
  */
6139
- assetSubClass?: {
6140
- [key: string]: unknown;
6141
- } | null;
6139
+ assetSubClass?: string | null;
6142
6140
  /**
6143
6141
  * Trading currency (extra_data or inferred from exchange)
6144
6142
  */
6145
- currency?: {
6146
- [key: string]: unknown;
6147
- } | null;
6143
+ currency?: string | null;
6148
6144
  /**
6149
6145
  * Latest price (Decimal string)
6150
6146
  */
6151
- price?: {
6152
- [key: string]: unknown;
6153
- } | null;
6147
+ price?: string | null;
6154
6148
  /**
6155
6149
  * Date the price was observed (ISO yyyy-MM-dd)
6156
6150
  */
6157
- priceDate?: {
6158
- [key: string]: unknown;
6159
- } | null;
6151
+ priceDate?: string | null;
6160
6152
  /**
6161
6153
  * 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.
6162
6154
  */
6163
- changePercent?: {
6164
- [key: string]: unknown;
6165
- } | null;
6155
+ changePercent?: number | null;
6166
6156
  /**
6167
6157
  * Previous close (Decimal string)
6168
6158
  */
6169
- prevClose?: {
6170
- [key: string]: unknown;
6171
- } | null;
6159
+ prevClose?: string | null;
6172
6160
  /**
6173
6161
  * Day open (Decimal string)
6174
6162
  */
6175
- open?: {
6176
- [key: string]: unknown;
6177
- } | null;
6163
+ open?: string | null;
6178
6164
  /**
6179
6165
  * Day high (Decimal string)
6180
6166
  */
6181
- high?: {
6182
- [key: string]: unknown;
6183
- } | null;
6167
+ high?: string | null;
6184
6168
  /**
6185
6169
  * Day low (Decimal string)
6186
6170
  */
6187
- low?: {
6188
- [key: string]: unknown;
6189
- } | null;
6171
+ low?: string | null;
6190
6172
  /**
6191
6173
  * Day volume (Decimal string)
6192
6174
  */
6193
- volume?: {
6194
- [key: string]: unknown;
6195
- } | null;
6175
+ volume?: string | null;
6196
6176
  /**
6197
6177
  * 52-week high (Decimal string)
6198
6178
  */
6199
- yearHigh?: {
6200
- [key: string]: unknown;
6201
- } | null;
6179
+ yearHigh?: string | null;
6202
6180
  /**
6203
6181
  * 52-week low (Decimal string)
6204
6182
  */
6205
- yearLow?: {
6206
- [key: string]: unknown;
6207
- } | null;
6183
+ yearLow?: string | null;
6208
6184
  };
6209
6185
 
6210
6186
  export type AccountControllerCreateData = {
@@ -6564,7 +6540,7 @@ export type AccountStandardsControllerGetTemplatesData = {
6564
6540
  | 'tw'
6565
6541
  | 'us';
6566
6542
  /**
6567
- * Search term for path or description
6543
+ * Search term for path, description, aliases, or localized display name
6568
6544
  */
6569
6545
  search?: string;
6570
6546
  /**
@@ -6751,9 +6727,9 @@ export type TransactionControllerListData = {
6751
6727
  */
6752
6728
  search?: string;
6753
6729
  /**
6754
- * Filter by transaction status
6730
+ * Filter by transaction status: single value, comma-separated multi-value (e.g. VOIDED,SUPERSEDED), or ALL to include audit rows. Defaults to ACTIVE-only (ADR-0128; previously unfiltered — breaking change).
6755
6731
  */
6756
- status?: 'ACTIVE' | 'VOIDED' | 'SUPERSEDED';
6732
+ status?: 'ACTIVE' | 'VOIDED' | 'SUPERSEDED' | 'ALL';
6757
6733
  };
6758
6734
 
6759
6735
  export type TransactionControllerListResponse = TransactionListResponseDto;
@@ -7510,8 +7486,7 @@ export type PayeeProfileAdminControllerUnverifyData = {
7510
7486
  id: string;
7511
7487
  };
7512
7488
 
7513
- export type PayeeProfileAdminControllerUnverifyResponse =
7514
- PayeeProfileResponseDto;
7489
+ export type PayeeProfileAdminControllerUnverifyResponse = void;
7515
7490
 
7516
7491
  export type CommodityControllerCreateData = {
7517
7492
  /**
@@ -7736,14 +7711,173 @@ export type CommodityControllerGetOrCreateData = {
7736
7711
  | 'tw'
7737
7712
  | 'us';
7738
7713
  /**
7739
- * Commodity symbol
7714
+ * Commodity symbol
7715
+ */
7716
+ symbol: string;
7717
+ };
7718
+
7719
+ export type CommodityControllerGetOrCreateResponse = CommodityResponseDto;
7720
+
7721
+ export type CommodityControllerBulkCreateData = {
7722
+ /**
7723
+ * Region code for tenant context
7724
+ */
7725
+ region:
7726
+ | 'ad'
7727
+ | 'ae'
7728
+ | 'af'
7729
+ | 'ag'
7730
+ | 'al'
7731
+ | 'am'
7732
+ | 'ao'
7733
+ | 'au'
7734
+ | 'br'
7735
+ | 'ca'
7736
+ | 'cn'
7737
+ | 'de'
7738
+ | 'dz'
7739
+ | 'es'
7740
+ | 'fr'
7741
+ | 'gb'
7742
+ | 'hk'
7743
+ | 'in'
7744
+ | 'it'
7745
+ | 'jp'
7746
+ | 'kr'
7747
+ | 'nl'
7748
+ | 'sg'
7749
+ | 'tw'
7750
+ | 'us';
7751
+ };
7752
+
7753
+ export type CommodityControllerBulkCreateResponse = Array<CommodityResponseDto>;
7754
+
7755
+ export type ReportingControllerGetPortfolioTrendsData = {
7756
+ /**
7757
+ * Data granularity
7758
+ */
7759
+ granularity?: 'day' | 'week' | 'month';
7760
+ /**
7761
+ * Time period
7762
+ */
7763
+ period?: '1m' | '3m' | '6m' | '1y';
7764
+ /**
7765
+ * Region code for tenant context
7766
+ */
7767
+ region:
7768
+ | 'ad'
7769
+ | 'ae'
7770
+ | 'af'
7771
+ | 'ag'
7772
+ | 'al'
7773
+ | 'am'
7774
+ | 'ao'
7775
+ | 'au'
7776
+ | 'br'
7777
+ | 'ca'
7778
+ | 'cn'
7779
+ | 'de'
7780
+ | 'dz'
7781
+ | 'es'
7782
+ | 'fr'
7783
+ | 'gb'
7784
+ | 'hk'
7785
+ | 'in'
7786
+ | 'it'
7787
+ | 'jp'
7788
+ | 'kr'
7789
+ | 'nl'
7790
+ | 'sg'
7791
+ | 'tw'
7792
+ | 'us';
7793
+ };
7794
+
7795
+ export type ReportingControllerGetPortfolioTrendsResponse =
7796
+ PortfolioTrendsResponseDto;
7797
+
7798
+ export type ReportingControllerGetCashFlowTrendsData = {
7799
+ /**
7800
+ * Data granularity (accepted for API symmetry; v1 returns month buckets)
7801
+ */
7802
+ granularity?: 'day' | 'week' | 'month';
7803
+ /**
7804
+ * Time period
7805
+ */
7806
+ period?: '1m' | '3m' | '6m' | '1y';
7807
+ /**
7808
+ * Region code for tenant context
7809
+ */
7810
+ region:
7811
+ | 'ad'
7812
+ | 'ae'
7813
+ | 'af'
7814
+ | 'ag'
7815
+ | 'al'
7816
+ | 'am'
7817
+ | 'ao'
7818
+ | 'au'
7819
+ | 'br'
7820
+ | 'ca'
7821
+ | 'cn'
7822
+ | 'de'
7823
+ | 'dz'
7824
+ | 'es'
7825
+ | 'fr'
7826
+ | 'gb'
7827
+ | 'hk'
7828
+ | 'in'
7829
+ | 'it'
7830
+ | 'jp'
7831
+ | 'kr'
7832
+ | 'nl'
7833
+ | 'sg'
7834
+ | 'tw'
7835
+ | 'us';
7836
+ };
7837
+
7838
+ export type ReportingControllerGetCashFlowTrendsResponse =
7839
+ CashFlowTrendsResponseDto;
7840
+
7841
+ export type ReportingControllerGenerateSnapshotData = {
7842
+ /**
7843
+ * Region code for tenant context
7844
+ */
7845
+ region:
7846
+ | 'ad'
7847
+ | 'ae'
7848
+ | 'af'
7849
+ | 'ag'
7850
+ | 'al'
7851
+ | 'am'
7852
+ | 'ao'
7853
+ | 'au'
7854
+ | 'br'
7855
+ | 'ca'
7856
+ | 'cn'
7857
+ | 'de'
7858
+ | 'dz'
7859
+ | 'es'
7860
+ | 'fr'
7861
+ | 'gb'
7862
+ | 'hk'
7863
+ | 'in'
7864
+ | 'it'
7865
+ | 'jp'
7866
+ | 'kr'
7867
+ | 'nl'
7868
+ | 'sg'
7869
+ | 'tw'
7870
+ | 'us';
7871
+ /**
7872
+ * Optional date (defaults to today)
7740
7873
  */
7741
- symbol: string;
7874
+ requestBody: GenerateSnapshotBody;
7742
7875
  };
7743
7876
 
7744
- export type CommodityControllerGetOrCreateResponse = CommodityResponseDto;
7877
+ export type ReportingControllerGenerateSnapshotResponse =
7878
+ GenerateSnapshotResponse;
7745
7879
 
7746
- export type CommodityControllerBulkCreateData = {
7880
+ export type ReportingControllerBackfillSnapshotsData = {
7747
7881
  /**
7748
7882
  * Region code for tenant context
7749
7883
  */
@@ -7773,9 +7907,11 @@ export type CommodityControllerBulkCreateData = {
7773
7907
  | 'sg'
7774
7908
  | 'tw'
7775
7909
  | 'us';
7910
+ requestBody: BackfillSnapshotsBody;
7776
7911
  };
7777
7912
 
7778
- export type CommodityControllerBulkCreateResponse = Array<CommodityResponseDto>;
7913
+ export type ReportingControllerBackfillSnapshotsResponse =
7914
+ BackfillSnapshotsResponse;
7779
7915
 
7780
7916
  export type PriceControllerCreateData = {
7781
7917
  /**
@@ -8024,6 +8160,93 @@ export type PriceControllerBulkCreateData = {
8024
8160
 
8025
8161
  export type PriceControllerBulkCreateResponse = Array<PriceResponseDto>;
8026
8162
 
8163
+ export type UserControllerDeleteOwnUserData = {
8164
+ requestBody: DeleteOwnUserDto;
8165
+ };
8166
+
8167
+ export type UserControllerDeleteOwnUserResponse = void;
8168
+
8169
+ export type UserControllerGetUserData = {
8170
+ acceptLanguage: string;
8171
+ };
8172
+
8173
+ export type UserControllerGetUserResponse = UserResponseDto;
8174
+
8175
+ export type UserControllerSignupUserData = {
8176
+ requestBody: SignupDto;
8177
+ };
8178
+
8179
+ export type UserControllerSignupUserResponse = SignupResponseDto;
8180
+
8181
+ export type UserControllerDeleteUserData = {
8182
+ /**
8183
+ * User ID to delete
8184
+ */
8185
+ id: string;
8186
+ };
8187
+
8188
+ export type UserControllerDeleteUserResponse = void;
8189
+
8190
+ export type UserControllerGetUserInfoData = {
8191
+ /**
8192
+ * User ID
8193
+ */
8194
+ id: string;
8195
+ };
8196
+
8197
+ export type UserControllerGetUserInfoResponse = unknown;
8198
+
8199
+ export type UserControllerUpdateUserSettingData = {
8200
+ requestBody: UpdateUserSettingDto;
8201
+ };
8202
+
8203
+ export type UserControllerUpdateUserSettingResponse = unknown;
8204
+
8205
+ export type UserControllerGetAllUserSettingsByPageData = {
8206
+ /**
8207
+ * Page number
8208
+ */
8209
+ pageNo: number;
8210
+ /**
8211
+ * Page size
8212
+ */
8213
+ pageSize: number;
8214
+ };
8215
+
8216
+ export type UserControllerGetAllUserSettingsByPageResponse = unknown;
8217
+
8218
+ export type UserControllerGetAssetLiabilitySummaryResponse = unknown;
8219
+
8220
+ export type PropertyControllerGetAllResponse = unknown;
8221
+
8222
+ export type PropertyControllerGetByKeyData = {
8223
+ /**
8224
+ * Property key
8225
+ */
8226
+ key: string;
8227
+ };
8228
+
8229
+ export type PropertyControllerGetByKeyResponse = unknown;
8230
+
8231
+ export type PropertyControllerUpdateData = {
8232
+ /**
8233
+ * Property key
8234
+ */
8235
+ key: string;
8236
+ requestBody: UpdatePropertyDto;
8237
+ };
8238
+
8239
+ export type PropertyControllerUpdateResponse = unknown;
8240
+
8241
+ export type PropertyControllerDeleteData = {
8242
+ /**
8243
+ * Property key
8244
+ */
8245
+ key: string;
8246
+ };
8247
+
8248
+ export type PropertyControllerDeleteResponse = void;
8249
+
8027
8250
  export type RecurringRuleControllerCreateData = {
8028
8251
  /**
8029
8252
  * Region code for tenant context
@@ -8343,171 +8566,15 @@ export type ExpectedTransactionControllerFindAllData = {
8343
8566
  */
8344
8567
  status?: string;
8345
8568
  /**
8346
- * Filter by date range end (YYYY-MM-DD)
8347
- */
8348
- toDate?: string;
8349
- };
8350
-
8351
- export type ExpectedTransactionControllerFindAllResponse =
8352
- ExpectedTransactionListResponseDto;
8353
-
8354
- export type ExpectedTransactionControllerFindOverdueData = {
8355
- /**
8356
- * Region code for tenant context
8357
- */
8358
- region:
8359
- | 'ad'
8360
- | 'ae'
8361
- | 'af'
8362
- | 'ag'
8363
- | 'al'
8364
- | 'am'
8365
- | 'ao'
8366
- | 'au'
8367
- | 'br'
8368
- | 'ca'
8369
- | 'cn'
8370
- | 'de'
8371
- | 'dz'
8372
- | 'es'
8373
- | 'fr'
8374
- | 'gb'
8375
- | 'hk'
8376
- | 'in'
8377
- | 'it'
8378
- | 'jp'
8379
- | 'kr'
8380
- | 'nl'
8381
- | 'sg'
8382
- | 'tw'
8383
- | 'us';
8384
- };
8385
-
8386
- export type ExpectedTransactionControllerFindOverdueResponse =
8387
- ExpectedTransactionListResponseDto;
8388
-
8389
- export type ExpectedTransactionControllerFindOneData = {
8390
- /**
8391
- * Expected transaction ID
8392
- */
8393
- id: string;
8394
- /**
8395
- * Region code for tenant context
8396
- */
8397
- region:
8398
- | 'ad'
8399
- | 'ae'
8400
- | 'af'
8401
- | 'ag'
8402
- | 'al'
8403
- | 'am'
8404
- | 'ao'
8405
- | 'au'
8406
- | 'br'
8407
- | 'ca'
8408
- | 'cn'
8409
- | 'de'
8410
- | 'dz'
8411
- | 'es'
8412
- | 'fr'
8413
- | 'gb'
8414
- | 'hk'
8415
- | 'in'
8416
- | 'it'
8417
- | 'jp'
8418
- | 'kr'
8419
- | 'nl'
8420
- | 'sg'
8421
- | 'tw'
8422
- | 'us';
8423
- };
8424
-
8425
- export type ExpectedTransactionControllerFindOneResponse =
8426
- ExpectedTransactionResponseDto;
8427
-
8428
- export type ExpectedTransactionControllerSkipData = {
8429
- /**
8430
- * Expected transaction ID
8431
- */
8432
- id: string;
8433
- /**
8434
- * Region code for tenant context
8435
- */
8436
- region:
8437
- | 'ad'
8438
- | 'ae'
8439
- | 'af'
8440
- | 'ag'
8441
- | 'al'
8442
- | 'am'
8443
- | 'ao'
8444
- | 'au'
8445
- | 'br'
8446
- | 'ca'
8447
- | 'cn'
8448
- | 'de'
8449
- | 'dz'
8450
- | 'es'
8451
- | 'fr'
8452
- | 'gb'
8453
- | 'hk'
8454
- | 'in'
8455
- | 'it'
8456
- | 'jp'
8457
- | 'kr'
8458
- | 'nl'
8459
- | 'sg'
8460
- | 'tw'
8461
- | 'us';
8462
- };
8463
-
8464
- export type ExpectedTransactionControllerSkipResponse =
8465
- ExpectedTransactionResponseDto;
8466
-
8467
- export type ExpectedTransactionControllerUndoSkipData = {
8468
- /**
8469
- * Expected transaction ID
8470
- */
8471
- id: string;
8472
- /**
8473
- * Region code for tenant context
8474
- */
8475
- region:
8476
- | 'ad'
8477
- | 'ae'
8478
- | 'af'
8479
- | 'ag'
8480
- | 'al'
8481
- | 'am'
8482
- | 'ao'
8483
- | 'au'
8484
- | 'br'
8485
- | 'ca'
8486
- | 'cn'
8487
- | 'de'
8488
- | 'dz'
8489
- | 'es'
8490
- | 'fr'
8491
- | 'gb'
8492
- | 'hk'
8493
- | 'in'
8494
- | 'it'
8495
- | 'jp'
8496
- | 'kr'
8497
- | 'nl'
8498
- | 'sg'
8499
- | 'tw'
8500
- | 'us';
8569
+ * Filter by date range end (YYYY-MM-DD)
8570
+ */
8571
+ toDate?: string;
8501
8572
  };
8502
8573
 
8503
- export type ExpectedTransactionControllerUndoSkipResponse =
8504
- ExpectedTransactionResponseDto;
8574
+ export type ExpectedTransactionControllerFindAllResponse =
8575
+ ExpectedTransactionListResponseDto;
8505
8576
 
8506
- export type ExpectedTransactionControllerConfirmMatchData = {
8507
- /**
8508
- * Expected transaction ID
8509
- */
8510
- id: string;
8577
+ export type ExpectedTransactionControllerFindOverdueData = {
8511
8578
  /**
8512
8579
  * Region code for tenant context
8513
8580
  */
@@ -8537,12 +8604,12 @@ export type ExpectedTransactionControllerConfirmMatchData = {
8537
8604
  | 'sg'
8538
8605
  | 'tw'
8539
8606
  | 'us';
8540
- requestBody: ConfirmMatchDto;
8541
8607
  };
8542
8608
 
8543
- export type ExpectedTransactionControllerConfirmMatchResponse = unknown;
8609
+ export type ExpectedTransactionControllerFindOverdueResponse =
8610
+ ExpectedTransactionListResponseDto;
8544
8611
 
8545
- export type ExpectedTransactionControllerUnmatchData = {
8612
+ export type ExpectedTransactionControllerFindOneData = {
8546
8613
  /**
8547
8614
  * Expected transaction ID
8548
8615
  */
@@ -8578,9 +8645,10 @@ export type ExpectedTransactionControllerUnmatchData = {
8578
8645
  | 'us';
8579
8646
  };
8580
8647
 
8581
- export type ExpectedTransactionControllerUnmatchResponse = unknown;
8648
+ export type ExpectedTransactionControllerFindOneResponse =
8649
+ ExpectedTransactionResponseDto;
8582
8650
 
8583
- export type ExpectedTransactionControllerEnterNowData = {
8651
+ export type ExpectedTransactionControllerSkipData = {
8584
8652
  /**
8585
8653
  * Expected transaction ID
8586
8654
  */
@@ -8614,16 +8682,16 @@ export type ExpectedTransactionControllerEnterNowData = {
8614
8682
  | 'sg'
8615
8683
  | 'tw'
8616
8684
  | 'us';
8617
- requestBody: EnterNowDto;
8618
8685
  };
8619
8686
 
8620
- export type ExpectedTransactionControllerEnterNowResponse = unknown;
8687
+ export type ExpectedTransactionControllerSkipResponse =
8688
+ ExpectedTransactionResponseDto;
8621
8689
 
8622
- export type ForecastControllerGetForecastData = {
8690
+ export type ExpectedTransactionControllerUndoSkipData = {
8623
8691
  /**
8624
- * Number of months to forecast (1-12, default 3)
8692
+ * Expected transaction ID
8625
8693
  */
8626
- months?: number;
8694
+ id: string;
8627
8695
  /**
8628
8696
  * Region code for tenant context
8629
8697
  */
@@ -8655,17 +8723,13 @@ export type ForecastControllerGetForecastData = {
8655
8723
  | 'us';
8656
8724
  };
8657
8725
 
8658
- export type ForecastControllerGetForecastResponse = ForecastResponseDto;
8726
+ export type ExpectedTransactionControllerUndoSkipResponse = void;
8659
8727
 
8660
- export type ReportingControllerGetPortfolioTrendsData = {
8661
- /**
8662
- * Data granularity
8663
- */
8664
- granularity?: 'day' | 'week' | 'month';
8728
+ export type ExpectedTransactionControllerConfirmMatchData = {
8665
8729
  /**
8666
- * Time period
8730
+ * Expected transaction ID
8667
8731
  */
8668
- period?: '1m' | '3m' | '6m' | '1y';
8732
+ id: string;
8669
8733
  /**
8670
8734
  * Region code for tenant context
8671
8735
  */
@@ -8695,20 +8759,16 @@ export type ReportingControllerGetPortfolioTrendsData = {
8695
8759
  | 'sg'
8696
8760
  | 'tw'
8697
8761
  | 'us';
8762
+ requestBody: ConfirmMatchDto;
8698
8763
  };
8699
8764
 
8700
- export type ReportingControllerGetPortfolioTrendsResponse =
8701
- PortfolioTrendsResponseDto;
8765
+ export type ExpectedTransactionControllerConfirmMatchResponse = unknown;
8702
8766
 
8703
- export type ReportingControllerGetCashFlowTrendsData = {
8704
- /**
8705
- * Data granularity (accepted for API symmetry; v1 returns month buckets)
8706
- */
8707
- granularity?: 'day' | 'week' | 'month';
8767
+ export type ExpectedTransactionControllerUnmatchData = {
8708
8768
  /**
8709
- * Time period
8769
+ * Expected transaction ID
8710
8770
  */
8711
- period?: '1m' | '3m' | '6m' | '1y';
8771
+ id: string;
8712
8772
  /**
8713
8773
  * Region code for tenant context
8714
8774
  */
@@ -8740,10 +8800,13 @@ export type ReportingControllerGetCashFlowTrendsData = {
8740
8800
  | 'us';
8741
8801
  };
8742
8802
 
8743
- export type ReportingControllerGetCashFlowTrendsResponse =
8744
- CashFlowTrendsResponseDto;
8803
+ export type ExpectedTransactionControllerUnmatchResponse = void;
8745
8804
 
8746
- export type ReportingControllerGenerateSnapshotData = {
8805
+ export type ExpectedTransactionControllerEnterNowData = {
8806
+ /**
8807
+ * Expected transaction ID
8808
+ */
8809
+ id: string;
8747
8810
  /**
8748
8811
  * Region code for tenant context
8749
8812
  */
@@ -8773,16 +8836,16 @@ export type ReportingControllerGenerateSnapshotData = {
8773
8836
  | 'sg'
8774
8837
  | 'tw'
8775
8838
  | 'us';
8776
- /**
8777
- * Optional date (defaults to today)
8778
- */
8779
- requestBody: GenerateSnapshotBody;
8839
+ requestBody: EnterNowDto;
8780
8840
  };
8781
8841
 
8782
- export type ReportingControllerGenerateSnapshotResponse =
8783
- GenerateSnapshotResponse;
8842
+ export type ExpectedTransactionControllerEnterNowResponse = unknown;
8784
8843
 
8785
- export type ReportingControllerBackfillSnapshotsData = {
8844
+ export type ForecastControllerGetForecastData = {
8845
+ /**
8846
+ * Number of months to forecast (1-12, default 3)
8847
+ */
8848
+ months?: number;
8786
8849
  /**
8787
8850
  * Region code for tenant context
8788
8851
  */
@@ -8812,98 +8875,9 @@ export type ReportingControllerBackfillSnapshotsData = {
8812
8875
  | 'sg'
8813
8876
  | 'tw'
8814
8877
  | 'us';
8815
- requestBody: BackfillSnapshotsBody;
8816
- };
8817
-
8818
- export type ReportingControllerBackfillSnapshotsResponse =
8819
- BackfillSnapshotsResponse;
8820
-
8821
- export type UserControllerDeleteOwnUserData = {
8822
- requestBody: DeleteOwnUserDto;
8823
- };
8824
-
8825
- export type UserControllerDeleteOwnUserResponse = void;
8826
-
8827
- export type UserControllerGetUserData = {
8828
- acceptLanguage: string;
8829
- };
8830
-
8831
- export type UserControllerGetUserResponse = UserResponseDto;
8832
-
8833
- export type UserControllerSignupUserData = {
8834
- requestBody: SignupDto;
8835
- };
8836
-
8837
- export type UserControllerSignupUserResponse = SignupResponseDto;
8838
-
8839
- export type UserControllerDeleteUserData = {
8840
- /**
8841
- * User ID to delete
8842
- */
8843
- id: string;
8844
- };
8845
-
8846
- export type UserControllerDeleteUserResponse = void;
8847
-
8848
- export type UserControllerGetUserInfoData = {
8849
- /**
8850
- * User ID
8851
- */
8852
- id: string;
8853
- };
8854
-
8855
- export type UserControllerGetUserInfoResponse = unknown;
8856
-
8857
- export type UserControllerUpdateUserSettingData = {
8858
- requestBody: UpdateUserSettingDto;
8859
- };
8860
-
8861
- export type UserControllerUpdateUserSettingResponse = unknown;
8862
-
8863
- export type UserControllerGetAllUserSettingsByPageData = {
8864
- /**
8865
- * Page number
8866
- */
8867
- pageNo: number;
8868
- /**
8869
- * Page size
8870
- */
8871
- pageSize: number;
8872
- };
8873
-
8874
- export type UserControllerGetAllUserSettingsByPageResponse = unknown;
8875
-
8876
- export type UserControllerGetAssetLiabilitySummaryResponse = unknown;
8877
-
8878
- export type PropertyControllerGetAllResponse = unknown;
8879
-
8880
- export type PropertyControllerGetByKeyData = {
8881
- /**
8882
- * Property key
8883
- */
8884
- key: string;
8885
- };
8886
-
8887
- export type PropertyControllerGetByKeyResponse = unknown;
8888
-
8889
- export type PropertyControllerUpdateData = {
8890
- /**
8891
- * Property key
8892
- */
8893
- key: string;
8894
- requestBody: UpdatePropertyDto;
8895
- };
8896
-
8897
- export type PropertyControllerUpdateResponse = unknown;
8898
-
8899
- export type PropertyControllerDeleteData = {
8900
- /**
8901
- * Property key
8902
- */
8903
- key: string;
8904
8878
  };
8905
8879
 
8906
- export type PropertyControllerDeleteResponse = void;
8880
+ export type ForecastControllerGetForecastResponse = ForecastResponseDto;
8907
8881
 
8908
8882
  export type TransactionRuleControllerCreateData = {
8909
8883
  /**
@@ -9777,7 +9751,7 @@ export type ReconciliationControllerHistoryData = {
9777
9751
  export type ReconciliationControllerHistoryResponse =
9778
9752
  Array<ReconciliationRecordDto>;
9779
9753
 
9780
- export type ExportControllerExportBeancountResponse = unknown;
9754
+ export type ExportControllerExportBeancountResponse = Blob | File;
9781
9755
 
9782
9756
  export type FileImportControllerImportFileData = {
9783
9757
  /**
@@ -10535,6 +10509,24 @@ export type PlatformControllerMatchPlatformsData = {
10535
10509
 
10536
10510
  export type PlatformControllerMatchPlatformsResponse = PlatformMatchResponseDto;
10537
10511
 
10512
+ export type PlatformControllerGetPlatformStandardsData = {
10513
+ /**
10514
+ * Platform ID (from a match result)
10515
+ */
10516
+ id: string;
10517
+ /**
10518
+ * Region code (ISO 3166-1 alpha-2, case-insensitive). Required for global platforms (countryCode null) — resolved as their template region; ignored when the platform has its own countryCode.
10519
+ */
10520
+ region?: string;
10521
+ /**
10522
+ * Filter templates by account type (path first segment)
10523
+ */
10524
+ type?: 'Assets' | 'Liabilities' | 'Income' | 'Expenses' | 'Equity';
10525
+ };
10526
+
10527
+ export type PlatformControllerGetPlatformStandardsResponse =
10528
+ PlatformStandardsResponseDto;
10529
+
10538
10530
  export type PlatformControllerUpdateData = {
10539
10531
  /**
10540
10532
  * Platform ID
@@ -11513,7 +11505,7 @@ export type $OpenApiTs = {
11513
11505
  /**
11514
11506
  * Payee profile unverified successfully
11515
11507
  */
11516
- 200: PayeeProfileResponseDto;
11508
+ 204: void;
11517
11509
  /**
11518
11510
  * Admin access required
11519
11511
  */
@@ -11616,7 +11608,79 @@ export type $OpenApiTs = {
11616
11608
  /**
11617
11609
  * Commodities created successfully
11618
11610
  */
11619
- 201: Array<CommodityResponseDto>;
11611
+ 201: Array<CommodityResponseDto>;
11612
+ };
11613
+ };
11614
+ };
11615
+ '/api/v1/{region}/reporting/portfolio/trends': {
11616
+ get: {
11617
+ req: ReportingControllerGetPortfolioTrendsData;
11618
+ res: {
11619
+ /**
11620
+ * Trends retrieved successfully
11621
+ */
11622
+ 200: PortfolioTrendsResponseDto;
11623
+ /**
11624
+ * User not authenticated
11625
+ */
11626
+ 401: unknown;
11627
+ };
11628
+ };
11629
+ };
11630
+ '/api/v1/{region}/reporting/cash-flow/trends': {
11631
+ get: {
11632
+ req: ReportingControllerGetCashFlowTrendsData;
11633
+ res: {
11634
+ /**
11635
+ * Cash-flow trends retrieved successfully
11636
+ */
11637
+ 200: CashFlowTrendsResponseDto;
11638
+ /**
11639
+ * User not authenticated
11640
+ */
11641
+ 401: unknown;
11642
+ };
11643
+ };
11644
+ };
11645
+ '/api/v1/{region}/reporting/snapshots/generate': {
11646
+ post: {
11647
+ req: ReportingControllerGenerateSnapshotData;
11648
+ res: {
11649
+ /**
11650
+ * Snapshot generated successfully
11651
+ */
11652
+ 200: GenerateSnapshotResponse;
11653
+ /**
11654
+ * Invalid date format
11655
+ */
11656
+ 400: unknown;
11657
+ /**
11658
+ * User not authenticated
11659
+ */
11660
+ 401: unknown;
11661
+ };
11662
+ };
11663
+ };
11664
+ '/api/v1/{region}/reporting/snapshots/backfill': {
11665
+ post: {
11666
+ req: ReportingControllerBackfillSnapshotsData;
11667
+ res: {
11668
+ /**
11669
+ * Backfill completed successfully
11670
+ */
11671
+ 200: BackfillSnapshotsResponse;
11672
+ /**
11673
+ * Invalid date format or range
11674
+ */
11675
+ 400: unknown;
11676
+ /**
11677
+ * User not authenticated
11678
+ */
11679
+ 401: unknown;
11680
+ /**
11681
+ * Backfill already in progress for this user
11682
+ */
11683
+ 409: unknown;
11620
11684
  };
11621
11685
  };
11622
11686
  };
@@ -11704,514 +11768,442 @@ export type $OpenApiTs = {
11704
11768
  };
11705
11769
  };
11706
11770
  };
11707
- '/api/v1/{region}/bean/recurring-rules': {
11708
- post: {
11709
- req: RecurringRuleControllerCreateData;
11771
+ '/api/v1/users': {
11772
+ delete: {
11773
+ req: UserControllerDeleteOwnUserData;
11710
11774
  res: {
11711
11775
  /**
11712
- * Rule created successfully
11713
- */
11714
- 201: RecurringRuleResponseDto;
11715
- /**
11716
- * Invalid input data (e.g., autoCreate without accounts)
11776
+ * User deleted successfully
11717
11777
  */
11718
- 400: unknown;
11778
+ 204: void;
11719
11779
  /**
11720
- * Rule with same name already exists
11780
+ * Invalid access token
11721
11781
  */
11722
- 409: unknown;
11782
+ 403: unknown;
11723
11783
  };
11724
11784
  };
11725
11785
  get: {
11726
- req: RecurringRuleControllerFindAllData;
11786
+ req: UserControllerGetUserData;
11727
11787
  res: {
11728
11788
  /**
11729
- * Rules retrieved successfully
11789
+ * User retrieved successfully
11730
11790
  */
11731
- 200: Array<RecurringRuleResponseDto>;
11791
+ 200: UserResponseDto;
11732
11792
  };
11733
11793
  };
11734
- };
11735
- '/api/v1/{region}/bean/recurring-rules/from-transaction/{transactionId}': {
11736
11794
  post: {
11737
- req: RecurringRuleControllerCreateFromTransactionData;
11738
- res: {
11739
- /**
11740
- * Rule created successfully
11741
- */
11742
- 201: RecurringRuleResponseDto;
11743
- /**
11744
- * Transaction not found
11745
- */
11746
- 404: ApiProblemResponseDto;
11747
- /**
11748
- * Rule with same name already exists or transaction already linked
11749
- */
11750
- 409: ApiProblemResponseDto;
11751
- };
11752
- };
11753
- };
11754
- '/api/v1/{region}/bean/recurring-rules/{id}': {
11755
- get: {
11756
- req: RecurringRuleControllerFindOneData;
11757
- res: {
11758
- /**
11759
- * Rule retrieved successfully
11760
- */
11761
- 200: RecurringRuleResponseDto;
11762
- /**
11763
- * Rule not found
11764
- */
11765
- 404: unknown;
11766
- };
11767
- };
11768
- patch: {
11769
- req: RecurringRuleControllerUpdateData;
11795
+ req: UserControllerSignupUserData;
11770
11796
  res: {
11771
11797
  /**
11772
- * Rule updated successfully
11798
+ * User created successfully
11773
11799
  */
11774
- 200: RecurringRuleResponseDto;
11800
+ 201: SignupResponseDto;
11775
11801
  /**
11776
- * Invalid input data
11802
+ * Invalid Turnstile token (when Turnstile is enabled)
11777
11803
  */
11778
11804
  400: unknown;
11779
11805
  /**
11780
- * Rule not found
11806
+ * User signup is disabled
11781
11807
  */
11782
- 404: unknown;
11808
+ 403: unknown;
11783
11809
  };
11784
11810
  };
11811
+ };
11812
+ '/api/v1/users/{id}': {
11785
11813
  delete: {
11786
- req: RecurringRuleControllerDeleteData;
11814
+ req: UserControllerDeleteUserData;
11787
11815
  res: {
11788
11816
  /**
11789
- * Rule deleted successfully
11817
+ * User deleted successfully
11790
11818
  */
11791
11819
  204: void;
11792
11820
  /**
11793
- * Rule not found
11821
+ * Cannot delete own account or insufficient permissions
11794
11822
  */
11795
- 404: unknown;
11823
+ 403: unknown;
11796
11824
  };
11797
11825
  };
11798
11826
  };
11799
- '/api/v1/{region}/bean/recurring-rules/{id}/stats': {
11827
+ '/api/v1/users/{id}/info': {
11800
11828
  get: {
11801
- req: RecurringRuleControllerGetWithStatsData;
11829
+ req: UserControllerGetUserInfoData;
11802
11830
  res: {
11803
11831
  /**
11804
- * Rule with stats retrieved successfully
11832
+ * User info retrieved successfully
11805
11833
  */
11806
- 200: RecurringRuleWithStatsResponseDto;
11834
+ 200: unknown;
11807
11835
  /**
11808
- * Rule not found
11836
+ * Cannot access other user info without admin permission
11809
11837
  */
11810
- 404: unknown;
11838
+ 403: unknown;
11811
11839
  };
11812
11840
  };
11813
11841
  };
11814
- '/api/v1/{region}/bean/expected-transactions': {
11815
- get: {
11816
- req: ExpectedTransactionControllerFindAllData;
11842
+ '/api/v1/users/setting': {
11843
+ put: {
11844
+ req: UserControllerUpdateUserSettingData;
11817
11845
  res: {
11818
11846
  /**
11819
- * Expected transactions retrieved successfully
11847
+ * Settings updated successfully
11820
11848
  */
11821
- 200: ExpectedTransactionListResponseDto;
11822
- };
11823
- };
11824
- };
11825
- '/api/v1/{region}/bean/expected-transactions/overdue': {
11826
- get: {
11827
- req: ExpectedTransactionControllerFindOverdueData;
11828
- res: {
11849
+ 200: unknown;
11829
11850
  /**
11830
- * Overdue transactions retrieved successfully
11851
+ * Insufficient permissions
11831
11852
  */
11832
- 200: ExpectedTransactionListResponseDto;
11853
+ 403: unknown;
11833
11854
  };
11834
11855
  };
11835
11856
  };
11836
- '/api/v1/{region}/bean/expected-transactions/{id}': {
11857
+ '/api/v1/users/settings-by-page': {
11837
11858
  get: {
11838
- req: ExpectedTransactionControllerFindOneData;
11859
+ req: UserControllerGetAllUserSettingsByPageData;
11839
11860
  res: {
11840
11861
  /**
11841
- * Expected transaction retrieved successfully
11842
- */
11843
- 200: ExpectedTransactionResponseDto;
11844
- /**
11845
- * Expected transaction not found
11862
+ * Settings list retrieved successfully
11846
11863
  */
11847
- 404: unknown;
11864
+ 200: unknown;
11848
11865
  };
11849
11866
  };
11850
11867
  };
11851
- '/api/v1/{region}/bean/expected-transactions/{id}/skip': {
11852
- post: {
11853
- req: ExpectedTransactionControllerSkipData;
11854
- res: {
11855
- /**
11856
- * Expected transaction skipped successfully
11857
- */
11858
- 200: ExpectedTransactionResponseDto;
11859
- /**
11860
- * Cannot skip - not in PENDING status
11861
- */
11862
- 400: unknown;
11863
- /**
11864
- * Expected transaction not found
11865
- */
11866
- 404: unknown;
11867
- };
11868
- };
11869
- delete: {
11870
- req: ExpectedTransactionControllerUndoSkipData;
11868
+ '/api/v1/users/asset-liability-summary': {
11869
+ get: {
11871
11870
  res: {
11872
11871
  /**
11873
- * Skip undone successfully
11874
- */
11875
- 200: ExpectedTransactionResponseDto;
11876
- /**
11877
- * Cannot undo - not in SKIPPED status
11878
- */
11879
- 400: unknown;
11880
- /**
11881
- * Expected transaction not found
11872
+ * Summary retrieved successfully
11882
11873
  */
11883
- 404: unknown;
11874
+ 200: unknown;
11884
11875
  };
11885
11876
  };
11886
11877
  };
11887
- '/api/v1/{region}/bean/expected-transactions/{id}/match': {
11888
- post: {
11889
- req: ExpectedTransactionControllerConfirmMatchData;
11878
+ '/api/v1/admin/properties': {
11879
+ get: {
11890
11880
  res: {
11891
11881
  /**
11892
- * Match confirmed successfully
11882
+ * Properties retrieved successfully
11893
11883
  */
11894
11884
  200: unknown;
11895
11885
  /**
11896
- * Cannot match - not in PENDING status
11897
- */
11898
- 400: unknown;
11899
- /**
11900
- * Expected or actual transaction not found
11886
+ * Unauthorized
11901
11887
  */
11902
- 404: unknown;
11888
+ 401: unknown;
11903
11889
  /**
11904
- * Actual transaction already matched to another rule
11890
+ * Forbidden - insufficient permissions
11905
11891
  */
11906
- 409: unknown;
11892
+ 403: unknown;
11907
11893
  };
11908
11894
  };
11909
- delete: {
11910
- req: ExpectedTransactionControllerUnmatchData;
11895
+ };
11896
+ '/api/v1/admin/properties/{key}': {
11897
+ get: {
11898
+ req: PropertyControllerGetByKeyData;
11911
11899
  res: {
11912
11900
  /**
11913
- * Match removed successfully
11901
+ * Property retrieved successfully
11914
11902
  */
11915
11903
  200: unknown;
11916
11904
  /**
11917
- * Cannot unmatch - not in COMPLETED status
11918
- */
11919
- 400: unknown;
11920
- /**
11921
- * Expected transaction not found
11922
- */
11923
- 404: unknown;
11924
- };
11925
- };
11926
- };
11927
- '/api/v1/{region}/bean/expected-transactions/{id}/enter': {
11928
- post: {
11929
- req: ExpectedTransactionControllerEnterNowData;
11930
- res: {
11931
- /**
11932
- * Transaction created successfully
11905
+ * Unauthorized
11933
11906
  */
11934
- 201: unknown;
11907
+ 401: unknown;
11935
11908
  /**
11936
- * Cannot enter - not in PENDING status or missing accounts
11909
+ * Forbidden - insufficient permissions
11937
11910
  */
11938
- 400: unknown;
11911
+ 403: unknown;
11939
11912
  /**
11940
- * Expected transaction or accounts not found
11913
+ * Property not found
11941
11914
  */
11942
11915
  404: unknown;
11943
11916
  };
11944
11917
  };
11945
- };
11946
- '/api/v1/{region}/bean/recurring/forecast': {
11947
- get: {
11948
- req: ForecastControllerGetForecastData;
11949
- res: {
11950
- /**
11951
- * Forecast retrieved successfully
11952
- */
11953
- 200: ForecastResponseDto;
11954
- };
11955
- };
11956
- };
11957
- '/api/v1/{region}/reporting/portfolio/trends': {
11958
- get: {
11959
- req: ReportingControllerGetPortfolioTrendsData;
11918
+ put: {
11919
+ req: PropertyControllerUpdateData;
11960
11920
  res: {
11961
11921
  /**
11962
- * Trends retrieved successfully
11922
+ * Property updated successfully
11963
11923
  */
11964
- 200: PortfolioTrendsResponseDto;
11924
+ 200: unknown;
11965
11925
  /**
11966
- * User not authenticated
11926
+ * Unauthorized
11967
11927
  */
11968
11928
  401: unknown;
11969
- };
11970
- };
11971
- };
11972
- '/api/v1/{region}/reporting/cash-flow/trends': {
11973
- get: {
11974
- req: ReportingControllerGetCashFlowTrendsData;
11975
- res: {
11976
- /**
11977
- * Cash-flow trends retrieved successfully
11978
- */
11979
- 200: CashFlowTrendsResponseDto;
11980
11929
  /**
11981
- * User not authenticated
11930
+ * Forbidden - insufficient permissions
11982
11931
  */
11983
- 401: unknown;
11932
+ 403: unknown;
11984
11933
  };
11985
- };
11986
- };
11987
- '/api/v1/{region}/reporting/snapshots/generate': {
11988
- post: {
11989
- req: ReportingControllerGenerateSnapshotData;
11934
+ };
11935
+ delete: {
11936
+ req: PropertyControllerDeleteData;
11990
11937
  res: {
11991
11938
  /**
11992
- * Snapshot generated successfully
11939
+ * Property deleted successfully
11993
11940
  */
11994
- 200: GenerateSnapshotResponse;
11941
+ 204: void;
11995
11942
  /**
11996
- * Invalid date format
11943
+ * Unauthorized
11997
11944
  */
11998
- 400: unknown;
11945
+ 401: unknown;
11999
11946
  /**
12000
- * User not authenticated
11947
+ * Forbidden - insufficient permissions
12001
11948
  */
12002
- 401: unknown;
11949
+ 403: unknown;
11950
+ /**
11951
+ * Property not found
11952
+ */
11953
+ 404: unknown;
12003
11954
  };
12004
11955
  };
12005
11956
  };
12006
- '/api/v1/{region}/reporting/snapshots/backfill': {
11957
+ '/api/v1/{region}/bean/recurring-rules': {
12007
11958
  post: {
12008
- req: ReportingControllerBackfillSnapshotsData;
11959
+ req: RecurringRuleControllerCreateData;
12009
11960
  res: {
12010
11961
  /**
12011
- * Backfill completed successfully
11962
+ * Rule created successfully
12012
11963
  */
12013
- 200: BackfillSnapshotsResponse;
11964
+ 201: RecurringRuleResponseDto;
12014
11965
  /**
12015
- * Invalid date format or range
11966
+ * Invalid input data (e.g., autoCreate without accounts)
12016
11967
  */
12017
11968
  400: unknown;
12018
11969
  /**
12019
- * User not authenticated
11970
+ * Rule with same name already exists
12020
11971
  */
12021
- 401: unknown;
11972
+ 409: unknown;
11973
+ };
11974
+ };
11975
+ get: {
11976
+ req: RecurringRuleControllerFindAllData;
11977
+ res: {
12022
11978
  /**
12023
- * Backfill already in progress for this user
11979
+ * Rules retrieved successfully
12024
11980
  */
12025
- 409: unknown;
11981
+ 200: Array<RecurringRuleResponseDto>;
12026
11982
  };
12027
11983
  };
12028
11984
  };
12029
- '/api/v1/users': {
12030
- delete: {
12031
- req: UserControllerDeleteOwnUserData;
11985
+ '/api/v1/{region}/bean/recurring-rules/from-transaction/{transactionId}': {
11986
+ post: {
11987
+ req: RecurringRuleControllerCreateFromTransactionData;
12032
11988
  res: {
12033
11989
  /**
12034
- * User deleted successfully
11990
+ * Rule created successfully
12035
11991
  */
12036
- 204: void;
11992
+ 201: RecurringRuleResponseDto;
12037
11993
  /**
12038
- * Invalid access token
11994
+ * Transaction not found
12039
11995
  */
12040
- 403: unknown;
11996
+ 404: ApiProblemResponseDto;
11997
+ /**
11998
+ * Rule with same name already exists or transaction already linked
11999
+ */
12000
+ 409: ApiProblemResponseDto;
12041
12001
  };
12042
12002
  };
12003
+ };
12004
+ '/api/v1/{region}/bean/recurring-rules/{id}': {
12043
12005
  get: {
12044
- req: UserControllerGetUserData;
12006
+ req: RecurringRuleControllerFindOneData;
12045
12007
  res: {
12046
12008
  /**
12047
- * User retrieved successfully
12009
+ * Rule retrieved successfully
12048
12010
  */
12049
- 200: UserResponseDto;
12011
+ 200: RecurringRuleResponseDto;
12012
+ /**
12013
+ * Rule not found
12014
+ */
12015
+ 404: unknown;
12050
12016
  };
12051
12017
  };
12052
- post: {
12053
- req: UserControllerSignupUserData;
12018
+ patch: {
12019
+ req: RecurringRuleControllerUpdateData;
12054
12020
  res: {
12055
12021
  /**
12056
- * User created successfully
12022
+ * Rule updated successfully
12057
12023
  */
12058
- 201: SignupResponseDto;
12024
+ 200: RecurringRuleResponseDto;
12059
12025
  /**
12060
- * Invalid Turnstile token (when Turnstile is enabled)
12026
+ * Invalid input data
12061
12027
  */
12062
12028
  400: unknown;
12063
12029
  /**
12064
- * User signup is disabled
12030
+ * Rule not found
12065
12031
  */
12066
- 403: unknown;
12032
+ 404: unknown;
12067
12033
  };
12068
12034
  };
12069
- };
12070
- '/api/v1/users/{id}': {
12071
12035
  delete: {
12072
- req: UserControllerDeleteUserData;
12036
+ req: RecurringRuleControllerDeleteData;
12073
12037
  res: {
12074
12038
  /**
12075
- * User deleted successfully
12039
+ * Rule deleted successfully
12076
12040
  */
12077
12041
  204: void;
12078
12042
  /**
12079
- * Cannot delete own account or insufficient permissions
12043
+ * Rule not found
12080
12044
  */
12081
- 403: unknown;
12045
+ 404: unknown;
12082
12046
  };
12083
12047
  };
12084
12048
  };
12085
- '/api/v1/users/{id}/info': {
12049
+ '/api/v1/{region}/bean/recurring-rules/{id}/stats': {
12086
12050
  get: {
12087
- req: UserControllerGetUserInfoData;
12051
+ req: RecurringRuleControllerGetWithStatsData;
12088
12052
  res: {
12089
12053
  /**
12090
- * User info retrieved successfully
12054
+ * Rule with stats retrieved successfully
12091
12055
  */
12092
- 200: unknown;
12056
+ 200: RecurringRuleWithStatsResponseDto;
12093
12057
  /**
12094
- * Cannot access other user info without admin permission
12058
+ * Rule not found
12095
12059
  */
12096
- 403: unknown;
12060
+ 404: unknown;
12097
12061
  };
12098
12062
  };
12099
12063
  };
12100
- '/api/v1/users/setting': {
12101
- put: {
12102
- req: UserControllerUpdateUserSettingData;
12064
+ '/api/v1/{region}/bean/expected-transactions': {
12065
+ get: {
12066
+ req: ExpectedTransactionControllerFindAllData;
12103
12067
  res: {
12104
12068
  /**
12105
- * Settings updated successfully
12106
- */
12107
- 200: unknown;
12108
- /**
12109
- * Insufficient permissions
12069
+ * Expected transactions retrieved successfully
12110
12070
  */
12111
- 403: unknown;
12071
+ 200: ExpectedTransactionListResponseDto;
12112
12072
  };
12113
12073
  };
12114
12074
  };
12115
- '/api/v1/users/settings-by-page': {
12075
+ '/api/v1/{region}/bean/expected-transactions/overdue': {
12116
12076
  get: {
12117
- req: UserControllerGetAllUserSettingsByPageData;
12077
+ req: ExpectedTransactionControllerFindOverdueData;
12118
12078
  res: {
12119
12079
  /**
12120
- * Settings list retrieved successfully
12080
+ * Overdue transactions retrieved successfully
12121
12081
  */
12122
- 200: unknown;
12082
+ 200: ExpectedTransactionListResponseDto;
12123
12083
  };
12124
12084
  };
12125
12085
  };
12126
- '/api/v1/users/asset-liability-summary': {
12086
+ '/api/v1/{region}/bean/expected-transactions/{id}': {
12127
12087
  get: {
12088
+ req: ExpectedTransactionControllerFindOneData;
12128
12089
  res: {
12129
12090
  /**
12130
- * Summary retrieved successfully
12091
+ * Expected transaction retrieved successfully
12131
12092
  */
12132
- 200: unknown;
12093
+ 200: ExpectedTransactionResponseDto;
12094
+ /**
12095
+ * Expected transaction not found
12096
+ */
12097
+ 404: unknown;
12133
12098
  };
12134
12099
  };
12135
12100
  };
12136
- '/api/v1/admin/properties': {
12137
- get: {
12101
+ '/api/v1/{region}/bean/expected-transactions/{id}/skip': {
12102
+ post: {
12103
+ req: ExpectedTransactionControllerSkipData;
12138
12104
  res: {
12139
12105
  /**
12140
- * Properties retrieved successfully
12106
+ * Expected transaction skipped successfully
12141
12107
  */
12142
- 200: unknown;
12108
+ 200: ExpectedTransactionResponseDto;
12143
12109
  /**
12144
- * Unauthorized
12110
+ * Cannot skip - not in PENDING status
12145
12111
  */
12146
- 401: unknown;
12112
+ 400: unknown;
12147
12113
  /**
12148
- * Forbidden - insufficient permissions
12114
+ * Expected transaction not found
12149
12115
  */
12150
- 403: unknown;
12116
+ 404: unknown;
12151
12117
  };
12152
12118
  };
12153
- };
12154
- '/api/v1/admin/properties/{key}': {
12155
- get: {
12156
- req: PropertyControllerGetByKeyData;
12119
+ delete: {
12120
+ req: ExpectedTransactionControllerUndoSkipData;
12157
12121
  res: {
12158
12122
  /**
12159
- * Property retrieved successfully
12160
- */
12161
- 200: unknown;
12162
- /**
12163
- * Unauthorized
12123
+ * Skip undone successfully
12164
12124
  */
12165
- 401: unknown;
12125
+ 204: void;
12166
12126
  /**
12167
- * Forbidden - insufficient permissions
12127
+ * Cannot undo - not in SKIPPED status
12168
12128
  */
12169
- 403: unknown;
12129
+ 400: unknown;
12170
12130
  /**
12171
- * Property not found
12131
+ * Expected transaction not found
12172
12132
  */
12173
12133
  404: unknown;
12174
12134
  };
12175
12135
  };
12176
- put: {
12177
- req: PropertyControllerUpdateData;
12136
+ };
12137
+ '/api/v1/{region}/bean/expected-transactions/{id}/match': {
12138
+ post: {
12139
+ req: ExpectedTransactionControllerConfirmMatchData;
12178
12140
  res: {
12179
12141
  /**
12180
- * Property updated successfully
12142
+ * Match confirmed successfully
12181
12143
  */
12182
12144
  200: unknown;
12183
12145
  /**
12184
- * Unauthorized
12146
+ * Cannot match - not in PENDING status
12185
12147
  */
12186
- 401: unknown;
12148
+ 400: unknown;
12187
12149
  /**
12188
- * Forbidden - insufficient permissions
12150
+ * Expected or actual transaction not found
12189
12151
  */
12190
- 403: unknown;
12152
+ 404: unknown;
12153
+ /**
12154
+ * Actual transaction already matched to another rule
12155
+ */
12156
+ 409: unknown;
12191
12157
  };
12192
12158
  };
12193
12159
  delete: {
12194
- req: PropertyControllerDeleteData;
12160
+ req: ExpectedTransactionControllerUnmatchData;
12195
12161
  res: {
12196
12162
  /**
12197
- * Property deleted successfully
12163
+ * Match removed successfully
12198
12164
  */
12199
12165
  204: void;
12200
12166
  /**
12201
- * Unauthorized
12167
+ * Cannot unmatch - not in COMPLETED status
12202
12168
  */
12203
- 401: unknown;
12169
+ 400: unknown;
12204
12170
  /**
12205
- * Forbidden - insufficient permissions
12171
+ * Expected transaction not found
12206
12172
  */
12207
- 403: unknown;
12173
+ 404: unknown;
12174
+ };
12175
+ };
12176
+ };
12177
+ '/api/v1/{region}/bean/expected-transactions/{id}/enter': {
12178
+ post: {
12179
+ req: ExpectedTransactionControllerEnterNowData;
12180
+ res: {
12208
12181
  /**
12209
- * Property not found
12182
+ * Transaction created successfully
12183
+ */
12184
+ 201: unknown;
12185
+ /**
12186
+ * Cannot enter - not in PENDING status or missing accounts
12187
+ */
12188
+ 400: unknown;
12189
+ /**
12190
+ * Expected transaction or accounts not found
12210
12191
  */
12211
12192
  404: unknown;
12212
12193
  };
12213
12194
  };
12214
12195
  };
12196
+ '/api/v1/{region}/bean/recurring/forecast': {
12197
+ get: {
12198
+ req: ForecastControllerGetForecastData;
12199
+ res: {
12200
+ /**
12201
+ * Forecast retrieved successfully
12202
+ */
12203
+ 200: ForecastResponseDto;
12204
+ };
12205
+ };
12206
+ };
12215
12207
  '/api/v1/{region}/bean/transaction-rules': {
12216
12208
  post: {
12217
12209
  req: TransactionRuleControllerCreateData;
@@ -12609,7 +12601,10 @@ export type $OpenApiTs = {
12609
12601
  '/api/v1/{region}/bean/export/beancount': {
12610
12602
  get: {
12611
12603
  res: {
12612
- 200: unknown;
12604
+ /**
12605
+ * ZIP archive (application/zip) streamed as an attachment
12606
+ */
12607
+ 200: Blob | File;
12613
12608
  };
12614
12609
  };
12615
12610
  };
@@ -12990,6 +12985,17 @@ export type $OpenApiTs = {
12990
12985
  };
12991
12986
  };
12992
12987
  };
12988
+ '/api/v1/bean/platforms/{id}/standards': {
12989
+ get: {
12990
+ req: PlatformControllerGetPlatformStandardsData;
12991
+ res: {
12992
+ /**
12993
+ * Resolved region plus the merged account-standard catalog of that region (groupable by productCategory client-side)
12994
+ */
12995
+ 200: PlatformStandardsResponseDto;
12996
+ };
12997
+ };
12998
+ };
12993
12999
  '/api/v1/bean/platforms/{id}': {
12994
13000
  put: {
12995
13001
  req: PlatformControllerUpdateData;
@@ -13171,7 +13177,14 @@ export type $OpenApiTs = {
13171
13177
  '/api/v1/cache/flush': {
13172
13178
  post: {
13173
13179
  res: {
13174
- 201: unknown;
13180
+ /**
13181
+ * Cache flushed successfully
13182
+ */
13183
+ 200: unknown;
13184
+ /**
13185
+ * Admin access required
13186
+ */
13187
+ 403: ApiProblemResponseDto;
13175
13188
  };
13176
13189
  };
13177
13190
  };