@firela/api-types 0.0.0-canary.5639ea2d → 0.0.0-canary.5fa96f73

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