@firela/api-types 0.0.0-canary.a3c2cb48 → 0.0.0-canary.a4e21680

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.
@@ -17,23 +17,31 @@ import type {
17
17
  AccountControllerCloseResponse,
18
18
  AccountControllerReopenData,
19
19
  AccountControllerReopenResponse,
20
+ AccountStandardsControllerGetTemplatesData,
21
+ AccountStandardsControllerGetTemplatesResponse,
22
+ AccountStandardsControllerGetTemplateMetadataData,
23
+ AccountStandardsControllerGetTemplateMetadataResponse,
24
+ AccountStandardsControllerGetRegionsData,
25
+ AccountStandardsControllerGetRegionsResponse,
20
26
  TransactionControllerCreateData,
21
27
  TransactionControllerCreateResponse,
22
28
  TransactionControllerListData,
23
29
  TransactionControllerListResponse,
24
- TransactionControllerData,
25
- TransactionControllerResponse,
30
+ TransactionControllerCreateBatchData,
31
+ TransactionControllerCreateBatchResponse,
32
+ TransactionControllerCorrectData,
33
+ TransactionControllerCorrectResponse,
34
+ TransactionControllerSuggestTagsData,
35
+ TransactionControllerSuggestTagsResponse,
26
36
  TransactionControllerGetDetailData,
27
37
  TransactionControllerGetDetailResponse,
28
38
  TransactionControllerUpdateData,
29
39
  TransactionControllerUpdateResponse,
30
- TransactionController1Data,
31
- TransactionController1Response,
32
- AccountStandardsControllerGetTemplatesData,
33
- AccountStandardsControllerGetTemplatesResponse,
34
- AccountStandardsControllerGetRegionsResponse,
40
+ TransactionControllerDeleteData,
41
+ TransactionControllerDeleteResponse,
35
42
  BalanceControllerGetBalanceData,
36
43
  BalanceControllerGetBalanceResponse,
44
+ BalanceControllerGetMultiCurrencyBalanceData,
37
45
  BalanceControllerGetMultiCurrencyBalanceResponse,
38
46
  ReviewControllerFindAllData,
39
47
  ReviewControllerFindAllResponse,
@@ -41,13 +49,14 @@ import type {
41
49
  ReviewControllerGetStatsResponse,
42
50
  ReviewControllerFindOneData,
43
51
  ReviewControllerFindOneResponse,
44
- ReviewControllerData,
45
- ReviewControllerResponse,
46
- ReviewController1Data,
47
- ReviewController1Response,
48
- ReviewController2Data,
49
- ReviewController2Response,
50
- PayeeControllerResponse,
52
+ ReviewControllerResolveData,
53
+ ReviewControllerResolveResponse,
54
+ ReviewControllerUndoData,
55
+ ReviewControllerUndoResponse,
56
+ ReviewControllerBatchResolveData,
57
+ ReviewControllerBatchResolveResponse,
58
+ PayeeControllerCreateData,
59
+ PayeeControllerCreateResponse,
51
60
  PayeeControllerFindAllData,
52
61
  PayeeControllerFindAllResponse,
53
62
  PayeeControllerAutocompleteData,
@@ -56,43 +65,50 @@ import type {
56
65
  PayeeControllerGetTopPayeesResponse,
57
66
  PayeeControllerFindOneData,
58
67
  PayeeControllerFindOneResponse,
59
- PayeeController1Response,
60
- PayeeController2Response,
61
- PayeeProfileAdminControllerResponse,
68
+ PayeeControllerUpdateData,
69
+ PayeeControllerUpdateResponse,
70
+ PayeeControllerDeleteData,
71
+ PayeeControllerDeleteResponse,
72
+ PayeeProfileAdminControllerCreateData,
73
+ PayeeProfileAdminControllerCreateResponse,
62
74
  PayeeProfileAdminControllerFindAllData,
63
75
  PayeeProfileAdminControllerFindAllResponse,
64
76
  PayeeProfileAdminControllerFindOneData,
65
77
  PayeeProfileAdminControllerFindOneResponse,
66
- PayeeProfileAdminController1Response,
67
- PayeeProfileAdminController2Response,
68
- PayeeProfileAdminController3Response,
69
- PayeeProfileAdminController4Response,
70
- CommodityControllerData,
71
- CommodityControllerResponse,
78
+ PayeeProfileAdminControllerUpdateData,
79
+ PayeeProfileAdminControllerUpdateResponse,
80
+ PayeeProfileAdminControllerDeleteData,
81
+ PayeeProfileAdminControllerDeleteResponse,
82
+ PayeeProfileAdminControllerVerifyData,
83
+ PayeeProfileAdminControllerVerifyResponse,
84
+ PayeeProfileAdminControllerUnverifyData,
85
+ PayeeProfileAdminControllerUnverifyResponse,
86
+ CommodityControllerCreateData,
87
+ CommodityControllerCreateResponse,
72
88
  CommodityControllerFindAllData,
73
89
  CommodityControllerFindAllResponse,
74
90
  CommodityControllerFindOneData,
75
91
  CommodityControllerFindOneResponse,
76
- CommodityController1Data,
77
- CommodityController1Response,
78
- CommodityController2Data,
79
- CommodityController2Response,
80
- CommodityController3Data,
81
- CommodityController3Response,
82
- CommodityController4Data,
83
- CommodityController4Response,
84
- RecurringRuleControllerData,
85
- RecurringRuleControllerResponse,
92
+ CommodityControllerUpdateData,
93
+ CommodityControllerUpdateResponse,
94
+ CommodityControllerDeleteData,
95
+ CommodityControllerDeleteResponse,
96
+ CommodityControllerGetOrCreateData,
97
+ CommodityControllerGetOrCreateResponse,
98
+ CommodityControllerBulkCreateData,
99
+ CommodityControllerBulkCreateResponse,
100
+ RecurringRuleControllerCreateData,
101
+ RecurringRuleControllerCreateResponse,
86
102
  RecurringRuleControllerFindAllData,
87
103
  RecurringRuleControllerFindAllResponse,
88
- RecurringRuleController1Data,
89
- RecurringRuleController1Response,
104
+ RecurringRuleControllerCreateFromTransactionData,
105
+ RecurringRuleControllerCreateFromTransactionResponse,
90
106
  RecurringRuleControllerFindOneData,
91
107
  RecurringRuleControllerFindOneResponse,
92
- RecurringRuleController2Data,
93
- RecurringRuleController2Response,
94
- RecurringRuleController3Data,
95
- RecurringRuleController3Response,
108
+ RecurringRuleControllerUpdateData,
109
+ RecurringRuleControllerUpdateResponse,
110
+ RecurringRuleControllerDeleteData,
111
+ RecurringRuleControllerDeleteResponse,
96
112
  RecurringRuleControllerGetWithStatsData,
97
113
  RecurringRuleControllerGetWithStatsResponse,
98
114
  ExpectedTransactionControllerFindAllData,
@@ -101,36 +117,36 @@ import type {
101
117
  ExpectedTransactionControllerFindOverdueResponse,
102
118
  ExpectedTransactionControllerFindOneData,
103
119
  ExpectedTransactionControllerFindOneResponse,
104
- ExpectedTransactionControllerData,
105
- ExpectedTransactionControllerResponse,
106
- ExpectedTransactionController1Data,
107
- ExpectedTransactionController1Response,
108
- ExpectedTransactionController2Data,
109
- ExpectedTransactionController2Response,
110
- ExpectedTransactionController3Data,
111
- ExpectedTransactionController3Response,
112
- ExpectedTransactionController4Data,
113
- ExpectedTransactionController4Response,
120
+ ExpectedTransactionControllerSkipData,
121
+ ExpectedTransactionControllerSkipResponse,
122
+ ExpectedTransactionControllerUndoSkipData,
123
+ ExpectedTransactionControllerUndoSkipResponse,
124
+ ExpectedTransactionControllerConfirmMatchData,
125
+ ExpectedTransactionControllerConfirmMatchResponse,
126
+ ExpectedTransactionControllerUnmatchData,
127
+ ExpectedTransactionControllerUnmatchResponse,
128
+ ExpectedTransactionControllerEnterNowData,
129
+ ExpectedTransactionControllerEnterNowResponse,
114
130
  ForecastControllerGetForecastData,
115
131
  ForecastControllerGetForecastResponse,
116
- TransactionRuleControllerData,
117
- TransactionRuleControllerResponse,
132
+ TransactionRuleControllerCreateData,
133
+ TransactionRuleControllerCreateResponse,
118
134
  TransactionRuleControllerListData,
119
135
  TransactionRuleControllerListResponse,
120
136
  TransactionRuleControllerValidateData,
121
137
  TransactionRuleControllerValidateResponse,
122
- TransactionRuleController1Data,
123
- TransactionRuleController1Response,
138
+ TransactionRuleControllerBulkCreateData,
139
+ TransactionRuleControllerBulkCreateResponse,
124
140
  TransactionRuleControllerExportData,
125
141
  TransactionRuleControllerExportResponse,
126
142
  TransactionRuleControllerGetStatisticsData,
127
143
  TransactionRuleControllerGetStatisticsResponse,
128
144
  TransactionRuleControllerGetDetailData,
129
145
  TransactionRuleControllerGetDetailResponse,
130
- TransactionRuleController2Data,
131
- TransactionRuleController2Response,
132
- TransactionRuleController3Data,
133
- TransactionRuleController3Response,
146
+ TransactionRuleControllerUpdateData,
147
+ TransactionRuleControllerUpdateResponse,
148
+ TransactionRuleControllerDeleteData,
149
+ TransactionRuleControllerDeleteResponse,
134
150
  TransactionRuleControllerTestData,
135
151
  TransactionRuleControllerTestResponse,
136
152
  UserControllerDeleteOwnUserData,
@@ -151,81 +167,116 @@ import type {
151
167
  PropertyControllerGetAllResponse,
152
168
  PropertyControllerGetByKeyData,
153
169
  PropertyControllerGetByKeyResponse,
154
- PropertyControllerResponse,
155
- PropertyController1Response,
170
+ PropertyControllerUpdateData,
171
+ PropertyControllerUpdateResponse,
172
+ PropertyControllerDeleteData,
173
+ PropertyControllerDeleteResponse,
174
+ EventControllerCreateData,
175
+ EventControllerCreateResponse,
176
+ EventControllerFindAllData,
177
+ EventControllerFindAllResponse,
178
+ EventControllerFindOneData,
179
+ EventControllerFindOneResponse,
180
+ EventControllerUpdateData,
181
+ EventControllerUpdateResponse,
182
+ EventControllerDeleteData,
183
+ EventControllerDeleteResponse,
184
+ EventControllerGetSliceData,
185
+ EventControllerGetSliceResponse,
186
+ ReconciliationControllerComputeData,
187
+ ReconciliationControllerComputeResponse,
188
+ ReconciliationControllerAssertData,
189
+ ReconciliationControllerAssertResponse,
190
+ ReconciliationControllerPadData,
191
+ ReconciliationControllerPadResponse,
192
+ ReconciliationControllerHistoryData,
193
+ ReconciliationControllerHistoryResponse,
194
+ ExportControllerExportBeancountResponse,
156
195
  FileImportControllerImportFileData,
157
196
  FileImportControllerImportFileResponse,
158
197
  FileImportControllerIdentifyFileData,
159
198
  FileImportControllerIdentifyFileResponse,
199
+ FileImportControllerImportBeancountData,
200
+ FileImportControllerImportBeancountResponse,
160
201
  ImporterConfigControllerGetConfigData,
161
202
  ImporterConfigControllerGetConfigResponse,
162
- ImporterConfigControllerData,
163
- ImporterConfigControllerResponse,
164
- ImporterConfigController1Data,
165
- ImporterConfigController1Response,
203
+ ImporterConfigControllerUpdateConfigData,
204
+ ImporterConfigControllerUpdateConfigResponse,
205
+ ImporterConfigControllerResetConfigData,
206
+ ImporterConfigControllerResetConfigResponse,
207
+ PlatformControllerFindAllResponse,
208
+ PlatformControllerCreateData,
209
+ PlatformControllerCreateResponse,
210
+ PlatformControllerGetPlatformListResponse,
211
+ PlatformControllerMatchPlatformsData,
212
+ PlatformControllerMatchPlatformsResponse,
213
+ PlatformControllerUpdateData,
214
+ PlatformControllerUpdateResponse,
215
+ PlatformControllerDeleteData,
216
+ PlatformControllerDeleteResponse,
166
217
  ProviderSyncControllerSyncData,
167
218
  ProviderSyncControllerSyncResponse,
219
+ ProviderSyncControllerGetSupportedProvidersData,
168
220
  ProviderSyncControllerGetSupportedProvidersResponse,
169
221
  ProviderSyncControllerIsProviderSupportedData,
170
222
  ProviderSyncControllerIsProviderSupportedResponse,
171
223
  TelemetryControllerReportTelemetryData,
172
224
  TelemetryControllerReportTelemetryResponse,
225
+ TelemetryControllerReportCoverageMissData,
226
+ TelemetryControllerReportCoverageMissResponse,
227
+ TelemetryControllerGetCoverageMetricsData,
228
+ TelemetryControllerGetCoverageMetricsResponse,
173
229
  NlpControllerProcessNaturalLanguageData,
174
230
  NlpControllerProcessNaturalLanguageResponse,
175
231
  NlpControllerClearSessionData,
176
232
  NlpControllerClearSessionResponse,
177
233
  NlpControllerGetSessionData,
178
234
  NlpControllerGetSessionResponse,
179
- PlatformControllerFindAllResponse,
180
- PlatformControllerResponse,
181
- PlatformControllerGetPlatformListResponse,
182
- PlatformController1Response,
183
- PlatformController2Response,
184
- SymbolControllerLookupSymbolData,
185
- SymbolControllerLookupSymbolResponse,
186
- SymbolControllerGetSymbolDataData,
187
- SymbolControllerGetSymbolDataResponse,
188
- SymbolControllerGatherSymbolForDateData,
189
- SymbolControllerGatherSymbolForDateResponse,
190
- SymbolControllerResponse,
191
- CacheControllerFlushCacheResponse,
192
235
  DashboardControllerGetNetWorthData,
193
236
  DashboardControllerGetNetWorthResponse,
194
237
  DashboardControllerGetAccountsData,
195
238
  DashboardControllerGetAccountsResponse,
196
239
  DashboardControllerGetCashFlowData,
197
240
  DashboardControllerGetCashFlowResponse,
241
+ DashboardControllerGetExpensesData,
242
+ DashboardControllerGetExpensesResponse,
243
+ HoldingPnlControllerGetHoldingPnlData,
244
+ HoldingPnlControllerGetHoldingPnlResponse,
245
+ PriceControllerCreateData,
246
+ PriceControllerCreateResponse,
247
+ PriceControllerFindAllData,
248
+ PriceControllerFindAllResponse,
249
+ PriceControllerFindOneData,
250
+ PriceControllerFindOneResponse,
251
+ PriceControllerUpdateData,
252
+ PriceControllerUpdateResponse,
253
+ PriceControllerDeleteData,
254
+ PriceControllerDeleteResponse,
255
+ PriceControllerBulkCreateData,
256
+ PriceControllerBulkCreateResponse,
198
257
  ReportingControllerGetPortfolioTrendsData,
199
258
  ReportingControllerGetPortfolioTrendsResponse,
259
+ ReportingControllerGetCashFlowTrendsData,
260
+ ReportingControllerGetCashFlowTrendsResponse,
200
261
  ReportingControllerGenerateSnapshotData,
201
262
  ReportingControllerGenerateSnapshotResponse,
202
263
  ReportingControllerBackfillSnapshotsData,
203
264
  ReportingControllerBackfillSnapshotsResponse,
204
- ApiKeysControllerResponse,
265
+ ApiKeysControllerCreateApiKeyResponse,
205
266
  AuthControllerAccessTokenLoginData,
206
267
  AuthControllerAccessTokenLoginResponse,
268
+ CacheControllerFlushCacheResponse,
207
269
  ExchangeRateControllerGetExchangeRateData,
208
270
  ExchangeRateControllerGetExchangeRateResponse,
209
271
  HealthControllerGetHealthResponse,
210
272
  HealthControllerCheckDatabaseResponse,
273
+ HealthControllerCheckOpenBbResponse,
211
274
  HealthControllerCheckRedisResponse,
212
275
  HealthControllerGetCircuitBreakersHealthResponse,
213
276
  HealthControllerResetCircuitBreakerData,
214
277
  HealthControllerResetCircuitBreakerResponse,
215
278
  HealthControllerGetMetricsResponse,
216
- HealthControllerGetHealthOfDataEnhancerData,
217
- HealthControllerGetHealthOfDataEnhancerResponse,
218
- HealthControllerCheckDataProvidersResponse,
219
- HealthControllerGetHealthOfDataProviderData,
220
- HealthControllerGetHealthOfDataProviderResponse,
221
- InfoControllerGetInfoResponse,
222
- LogoControllerGetLogoByDataSourceAndSymbolData,
223
- LogoControllerGetLogoByDataSourceAndSymbolResponse,
224
- LogoControllerGetLogoByUrlData,
225
- LogoControllerGetLogoByUrlResponse,
226
- MarketDataControllerGetMarketDataBySymbolData,
227
- MarketDataControllerGetMarketDataBySymbolResponse,
228
- MarketDataControllerResponse
279
+ InfoControllerGetInfoResponse
229
280
  } from './types.gen';
230
281
 
231
282
  export class BeanAccountsService {
@@ -427,6 +478,78 @@ export class BeanAccountsService {
427
478
  }
428
479
  }
429
480
 
481
+ export class BeanAccountStandardsService {
482
+ /**
483
+ * Get account templates
484
+ * Returns predefined account templates for a region. Supports filtering by account type and search term.
485
+ * @param data The data for the request.
486
+ * @param data.region Region code (cn, us, de)
487
+ * @param data.type Filter by account type
488
+ * @param data.search Search term for path or description
489
+ * @returns AccountStandardListResponseDto Account templates retrieved successfully
490
+ * @throws ApiError
491
+ */
492
+ public static accountStandardsControllerGetTemplates(
493
+ data: AccountStandardsControllerGetTemplatesData
494
+ ): CancelablePromise<AccountStandardsControllerGetTemplatesResponse> {
495
+ return __request(OpenAPI, {
496
+ method: 'GET',
497
+ url: '/api/v1/{region}/bean/account-standards',
498
+ path: {
499
+ region: data.region
500
+ },
501
+ query: {
502
+ type: data.type,
503
+ search: data.search
504
+ }
505
+ });
506
+ }
507
+
508
+ /**
509
+ * Get template metadata for an account path
510
+ * Returns extendable status and root type for a template path.
511
+ * @param data The data for the request.
512
+ * @param data.region Region code for tenant context
513
+ * @param data.path Account path to check
514
+ * @returns TemplateMetadataResponseDto Template metadata retrieved successfully
515
+ * @throws ApiError
516
+ */
517
+ public static accountStandardsControllerGetTemplateMetadata(
518
+ data: AccountStandardsControllerGetTemplateMetadataData
519
+ ): CancelablePromise<AccountStandardsControllerGetTemplateMetadataResponse> {
520
+ return __request(OpenAPI, {
521
+ method: 'GET',
522
+ url: '/api/v1/{region}/bean/account-standards/template-metadata',
523
+ path: {
524
+ region: data.region
525
+ },
526
+ query: {
527
+ path: data.path
528
+ }
529
+ });
530
+ }
531
+
532
+ /**
533
+ * Get available regions with hierarchy
534
+ * Returns supported regions with inheritance metadata
535
+ * @param data The data for the request.
536
+ * @param data.region Region code for tenant context
537
+ * @returns RegionsMetadataResponseDto Regions metadata retrieved successfully
538
+ * @throws ApiError
539
+ */
540
+ public static accountStandardsControllerGetRegions(
541
+ data: AccountStandardsControllerGetRegionsData
542
+ ): CancelablePromise<AccountStandardsControllerGetRegionsResponse> {
543
+ return __request(OpenAPI, {
544
+ method: 'GET',
545
+ url: '/api/v1/{region}/bean/account-standards/regions',
546
+ path: {
547
+ region: data.region
548
+ }
549
+ });
550
+ }
551
+ }
552
+
430
553
  export class BeanTransactionsService {
431
554
  /**
432
555
  * @deprecated
@@ -470,6 +593,7 @@ export class BeanTransactionsService {
470
593
  * @param data.status Filter by transaction status
471
594
  * @param data.search Search in narration and payee fields (max 200 chars)
472
595
  * @param data.accountId Filter by account ID (transactions with postings to this account)
596
+ * @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
473
597
  * @returns TransactionListResponseDto Transaction list
474
598
  * @throws ApiError
475
599
  */
@@ -489,28 +613,102 @@ export class BeanTransactionsService {
489
613
  dateTo: data.dateTo,
490
614
  status: data.status,
491
615
  search: data.search,
492
- accountId: data.accountId
616
+ accountId: data.accountId,
617
+ category: data.category
493
618
  },
494
619
  errors: {
620
+ 400: 'Validation failed',
495
621
  401: 'Authentication required'
496
622
  }
497
623
  });
498
624
  }
499
625
 
500
626
  /**
627
+ * @deprecated
628
+ * Batch create transactions (DEPRECATED)
629
+ * DEPRECATED: Use POST /:region/bean/import/provider/:name/sync instead. This endpoint skips dedup, rule matching, and review branching.
501
630
  * @param data The data for the request.
502
631
  * @param data.region Region code for tenant context
503
- * @returns unknown
632
+ * @param data.requestBody
633
+ * @returns BatchTransactionResponseDto Transactions processed
504
634
  * @throws ApiError
505
635
  */
506
- public static transactionController(
507
- data: TransactionControllerData
508
- ): CancelablePromise<TransactionControllerResponse> {
636
+ public static transactionControllerCreateBatch(
637
+ data: TransactionControllerCreateBatchData
638
+ ): CancelablePromise<TransactionControllerCreateBatchResponse> {
509
639
  return __request(OpenAPI, {
510
640
  method: 'POST',
511
641
  url: '/api/v1/{region}/bean/transactions/batch',
512
642
  path: {
513
643
  region: data.region
644
+ },
645
+ body: data.requestBody,
646
+ mediaType: 'application/json',
647
+ errors: {
648
+ 400: 'Invalid input',
649
+ 401: 'Authentication required'
650
+ }
651
+ });
652
+ }
653
+
654
+ /**
655
+ * Correct (supersede) a transaction
656
+ * Atomically voids the original (SUPERSEDED) and creates a replacement through the full validation pipeline.
657
+ * @param data The data for the request.
658
+ * @param data.id Original transaction ID to correct
659
+ * @param data.region Region code for tenant context
660
+ * @param data.requestBody
661
+ * @returns TransactionDetailDto Corrected transaction created
662
+ * @throws ApiError
663
+ */
664
+ public static transactionControllerCorrect(
665
+ data: TransactionControllerCorrectData
666
+ ): CancelablePromise<TransactionControllerCorrectResponse> {
667
+ return __request(OpenAPI, {
668
+ method: 'POST',
669
+ url: '/api/v1/{region}/bean/transactions/{id}/correct',
670
+ path: {
671
+ id: data.id,
672
+ region: data.region
673
+ },
674
+ body: data.requestBody,
675
+ mediaType: 'application/json',
676
+ errors: {
677
+ 404: 'Original transaction not found',
678
+ 409: 'Original no longer ACTIVE (concurrent modification)',
679
+ 422: 'Pipeline validation failed (does not balance, invalid accounts)'
680
+ }
681
+ });
682
+ }
683
+
684
+ /**
685
+ * Suggest transaction tags
686
+ * Returns distinct tags from the user ACTIVE transactions, sorted by usage, for autocomplete. Optional q performs a case-insensitive prefix match.
687
+ * @param data The data for the request.
688
+ * @param data.region Region code for tenant context
689
+ * @param data.q Prefix match, case-insensitive (max 50 chars)
690
+ * @param data.sort usage (default) or name
691
+ * @param data.limit Max suggestions (1-100, default 10)
692
+ * @returns TagSuggestionsResponseDto Tag suggestions
693
+ * @throws ApiError
694
+ */
695
+ public static transactionControllerSuggestTags(
696
+ data: TransactionControllerSuggestTagsData
697
+ ): CancelablePromise<TransactionControllerSuggestTagsResponse> {
698
+ return __request(OpenAPI, {
699
+ method: 'GET',
700
+ url: '/api/v1/{region}/bean/transactions/tags',
701
+ path: {
702
+ region: data.region
703
+ },
704
+ query: {
705
+ q: data.q,
706
+ sort: data.sort,
707
+ limit: data.limit
708
+ },
709
+ errors: {
710
+ 400: 'Validation failed',
711
+ 401: 'Authentication required'
514
712
  }
515
713
  });
516
714
  }
@@ -572,63 +770,31 @@ export class BeanTransactionsService {
572
770
  }
573
771
 
574
772
  /**
773
+ * Void transaction
774
+ * Soft-deletes a transaction by marking it as VOIDED
575
775
  * @param data The data for the request.
776
+ * @param data.id Transaction ID
576
777
  * @param data.region Region code for tenant context
577
- * @returns void
778
+ * @returns void Transaction voided successfully
578
779
  * @throws ApiError
579
780
  */
580
- public static transactionController1(
581
- data: TransactionController1Data
582
- ): CancelablePromise<TransactionController1Response> {
781
+ public static transactionControllerDelete(
782
+ data: TransactionControllerDeleteData
783
+ ): CancelablePromise<TransactionControllerDeleteResponse> {
583
784
  return __request(OpenAPI, {
584
785
  method: 'DELETE',
585
786
  url: '/api/v1/{region}/bean/transactions/{id}',
586
787
  path: {
587
- region: data.region
588
- }
589
- });
590
- }
591
- }
592
-
593
- export class BeanAccountStandardsService {
594
- /**
595
- * Get account templates
596
- * Returns predefined account templates for a region. Supports filtering by account type and search term.
597
- * @param data The data for the request.
598
- * @param data.region Region code (cn, us, de)
599
- * @param data.type Filter by account type
600
- * @param data.search Search term for path or description
601
- * @returns AccountStandardListResponseDto Account templates retrieved successfully
602
- * @throws ApiError
603
- */
604
- public static accountStandardsControllerGetTemplates(
605
- data: AccountStandardsControllerGetTemplatesData
606
- ): CancelablePromise<AccountStandardsControllerGetTemplatesResponse> {
607
- return __request(OpenAPI, {
608
- method: 'GET',
609
- url: '/api/v1/{region}/bean/account-standards',
610
- path: {
788
+ id: data.id,
611
789
  region: data.region
612
790
  },
613
- query: {
614
- type: data.type,
615
- search: data.search
791
+ errors: {
792
+ 400: 'Transaction already voided',
793
+ 401: 'Authentication required',
794
+ 404: 'Transaction not found'
616
795
  }
617
796
  });
618
797
  }
619
-
620
- /**
621
- * Get available regions with hierarchy
622
- * Returns supported regions with inheritance metadata
623
- * @returns RegionsMetadataResponseDto Regions metadata retrieved successfully
624
- * @throws ApiError
625
- */
626
- public static accountStandardsControllerGetRegions(): CancelablePromise<AccountStandardsControllerGetRegionsResponse> {
627
- return __request(OpenAPI, {
628
- method: 'GET',
629
- url: '/api/v1/{region}/bean/account-standards/regions'
630
- });
631
- }
632
798
  }
633
799
 
634
800
  export class BeanBalancesService {
@@ -637,6 +803,7 @@ export class BeanBalancesService {
637
803
  * Calculate account balance at a specific date for a single currency
638
804
  * @param data The data for the request.
639
805
  * @param data.account Account name (e.g., "Assets:Bank:Checking")
806
+ * @param data.region Region code for tenant context
640
807
  * @param data.date Date to calculate balance at (ISO 8601 format)
641
808
  * @param data.currency Currency to query (e.g., "USD", "CNY")
642
809
  * @returns BalanceResponseDto Balance calculated successfully
@@ -648,6 +815,9 @@ export class BeanBalancesService {
648
815
  return __request(OpenAPI, {
649
816
  method: 'GET',
650
817
  url: '/api/v1/{region}/bean/balances',
818
+ path: {
819
+ region: data.region
820
+ },
651
821
  query: {
652
822
  account: data.account,
653
823
  date: data.date,
@@ -663,13 +833,20 @@ export class BeanBalancesService {
663
833
  /**
664
834
  * Query multi-currency account balance
665
835
  * Calculate account balances for all currencies at a specific date
836
+ * @param data The data for the request.
837
+ * @param data.region Region code for tenant context
666
838
  * @returns MultiCurrencyBalanceResponseDto Balances calculated successfully
667
839
  * @throws ApiError
668
840
  */
669
- public static balanceControllerGetMultiCurrencyBalance(): CancelablePromise<BalanceControllerGetMultiCurrencyBalanceResponse> {
841
+ public static balanceControllerGetMultiCurrencyBalance(
842
+ data: BalanceControllerGetMultiCurrencyBalanceData
843
+ ): CancelablePromise<BalanceControllerGetMultiCurrencyBalanceResponse> {
670
844
  return __request(OpenAPI, {
671
845
  method: 'GET',
672
846
  url: '/api/v1/{region}/bean/balances/multi-currency',
847
+ path: {
848
+ region: data.region
849
+ },
673
850
  errors: {
674
851
  400: 'Invalid query parameters',
675
852
  401: 'User not authenticated'
@@ -751,69 +928,94 @@ export class BeanReviewsService {
751
928
  }
752
929
 
753
930
  /**
931
+ * Resolve a review item
754
932
  * @param data The data for the request.
933
+ * @param data.id Review ID
755
934
  * @param data.region Region code for tenant context
756
- * @returns unknown
935
+ * @param data.requestBody
936
+ * @returns ResolveResultDto
757
937
  * @throws ApiError
758
938
  */
759
- public static reviewController(
760
- data: ReviewControllerData
761
- ): CancelablePromise<ReviewControllerResponse> {
939
+ public static reviewControllerResolve(
940
+ data: ReviewControllerResolveData
941
+ ): CancelablePromise<ReviewControllerResolveResponse> {
762
942
  return __request(OpenAPI, {
763
943
  method: 'POST',
764
944
  url: '/api/v1/{region}/bean/reviews/{id}/resolve',
765
945
  path: {
946
+ id: data.id,
766
947
  region: data.region
767
- }
948
+ },
949
+ body: data.requestBody,
950
+ mediaType: 'application/json'
768
951
  });
769
952
  }
770
953
 
771
954
  /**
955
+ * Undo a resolution (within 24h)
772
956
  * @param data The data for the request.
957
+ * @param data.id Review ID
773
958
  * @param data.region Region code for tenant context
774
- * @returns unknown
959
+ * @returns UndoResultDto
775
960
  * @throws ApiError
776
961
  */
777
- public static reviewController1(
778
- data: ReviewController1Data
779
- ): CancelablePromise<ReviewController1Response> {
962
+ public static reviewControllerUndo(
963
+ data: ReviewControllerUndoData
964
+ ): CancelablePromise<ReviewControllerUndoResponse> {
780
965
  return __request(OpenAPI, {
781
966
  method: 'POST',
782
967
  url: '/api/v1/{region}/bean/reviews/{id}/undo',
783
968
  path: {
969
+ id: data.id,
784
970
  region: data.region
785
971
  }
786
972
  });
787
973
  }
788
974
 
789
975
  /**
976
+ * Batch resolve multiple reviews
790
977
  * @param data The data for the request.
791
978
  * @param data.region Region code for tenant context
792
- * @returns unknown
979
+ * @param data.requestBody Batch resolution request containing review IDs and action
980
+ * @returns BatchResolveResultDto
793
981
  * @throws ApiError
794
982
  */
795
- public static reviewController2(
796
- data: ReviewController2Data
797
- ): CancelablePromise<ReviewController2Response> {
983
+ public static reviewControllerBatchResolve(
984
+ data: ReviewControllerBatchResolveData
985
+ ): CancelablePromise<ReviewControllerBatchResolveResponse> {
798
986
  return __request(OpenAPI, {
799
987
  method: 'POST',
800
988
  url: '/api/v1/{region}/bean/reviews/batch-resolve',
801
989
  path: {
802
990
  region: data.region
803
- }
991
+ },
992
+ body: data.requestBody,
993
+ mediaType: 'application/json'
804
994
  });
805
995
  }
806
996
  }
807
997
 
808
998
  export class BeanPayeesService {
809
999
  /**
810
- * @returns unknown
1000
+ * Create a new payee
1001
+ * Creates a new payee mapping for the authenticated user. The payee name must be unique within the user's account.
1002
+ * @param data The data for the request.
1003
+ * @param data.requestBody
1004
+ * @returns PayeeResponseDto Payee created successfully
811
1005
  * @throws ApiError
812
1006
  */
813
- public static payeeController(): CancelablePromise<PayeeControllerResponse> {
1007
+ public static payeeControllerCreate(
1008
+ data: PayeeControllerCreateData
1009
+ ): CancelablePromise<PayeeControllerCreateResponse> {
814
1010
  return __request(OpenAPI, {
815
1011
  method: 'POST',
816
- url: '/api/v1/bean/payees'
1012
+ url: '/api/v1/bean/payees',
1013
+ body: data.requestBody,
1014
+ mediaType: 'application/json',
1015
+ errors: {
1016
+ 400: 'Invalid input data',
1017
+ 409: 'Payee already exists'
1018
+ }
817
1019
  });
818
1020
  }
819
1021
 
@@ -912,37 +1114,78 @@ export class BeanPayeesService {
912
1114
  }
913
1115
 
914
1116
  /**
915
- * @returns unknown
1117
+ * Update payee
1118
+ * Updates a payee mapping. The payee name cannot be changed after creation.
1119
+ * @param data The data for the request.
1120
+ * @param data.id Payee UUID
1121
+ * @param data.requestBody
1122
+ * @returns PayeeResponseDto Payee updated successfully
916
1123
  * @throws ApiError
917
1124
  */
918
- public static payeeController1(): CancelablePromise<PayeeController1Response> {
1125
+ public static payeeControllerUpdate(
1126
+ data: PayeeControllerUpdateData
1127
+ ): CancelablePromise<PayeeControllerUpdateResponse> {
919
1128
  return __request(OpenAPI, {
920
1129
  method: 'PUT',
921
- url: '/api/v1/bean/payees/{id}'
1130
+ url: '/api/v1/bean/payees/{id}',
1131
+ path: {
1132
+ id: data.id
1133
+ },
1134
+ body: data.requestBody,
1135
+ mediaType: 'application/json',
1136
+ errors: {
1137
+ 400: 'Invalid input data',
1138
+ 404: 'Payee not found'
1139
+ }
922
1140
  });
923
1141
  }
924
1142
 
925
1143
  /**
926
- * @returns void
1144
+ * Delete payee
1145
+ * Soft deletes a payee by marking it as inactive. Inactive payees will not appear in autocomplete suggestions.
1146
+ * @param data The data for the request.
1147
+ * @param data.id Payee UUID
1148
+ * @returns void Payee deleted successfully
927
1149
  * @throws ApiError
928
1150
  */
929
- public static payeeController2(): CancelablePromise<PayeeController2Response> {
1151
+ public static payeeControllerDelete(
1152
+ data: PayeeControllerDeleteData
1153
+ ): CancelablePromise<PayeeControllerDeleteResponse> {
930
1154
  return __request(OpenAPI, {
931
1155
  method: 'DELETE',
932
- url: '/api/v1/bean/payees/{id}'
1156
+ url: '/api/v1/bean/payees/{id}',
1157
+ path: {
1158
+ id: data.id
1159
+ },
1160
+ errors: {
1161
+ 404: 'Payee not found'
1162
+ }
933
1163
  });
934
1164
  }
935
1165
  }
936
1166
 
937
1167
  export class AdminPayeeProfilesService {
938
1168
  /**
939
- * @returns unknown
1169
+ * Create payee profile (Admin only)
1170
+ * Creates a new global payee profile. The canonical name must be unique (case-insensitive).
1171
+ * @param data The data for the request.
1172
+ * @param data.requestBody
1173
+ * @returns PayeeProfileResponseDto Payee profile created successfully
940
1174
  * @throws ApiError
941
1175
  */
942
- public static payeeProfileAdminController(): CancelablePromise<PayeeProfileAdminControllerResponse> {
1176
+ public static payeeProfileAdminControllerCreate(
1177
+ data: PayeeProfileAdminControllerCreateData
1178
+ ): CancelablePromise<PayeeProfileAdminControllerCreateResponse> {
943
1179
  return __request(OpenAPI, {
944
1180
  method: 'POST',
945
- url: '/api/v1/admin/payee-profiles'
1181
+ url: '/api/v1/admin/payee-profiles',
1182
+ body: data.requestBody,
1183
+ mediaType: 'application/json',
1184
+ errors: {
1185
+ 400: 'Validation failed',
1186
+ 403: 'Admin access required',
1187
+ 409: 'Payee profile already exists'
1188
+ }
946
1189
  });
947
1190
  }
948
1191
 
@@ -1004,65 +1247,130 @@ export class AdminPayeeProfilesService {
1004
1247
  }
1005
1248
 
1006
1249
  /**
1007
- * @returns unknown
1250
+ * Update payee profile (Admin only)
1251
+ * Updates an existing payee profile. The canonical name cannot be changed.
1252
+ * @param data The data for the request.
1253
+ * @param data.id Payee profile ID (UUID)
1254
+ * @param data.requestBody
1255
+ * @returns PayeeProfileResponseDto Payee profile updated successfully
1008
1256
  * @throws ApiError
1009
1257
  */
1010
- public static payeeProfileAdminController1(): CancelablePromise<PayeeProfileAdminController1Response> {
1258
+ public static payeeProfileAdminControllerUpdate(
1259
+ data: PayeeProfileAdminControllerUpdateData
1260
+ ): CancelablePromise<PayeeProfileAdminControllerUpdateResponse> {
1011
1261
  return __request(OpenAPI, {
1012
1262
  method: 'PUT',
1013
- url: '/api/v1/admin/payee-profiles/{id}'
1263
+ url: '/api/v1/admin/payee-profiles/{id}',
1264
+ path: {
1265
+ id: data.id
1266
+ },
1267
+ body: data.requestBody,
1268
+ mediaType: 'application/json',
1269
+ errors: {
1270
+ 403: 'Admin access required',
1271
+ 404: 'Payee profile not found'
1272
+ }
1014
1273
  });
1015
1274
  }
1016
1275
 
1017
1276
  /**
1018
- * @returns void
1277
+ * Soft delete payee profile (Admin only)
1278
+ * Marks a payee profile as inactive (soft delete). The profile cannot be deleted if it is referenced by user payees.
1279
+ * @param data The data for the request.
1280
+ * @param data.id Payee profile ID (UUID)
1281
+ * @returns void Payee profile deleted successfully
1019
1282
  * @throws ApiError
1020
1283
  */
1021
- public static payeeProfileAdminController2(): CancelablePromise<PayeeProfileAdminController2Response> {
1284
+ public static payeeProfileAdminControllerDelete(
1285
+ data: PayeeProfileAdminControllerDeleteData
1286
+ ): CancelablePromise<PayeeProfileAdminControllerDeleteResponse> {
1022
1287
  return __request(OpenAPI, {
1023
1288
  method: 'DELETE',
1024
- url: '/api/v1/admin/payee-profiles/{id}'
1289
+ url: '/api/v1/admin/payee-profiles/{id}',
1290
+ path: {
1291
+ id: data.id
1292
+ },
1293
+ errors: {
1294
+ 403: 'Admin access required',
1295
+ 404: 'Payee profile not found',
1296
+ 409: 'Payee profile is in use and cannot be deleted'
1297
+ }
1025
1298
  });
1026
1299
  }
1027
1300
 
1028
1301
  /**
1029
- * @returns unknown
1302
+ * Verify payee profile (Admin only)
1303
+ * Marks a payee profile as verified by setting verifiedAt to current timestamp.
1304
+ * @param data The data for the request.
1305
+ * @param data.id Payee profile ID (UUID)
1306
+ * @returns PayeeProfileResponseDto Payee profile verified successfully
1030
1307
  * @throws ApiError
1031
1308
  */
1032
- public static payeeProfileAdminController3(): CancelablePromise<PayeeProfileAdminController3Response> {
1309
+ public static payeeProfileAdminControllerVerify(
1310
+ data: PayeeProfileAdminControllerVerifyData
1311
+ ): CancelablePromise<PayeeProfileAdminControllerVerifyResponse> {
1033
1312
  return __request(OpenAPI, {
1034
1313
  method: 'POST',
1035
- url: '/api/v1/admin/payee-profiles/{id}/verify'
1036
- });
1314
+ url: '/api/v1/admin/payee-profiles/{id}/verify',
1315
+ path: {
1316
+ id: data.id
1317
+ },
1318
+ errors: {
1319
+ 403: 'Admin access required',
1320
+ 404: 'Payee profile not found'
1321
+ }
1322
+ });
1037
1323
  }
1038
1324
 
1039
1325
  /**
1040
- * @returns unknown
1326
+ * Unverify payee profile (Admin only)
1327
+ * Removes verification status by setting verifiedAt to null.
1328
+ * @param data The data for the request.
1329
+ * @param data.id Payee profile ID (UUID)
1330
+ * @returns PayeeProfileResponseDto Payee profile unverified successfully
1041
1331
  * @throws ApiError
1042
1332
  */
1043
- public static payeeProfileAdminController4(): CancelablePromise<PayeeProfileAdminController4Response> {
1333
+ public static payeeProfileAdminControllerUnverify(
1334
+ data: PayeeProfileAdminControllerUnverifyData
1335
+ ): CancelablePromise<PayeeProfileAdminControllerUnverifyResponse> {
1044
1336
  return __request(OpenAPI, {
1045
1337
  method: 'DELETE',
1046
- url: '/api/v1/admin/payee-profiles/{id}/verify'
1338
+ url: '/api/v1/admin/payee-profiles/{id}/verify',
1339
+ path: {
1340
+ id: data.id
1341
+ },
1342
+ errors: {
1343
+ 403: 'Admin access required',
1344
+ 404: 'Payee profile not found'
1345
+ }
1047
1346
  });
1048
1347
  }
1049
1348
  }
1050
1349
 
1051
1350
  export class BeanCommoditiesService {
1052
1351
  /**
1352
+ * Create a new commodity
1353
+ * Creates a new commodity definition for the authenticated user
1053
1354
  * @param data The data for the request.
1054
1355
  * @param data.region Region code for tenant context
1055
- * @returns unknown
1356
+ * @param data.requestBody
1357
+ * @returns CommodityResponseDto Commodity created successfully
1056
1358
  * @throws ApiError
1057
1359
  */
1058
- public static commodityController(
1059
- data: CommodityControllerData
1060
- ): CancelablePromise<CommodityControllerResponse> {
1360
+ public static commodityControllerCreate(
1361
+ data: CommodityControllerCreateData
1362
+ ): CancelablePromise<CommodityControllerCreateResponse> {
1061
1363
  return __request(OpenAPI, {
1062
1364
  method: 'POST',
1063
1365
  url: '/api/v1/{region}/bean/commodities',
1064
1366
  path: {
1065
1367
  region: data.region
1368
+ },
1369
+ body: data.requestBody,
1370
+ mediaType: 'application/json',
1371
+ errors: {
1372
+ 400: 'Invalid input data',
1373
+ 409: 'Commodity already exists'
1066
1374
  }
1067
1375
  });
1068
1376
  }
@@ -1119,68 +1427,92 @@ export class BeanCommoditiesService {
1119
1427
  }
1120
1428
 
1121
1429
  /**
1430
+ * Update commodity
1431
+ * Updates an existing commodity definition. Symbol cannot be changed.
1122
1432
  * @param data The data for the request.
1433
+ * @param data.symbol Commodity symbol
1123
1434
  * @param data.region Region code for tenant context
1124
- * @returns unknown
1435
+ * @param data.requestBody
1436
+ * @returns CommodityResponseDto Commodity updated successfully
1125
1437
  * @throws ApiError
1126
1438
  */
1127
- public static commodityController1(
1128
- data: CommodityController1Data
1129
- ): CancelablePromise<CommodityController1Response> {
1439
+ public static commodityControllerUpdate(
1440
+ data: CommodityControllerUpdateData
1441
+ ): CancelablePromise<CommodityControllerUpdateResponse> {
1130
1442
  return __request(OpenAPI, {
1131
1443
  method: 'PUT',
1132
1444
  url: '/api/v1/{region}/bean/commodities/{symbol}',
1133
1445
  path: {
1446
+ symbol: data.symbol,
1134
1447
  region: data.region
1448
+ },
1449
+ body: data.requestBody,
1450
+ mediaType: 'application/json',
1451
+ errors: {
1452
+ 400: 'Invalid input data',
1453
+ 404: 'Commodity not found'
1135
1454
  }
1136
1455
  });
1137
1456
  }
1138
1457
 
1139
1458
  /**
1459
+ * Delete commodity
1460
+ * Deletes a commodity definition
1140
1461
  * @param data The data for the request.
1462
+ * @param data.symbol Commodity symbol
1141
1463
  * @param data.region Region code for tenant context
1142
- * @returns void
1464
+ * @returns void Commodity deleted successfully
1143
1465
  * @throws ApiError
1144
1466
  */
1145
- public static commodityController2(
1146
- data: CommodityController2Data
1147
- ): CancelablePromise<CommodityController2Response> {
1467
+ public static commodityControllerDelete(
1468
+ data: CommodityControllerDeleteData
1469
+ ): CancelablePromise<CommodityControllerDeleteResponse> {
1148
1470
  return __request(OpenAPI, {
1149
1471
  method: 'DELETE',
1150
1472
  url: '/api/v1/{region}/bean/commodities/{symbol}',
1151
1473
  path: {
1474
+ symbol: data.symbol,
1152
1475
  region: data.region
1476
+ },
1477
+ errors: {
1478
+ 404: 'Commodity not found'
1153
1479
  }
1154
1480
  });
1155
1481
  }
1156
1482
 
1157
1483
  /**
1484
+ * Ensure commodity exists
1485
+ * Gets existing commodity or creates it with automatic initialization from OpenBB
1158
1486
  * @param data The data for the request.
1487
+ * @param data.symbol Commodity symbol
1159
1488
  * @param data.region Region code for tenant context
1160
- * @returns unknown
1489
+ * @returns CommodityResponseDto Commodity retrieved or created
1161
1490
  * @throws ApiError
1162
1491
  */
1163
- public static commodityController3(
1164
- data: CommodityController3Data
1165
- ): CancelablePromise<CommodityController3Response> {
1492
+ public static commodityControllerGetOrCreate(
1493
+ data: CommodityControllerGetOrCreateData
1494
+ ): CancelablePromise<CommodityControllerGetOrCreateResponse> {
1166
1495
  return __request(OpenAPI, {
1167
1496
  method: 'POST',
1168
1497
  url: '/api/v1/{region}/bean/commodities/{symbol}/ensure',
1169
1498
  path: {
1499
+ symbol: data.symbol,
1170
1500
  region: data.region
1171
1501
  }
1172
1502
  });
1173
1503
  }
1174
1504
 
1175
1505
  /**
1506
+ * Bulk create commodities
1507
+ * Creates multiple commodities from a list of symbols, useful for initialization
1176
1508
  * @param data The data for the request.
1177
1509
  * @param data.region Region code for tenant context
1178
- * @returns unknown
1510
+ * @returns CommodityResponseDto Commodities created successfully
1179
1511
  * @throws ApiError
1180
1512
  */
1181
- public static commodityController4(
1182
- data: CommodityController4Data
1183
- ): CancelablePromise<CommodityController4Response> {
1513
+ public static commodityControllerBulkCreate(
1514
+ data: CommodityControllerBulkCreateData
1515
+ ): CancelablePromise<CommodityControllerBulkCreateResponse> {
1184
1516
  return __request(OpenAPI, {
1185
1517
  method: 'POST',
1186
1518
  url: '/api/v1/{region}/bean/commodities/bulk',
@@ -1193,19 +1525,28 @@ export class BeanCommoditiesService {
1193
1525
 
1194
1526
  export class RecurringRulesService {
1195
1527
  /**
1528
+ * Create a new recurring rule
1529
+ * Creates a new recurring transaction rule for the authenticated user
1196
1530
  * @param data The data for the request.
1197
1531
  * @param data.region Region code for tenant context
1198
- * @returns unknown
1532
+ * @param data.requestBody
1533
+ * @returns RecurringRuleResponseDto Rule created successfully
1199
1534
  * @throws ApiError
1200
1535
  */
1201
- public static recurringRuleController(
1202
- data: RecurringRuleControllerData
1203
- ): CancelablePromise<RecurringRuleControllerResponse> {
1536
+ public static recurringRuleControllerCreate(
1537
+ data: RecurringRuleControllerCreateData
1538
+ ): CancelablePromise<RecurringRuleControllerCreateResponse> {
1204
1539
  return __request(OpenAPI, {
1205
1540
  method: 'POST',
1206
1541
  url: '/api/v1/{region}/bean/recurring-rules',
1207
1542
  path: {
1208
1543
  region: data.region
1544
+ },
1545
+ body: data.requestBody,
1546
+ mediaType: 'application/json',
1547
+ errors: {
1548
+ 400: 'Invalid input data (e.g., autoCreate without accounts)',
1549
+ 409: 'Rule with same name already exists'
1209
1550
  }
1210
1551
  });
1211
1552
  }
@@ -1239,19 +1580,30 @@ export class RecurringRulesService {
1239
1580
  }
1240
1581
 
1241
1582
  /**
1583
+ * Create recurring rule from transaction
1584
+ * Auto-creates a recurring rule using transaction data. User only confirms frequency.
1242
1585
  * @param data The data for the request.
1586
+ * @param data.transactionId Source transaction ID
1243
1587
  * @param data.region Region code for tenant context
1244
- * @returns unknown
1588
+ * @param data.requestBody
1589
+ * @returns RecurringRuleResponseDto Rule created successfully
1245
1590
  * @throws ApiError
1246
1591
  */
1247
- public static recurringRuleController1(
1248
- data: RecurringRuleController1Data
1249
- ): CancelablePromise<RecurringRuleController1Response> {
1592
+ public static recurringRuleControllerCreateFromTransaction(
1593
+ data: RecurringRuleControllerCreateFromTransactionData
1594
+ ): CancelablePromise<RecurringRuleControllerCreateFromTransactionResponse> {
1250
1595
  return __request(OpenAPI, {
1251
1596
  method: 'POST',
1252
1597
  url: '/api/v1/{region}/bean/recurring-rules/from-transaction/{transactionId}',
1253
1598
  path: {
1599
+ transactionId: data.transactionId,
1254
1600
  region: data.region
1601
+ },
1602
+ body: data.requestBody,
1603
+ mediaType: 'application/json',
1604
+ errors: {
1605
+ 404: 'Transaction not found',
1606
+ 409: 'Rule with same name already exists or transaction already linked'
1255
1607
  }
1256
1608
  });
1257
1609
  }
@@ -1282,37 +1634,55 @@ export class RecurringRulesService {
1282
1634
  }
1283
1635
 
1284
1636
  /**
1637
+ * Update recurring rule
1638
+ * Updates an existing recurring rule
1285
1639
  * @param data The data for the request.
1640
+ * @param data.id Rule ID
1286
1641
  * @param data.region Region code for tenant context
1287
- * @returns unknown
1642
+ * @param data.requestBody
1643
+ * @returns RecurringRuleResponseDto Rule updated successfully
1288
1644
  * @throws ApiError
1289
1645
  */
1290
- public static recurringRuleController2(
1291
- data: RecurringRuleController2Data
1292
- ): CancelablePromise<RecurringRuleController2Response> {
1646
+ public static recurringRuleControllerUpdate(
1647
+ data: RecurringRuleControllerUpdateData
1648
+ ): CancelablePromise<RecurringRuleControllerUpdateResponse> {
1293
1649
  return __request(OpenAPI, {
1294
1650
  method: 'PATCH',
1295
1651
  url: '/api/v1/{region}/bean/recurring-rules/{id}',
1296
1652
  path: {
1653
+ id: data.id,
1297
1654
  region: data.region
1655
+ },
1656
+ body: data.requestBody,
1657
+ mediaType: 'application/json',
1658
+ errors: {
1659
+ 400: 'Invalid input data',
1660
+ 404: 'Rule not found'
1298
1661
  }
1299
1662
  });
1300
1663
  }
1301
1664
 
1302
1665
  /**
1666
+ * Delete recurring rule
1667
+ * Soft deletes a recurring rule (sets isActive to false)
1303
1668
  * @param data The data for the request.
1669
+ * @param data.id Rule ID
1304
1670
  * @param data.region Region code for tenant context
1305
- * @returns void
1671
+ * @returns void Rule deleted successfully
1306
1672
  * @throws ApiError
1307
1673
  */
1308
- public static recurringRuleController3(
1309
- data: RecurringRuleController3Data
1310
- ): CancelablePromise<RecurringRuleController3Response> {
1674
+ public static recurringRuleControllerDelete(
1675
+ data: RecurringRuleControllerDeleteData
1676
+ ): CancelablePromise<RecurringRuleControllerDeleteResponse> {
1311
1677
  return __request(OpenAPI, {
1312
1678
  method: 'DELETE',
1313
1679
  url: '/api/v1/{region}/bean/recurring-rules/{id}',
1314
1680
  path: {
1681
+ id: data.id,
1315
1682
  region: data.region
1683
+ },
1684
+ errors: {
1685
+ 404: 'Rule not found'
1316
1686
  }
1317
1687
  });
1318
1688
  }
@@ -1420,91 +1790,138 @@ export class ExpectedTransactionsService {
1420
1790
  }
1421
1791
 
1422
1792
  /**
1793
+ * Skip expected transaction
1794
+ * Marks an expected transaction as skipped (PENDING -> SKIPPED)
1423
1795
  * @param data The data for the request.
1796
+ * @param data.id Expected transaction ID
1424
1797
  * @param data.region Region code for tenant context
1425
- * @returns unknown
1798
+ * @returns ExpectedTransactionResponseDto Expected transaction skipped successfully
1426
1799
  * @throws ApiError
1427
1800
  */
1428
- public static expectedTransactionController(
1429
- data: ExpectedTransactionControllerData
1430
- ): CancelablePromise<ExpectedTransactionControllerResponse> {
1801
+ public static expectedTransactionControllerSkip(
1802
+ data: ExpectedTransactionControllerSkipData
1803
+ ): CancelablePromise<ExpectedTransactionControllerSkipResponse> {
1431
1804
  return __request(OpenAPI, {
1432
1805
  method: 'POST',
1433
1806
  url: '/api/v1/{region}/bean/expected-transactions/{id}/skip',
1434
1807
  path: {
1808
+ id: data.id,
1435
1809
  region: data.region
1810
+ },
1811
+ errors: {
1812
+ 400: 'Cannot skip - not in PENDING status',
1813
+ 404: 'Expected transaction not found'
1436
1814
  }
1437
1815
  });
1438
1816
  }
1439
1817
 
1440
1818
  /**
1819
+ * Undo skip
1820
+ * Reverses a skip operation (SKIPPED -> PENDING)
1441
1821
  * @param data The data for the request.
1822
+ * @param data.id Expected transaction ID
1442
1823
  * @param data.region Region code for tenant context
1443
- * @returns unknown
1824
+ * @returns ExpectedTransactionResponseDto Skip undone successfully
1444
1825
  * @throws ApiError
1445
1826
  */
1446
- public static expectedTransactionController1(
1447
- data: ExpectedTransactionController1Data
1448
- ): CancelablePromise<ExpectedTransactionController1Response> {
1827
+ public static expectedTransactionControllerUndoSkip(
1828
+ data: ExpectedTransactionControllerUndoSkipData
1829
+ ): CancelablePromise<ExpectedTransactionControllerUndoSkipResponse> {
1449
1830
  return __request(OpenAPI, {
1450
1831
  method: 'DELETE',
1451
1832
  url: '/api/v1/{region}/bean/expected-transactions/{id}/skip',
1452
1833
  path: {
1834
+ id: data.id,
1453
1835
  region: data.region
1836
+ },
1837
+ errors: {
1838
+ 400: 'Cannot undo - not in SKIPPED status',
1839
+ 404: 'Expected transaction not found'
1454
1840
  }
1455
1841
  });
1456
1842
  }
1457
1843
 
1458
1844
  /**
1845
+ * Confirm transaction match
1846
+ * Manually matches an expected transaction with an actual transaction
1459
1847
  * @param data The data for the request.
1848
+ * @param data.id Expected transaction ID
1460
1849
  * @param data.region Region code for tenant context
1461
- * @returns unknown
1850
+ * @param data.requestBody
1851
+ * @returns unknown Match confirmed successfully
1462
1852
  * @throws ApiError
1463
1853
  */
1464
- public static expectedTransactionController2(
1465
- data: ExpectedTransactionController2Data
1466
- ): CancelablePromise<ExpectedTransactionController2Response> {
1854
+ public static expectedTransactionControllerConfirmMatch(
1855
+ data: ExpectedTransactionControllerConfirmMatchData
1856
+ ): CancelablePromise<ExpectedTransactionControllerConfirmMatchResponse> {
1467
1857
  return __request(OpenAPI, {
1468
1858
  method: 'POST',
1469
1859
  url: '/api/v1/{region}/bean/expected-transactions/{id}/match',
1470
1860
  path: {
1861
+ id: data.id,
1471
1862
  region: data.region
1863
+ },
1864
+ body: data.requestBody,
1865
+ mediaType: 'application/json',
1866
+ errors: {
1867
+ 400: 'Cannot match - not in PENDING status',
1868
+ 404: 'Expected or actual transaction not found',
1869
+ 409: 'Actual transaction already matched to another rule'
1472
1870
  }
1473
1871
  });
1474
1872
  }
1475
1873
 
1476
1874
  /**
1875
+ * Unmatch transaction
1876
+ * Removes the match between expected and actual transaction (COMPLETED -> PENDING)
1477
1877
  * @param data The data for the request.
1878
+ * @param data.id Expected transaction ID
1478
1879
  * @param data.region Region code for tenant context
1479
- * @returns unknown
1880
+ * @returns unknown Match removed successfully
1480
1881
  * @throws ApiError
1481
1882
  */
1482
- public static expectedTransactionController3(
1483
- data: ExpectedTransactionController3Data
1484
- ): CancelablePromise<ExpectedTransactionController3Response> {
1883
+ public static expectedTransactionControllerUnmatch(
1884
+ data: ExpectedTransactionControllerUnmatchData
1885
+ ): CancelablePromise<ExpectedTransactionControllerUnmatchResponse> {
1485
1886
  return __request(OpenAPI, {
1486
1887
  method: 'DELETE',
1487
1888
  url: '/api/v1/{region}/bean/expected-transactions/{id}/match',
1488
1889
  path: {
1890
+ id: data.id,
1489
1891
  region: data.region
1892
+ },
1893
+ errors: {
1894
+ 400: 'Cannot unmatch - not in COMPLETED status',
1895
+ 404: 'Expected transaction not found'
1490
1896
  }
1491
1897
  });
1492
1898
  }
1493
1899
 
1494
1900
  /**
1901
+ * Enter Now
1902
+ * Creates an actual transaction for an expected transaction (YNAB-style Enter Now)
1495
1903
  * @param data The data for the request.
1904
+ * @param data.id Expected transaction ID
1496
1905
  * @param data.region Region code for tenant context
1497
- * @returns unknown
1906
+ * @param data.requestBody
1907
+ * @returns unknown Transaction created successfully
1498
1908
  * @throws ApiError
1499
1909
  */
1500
- public static expectedTransactionController4(
1501
- data: ExpectedTransactionController4Data
1502
- ): CancelablePromise<ExpectedTransactionController4Response> {
1910
+ public static expectedTransactionControllerEnterNow(
1911
+ data: ExpectedTransactionControllerEnterNowData
1912
+ ): CancelablePromise<ExpectedTransactionControllerEnterNowResponse> {
1503
1913
  return __request(OpenAPI, {
1504
1914
  method: 'POST',
1505
1915
  url: '/api/v1/{region}/bean/expected-transactions/{id}/enter',
1506
1916
  path: {
1917
+ id: data.id,
1507
1918
  region: data.region
1919
+ },
1920
+ body: data.requestBody,
1921
+ mediaType: 'application/json',
1922
+ errors: {
1923
+ 400: 'Cannot enter - not in PENDING status or missing accounts',
1924
+ 404: 'Expected transaction or accounts not found'
1508
1925
  }
1509
1926
  });
1510
1927
  }
@@ -1515,16 +1932,20 @@ export class RecurringForecastService {
1515
1932
  * Get cash flow forecast
1516
1933
  * Returns predicted outflows for the next N months based on active recurring rules
1517
1934
  * @param data The data for the request.
1935
+ * @param data.region Region code for tenant context
1518
1936
  * @param data.months Number of months to forecast (1-12, default 3)
1519
1937
  * @returns ForecastResponseDto Forecast retrieved successfully
1520
1938
  * @throws ApiError
1521
1939
  */
1522
1940
  public static forecastControllerGetForecast(
1523
- data: ForecastControllerGetForecastData = {}
1941
+ data: ForecastControllerGetForecastData
1524
1942
  ): CancelablePromise<ForecastControllerGetForecastResponse> {
1525
1943
  return __request(OpenAPI, {
1526
1944
  method: 'GET',
1527
1945
  url: '/api/v1/{region}/bean/recurring/forecast',
1946
+ path: {
1947
+ region: data.region
1948
+ },
1528
1949
  query: {
1529
1950
  months: data.months
1530
1951
  }
@@ -1534,19 +1955,29 @@ export class RecurringForecastService {
1534
1955
 
1535
1956
  export class BeanTransactionRulesService {
1536
1957
  /**
1958
+ * Create a new transaction rule (or upsert if upsertByPayee=true)
1959
+ * Creates a new rule. If upsertByPayee=true, updates existing rule matching payeeKeywords[0] instead of creating duplicate.
1537
1960
  * @param data The data for the request.
1538
1961
  * @param data.region Region code for tenant context
1539
- * @returns unknown
1962
+ * @param data.requestBody
1963
+ * @returns TransactionRuleResponseDto Rule updated successfully (upsert mode)
1540
1964
  * @throws ApiError
1541
1965
  */
1542
- public static transactionRuleController(
1543
- data: TransactionRuleControllerData
1544
- ): CancelablePromise<TransactionRuleControllerResponse> {
1966
+ public static transactionRuleControllerCreate(
1967
+ data: TransactionRuleControllerCreateData
1968
+ ): CancelablePromise<TransactionRuleControllerCreateResponse> {
1545
1969
  return __request(OpenAPI, {
1546
1970
  method: 'POST',
1547
1971
  url: '/api/v1/{region}/bean/transaction-rules',
1548
1972
  path: {
1549
1973
  region: data.region
1974
+ },
1975
+ body: data.requestBody,
1976
+ mediaType: 'application/json',
1977
+ errors: {
1978
+ 400: 'Validation failed',
1979
+ 401: 'Unauthorized',
1980
+ 409: 'Resource conflict - another process is updating this rule'
1550
1981
  }
1551
1982
  });
1552
1983
  }
@@ -1605,25 +2036,34 @@ export class BeanTransactionRulesService {
1605
2036
  body: data.requestBody,
1606
2037
  mediaType: 'application/json',
1607
2038
  errors: {
2039
+ 400: 'Validation failed',
1608
2040
  401: 'Unauthorized'
1609
2041
  }
1610
2042
  });
1611
2043
  }
1612
2044
 
1613
2045
  /**
2046
+ * Bulk create transaction rules
1614
2047
  * @param data The data for the request.
1615
2048
  * @param data.region Region code for tenant context
1616
- * @returns unknown
2049
+ * @param data.requestBody
2050
+ * @returns BulkCreateRulesResponseDto Bulk create completed
1617
2051
  * @throws ApiError
1618
2052
  */
1619
- public static transactionRuleController1(
1620
- data: TransactionRuleController1Data
1621
- ): CancelablePromise<TransactionRuleController1Response> {
2053
+ public static transactionRuleControllerBulkCreate(
2054
+ data: TransactionRuleControllerBulkCreateData
2055
+ ): CancelablePromise<TransactionRuleControllerBulkCreateResponse> {
1622
2056
  return __request(OpenAPI, {
1623
2057
  method: 'POST',
1624
2058
  url: '/api/v1/{region}/bean/transaction-rules/bulk',
1625
2059
  path: {
1626
2060
  region: data.region
2061
+ },
2062
+ body: data.requestBody,
2063
+ mediaType: 'application/json',
2064
+ errors: {
2065
+ 400: 'Invalid bulk create data',
2066
+ 401: 'Unauthorized'
1627
2067
  }
1628
2068
  });
1629
2069
  }
@@ -1704,37 +2144,59 @@ export class BeanTransactionRulesService {
1704
2144
  }
1705
2145
 
1706
2146
  /**
2147
+ * Update a transaction rule
1707
2148
  * @param data The data for the request.
2149
+ * @param data.ruleId Rule ID to update
1708
2150
  * @param data.region Region code for tenant context
1709
- * @returns unknown
2151
+ * @param data.requestBody
2152
+ * @returns TransactionRuleResponseDto Rule updated successfully
1710
2153
  * @throws ApiError
1711
2154
  */
1712
- public static transactionRuleController2(
1713
- data: TransactionRuleController2Data
1714
- ): CancelablePromise<TransactionRuleController2Response> {
2155
+ public static transactionRuleControllerUpdate(
2156
+ data: TransactionRuleControllerUpdateData
2157
+ ): CancelablePromise<TransactionRuleControllerUpdateResponse> {
1715
2158
  return __request(OpenAPI, {
1716
2159
  method: 'PUT',
1717
2160
  url: '/api/v1/{region}/bean/transaction-rules/{ruleId}',
1718
2161
  path: {
2162
+ ruleId: data.ruleId,
1719
2163
  region: data.region
2164
+ },
2165
+ body: data.requestBody,
2166
+ mediaType: 'application/json',
2167
+ errors: {
2168
+ 400: 'Validation failed',
2169
+ 401: 'Unauthorized',
2170
+ 403: 'Forbidden - not owner of rule',
2171
+ 404: 'Rule not found',
2172
+ 409: 'Resource conflict - rule is being modified by another process'
1720
2173
  }
1721
2174
  });
1722
2175
  }
1723
2176
 
1724
2177
  /**
2178
+ * Delete a transaction rule
1725
2179
  * @param data The data for the request.
2180
+ * @param data.ruleId Rule ID to delete
1726
2181
  * @param data.region Region code for tenant context
1727
- * @returns void
2182
+ * @returns void Rule deleted successfully
1728
2183
  * @throws ApiError
1729
2184
  */
1730
- public static transactionRuleController3(
1731
- data: TransactionRuleController3Data
1732
- ): CancelablePromise<TransactionRuleController3Response> {
2185
+ public static transactionRuleControllerDelete(
2186
+ data: TransactionRuleControllerDeleteData
2187
+ ): CancelablePromise<TransactionRuleControllerDeleteResponse> {
1733
2188
  return __request(OpenAPI, {
1734
2189
  method: 'DELETE',
1735
2190
  url: '/api/v1/{region}/bean/transaction-rules/{ruleId}',
1736
2191
  path: {
2192
+ ruleId: data.ruleId,
1737
2193
  region: data.region
2194
+ },
2195
+ errors: {
2196
+ 401: 'Unauthorized',
2197
+ 403: 'Forbidden - not owner of rule',
2198
+ 404: 'Rule not found',
2199
+ 409: 'Resource conflict - rule is being modified by another process'
1738
2200
  }
1739
2201
  });
1740
2202
  }
@@ -1974,143 +2436,634 @@ export class PropertiesService {
1974
2436
  }
1975
2437
 
1976
2438
  /**
1977
- * @returns unknown
2439
+ * Update a system property
2440
+ * @param data The data for the request.
2441
+ * @param data.key Property key
2442
+ * @param data.requestBody
2443
+ * @returns unknown Property updated successfully
1978
2444
  * @throws ApiError
1979
2445
  */
1980
- public static propertyController(): CancelablePromise<PropertyControllerResponse> {
2446
+ public static propertyControllerUpdate(
2447
+ data: PropertyControllerUpdateData
2448
+ ): CancelablePromise<PropertyControllerUpdateResponse> {
1981
2449
  return __request(OpenAPI, {
1982
2450
  method: 'PUT',
1983
- url: '/api/v1/admin/properties/{key}'
2451
+ url: '/api/v1/admin/properties/{key}',
2452
+ path: {
2453
+ key: data.key
2454
+ },
2455
+ body: data.requestBody,
2456
+ mediaType: 'application/json',
2457
+ errors: {
2458
+ 401: 'Unauthorized',
2459
+ 403: 'Forbidden - insufficient permissions'
2460
+ }
1984
2461
  });
1985
2462
  }
1986
2463
 
1987
2464
  /**
1988
- * @returns void
2465
+ * Delete a system property
2466
+ * @param data The data for the request.
2467
+ * @param data.key Property key
2468
+ * @returns void Property deleted successfully
1989
2469
  * @throws ApiError
1990
2470
  */
1991
- public static propertyController1(): CancelablePromise<PropertyController1Response> {
2471
+ public static propertyControllerDelete(
2472
+ data: PropertyControllerDeleteData
2473
+ ): CancelablePromise<PropertyControllerDeleteResponse> {
1992
2474
  return __request(OpenAPI, {
1993
2475
  method: 'DELETE',
1994
- url: '/api/v1/admin/properties/{key}'
2476
+ url: '/api/v1/admin/properties/{key}',
2477
+ path: {
2478
+ key: data.key
2479
+ },
2480
+ errors: {
2481
+ 401: 'Unauthorized',
2482
+ 403: 'Forbidden - insufficient permissions',
2483
+ 404: 'Property not found'
2484
+ }
1995
2485
  });
1996
2486
  }
1997
2487
  }
1998
2488
 
1999
- export class BeanImportService {
2489
+ export class LifeEventsService {
2000
2490
  /**
2001
- * Import a bill file
2002
- * Upload and process a bill file (CSV, PDF, OFX, etc.). The system automatically identifies the file type, extracts transactions, validates them, and stores only validated transactions to the database. Maximum file size: 50MB. Only 1 import per user at a time (concurrent imports rejected with 429).
2491
+ * Create a new life event
2492
+ * Creates a new life event entry for the authenticated user. Returns ETag header carrying the row updatedAt.
2003
2493
  * @param data The data for the request.
2004
- * @param data.formData Bill file to import
2005
- * @returns ImportResultDto File imported successfully
2494
+ * @param data.region Region code for tenant context (decorative for life events)
2495
+ * @param data.requestBody
2496
+ * @returns EventResponseDto Life event created successfully
2006
2497
  * @throws ApiError
2007
2498
  */
2008
- public static fileImportControllerImportFile(
2009
- data: FileImportControllerImportFileData
2010
- ): CancelablePromise<FileImportControllerImportFileResponse> {
2499
+ public static eventControllerCreate(
2500
+ data: EventControllerCreateData
2501
+ ): CancelablePromise<EventControllerCreateResponse> {
2011
2502
  return __request(OpenAPI, {
2012
2503
  method: 'POST',
2013
- url: '/api/v1/{region}/bean/import/file',
2014
- formData: data.formData,
2015
- mediaType: 'multipart/form-data',
2504
+ url: '/api/v1/{region}/bean/events',
2505
+ path: {
2506
+ region: data.region
2507
+ },
2508
+ body: data.requestBody,
2509
+ mediaType: 'application/json',
2016
2510
  errors: {
2017
- 400: 'Bad request - file-format-unsupported or file-import-failed',
2018
- 413: 'Payload too large - file exceeds 50MB limit',
2019
- 429: 'Too many requests - user already has import in progress',
2020
- 500: 'Internal server error - DATABASE_ERROR'
2511
+ 409: 'Life event already exists for this (userId, type, date) combination'
2021
2512
  }
2022
2513
  });
2023
2514
  }
2024
2515
 
2025
2516
  /**
2026
- * Identify file type
2027
- * Upload a file to check if it can be processed by any registered importer. Does not perform actual import - useful for pre-validation. Uses user-specific importer configuration.
2517
+ * List user life events
2518
+ * Returns life events for the authenticated user with optional filtering by type, description search, and date range.
2028
2519
  * @param data The data for the request.
2029
- * @param data.formData File to identify
2030
- * @returns IdentifyResultDto File identification result
2520
+ * @param data.region Region code for tenant context (decorative for life events)
2521
+ * @param data.type Filter by life event type (exact match)
2522
+ * @param data.q Search term for description (case-insensitive partial match)
2523
+ * @param data.from Filter life events from this date (ISO 8601 format)
2524
+ * @param data.to Filter life events to this date (ISO 8601 format)
2525
+ * @param data.page Page number for pagination (default: 1)
2526
+ * @param data.limit Number of items per page (default: 20, max: 100)
2527
+ * @returns EventListResponseDto Life events retrieved successfully
2031
2528
  * @throws ApiError
2032
2529
  */
2033
- public static fileImportControllerIdentifyFile(
2034
- data: FileImportControllerIdentifyFileData
2035
- ): CancelablePromise<FileImportControllerIdentifyFileResponse> {
2530
+ public static eventControllerFindAll(
2531
+ data: EventControllerFindAllData
2532
+ ): CancelablePromise<EventControllerFindAllResponse> {
2036
2533
  return __request(OpenAPI, {
2037
- method: 'POST',
2038
- url: '/api/v1/{region}/bean/import/identify',
2039
- formData: data.formData,
2040
- mediaType: 'multipart/form-data',
2041
- errors: {
2042
- 400: 'Bad request - No file uploaded'
2534
+ method: 'GET',
2535
+ url: '/api/v1/{region}/bean/events',
2536
+ path: {
2537
+ region: data.region
2538
+ },
2539
+ query: {
2540
+ type: data.type,
2541
+ q: data.q,
2542
+ from: data.from,
2543
+ to: data.to,
2544
+ page: data.page,
2545
+ limit: data.limit
2043
2546
  }
2044
2547
  });
2045
2548
  }
2046
2549
 
2047
2550
  /**
2048
- * Get importer configuration
2049
- * Returns the current configuration for the specified importer. Creates default configuration if none exists.
2551
+ * Get life event by ID
2552
+ * Returns a single life event by its ID. Returns ETag header.
2050
2553
  * @param data The data for the request.
2051
- * @param data.importerId Importer identifier. Supported importers: alipay, alipay-web, wechat, boc, boc-credit, ccb, cmb, cmbc, cmbc-credit, icbc, icbc-credit, hsbc-hk-credit, hsbc-hk-debit
2052
- * @param data.region Region code for tenant context
2053
- * @returns ImporterConfigDto Configuration retrieved successfully
2554
+ * @param data.id Life event ID
2555
+ * @param data.region Region code for tenant context (decorative for life events)
2556
+ * @returns EventResponseDto Life event retrieved successfully
2054
2557
  * @throws ApiError
2055
2558
  */
2056
- public static importerConfigControllerGetConfig(
2057
- data: ImporterConfigControllerGetConfigData
2058
- ): CancelablePromise<ImporterConfigControllerGetConfigResponse> {
2559
+ public static eventControllerFindOne(
2560
+ data: EventControllerFindOneData
2561
+ ): CancelablePromise<EventControllerFindOneResponse> {
2059
2562
  return __request(OpenAPI, {
2060
2563
  method: 'GET',
2061
- url: '/api/v1/{region}/bean/import/config/{importerId}',
2564
+ url: '/api/v1/{region}/bean/events/{id}',
2062
2565
  path: {
2063
- importerId: data.importerId,
2566
+ id: data.id,
2064
2567
  region: data.region
2065
2568
  },
2066
2569
  errors: {
2067
- 400: 'Invalid input - Unsupported importer',
2068
- 401: 'Unauthorized - Authentication required'
2570
+ 404: 'Life event not found'
2069
2571
  }
2070
2572
  });
2071
2573
  }
2072
2574
 
2073
2575
  /**
2576
+ * Update a life event
2577
+ * Updates an existing life event. If If-Match header is provided, performs optimistic concurrency check; mismatched updatedAt returns 412.
2074
2578
  * @param data The data for the request.
2075
- * @param data.region Region code for tenant context
2076
- * @returns unknown
2579
+ * @param data.id Life event ID
2580
+ * @param data.region Region code for tenant context (decorative for life events)
2581
+ * @param data.requestBody
2582
+ * @returns EventResponseDto Life event updated successfully
2077
2583
  * @throws ApiError
2078
2584
  */
2079
- public static importerConfigController(
2080
- data: ImporterConfigControllerData
2081
- ): CancelablePromise<ImporterConfigControllerResponse> {
2585
+ public static eventControllerUpdate(
2586
+ data: EventControllerUpdateData
2587
+ ): CancelablePromise<EventControllerUpdateResponse> {
2082
2588
  return __request(OpenAPI, {
2083
2589
  method: 'PUT',
2084
- url: '/api/v1/{region}/bean/import/config/{importerId}',
2590
+ url: '/api/v1/{region}/bean/events/{id}',
2591
+ path: {
2592
+ id: data.id,
2593
+ region: data.region
2594
+ },
2595
+ body: data.requestBody,
2596
+ mediaType: 'application/json',
2597
+ errors: {
2598
+ 400: 'If-Match header is not a valid ISO 8601 date',
2599
+ 404: 'Life event not found',
2600
+ 409: 'Updated event conflicts with an existing (userId, type, date) combination',
2601
+ 412: 'If-Match precondition failed (updatedAt mismatch)'
2602
+ }
2603
+ });
2604
+ }
2605
+
2606
+ /**
2607
+ * Delete a life event
2608
+ * Deletes a life event entry (hard delete). Returns 204.
2609
+ * @param data The data for the request.
2610
+ * @param data.id Life event ID
2611
+ * @param data.region Region code for tenant context (decorative for life events)
2612
+ * @returns void Life event deleted successfully
2613
+ * @throws ApiError
2614
+ */
2615
+ public static eventControllerDelete(
2616
+ data: EventControllerDeleteData
2617
+ ): CancelablePromise<EventControllerDeleteResponse> {
2618
+ return __request(OpenAPI, {
2619
+ method: 'DELETE',
2620
+ url: '/api/v1/{region}/bean/events/{id}',
2085
2621
  path: {
2622
+ id: data.id,
2086
2623
  region: data.region
2624
+ },
2625
+ errors: {
2626
+ 404: 'Life event not found'
2087
2627
  }
2088
2628
  });
2089
2629
  }
2090
2630
 
2091
2631
  /**
2632
+ * Slice time-series by a life event (Phase 79)
2633
+ * Returns aggregated time-series for postings matching accountPattern within the half-open date range of the given life event.
2092
2634
  * @param data The data for the request.
2093
- * @param data.region Region code for tenant context
2094
- * @returns unknown
2635
+ * @param data.id Life event ID
2636
+ * @param data.accountPattern
2637
+ * @param data.granularity
2638
+ * @param data.region Region code for tenant context (decorative for life events)
2639
+ * @returns unknown Time-series sliced by the life event range
2095
2640
  * @throws ApiError
2096
2641
  */
2097
- public static importerConfigController1(
2098
- data: ImporterConfigController1Data
2099
- ): CancelablePromise<ImporterConfigController1Response> {
2642
+ public static eventControllerGetSlice(
2643
+ data: EventControllerGetSliceData
2644
+ ): CancelablePromise<EventControllerGetSliceResponse> {
2100
2645
  return __request(OpenAPI, {
2101
- method: 'POST',
2102
- url: '/api/v1/{region}/bean/import/config/{importerId}/reset',
2646
+ method: 'GET',
2647
+ url: '/api/v1/{region}/bean/events/{id}/slice',
2103
2648
  path: {
2649
+ id: data.id,
2104
2650
  region: data.region
2651
+ },
2652
+ query: {
2653
+ accountPattern: data.accountPattern,
2654
+ granularity: data.granularity
2655
+ },
2656
+ errors: {
2657
+ 400: 'accountPattern query param is empty',
2658
+ 404: 'Life event not found'
2105
2659
  }
2106
2660
  });
2107
2661
  }
2108
2662
  }
2109
2663
 
2110
- export class ProviderSyncService {
2664
+ export class BalanceReconciliationService {
2111
2665
  /**
2112
- * Sync transactions from financial data provider
2113
- *
2666
+ * Preview reconciliation (book vs actual)
2667
+ * Computes book balance, diff, Beancount-inferred tolerance, and suggested action without persisting.
2668
+ * @param data The data for the request.
2669
+ * @param data.region Region code for tenant context (decorative for reconciliation)
2670
+ * @param data.requestBody
2671
+ * @returns ReconciliationComputeResultDto Reconciliation preview
2672
+ * @throws ApiError
2673
+ */
2674
+ public static reconciliationControllerCompute(
2675
+ data: ReconciliationControllerComputeData
2676
+ ): CancelablePromise<ReconciliationControllerComputeResponse> {
2677
+ return __request(OpenAPI, {
2678
+ method: 'POST',
2679
+ url: '/api/v1/{region}/bean/reconciliations',
2680
+ path: {
2681
+ region: data.region
2682
+ },
2683
+ body: data.requestBody,
2684
+ mediaType: 'application/json',
2685
+ errors: {
2686
+ 404: 'Account not found'
2687
+ }
2688
+ });
2689
+ }
2690
+
2691
+ /**
2692
+ * Record a balance assertion
2693
+ * Persists the reconciliation as a BeanBalance assertion (amount = actual, diffAmount = book − actual). Re-reconciling the same day/currency upserts.
2694
+ * @param data The data for the request.
2695
+ * @param data.region Region code for tenant context (decorative for reconciliation)
2696
+ * @param data.requestBody
2697
+ * @returns ReconciliationRecordDto Balance assertion recorded
2698
+ * @throws ApiError
2699
+ */
2700
+ public static reconciliationControllerAssert(
2701
+ data: ReconciliationControllerAssertData
2702
+ ): CancelablePromise<ReconciliationControllerAssertResponse> {
2703
+ return __request(OpenAPI, {
2704
+ method: 'POST',
2705
+ url: '/api/v1/{region}/bean/reconciliations/assert',
2706
+ path: {
2707
+ region: data.region
2708
+ },
2709
+ body: data.requestBody,
2710
+ mediaType: 'application/json',
2711
+ errors: {
2712
+ 404: 'Account not found'
2713
+ }
2714
+ });
2715
+ }
2716
+
2717
+ /**
2718
+ * Generate a pad adjusting entry
2719
+ * When book is outside tolerance, synthesizes a Beancount pad transaction (flag P) booking the diff from source_account and persists it. Source defaults to Equity:Opening-Balances.
2720
+ * @param data The data for the request.
2721
+ * @param data.region Region code for tenant context (decorative for reconciliation)
2722
+ * @param data.requestBody
2723
+ * @returns PadResultDto Pad adjusting entry generated
2724
+ * @throws ApiError
2725
+ */
2726
+ public static reconciliationControllerPad(
2727
+ data: ReconciliationControllerPadData
2728
+ ): CancelablePromise<ReconciliationControllerPadResponse> {
2729
+ return __request(OpenAPI, {
2730
+ method: 'POST',
2731
+ url: '/api/v1/{region}/bean/reconciliations/pad',
2732
+ path: {
2733
+ region: data.region
2734
+ },
2735
+ body: data.requestBody,
2736
+ mediaType: 'application/json',
2737
+ errors: {
2738
+ 400: 'Book already within tolerance — no pad needed',
2739
+ 404: 'Account not found'
2740
+ }
2741
+ });
2742
+ }
2743
+
2744
+ /**
2745
+ * List reconciliation history for an account
2746
+ * Returns recorded balance assertions (most recent first). The latest drives the account-detail "Last <date>" badge.
2747
+ * @param data The data for the request.
2748
+ * @param data.accountId BeanAccount id
2749
+ * @param data.region Region code for tenant context (decorative for reconciliation)
2750
+ * @returns ReconciliationRecordDto Reconciliation history
2751
+ * @throws ApiError
2752
+ */
2753
+ public static reconciliationControllerHistory(
2754
+ data: ReconciliationControllerHistoryData
2755
+ ): CancelablePromise<ReconciliationControllerHistoryResponse> {
2756
+ return __request(OpenAPI, {
2757
+ method: 'GET',
2758
+ url: '/api/v1/{region}/bean/accounts/{accountId}/reconciliations',
2759
+ path: {
2760
+ accountId: data.accountId,
2761
+ region: data.region
2762
+ },
2763
+ errors: {
2764
+ 404: 'Account not found'
2765
+ }
2766
+ });
2767
+ }
2768
+ }
2769
+
2770
+ export class BeanExportService {
2771
+ /**
2772
+ * Export Beancount ledger as ZIP
2773
+ * Export all user Beancount data as a ZIP file containing ledger.beancount and yearly files in community format.
2774
+ * @returns unknown
2775
+ * @throws ApiError
2776
+ */
2777
+ public static exportControllerExportBeancount(): CancelablePromise<ExportControllerExportBeancountResponse> {
2778
+ return __request(OpenAPI, {
2779
+ method: 'GET',
2780
+ url: '/api/v1/{region}/bean/export/beancount'
2781
+ });
2782
+ }
2783
+ }
2784
+
2785
+ export class BeanImportService {
2786
+ /**
2787
+ * Import a bill file
2788
+ * Upload and process a bill file (CSV, PDF, OFX, etc.). The system automatically identifies the file type, extracts transactions, validates them, and stores only validated transactions to the database. Maximum file size: 50MB. Only 1 import per user at a time (concurrent imports rejected with 429).
2789
+ * @param data The data for the request.
2790
+ * @param data.region Region code for tenant context
2791
+ * @param data.formData Bill file to import
2792
+ * @returns ImportResultDto File imported successfully
2793
+ * @throws ApiError
2794
+ */
2795
+ public static fileImportControllerImportFile(
2796
+ data: FileImportControllerImportFileData
2797
+ ): CancelablePromise<FileImportControllerImportFileResponse> {
2798
+ return __request(OpenAPI, {
2799
+ method: 'POST',
2800
+ url: '/api/v1/{region}/bean/import/file',
2801
+ path: {
2802
+ region: data.region
2803
+ },
2804
+ formData: data.formData,
2805
+ mediaType: 'multipart/form-data',
2806
+ errors: {
2807
+ 400: 'Bad request - file-format-unsupported or file-import-failed',
2808
+ 413: 'Payload too large - file exceeds 50MB limit',
2809
+ 429: 'Too many requests - user already has import in progress',
2810
+ 500: 'Internal server error - DATABASE_ERROR'
2811
+ }
2812
+ });
2813
+ }
2814
+
2815
+ /**
2816
+ * Identify file type
2817
+ * Upload a file to check if it can be processed by any registered importer. Does not perform actual import - useful for pre-validation. Uses user-specific importer configuration.
2818
+ * @param data The data for the request.
2819
+ * @param data.region Region code for tenant context
2820
+ * @param data.formData File to identify
2821
+ * @returns IdentifyResultDto File identification result
2822
+ * @throws ApiError
2823
+ */
2824
+ public static fileImportControllerIdentifyFile(
2825
+ data: FileImportControllerIdentifyFileData
2826
+ ): CancelablePromise<FileImportControllerIdentifyFileResponse> {
2827
+ return __request(OpenAPI, {
2828
+ method: 'POST',
2829
+ url: '/api/v1/{region}/bean/import/identify',
2830
+ path: {
2831
+ region: data.region
2832
+ },
2833
+ formData: data.formData,
2834
+ mediaType: 'multipart/form-data',
2835
+ errors: {
2836
+ 400: 'Bad request - No file uploaded'
2837
+ }
2838
+ });
2839
+ }
2840
+
2841
+ /**
2842
+ * Import a Beancount file in community format
2843
+ * Upload a .beancount file to import. The system parses community-format paths, converts to internal format using category metadata, auto-creates accounts, and imports transactions with deduplication. Maximum file size: 50MB. Only 1 import per user at a time.
2844
+ * @param data The data for the request.
2845
+ * @param data.region Region code for tenant context
2846
+ * @param data.formData Beancount file to import
2847
+ * @returns unknown Beancount file imported successfully
2848
+ * @throws ApiError
2849
+ */
2850
+ public static fileImportControllerImportBeancount(
2851
+ data: FileImportControllerImportBeancountData
2852
+ ): CancelablePromise<FileImportControllerImportBeancountResponse> {
2853
+ return __request(OpenAPI, {
2854
+ method: 'POST',
2855
+ url: '/api/v1/{region}/bean/import/beancount',
2856
+ path: {
2857
+ region: data.region
2858
+ },
2859
+ formData: data.formData,
2860
+ mediaType: 'multipart/form-data',
2861
+ errors: {
2862
+ 400: 'Bad request - invalid file or no file uploaded'
2863
+ }
2864
+ });
2865
+ }
2866
+
2867
+ /**
2868
+ * Get importer configuration
2869
+ * Returns the current configuration for the specified importer. Creates default configuration if none exists.
2870
+ * @param data The data for the request.
2871
+ * @param data.importerId Importer identifier. Supported importers: alipay, alipay-web, wechat, boc, boc-credit, ccb, cmb, cmbc, cmbc-credit, icbc, icbc-credit, hsbc-hk-credit, hsbc-hk-debit
2872
+ * @param data.region Region code for tenant context
2873
+ * @returns ImporterConfigDto Configuration retrieved successfully
2874
+ * @throws ApiError
2875
+ */
2876
+ public static importerConfigControllerGetConfig(
2877
+ data: ImporterConfigControllerGetConfigData
2878
+ ): CancelablePromise<ImporterConfigControllerGetConfigResponse> {
2879
+ return __request(OpenAPI, {
2880
+ method: 'GET',
2881
+ url: '/api/v1/{region}/bean/import/config/{importerId}',
2882
+ path: {
2883
+ importerId: data.importerId,
2884
+ region: data.region
2885
+ },
2886
+ errors: {
2887
+ 400: 'Invalid input - Unsupported importer',
2888
+ 401: 'Unauthorized - Authentication required'
2889
+ }
2890
+ });
2891
+ }
2892
+
2893
+ /**
2894
+ * Update importer configuration
2895
+ * Updates the configuration for the specified importer. Partial updates are supported.
2896
+ * @param data The data for the request.
2897
+ * @param data.importerId Importer identifier. Supported importers: alipay, alipay-web, wechat, boc, boc-credit, ccb, cmb, cmbc, cmbc-credit, icbc, icbc-credit, hsbc-hk-credit, hsbc-hk-debit
2898
+ * @param data.region Region code for tenant context
2899
+ * @param data.requestBody Partial configuration update. Only provided fields will be updated.
2900
+ * @returns ImporterConfigDto Configuration updated successfully
2901
+ * @throws ApiError
2902
+ */
2903
+ public static importerConfigControllerUpdateConfig(
2904
+ data: ImporterConfigControllerUpdateConfigData
2905
+ ): CancelablePromise<ImporterConfigControllerUpdateConfigResponse> {
2906
+ return __request(OpenAPI, {
2907
+ method: 'PUT',
2908
+ url: '/api/v1/{region}/bean/import/config/{importerId}',
2909
+ path: {
2910
+ importerId: data.importerId,
2911
+ region: data.region
2912
+ },
2913
+ body: data.requestBody,
2914
+ mediaType: 'application/json',
2915
+ errors: {
2916
+ 400: 'Invalid input - Validation failed',
2917
+ 404: 'Configuration not found'
2918
+ }
2919
+ });
2920
+ }
2921
+
2922
+ /**
2923
+ * Reset configuration to default
2924
+ * Resets the configuration for the specified importer to default values. This operation overwrites all existing configuration.
2925
+ * @param data The data for the request.
2926
+ * @param data.importerId Importer identifier. Supported importers: alipay, alipay-web, wechat, boc, boc-credit, ccb, cmb, cmbc, cmbc-credit, icbc, icbc-credit, hsbc-hk-credit, hsbc-hk-debit
2927
+ * @param data.region Region code for tenant context
2928
+ * @returns ImporterConfigDto Configuration reset successfully
2929
+ * @throws ApiError
2930
+ */
2931
+ public static importerConfigControllerResetConfig(
2932
+ data: ImporterConfigControllerResetConfigData
2933
+ ): CancelablePromise<ImporterConfigControllerResetConfigResponse> {
2934
+ return __request(OpenAPI, {
2935
+ method: 'POST',
2936
+ url: '/api/v1/{region}/bean/import/config/{importerId}/reset',
2937
+ path: {
2938
+ importerId: data.importerId,
2939
+ region: data.region
2940
+ },
2941
+ errors: {
2942
+ 400: 'Invalid input - Unsupported importer'
2943
+ }
2944
+ });
2945
+ }
2946
+ }
2947
+
2948
+ export class BeanPlatformsService {
2949
+ /**
2950
+ * Get all platforms with statistics
2951
+ * @returns unknown List of platforms with binding and account counts
2952
+ * @throws ApiError
2953
+ */
2954
+ public static platformControllerFindAll(): CancelablePromise<PlatformControllerFindAllResponse> {
2955
+ return __request(OpenAPI, {
2956
+ method: 'GET',
2957
+ url: '/api/v1/bean/platforms'
2958
+ });
2959
+ }
2960
+
2961
+ /**
2962
+ * Create a new platform
2963
+ * @param data The data for the request.
2964
+ * @param data.requestBody
2965
+ * @returns unknown Platform created successfully
2966
+ * @throws ApiError
2967
+ */
2968
+ public static platformControllerCreate(
2969
+ data: PlatformControllerCreateData
2970
+ ): CancelablePromise<PlatformControllerCreateResponse> {
2971
+ return __request(OpenAPI, {
2972
+ method: 'POST',
2973
+ url: '/api/v1/bean/platforms',
2974
+ body: data.requestBody,
2975
+ mediaType: 'application/json',
2976
+ errors: {
2977
+ 409: 'Platform already exists'
2978
+ }
2979
+ });
2980
+ }
2981
+
2982
+ /**
2983
+ * Get platform list for current user
2984
+ * @returns unknown List of platforms with user binding status
2985
+ * @throws ApiError
2986
+ */
2987
+ public static platformControllerGetPlatformList(): CancelablePromise<PlatformControllerGetPlatformListResponse> {
2988
+ return __request(OpenAPI, {
2989
+ method: 'GET',
2990
+ url: '/api/v1/bean/platforms/list'
2991
+ });
2992
+ }
2993
+
2994
+ /**
2995
+ * Match platforms by name or alias
2996
+ * @param data The data for the request.
2997
+ * @param data.q Search query — Chinese name, English name, or abbreviation
2998
+ * @param data.region Region code for category override lookup
2999
+ * @returns unknown List of matching platforms with suggested segment names
3000
+ * @throws ApiError
3001
+ */
3002
+ public static platformControllerMatchPlatforms(
3003
+ data: PlatformControllerMatchPlatformsData
3004
+ ): CancelablePromise<PlatformControllerMatchPlatformsResponse> {
3005
+ return __request(OpenAPI, {
3006
+ method: 'GET',
3007
+ url: '/api/v1/bean/platforms/match',
3008
+ query: {
3009
+ q: data.q,
3010
+ region: data.region
3011
+ }
3012
+ });
3013
+ }
3014
+
3015
+ /**
3016
+ * Update a platform
3017
+ * @param data The data for the request.
3018
+ * @param data.id Platform ID
3019
+ * @param data.requestBody
3020
+ * @returns unknown Platform updated successfully
3021
+ * @throws ApiError
3022
+ */
3023
+ public static platformControllerUpdate(
3024
+ data: PlatformControllerUpdateData
3025
+ ): CancelablePromise<PlatformControllerUpdateResponse> {
3026
+ return __request(OpenAPI, {
3027
+ method: 'PUT',
3028
+ url: '/api/v1/bean/platforms/{id}',
3029
+ path: {
3030
+ id: data.id
3031
+ },
3032
+ body: data.requestBody,
3033
+ mediaType: 'application/json',
3034
+ errors: {
3035
+ 404: 'Platform not found'
3036
+ }
3037
+ });
3038
+ }
3039
+
3040
+ /**
3041
+ * Delete a platform
3042
+ * @param data The data for the request.
3043
+ * @param data.id Platform ID
3044
+ * @returns void Platform deleted successfully
3045
+ * @throws ApiError
3046
+ */
3047
+ public static platformControllerDelete(
3048
+ data: PlatformControllerDeleteData
3049
+ ): CancelablePromise<PlatformControllerDeleteResponse> {
3050
+ return __request(OpenAPI, {
3051
+ method: 'DELETE',
3052
+ url: '/api/v1/bean/platforms/{id}',
3053
+ path: {
3054
+ id: data.id
3055
+ },
3056
+ errors: {
3057
+ 404: 'Platform not found'
3058
+ }
3059
+ });
3060
+ }
3061
+ }
3062
+
3063
+ export class ProviderSyncService {
3064
+ /**
3065
+ * Sync transactions from financial data provider
3066
+ *
2114
3067
  * Accepts raw transactions from external financial data providers, transforms them to Beancount format, and processes them through the ingestion pipeline.
2115
3068
  *
2116
3069
  * **Supported Providers:**
@@ -2133,7 +3086,7 @@ export class ProviderSyncService {
2133
3086
  *
2134
3087
  * @param data The data for the request.
2135
3088
  * @param data.providerName Provider name
2136
- * @param data.region Region code
3089
+ * @param data.region Region code for tenant context
2137
3090
  * @param data.requestBody
2138
3091
  * @returns ProviderSyncResponseDto Sync completed successfully
2139
3092
  * @throws ApiError
@@ -2161,13 +3114,20 @@ export class ProviderSyncService {
2161
3114
  /**
2162
3115
  * Get supported providers
2163
3116
  * Returns a list of all providers supported by the sync endpoint.
3117
+ * @param data The data for the request.
3118
+ * @param data.region Region code for tenant context
2164
3119
  * @returns SupportedProvidersResponseDto List of supported providers
2165
3120
  * @throws ApiError
2166
3121
  */
2167
- public static providerSyncControllerGetSupportedProviders(): CancelablePromise<ProviderSyncControllerGetSupportedProvidersResponse> {
3122
+ public static providerSyncControllerGetSupportedProviders(
3123
+ data: ProviderSyncControllerGetSupportedProvidersData
3124
+ ): CancelablePromise<ProviderSyncControllerGetSupportedProvidersResponse> {
2168
3125
  return __request(OpenAPI, {
2169
3126
  method: 'GET',
2170
3127
  url: '/api/v1/{region}/bean/import/provider/supported',
3128
+ path: {
3129
+ region: data.region
3130
+ },
2171
3131
  errors: {
2172
3132
  401: 'Missing or invalid authentication'
2173
3133
  }
@@ -2179,6 +3139,7 @@ export class ProviderSyncService {
2179
3139
  * Returns whether a specific provider is supported.
2180
3140
  * @param data The data for the request.
2181
3141
  * @param data.providerName Provider name to check
3142
+ * @param data.region Region code for tenant context
2182
3143
  * @returns unknown Provider support status
2183
3144
  * @throws ApiError
2184
3145
  */
@@ -2189,7 +3150,8 @@ export class ProviderSyncService {
2189
3150
  method: 'GET',
2190
3151
  url: '/api/v1/{region}/bean/import/provider/{providerName}/supported',
2191
3152
  path: {
2192
- providerName: data.providerName
3153
+ providerName: data.providerName,
3154
+ region: data.region
2193
3155
  },
2194
3156
  errors: {
2195
3157
  401: 'Missing or invalid authentication'
@@ -2202,6 +3164,7 @@ export class ImportTelemetryService {
2202
3164
  /**
2203
3165
  * Receive anonymous parser failure telemetry
2204
3166
  * @param data The data for the request.
3167
+ * @param data.region Region code for tenant context
2205
3168
  * @param data.requestBody
2206
3169
  * @returns unknown Telemetry report received
2207
3170
  * @throws ApiError
@@ -2212,6 +3175,9 @@ export class ImportTelemetryService {
2212
3175
  return __request(OpenAPI, {
2213
3176
  method: 'POST',
2214
3177
  url: '/api/v1/{region}/bean/import/parser-telemetry',
3178
+ path: {
3179
+ region: data.region
3180
+ },
2215
3181
  body: data.requestBody,
2216
3182
  mediaType: 'application/json',
2217
3183
  errors: {
@@ -2219,6 +3185,54 @@ export class ImportTelemetryService {
2219
3185
  }
2220
3186
  });
2221
3187
  }
3188
+
3189
+ /**
3190
+ * Receive anonymous zero-hit coverage miss report
3191
+ * @param data The data for the request.
3192
+ * @param data.region Region code for tenant context
3193
+ * @param data.requestBody
3194
+ * @returns unknown Coverage miss report received
3195
+ * @throws ApiError
3196
+ */
3197
+ public static telemetryControllerReportCoverageMiss(
3198
+ data: TelemetryControllerReportCoverageMissData
3199
+ ): CancelablePromise<TelemetryControllerReportCoverageMissResponse> {
3200
+ return __request(OpenAPI, {
3201
+ method: 'POST',
3202
+ url: '/api/v1/{region}/bean/import/parser-coverage-miss',
3203
+ path: {
3204
+ region: data.region
3205
+ },
3206
+ body: data.requestBody,
3207
+ mediaType: 'application/json',
3208
+ errors: {
3209
+ 401: 'Unauthorized'
3210
+ }
3211
+ });
3212
+ }
3213
+
3214
+ /**
3215
+ * Coverage metrics (uncovered format aggregation)
3216
+ * @param data The data for the request.
3217
+ * @param data.region Region code for tenant context
3218
+ * @param data.topN Top-N uncovered formats (default 10)
3219
+ * @returns unknown Coverage metrics
3220
+ * @throws ApiError
3221
+ */
3222
+ public static telemetryControllerGetCoverageMetrics(
3223
+ data: TelemetryControllerGetCoverageMetricsData
3224
+ ): CancelablePromise<TelemetryControllerGetCoverageMetricsResponse> {
3225
+ return __request(OpenAPI, {
3226
+ method: 'GET',
3227
+ url: '/api/v1/{region}/bean/import/parser-coverage-metrics',
3228
+ path: {
3229
+ region: data.region
3230
+ },
3231
+ query: {
3232
+ topN: data.topN
3233
+ }
3234
+ });
3235
+ }
2222
3236
  }
2223
3237
 
2224
3238
  export class BeanNlpService {
@@ -2226,6 +3240,7 @@ export class BeanNlpService {
2226
3240
  * Process natural language input
2227
3241
  * Parse natural language text (Chinese/English) describing a transaction. Supports multi-turn dialogue for collecting missing information. When confidence < 0.75, returns "confirm" action requiring user verification. User can reply with confirmation words (确认/yes/ok) or provide corrections. Examples: "yesterday Starbucks spent 35 yuan", "today lunch 28 yuan", "spent $50 at Walmart"
2228
3242
  * @param data The data for the request.
3243
+ * @param data.region Region code for tenant context
2229
3244
  * @param data.requestBody Natural language transaction input with optional session ID
2230
3245
  * @returns NlpResponseDto NLP processing result - either created transaction or asking for more info
2231
3246
  * @throws ApiError
@@ -2236,6 +3251,9 @@ export class BeanNlpService {
2236
3251
  return __request(OpenAPI, {
2237
3252
  method: 'POST',
2238
3253
  url: '/api/v1/{region}/bean/nlp/process',
3254
+ path: {
3255
+ region: data.region
3256
+ },
2239
3257
  body: data.requestBody,
2240
3258
  mediaType: 'application/json',
2241
3259
  errors: {
@@ -2249,16 +3267,20 @@ export class BeanNlpService {
2249
3267
  * Clear dialogue session
2250
3268
  * Clear the current NLP dialogue session. Use this to cancel an ongoing multi-turn dialogue.
2251
3269
  * @param data The data for the request.
3270
+ * @param data.region Region code for tenant context
2252
3271
  * @param data.sessionId Specific session ID to clear (defaults to user session)
2253
3272
  * @returns void Session cleared successfully
2254
3273
  * @throws ApiError
2255
3274
  */
2256
3275
  public static nlpControllerClearSession(
2257
- data: NlpControllerClearSessionData = {}
3276
+ data: NlpControllerClearSessionData
2258
3277
  ): CancelablePromise<NlpControllerClearSessionResponse> {
2259
3278
  return __request(OpenAPI, {
2260
3279
  method: 'DELETE',
2261
3280
  url: '/api/v1/{region}/bean/nlp/session',
3281
+ path: {
3282
+ region: data.region
3283
+ },
2262
3284
  query: {
2263
3285
  sessionId: data.sessionId
2264
3286
  },
@@ -2272,16 +3294,20 @@ export class BeanNlpService {
2272
3294
  * Get current session state
2273
3295
  * Get the current NLP dialogue session state. Useful for debugging and displaying session context in UI.
2274
3296
  * @param data The data for the request.
3297
+ * @param data.region Region code for tenant context
2275
3298
  * @param data.sessionId Specific session ID to get (defaults to user session)
2276
3299
  * @returns unknown Current session state (or null if no active session)
2277
3300
  * @throws ApiError
2278
3301
  */
2279
3302
  public static nlpControllerGetSession(
2280
- data: NlpControllerGetSessionData = {}
3303
+ data: NlpControllerGetSessionData
2281
3304
  ): CancelablePromise<NlpControllerGetSessionResponse> {
2282
3305
  return __request(OpenAPI, {
2283
3306
  method: 'GET',
2284
3307
  url: '/api/v1/{region}/bean/nlp/session',
3308
+ path: {
3309
+ region: data.region
3310
+ },
2285
3311
  query: {
2286
3312
  sessionId: data.sessionId
2287
3313
  },
@@ -2292,250 +3318,323 @@ export class BeanNlpService {
2292
3318
  }
2293
3319
  }
2294
3320
 
2295
- export class BeanPlatformsService {
3321
+ export class DashboardService {
2296
3322
  /**
2297
- * Get all platforms with statistics
2298
- * @returns unknown List of platforms with binding and account counts
3323
+ * Get net worth overview
3324
+ * Returns total net worth with breakdown of assets and liabilities
3325
+ * @param data The data for the request.
3326
+ * @param data.region Region code for tenant context
3327
+ * @param data.date Date for balance calculation (ISO 8601 format)
3328
+ * @returns NetWorthResponseDto Net worth retrieved successfully
2299
3329
  * @throws ApiError
2300
3330
  */
2301
- public static platformControllerFindAll(): CancelablePromise<PlatformControllerFindAllResponse> {
3331
+ public static dashboardControllerGetNetWorth(
3332
+ data: DashboardControllerGetNetWorthData
3333
+ ): CancelablePromise<DashboardControllerGetNetWorthResponse> {
2302
3334
  return __request(OpenAPI, {
2303
3335
  method: 'GET',
2304
- url: '/api/v1/bean/platforms'
2305
- });
2306
- }
2307
-
2308
- /**
2309
- * @returns unknown
2310
- * @throws ApiError
2311
- */
2312
- public static platformController(): CancelablePromise<PlatformControllerResponse> {
2313
- return __request(OpenAPI, {
2314
- method: 'POST',
2315
- url: '/api/v1/bean/platforms'
3336
+ url: '/api/v1/{region}/dashboard/net-worth',
3337
+ path: {
3338
+ region: data.region
3339
+ },
3340
+ query: {
3341
+ date: data.date
3342
+ },
3343
+ errors: {
3344
+ 401: 'User not authenticated'
3345
+ }
2316
3346
  });
2317
3347
  }
2318
3348
 
2319
3349
  /**
2320
- * Get platform list for current user
2321
- * @returns unknown List of platforms with user binding status
3350
+ * Get accounts grouped by platform
3351
+ * Returns accounts with balances grouped by financial platform
3352
+ * @param data The data for the request.
3353
+ * @param data.region Region code for tenant context
3354
+ * @param data.groupBy Grouping strategy
3355
+ * @param data.date Date for balance calculation (ISO 8601 format)
3356
+ * @param data.accountId Scope to a single account (only valid with groupBy=holdingAssetClass, ADR-0105 §6)
3357
+ * @returns unknown Accounts retrieved successfully. Response type depends on groupBy parameter.
2322
3358
  * @throws ApiError
2323
3359
  */
2324
- public static platformControllerGetPlatformList(): CancelablePromise<PlatformControllerGetPlatformListResponse> {
3360
+ public static dashboardControllerGetAccounts(
3361
+ data: DashboardControllerGetAccountsData
3362
+ ): CancelablePromise<DashboardControllerGetAccountsResponse> {
2325
3363
  return __request(OpenAPI, {
2326
3364
  method: 'GET',
2327
- url: '/api/v1/bean/platforms/list'
3365
+ url: '/api/v1/{region}/dashboard/accounts',
3366
+ path: {
3367
+ region: data.region
3368
+ },
3369
+ query: {
3370
+ groupBy: data.groupBy,
3371
+ date: data.date,
3372
+ accountId: data.accountId
3373
+ },
3374
+ errors: {
3375
+ 401: 'User not authenticated'
3376
+ }
2328
3377
  });
2329
3378
  }
2330
3379
 
2331
3380
  /**
2332
- * @returns unknown
3381
+ * Get cash flow summary
3382
+ * Returns income, expenses, and savings for a monthly period
3383
+ * @param data The data for the request.
3384
+ * @param data.period Period in YYYY-MM format
3385
+ * @param data.region Region code for tenant context
3386
+ * @returns CashFlowResponseDto Cash flow retrieved successfully
2333
3387
  * @throws ApiError
2334
3388
  */
2335
- public static platformController1(): CancelablePromise<PlatformController1Response> {
3389
+ public static dashboardControllerGetCashFlow(
3390
+ data: DashboardControllerGetCashFlowData
3391
+ ): CancelablePromise<DashboardControllerGetCashFlowResponse> {
2336
3392
  return __request(OpenAPI, {
2337
- method: 'PUT',
2338
- url: '/api/v1/bean/platforms/{id}'
3393
+ method: 'GET',
3394
+ url: '/api/v1/{region}/dashboard/cash-flow',
3395
+ path: {
3396
+ region: data.region
3397
+ },
3398
+ query: {
3399
+ period: data.period
3400
+ },
3401
+ errors: {
3402
+ 400: 'Invalid period format',
3403
+ 401: 'User not authenticated'
3404
+ }
2339
3405
  });
2340
3406
  }
2341
3407
 
2342
3408
  /**
2343
- * @returns void
3409
+ * Get expenses/income grouped by functional category
3410
+ * Returns amounts pre-aggregated by functional category (account-path Group segment) with server-side multi-currency conversion. flow=expense (default) aggregates ^Expenses: accounts; flow=income aggregates ^Income: accounts (issue #518)
3411
+ * @param data The data for the request.
3412
+ * @param data.region Region code for tenant context
3413
+ * @param data.groupBy Grouping strategy
3414
+ * @param data.period Time window (1m = current calendar month)
3415
+ * @param data.flow Account root to aggregate (expense → ^Expenses:, income → ^Income:)
3416
+ * @returns ExpensesByCategoryResponseDto Expenses retrieved successfully
2344
3417
  * @throws ApiError
2345
3418
  */
2346
- public static platformController2(): CancelablePromise<PlatformController2Response> {
3419
+ public static dashboardControllerGetExpenses(
3420
+ data: DashboardControllerGetExpensesData
3421
+ ): CancelablePromise<DashboardControllerGetExpensesResponse> {
2347
3422
  return __request(OpenAPI, {
2348
- method: 'DELETE',
2349
- url: '/api/v1/bean/platforms/{id}'
3423
+ method: 'GET',
3424
+ url: '/api/v1/{region}/dashboard/expenses',
3425
+ path: {
3426
+ region: data.region
3427
+ },
3428
+ query: {
3429
+ groupBy: data.groupBy,
3430
+ period: data.period,
3431
+ flow: data.flow
3432
+ },
3433
+ errors: {
3434
+ 400: 'Invalid groupBy or period',
3435
+ 401: 'User not authenticated'
3436
+ }
2350
3437
  });
2351
3438
  }
2352
3439
  }
2353
3440
 
2354
- export class SymbolsService {
3441
+ export class InvestmentService {
2355
3442
  /**
2356
- * Search for symbols
2357
- * Search symbols by query with optional filters for asset class, area, and indices
3443
+ * Get per-holding unrealized + realized P&L
3444
+ * Average-cost unrealized P&L per account × commodity, plus cumulative realized P&L on sold lots (method = FIFO | average, default average).
2358
3445
  * @param data The data for the request.
2359
- * @param data.includeIndices Include index symbols in results
2360
- * @param data.assetSubClass Asset sub-class filter
2361
- * @param data.assetClass Asset class filter
2362
- * @param data.area Geographic area filter (e.g., CN, US)
2363
- * @param data.query Search query string
2364
- * @returns unknown Symbols found successfully
3446
+ * @param data.region Region code for tenant context
3447
+ * @param data.asOf As-of date (ISO 8601), defaults to today
3448
+ * @param data.accountId Scope to a single account
3449
+ * @param data.method Realized-P&L lot-matching method (default average). Does not affect the average-cost unrealized basis.
3450
+ * @returns HoldingPnlResponseDto Holding P&L retrieved successfully
2365
3451
  * @throws ApiError
2366
3452
  */
2367
- public static symbolControllerLookupSymbol(
2368
- data: SymbolControllerLookupSymbolData = {}
2369
- ): CancelablePromise<SymbolControllerLookupSymbolResponse> {
3453
+ public static holdingPnlControllerGetHoldingPnl(
3454
+ data: HoldingPnlControllerGetHoldingPnlData
3455
+ ): CancelablePromise<HoldingPnlControllerGetHoldingPnlResponse> {
2370
3456
  return __request(OpenAPI, {
2371
3457
  method: 'GET',
2372
- url: '/api/v1/market/symbols/lookup',
3458
+ url: '/api/v1/{region}/investment/holdings/pnl',
3459
+ path: {
3460
+ region: data.region
3461
+ },
2373
3462
  query: {
2374
- includeIndices: data.includeIndices,
2375
- assetSubClass: data.assetSubClass,
2376
- assetClass: data.assetClass,
2377
- area: data.area,
2378
- query: data.query
3463
+ asOf: data.asOf,
3464
+ accountId: data.accountId,
3465
+ method: data.method
2379
3466
  },
2380
3467
  errors: {
2381
- 400: 'Invalid query parameters'
3468
+ 400: 'Invalid asOf format/value/future date, invalid accountId format, or unsupported method',
3469
+ 401: 'User not authenticated'
2382
3470
  }
2383
3471
  });
2384
3472
  }
3473
+ }
2385
3474
 
3475
+ export class BeanPricesService {
2386
3476
  /**
2387
- * Get symbol data
2388
- * Retrieve detailed symbol information including optional historical data
3477
+ * Create a new price
3478
+ * Creates a new price entry for the authenticated user
2389
3479
  * @param data The data for the request.
2390
- * @param data.dataSource Data source provider
2391
- * @param data.symbol Symbol identifier (e.g., ticker code)
2392
- * @param data.includeHistoricalData Include historical price data (0 or 1)
2393
- * @returns unknown Symbol data retrieved successfully
3480
+ * @param data.region Region code for tenant context
3481
+ * @param data.requestBody
3482
+ * @returns PriceResponseDto Price created successfully
2394
3483
  * @throws ApiError
2395
3484
  */
2396
- public static symbolControllerGetSymbolData(
2397
- data: SymbolControllerGetSymbolDataData
2398
- ): CancelablePromise<SymbolControllerGetSymbolDataResponse> {
3485
+ public static priceControllerCreate(
3486
+ data: PriceControllerCreateData
3487
+ ): CancelablePromise<PriceControllerCreateResponse> {
2399
3488
  return __request(OpenAPI, {
2400
- method: 'GET',
2401
- url: '/api/v1/market/symbols/{dataSource}/{symbol}',
3489
+ method: 'POST',
3490
+ url: '/api/v1/{region}/bean/prices',
2402
3491
  path: {
2403
- dataSource: data.dataSource,
2404
- symbol: data.symbol
2405
- },
2406
- query: {
2407
- includeHistoricalData: data.includeHistoricalData
3492
+ region: data.region
2408
3493
  },
3494
+ body: data.requestBody,
3495
+ mediaType: 'application/json',
2409
3496
  errors: {
2410
- 400: 'Invalid data source',
2411
- 404: 'Symbol not found'
3497
+ 404: 'Currency or quoteCurrency commodity not found',
3498
+ 409: 'Price already exists for this currency pair and date'
2412
3499
  }
2413
3500
  });
2414
3501
  }
2415
3502
 
2416
3503
  /**
2417
- * Gather symbol data for specific date
2418
- * Retrieve historical symbol data for a specific date
3504
+ * List user prices
3505
+ * Returns all price entries for the authenticated user with optional filtering
2419
3506
  * @param data The data for the request.
2420
- * @param data.dataSource Data source provider
2421
- * @param data.dateString Date in ISO 8601 format (YYYY-MM-DD)
2422
- * @param data.symbol Symbol identifier (e.g., ticker code)
2423
- * @returns unknown Historical data retrieved successfully
3507
+ * @param data.region Region code for tenant context
3508
+ * @param data.currency Filter by currency (e.g., BTC, AAPL, USD)
3509
+ * @param data.quoteCurrency Filter by quote currency (pricing currency, e.g., USD, CNY)
3510
+ * @param data.dateFrom Filter prices from this date (ISO 8601 format)
3511
+ * @param data.dateTo Filter prices to this date (ISO 8601 format)
3512
+ * @param data.search Search term for currency or quoteCurrency (case-insensitive partial match)
3513
+ * @param data.page Page number for pagination (default: 1)
3514
+ * @param data.limit Number of items per page (default: 20, max: 100)
3515
+ * @returns PriceListResponseDto Prices retrieved successfully
2424
3516
  * @throws ApiError
2425
3517
  */
2426
- public static symbolControllerGatherSymbolForDate(
2427
- data: SymbolControllerGatherSymbolForDateData
2428
- ): CancelablePromise<SymbolControllerGatherSymbolForDateResponse> {
3518
+ public static priceControllerFindAll(
3519
+ data: PriceControllerFindAllData
3520
+ ): CancelablePromise<PriceControllerFindAllResponse> {
2429
3521
  return __request(OpenAPI, {
2430
3522
  method: 'GET',
2431
- url: '/api/v1/market/symbols/{dataSource}/{symbol}/{dateString}',
3523
+ url: '/api/v1/{region}/bean/prices',
2432
3524
  path: {
2433
- dataSource: data.dataSource,
2434
- dateString: data.dateString,
2435
- symbol: data.symbol
3525
+ region: data.region
2436
3526
  },
2437
- errors: {
2438
- 400: 'Invalid date format',
2439
- 404: 'Symbol data not found for specified date'
3527
+ query: {
3528
+ currency: data.currency,
3529
+ quoteCurrency: data.quoteCurrency,
3530
+ dateFrom: data.dateFrom,
3531
+ dateTo: data.dateTo,
3532
+ search: data.search,
3533
+ page: data.page,
3534
+ limit: data.limit
2440
3535
  }
2441
3536
  });
2442
3537
  }
2443
3538
 
2444
3539
  /**
2445
- * @returns unknown
2446
- * @throws ApiError
2447
- */
2448
- public static symbolController(): CancelablePromise<SymbolControllerResponse> {
2449
- return __request(OpenAPI, {
2450
- method: 'PUT',
2451
- url: '/api/v1/market/symbols/yahoo/batch-update'
2452
- });
2453
- }
2454
- }
2455
-
2456
- export class DefaultService {
2457
- /**
2458
- * @returns unknown
3540
+ * Get price by ID
3541
+ * Returns a single price entry by its ID
3542
+ * @param data The data for the request.
3543
+ * @param data.id Price ID
3544
+ * @param data.region Region code for tenant context
3545
+ * @returns PriceResponseDto Price retrieved successfully
2459
3546
  * @throws ApiError
2460
3547
  */
2461
- public static cacheControllerFlushCache(): CancelablePromise<CacheControllerFlushCacheResponse> {
3548
+ public static priceControllerFindOne(
3549
+ data: PriceControllerFindOneData
3550
+ ): CancelablePromise<PriceControllerFindOneResponse> {
2462
3551
  return __request(OpenAPI, {
2463
- method: 'POST',
2464
- url: '/api/v1/cache/flush'
3552
+ method: 'GET',
3553
+ url: '/api/v1/{region}/bean/prices/{id}',
3554
+ path: {
3555
+ id: data.id,
3556
+ region: data.region
3557
+ },
3558
+ errors: {
3559
+ 404: 'Price not found'
3560
+ }
2465
3561
  });
2466
3562
  }
2467
- }
2468
3563
 
2469
- export class DashboardService {
2470
3564
  /**
2471
- * Get net worth overview
2472
- * Returns total net worth with breakdown of assets and liabilities
3565
+ * Update a price
3566
+ * Updates an existing price entry
2473
3567
  * @param data The data for the request.
2474
- * @param data.date Date for balance calculation (ISO 8601 format)
2475
- * @returns NetWorthResponseDto Net worth retrieved successfully
3568
+ * @param data.id Price ID
3569
+ * @param data.region Region code for tenant context
3570
+ * @param data.requestBody
3571
+ * @returns PriceResponseDto Price updated successfully
2476
3572
  * @throws ApiError
2477
3573
  */
2478
- public static dashboardControllerGetNetWorth(
2479
- data: DashboardControllerGetNetWorthData = {}
2480
- ): CancelablePromise<DashboardControllerGetNetWorthResponse> {
3574
+ public static priceControllerUpdate(
3575
+ data: PriceControllerUpdateData
3576
+ ): CancelablePromise<PriceControllerUpdateResponse> {
2481
3577
  return __request(OpenAPI, {
2482
- method: 'GET',
2483
- url: '/api/v1/{region}/dashboard/net-worth',
2484
- query: {
2485
- date: data.date
3578
+ method: 'PUT',
3579
+ url: '/api/v1/{region}/bean/prices/{id}',
3580
+ path: {
3581
+ id: data.id,
3582
+ region: data.region
2486
3583
  },
3584
+ body: data.requestBody,
3585
+ mediaType: 'application/json',
2487
3586
  errors: {
2488
- 401: 'User not authenticated'
3587
+ 404: 'Price not found',
3588
+ 409: 'Updated price conflicts with existing price'
2489
3589
  }
2490
3590
  });
2491
3591
  }
2492
3592
 
2493
3593
  /**
2494
- * Get accounts grouped by platform
2495
- * Returns accounts with balances grouped by financial platform
3594
+ * Delete a price
3595
+ * Deletes a price entry (hard delete)
2496
3596
  * @param data The data for the request.
2497
- * @param data.groupBy Grouping strategy
2498
- * @param data.date Date for balance calculation (ISO 8601 format)
2499
- * @returns unknown Accounts retrieved successfully. Response type depends on groupBy parameter.
3597
+ * @param data.id Price ID
3598
+ * @param data.region Region code for tenant context
3599
+ * @returns void Price deleted successfully
2500
3600
  * @throws ApiError
2501
3601
  */
2502
- public static dashboardControllerGetAccounts(
2503
- data: DashboardControllerGetAccountsData = {}
2504
- ): CancelablePromise<DashboardControllerGetAccountsResponse> {
3602
+ public static priceControllerDelete(
3603
+ data: PriceControllerDeleteData
3604
+ ): CancelablePromise<PriceControllerDeleteResponse> {
2505
3605
  return __request(OpenAPI, {
2506
- method: 'GET',
2507
- url: '/api/v1/{region}/dashboard/accounts',
2508
- query: {
2509
- groupBy: data.groupBy,
2510
- date: data.date
3606
+ method: 'DELETE',
3607
+ url: '/api/v1/{region}/bean/prices/{id}',
3608
+ path: {
3609
+ id: data.id,
3610
+ region: data.region
2511
3611
  },
2512
3612
  errors: {
2513
- 401: 'User not authenticated'
3613
+ 404: 'Price not found'
2514
3614
  }
2515
3615
  });
2516
3616
  }
2517
3617
 
2518
3618
  /**
2519
- * Get cash flow summary
2520
- * Returns income, expenses, and savings for a monthly period
3619
+ * Bulk create prices
3620
+ * Creates multiple price entries at once (skips duplicates)
2521
3621
  * @param data The data for the request.
2522
- * @param data.period Period in YYYY-MM format
2523
- * @returns CashFlowResponseDto Cash flow retrieved successfully
3622
+ * @param data.region Region code for tenant context
3623
+ * @param data.requestBody
3624
+ * @returns PriceResponseDto Prices created successfully
2524
3625
  * @throws ApiError
2525
3626
  */
2526
- public static dashboardControllerGetCashFlow(
2527
- data: DashboardControllerGetCashFlowData
2528
- ): CancelablePromise<DashboardControllerGetCashFlowResponse> {
3627
+ public static priceControllerBulkCreate(
3628
+ data: PriceControllerBulkCreateData
3629
+ ): CancelablePromise<PriceControllerBulkCreateResponse> {
2529
3630
  return __request(OpenAPI, {
2530
- method: 'GET',
2531
- url: '/api/v1/{region}/dashboard/cash-flow',
2532
- query: {
2533
- period: data.period
3631
+ method: 'POST',
3632
+ url: '/api/v1/{region}/bean/prices/bulk',
3633
+ path: {
3634
+ region: data.region
2534
3635
  },
2535
- errors: {
2536
- 400: 'Invalid period format',
2537
- 401: 'User not authenticated'
2538
- }
3636
+ body: data.requestBody,
3637
+ mediaType: 'application/json'
2539
3638
  });
2540
3639
  }
2541
3640
  }
@@ -2556,17 +3655,57 @@ export class ReportingService {
2556
3655
  * - `granularity`: Data granularity (day, week, month)
2557
3656
  *
2558
3657
  * @param data The data for the request.
3658
+ * @param data.region Region code for tenant context
2559
3659
  * @param data.period Time period
2560
3660
  * @param data.granularity Data granularity
2561
3661
  * @returns PortfolioTrendsResponseDto Trends retrieved successfully
2562
3662
  * @throws ApiError
2563
3663
  */
2564
3664
  public static reportingControllerGetPortfolioTrends(
2565
- data: ReportingControllerGetPortfolioTrendsData = {}
3665
+ data: ReportingControllerGetPortfolioTrendsData
2566
3666
  ): CancelablePromise<ReportingControllerGetPortfolioTrendsResponse> {
2567
3667
  return __request(OpenAPI, {
2568
3668
  method: 'GET',
2569
3669
  url: '/api/v1/{region}/reporting/portfolio/trends',
3670
+ path: {
3671
+ region: data.region
3672
+ },
3673
+ query: {
3674
+ period: data.period,
3675
+ granularity: data.granularity
3676
+ },
3677
+ errors: {
3678
+ 401: 'User not authenticated'
3679
+ }
3680
+ });
3681
+ }
3682
+
3683
+ /**
3684
+ * Get cash-flow trends
3685
+ *
3686
+ * Monthly income / expense / netSavings over a fixed N-month window
3687
+ * (current month + N−1 prior). Missing months are zero-filled (flow metric).
3688
+ *
3689
+ * **Parameters:**
3690
+ * - `period`: 1m | 3m | 6m | 1y (default 6m)
3691
+ * - `granularity`: accepted for API symmetry; v1 returns month buckets
3692
+ *
3693
+ * @param data The data for the request.
3694
+ * @param data.region Region code for tenant context
3695
+ * @param data.period Time period
3696
+ * @param data.granularity Data granularity (accepted for API symmetry; v1 returns month buckets)
3697
+ * @returns CashFlowTrendsResponseDto Cash-flow trends retrieved successfully
3698
+ * @throws ApiError
3699
+ */
3700
+ public static reportingControllerGetCashFlowTrends(
3701
+ data: ReportingControllerGetCashFlowTrendsData
3702
+ ): CancelablePromise<ReportingControllerGetCashFlowTrendsResponse> {
3703
+ return __request(OpenAPI, {
3704
+ method: 'GET',
3705
+ url: '/api/v1/{region}/reporting/cash-flow/trends',
3706
+ path: {
3707
+ region: data.region
3708
+ },
2570
3709
  query: {
2571
3710
  period: data.period,
2572
3711
  granularity: data.granularity
@@ -2593,6 +3732,7 @@ export class ReportingService {
2593
3732
  * - Initial setup for new users
2594
3733
  *
2595
3734
  * @param data The data for the request.
3735
+ * @param data.region Region code for tenant context
2596
3736
  * @param data.requestBody Optional date (defaults to today)
2597
3737
  * @returns GenerateSnapshotResponse Snapshot generated successfully
2598
3738
  * @throws ApiError
@@ -2603,6 +3743,9 @@ export class ReportingService {
2603
3743
  return __request(OpenAPI, {
2604
3744
  method: 'POST',
2605
3745
  url: '/api/v1/{region}/reporting/snapshots/generate',
3746
+ path: {
3747
+ region: data.region
3748
+ },
2606
3749
  body: data.requestBody,
2607
3750
  mediaType: 'application/json',
2608
3751
  errors: {
@@ -2628,6 +3771,7 @@ export class ReportingService {
2628
3771
  * - Existing snapshots are skipped (not regenerated)
2629
3772
  *
2630
3773
  * @param data The data for the request.
3774
+ * @param data.region Region code for tenant context
2631
3775
  * @param data.requestBody
2632
3776
  * @returns BackfillSnapshotsResponse Backfill completed successfully
2633
3777
  * @throws ApiError
@@ -2638,6 +3782,9 @@ export class ReportingService {
2638
3782
  return __request(OpenAPI, {
2639
3783
  method: 'POST',
2640
3784
  url: '/api/v1/{region}/reporting/snapshots/backfill',
3785
+ path: {
3786
+ region: data.region
3787
+ },
2641
3788
  body: data.requestBody,
2642
3789
  mediaType: 'application/json',
2643
3790
  errors: {
@@ -2651,13 +3798,18 @@ export class ReportingService {
2651
3798
 
2652
3799
  export class ApiKeysService {
2653
3800
  /**
2654
- * @returns unknown
3801
+ * Create API key
3802
+ * Generates a new API key for the authenticated user
3803
+ * @returns unknown API key created successfully
2655
3804
  * @throws ApiError
2656
3805
  */
2657
- public static apiKeysController(): CancelablePromise<ApiKeysControllerResponse> {
3806
+ public static apiKeysControllerCreateApiKey(): CancelablePromise<ApiKeysControllerCreateApiKeyResponse> {
2658
3807
  return __request(OpenAPI, {
2659
3808
  method: 'POST',
2660
- url: '/api/v1/auth/api-keys'
3809
+ url: '/api/v1/auth/api-keys',
3810
+ errors: {
3811
+ 403: 'Insufficient permissions to create API key'
3812
+ }
2661
3813
  });
2662
3814
  }
2663
3815
  }
@@ -2685,6 +3837,19 @@ export class AuthService {
2685
3837
  }
2686
3838
  }
2687
3839
 
3840
+ export class DefaultService {
3841
+ /**
3842
+ * @returns unknown
3843
+ * @throws ApiError
3844
+ */
3845
+ public static cacheControllerFlushCache(): CancelablePromise<CacheControllerFlushCacheResponse> {
3846
+ return __request(OpenAPI, {
3847
+ method: 'POST',
3848
+ url: '/api/v1/cache/flush'
3849
+ });
3850
+ }
3851
+ }
3852
+
2688
3853
  export class ExchangeRateService {
2689
3854
  /**
2690
3855
  * Get exchange rate for currency pair
@@ -2743,6 +3908,21 @@ export class HealthService {
2743
3908
  });
2744
3909
  }
2745
3910
 
3911
+ /**
3912
+ * Check OpenBB schema status
3913
+ * @returns unknown OpenBB status
3914
+ * @throws ApiError
3915
+ */
3916
+ public static healthControllerCheckOpenBb(): CancelablePromise<HealthControllerCheckOpenBbResponse> {
3917
+ return __request(OpenAPI, {
3918
+ method: 'GET',
3919
+ url: '/api/v1/health/openbb',
3920
+ errors: {
3921
+ 503: 'OpenBB unavailable'
3922
+ }
3923
+ });
3924
+ }
3925
+
2746
3926
  /**
2747
3927
  * Check Redis connection health
2748
3928
  * @returns unknown Redis is healthy
@@ -2811,69 +3991,6 @@ export class HealthService {
2811
3991
  }
2812
3992
  });
2813
3993
  }
2814
-
2815
- /**
2816
- * Check health of a specific data enhancer
2817
- * @param data The data for the request.
2818
- * @param data.name Data enhancer name
2819
- * @returns unknown Data enhancer is healthy
2820
- * @throws ApiError
2821
- */
2822
- public static healthControllerGetHealthOfDataEnhancer(
2823
- data: HealthControllerGetHealthOfDataEnhancerData
2824
- ): CancelablePromise<HealthControllerGetHealthOfDataEnhancerResponse> {
2825
- return __request(OpenAPI, {
2826
- method: 'GET',
2827
- url: '/api/v1/health/data-enhancer/{name}',
2828
- path: {
2829
- name: data.name
2830
- },
2831
- errors: {
2832
- 401: 'Unauthorized',
2833
- 503: 'Data enhancer unavailable'
2834
- }
2835
- });
2836
- }
2837
-
2838
- /**
2839
- * Check health of all data providers
2840
- * @returns unknown Data providers health status
2841
- * @throws ApiError
2842
- */
2843
- public static healthControllerCheckDataProviders(): CancelablePromise<HealthControllerCheckDataProvidersResponse> {
2844
- return __request(OpenAPI, {
2845
- method: 'GET',
2846
- url: '/api/v1/health/data-providers',
2847
- errors: {
2848
- 401: 'Unauthorized',
2849
- 503: 'Data providers check failed'
2850
- }
2851
- });
2852
- }
2853
-
2854
- /**
2855
- * Check health of a specific data provider
2856
- * @param data The data for the request.
2857
- * @param data.dataSource Data source identifier
2858
- * @returns unknown Data provider is healthy
2859
- * @throws ApiError
2860
- */
2861
- public static healthControllerGetHealthOfDataProvider(
2862
- data: HealthControllerGetHealthOfDataProviderData
2863
- ): CancelablePromise<HealthControllerGetHealthOfDataProviderResponse> {
2864
- return __request(OpenAPI, {
2865
- method: 'GET',
2866
- url: '/api/v1/health/data-provider/{dataSource}',
2867
- path: {
2868
- dataSource: data.dataSource
2869
- },
2870
- errors: {
2871
- 400: 'Invalid data source',
2872
- 401: 'Unauthorized',
2873
- 503: 'Data provider unavailable'
2874
- }
2875
- });
2876
- }
2877
3994
  }
2878
3995
 
2879
3996
  export class InfoService {
@@ -2889,93 +4006,3 @@ export class InfoService {
2889
4006
  });
2890
4007
  }
2891
4008
  }
2892
-
2893
- export class LogosService {
2894
- /**
2895
- * Get asset logo by data source and symbol
2896
- * @param data The data for the request.
2897
- * @param data.dataSource Data source identifier (e.g., YAHOO, COINGECKO)
2898
- * @param data.symbol Asset symbol (e.g., AAPL, BTC)
2899
- * @returns unknown Logo image stream (favicon)
2900
- * @throws ApiError
2901
- */
2902
- public static logoControllerGetLogoByDataSourceAndSymbol(
2903
- data: LogoControllerGetLogoByDataSourceAndSymbolData
2904
- ): CancelablePromise<LogoControllerGetLogoByDataSourceAndSymbolResponse> {
2905
- return __request(OpenAPI, {
2906
- method: 'GET',
2907
- url: '/api/v1/market/logos/{dataSource}/{symbol}',
2908
- path: {
2909
- dataSource: data.dataSource,
2910
- symbol: data.symbol
2911
- },
2912
- errors: {
2913
- 401: 'Unauthorized',
2914
- 404: 'Logo not found for the specified asset',
2915
- 503: 'Service unavailable'
2916
- }
2917
- });
2918
- }
2919
-
2920
- /**
2921
- * Get website favicon by URL
2922
- * @param data The data for the request.
2923
- * @param data.url Website URL to fetch favicon from
2924
- * @returns unknown Logo image stream (favicon)
2925
- * @throws ApiError
2926
- */
2927
- public static logoControllerGetLogoByUrl(
2928
- data: LogoControllerGetLogoByUrlData
2929
- ): CancelablePromise<LogoControllerGetLogoByUrlResponse> {
2930
- return __request(OpenAPI, {
2931
- method: 'GET',
2932
- url: '/api/v1/market/logos',
2933
- query: {
2934
- url: data.url
2935
- },
2936
- errors: {
2937
- 401: 'Unauthorized',
2938
- 503: 'Service unavailable'
2939
- }
2940
- });
2941
- }
2942
- }
2943
-
2944
- export class MarketDataService {
2945
- /**
2946
- * Get market data by symbol
2947
- * Retrieves market data and asset profile for a given symbol and data source
2948
- * @param data The data for the request.
2949
- * @param data.dataSource Data source provider
2950
- * @param data.symbol Symbol code
2951
- * @returns unknown Market data retrieved successfully
2952
- * @throws ApiError
2953
- */
2954
- public static marketDataControllerGetMarketDataBySymbol(
2955
- data: MarketDataControllerGetMarketDataBySymbolData
2956
- ): CancelablePromise<MarketDataControllerGetMarketDataBySymbolResponse> {
2957
- return __request(OpenAPI, {
2958
- method: 'GET',
2959
- url: '/api/v1/market-data/{dataSource}/{symbol}',
2960
- path: {
2961
- dataSource: data.dataSource,
2962
- symbol: data.symbol
2963
- },
2964
- errors: {
2965
- 403: 'Insufficient permissions to read market data',
2966
- 404: 'Market data not found'
2967
- }
2968
- });
2969
- }
2970
-
2971
- /**
2972
- * @returns unknown
2973
- * @throws ApiError
2974
- */
2975
- public static marketDataController(): CancelablePromise<MarketDataControllerResponse> {
2976
- return __request(OpenAPI, {
2977
- method: 'POST',
2978
- url: '/api/v1/market-data/{dataSource}/{symbol}'
2979
- });
2980
- }
2981
- }