@firela/api-types 0.0.0-canary.b3b7767b → 0.0.0-canary.b59261c8

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,22 +17,30 @@ import type {
17
17
  AccountControllerCloseResponse,
18
18
  AccountControllerReopenData,
19
19
  AccountControllerReopenResponse,
20
+ AccountControllerAddOpeningBalanceData,
21
+ AccountControllerAddOpeningBalanceResponse,
22
+ AccountStandardsControllerGetTemplatesData,
23
+ AccountStandardsControllerGetTemplatesResponse,
24
+ AccountStandardsControllerGetTemplateMetadataData,
25
+ AccountStandardsControllerGetTemplateMetadataResponse,
26
+ AccountStandardsControllerGetRegionsData,
27
+ AccountStandardsControllerGetRegionsResponse,
20
28
  TransactionControllerCreateData,
21
29
  TransactionControllerCreateResponse,
22
30
  TransactionControllerListData,
23
31
  TransactionControllerListResponse,
24
- TransactionControllerData,
25
- TransactionControllerResponse,
32
+ TransactionControllerCreateBatchData,
33
+ TransactionControllerCreateBatchResponse,
34
+ TransactionControllerCorrectData,
35
+ TransactionControllerCorrectResponse,
36
+ TransactionControllerSuggestTagsData,
37
+ TransactionControllerSuggestTagsResponse,
26
38
  TransactionControllerGetDetailData,
27
39
  TransactionControllerGetDetailResponse,
28
40
  TransactionControllerUpdateData,
29
41
  TransactionControllerUpdateResponse,
30
- TransactionController1Data,
31
- TransactionController1Response,
32
- AccountStandardsControllerGetTemplatesData,
33
- AccountStandardsControllerGetTemplatesResponse,
34
- AccountStandardsControllerGetRegionsData,
35
- AccountStandardsControllerGetRegionsResponse,
42
+ TransactionControllerDeleteData,
43
+ TransactionControllerDeleteResponse,
36
44
  BalanceControllerGetBalanceData,
37
45
  BalanceControllerGetBalanceResponse,
38
46
  BalanceControllerGetMultiCurrencyBalanceData,
@@ -43,14 +51,14 @@ import type {
43
51
  ReviewControllerGetStatsResponse,
44
52
  ReviewControllerFindOneData,
45
53
  ReviewControllerFindOneResponse,
46
- ReviewControllerData,
47
- ReviewControllerResponse,
48
- ReviewController1Data,
49
- ReviewController1Response,
50
- ReviewController2Data,
51
- ReviewController2Response,
52
- PayeeControllerData,
53
- PayeeControllerResponse,
54
+ ReviewControllerResolveData,
55
+ ReviewControllerResolveResponse,
56
+ ReviewControllerUndoData,
57
+ ReviewControllerUndoResponse,
58
+ ReviewControllerBatchResolveData,
59
+ ReviewControllerBatchResolveResponse,
60
+ PayeeControllerCreateData,
61
+ PayeeControllerCreateResponse,
54
62
  PayeeControllerFindAllData,
55
63
  PayeeControllerFindAllResponse,
56
64
  PayeeControllerAutocompleteData,
@@ -59,50 +67,62 @@ import type {
59
67
  PayeeControllerGetTopPayeesResponse,
60
68
  PayeeControllerFindOneData,
61
69
  PayeeControllerFindOneResponse,
62
- PayeeController1Data,
63
- PayeeController1Response,
64
- PayeeController2Data,
65
- PayeeController2Response,
66
- PayeeProfileAdminControllerData,
67
- PayeeProfileAdminControllerResponse,
70
+ PayeeControllerUpdateData,
71
+ PayeeControllerUpdateResponse,
72
+ PayeeControllerDeleteData,
73
+ PayeeControllerDeleteResponse,
74
+ PayeeProfileAdminControllerCreateData,
75
+ PayeeProfileAdminControllerCreateResponse,
68
76
  PayeeProfileAdminControllerFindAllData,
69
77
  PayeeProfileAdminControllerFindAllResponse,
70
78
  PayeeProfileAdminControllerFindOneData,
71
79
  PayeeProfileAdminControllerFindOneResponse,
72
- PayeeProfileAdminController1Data,
73
- PayeeProfileAdminController1Response,
74
- PayeeProfileAdminController2Data,
75
- PayeeProfileAdminController2Response,
76
- PayeeProfileAdminController3Data,
77
- PayeeProfileAdminController3Response,
78
- PayeeProfileAdminController4Data,
79
- PayeeProfileAdminController4Response,
80
- CommodityControllerData,
81
- CommodityControllerResponse,
80
+ PayeeProfileAdminControllerUpdateData,
81
+ PayeeProfileAdminControllerUpdateResponse,
82
+ PayeeProfileAdminControllerDeleteData,
83
+ PayeeProfileAdminControllerDeleteResponse,
84
+ PayeeProfileAdminControllerVerifyData,
85
+ PayeeProfileAdminControllerVerifyResponse,
86
+ PayeeProfileAdminControllerUnverifyData,
87
+ PayeeProfileAdminControllerUnverifyResponse,
88
+ CommodityControllerCreateData,
89
+ CommodityControllerCreateResponse,
82
90
  CommodityControllerFindAllData,
83
91
  CommodityControllerFindAllResponse,
84
92
  CommodityControllerFindOneData,
85
93
  CommodityControllerFindOneResponse,
86
- CommodityController1Data,
87
- CommodityController1Response,
88
- CommodityController2Data,
89
- CommodityController2Response,
90
- CommodityController3Data,
91
- CommodityController3Response,
92
- CommodityController4Data,
93
- CommodityController4Response,
94
- RecurringRuleControllerData,
95
- RecurringRuleControllerResponse,
94
+ CommodityControllerUpdateData,
95
+ CommodityControllerUpdateResponse,
96
+ CommodityControllerDeleteData,
97
+ CommodityControllerDeleteResponse,
98
+ CommodityControllerGetOrCreateData,
99
+ CommodityControllerGetOrCreateResponse,
100
+ CommodityControllerBulkCreateData,
101
+ CommodityControllerBulkCreateResponse,
102
+ PriceControllerCreateData,
103
+ PriceControllerCreateResponse,
104
+ PriceControllerFindAllData,
105
+ PriceControllerFindAllResponse,
106
+ PriceControllerFindOneData,
107
+ PriceControllerFindOneResponse,
108
+ PriceControllerUpdateData,
109
+ PriceControllerUpdateResponse,
110
+ PriceControllerDeleteData,
111
+ PriceControllerDeleteResponse,
112
+ PriceControllerBulkCreateData,
113
+ PriceControllerBulkCreateResponse,
114
+ RecurringRuleControllerCreateData,
115
+ RecurringRuleControllerCreateResponse,
96
116
  RecurringRuleControllerFindAllData,
97
117
  RecurringRuleControllerFindAllResponse,
98
- RecurringRuleController1Data,
99
- RecurringRuleController1Response,
118
+ RecurringRuleControllerCreateFromTransactionData,
119
+ RecurringRuleControllerCreateFromTransactionResponse,
100
120
  RecurringRuleControllerFindOneData,
101
121
  RecurringRuleControllerFindOneResponse,
102
- RecurringRuleController2Data,
103
- RecurringRuleController2Response,
104
- RecurringRuleController3Data,
105
- RecurringRuleController3Response,
122
+ RecurringRuleControllerUpdateData,
123
+ RecurringRuleControllerUpdateResponse,
124
+ RecurringRuleControllerDeleteData,
125
+ RecurringRuleControllerDeleteResponse,
106
126
  RecurringRuleControllerGetWithStatsData,
107
127
  RecurringRuleControllerGetWithStatsResponse,
108
128
  ExpectedTransactionControllerFindAllData,
@@ -111,38 +131,26 @@ import type {
111
131
  ExpectedTransactionControllerFindOverdueResponse,
112
132
  ExpectedTransactionControllerFindOneData,
113
133
  ExpectedTransactionControllerFindOneResponse,
114
- ExpectedTransactionControllerData,
115
- ExpectedTransactionControllerResponse,
116
- ExpectedTransactionController1Data,
117
- ExpectedTransactionController1Response,
118
- ExpectedTransactionController2Data,
119
- ExpectedTransactionController2Response,
120
- ExpectedTransactionController3Data,
121
- ExpectedTransactionController3Response,
122
- ExpectedTransactionController4Data,
123
- ExpectedTransactionController4Response,
134
+ ExpectedTransactionControllerSkipData,
135
+ ExpectedTransactionControllerSkipResponse,
136
+ ExpectedTransactionControllerUndoSkipData,
137
+ ExpectedTransactionControllerUndoSkipResponse,
138
+ ExpectedTransactionControllerConfirmMatchData,
139
+ ExpectedTransactionControllerConfirmMatchResponse,
140
+ ExpectedTransactionControllerUnmatchData,
141
+ ExpectedTransactionControllerUnmatchResponse,
142
+ ExpectedTransactionControllerEnterNowData,
143
+ ExpectedTransactionControllerEnterNowResponse,
124
144
  ForecastControllerGetForecastData,
125
145
  ForecastControllerGetForecastResponse,
126
- TransactionRuleControllerData,
127
- TransactionRuleControllerResponse,
128
- TransactionRuleControllerListData,
129
- TransactionRuleControllerListResponse,
130
- TransactionRuleControllerValidateData,
131
- TransactionRuleControllerValidateResponse,
132
- TransactionRuleController1Data,
133
- TransactionRuleController1Response,
134
- TransactionRuleControllerExportData,
135
- TransactionRuleControllerExportResponse,
136
- TransactionRuleControllerGetStatisticsData,
137
- TransactionRuleControllerGetStatisticsResponse,
138
- TransactionRuleControllerGetDetailData,
139
- TransactionRuleControllerGetDetailResponse,
140
- TransactionRuleController2Data,
141
- TransactionRuleController2Response,
142
- TransactionRuleController3Data,
143
- TransactionRuleController3Response,
144
- TransactionRuleControllerTestData,
145
- TransactionRuleControllerTestResponse,
146
+ ReportingControllerGetPortfolioTrendsData,
147
+ ReportingControllerGetPortfolioTrendsResponse,
148
+ ReportingControllerGetCashFlowTrendsData,
149
+ ReportingControllerGetCashFlowTrendsResponse,
150
+ ReportingControllerGenerateSnapshotData,
151
+ ReportingControllerGenerateSnapshotResponse,
152
+ ReportingControllerBackfillSnapshotsData,
153
+ ReportingControllerBackfillSnapshotsResponse,
146
154
  UserControllerDeleteOwnUserData,
147
155
  UserControllerDeleteOwnUserResponse,
148
156
  UserControllerGetUserData,
@@ -157,106 +165,135 @@ import type {
157
165
  UserControllerUpdateUserSettingResponse,
158
166
  UserControllerGetAllUserSettingsByPageData,
159
167
  UserControllerGetAllUserSettingsByPageResponse,
160
- UserControllerGetAssetLiabilitySummaryData,
161
168
  UserControllerGetAssetLiabilitySummaryResponse,
162
- PropertyControllerGetAllData,
163
169
  PropertyControllerGetAllResponse,
164
170
  PropertyControllerGetByKeyData,
165
171
  PropertyControllerGetByKeyResponse,
166
- PropertyControllerData,
167
- PropertyControllerResponse,
168
- PropertyController1Data,
169
- PropertyController1Response,
172
+ PropertyControllerUpdateData,
173
+ PropertyControllerUpdateResponse,
174
+ PropertyControllerDeleteData,
175
+ PropertyControllerDeleteResponse,
176
+ TransactionRuleControllerCreateData,
177
+ TransactionRuleControllerCreateResponse,
178
+ TransactionRuleControllerListData,
179
+ TransactionRuleControllerListResponse,
180
+ TransactionRuleControllerValidateData,
181
+ TransactionRuleControllerValidateResponse,
182
+ TransactionRuleControllerBulkCreateData,
183
+ TransactionRuleControllerBulkCreateResponse,
184
+ TransactionRuleControllerExportData,
185
+ TransactionRuleControllerExportResponse,
186
+ TransactionRuleControllerGetStatisticsData,
187
+ TransactionRuleControllerGetStatisticsResponse,
188
+ TransactionRuleControllerGetDetailData,
189
+ TransactionRuleControllerGetDetailResponse,
190
+ TransactionRuleControllerUpdateData,
191
+ TransactionRuleControllerUpdateResponse,
192
+ TransactionRuleControllerDeleteData,
193
+ TransactionRuleControllerDeleteResponse,
194
+ TransactionRuleControllerTestData,
195
+ TransactionRuleControllerTestResponse,
196
+ EventControllerCreateData,
197
+ EventControllerCreateResponse,
198
+ EventControllerFindAllData,
199
+ EventControllerFindAllResponse,
200
+ EventControllerFindOneData,
201
+ EventControllerFindOneResponse,
202
+ EventControllerUpdateData,
203
+ EventControllerUpdateResponse,
204
+ EventControllerDeleteData,
205
+ EventControllerDeleteResponse,
206
+ EventControllerGetSliceData,
207
+ EventControllerGetSliceResponse,
208
+ OnboardingControllerBootstrapData,
209
+ OnboardingControllerBootstrapResponse,
210
+ ReconciliationControllerComputeData,
211
+ ReconciliationControllerComputeResponse,
212
+ ReconciliationControllerAssertData,
213
+ ReconciliationControllerAssertResponse,
214
+ ReconciliationControllerPadData,
215
+ ReconciliationControllerPadResponse,
216
+ ReconciliationControllerHistoryData,
217
+ ReconciliationControllerHistoryResponse,
218
+ ExportControllerExportBeancountResponse,
170
219
  FileImportControllerImportFileData,
171
220
  FileImportControllerImportFileResponse,
172
221
  FileImportControllerIdentifyFileData,
173
222
  FileImportControllerIdentifyFileResponse,
223
+ FileImportControllerImportBeancountData,
224
+ FileImportControllerImportBeancountResponse,
174
225
  ImporterConfigControllerGetConfigData,
175
226
  ImporterConfigControllerGetConfigResponse,
176
- ImporterConfigControllerData,
177
- ImporterConfigControllerResponse,
178
- ImporterConfigController1Data,
179
- ImporterConfigController1Response,
227
+ ImporterConfigControllerUpdateConfigData,
228
+ ImporterConfigControllerUpdateConfigResponse,
229
+ ImporterConfigControllerResetConfigData,
230
+ ImporterConfigControllerResetConfigResponse,
180
231
  ProviderSyncControllerSyncData,
181
232
  ProviderSyncControllerSyncResponse,
182
233
  ProviderSyncControllerGetSupportedProvidersData,
183
234
  ProviderSyncControllerGetSupportedProvidersResponse,
184
235
  ProviderSyncControllerIsProviderSupportedData,
185
236
  ProviderSyncControllerIsProviderSupportedResponse,
237
+ ExternalAccountLinkControllerCreateData,
238
+ ExternalAccountLinkControllerCreateResponse,
239
+ ExternalAccountLinkControllerFindAllData,
240
+ ExternalAccountLinkControllerFindAllResponse,
241
+ ExternalAccountLinkControllerFindOneData,
242
+ ExternalAccountLinkControllerFindOneResponse,
243
+ ExternalAccountLinkControllerRemoveData,
244
+ ExternalAccountLinkControllerRemoveResponse,
186
245
  TelemetryControllerReportTelemetryData,
187
246
  TelemetryControllerReportTelemetryResponse,
247
+ TelemetryControllerReportCoverageMissData,
248
+ TelemetryControllerReportCoverageMissResponse,
249
+ TelemetryControllerGetCoverageMetricsData,
250
+ TelemetryControllerGetCoverageMetricsResponse,
188
251
  NlpControllerProcessNaturalLanguageData,
189
252
  NlpControllerProcessNaturalLanguageResponse,
190
253
  NlpControllerClearSessionData,
191
254
  NlpControllerClearSessionResponse,
192
255
  NlpControllerGetSessionData,
193
256
  NlpControllerGetSessionResponse,
194
- PlatformControllerFindAllData,
195
257
  PlatformControllerFindAllResponse,
196
- PlatformControllerData,
197
- PlatformControllerResponse,
258
+ PlatformControllerCreateData,
259
+ PlatformControllerCreateResponse,
198
260
  PlatformControllerGetPlatformListData,
199
261
  PlatformControllerGetPlatformListResponse,
200
- PlatformController1Data,
201
- PlatformController1Response,
202
- PlatformController2Data,
203
- PlatformController2Response,
204
- SymbolControllerLookupSymbolData,
205
- SymbolControllerLookupSymbolResponse,
206
- SymbolControllerGetSymbolDataData,
207
- SymbolControllerGetSymbolDataResponse,
208
- SymbolControllerGatherSymbolForDateData,
209
- SymbolControllerGatherSymbolForDateResponse,
210
- SymbolControllerData,
211
- SymbolControllerResponse,
212
- CacheControllerFlushCacheData,
213
- CacheControllerFlushCacheResponse,
262
+ PlatformControllerMatchPlatformsData,
263
+ PlatformControllerMatchPlatformsResponse,
264
+ PlatformControllerUpdateData,
265
+ PlatformControllerUpdateResponse,
266
+ PlatformControllerDeleteData,
267
+ PlatformControllerDeleteResponse,
214
268
  DashboardControllerGetNetWorthData,
215
269
  DashboardControllerGetNetWorthResponse,
216
270
  DashboardControllerGetAccountsData,
217
271
  DashboardControllerGetAccountsResponse,
218
272
  DashboardControllerGetCashFlowData,
219
273
  DashboardControllerGetCashFlowResponse,
220
- ReportingControllerGetPortfolioTrendsData,
221
- ReportingControllerGetPortfolioTrendsResponse,
222
- ReportingControllerGenerateSnapshotData,
223
- ReportingControllerGenerateSnapshotResponse,
224
- ReportingControllerBackfillSnapshotsData,
225
- ReportingControllerBackfillSnapshotsResponse,
226
- ApiKeysControllerData,
227
- ApiKeysControllerResponse,
274
+ DashboardControllerGetExpensesData,
275
+ DashboardControllerGetExpensesResponse,
276
+ HoldingPnlControllerGetHoldingPnlData,
277
+ HoldingPnlControllerGetHoldingPnlResponse,
278
+ ApiKeysControllerCreateApiKeyResponse,
228
279
  AuthControllerAccessTokenLoginData,
229
280
  AuthControllerAccessTokenLoginResponse,
281
+ CacheControllerFlushCacheResponse,
230
282
  ExchangeRateControllerGetExchangeRateData,
231
283
  ExchangeRateControllerGetExchangeRateResponse,
232
- HealthControllerGetHealthData,
233
284
  HealthControllerGetHealthResponse,
234
- HealthControllerCheckDatabaseData,
235
285
  HealthControllerCheckDatabaseResponse,
236
- HealthControllerCheckRedisData,
286
+ HealthControllerCheckOpenBbResponse,
237
287
  HealthControllerCheckRedisResponse,
238
- HealthControllerGetCircuitBreakersHealthData,
239
288
  HealthControllerGetCircuitBreakersHealthResponse,
240
289
  HealthControllerResetCircuitBreakerData,
241
290
  HealthControllerResetCircuitBreakerResponse,
242
- HealthControllerGetMetricsData,
243
291
  HealthControllerGetMetricsResponse,
244
- HealthControllerGetHealthOfDataEnhancerData,
245
- HealthControllerGetHealthOfDataEnhancerResponse,
246
- HealthControllerCheckDataProvidersData,
247
- HealthControllerCheckDataProvidersResponse,
248
- HealthControllerGetHealthOfDataProviderData,
249
- HealthControllerGetHealthOfDataProviderResponse,
250
- InfoControllerGetInfoData,
251
292
  InfoControllerGetInfoResponse,
252
- LogoControllerGetLogoByDataSourceAndSymbolData,
253
- LogoControllerGetLogoByDataSourceAndSymbolResponse,
254
- LogoControllerGetLogoByUrlData,
255
- LogoControllerGetLogoByUrlResponse,
256
- MarketDataControllerGetMarketDataBySymbolData,
257
- MarketDataControllerGetMarketDataBySymbolResponse,
258
- MarketDataControllerData,
259
- MarketDataControllerResponse
293
+ SymbolControllerSearchData,
294
+ SymbolControllerSearchResponse,
295
+ SymbolControllerGetQuoteData,
296
+ SymbolControllerGetQuoteResponse
260
297
  } from './types.gen';
261
298
 
262
299
  export class BeanAccountsService {
@@ -294,7 +331,7 @@ export class BeanAccountsService {
294
331
  * @param data.type Filter by account type
295
332
  * @param data.status Filter by status
296
333
  * @param data.isCustom Filter by custom (user-created) accounts only
297
- * @param data.search Search term for path or i18nKey
334
+ * @param data.search Search term for account path
298
335
  * @param data.limit Maximum number of results
299
336
  * @param data.offset Number of results to skip
300
337
  * @returns AccountListResponseDto Accounts retrieved successfully
@@ -375,7 +412,7 @@ export class BeanAccountsService {
375
412
 
376
413
  /**
377
414
  * Delete account
378
- * Deletes an account (only if no transactions)
415
+ * Deletes an account (only if no active transactions; voided/superseded residual postings are cleaned up)
379
416
  * @param data The data for the request.
380
417
  * @param data.id Account UUID
381
418
  * @param data.region Region code for tenant context
@@ -394,7 +431,7 @@ export class BeanAccountsService {
394
431
  },
395
432
  errors: {
396
433
  404: 'Account not found',
397
- 409: 'Account has transactions and cannot be deleted'
434
+ 409: 'Account has active transactions and cannot be deleted'
398
435
  }
399
436
  });
400
437
  }
@@ -456,6 +493,107 @@ export class BeanAccountsService {
456
493
  }
457
494
  });
458
495
  }
496
+
497
+ /**
498
+ * Post an opening-balance transaction
499
+ * Posts a double-entry opening-balance transaction against Equity:Opening-Balances for an existing Assets/Liabilities account. At most one active opening balance per account.
500
+ * @param data The data for the request.
501
+ * @param data.id Account UUID
502
+ * @param data.region Region code for tenant context
503
+ * @param data.requestBody
504
+ * @returns OpeningBalanceResultDto Opening-balance transaction created
505
+ * @throws ApiError
506
+ */
507
+ public static accountControllerAddOpeningBalance(
508
+ data: AccountControllerAddOpeningBalanceData
509
+ ): CancelablePromise<AccountControllerAddOpeningBalanceResponse> {
510
+ return __request(OpenAPI, {
511
+ method: 'POST',
512
+ url: '/api/v1/{region}/bean/accounts/{id}/opening-balance',
513
+ path: {
514
+ id: data.id,
515
+ region: data.region
516
+ },
517
+ body: data.requestBody,
518
+ mediaType: 'application/json',
519
+ errors: {
520
+ 404: 'Account not found',
521
+ 409: 'An opening balance already exists for this account'
522
+ }
523
+ });
524
+ }
525
+ }
526
+
527
+ export class BeanAccountStandardsService {
528
+ /**
529
+ * Get account templates
530
+ * Returns predefined account templates for a region. Supports filtering by account type and search term.
531
+ * @param data The data for the request.
532
+ * @param data.region Region code (cn, us, de)
533
+ * @param data.type Filter by account type
534
+ * @param data.search Search term for path or description
535
+ * @returns AccountStandardListResponseDto Account templates retrieved successfully
536
+ * @throws ApiError
537
+ */
538
+ public static accountStandardsControllerGetTemplates(
539
+ data: AccountStandardsControllerGetTemplatesData
540
+ ): CancelablePromise<AccountStandardsControllerGetTemplatesResponse> {
541
+ return __request(OpenAPI, {
542
+ method: 'GET',
543
+ url: '/api/v1/{region}/bean/account-standards',
544
+ path: {
545
+ region: data.region
546
+ },
547
+ query: {
548
+ type: data.type,
549
+ search: data.search
550
+ }
551
+ });
552
+ }
553
+
554
+ /**
555
+ * Get template metadata for an account path
556
+ * Returns root type for a template path.
557
+ * @param data The data for the request.
558
+ * @param data.region Region code for tenant context
559
+ * @param data.path Account path to check
560
+ * @returns TemplateMetadataResponseDto Template metadata retrieved successfully
561
+ * @throws ApiError
562
+ */
563
+ public static accountStandardsControllerGetTemplateMetadata(
564
+ data: AccountStandardsControllerGetTemplateMetadataData
565
+ ): CancelablePromise<AccountStandardsControllerGetTemplateMetadataResponse> {
566
+ return __request(OpenAPI, {
567
+ method: 'GET',
568
+ url: '/api/v1/{region}/bean/account-standards/template-metadata',
569
+ path: {
570
+ region: data.region
571
+ },
572
+ query: {
573
+ path: data.path
574
+ }
575
+ });
576
+ }
577
+
578
+ /**
579
+ * Get available regions with hierarchy
580
+ * Returns supported regions with inheritance metadata
581
+ * @param data The data for the request.
582
+ * @param data.region Region code for tenant context
583
+ * @returns RegionsMetadataResponseDto Regions metadata retrieved successfully
584
+ * @throws ApiError
585
+ */
586
+ public static accountStandardsControllerGetRegions(
587
+ data: AccountStandardsControllerGetRegionsData
588
+ ): CancelablePromise<AccountStandardsControllerGetRegionsResponse> {
589
+ return __request(OpenAPI, {
590
+ method: 'GET',
591
+ url: '/api/v1/{region}/bean/account-standards/regions',
592
+ path: {
593
+ region: data.region
594
+ }
595
+ });
596
+ }
459
597
  }
460
598
 
461
599
  export class BeanTransactionsService {
@@ -501,6 +639,7 @@ export class BeanTransactionsService {
501
639
  * @param data.status Filter by transaction status
502
640
  * @param data.search Search in narration and payee fields (max 200 chars)
503
641
  * @param data.accountId Filter by account ID (transactions with postings to this account)
642
+ * @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
504
643
  * @returns TransactionListResponseDto Transaction list
505
644
  * @throws ApiError
506
645
  */
@@ -520,28 +659,102 @@ export class BeanTransactionsService {
520
659
  dateTo: data.dateTo,
521
660
  status: data.status,
522
661
  search: data.search,
523
- accountId: data.accountId
662
+ accountId: data.accountId,
663
+ category: data.category
524
664
  },
525
665
  errors: {
666
+ 400: 'Validation failed',
526
667
  401: 'Authentication required'
527
668
  }
528
669
  });
529
670
  }
530
671
 
531
672
  /**
673
+ * @deprecated
674
+ * Batch create transactions (DEPRECATED)
675
+ * DEPRECATED: Use POST /:region/bean/import/provider/:name/sync instead. This endpoint skips dedup, rule matching, and review branching.
532
676
  * @param data The data for the request.
533
677
  * @param data.region Region code for tenant context
534
- * @returns unknown
678
+ * @param data.requestBody
679
+ * @returns BatchTransactionResponseDto Transactions processed
535
680
  * @throws ApiError
536
681
  */
537
- public static transactionController(
538
- data: TransactionControllerData
539
- ): CancelablePromise<TransactionControllerResponse> {
682
+ public static transactionControllerCreateBatch(
683
+ data: TransactionControllerCreateBatchData
684
+ ): CancelablePromise<TransactionControllerCreateBatchResponse> {
540
685
  return __request(OpenAPI, {
541
686
  method: 'POST',
542
687
  url: '/api/v1/{region}/bean/transactions/batch',
543
688
  path: {
544
689
  region: data.region
690
+ },
691
+ body: data.requestBody,
692
+ mediaType: 'application/json',
693
+ errors: {
694
+ 400: 'Invalid input',
695
+ 401: 'Authentication required'
696
+ }
697
+ });
698
+ }
699
+
700
+ /**
701
+ * Correct (supersede) a transaction
702
+ * Atomically voids the original (SUPERSEDED) and creates a replacement through the full validation pipeline.
703
+ * @param data The data for the request.
704
+ * @param data.id Original transaction ID to correct
705
+ * @param data.region Region code for tenant context
706
+ * @param data.requestBody
707
+ * @returns TransactionDetailDto Corrected transaction created
708
+ * @throws ApiError
709
+ */
710
+ public static transactionControllerCorrect(
711
+ data: TransactionControllerCorrectData
712
+ ): CancelablePromise<TransactionControllerCorrectResponse> {
713
+ return __request(OpenAPI, {
714
+ method: 'POST',
715
+ url: '/api/v1/{region}/bean/transactions/{id}/correct',
716
+ path: {
717
+ id: data.id,
718
+ region: data.region
719
+ },
720
+ body: data.requestBody,
721
+ mediaType: 'application/json',
722
+ errors: {
723
+ 404: 'Original transaction not found',
724
+ 409: 'Original no longer ACTIVE (concurrent modification)',
725
+ 422: 'Pipeline validation failed (does not balance, invalid accounts)'
726
+ }
727
+ });
728
+ }
729
+
730
+ /**
731
+ * Suggest transaction tags
732
+ * Returns distinct tags from the user ACTIVE transactions, sorted by usage, for autocomplete. Optional q performs a case-insensitive prefix match.
733
+ * @param data The data for the request.
734
+ * @param data.region Region code for tenant context
735
+ * @param data.q Prefix match, case-insensitive (max 50 chars)
736
+ * @param data.sort usage (default) or name
737
+ * @param data.limit Max suggestions (1-100, default 10)
738
+ * @returns TagSuggestionsResponseDto Tag suggestions
739
+ * @throws ApiError
740
+ */
741
+ public static transactionControllerSuggestTags(
742
+ data: TransactionControllerSuggestTagsData
743
+ ): CancelablePromise<TransactionControllerSuggestTagsResponse> {
744
+ return __request(OpenAPI, {
745
+ method: 'GET',
746
+ url: '/api/v1/{region}/bean/transactions/tags',
747
+ path: {
748
+ region: data.region
749
+ },
750
+ query: {
751
+ q: data.q,
752
+ sort: data.sort,
753
+ limit: data.limit
754
+ },
755
+ errors: {
756
+ 400: 'Validation failed',
757
+ 401: 'Authentication required'
545
758
  }
546
759
  });
547
760
  }
@@ -603,67 +816,28 @@ export class BeanTransactionsService {
603
816
  }
604
817
 
605
818
  /**
819
+ * Void transaction
820
+ * Soft-deletes a transaction by marking it as VOIDED
606
821
  * @param data The data for the request.
822
+ * @param data.id Transaction ID
607
823
  * @param data.region Region code for tenant context
608
- * @returns void
824
+ * @returns void Transaction voided successfully
609
825
  * @throws ApiError
610
826
  */
611
- public static transactionController1(
612
- data: TransactionController1Data
613
- ): CancelablePromise<TransactionController1Response> {
827
+ public static transactionControllerDelete(
828
+ data: TransactionControllerDeleteData
829
+ ): CancelablePromise<TransactionControllerDeleteResponse> {
614
830
  return __request(OpenAPI, {
615
831
  method: 'DELETE',
616
832
  url: '/api/v1/{region}/bean/transactions/{id}',
617
833
  path: {
618
- region: data.region
619
- }
620
- });
621
- }
622
- }
623
-
624
- export class BeanAccountStandardsService {
625
- /**
626
- * Get account templates
627
- * Returns predefined account templates for a region. Supports filtering by account type and search term.
628
- * @param data The data for the request.
629
- * @param data.region Region code (cn, us, de)
630
- * @param data.type Filter by account type
631
- * @param data.search Search term for path or description
632
- * @returns AccountStandardListResponseDto Account templates retrieved successfully
633
- * @throws ApiError
634
- */
635
- public static accountStandardsControllerGetTemplates(
636
- data: AccountStandardsControllerGetTemplatesData
637
- ): CancelablePromise<AccountStandardsControllerGetTemplatesResponse> {
638
- return __request(OpenAPI, {
639
- method: 'GET',
640
- url: '/api/v1/{region}/bean/account-standards',
641
- path: {
834
+ id: data.id,
642
835
  region: data.region
643
836
  },
644
- query: {
645
- type: data.type,
646
- search: data.search
647
- }
648
- });
649
- }
650
-
651
- /**
652
- * Get available regions with hierarchy
653
- * Returns supported regions with inheritance metadata
654
- * @param data The data for the request.
655
- * @param data.region Region code (cn, us, de)
656
- * @returns RegionsMetadataResponseDto Regions metadata retrieved successfully
657
- * @throws ApiError
658
- */
659
- public static accountStandardsControllerGetRegions(
660
- data: AccountStandardsControllerGetRegionsData
661
- ): CancelablePromise<AccountStandardsControllerGetRegionsResponse> {
662
- return __request(OpenAPI, {
663
- method: 'GET',
664
- url: '/api/v1/{region}/bean/account-standards/regions',
665
- path: {
666
- region: data.region
837
+ errors: {
838
+ 400: 'Transaction already voided',
839
+ 401: 'Authentication required',
840
+ 404: 'Transaction not found'
667
841
  }
668
842
  });
669
843
  }
@@ -674,8 +848,8 @@ export class BeanBalancesService {
674
848
  * Query account balance
675
849
  * Calculate account balance at a specific date for a single currency
676
850
  * @param data The data for the request.
677
- * @param data.account Account name (e.g., "Assets:Bank:Checking")
678
- * @param data.region Region code (cn, us, de)
851
+ * @param data.account Account name (e.g., "Assets:Checking")
852
+ * @param data.region Region code for tenant context
679
853
  * @param data.date Date to calculate balance at (ISO 8601 format)
680
854
  * @param data.currency Currency to query (e.g., "USD", "CNY")
681
855
  * @returns BalanceResponseDto Balance calculated successfully
@@ -706,7 +880,7 @@ export class BeanBalancesService {
706
880
  * Query multi-currency account balance
707
881
  * Calculate account balances for all currencies at a specific date
708
882
  * @param data The data for the request.
709
- * @param data.region Region code (cn, us, de)
883
+ * @param data.region Region code for tenant context
710
884
  * @returns MultiCurrencyBalanceResponseDto Balances calculated successfully
711
885
  * @throws ApiError
712
886
  */
@@ -731,7 +905,7 @@ export class BeanReviewsService {
731
905
  /**
732
906
  * List pending reviews
733
907
  * @param data The data for the request.
734
- * @param data.region Region code (cn, us, de)
908
+ * @param data.region Region code for tenant context
735
909
  * @param data.type Filter by review type
736
910
  * @param data.confidenceLevel Filter by confidence level
737
911
  * @param data.sortBy Sort order
@@ -762,7 +936,7 @@ export class BeanReviewsService {
762
936
  /**
763
937
  * Get review statistics
764
938
  * @param data The data for the request.
765
- * @param data.region Region code (cn, us, de)
939
+ * @param data.region Region code for tenant context
766
940
  * @returns ReviewStatsDto
767
941
  * @throws ApiError
768
942
  */
@@ -782,7 +956,7 @@ export class BeanReviewsService {
782
956
  * Get review by ID
783
957
  * @param data The data for the request.
784
958
  * @param data.id Review ID
785
- * @param data.region Region code (cn, us, de)
959
+ * @param data.region Region code for tenant context
786
960
  * @returns ReviewDetailDto
787
961
  * @throws ApiError
788
962
  */
@@ -800,75 +974,93 @@ export class BeanReviewsService {
800
974
  }
801
975
 
802
976
  /**
977
+ * Resolve a review item
803
978
  * @param data The data for the request.
804
- * @param data.region Region code (cn, us, de)
805
- * @returns unknown
979
+ * @param data.id Review ID
980
+ * @param data.region Region code for tenant context
981
+ * @param data.requestBody
982
+ * @returns ResolveResultDto
806
983
  * @throws ApiError
807
984
  */
808
- public static reviewController(
809
- data: ReviewControllerData
810
- ): CancelablePromise<ReviewControllerResponse> {
985
+ public static reviewControllerResolve(
986
+ data: ReviewControllerResolveData
987
+ ): CancelablePromise<ReviewControllerResolveResponse> {
811
988
  return __request(OpenAPI, {
812
989
  method: 'POST',
813
990
  url: '/api/v1/{region}/bean/reviews/{id}/resolve',
814
991
  path: {
992
+ id: data.id,
815
993
  region: data.region
816
- }
994
+ },
995
+ body: data.requestBody,
996
+ mediaType: 'application/json'
817
997
  });
818
998
  }
819
999
 
820
1000
  /**
1001
+ * Undo a resolution (within 24h)
821
1002
  * @param data The data for the request.
822
- * @param data.region Region code (cn, us, de)
823
- * @returns unknown
824
- * @throws ApiError
1003
+ * @param data.id Review ID
1004
+ * @param data.region Region code for tenant context
1005
+ * @returns UndoResultDto
1006
+ * @throws ApiError
825
1007
  */
826
- public static reviewController1(
827
- data: ReviewController1Data
828
- ): CancelablePromise<ReviewController1Response> {
1008
+ public static reviewControllerUndo(
1009
+ data: ReviewControllerUndoData
1010
+ ): CancelablePromise<ReviewControllerUndoResponse> {
829
1011
  return __request(OpenAPI, {
830
1012
  method: 'POST',
831
1013
  url: '/api/v1/{region}/bean/reviews/{id}/undo',
832
1014
  path: {
1015
+ id: data.id,
833
1016
  region: data.region
834
1017
  }
835
1018
  });
836
1019
  }
837
1020
 
838
1021
  /**
1022
+ * Batch resolve multiple reviews
839
1023
  * @param data The data for the request.
840
- * @param data.region Region code (cn, us, de)
841
- * @returns unknown
1024
+ * @param data.region Region code for tenant context
1025
+ * @param data.requestBody Batch resolution request containing review IDs and action
1026
+ * @returns BatchResolveResultDto
842
1027
  * @throws ApiError
843
1028
  */
844
- public static reviewController2(
845
- data: ReviewController2Data
846
- ): CancelablePromise<ReviewController2Response> {
1029
+ public static reviewControllerBatchResolve(
1030
+ data: ReviewControllerBatchResolveData
1031
+ ): CancelablePromise<ReviewControllerBatchResolveResponse> {
847
1032
  return __request(OpenAPI, {
848
1033
  method: 'POST',
849
1034
  url: '/api/v1/{region}/bean/reviews/batch-resolve',
850
1035
  path: {
851
1036
  region: data.region
852
- }
1037
+ },
1038
+ body: data.requestBody,
1039
+ mediaType: 'application/json'
853
1040
  });
854
1041
  }
855
1042
  }
856
1043
 
857
1044
  export class BeanPayeesService {
858
1045
  /**
1046
+ * Create a new payee
1047
+ * Creates a new payee mapping for the authenticated user. The payee name must be unique within the user's account.
859
1048
  * @param data The data for the request.
860
- * @param data.region Region code (cn, us, de)
861
- * @returns unknown
1049
+ * @param data.requestBody
1050
+ * @returns PayeeResponseDto Payee created successfully
862
1051
  * @throws ApiError
863
1052
  */
864
- public static payeeController(
865
- data: PayeeControllerData
866
- ): CancelablePromise<PayeeControllerResponse> {
1053
+ public static payeeControllerCreate(
1054
+ data: PayeeControllerCreateData
1055
+ ): CancelablePromise<PayeeControllerCreateResponse> {
867
1056
  return __request(OpenAPI, {
868
1057
  method: 'POST',
869
1058
  url: '/api/v1/bean/payees',
870
- path: {
871
- region: data.region
1059
+ body: data.requestBody,
1060
+ mediaType: 'application/json',
1061
+ errors: {
1062
+ 400: 'Invalid input data',
1063
+ 409: 'Payee already exists'
872
1064
  }
873
1065
  });
874
1066
  }
@@ -877,7 +1069,6 @@ export class BeanPayeesService {
877
1069
  * List user payees
878
1070
  * Returns all payee mappings for the authenticated user with optional filtering
879
1071
  * @param data The data for the request.
880
- * @param data.region Region code (cn, us, de)
881
1072
  * @param data.search Search term for payee name (partial match, case-insensitive). Useful for autocomplete.
882
1073
  * @param data.payee Filter by exact payee name match
883
1074
  * @param data.category Filter by custom category
@@ -887,14 +1078,11 @@ export class BeanPayeesService {
887
1078
  * @throws ApiError
888
1079
  */
889
1080
  public static payeeControllerFindAll(
890
- data: PayeeControllerFindAllData
1081
+ data: PayeeControllerFindAllData = {}
891
1082
  ): CancelablePromise<PayeeControllerFindAllResponse> {
892
1083
  return __request(OpenAPI, {
893
1084
  method: 'GET',
894
1085
  url: '/api/v1/bean/payees',
895
- path: {
896
- region: data.region
897
- },
898
1086
  query: {
899
1087
  search: data.search,
900
1088
  payee: data.payee,
@@ -910,7 +1098,6 @@ export class BeanPayeesService {
910
1098
  * Returns active payee names matching the query, sorted by recent usage. Used for transaction input autocomplete.
911
1099
  * @param data The data for the request.
912
1100
  * @param data.q Search query for payee name (partial match, case-insensitive)
913
- * @param data.region Region code (cn, us, de)
914
1101
  * @param data.limit Maximum number of suggestions
915
1102
  * @returns PayeeAutocompleteResponseDto Autocomplete suggestions retrieved successfully
916
1103
  * @throws ApiError
@@ -921,9 +1108,6 @@ export class BeanPayeesService {
921
1108
  return __request(OpenAPI, {
922
1109
  method: 'GET',
923
1110
  url: '/api/v1/bean/payees/autocomplete',
924
- path: {
925
- region: data.region
926
- },
927
1111
  query: {
928
1112
  q: data.q,
929
1113
  limit: data.limit
@@ -935,20 +1119,16 @@ export class BeanPayeesService {
935
1119
  * Get top payees by usage
936
1120
  * Returns the most frequently used payees, sorted by use count. Used for statistics and analytics.
937
1121
  * @param data The data for the request.
938
- * @param data.region Region code (cn, us, de)
939
1122
  * @param data.limit Maximum number of results
940
1123
  * @returns PayeeStatsResponseDto Top payees retrieved successfully
941
1124
  * @throws ApiError
942
1125
  */
943
1126
  public static payeeControllerGetTopPayees(
944
- data: PayeeControllerGetTopPayeesData
1127
+ data: PayeeControllerGetTopPayeesData = {}
945
1128
  ): CancelablePromise<PayeeControllerGetTopPayeesResponse> {
946
1129
  return __request(OpenAPI, {
947
1130
  method: 'GET',
948
1131
  url: '/api/v1/bean/payees/top',
949
- path: {
950
- region: data.region
951
- },
952
1132
  query: {
953
1133
  limit: data.limit
954
1134
  }
@@ -960,7 +1140,6 @@ export class BeanPayeesService {
960
1140
  * Returns a specific payee mapping by its UUID
961
1141
  * @param data The data for the request.
962
1142
  * @param data.id Payee UUID
963
- * @param data.region Region code (cn, us, de)
964
1143
  * @returns PayeeResponseDto Payee retrieved successfully
965
1144
  * @throws ApiError
966
1145
  */
@@ -971,8 +1150,7 @@ export class BeanPayeesService {
971
1150
  method: 'GET',
972
1151
  url: '/api/v1/bean/payees/{id}',
973
1152
  path: {
974
- id: data.id,
975
- region: data.region
1153
+ id: data.id
976
1154
  },
977
1155
  errors: {
978
1156
  403: 'Payee belongs to another user',
@@ -982,37 +1160,51 @@ export class BeanPayeesService {
982
1160
  }
983
1161
 
984
1162
  /**
1163
+ * Update payee
1164
+ * Updates a payee mapping. The payee name cannot be changed after creation.
985
1165
  * @param data The data for the request.
986
- * @param data.region Region code (cn, us, de)
987
- * @returns unknown
1166
+ * @param data.id Payee UUID
1167
+ * @param data.requestBody
1168
+ * @returns PayeeResponseDto Payee updated successfully
988
1169
  * @throws ApiError
989
1170
  */
990
- public static payeeController1(
991
- data: PayeeController1Data
992
- ): CancelablePromise<PayeeController1Response> {
1171
+ public static payeeControllerUpdate(
1172
+ data: PayeeControllerUpdateData
1173
+ ): CancelablePromise<PayeeControllerUpdateResponse> {
993
1174
  return __request(OpenAPI, {
994
1175
  method: 'PUT',
995
1176
  url: '/api/v1/bean/payees/{id}',
996
1177
  path: {
997
- region: data.region
1178
+ id: data.id
1179
+ },
1180
+ body: data.requestBody,
1181
+ mediaType: 'application/json',
1182
+ errors: {
1183
+ 400: 'Invalid input data',
1184
+ 404: 'Payee not found'
998
1185
  }
999
1186
  });
1000
1187
  }
1001
1188
 
1002
1189
  /**
1190
+ * Delete payee
1191
+ * Soft deletes a payee by marking it as inactive. Inactive payees will not appear in autocomplete suggestions.
1003
1192
  * @param data The data for the request.
1004
- * @param data.region Region code (cn, us, de)
1005
- * @returns void
1193
+ * @param data.id Payee UUID
1194
+ * @returns void Payee deleted successfully
1006
1195
  * @throws ApiError
1007
1196
  */
1008
- public static payeeController2(
1009
- data: PayeeController2Data
1010
- ): CancelablePromise<PayeeController2Response> {
1197
+ public static payeeControllerDelete(
1198
+ data: PayeeControllerDeleteData
1199
+ ): CancelablePromise<PayeeControllerDeleteResponse> {
1011
1200
  return __request(OpenAPI, {
1012
1201
  method: 'DELETE',
1013
1202
  url: '/api/v1/bean/payees/{id}',
1014
1203
  path: {
1015
- region: data.region
1204
+ id: data.id
1205
+ },
1206
+ errors: {
1207
+ 404: 'Payee not found'
1016
1208
  }
1017
1209
  });
1018
1210
  }
@@ -1020,19 +1212,25 @@ export class BeanPayeesService {
1020
1212
 
1021
1213
  export class AdminPayeeProfilesService {
1022
1214
  /**
1215
+ * Create payee profile (Admin only)
1216
+ * Creates a new global payee profile. The canonical name must be unique (case-insensitive).
1023
1217
  * @param data The data for the request.
1024
- * @param data.region Region code (cn, us, de)
1025
- * @returns unknown
1218
+ * @param data.requestBody
1219
+ * @returns PayeeProfileResponseDto Payee profile created successfully
1026
1220
  * @throws ApiError
1027
1221
  */
1028
- public static payeeProfileAdminController(
1029
- data: PayeeProfileAdminControllerData
1030
- ): CancelablePromise<PayeeProfileAdminControllerResponse> {
1222
+ public static payeeProfileAdminControllerCreate(
1223
+ data: PayeeProfileAdminControllerCreateData
1224
+ ): CancelablePromise<PayeeProfileAdminControllerCreateResponse> {
1031
1225
  return __request(OpenAPI, {
1032
1226
  method: 'POST',
1033
1227
  url: '/api/v1/admin/payee-profiles',
1034
- path: {
1035
- region: data.region
1228
+ body: data.requestBody,
1229
+ mediaType: 'application/json',
1230
+ errors: {
1231
+ 400: 'Validation failed',
1232
+ 403: 'Admin access required',
1233
+ 409: 'Payee profile already exists'
1036
1234
  }
1037
1235
  });
1038
1236
  }
@@ -1041,7 +1239,6 @@ export class AdminPayeeProfilesService {
1041
1239
  * List payee profiles (Admin only)
1042
1240
  * Returns all payee profiles with optional filtering by category, country, verification status, etc.
1043
1241
  * @param data The data for the request.
1044
- * @param data.region Region code (cn, us, de)
1045
1242
  * @param data.search Search term for canonical name and aliases (case-insensitive)
1046
1243
  * @param data.category Filter by category
1047
1244
  * @param data.country Filter by country (ISO 3166-1 alpha-2)
@@ -1052,14 +1249,11 @@ export class AdminPayeeProfilesService {
1052
1249
  * @throws ApiError
1053
1250
  */
1054
1251
  public static payeeProfileAdminControllerFindAll(
1055
- data: PayeeProfileAdminControllerFindAllData
1252
+ data: PayeeProfileAdminControllerFindAllData = {}
1056
1253
  ): CancelablePromise<PayeeProfileAdminControllerFindAllResponse> {
1057
1254
  return __request(OpenAPI, {
1058
1255
  method: 'GET',
1059
1256
  url: '/api/v1/admin/payee-profiles',
1060
- path: {
1061
- region: data.region
1062
- },
1063
1257
  query: {
1064
1258
  search: data.search,
1065
1259
  category: data.category,
@@ -1079,7 +1273,6 @@ export class AdminPayeeProfilesService {
1079
1273
  * Returns a single payee profile by its ID.
1080
1274
  * @param data The data for the request.
1081
1275
  * @param data.id Payee profile ID (UUID)
1082
- * @param data.region Region code (cn, us, de)
1083
1276
  * @returns PayeeProfileResponseDto Payee profile retrieved successfully
1084
1277
  * @throws ApiError
1085
1278
  */
@@ -1090,8 +1283,7 @@ export class AdminPayeeProfilesService {
1090
1283
  method: 'GET',
1091
1284
  url: '/api/v1/admin/payee-profiles/{id}',
1092
1285
  path: {
1093
- id: data.id,
1094
- region: data.region
1286
+ id: data.id
1095
1287
  },
1096
1288
  errors: {
1097
1289
  403: 'Admin access required',
@@ -1101,73 +1293,101 @@ export class AdminPayeeProfilesService {
1101
1293
  }
1102
1294
 
1103
1295
  /**
1296
+ * Update payee profile (Admin only)
1297
+ * Updates an existing payee profile. The canonical name cannot be changed.
1104
1298
  * @param data The data for the request.
1105
- * @param data.region Region code (cn, us, de)
1106
- * @returns unknown
1299
+ * @param data.id Payee profile ID (UUID)
1300
+ * @param data.requestBody
1301
+ * @returns PayeeProfileResponseDto Payee profile updated successfully
1107
1302
  * @throws ApiError
1108
1303
  */
1109
- public static payeeProfileAdminController1(
1110
- data: PayeeProfileAdminController1Data
1111
- ): CancelablePromise<PayeeProfileAdminController1Response> {
1304
+ public static payeeProfileAdminControllerUpdate(
1305
+ data: PayeeProfileAdminControllerUpdateData
1306
+ ): CancelablePromise<PayeeProfileAdminControllerUpdateResponse> {
1112
1307
  return __request(OpenAPI, {
1113
1308
  method: 'PUT',
1114
1309
  url: '/api/v1/admin/payee-profiles/{id}',
1115
1310
  path: {
1116
- region: data.region
1311
+ id: data.id
1312
+ },
1313
+ body: data.requestBody,
1314
+ mediaType: 'application/json',
1315
+ errors: {
1316
+ 403: 'Admin access required',
1317
+ 404: 'Payee profile not found'
1117
1318
  }
1118
1319
  });
1119
1320
  }
1120
1321
 
1121
1322
  /**
1323
+ * Soft delete payee profile (Admin only)
1324
+ * Marks a payee profile as inactive (soft delete). The profile cannot be deleted if it is referenced by user payees.
1122
1325
  * @param data The data for the request.
1123
- * @param data.region Region code (cn, us, de)
1124
- * @returns void
1326
+ * @param data.id Payee profile ID (UUID)
1327
+ * @returns void Payee profile deleted successfully
1125
1328
  * @throws ApiError
1126
1329
  */
1127
- public static payeeProfileAdminController2(
1128
- data: PayeeProfileAdminController2Data
1129
- ): CancelablePromise<PayeeProfileAdminController2Response> {
1330
+ public static payeeProfileAdminControllerDelete(
1331
+ data: PayeeProfileAdminControllerDeleteData
1332
+ ): CancelablePromise<PayeeProfileAdminControllerDeleteResponse> {
1130
1333
  return __request(OpenAPI, {
1131
1334
  method: 'DELETE',
1132
1335
  url: '/api/v1/admin/payee-profiles/{id}',
1133
1336
  path: {
1134
- region: data.region
1337
+ id: data.id
1338
+ },
1339
+ errors: {
1340
+ 403: 'Admin access required',
1341
+ 404: 'Payee profile not found',
1342
+ 409: 'Payee profile is in use and cannot be deleted'
1135
1343
  }
1136
1344
  });
1137
1345
  }
1138
1346
 
1139
1347
  /**
1348
+ * Verify payee profile (Admin only)
1349
+ * Marks a payee profile as verified by setting verifiedAt to current timestamp.
1140
1350
  * @param data The data for the request.
1141
- * @param data.region Region code (cn, us, de)
1142
- * @returns unknown
1351
+ * @param data.id Payee profile ID (UUID)
1352
+ * @returns PayeeProfileResponseDto Payee profile verified successfully
1143
1353
  * @throws ApiError
1144
1354
  */
1145
- public static payeeProfileAdminController3(
1146
- data: PayeeProfileAdminController3Data
1147
- ): CancelablePromise<PayeeProfileAdminController3Response> {
1355
+ public static payeeProfileAdminControllerVerify(
1356
+ data: PayeeProfileAdminControllerVerifyData
1357
+ ): CancelablePromise<PayeeProfileAdminControllerVerifyResponse> {
1148
1358
  return __request(OpenAPI, {
1149
1359
  method: 'POST',
1150
1360
  url: '/api/v1/admin/payee-profiles/{id}/verify',
1151
1361
  path: {
1152
- region: data.region
1362
+ id: data.id
1363
+ },
1364
+ errors: {
1365
+ 403: 'Admin access required',
1366
+ 404: 'Payee profile not found'
1153
1367
  }
1154
1368
  });
1155
1369
  }
1156
1370
 
1157
1371
  /**
1372
+ * Unverify payee profile (Admin only)
1373
+ * Removes verification status by setting verifiedAt to null.
1158
1374
  * @param data The data for the request.
1159
- * @param data.region Region code (cn, us, de)
1160
- * @returns unknown
1375
+ * @param data.id Payee profile ID (UUID)
1376
+ * @returns PayeeProfileResponseDto Payee profile unverified successfully
1161
1377
  * @throws ApiError
1162
1378
  */
1163
- public static payeeProfileAdminController4(
1164
- data: PayeeProfileAdminController4Data
1165
- ): CancelablePromise<PayeeProfileAdminController4Response> {
1379
+ public static payeeProfileAdminControllerUnverify(
1380
+ data: PayeeProfileAdminControllerUnverifyData
1381
+ ): CancelablePromise<PayeeProfileAdminControllerUnverifyResponse> {
1166
1382
  return __request(OpenAPI, {
1167
1383
  method: 'DELETE',
1168
1384
  url: '/api/v1/admin/payee-profiles/{id}/verify',
1169
1385
  path: {
1170
- region: data.region
1386
+ id: data.id
1387
+ },
1388
+ errors: {
1389
+ 403: 'Admin access required',
1390
+ 404: 'Payee profile not found'
1171
1391
  }
1172
1392
  });
1173
1393
  }
@@ -1175,19 +1395,28 @@ export class AdminPayeeProfilesService {
1175
1395
 
1176
1396
  export class BeanCommoditiesService {
1177
1397
  /**
1398
+ * Create a new commodity
1399
+ * Creates a new commodity definition for the authenticated user
1178
1400
  * @param data The data for the request.
1179
- * @param data.region Region code (cn, us, de)
1180
- * @returns unknown
1401
+ * @param data.region Region code for tenant context
1402
+ * @param data.requestBody
1403
+ * @returns CommodityResponseDto Commodity created successfully
1181
1404
  * @throws ApiError
1182
1405
  */
1183
- public static commodityController(
1184
- data: CommodityControllerData
1185
- ): CancelablePromise<CommodityControllerResponse> {
1406
+ public static commodityControllerCreate(
1407
+ data: CommodityControllerCreateData
1408
+ ): CancelablePromise<CommodityControllerCreateResponse> {
1186
1409
  return __request(OpenAPI, {
1187
1410
  method: 'POST',
1188
1411
  url: '/api/v1/{region}/bean/commodities',
1189
1412
  path: {
1190
1413
  region: data.region
1414
+ },
1415
+ body: data.requestBody,
1416
+ mediaType: 'application/json',
1417
+ errors: {
1418
+ 400: 'Invalid input data',
1419
+ 409: 'Commodity already exists'
1191
1420
  }
1192
1421
  });
1193
1422
  }
@@ -1196,7 +1425,7 @@ export class BeanCommoditiesService {
1196
1425
  * List user commodities
1197
1426
  * Returns all commodity definitions for the authenticated user with optional filtering
1198
1427
  * @param data The data for the request.
1199
- * @param data.region Region code (cn, us, de)
1428
+ * @param data.region Region code for tenant context
1200
1429
  * @param data.search Search term for symbol or metadata fields (partial match). Searches symbol and metadata.name.
1201
1430
  * @param data.symbol Filter by exact symbol match
1202
1431
  * @returns CommodityListResponseDto Commodities retrieved successfully
@@ -1223,7 +1452,7 @@ export class BeanCommoditiesService {
1223
1452
  * Returns a specific commodity definition by its symbol
1224
1453
  * @param data The data for the request.
1225
1454
  * @param data.symbol Commodity symbol
1226
- * @param data.region Region code (cn, us, de)
1455
+ * @param data.region Region code for tenant context
1227
1456
  * @returns CommodityResponseDto Commodity retrieved successfully
1228
1457
  * @throws ApiError
1229
1458
  */
@@ -1244,68 +1473,92 @@ export class BeanCommoditiesService {
1244
1473
  }
1245
1474
 
1246
1475
  /**
1476
+ * Update commodity
1477
+ * Updates an existing commodity definition. Symbol cannot be changed.
1247
1478
  * @param data The data for the request.
1248
- * @param data.region Region code (cn, us, de)
1249
- * @returns unknown
1479
+ * @param data.symbol Commodity symbol
1480
+ * @param data.region Region code for tenant context
1481
+ * @param data.requestBody
1482
+ * @returns CommodityResponseDto Commodity updated successfully
1250
1483
  * @throws ApiError
1251
1484
  */
1252
- public static commodityController1(
1253
- data: CommodityController1Data
1254
- ): CancelablePromise<CommodityController1Response> {
1485
+ public static commodityControllerUpdate(
1486
+ data: CommodityControllerUpdateData
1487
+ ): CancelablePromise<CommodityControllerUpdateResponse> {
1255
1488
  return __request(OpenAPI, {
1256
1489
  method: 'PUT',
1257
1490
  url: '/api/v1/{region}/bean/commodities/{symbol}',
1258
1491
  path: {
1492
+ symbol: data.symbol,
1259
1493
  region: data.region
1494
+ },
1495
+ body: data.requestBody,
1496
+ mediaType: 'application/json',
1497
+ errors: {
1498
+ 400: 'Invalid input data',
1499
+ 404: 'Commodity not found'
1260
1500
  }
1261
1501
  });
1262
1502
  }
1263
1503
 
1264
1504
  /**
1505
+ * Delete commodity
1506
+ * Deletes a commodity definition
1265
1507
  * @param data The data for the request.
1266
- * @param data.region Region code (cn, us, de)
1267
- * @returns void
1508
+ * @param data.symbol Commodity symbol
1509
+ * @param data.region Region code for tenant context
1510
+ * @returns void Commodity deleted successfully
1268
1511
  * @throws ApiError
1269
1512
  */
1270
- public static commodityController2(
1271
- data: CommodityController2Data
1272
- ): CancelablePromise<CommodityController2Response> {
1513
+ public static commodityControllerDelete(
1514
+ data: CommodityControllerDeleteData
1515
+ ): CancelablePromise<CommodityControllerDeleteResponse> {
1273
1516
  return __request(OpenAPI, {
1274
1517
  method: 'DELETE',
1275
1518
  url: '/api/v1/{region}/bean/commodities/{symbol}',
1276
1519
  path: {
1520
+ symbol: data.symbol,
1277
1521
  region: data.region
1522
+ },
1523
+ errors: {
1524
+ 404: 'Commodity not found'
1278
1525
  }
1279
1526
  });
1280
1527
  }
1281
1528
 
1282
1529
  /**
1530
+ * Ensure commodity exists
1531
+ * Gets existing commodity or creates it with automatic initialization from OpenBB
1283
1532
  * @param data The data for the request.
1284
- * @param data.region Region code (cn, us, de)
1285
- * @returns unknown
1533
+ * @param data.symbol Commodity symbol
1534
+ * @param data.region Region code for tenant context
1535
+ * @returns CommodityResponseDto Commodity retrieved or created
1286
1536
  * @throws ApiError
1287
1537
  */
1288
- public static commodityController3(
1289
- data: CommodityController3Data
1290
- ): CancelablePromise<CommodityController3Response> {
1538
+ public static commodityControllerGetOrCreate(
1539
+ data: CommodityControllerGetOrCreateData
1540
+ ): CancelablePromise<CommodityControllerGetOrCreateResponse> {
1291
1541
  return __request(OpenAPI, {
1292
1542
  method: 'POST',
1293
1543
  url: '/api/v1/{region}/bean/commodities/{symbol}/ensure',
1294
1544
  path: {
1545
+ symbol: data.symbol,
1295
1546
  region: data.region
1296
1547
  }
1297
1548
  });
1298
1549
  }
1299
1550
 
1300
1551
  /**
1552
+ * Bulk create commodities
1553
+ * Creates multiple commodities from a list of symbols, useful for initialization
1301
1554
  * @param data The data for the request.
1302
- * @param data.region Region code (cn, us, de)
1303
- * @returns unknown
1555
+ * @param data.region Region code for tenant context
1556
+ * @returns CommodityResponseDto Commodities created successfully
1304
1557
  * @throws ApiError
1305
1558
  */
1306
- public static commodityController4(
1307
- data: CommodityController4Data
1308
- ): CancelablePromise<CommodityController4Response> {
1559
+ public static commodityControllerBulkCreate(
1560
+ data: CommodityControllerBulkCreateData
1561
+ ): CancelablePromise<CommodityControllerBulkCreateResponse> {
1309
1562
  return __request(OpenAPI, {
1310
1563
  method: 'POST',
1311
1564
  url: '/api/v1/{region}/bean/commodities/bulk',
@@ -1316,182 +1569,387 @@ export class BeanCommoditiesService {
1316
1569
  }
1317
1570
  }
1318
1571
 
1319
- export class RecurringRulesService {
1572
+ export class BeanPricesService {
1320
1573
  /**
1574
+ * Create a new price
1575
+ * Creates a new price entry for the authenticated user
1321
1576
  * @param data The data for the request.
1322
- * @param data.region Region code (cn, us, de)
1323
- * @returns unknown
1577
+ * @param data.region Region code for tenant context
1578
+ * @param data.requestBody
1579
+ * @returns PriceResponseDto Price created successfully
1324
1580
  * @throws ApiError
1325
1581
  */
1326
- public static recurringRuleController(
1327
- data: RecurringRuleControllerData
1328
- ): CancelablePromise<RecurringRuleControllerResponse> {
1582
+ public static priceControllerCreate(
1583
+ data: PriceControllerCreateData
1584
+ ): CancelablePromise<PriceControllerCreateResponse> {
1329
1585
  return __request(OpenAPI, {
1330
1586
  method: 'POST',
1331
- url: '/api/v1/{region}/bean/recurring-rules',
1587
+ url: '/api/v1/{region}/bean/prices',
1332
1588
  path: {
1333
1589
  region: data.region
1590
+ },
1591
+ body: data.requestBody,
1592
+ mediaType: 'application/json',
1593
+ errors: {
1594
+ 404: 'Currency or quoteCurrency commodity not found',
1595
+ 409: 'Price already exists for this currency pair and date'
1334
1596
  }
1335
1597
  });
1336
1598
  }
1337
1599
 
1338
1600
  /**
1339
- * List recurring rules
1340
- * Returns all recurring rules for the authenticated user with optional filtering
1601
+ * List user prices
1602
+ * Returns all price entries for the authenticated user with optional filtering
1341
1603
  * @param data The data for the request.
1342
- * @param data.region Region code (cn, us, de)
1343
- * @param data.isActive Filter by active status
1344
- * @param data.frequency Filter by frequency (WEEKLY, MONTHLY, etc.)
1345
- * @param data.hasAutoCreate Filter by autoCreate enabled
1346
- * @returns RecurringRuleResponseDto Rules retrieved successfully
1604
+ * @param data.region Region code for tenant context
1605
+ * @param data.currency Filter by currency (e.g., BTC, AAPL, USD)
1606
+ * @param data.quoteCurrency Filter by quote currency (pricing currency, e.g., USD, CNY)
1607
+ * @param data.dateFrom Filter prices from this date (ISO 8601 format)
1608
+ * @param data.dateTo Filter prices to this date (ISO 8601 format)
1609
+ * @param data.search Search term for currency or quoteCurrency (case-insensitive partial match)
1610
+ * @param data.page Page number for pagination (default: 1)
1611
+ * @param data.limit Number of items per page (default: 20, max: 100)
1612
+ * @returns PriceListResponseDto Prices retrieved successfully
1347
1613
  * @throws ApiError
1348
1614
  */
1349
- public static recurringRuleControllerFindAll(
1350
- data: RecurringRuleControllerFindAllData
1351
- ): CancelablePromise<RecurringRuleControllerFindAllResponse> {
1615
+ public static priceControllerFindAll(
1616
+ data: PriceControllerFindAllData
1617
+ ): CancelablePromise<PriceControllerFindAllResponse> {
1352
1618
  return __request(OpenAPI, {
1353
1619
  method: 'GET',
1354
- url: '/api/v1/{region}/bean/recurring-rules',
1620
+ url: '/api/v1/{region}/bean/prices',
1355
1621
  path: {
1356
1622
  region: data.region
1357
1623
  },
1358
1624
  query: {
1359
- isActive: data.isActive,
1360
- frequency: data.frequency,
1361
- hasAutoCreate: data.hasAutoCreate
1625
+ currency: data.currency,
1626
+ quoteCurrency: data.quoteCurrency,
1627
+ dateFrom: data.dateFrom,
1628
+ dateTo: data.dateTo,
1629
+ search: data.search,
1630
+ page: data.page,
1631
+ limit: data.limit
1362
1632
  }
1363
1633
  });
1364
1634
  }
1365
1635
 
1366
1636
  /**
1637
+ * Get price by ID
1638
+ * Returns a single price entry by its ID
1367
1639
  * @param data The data for the request.
1368
- * @param data.region Region code (cn, us, de)
1369
- * @returns unknown
1640
+ * @param data.id Price ID
1641
+ * @param data.region Region code for tenant context
1642
+ * @returns PriceResponseDto Price retrieved successfully
1370
1643
  * @throws ApiError
1371
1644
  */
1372
- public static recurringRuleController1(
1373
- data: RecurringRuleController1Data
1374
- ): CancelablePromise<RecurringRuleController1Response> {
1645
+ public static priceControllerFindOne(
1646
+ data: PriceControllerFindOneData
1647
+ ): CancelablePromise<PriceControllerFindOneResponse> {
1375
1648
  return __request(OpenAPI, {
1376
- method: 'POST',
1377
- url: '/api/v1/{region}/bean/recurring-rules/from-transaction/{transactionId}',
1649
+ method: 'GET',
1650
+ url: '/api/v1/{region}/bean/prices/{id}',
1378
1651
  path: {
1652
+ id: data.id,
1379
1653
  region: data.region
1654
+ },
1655
+ errors: {
1656
+ 404: 'Price not found'
1380
1657
  }
1381
1658
  });
1382
1659
  }
1383
1660
 
1384
1661
  /**
1385
- * Get recurring rule by ID
1386
- * Returns a specific recurring rule with its details
1662
+ * Update a price
1663
+ * Updates an existing price entry
1387
1664
  * @param data The data for the request.
1388
- * @param data.id Rule ID
1389
- * @param data.region Region code (cn, us, de)
1390
- * @returns RecurringRuleResponseDto Rule retrieved successfully
1665
+ * @param data.id Price ID
1666
+ * @param data.region Region code for tenant context
1667
+ * @param data.requestBody
1668
+ * @returns PriceResponseDto Price updated successfully
1391
1669
  * @throws ApiError
1392
1670
  */
1393
- public static recurringRuleControllerFindOne(
1394
- data: RecurringRuleControllerFindOneData
1395
- ): CancelablePromise<RecurringRuleControllerFindOneResponse> {
1671
+ public static priceControllerUpdate(
1672
+ data: PriceControllerUpdateData
1673
+ ): CancelablePromise<PriceControllerUpdateResponse> {
1396
1674
  return __request(OpenAPI, {
1397
- method: 'GET',
1398
- url: '/api/v1/{region}/bean/recurring-rules/{id}',
1675
+ method: 'PUT',
1676
+ url: '/api/v1/{region}/bean/prices/{id}',
1399
1677
  path: {
1400
1678
  id: data.id,
1401
1679
  region: data.region
1402
1680
  },
1681
+ body: data.requestBody,
1682
+ mediaType: 'application/json',
1403
1683
  errors: {
1404
- 404: 'Rule not found'
1684
+ 404: 'Price not found',
1685
+ 409: 'Updated price conflicts with existing price'
1405
1686
  }
1406
1687
  });
1407
1688
  }
1408
1689
 
1409
1690
  /**
1691
+ * Delete a price
1692
+ * Deletes a price entry (hard delete)
1410
1693
  * @param data The data for the request.
1411
- * @param data.region Region code (cn, us, de)
1412
- * @returns unknown
1694
+ * @param data.id Price ID
1695
+ * @param data.region Region code for tenant context
1696
+ * @returns void Price deleted successfully
1413
1697
  * @throws ApiError
1414
1698
  */
1415
- public static recurringRuleController2(
1416
- data: RecurringRuleController2Data
1417
- ): CancelablePromise<RecurringRuleController2Response> {
1699
+ public static priceControllerDelete(
1700
+ data: PriceControllerDeleteData
1701
+ ): CancelablePromise<PriceControllerDeleteResponse> {
1418
1702
  return __request(OpenAPI, {
1419
- method: 'PATCH',
1420
- url: '/api/v1/{region}/bean/recurring-rules/{id}',
1703
+ method: 'DELETE',
1704
+ url: '/api/v1/{region}/bean/prices/{id}',
1421
1705
  path: {
1706
+ id: data.id,
1422
1707
  region: data.region
1708
+ },
1709
+ errors: {
1710
+ 404: 'Price not found'
1423
1711
  }
1424
1712
  });
1425
1713
  }
1426
1714
 
1427
1715
  /**
1716
+ * Bulk create prices
1717
+ * Creates multiple price entries at once (skips duplicates)
1428
1718
  * @param data The data for the request.
1429
- * @param data.region Region code (cn, us, de)
1430
- * @returns void
1719
+ * @param data.region Region code for tenant context
1720
+ * @param data.requestBody
1721
+ * @returns PriceResponseDto Prices created successfully
1431
1722
  * @throws ApiError
1432
1723
  */
1433
- public static recurringRuleController3(
1434
- data: RecurringRuleController3Data
1435
- ): CancelablePromise<RecurringRuleController3Response> {
1724
+ public static priceControllerBulkCreate(
1725
+ data: PriceControllerBulkCreateData
1726
+ ): CancelablePromise<PriceControllerBulkCreateResponse> {
1436
1727
  return __request(OpenAPI, {
1437
- method: 'DELETE',
1438
- url: '/api/v1/{region}/bean/recurring-rules/{id}',
1728
+ method: 'POST',
1729
+ url: '/api/v1/{region}/bean/prices/bulk',
1439
1730
  path: {
1440
1731
  region: data.region
1441
- }
1732
+ },
1733
+ body: data.requestBody,
1734
+ mediaType: 'application/json'
1442
1735
  });
1443
1736
  }
1737
+ }
1444
1738
 
1739
+ export class RecurringRulesService {
1445
1740
  /**
1446
- * Get rule with statistics
1447
- * Returns a rule with pending/overdue counts and next expected date
1741
+ * Create a new recurring rule
1742
+ * Creates a new recurring transaction rule for the authenticated user
1448
1743
  * @param data The data for the request.
1449
- * @param data.id Rule ID
1450
- * @param data.region Region code (cn, us, de)
1451
- * @returns RecurringRuleWithStatsResponseDto Rule with stats retrieved successfully
1744
+ * @param data.region Region code for tenant context
1745
+ * @param data.requestBody
1746
+ * @returns RecurringRuleResponseDto Rule created successfully
1452
1747
  * @throws ApiError
1453
1748
  */
1454
- public static recurringRuleControllerGetWithStats(
1455
- data: RecurringRuleControllerGetWithStatsData
1456
- ): CancelablePromise<RecurringRuleControllerGetWithStatsResponse> {
1749
+ public static recurringRuleControllerCreate(
1750
+ data: RecurringRuleControllerCreateData
1751
+ ): CancelablePromise<RecurringRuleControllerCreateResponse> {
1457
1752
  return __request(OpenAPI, {
1458
- method: 'GET',
1459
- url: '/api/v1/{region}/bean/recurring-rules/{id}/stats',
1753
+ method: 'POST',
1754
+ url: '/api/v1/{region}/bean/recurring-rules',
1460
1755
  path: {
1461
- id: data.id,
1462
1756
  region: data.region
1463
1757
  },
1758
+ body: data.requestBody,
1759
+ mediaType: 'application/json',
1464
1760
  errors: {
1465
- 404: 'Rule not found'
1761
+ 400: 'Invalid input data (e.g., autoCreate without accounts)',
1762
+ 409: 'Rule with same name already exists'
1466
1763
  }
1467
1764
  });
1468
1765
  }
1469
- }
1470
1766
 
1471
- export class ExpectedTransactionsService {
1472
1767
  /**
1473
- * List expected transactions
1474
- * Returns expected transactions for the authenticated user with optional filtering
1768
+ * List recurring rules
1769
+ * Returns all recurring rules for the authenticated user with optional filtering
1475
1770
  * @param data The data for the request.
1476
- * @param data.region Region code (cn, us, de)
1477
- * @param data.ruleId Filter by recurring rule ID
1478
- * @param data.status Filter by status (PENDING, COMPLETED, SKIPPED)
1479
- * @param data.fromDate Filter by date range start (YYYY-MM-DD)
1480
- * @param data.toDate Filter by date range end (YYYY-MM-DD)
1481
- * @returns ExpectedTransactionListResponseDto Expected transactions retrieved successfully
1771
+ * @param data.region Region code for tenant context
1772
+ * @param data.isActive Filter by active status
1773
+ * @param data.frequency Filter by frequency (WEEKLY, MONTHLY, etc.)
1774
+ * @param data.hasAutoCreate Filter by autoCreate enabled
1775
+ * @returns RecurringRuleResponseDto Rules retrieved successfully
1482
1776
  * @throws ApiError
1483
1777
  */
1484
- public static expectedTransactionControllerFindAll(
1485
- data: ExpectedTransactionControllerFindAllData
1486
- ): CancelablePromise<ExpectedTransactionControllerFindAllResponse> {
1778
+ public static recurringRuleControllerFindAll(
1779
+ data: RecurringRuleControllerFindAllData
1780
+ ): CancelablePromise<RecurringRuleControllerFindAllResponse> {
1487
1781
  return __request(OpenAPI, {
1488
1782
  method: 'GET',
1489
- url: '/api/v1/{region}/bean/expected-transactions',
1783
+ url: '/api/v1/{region}/bean/recurring-rules',
1490
1784
  path: {
1491
1785
  region: data.region
1492
1786
  },
1493
1787
  query: {
1494
- ruleId: data.ruleId,
1788
+ isActive: data.isActive,
1789
+ frequency: data.frequency,
1790
+ hasAutoCreate: data.hasAutoCreate
1791
+ }
1792
+ });
1793
+ }
1794
+
1795
+ /**
1796
+ * Create recurring rule from transaction
1797
+ * Auto-creates a recurring rule using transaction data. User only confirms frequency.
1798
+ * @param data The data for the request.
1799
+ * @param data.transactionId Source transaction ID
1800
+ * @param data.region Region code for tenant context
1801
+ * @param data.requestBody
1802
+ * @returns RecurringRuleResponseDto Rule created successfully
1803
+ * @throws ApiError
1804
+ */
1805
+ public static recurringRuleControllerCreateFromTransaction(
1806
+ data: RecurringRuleControllerCreateFromTransactionData
1807
+ ): CancelablePromise<RecurringRuleControllerCreateFromTransactionResponse> {
1808
+ return __request(OpenAPI, {
1809
+ method: 'POST',
1810
+ url: '/api/v1/{region}/bean/recurring-rules/from-transaction/{transactionId}',
1811
+ path: {
1812
+ transactionId: data.transactionId,
1813
+ region: data.region
1814
+ },
1815
+ body: data.requestBody,
1816
+ mediaType: 'application/json',
1817
+ errors: {
1818
+ 404: 'Transaction not found',
1819
+ 409: 'Rule with same name already exists or transaction already linked'
1820
+ }
1821
+ });
1822
+ }
1823
+
1824
+ /**
1825
+ * Get recurring rule by ID
1826
+ * Returns a specific recurring rule with its details
1827
+ * @param data The data for the request.
1828
+ * @param data.id Rule ID
1829
+ * @param data.region Region code for tenant context
1830
+ * @returns RecurringRuleResponseDto Rule retrieved successfully
1831
+ * @throws ApiError
1832
+ */
1833
+ public static recurringRuleControllerFindOne(
1834
+ data: RecurringRuleControllerFindOneData
1835
+ ): CancelablePromise<RecurringRuleControllerFindOneResponse> {
1836
+ return __request(OpenAPI, {
1837
+ method: 'GET',
1838
+ url: '/api/v1/{region}/bean/recurring-rules/{id}',
1839
+ path: {
1840
+ id: data.id,
1841
+ region: data.region
1842
+ },
1843
+ errors: {
1844
+ 404: 'Rule not found'
1845
+ }
1846
+ });
1847
+ }
1848
+
1849
+ /**
1850
+ * Update recurring rule
1851
+ * Updates an existing recurring rule
1852
+ * @param data The data for the request.
1853
+ * @param data.id Rule ID
1854
+ * @param data.region Region code for tenant context
1855
+ * @param data.requestBody
1856
+ * @returns RecurringRuleResponseDto Rule updated successfully
1857
+ * @throws ApiError
1858
+ */
1859
+ public static recurringRuleControllerUpdate(
1860
+ data: RecurringRuleControllerUpdateData
1861
+ ): CancelablePromise<RecurringRuleControllerUpdateResponse> {
1862
+ return __request(OpenAPI, {
1863
+ method: 'PATCH',
1864
+ url: '/api/v1/{region}/bean/recurring-rules/{id}',
1865
+ path: {
1866
+ id: data.id,
1867
+ region: data.region
1868
+ },
1869
+ body: data.requestBody,
1870
+ mediaType: 'application/json',
1871
+ errors: {
1872
+ 400: 'Invalid input data',
1873
+ 404: 'Rule not found'
1874
+ }
1875
+ });
1876
+ }
1877
+
1878
+ /**
1879
+ * Delete recurring rule
1880
+ * Soft deletes a recurring rule (sets isActive to false)
1881
+ * @param data The data for the request.
1882
+ * @param data.id Rule ID
1883
+ * @param data.region Region code for tenant context
1884
+ * @returns void Rule deleted successfully
1885
+ * @throws ApiError
1886
+ */
1887
+ public static recurringRuleControllerDelete(
1888
+ data: RecurringRuleControllerDeleteData
1889
+ ): CancelablePromise<RecurringRuleControllerDeleteResponse> {
1890
+ return __request(OpenAPI, {
1891
+ method: 'DELETE',
1892
+ url: '/api/v1/{region}/bean/recurring-rules/{id}',
1893
+ path: {
1894
+ id: data.id,
1895
+ region: data.region
1896
+ },
1897
+ errors: {
1898
+ 404: 'Rule not found'
1899
+ }
1900
+ });
1901
+ }
1902
+
1903
+ /**
1904
+ * Get rule with statistics
1905
+ * Returns a rule with pending/overdue counts and next expected date
1906
+ * @param data The data for the request.
1907
+ * @param data.id Rule ID
1908
+ * @param data.region Region code for tenant context
1909
+ * @returns RecurringRuleWithStatsResponseDto Rule with stats retrieved successfully
1910
+ * @throws ApiError
1911
+ */
1912
+ public static recurringRuleControllerGetWithStats(
1913
+ data: RecurringRuleControllerGetWithStatsData
1914
+ ): CancelablePromise<RecurringRuleControllerGetWithStatsResponse> {
1915
+ return __request(OpenAPI, {
1916
+ method: 'GET',
1917
+ url: '/api/v1/{region}/bean/recurring-rules/{id}/stats',
1918
+ path: {
1919
+ id: data.id,
1920
+ region: data.region
1921
+ },
1922
+ errors: {
1923
+ 404: 'Rule not found'
1924
+ }
1925
+ });
1926
+ }
1927
+ }
1928
+
1929
+ export class ExpectedTransactionsService {
1930
+ /**
1931
+ * List expected transactions
1932
+ * Returns expected transactions for the authenticated user with optional filtering
1933
+ * @param data The data for the request.
1934
+ * @param data.region Region code for tenant context
1935
+ * @param data.ruleId Filter by recurring rule ID
1936
+ * @param data.status Filter by status (PENDING, COMPLETED, SKIPPED)
1937
+ * @param data.fromDate Filter by date range start (YYYY-MM-DD)
1938
+ * @param data.toDate Filter by date range end (YYYY-MM-DD)
1939
+ * @returns ExpectedTransactionListResponseDto Expected transactions retrieved successfully
1940
+ * @throws ApiError
1941
+ */
1942
+ public static expectedTransactionControllerFindAll(
1943
+ data: ExpectedTransactionControllerFindAllData
1944
+ ): CancelablePromise<ExpectedTransactionControllerFindAllResponse> {
1945
+ return __request(OpenAPI, {
1946
+ method: 'GET',
1947
+ url: '/api/v1/{region}/bean/expected-transactions',
1948
+ path: {
1949
+ region: data.region
1950
+ },
1951
+ query: {
1952
+ ruleId: data.ruleId,
1495
1953
  status: data.status,
1496
1954
  fromDate: data.fromDate,
1497
1955
  toDate: data.toDate
@@ -1500,162 +1958,621 @@ export class ExpectedTransactionsService {
1500
1958
  }
1501
1959
 
1502
1960
  /**
1503
- * List overdue expected transactions
1504
- * Returns all overdue expected transactions (PENDING past tolerance)
1961
+ * List overdue expected transactions
1962
+ * Returns all overdue expected transactions (PENDING past tolerance)
1963
+ * @param data The data for the request.
1964
+ * @param data.region Region code for tenant context
1965
+ * @returns ExpectedTransactionListResponseDto Overdue transactions retrieved successfully
1966
+ * @throws ApiError
1967
+ */
1968
+ public static expectedTransactionControllerFindOverdue(
1969
+ data: ExpectedTransactionControllerFindOverdueData
1970
+ ): CancelablePromise<ExpectedTransactionControllerFindOverdueResponse> {
1971
+ return __request(OpenAPI, {
1972
+ method: 'GET',
1973
+ url: '/api/v1/{region}/bean/expected-transactions/overdue',
1974
+ path: {
1975
+ region: data.region
1976
+ }
1977
+ });
1978
+ }
1979
+
1980
+ /**
1981
+ * Get expected transaction by ID
1982
+ * Returns a specific expected transaction with rule details
1983
+ * @param data The data for the request.
1984
+ * @param data.id Expected transaction ID
1985
+ * @param data.region Region code for tenant context
1986
+ * @returns ExpectedTransactionResponseDto Expected transaction retrieved successfully
1987
+ * @throws ApiError
1988
+ */
1989
+ public static expectedTransactionControllerFindOne(
1990
+ data: ExpectedTransactionControllerFindOneData
1991
+ ): CancelablePromise<ExpectedTransactionControllerFindOneResponse> {
1992
+ return __request(OpenAPI, {
1993
+ method: 'GET',
1994
+ url: '/api/v1/{region}/bean/expected-transactions/{id}',
1995
+ path: {
1996
+ id: data.id,
1997
+ region: data.region
1998
+ },
1999
+ errors: {
2000
+ 404: 'Expected transaction not found'
2001
+ }
2002
+ });
2003
+ }
2004
+
2005
+ /**
2006
+ * Skip expected transaction
2007
+ * Marks an expected transaction as skipped (PENDING -> SKIPPED)
2008
+ * @param data The data for the request.
2009
+ * @param data.id Expected transaction ID
2010
+ * @param data.region Region code for tenant context
2011
+ * @returns ExpectedTransactionResponseDto Expected transaction skipped successfully
2012
+ * @throws ApiError
2013
+ */
2014
+ public static expectedTransactionControllerSkip(
2015
+ data: ExpectedTransactionControllerSkipData
2016
+ ): CancelablePromise<ExpectedTransactionControllerSkipResponse> {
2017
+ return __request(OpenAPI, {
2018
+ method: 'POST',
2019
+ url: '/api/v1/{region}/bean/expected-transactions/{id}/skip',
2020
+ path: {
2021
+ id: data.id,
2022
+ region: data.region
2023
+ },
2024
+ errors: {
2025
+ 400: 'Cannot skip - not in PENDING status',
2026
+ 404: 'Expected transaction not found'
2027
+ }
2028
+ });
2029
+ }
2030
+
2031
+ /**
2032
+ * Undo skip
2033
+ * Reverses a skip operation (SKIPPED -> PENDING)
2034
+ * @param data The data for the request.
2035
+ * @param data.id Expected transaction ID
2036
+ * @param data.region Region code for tenant context
2037
+ * @returns ExpectedTransactionResponseDto Skip undone successfully
2038
+ * @throws ApiError
2039
+ */
2040
+ public static expectedTransactionControllerUndoSkip(
2041
+ data: ExpectedTransactionControllerUndoSkipData
2042
+ ): CancelablePromise<ExpectedTransactionControllerUndoSkipResponse> {
2043
+ return __request(OpenAPI, {
2044
+ method: 'DELETE',
2045
+ url: '/api/v1/{region}/bean/expected-transactions/{id}/skip',
2046
+ path: {
2047
+ id: data.id,
2048
+ region: data.region
2049
+ },
2050
+ errors: {
2051
+ 400: 'Cannot undo - not in SKIPPED status',
2052
+ 404: 'Expected transaction not found'
2053
+ }
2054
+ });
2055
+ }
2056
+
2057
+ /**
2058
+ * Confirm transaction match
2059
+ * Manually matches an expected transaction with an actual transaction
2060
+ * @param data The data for the request.
2061
+ * @param data.id Expected transaction ID
2062
+ * @param data.region Region code for tenant context
2063
+ * @param data.requestBody
2064
+ * @returns unknown Match confirmed successfully
2065
+ * @throws ApiError
2066
+ */
2067
+ public static expectedTransactionControllerConfirmMatch(
2068
+ data: ExpectedTransactionControllerConfirmMatchData
2069
+ ): CancelablePromise<ExpectedTransactionControllerConfirmMatchResponse> {
2070
+ return __request(OpenAPI, {
2071
+ method: 'POST',
2072
+ url: '/api/v1/{region}/bean/expected-transactions/{id}/match',
2073
+ path: {
2074
+ id: data.id,
2075
+ region: data.region
2076
+ },
2077
+ body: data.requestBody,
2078
+ mediaType: 'application/json',
2079
+ errors: {
2080
+ 400: 'Cannot match - not in PENDING status',
2081
+ 404: 'Expected or actual transaction not found',
2082
+ 409: 'Actual transaction already matched to another rule'
2083
+ }
2084
+ });
2085
+ }
2086
+
2087
+ /**
2088
+ * Unmatch transaction
2089
+ * Removes the match between expected and actual transaction (COMPLETED -> PENDING)
2090
+ * @param data The data for the request.
2091
+ * @param data.id Expected transaction ID
2092
+ * @param data.region Region code for tenant context
2093
+ * @returns unknown Match removed successfully
2094
+ * @throws ApiError
2095
+ */
2096
+ public static expectedTransactionControllerUnmatch(
2097
+ data: ExpectedTransactionControllerUnmatchData
2098
+ ): CancelablePromise<ExpectedTransactionControllerUnmatchResponse> {
2099
+ return __request(OpenAPI, {
2100
+ method: 'DELETE',
2101
+ url: '/api/v1/{region}/bean/expected-transactions/{id}/match',
2102
+ path: {
2103
+ id: data.id,
2104
+ region: data.region
2105
+ },
2106
+ errors: {
2107
+ 400: 'Cannot unmatch - not in COMPLETED status',
2108
+ 404: 'Expected transaction not found'
2109
+ }
2110
+ });
2111
+ }
2112
+
2113
+ /**
2114
+ * Enter Now
2115
+ * Creates an actual transaction for an expected transaction (YNAB-style Enter Now)
2116
+ * @param data The data for the request.
2117
+ * @param data.id Expected transaction ID
2118
+ * @param data.region Region code for tenant context
2119
+ * @param data.requestBody
2120
+ * @returns unknown Transaction created successfully
2121
+ * @throws ApiError
2122
+ */
2123
+ public static expectedTransactionControllerEnterNow(
2124
+ data: ExpectedTransactionControllerEnterNowData
2125
+ ): CancelablePromise<ExpectedTransactionControllerEnterNowResponse> {
2126
+ return __request(OpenAPI, {
2127
+ method: 'POST',
2128
+ url: '/api/v1/{region}/bean/expected-transactions/{id}/enter',
2129
+ path: {
2130
+ id: data.id,
2131
+ region: data.region
2132
+ },
2133
+ body: data.requestBody,
2134
+ mediaType: 'application/json',
2135
+ errors: {
2136
+ 400: 'Cannot enter - not in PENDING status or missing accounts',
2137
+ 404: 'Expected transaction or accounts not found'
2138
+ }
2139
+ });
2140
+ }
2141
+ }
2142
+
2143
+ export class RecurringForecastService {
2144
+ /**
2145
+ * Get cash flow forecast
2146
+ * Returns predicted outflows for the next N months based on active recurring rules
2147
+ * @param data The data for the request.
2148
+ * @param data.region Region code for tenant context
2149
+ * @param data.months Number of months to forecast (1-12, default 3)
2150
+ * @returns ForecastResponseDto Forecast retrieved successfully
2151
+ * @throws ApiError
2152
+ */
2153
+ public static forecastControllerGetForecast(
2154
+ data: ForecastControllerGetForecastData
2155
+ ): CancelablePromise<ForecastControllerGetForecastResponse> {
2156
+ return __request(OpenAPI, {
2157
+ method: 'GET',
2158
+ url: '/api/v1/{region}/bean/recurring/forecast',
2159
+ path: {
2160
+ region: data.region
2161
+ },
2162
+ query: {
2163
+ months: data.months
2164
+ }
2165
+ });
2166
+ }
2167
+ }
2168
+
2169
+ export class ReportingService {
2170
+ /**
2171
+ * Get portfolio value trends
2172
+ *
2173
+ * Returns time series data of portfolio net worth.
2174
+ *
2175
+ * **Multi-currency Support:**
2176
+ * - `series[].byCurrency` - Currency breakdown for each data point
2177
+ * - `byCurrency` - Separate time series grouped by currency
2178
+ * - `warnings` - Exchange rate warnings if conversion failed
2179
+ *
2180
+ * **Parameters:**
2181
+ * - `period`: Time period (1m, 3m, 6m, 1y)
2182
+ * - `granularity`: Data granularity (day, week, month)
2183
+ *
2184
+ * @param data The data for the request.
2185
+ * @param data.region Region code for tenant context
2186
+ * @param data.period Time period
2187
+ * @param data.granularity Data granularity
2188
+ * @returns PortfolioTrendsResponseDto Trends retrieved successfully
2189
+ * @throws ApiError
2190
+ */
2191
+ public static reportingControllerGetPortfolioTrends(
2192
+ data: ReportingControllerGetPortfolioTrendsData
2193
+ ): CancelablePromise<ReportingControllerGetPortfolioTrendsResponse> {
2194
+ return __request(OpenAPI, {
2195
+ method: 'GET',
2196
+ url: '/api/v1/{region}/reporting/portfolio/trends',
2197
+ path: {
2198
+ region: data.region
2199
+ },
2200
+ query: {
2201
+ period: data.period,
2202
+ granularity: data.granularity
2203
+ },
2204
+ errors: {
2205
+ 401: 'User not authenticated'
2206
+ }
2207
+ });
2208
+ }
2209
+
2210
+ /**
2211
+ * Get cash-flow trends
2212
+ *
2213
+ * Monthly income / expense / netSavings over a fixed N-month window
2214
+ * (current month + N−1 prior). Missing months are zero-filled (flow metric).
2215
+ *
2216
+ * **Parameters:**
2217
+ * - `period`: 1m | 3m | 6m | 1y (default 6m)
2218
+ * - `granularity`: accepted for API symmetry; v1 returns month buckets
2219
+ *
2220
+ * @param data The data for the request.
2221
+ * @param data.region Region code for tenant context
2222
+ * @param data.period Time period
2223
+ * @param data.granularity Data granularity (accepted for API symmetry; v1 returns month buckets)
2224
+ * @returns CashFlowTrendsResponseDto Cash-flow trends retrieved successfully
2225
+ * @throws ApiError
2226
+ */
2227
+ public static reportingControllerGetCashFlowTrends(
2228
+ data: ReportingControllerGetCashFlowTrendsData
2229
+ ): CancelablePromise<ReportingControllerGetCashFlowTrendsResponse> {
2230
+ return __request(OpenAPI, {
2231
+ method: 'GET',
2232
+ url: '/api/v1/{region}/reporting/cash-flow/trends',
2233
+ path: {
2234
+ region: data.region
2235
+ },
2236
+ query: {
2237
+ period: data.period,
2238
+ granularity: data.granularity
2239
+ },
2240
+ errors: {
2241
+ 401: 'User not authenticated'
2242
+ }
2243
+ });
2244
+ }
2245
+
2246
+ /**
2247
+ * Generate portfolio snapshot
2248
+ *
2249
+ * Manually generate a portfolio snapshot for a specific date.
2250
+ *
2251
+ * **Multi-currency Support:**
2252
+ * - Fetches balances grouped by currency
2253
+ * - Uses user's baseCurrency setting for conversion
2254
+ * - Stores exchange rates and warnings
2255
+ *
2256
+ * **Use Cases:**
2257
+ * - Testing snapshot generation
2258
+ * - Force regeneration after data correction
2259
+ * - Initial setup for new users
2260
+ *
2261
+ * @param data The data for the request.
2262
+ * @param data.region Region code for tenant context
2263
+ * @param data.requestBody Optional date (defaults to today)
2264
+ * @returns GenerateSnapshotResponse Snapshot generated successfully
2265
+ * @throws ApiError
2266
+ */
2267
+ public static reportingControllerGenerateSnapshot(
2268
+ data: ReportingControllerGenerateSnapshotData
2269
+ ): CancelablePromise<ReportingControllerGenerateSnapshotResponse> {
2270
+ return __request(OpenAPI, {
2271
+ method: 'POST',
2272
+ url: '/api/v1/{region}/reporting/snapshots/generate',
2273
+ path: {
2274
+ region: data.region
2275
+ },
2276
+ body: data.requestBody,
2277
+ mediaType: 'application/json',
2278
+ errors: {
2279
+ 400: 'Invalid date format',
2280
+ 401: 'User not authenticated'
2281
+ }
2282
+ });
2283
+ }
2284
+
2285
+ /**
2286
+ * Backfill portfolio snapshots
2287
+ *
2288
+ * Generate snapshots for a date range (historical data backfill).
2289
+ *
2290
+ * **Multi-currency Support:**
2291
+ * - Each snapshot includes multi-currency data
2292
+ * - Uses exchange rates available at generation time
2293
+ * - Warnings stored for missing exchange rates
2294
+ *
2295
+ * **Best Practices:**
2296
+ * - Use for initial setup after account configuration
2297
+ * - Run during low-traffic periods for large date ranges
2298
+ * - Existing snapshots are skipped (not regenerated)
2299
+ *
2300
+ * @param data The data for the request.
2301
+ * @param data.region Region code for tenant context
2302
+ * @param data.requestBody
2303
+ * @returns BackfillSnapshotsResponse Backfill completed successfully
2304
+ * @throws ApiError
2305
+ */
2306
+ public static reportingControllerBackfillSnapshots(
2307
+ data: ReportingControllerBackfillSnapshotsData
2308
+ ): CancelablePromise<ReportingControllerBackfillSnapshotsResponse> {
2309
+ return __request(OpenAPI, {
2310
+ method: 'POST',
2311
+ url: '/api/v1/{region}/reporting/snapshots/backfill',
2312
+ path: {
2313
+ region: data.region
2314
+ },
2315
+ body: data.requestBody,
2316
+ mediaType: 'application/json',
2317
+ errors: {
2318
+ 400: 'Invalid date format or range',
2319
+ 401: 'User not authenticated',
2320
+ 409: 'Backfill already in progress for this user'
2321
+ }
2322
+ });
2323
+ }
2324
+ }
2325
+
2326
+ export class UsersService {
2327
+ /**
2328
+ * Delete own user account
2329
+ * @param data The data for the request.
2330
+ * @param data.requestBody
2331
+ * @returns void User deleted successfully
2332
+ * @throws ApiError
2333
+ */
2334
+ public static userControllerDeleteOwnUser(
2335
+ data: UserControllerDeleteOwnUserData
2336
+ ): CancelablePromise<UserControllerDeleteOwnUserResponse> {
2337
+ return __request(OpenAPI, {
2338
+ method: 'DELETE',
2339
+ url: '/api/v1/users',
2340
+ body: data.requestBody,
2341
+ mediaType: 'application/json',
2342
+ errors: {
2343
+ 403: 'Invalid access token'
2344
+ }
2345
+ });
2346
+ }
2347
+
2348
+ /**
2349
+ * Get current authenticated user
2350
+ * @param data The data for the request.
2351
+ * @param data.acceptLanguage
2352
+ * @returns unknown User retrieved successfully
2353
+ * @throws ApiError
2354
+ */
2355
+ public static userControllerGetUser(
2356
+ data: UserControllerGetUserData
2357
+ ): CancelablePromise<UserControllerGetUserResponse> {
2358
+ return __request(OpenAPI, {
2359
+ method: 'GET',
2360
+ url: '/api/v1/users',
2361
+ headers: {
2362
+ 'accept-language': data.acceptLanguage
2363
+ }
2364
+ });
2365
+ }
2366
+
2367
+ /**
2368
+ * Sign up new user
2369
+ * Create a new account with auto-generated access token. Protected by Cloudflare Turnstile to prevent automated signup (when enabled).
1505
2370
  * @param data The data for the request.
1506
- * @param data.region Region code (cn, us, de)
1507
- * @returns ExpectedTransactionListResponseDto Overdue transactions retrieved successfully
2371
+ * @param data.requestBody
2372
+ * @returns SignupResponseDto User created successfully
1508
2373
  * @throws ApiError
1509
2374
  */
1510
- public static expectedTransactionControllerFindOverdue(
1511
- data: ExpectedTransactionControllerFindOverdueData
1512
- ): CancelablePromise<ExpectedTransactionControllerFindOverdueResponse> {
2375
+ public static userControllerSignupUser(
2376
+ data: UserControllerSignupUserData
2377
+ ): CancelablePromise<UserControllerSignupUserResponse> {
1513
2378
  return __request(OpenAPI, {
1514
- method: 'GET',
1515
- url: '/api/v1/{region}/bean/expected-transactions/overdue',
1516
- path: {
1517
- region: data.region
2379
+ method: 'POST',
2380
+ url: '/api/v1/users',
2381
+ body: data.requestBody,
2382
+ mediaType: 'application/json',
2383
+ errors: {
2384
+ 400: 'Invalid Turnstile token (when Turnstile is enabled)',
2385
+ 403: 'User signup is disabled'
1518
2386
  }
1519
2387
  });
1520
2388
  }
1521
2389
 
1522
2390
  /**
1523
- * Get expected transaction by ID
1524
- * Returns a specific expected transaction with rule details
2391
+ * Delete user by ID (admin only)
1525
2392
  * @param data The data for the request.
1526
- * @param data.id Expected transaction ID
1527
- * @param data.region Region code (cn, us, de)
1528
- * @returns ExpectedTransactionResponseDto Expected transaction retrieved successfully
2393
+ * @param data.id User ID to delete
2394
+ * @returns void User deleted successfully
1529
2395
  * @throws ApiError
1530
2396
  */
1531
- public static expectedTransactionControllerFindOne(
1532
- data: ExpectedTransactionControllerFindOneData
1533
- ): CancelablePromise<ExpectedTransactionControllerFindOneResponse> {
2397
+ public static userControllerDeleteUser(
2398
+ data: UserControllerDeleteUserData
2399
+ ): CancelablePromise<UserControllerDeleteUserResponse> {
1534
2400
  return __request(OpenAPI, {
1535
- method: 'GET',
1536
- url: '/api/v1/{region}/bean/expected-transactions/{id}',
2401
+ method: 'DELETE',
2402
+ url: '/api/v1/users/{id}',
1537
2403
  path: {
1538
- id: data.id,
1539
- region: data.region
2404
+ id: data.id
1540
2405
  },
1541
2406
  errors: {
1542
- 404: 'Expected transaction not found'
2407
+ 403: 'Cannot delete own account or insufficient permissions'
1543
2408
  }
1544
2409
  });
1545
2410
  }
1546
2411
 
1547
2412
  /**
2413
+ * Get user info by user ID
1548
2414
  * @param data The data for the request.
1549
- * @param data.region Region code (cn, us, de)
1550
- * @returns unknown
2415
+ * @param data.id User ID
2416
+ * @returns unknown User info retrieved successfully
1551
2417
  * @throws ApiError
1552
2418
  */
1553
- public static expectedTransactionController(
1554
- data: ExpectedTransactionControllerData
1555
- ): CancelablePromise<ExpectedTransactionControllerResponse> {
2419
+ public static userControllerGetUserInfo(
2420
+ data: UserControllerGetUserInfoData
2421
+ ): CancelablePromise<UserControllerGetUserInfoResponse> {
1556
2422
  return __request(OpenAPI, {
1557
- method: 'POST',
1558
- url: '/api/v1/{region}/bean/expected-transactions/{id}/skip',
2423
+ method: 'GET',
2424
+ url: '/api/v1/users/{id}/info',
1559
2425
  path: {
1560
- region: data.region
2426
+ id: data.id
2427
+ },
2428
+ errors: {
2429
+ 403: 'Cannot access other user info without admin permission'
1561
2430
  }
1562
2431
  });
1563
2432
  }
1564
2433
 
1565
2434
  /**
2435
+ * Update user settings
1566
2436
  * @param data The data for the request.
1567
- * @param data.region Region code (cn, us, de)
1568
- * @returns unknown
2437
+ * @param data.requestBody
2438
+ * @returns unknown Settings updated successfully
1569
2439
  * @throws ApiError
1570
2440
  */
1571
- public static expectedTransactionController1(
1572
- data: ExpectedTransactionController1Data
1573
- ): CancelablePromise<ExpectedTransactionController1Response> {
2441
+ public static userControllerUpdateUserSetting(
2442
+ data: UserControllerUpdateUserSettingData
2443
+ ): CancelablePromise<UserControllerUpdateUserSettingResponse> {
1574
2444
  return __request(OpenAPI, {
1575
- method: 'DELETE',
1576
- url: '/api/v1/{region}/bean/expected-transactions/{id}/skip',
1577
- path: {
1578
- region: data.region
2445
+ method: 'PUT',
2446
+ url: '/api/v1/users/setting',
2447
+ body: data.requestBody,
2448
+ mediaType: 'application/json',
2449
+ errors: {
2450
+ 403: 'Insufficient permissions'
1579
2451
  }
1580
2452
  });
1581
2453
  }
1582
2454
 
1583
2455
  /**
2456
+ * Get all user settings paginated (admin only)
1584
2457
  * @param data The data for the request.
1585
- * @param data.region Region code (cn, us, de)
1586
- * @returns unknown
2458
+ * @param data.pageNo Page number
2459
+ * @param data.pageSize Page size
2460
+ * @returns unknown Settings list retrieved successfully
1587
2461
  * @throws ApiError
1588
2462
  */
1589
- public static expectedTransactionController2(
1590
- data: ExpectedTransactionController2Data
1591
- ): CancelablePromise<ExpectedTransactionController2Response> {
2463
+ public static userControllerGetAllUserSettingsByPage(
2464
+ data: UserControllerGetAllUserSettingsByPageData
2465
+ ): CancelablePromise<UserControllerGetAllUserSettingsByPageResponse> {
1592
2466
  return __request(OpenAPI, {
1593
- method: 'POST',
1594
- url: '/api/v1/{region}/bean/expected-transactions/{id}/match',
1595
- path: {
1596
- region: data.region
2467
+ method: 'GET',
2468
+ url: '/api/v1/users/settings-by-page',
2469
+ query: {
2470
+ pageNo: data.pageNo,
2471
+ pageSize: data.pageSize
2472
+ }
2473
+ });
2474
+ }
2475
+
2476
+ /**
2477
+ * Get asset and liability summary for current user
2478
+ * @returns unknown Summary retrieved successfully
2479
+ * @throws ApiError
2480
+ */
2481
+ public static userControllerGetAssetLiabilitySummary(): CancelablePromise<UserControllerGetAssetLiabilitySummaryResponse> {
2482
+ return __request(OpenAPI, {
2483
+ method: 'GET',
2484
+ url: '/api/v1/users/asset-liability-summary'
2485
+ });
2486
+ }
2487
+ }
2488
+
2489
+ export class PropertiesService {
2490
+ /**
2491
+ * Get all system properties
2492
+ * @returns unknown Properties retrieved successfully
2493
+ * @throws ApiError
2494
+ */
2495
+ public static propertyControllerGetAll(): CancelablePromise<PropertyControllerGetAllResponse> {
2496
+ return __request(OpenAPI, {
2497
+ method: 'GET',
2498
+ url: '/api/v1/admin/properties',
2499
+ errors: {
2500
+ 401: 'Unauthorized',
2501
+ 403: 'Forbidden - insufficient permissions'
1597
2502
  }
1598
2503
  });
1599
2504
  }
1600
2505
 
1601
2506
  /**
2507
+ * Get property by key
1602
2508
  * @param data The data for the request.
1603
- * @param data.region Region code (cn, us, de)
1604
- * @returns unknown
2509
+ * @param data.key Property key
2510
+ * @returns unknown Property retrieved successfully
1605
2511
  * @throws ApiError
1606
2512
  */
1607
- public static expectedTransactionController3(
1608
- data: ExpectedTransactionController3Data
1609
- ): CancelablePromise<ExpectedTransactionController3Response> {
2513
+ public static propertyControllerGetByKey(
2514
+ data: PropertyControllerGetByKeyData
2515
+ ): CancelablePromise<PropertyControllerGetByKeyResponse> {
1610
2516
  return __request(OpenAPI, {
1611
- method: 'DELETE',
1612
- url: '/api/v1/{region}/bean/expected-transactions/{id}/match',
2517
+ method: 'GET',
2518
+ url: '/api/v1/admin/properties/{key}',
1613
2519
  path: {
1614
- region: data.region
2520
+ key: data.key
2521
+ },
2522
+ errors: {
2523
+ 401: 'Unauthorized',
2524
+ 403: 'Forbidden - insufficient permissions',
2525
+ 404: 'Property not found'
1615
2526
  }
1616
2527
  });
1617
2528
  }
1618
2529
 
1619
2530
  /**
2531
+ * Update a system property
1620
2532
  * @param data The data for the request.
1621
- * @param data.region Region code (cn, us, de)
1622
- * @returns unknown
2533
+ * @param data.key Property key
2534
+ * @param data.requestBody
2535
+ * @returns unknown Property updated successfully
1623
2536
  * @throws ApiError
1624
2537
  */
1625
- public static expectedTransactionController4(
1626
- data: ExpectedTransactionController4Data
1627
- ): CancelablePromise<ExpectedTransactionController4Response> {
2538
+ public static propertyControllerUpdate(
2539
+ data: PropertyControllerUpdateData
2540
+ ): CancelablePromise<PropertyControllerUpdateResponse> {
1628
2541
  return __request(OpenAPI, {
1629
- method: 'POST',
1630
- url: '/api/v1/{region}/bean/expected-transactions/{id}/enter',
2542
+ method: 'PUT',
2543
+ url: '/api/v1/admin/properties/{key}',
1631
2544
  path: {
1632
- region: data.region
2545
+ key: data.key
2546
+ },
2547
+ body: data.requestBody,
2548
+ mediaType: 'application/json',
2549
+ errors: {
2550
+ 401: 'Unauthorized',
2551
+ 403: 'Forbidden - insufficient permissions'
1633
2552
  }
1634
2553
  });
1635
2554
  }
1636
- }
1637
2555
 
1638
- export class RecurringForecastService {
1639
2556
  /**
1640
- * Get cash flow forecast
1641
- * Returns predicted outflows for the next N months based on active recurring rules
2557
+ * Delete a system property
1642
2558
  * @param data The data for the request.
1643
- * @param data.region Region code (cn, us, de)
1644
- * @param data.months Number of months to forecast (1-12, default 3)
1645
- * @returns ForecastResponseDto Forecast retrieved successfully
2559
+ * @param data.key Property key
2560
+ * @returns void Property deleted successfully
1646
2561
  * @throws ApiError
1647
2562
  */
1648
- public static forecastControllerGetForecast(
1649
- data: ForecastControllerGetForecastData
1650
- ): CancelablePromise<ForecastControllerGetForecastResponse> {
2563
+ public static propertyControllerDelete(
2564
+ data: PropertyControllerDeleteData
2565
+ ): CancelablePromise<PropertyControllerDeleteResponse> {
1651
2566
  return __request(OpenAPI, {
1652
- method: 'GET',
1653
- url: '/api/v1/{region}/bean/recurring/forecast',
2567
+ method: 'DELETE',
2568
+ url: '/api/v1/admin/properties/{key}',
1654
2569
  path: {
1655
- region: data.region
2570
+ key: data.key
1656
2571
  },
1657
- query: {
1658
- months: data.months
2572
+ errors: {
2573
+ 401: 'Unauthorized',
2574
+ 403: 'Forbidden - insufficient permissions',
2575
+ 404: 'Property not found'
1659
2576
  }
1660
2577
  });
1661
2578
  }
@@ -1663,19 +2580,29 @@ export class RecurringForecastService {
1663
2580
 
1664
2581
  export class BeanTransactionRulesService {
1665
2582
  /**
2583
+ * Create a new transaction rule (or upsert if upsertByPayee=true)
2584
+ * Creates a new rule. If upsertByPayee=true, updates existing rule matching payeeKeywords[0] instead of creating duplicate.
1666
2585
  * @param data The data for the request.
1667
- * @param data.region Region code (cn, us, de)
1668
- * @returns unknown
2586
+ * @param data.region Region code for tenant context
2587
+ * @param data.requestBody
2588
+ * @returns TransactionRuleResponseDto Rule updated successfully (upsert mode)
1669
2589
  * @throws ApiError
1670
2590
  */
1671
- public static transactionRuleController(
1672
- data: TransactionRuleControllerData
1673
- ): CancelablePromise<TransactionRuleControllerResponse> {
2591
+ public static transactionRuleControllerCreate(
2592
+ data: TransactionRuleControllerCreateData
2593
+ ): CancelablePromise<TransactionRuleControllerCreateResponse> {
1674
2594
  return __request(OpenAPI, {
1675
2595
  method: 'POST',
1676
2596
  url: '/api/v1/{region}/bean/transaction-rules',
1677
2597
  path: {
1678
2598
  region: data.region
2599
+ },
2600
+ body: data.requestBody,
2601
+ mediaType: 'application/json',
2602
+ errors: {
2603
+ 400: 'Validation failed',
2604
+ 401: 'Unauthorized',
2605
+ 409: 'Resource conflict - another process is updating this rule'
1679
2606
  }
1680
2607
  });
1681
2608
  }
@@ -1683,7 +2610,7 @@ export class BeanTransactionRulesService {
1683
2610
  /**
1684
2611
  * Get all transaction rules for user
1685
2612
  * @param data The data for the request.
1686
- * @param data.region Region code (cn, us, de)
2613
+ * @param data.region Region code for tenant context
1687
2614
  * @param data.limit Max results per page (default: 20, max: 100)
1688
2615
  * @param data.offset Pagination offset (default: 0)
1689
2616
  * @param data.enabled Filter by enabled status
@@ -1717,7 +2644,7 @@ export class BeanTransactionRulesService {
1717
2644
  /**
1718
2645
  * Validate transaction rule configuration
1719
2646
  * @param data The data for the request.
1720
- * @param data.region Region code (cn, us, de)
2647
+ * @param data.region Region code for tenant context
1721
2648
  * @param data.requestBody
1722
2649
  * @returns ValidateRuleResponseDto Validation result
1723
2650
  * @throws ApiError
@@ -1734,25 +2661,34 @@ export class BeanTransactionRulesService {
1734
2661
  body: data.requestBody,
1735
2662
  mediaType: 'application/json',
1736
2663
  errors: {
2664
+ 400: 'Validation failed',
1737
2665
  401: 'Unauthorized'
1738
2666
  }
1739
2667
  });
1740
2668
  }
1741
2669
 
1742
2670
  /**
2671
+ * Bulk create transaction rules
1743
2672
  * @param data The data for the request.
1744
- * @param data.region Region code (cn, us, de)
1745
- * @returns unknown
2673
+ * @param data.region Region code for tenant context
2674
+ * @param data.requestBody
2675
+ * @returns BulkCreateRulesResponseDto Bulk create completed
1746
2676
  * @throws ApiError
1747
2677
  */
1748
- public static transactionRuleController1(
1749
- data: TransactionRuleController1Data
1750
- ): CancelablePromise<TransactionRuleController1Response> {
2678
+ public static transactionRuleControllerBulkCreate(
2679
+ data: TransactionRuleControllerBulkCreateData
2680
+ ): CancelablePromise<TransactionRuleControllerBulkCreateResponse> {
1751
2681
  return __request(OpenAPI, {
1752
2682
  method: 'POST',
1753
2683
  url: '/api/v1/{region}/bean/transaction-rules/bulk',
1754
2684
  path: {
1755
2685
  region: data.region
2686
+ },
2687
+ body: data.requestBody,
2688
+ mediaType: 'application/json',
2689
+ errors: {
2690
+ 400: 'Invalid bulk create data',
2691
+ 401: 'Unauthorized'
1756
2692
  }
1757
2693
  });
1758
2694
  }
@@ -1761,7 +2697,7 @@ export class BeanTransactionRulesService {
1761
2697
  * Export transaction rules
1762
2698
  * @param data The data for the request.
1763
2699
  * @param data.format Export format (currently only JSON supported)
1764
- * @param data.region Region code (cn, us, de)
2700
+ * @param data.region Region code for tenant context
1765
2701
  * @returns ExportRulesResponseDto Exported rules
1766
2702
  * @throws ApiError
1767
2703
  */
@@ -1786,7 +2722,7 @@ export class BeanTransactionRulesService {
1786
2722
  * Get transaction rule statistics
1787
2723
  * @param data The data for the request.
1788
2724
  * @param data.period Statistics time period
1789
- * @param data.region Region code (cn, us, de)
2725
+ * @param data.region Region code for tenant context
1790
2726
  * @returns RuleStatisticsResponseDto Rule statistics
1791
2727
  * @throws ApiError
1792
2728
  */
@@ -1810,7 +2746,7 @@ export class BeanTransactionRulesService {
1810
2746
  * Get transaction rule detail
1811
2747
  * @param data The data for the request.
1812
2748
  * @param data.ruleId Rule ID
1813
- * @param data.region Region code (cn, us, de)
2749
+ * @param data.region Region code for tenant context
1814
2750
  * @returns TransactionRuleResponseDto Rule details
1815
2751
  * @throws ApiError
1816
2752
  */
@@ -1833,37 +2769,59 @@ export class BeanTransactionRulesService {
1833
2769
  }
1834
2770
 
1835
2771
  /**
2772
+ * Update a transaction rule
1836
2773
  * @param data The data for the request.
1837
- * @param data.region Region code (cn, us, de)
1838
- * @returns unknown
2774
+ * @param data.ruleId Rule ID to update
2775
+ * @param data.region Region code for tenant context
2776
+ * @param data.requestBody
2777
+ * @returns TransactionRuleResponseDto Rule updated successfully
1839
2778
  * @throws ApiError
1840
2779
  */
1841
- public static transactionRuleController2(
1842
- data: TransactionRuleController2Data
1843
- ): CancelablePromise<TransactionRuleController2Response> {
2780
+ public static transactionRuleControllerUpdate(
2781
+ data: TransactionRuleControllerUpdateData
2782
+ ): CancelablePromise<TransactionRuleControllerUpdateResponse> {
1844
2783
  return __request(OpenAPI, {
1845
2784
  method: 'PUT',
1846
2785
  url: '/api/v1/{region}/bean/transaction-rules/{ruleId}',
1847
2786
  path: {
2787
+ ruleId: data.ruleId,
1848
2788
  region: data.region
2789
+ },
2790
+ body: data.requestBody,
2791
+ mediaType: 'application/json',
2792
+ errors: {
2793
+ 400: 'Validation failed',
2794
+ 401: 'Unauthorized',
2795
+ 403: 'Forbidden - not owner of rule',
2796
+ 404: 'Rule not found',
2797
+ 409: 'Resource conflict - rule is being modified by another process'
1849
2798
  }
1850
2799
  });
1851
2800
  }
1852
2801
 
1853
2802
  /**
2803
+ * Delete a transaction rule
1854
2804
  * @param data The data for the request.
1855
- * @param data.region Region code (cn, us, de)
1856
- * @returns void
2805
+ * @param data.ruleId Rule ID to delete
2806
+ * @param data.region Region code for tenant context
2807
+ * @returns void Rule deleted successfully
1857
2808
  * @throws ApiError
1858
2809
  */
1859
- public static transactionRuleController3(
1860
- data: TransactionRuleController3Data
1861
- ): CancelablePromise<TransactionRuleController3Response> {
2810
+ public static transactionRuleControllerDelete(
2811
+ data: TransactionRuleControllerDeleteData
2812
+ ): CancelablePromise<TransactionRuleControllerDeleteResponse> {
1862
2813
  return __request(OpenAPI, {
1863
2814
  method: 'DELETE',
1864
2815
  url: '/api/v1/{region}/bean/transaction-rules/{ruleId}',
1865
2816
  path: {
2817
+ ruleId: data.ruleId,
1866
2818
  region: data.region
2819
+ },
2820
+ errors: {
2821
+ 401: 'Unauthorized',
2822
+ 403: 'Forbidden - not owner of rule',
2823
+ 404: 'Rule not found',
2824
+ 409: 'Resource conflict - rule is being modified by another process'
1867
2825
  }
1868
2826
  });
1869
2827
  }
@@ -1872,7 +2830,7 @@ export class BeanTransactionRulesService {
1872
2830
  * Test rule matching
1873
2831
  * @param data The data for the request.
1874
2832
  * @param data.ruleId Rule ID to test
1875
- * @param data.region Region code (cn, us, de)
2833
+ * @param data.region Region code for tenant context
1876
2834
  * @param data.requestBody
1877
2835
  * @returns TestRuleResponseDto Test result
1878
2836
  * @throws ApiError
@@ -1898,283 +2856,325 @@ export class BeanTransactionRulesService {
1898
2856
  }
1899
2857
  }
1900
2858
 
1901
- export class UsersService {
2859
+ export class LifeEventsService {
1902
2860
  /**
1903
- * Delete own user account
2861
+ * Create a new life event
2862
+ * Creates a new life event entry for the authenticated user. Returns ETag header carrying the row updatedAt.
1904
2863
  * @param data The data for the request.
1905
- * @param data.region Region code (cn, us, de)
2864
+ * @param data.region Region code for tenant context (decorative for life events)
1906
2865
  * @param data.requestBody
1907
- * @returns void User deleted successfully
2866
+ * @returns EventResponseDto Life event created successfully
1908
2867
  * @throws ApiError
1909
2868
  */
1910
- public static userControllerDeleteOwnUser(
1911
- data: UserControllerDeleteOwnUserData
1912
- ): CancelablePromise<UserControllerDeleteOwnUserResponse> {
2869
+ public static eventControllerCreate(
2870
+ data: EventControllerCreateData
2871
+ ): CancelablePromise<EventControllerCreateResponse> {
1913
2872
  return __request(OpenAPI, {
1914
- method: 'DELETE',
1915
- url: '/api/v1/users',
2873
+ method: 'POST',
2874
+ url: '/api/v1/{region}/bean/events',
1916
2875
  path: {
1917
2876
  region: data.region
1918
2877
  },
1919
2878
  body: data.requestBody,
1920
2879
  mediaType: 'application/json',
1921
2880
  errors: {
1922
- 403: 'Invalid access token'
2881
+ 409: 'Life event already exists for this (userId, type, date) combination'
2882
+ }
2883
+ });
2884
+ }
2885
+
2886
+ /**
2887
+ * List user life events
2888
+ * Returns life events for the authenticated user with optional filtering by type, description search, and date range.
2889
+ * @param data The data for the request.
2890
+ * @param data.region Region code for tenant context (decorative for life events)
2891
+ * @param data.type Filter by life event type (exact match)
2892
+ * @param data.q Search term for description (case-insensitive partial match)
2893
+ * @param data.from Filter life events from this date (ISO 8601 format)
2894
+ * @param data.to Filter life events to this date (ISO 8601 format)
2895
+ * @param data.page Page number for pagination (default: 1)
2896
+ * @param data.limit Number of items per page (default: 20, max: 100)
2897
+ * @returns EventListResponseDto Life events retrieved successfully
2898
+ * @throws ApiError
2899
+ */
2900
+ public static eventControllerFindAll(
2901
+ data: EventControllerFindAllData
2902
+ ): CancelablePromise<EventControllerFindAllResponse> {
2903
+ return __request(OpenAPI, {
2904
+ method: 'GET',
2905
+ url: '/api/v1/{region}/bean/events',
2906
+ path: {
2907
+ region: data.region
2908
+ },
2909
+ query: {
2910
+ type: data.type,
2911
+ q: data.q,
2912
+ from: data.from,
2913
+ to: data.to,
2914
+ page: data.page,
2915
+ limit: data.limit
1923
2916
  }
1924
2917
  });
1925
2918
  }
1926
2919
 
1927
2920
  /**
1928
- * Get current authenticated user
2921
+ * Get life event by ID
2922
+ * Returns a single life event by its ID. Returns ETag header.
1929
2923
  * @param data The data for the request.
1930
- * @param data.acceptLanguage
1931
- * @param data.region Region code (cn, us, de)
1932
- * @returns unknown User retrieved successfully
2924
+ * @param data.id Life event ID
2925
+ * @param data.region Region code for tenant context (decorative for life events)
2926
+ * @returns EventResponseDto Life event retrieved successfully
1933
2927
  * @throws ApiError
1934
2928
  */
1935
- public static userControllerGetUser(
1936
- data: UserControllerGetUserData
1937
- ): CancelablePromise<UserControllerGetUserResponse> {
2929
+ public static eventControllerFindOne(
2930
+ data: EventControllerFindOneData
2931
+ ): CancelablePromise<EventControllerFindOneResponse> {
1938
2932
  return __request(OpenAPI, {
1939
2933
  method: 'GET',
1940
- url: '/api/v1/users',
2934
+ url: '/api/v1/{region}/bean/events/{id}',
1941
2935
  path: {
2936
+ id: data.id,
1942
2937
  region: data.region
1943
2938
  },
1944
- headers: {
1945
- 'accept-language': data.acceptLanguage
2939
+ errors: {
2940
+ 404: 'Life event not found'
1946
2941
  }
1947
2942
  });
1948
2943
  }
1949
2944
 
1950
2945
  /**
1951
- * Sign up new user
1952
- * Create a new account with auto-generated access token. Protected by Cloudflare Turnstile to prevent automated signup (when enabled).
2946
+ * Update a life event
2947
+ * Updates an existing life event. If If-Match header is provided, performs optimistic concurrency check; mismatched updatedAt returns 412.
1953
2948
  * @param data The data for the request.
1954
- * @param data.region Region code (cn, us, de)
2949
+ * @param data.id Life event ID
2950
+ * @param data.region Region code for tenant context (decorative for life events)
1955
2951
  * @param data.requestBody
1956
- * @returns unknown User created successfully
2952
+ * @returns EventResponseDto Life event updated successfully
1957
2953
  * @throws ApiError
1958
2954
  */
1959
- public static userControllerSignupUser(
1960
- data: UserControllerSignupUserData
1961
- ): CancelablePromise<UserControllerSignupUserResponse> {
2955
+ public static eventControllerUpdate(
2956
+ data: EventControllerUpdateData
2957
+ ): CancelablePromise<EventControllerUpdateResponse> {
1962
2958
  return __request(OpenAPI, {
1963
- method: 'POST',
1964
- url: '/api/v1/users',
2959
+ method: 'PUT',
2960
+ url: '/api/v1/{region}/bean/events/{id}',
1965
2961
  path: {
2962
+ id: data.id,
1966
2963
  region: data.region
1967
2964
  },
1968
2965
  body: data.requestBody,
1969
2966
  mediaType: 'application/json',
1970
2967
  errors: {
1971
- 400: 'Invalid Turnstile token (when Turnstile is enabled)',
1972
- 403: 'User signup is disabled'
2968
+ 400: 'If-Match header is not a valid ISO 8601 date',
2969
+ 404: 'Life event not found',
2970
+ 409: 'Updated event conflicts with an existing (userId, type, date) combination',
2971
+ 412: 'If-Match precondition failed (updatedAt mismatch)'
1973
2972
  }
1974
2973
  });
1975
2974
  }
1976
2975
 
1977
2976
  /**
1978
- * Delete user by ID (admin only)
2977
+ * Delete a life event
2978
+ * Deletes a life event entry (hard delete). Returns 204.
1979
2979
  * @param data The data for the request.
1980
- * @param data.id User ID to delete
1981
- * @param data.region Region code (cn, us, de)
1982
- * @returns void User deleted successfully
2980
+ * @param data.id Life event ID
2981
+ * @param data.region Region code for tenant context (decorative for life events)
2982
+ * @returns void Life event deleted successfully
1983
2983
  * @throws ApiError
1984
2984
  */
1985
- public static userControllerDeleteUser(
1986
- data: UserControllerDeleteUserData
1987
- ): CancelablePromise<UserControllerDeleteUserResponse> {
2985
+ public static eventControllerDelete(
2986
+ data: EventControllerDeleteData
2987
+ ): CancelablePromise<EventControllerDeleteResponse> {
1988
2988
  return __request(OpenAPI, {
1989
2989
  method: 'DELETE',
1990
- url: '/api/v1/users/{id}',
2990
+ url: '/api/v1/{region}/bean/events/{id}',
1991
2991
  path: {
1992
2992
  id: data.id,
1993
2993
  region: data.region
1994
2994
  },
1995
2995
  errors: {
1996
- 403: 'Cannot delete own account or insufficient permissions'
2996
+ 404: 'Life event not found'
1997
2997
  }
1998
2998
  });
1999
2999
  }
2000
3000
 
2001
3001
  /**
2002
- * Get user info by user ID
3002
+ * Slice time-series by a life event (Phase 79)
3003
+ * Returns aggregated time-series for postings matching accountPattern within the half-open date range of the given life event.
2003
3004
  * @param data The data for the request.
2004
- * @param data.id User ID
2005
- * @param data.region Region code (cn, us, de)
2006
- * @returns unknown User info retrieved successfully
3005
+ * @param data.id Life event ID
3006
+ * @param data.accountPattern
3007
+ * @param data.granularity
3008
+ * @param data.region Region code for tenant context (decorative for life events)
3009
+ * @returns unknown Time-series sliced by the life event range
2007
3010
  * @throws ApiError
2008
3011
  */
2009
- public static userControllerGetUserInfo(
2010
- data: UserControllerGetUserInfoData
2011
- ): CancelablePromise<UserControllerGetUserInfoResponse> {
3012
+ public static eventControllerGetSlice(
3013
+ data: EventControllerGetSliceData
3014
+ ): CancelablePromise<EventControllerGetSliceResponse> {
2012
3015
  return __request(OpenAPI, {
2013
3016
  method: 'GET',
2014
- url: '/api/v1/users/{id}/info',
3017
+ url: '/api/v1/{region}/bean/events/{id}/slice',
2015
3018
  path: {
2016
3019
  id: data.id,
2017
3020
  region: data.region
2018
3021
  },
3022
+ query: {
3023
+ accountPattern: data.accountPattern,
3024
+ granularity: data.granularity
3025
+ },
2019
3026
  errors: {
2020
- 403: 'Cannot access other user info without admin permission'
3027
+ 400: 'accountPattern query param is empty',
3028
+ 404: 'Life event not found'
2021
3029
  }
2022
3030
  });
2023
3031
  }
3032
+ }
2024
3033
 
3034
+ export class OnboardingService {
2025
3035
  /**
2026
- * Update user settings
3036
+ * Bootstrap core accounts + register asset accounts with opening balances (ADR-0113)
2027
3037
  * @param data The data for the request.
2028
- * @param data.region Region code (cn, us, de)
3038
+ * @param data.region Region code for tenant context
2029
3039
  * @param data.requestBody
2030
- * @returns unknown Settings updated successfully
3040
+ * @returns unknown Onboarding bootstrap result.
2031
3041
  * @throws ApiError
2032
3042
  */
2033
- public static userControllerUpdateUserSetting(
2034
- data: UserControllerUpdateUserSettingData
2035
- ): CancelablePromise<UserControllerUpdateUserSettingResponse> {
3043
+ public static onboardingControllerBootstrap(
3044
+ data: OnboardingControllerBootstrapData
3045
+ ): CancelablePromise<OnboardingControllerBootstrapResponse> {
2036
3046
  return __request(OpenAPI, {
2037
- method: 'PUT',
2038
- url: '/api/v1/users/setting',
3047
+ method: 'POST',
3048
+ url: '/api/v1/{region}/bean/onboarding',
2039
3049
  path: {
2040
3050
  region: data.region
2041
3051
  },
2042
3052
  body: data.requestBody,
2043
3053
  mediaType: 'application/json',
2044
3054
  errors: {
2045
- 403: 'Insufficient permissions'
3055
+ 422: 'Invalid region/account path/duplicate paths.'
2046
3056
  }
2047
3057
  });
2048
3058
  }
3059
+ }
2049
3060
 
3061
+ export class BalanceReconciliationService {
2050
3062
  /**
2051
- * Get all user settings paginated (admin only)
3063
+ * Preview reconciliation (book vs actual)
3064
+ * Computes book balance, diff, Beancount-inferred tolerance, and suggested action without persisting.
2052
3065
  * @param data The data for the request.
2053
- * @param data.pageNo Page number
2054
- * @param data.pageSize Page size
2055
- * @param data.region Region code (cn, us, de)
2056
- * @returns unknown Settings list retrieved successfully
3066
+ * @param data.region Region code for tenant context (decorative for reconciliation)
3067
+ * @param data.requestBody
3068
+ * @returns ReconciliationComputeResultDto Reconciliation preview
2057
3069
  * @throws ApiError
2058
3070
  */
2059
- public static userControllerGetAllUserSettingsByPage(
2060
- data: UserControllerGetAllUserSettingsByPageData
2061
- ): CancelablePromise<UserControllerGetAllUserSettingsByPageResponse> {
3071
+ public static reconciliationControllerCompute(
3072
+ data: ReconciliationControllerComputeData
3073
+ ): CancelablePromise<ReconciliationControllerComputeResponse> {
2062
3074
  return __request(OpenAPI, {
2063
- method: 'GET',
2064
- url: '/api/v1/users/settings-by-page',
3075
+ method: 'POST',
3076
+ url: '/api/v1/{region}/bean/reconciliations',
2065
3077
  path: {
2066
3078
  region: data.region
2067
3079
  },
2068
- query: {
2069
- pageNo: data.pageNo,
2070
- pageSize: data.pageSize
3080
+ body: data.requestBody,
3081
+ mediaType: 'application/json',
3082
+ errors: {
3083
+ 404: 'Account not found'
2071
3084
  }
2072
3085
  });
2073
3086
  }
2074
3087
 
2075
3088
  /**
2076
- * Get asset and liability summary for current user
3089
+ * Record a balance assertion
3090
+ * Persists the reconciliation as a BeanBalance assertion (amount = actual, diffAmount = book − actual). Re-reconciling the same day/currency upserts.
2077
3091
  * @param data The data for the request.
2078
- * @param data.region Region code (cn, us, de)
2079
- * @returns unknown Summary retrieved successfully
3092
+ * @param data.region Region code for tenant context (decorative for reconciliation)
3093
+ * @param data.requestBody
3094
+ * @returns ReconciliationRecordDto Balance assertion recorded
2080
3095
  * @throws ApiError
2081
3096
  */
2082
- public static userControllerGetAssetLiabilitySummary(
2083
- data: UserControllerGetAssetLiabilitySummaryData
2084
- ): CancelablePromise<UserControllerGetAssetLiabilitySummaryResponse> {
3097
+ public static reconciliationControllerAssert(
3098
+ data: ReconciliationControllerAssertData
3099
+ ): CancelablePromise<ReconciliationControllerAssertResponse> {
2085
3100
  return __request(OpenAPI, {
2086
- method: 'GET',
2087
- url: '/api/v1/users/asset-liability-summary',
3101
+ method: 'POST',
3102
+ url: '/api/v1/{region}/bean/reconciliations/assert',
2088
3103
  path: {
2089
3104
  region: data.region
3105
+ },
3106
+ body: data.requestBody,
3107
+ mediaType: 'application/json',
3108
+ errors: {
3109
+ 404: 'Account not found'
2090
3110
  }
2091
3111
  });
2092
3112
  }
2093
- }
2094
3113
 
2095
- export class PropertiesService {
2096
3114
  /**
2097
- * Get all system properties
3115
+ * Generate a pad adjusting entry
3116
+ * When book is outside tolerance, synthesizes a Beancount pad transaction (flag P) booking the diff from source_account and persists it. Source defaults to Equity:Opening-Balances.
2098
3117
  * @param data The data for the request.
2099
- * @param data.region Region code (cn, us, de)
2100
- * @returns unknown Properties retrieved successfully
3118
+ * @param data.region Region code for tenant context (decorative for reconciliation)
3119
+ * @param data.requestBody
3120
+ * @returns PadResultDto Pad adjusting entry generated
2101
3121
  * @throws ApiError
2102
3122
  */
2103
- public static propertyControllerGetAll(
2104
- data: PropertyControllerGetAllData
2105
- ): CancelablePromise<PropertyControllerGetAllResponse> {
3123
+ public static reconciliationControllerPad(
3124
+ data: ReconciliationControllerPadData
3125
+ ): CancelablePromise<ReconciliationControllerPadResponse> {
2106
3126
  return __request(OpenAPI, {
2107
- method: 'GET',
2108
- url: '/api/v1/admin/properties',
3127
+ method: 'POST',
3128
+ url: '/api/v1/{region}/bean/reconciliations/pad',
2109
3129
  path: {
2110
3130
  region: data.region
2111
3131
  },
3132
+ body: data.requestBody,
3133
+ mediaType: 'application/json',
2112
3134
  errors: {
2113
- 401: 'Unauthorized',
2114
- 403: 'Forbidden - insufficient permissions'
3135
+ 400: 'Book already within tolerance — no pad needed',
3136
+ 404: 'Account not found'
2115
3137
  }
2116
3138
  });
2117
3139
  }
2118
3140
 
2119
3141
  /**
2120
- * Get property by key
3142
+ * List reconciliation history for an account
3143
+ * Returns recorded balance assertions (most recent first). The latest drives the account-detail "Last <date>" badge.
2121
3144
  * @param data The data for the request.
2122
- * @param data.key Property key
2123
- * @param data.region Region code (cn, us, de)
2124
- * @returns unknown Property retrieved successfully
3145
+ * @param data.accountId BeanAccount id
3146
+ * @param data.region Region code for tenant context (decorative for reconciliation)
3147
+ * @returns ReconciliationRecordDto Reconciliation history
2125
3148
  * @throws ApiError
2126
3149
  */
2127
- public static propertyControllerGetByKey(
2128
- data: PropertyControllerGetByKeyData
2129
- ): CancelablePromise<PropertyControllerGetByKeyResponse> {
3150
+ public static reconciliationControllerHistory(
3151
+ data: ReconciliationControllerHistoryData
3152
+ ): CancelablePromise<ReconciliationControllerHistoryResponse> {
2130
3153
  return __request(OpenAPI, {
2131
3154
  method: 'GET',
2132
- url: '/api/v1/admin/properties/{key}',
3155
+ url: '/api/v1/{region}/bean/accounts/{accountId}/reconciliations',
2133
3156
  path: {
2134
- key: data.key,
3157
+ accountId: data.accountId,
2135
3158
  region: data.region
2136
3159
  },
2137
3160
  errors: {
2138
- 401: 'Unauthorized',
2139
- 403: 'Forbidden - insufficient permissions',
2140
- 404: 'Property not found'
3161
+ 404: 'Account not found'
2141
3162
  }
2142
3163
  });
2143
3164
  }
3165
+ }
2144
3166
 
3167
+ export class BeanExportService {
2145
3168
  /**
2146
- * @param data The data for the request.
2147
- * @param data.region Region code (cn, us, de)
3169
+ * Export Beancount ledger as ZIP
3170
+ * Export all user Beancount data as a ZIP file containing ledger.beancount and yearly files in community format.
2148
3171
  * @returns unknown
2149
3172
  * @throws ApiError
2150
3173
  */
2151
- public static propertyController(
2152
- data: PropertyControllerData
2153
- ): CancelablePromise<PropertyControllerResponse> {
2154
- return __request(OpenAPI, {
2155
- method: 'PUT',
2156
- url: '/api/v1/admin/properties/{key}',
2157
- path: {
2158
- region: data.region
2159
- }
2160
- });
2161
- }
2162
-
2163
- /**
2164
- * @param data The data for the request.
2165
- * @param data.region Region code (cn, us, de)
2166
- * @returns void
2167
- * @throws ApiError
2168
- */
2169
- public static propertyController1(
2170
- data: PropertyController1Data
2171
- ): CancelablePromise<PropertyController1Response> {
3174
+ public static exportControllerExportBeancount(): CancelablePromise<ExportControllerExportBeancountResponse> {
2172
3175
  return __request(OpenAPI, {
2173
- method: 'DELETE',
2174
- url: '/api/v1/admin/properties/{key}',
2175
- path: {
2176
- region: data.region
2177
- }
3176
+ method: 'GET',
3177
+ url: '/api/v1/{region}/bean/export/beancount'
2178
3178
  });
2179
3179
  }
2180
3180
  }
@@ -2184,7 +3184,7 @@ export class BeanImportService {
2184
3184
  * Import a bill file
2185
3185
  * 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).
2186
3186
  * @param data The data for the request.
2187
- * @param data.region Region code (cn, us, de)
3187
+ * @param data.region Region code for tenant context
2188
3188
  * @param data.formData Bill file to import
2189
3189
  * @returns ImportResultDto File imported successfully
2190
3190
  * @throws ApiError
@@ -2213,7 +3213,7 @@ export class BeanImportService {
2213
3213
  * Identify file type
2214
3214
  * 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.
2215
3215
  * @param data The data for the request.
2216
- * @param data.region Region code (cn, us, de)
3216
+ * @param data.region Region code for tenant context
2217
3217
  * @param data.formData File to identify
2218
3218
  * @returns IdentifyResultDto File identification result
2219
3219
  * @throws ApiError
@@ -2235,12 +3235,38 @@ export class BeanImportService {
2235
3235
  });
2236
3236
  }
2237
3237
 
3238
+ /**
3239
+ * Import a Beancount file in community format
3240
+ * 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.
3241
+ * @param data The data for the request.
3242
+ * @param data.region Region code for tenant context
3243
+ * @param data.formData Beancount file to import
3244
+ * @returns unknown Beancount file imported successfully
3245
+ * @throws ApiError
3246
+ */
3247
+ public static fileImportControllerImportBeancount(
3248
+ data: FileImportControllerImportBeancountData
3249
+ ): CancelablePromise<FileImportControllerImportBeancountResponse> {
3250
+ return __request(OpenAPI, {
3251
+ method: 'POST',
3252
+ url: '/api/v1/{region}/bean/import/beancount',
3253
+ path: {
3254
+ region: data.region
3255
+ },
3256
+ formData: data.formData,
3257
+ mediaType: 'multipart/form-data',
3258
+ errors: {
3259
+ 400: 'Bad request - invalid file or no file uploaded'
3260
+ }
3261
+ });
3262
+ }
3263
+
2238
3264
  /**
2239
3265
  * Get importer configuration
2240
3266
  * Returns the current configuration for the specified importer. Creates default configuration if none exists.
2241
3267
  * @param data The data for the request.
2242
- * @param data.importerId Importer identifier. Supported importers: alipay, alipay-web, wechat, boc, boc-credit, ccb, cmb, cmbc, cmbc-credit, icbc, icbc-credit, hsbc-hk
2243
- * @param data.region Region code (cn, us, de)
3268
+ * @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
3269
+ * @param data.region Region code for tenant context
2244
3270
  * @returns ImporterConfigDto Configuration retrieved successfully
2245
3271
  * @throws ApiError
2246
3272
  */
@@ -2262,37 +3288,55 @@ export class BeanImportService {
2262
3288
  }
2263
3289
 
2264
3290
  /**
3291
+ * Update importer configuration
3292
+ * Updates the configuration for the specified importer. Partial updates are supported.
2265
3293
  * @param data The data for the request.
2266
- * @param data.region Region code (cn, us, de)
2267
- * @returns unknown
3294
+ * @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
3295
+ * @param data.region Region code for tenant context
3296
+ * @param data.requestBody Partial configuration update. Only provided fields will be updated.
3297
+ * @returns ImporterConfigDto Configuration updated successfully
2268
3298
  * @throws ApiError
2269
3299
  */
2270
- public static importerConfigController(
2271
- data: ImporterConfigControllerData
2272
- ): CancelablePromise<ImporterConfigControllerResponse> {
3300
+ public static importerConfigControllerUpdateConfig(
3301
+ data: ImporterConfigControllerUpdateConfigData
3302
+ ): CancelablePromise<ImporterConfigControllerUpdateConfigResponse> {
2273
3303
  return __request(OpenAPI, {
2274
3304
  method: 'PUT',
2275
3305
  url: '/api/v1/{region}/bean/import/config/{importerId}',
2276
3306
  path: {
3307
+ importerId: data.importerId,
2277
3308
  region: data.region
3309
+ },
3310
+ body: data.requestBody,
3311
+ mediaType: 'application/json',
3312
+ errors: {
3313
+ 400: 'Invalid input - Validation failed',
3314
+ 404: 'Configuration not found'
2278
3315
  }
2279
3316
  });
2280
3317
  }
2281
3318
 
2282
3319
  /**
3320
+ * Reset configuration to default
3321
+ * Resets the configuration for the specified importer to default values. This operation overwrites all existing configuration.
2283
3322
  * @param data The data for the request.
2284
- * @param data.region Region code (cn, us, de)
2285
- * @returns unknown
3323
+ * @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
3324
+ * @param data.region Region code for tenant context
3325
+ * @returns ImporterConfigDto Configuration reset successfully
2286
3326
  * @throws ApiError
2287
3327
  */
2288
- public static importerConfigController1(
2289
- data: ImporterConfigController1Data
2290
- ): CancelablePromise<ImporterConfigController1Response> {
3328
+ public static importerConfigControllerResetConfig(
3329
+ data: ImporterConfigControllerResetConfigData
3330
+ ): CancelablePromise<ImporterConfigControllerResetConfigResponse> {
2291
3331
  return __request(OpenAPI, {
2292
3332
  method: 'POST',
2293
3333
  url: '/api/v1/{region}/bean/import/config/{importerId}/reset',
2294
3334
  path: {
3335
+ importerId: data.importerId,
2295
3336
  region: data.region
3337
+ },
3338
+ errors: {
3339
+ 400: 'Invalid input - Unsupported importer'
2296
3340
  }
2297
3341
  });
2298
3342
  }
@@ -2323,76 +3367,171 @@ export class ProviderSyncService {
2323
3367
  * 6. Persist validated transactions
2324
3368
  *
2325
3369
  * @param data The data for the request.
2326
- * @param data.providerName Provider name
2327
- * @param data.region Region code
3370
+ * @param data.providerName Provider name
3371
+ * @param data.region Region code for tenant context
3372
+ * @param data.requestBody
3373
+ * @returns ProviderSyncResponseDto Sync completed successfully
3374
+ * @throws ApiError
3375
+ */
3376
+ public static providerSyncControllerSync(
3377
+ data: ProviderSyncControllerSyncData
3378
+ ): CancelablePromise<ProviderSyncControllerSyncResponse> {
3379
+ return __request(OpenAPI, {
3380
+ method: 'POST',
3381
+ url: '/api/v1/{region}/bean/import/provider/{providerName}/sync',
3382
+ path: {
3383
+ providerName: data.providerName,
3384
+ region: data.region
3385
+ },
3386
+ body: data.requestBody,
3387
+ mediaType: 'application/json',
3388
+ errors: {
3389
+ 400: 'Invalid request data',
3390
+ 401: 'Missing or invalid authentication',
3391
+ 404: 'Provider not supported'
3392
+ }
3393
+ });
3394
+ }
3395
+
3396
+ /**
3397
+ * Get supported providers
3398
+ * Returns a list of all providers supported by the sync endpoint.
3399
+ * @param data The data for the request.
3400
+ * @param data.region Region code for tenant context
3401
+ * @returns SupportedProvidersResponseDto List of supported providers
3402
+ * @throws ApiError
3403
+ */
3404
+ public static providerSyncControllerGetSupportedProviders(
3405
+ data: ProviderSyncControllerGetSupportedProvidersData
3406
+ ): CancelablePromise<ProviderSyncControllerGetSupportedProvidersResponse> {
3407
+ return __request(OpenAPI, {
3408
+ method: 'GET',
3409
+ url: '/api/v1/{region}/bean/import/provider/supported',
3410
+ path: {
3411
+ region: data.region
3412
+ },
3413
+ errors: {
3414
+ 401: 'Missing or invalid authentication'
3415
+ }
3416
+ });
3417
+ }
3418
+
3419
+ /**
3420
+ * Check if provider is supported
3421
+ * Returns whether a specific provider is supported.
3422
+ * @param data The data for the request.
3423
+ * @param data.providerName Provider name to check
3424
+ * @param data.region Region code for tenant context
3425
+ * @returns unknown Provider support status
3426
+ * @throws ApiError
3427
+ */
3428
+ public static providerSyncControllerIsProviderSupported(
3429
+ data: ProviderSyncControllerIsProviderSupportedData
3430
+ ): CancelablePromise<ProviderSyncControllerIsProviderSupportedResponse> {
3431
+ return __request(OpenAPI, {
3432
+ method: 'GET',
3433
+ url: '/api/v1/{region}/bean/import/provider/{providerName}/supported',
3434
+ path: {
3435
+ providerName: data.providerName,
3436
+ region: data.region
3437
+ },
3438
+ errors: {
3439
+ 401: 'Missing or invalid authentication'
3440
+ }
3441
+ });
3442
+ }
3443
+ }
3444
+
3445
+ export class ExternalAccountLinksService {
3446
+ /**
3447
+ * Create an external account → BeanAccount mapping (ADR-0113)
3448
+ * @param data The data for the request.
3449
+ * @param data.region Region code for tenant context
2328
3450
  * @param data.requestBody
2329
- * @returns ProviderSyncResponseDto Sync completed successfully
3451
+ * @returns ExternalAccountLinkResponseDto Link created.
2330
3452
  * @throws ApiError
2331
3453
  */
2332
- public static providerSyncControllerSync(
2333
- data: ProviderSyncControllerSyncData
2334
- ): CancelablePromise<ProviderSyncControllerSyncResponse> {
3454
+ public static externalAccountLinkControllerCreate(
3455
+ data: ExternalAccountLinkControllerCreateData
3456
+ ): CancelablePromise<ExternalAccountLinkControllerCreateResponse> {
2335
3457
  return __request(OpenAPI, {
2336
3458
  method: 'POST',
2337
- url: '/api/v1/{region}/bean/import/provider/{providerName}/sync',
3459
+ url: '/api/v1/{region}/bean/external-account-links',
2338
3460
  path: {
2339
- providerName: data.providerName,
2340
3461
  region: data.region
2341
3462
  },
2342
3463
  body: data.requestBody,
2343
3464
  mediaType: 'application/json',
2344
3465
  errors: {
2345
- 400: 'Invalid request data',
2346
- 401: 'Missing or invalid authentication',
2347
- 404: 'Provider not supported'
3466
+ 422: 'beanAccountId not owned, or an active link already exists.'
2348
3467
  }
2349
3468
  });
2350
3469
  }
2351
3470
 
2352
3471
  /**
2353
- * Get supported providers
2354
- * Returns a list of all providers supported by the sync endpoint.
3472
+ * List the user's active external account links
2355
3473
  * @param data The data for the request.
2356
- * @param data.region Region code (cn, us, de)
2357
- * @returns SupportedProvidersResponseDto List of supported providers
3474
+ * @param data.provider
3475
+ * @param data.region Region code for tenant context
3476
+ * @returns ExternalAccountLinkListResponseDto Links retrieved.
2358
3477
  * @throws ApiError
2359
3478
  */
2360
- public static providerSyncControllerGetSupportedProviders(
2361
- data: ProviderSyncControllerGetSupportedProvidersData
2362
- ): CancelablePromise<ProviderSyncControllerGetSupportedProvidersResponse> {
3479
+ public static externalAccountLinkControllerFindAll(
3480
+ data: ExternalAccountLinkControllerFindAllData
3481
+ ): CancelablePromise<ExternalAccountLinkControllerFindAllResponse> {
2363
3482
  return __request(OpenAPI, {
2364
3483
  method: 'GET',
2365
- url: '/api/v1/{region}/bean/import/provider/supported',
3484
+ url: '/api/v1/{region}/bean/external-account-links',
2366
3485
  path: {
2367
3486
  region: data.region
2368
3487
  },
2369
- errors: {
2370
- 401: 'Missing or invalid authentication'
3488
+ query: {
3489
+ provider: data.provider
2371
3490
  }
2372
3491
  });
2373
3492
  }
2374
3493
 
2375
3494
  /**
2376
- * Check if provider is supported
2377
- * Returns whether a specific provider is supported.
3495
+ * Get a single external account link
2378
3496
  * @param data The data for the request.
2379
- * @param data.providerName Provider name to check
2380
- * @param data.region Region code (cn, us, de)
2381
- * @returns unknown Provider support status
3497
+ * @param data.id
3498
+ * @param data.region Region code for tenant context
3499
+ * @returns ExternalAccountLinkResponseDto Link retrieved.
2382
3500
  * @throws ApiError
2383
3501
  */
2384
- public static providerSyncControllerIsProviderSupported(
2385
- data: ProviderSyncControllerIsProviderSupportedData
2386
- ): CancelablePromise<ProviderSyncControllerIsProviderSupportedResponse> {
3502
+ public static externalAccountLinkControllerFindOne(
3503
+ data: ExternalAccountLinkControllerFindOneData
3504
+ ): CancelablePromise<ExternalAccountLinkControllerFindOneResponse> {
2387
3505
  return __request(OpenAPI, {
2388
3506
  method: 'GET',
2389
- url: '/api/v1/{region}/bean/import/provider/{providerName}/supported',
3507
+ url: '/api/v1/{region}/bean/external-account-links/{id}',
2390
3508
  path: {
2391
- providerName: data.providerName,
3509
+ id: data.id,
2392
3510
  region: data.region
2393
3511
  },
2394
3512
  errors: {
2395
- 401: 'Missing or invalid authentication'
3513
+ 422: 'Link not found or not owned by the user.'
3514
+ }
3515
+ });
3516
+ }
3517
+
3518
+ /**
3519
+ * Soft-delete (disconnect) an external account link
3520
+ * @param data The data for the request.
3521
+ * @param data.id
3522
+ * @param data.region Region code for tenant context
3523
+ * @returns void Link soft-deleted; historical transactions are unaffected.
3524
+ * @throws ApiError
3525
+ */
3526
+ public static externalAccountLinkControllerRemove(
3527
+ data: ExternalAccountLinkControllerRemoveData
3528
+ ): CancelablePromise<ExternalAccountLinkControllerRemoveResponse> {
3529
+ return __request(OpenAPI, {
3530
+ method: 'DELETE',
3531
+ url: '/api/v1/{region}/bean/external-account-links/{id}',
3532
+ path: {
3533
+ id: data.id,
3534
+ region: data.region
2396
3535
  }
2397
3536
  });
2398
3537
  }
@@ -2402,7 +3541,7 @@ export class ImportTelemetryService {
2402
3541
  /**
2403
3542
  * Receive anonymous parser failure telemetry
2404
3543
  * @param data The data for the request.
2405
- * @param data.region Region code (cn, us, de)
3544
+ * @param data.region Region code for tenant context
2406
3545
  * @param data.requestBody
2407
3546
  * @returns unknown Telemetry report received
2408
3547
  * @throws ApiError
@@ -2423,6 +3562,54 @@ export class ImportTelemetryService {
2423
3562
  }
2424
3563
  });
2425
3564
  }
3565
+
3566
+ /**
3567
+ * Receive anonymous zero-hit coverage miss report
3568
+ * @param data The data for the request.
3569
+ * @param data.region Region code for tenant context
3570
+ * @param data.requestBody
3571
+ * @returns unknown Coverage miss report received
3572
+ * @throws ApiError
3573
+ */
3574
+ public static telemetryControllerReportCoverageMiss(
3575
+ data: TelemetryControllerReportCoverageMissData
3576
+ ): CancelablePromise<TelemetryControllerReportCoverageMissResponse> {
3577
+ return __request(OpenAPI, {
3578
+ method: 'POST',
3579
+ url: '/api/v1/{region}/bean/import/parser-coverage-miss',
3580
+ path: {
3581
+ region: data.region
3582
+ },
3583
+ body: data.requestBody,
3584
+ mediaType: 'application/json',
3585
+ errors: {
3586
+ 401: 'Unauthorized'
3587
+ }
3588
+ });
3589
+ }
3590
+
3591
+ /**
3592
+ * Coverage metrics (uncovered format aggregation)
3593
+ * @param data The data for the request.
3594
+ * @param data.region Region code for tenant context
3595
+ * @param data.topN Top-N uncovered formats (default 10)
3596
+ * @returns unknown Coverage metrics
3597
+ * @throws ApiError
3598
+ */
3599
+ public static telemetryControllerGetCoverageMetrics(
3600
+ data: TelemetryControllerGetCoverageMetricsData
3601
+ ): CancelablePromise<TelemetryControllerGetCoverageMetricsResponse> {
3602
+ return __request(OpenAPI, {
3603
+ method: 'GET',
3604
+ url: '/api/v1/{region}/bean/import/parser-coverage-metrics',
3605
+ path: {
3606
+ region: data.region
3607
+ },
3608
+ query: {
3609
+ topN: data.topN
3610
+ }
3611
+ });
3612
+ }
2426
3613
  }
2427
3614
 
2428
3615
  export class BeanNlpService {
@@ -2430,7 +3617,7 @@ export class BeanNlpService {
2430
3617
  * Process natural language input
2431
3618
  * 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"
2432
3619
  * @param data The data for the request.
2433
- * @param data.region Region code (cn, us, de)
3620
+ * @param data.region Region code for tenant context
2434
3621
  * @param data.requestBody Natural language transaction input with optional session ID
2435
3622
  * @returns NlpResponseDto NLP processing result - either created transaction or asking for more info
2436
3623
  * @throws ApiError
@@ -2457,7 +3644,7 @@ export class BeanNlpService {
2457
3644
  * Clear dialogue session
2458
3645
  * Clear the current NLP dialogue session. Use this to cancel an ongoing multi-turn dialogue.
2459
3646
  * @param data The data for the request.
2460
- * @param data.region Region code (cn, us, de)
3647
+ * @param data.region Region code for tenant context
2461
3648
  * @param data.sessionId Specific session ID to clear (defaults to user session)
2462
3649
  * @returns void Session cleared successfully
2463
3650
  * @throws ApiError
@@ -2484,7 +3671,7 @@ export class BeanNlpService {
2484
3671
  * Get current session state
2485
3672
  * Get the current NLP dialogue session state. Useful for debugging and displaying session context in UI.
2486
3673
  * @param data The data for the request.
2487
- * @param data.region Region code (cn, us, de)
3674
+ * @param data.region Region code for tenant context
2488
3675
  * @param data.sessionId Specific session ID to get (defaults to user session)
2489
3676
  * @returns unknown Current session state (or null if no active session)
2490
3677
  * @throws ApiError
@@ -2511,37 +3698,33 @@ export class BeanNlpService {
2511
3698
  export class BeanPlatformsService {
2512
3699
  /**
2513
3700
  * Get all platforms with statistics
2514
- * @param data The data for the request.
2515
- * @param data.region Region code (cn, us, de)
2516
3701
  * @returns unknown List of platforms with binding and account counts
2517
3702
  * @throws ApiError
2518
3703
  */
2519
- public static platformControllerFindAll(
2520
- data: PlatformControllerFindAllData
2521
- ): CancelablePromise<PlatformControllerFindAllResponse> {
3704
+ public static platformControllerFindAll(): CancelablePromise<PlatformControllerFindAllResponse> {
2522
3705
  return __request(OpenAPI, {
2523
3706
  method: 'GET',
2524
- url: '/api/v1/bean/platforms',
2525
- path: {
2526
- region: data.region
2527
- }
3707
+ url: '/api/v1/bean/platforms'
2528
3708
  });
2529
3709
  }
2530
3710
 
2531
3711
  /**
3712
+ * Create a new platform
2532
3713
  * @param data The data for the request.
2533
- * @param data.region Region code (cn, us, de)
2534
- * @returns unknown
3714
+ * @param data.requestBody
3715
+ * @returns unknown Platform created successfully
2535
3716
  * @throws ApiError
2536
3717
  */
2537
- public static platformController(
2538
- data: PlatformControllerData
2539
- ): CancelablePromise<PlatformControllerResponse> {
3718
+ public static platformControllerCreate(
3719
+ data: PlatformControllerCreateData
3720
+ ): CancelablePromise<PlatformControllerCreateResponse> {
2540
3721
  return __request(OpenAPI, {
2541
3722
  method: 'POST',
2542
3723
  url: '/api/v1/bean/platforms',
2543
- path: {
2544
- region: data.region
3724
+ body: data.requestBody,
3725
+ mediaType: 'application/json',
3726
+ errors: {
3727
+ 409: 'Platform already exists'
2545
3728
  }
2546
3729
  });
2547
3730
  }
@@ -2549,191 +3732,86 @@ export class BeanPlatformsService {
2549
3732
  /**
2550
3733
  * Get platform list for current user
2551
3734
  * @param data The data for the request.
2552
- * @param data.region Region code (cn, us, de)
2553
- * @returns unknown List of platforms with user binding status
3735
+ * @param data.region Region code (ISO 3166-1 alpha-2) that biases within-type-bucket ordering (local-region platforms first). Case-insensitive — stored/compared UPPERCASE ("cn" == "CN").
3736
+ * @returns PlatformListItemDto List of platforms with user binding status
2554
3737
  * @throws ApiError
2555
3738
  */
2556
3739
  public static platformControllerGetPlatformList(
2557
- data: PlatformControllerGetPlatformListData
3740
+ data: PlatformControllerGetPlatformListData = {}
2558
3741
  ): CancelablePromise<PlatformControllerGetPlatformListResponse> {
2559
3742
  return __request(OpenAPI, {
2560
3743
  method: 'GET',
2561
3744
  url: '/api/v1/bean/platforms/list',
2562
- path: {
2563
- region: data.region
2564
- }
2565
- });
2566
- }
2567
-
2568
- /**
2569
- * @param data The data for the request.
2570
- * @param data.region Region code (cn, us, de)
2571
- * @returns unknown
2572
- * @throws ApiError
2573
- */
2574
- public static platformController1(
2575
- data: PlatformController1Data
2576
- ): CancelablePromise<PlatformController1Response> {
2577
- return __request(OpenAPI, {
2578
- method: 'PUT',
2579
- url: '/api/v1/bean/platforms/{id}',
2580
- path: {
2581
- region: data.region
2582
- }
2583
- });
2584
- }
2585
-
2586
- /**
2587
- * @param data The data for the request.
2588
- * @param data.region Region code (cn, us, de)
2589
- * @returns void
2590
- * @throws ApiError
2591
- */
2592
- public static platformController2(
2593
- data: PlatformController2Data
2594
- ): CancelablePromise<PlatformController2Response> {
2595
- return __request(OpenAPI, {
2596
- method: 'DELETE',
2597
- url: '/api/v1/bean/platforms/{id}',
2598
- path: {
3745
+ query: {
2599
3746
  region: data.region
2600
3747
  }
2601
3748
  });
2602
3749
  }
2603
- }
2604
3750
 
2605
- export class SymbolsService {
2606
3751
  /**
2607
- * Search for symbols
2608
- * Search symbols by query with optional filters for asset class, area, and indices
3752
+ * Match platforms by name or alias
2609
3753
  * @param data The data for the request.
2610
- * @param data.region Region code (cn, us, de)
2611
- * @param data.includeIndices Include index symbols in results
2612
- * @param data.assetSubClass Asset sub-class filter
2613
- * @param data.assetClass Asset class filter
2614
- * @param data.area Geographic area filter (e.g., CN, US)
2615
- * @param data.query Search query string
2616
- * @returns unknown Symbols found successfully
3754
+ * @param data.q Search query — Chinese name, English name, or abbreviation
3755
+ * @param data.region Region code (ISO 3166-1 alpha-2) that biases within-tier ordering (local-region platforms first); also the intended categoryOverrides key. Case-insensitive — stored/compared UPPERCASE ("cn" == "CN").
3756
+ * @returns PlatformMatchResponseDto Matching platforms with overall match type and truncation flag
2617
3757
  * @throws ApiError
2618
3758
  */
2619
- public static symbolControllerLookupSymbol(
2620
- data: SymbolControllerLookupSymbolData
2621
- ): CancelablePromise<SymbolControllerLookupSymbolResponse> {
3759
+ public static platformControllerMatchPlatforms(
3760
+ data: PlatformControllerMatchPlatformsData
3761
+ ): CancelablePromise<PlatformControllerMatchPlatformsResponse> {
2622
3762
  return __request(OpenAPI, {
2623
3763
  method: 'GET',
2624
- url: '/api/v1/market/symbols/lookup',
2625
- path: {
2626
- region: data.region
2627
- },
3764
+ url: '/api/v1/bean/platforms/match',
2628
3765
  query: {
2629
- includeIndices: data.includeIndices,
2630
- assetSubClass: data.assetSubClass,
2631
- assetClass: data.assetClass,
2632
- area: data.area,
2633
- query: data.query
2634
- },
2635
- errors: {
2636
- 400: 'Invalid query parameters'
3766
+ q: data.q,
3767
+ region: data.region
2637
3768
  }
2638
3769
  });
2639
3770
  }
2640
3771
 
2641
3772
  /**
2642
- * Get symbol data
2643
- * Retrieve detailed symbol information including optional historical data
3773
+ * Update a platform
2644
3774
  * @param data The data for the request.
2645
- * @param data.dataSource Data source provider
2646
- * @param data.symbol Symbol identifier (e.g., ticker code)
2647
- * @param data.region Region code (cn, us, de)
2648
- * @param data.includeHistoricalData Include historical price data (0 or 1)
2649
- * @returns unknown Symbol data retrieved successfully
3775
+ * @param data.id Platform ID
3776
+ * @param data.requestBody
3777
+ * @returns unknown Platform updated successfully
2650
3778
  * @throws ApiError
2651
3779
  */
2652
- public static symbolControllerGetSymbolData(
2653
- data: SymbolControllerGetSymbolDataData
2654
- ): CancelablePromise<SymbolControllerGetSymbolDataResponse> {
3780
+ public static platformControllerUpdate(
3781
+ data: PlatformControllerUpdateData
3782
+ ): CancelablePromise<PlatformControllerUpdateResponse> {
2655
3783
  return __request(OpenAPI, {
2656
- method: 'GET',
2657
- url: '/api/v1/market/symbols/{dataSource}/{symbol}',
3784
+ method: 'PUT',
3785
+ url: '/api/v1/bean/platforms/{id}',
2658
3786
  path: {
2659
- dataSource: data.dataSource,
2660
- symbol: data.symbol,
2661
- region: data.region
2662
- },
2663
- query: {
2664
- includeHistoricalData: data.includeHistoricalData
3787
+ id: data.id
2665
3788
  },
3789
+ body: data.requestBody,
3790
+ mediaType: 'application/json',
2666
3791
  errors: {
2667
- 400: 'Invalid data source',
2668
- 404: 'Symbol not found'
3792
+ 404: 'Platform not found'
2669
3793
  }
2670
3794
  });
2671
3795
  }
2672
3796
 
2673
3797
  /**
2674
- * Gather symbol data for specific date
2675
- * Retrieve historical symbol data for a specific date
3798
+ * Delete a platform
2676
3799
  * @param data The data for the request.
2677
- * @param data.dataSource Data source provider
2678
- * @param data.dateString Date in ISO 8601 format (YYYY-MM-DD)
2679
- * @param data.symbol Symbol identifier (e.g., ticker code)
2680
- * @param data.region Region code (cn, us, de)
2681
- * @returns unknown Historical data retrieved successfully
3800
+ * @param data.id Platform ID
3801
+ * @returns void Platform deleted successfully
2682
3802
  * @throws ApiError
2683
3803
  */
2684
- public static symbolControllerGatherSymbolForDate(
2685
- data: SymbolControllerGatherSymbolForDateData
2686
- ): CancelablePromise<SymbolControllerGatherSymbolForDateResponse> {
3804
+ public static platformControllerDelete(
3805
+ data: PlatformControllerDeleteData
3806
+ ): CancelablePromise<PlatformControllerDeleteResponse> {
2687
3807
  return __request(OpenAPI, {
2688
- method: 'GET',
2689
- url: '/api/v1/market/symbols/{dataSource}/{symbol}/{dateString}',
3808
+ method: 'DELETE',
3809
+ url: '/api/v1/bean/platforms/{id}',
2690
3810
  path: {
2691
- dataSource: data.dataSource,
2692
- dateString: data.dateString,
2693
- symbol: data.symbol,
2694
- region: data.region
3811
+ id: data.id
2695
3812
  },
2696
3813
  errors: {
2697
- 400: 'Invalid date format',
2698
- 404: 'Symbol data not found for specified date'
2699
- }
2700
- });
2701
- }
2702
-
2703
- /**
2704
- * @param data The data for the request.
2705
- * @param data.region Region code (cn, us, de)
2706
- * @returns unknown
2707
- * @throws ApiError
2708
- */
2709
- public static symbolController(
2710
- data: SymbolControllerData
2711
- ): CancelablePromise<SymbolControllerResponse> {
2712
- return __request(OpenAPI, {
2713
- method: 'PUT',
2714
- url: '/api/v1/market/symbols/yahoo/batch-update',
2715
- path: {
2716
- region: data.region
2717
- }
2718
- });
2719
- }
2720
- }
2721
-
2722
- export class DefaultService {
2723
- /**
2724
- * @param data The data for the request.
2725
- * @param data.region Region code (cn, us, de)
2726
- * @returns unknown
2727
- * @throws ApiError
2728
- */
2729
- public static cacheControllerFlushCache(
2730
- data: CacheControllerFlushCacheData
2731
- ): CancelablePromise<CacheControllerFlushCacheResponse> {
2732
- return __request(OpenAPI, {
2733
- method: 'POST',
2734
- url: '/api/v1/cache/flush',
2735
- path: {
2736
- region: data.region
3814
+ 404: 'Platform not found'
2737
3815
  }
2738
3816
  });
2739
3817
  }
@@ -2744,7 +3822,7 @@ export class DashboardService {
2744
3822
  * Get net worth overview
2745
3823
  * Returns total net worth with breakdown of assets and liabilities
2746
3824
  * @param data The data for the request.
2747
- * @param data.region Region code (cn, us, de)
3825
+ * @param data.region Region code for tenant context
2748
3826
  * @param data.date Date for balance calculation (ISO 8601 format)
2749
3827
  * @returns NetWorthResponseDto Net worth retrieved successfully
2750
3828
  * @throws ApiError
@@ -2771,9 +3849,10 @@ export class DashboardService {
2771
3849
  * Get accounts grouped by platform
2772
3850
  * Returns accounts with balances grouped by financial platform
2773
3851
  * @param data The data for the request.
2774
- * @param data.region Region code (cn, us, de)
3852
+ * @param data.region Region code for tenant context
2775
3853
  * @param data.groupBy Grouping strategy
2776
3854
  * @param data.date Date for balance calculation (ISO 8601 format)
3855
+ * @param data.accountId Scope to a single account (only valid with groupBy=holdingAssetClass, ADR-0105 §6)
2777
3856
  * @returns unknown Accounts retrieved successfully. Response type depends on groupBy parameter.
2778
3857
  * @throws ApiError
2779
3858
  */
@@ -2788,159 +3867,105 @@ export class DashboardService {
2788
3867
  },
2789
3868
  query: {
2790
3869
  groupBy: data.groupBy,
2791
- date: data.date
2792
- },
2793
- errors: {
2794
- 401: 'User not authenticated'
2795
- }
2796
- });
2797
- }
2798
-
2799
- /**
2800
- * Get cash flow summary
2801
- * Returns income, expenses, and savings for a monthly period
2802
- * @param data The data for the request.
2803
- * @param data.period Period in YYYY-MM format
2804
- * @param data.region Region code (cn, us, de)
2805
- * @returns CashFlowResponseDto Cash flow retrieved successfully
2806
- * @throws ApiError
2807
- */
2808
- public static dashboardControllerGetCashFlow(
2809
- data: DashboardControllerGetCashFlowData
2810
- ): CancelablePromise<DashboardControllerGetCashFlowResponse> {
2811
- return __request(OpenAPI, {
2812
- method: 'GET',
2813
- url: '/api/v1/{region}/dashboard/cash-flow',
2814
- path: {
2815
- region: data.region
2816
- },
2817
- query: {
2818
- period: data.period
2819
- },
2820
- errors: {
2821
- 400: 'Invalid period format',
2822
- 401: 'User not authenticated'
2823
- }
2824
- });
2825
- }
2826
- }
2827
-
2828
- export class ReportingService {
2829
- /**
2830
- * Get portfolio value trends
2831
- *
2832
- * Returns time series data of portfolio net worth.
2833
- *
2834
- * **Multi-currency Support:**
2835
- * - `series[].byCurrency` - Currency breakdown for each data point
2836
- * - `byCurrency` - Separate time series grouped by currency
2837
- * - `warnings` - Exchange rate warnings if conversion failed
2838
- *
2839
- * **Parameters:**
2840
- * - `period`: Time period (1m, 3m, 6m, 1y)
2841
- * - `granularity`: Data granularity (day, week, month)
2842
- *
3870
+ date: data.date,
3871
+ accountId: data.accountId
3872
+ },
3873
+ errors: {
3874
+ 401: 'User not authenticated'
3875
+ }
3876
+ });
3877
+ }
3878
+
3879
+ /**
3880
+ * Get cash flow summary
3881
+ * Returns income, expenses, and savings for a monthly period
2843
3882
  * @param data The data for the request.
2844
- * @param data.region Region code (cn, us, de)
2845
- * @param data.period Time period
2846
- * @param data.granularity Data granularity
2847
- * @returns PortfolioTrendsResponseDto Trends retrieved successfully
3883
+ * @param data.period Period in YYYY-MM format
3884
+ * @param data.region Region code for tenant context
3885
+ * @returns CashFlowResponseDto Cash flow retrieved successfully
2848
3886
  * @throws ApiError
2849
3887
  */
2850
- public static reportingControllerGetPortfolioTrends(
2851
- data: ReportingControllerGetPortfolioTrendsData
2852
- ): CancelablePromise<ReportingControllerGetPortfolioTrendsResponse> {
3888
+ public static dashboardControllerGetCashFlow(
3889
+ data: DashboardControllerGetCashFlowData
3890
+ ): CancelablePromise<DashboardControllerGetCashFlowResponse> {
2853
3891
  return __request(OpenAPI, {
2854
3892
  method: 'GET',
2855
- url: '/api/v1/{region}/reporting/portfolio/trends',
3893
+ url: '/api/v1/{region}/dashboard/cash-flow',
2856
3894
  path: {
2857
3895
  region: data.region
2858
3896
  },
2859
3897
  query: {
2860
- period: data.period,
2861
- granularity: data.granularity
3898
+ period: data.period
2862
3899
  },
2863
3900
  errors: {
3901
+ 400: 'Invalid period format',
2864
3902
  401: 'User not authenticated'
2865
3903
  }
2866
3904
  });
2867
3905
  }
2868
3906
 
2869
3907
  /**
2870
- * Generate portfolio snapshot
2871
- *
2872
- * Manually generate a portfolio snapshot for a specific date.
2873
- *
2874
- * **Multi-currency Support:**
2875
- * - Fetches balances grouped by currency
2876
- * - Uses user's baseCurrency setting for conversion
2877
- * - Stores exchange rates and warnings
2878
- *
2879
- * **Use Cases:**
2880
- * - Testing snapshot generation
2881
- * - Force regeneration after data correction
2882
- * - Initial setup for new users
2883
- *
3908
+ * Get expenses/income grouped by functional category
3909
+ * 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)
2884
3910
  * @param data The data for the request.
2885
- * @param data.region Region code (cn, us, de)
2886
- * @param data.requestBody Optional date (defaults to today)
2887
- * @returns GenerateSnapshotResponse Snapshot generated successfully
3911
+ * @param data.region Region code for tenant context
3912
+ * @param data.groupBy Grouping strategy
3913
+ * @param data.period Time window (1m = current calendar month)
3914
+ * @param data.flow Account root to aggregate (expense → ^Expenses:, income → ^Income:)
3915
+ * @returns ExpensesByCategoryResponseDto Expenses retrieved successfully
2888
3916
  * @throws ApiError
2889
3917
  */
2890
- public static reportingControllerGenerateSnapshot(
2891
- data: ReportingControllerGenerateSnapshotData
2892
- ): CancelablePromise<ReportingControllerGenerateSnapshotResponse> {
3918
+ public static dashboardControllerGetExpenses(
3919
+ data: DashboardControllerGetExpensesData
3920
+ ): CancelablePromise<DashboardControllerGetExpensesResponse> {
2893
3921
  return __request(OpenAPI, {
2894
- method: 'POST',
2895
- url: '/api/v1/{region}/reporting/snapshots/generate',
3922
+ method: 'GET',
3923
+ url: '/api/v1/{region}/dashboard/expenses',
2896
3924
  path: {
2897
3925
  region: data.region
2898
3926
  },
2899
- body: data.requestBody,
2900
- mediaType: 'application/json',
3927
+ query: {
3928
+ groupBy: data.groupBy,
3929
+ period: data.period,
3930
+ flow: data.flow
3931
+ },
2901
3932
  errors: {
2902
- 400: 'Invalid date format',
3933
+ 400: 'Invalid groupBy or period',
2903
3934
  401: 'User not authenticated'
2904
3935
  }
2905
3936
  });
2906
3937
  }
3938
+ }
2907
3939
 
3940
+ export class InvestmentService {
2908
3941
  /**
2909
- * Backfill portfolio snapshots
2910
- *
2911
- * Generate snapshots for a date range (historical data backfill).
2912
- *
2913
- * **Multi-currency Support:**
2914
- * - Each snapshot includes multi-currency data
2915
- * - Uses exchange rates available at generation time
2916
- * - Warnings stored for missing exchange rates
2917
- *
2918
- * **Best Practices:**
2919
- * - Use for initial setup after account configuration
2920
- * - Run during low-traffic periods for large date ranges
2921
- * - Existing snapshots are skipped (not regenerated)
2922
- *
3942
+ * Get per-holding unrealized + realized P&L
3943
+ * Average-cost unrealized P&L per account × commodity, plus cumulative realized P&L on sold lots (method = FIFO | average, default average).
2923
3944
  * @param data The data for the request.
2924
- * @param data.region Region code (cn, us, de)
2925
- * @param data.requestBody
2926
- * @returns BackfillSnapshotsResponse Backfill completed successfully
3945
+ * @param data.region Region code for tenant context
3946
+ * @param data.asOf As-of date (ISO 8601), defaults to today
3947
+ * @param data.accountId Scope to a single account
3948
+ * @param data.method Realized-P&L lot-matching method (default average). Does not affect the average-cost unrealized basis.
3949
+ * @returns HoldingPnlResponseDto Holding P&L retrieved successfully
2927
3950
  * @throws ApiError
2928
3951
  */
2929
- public static reportingControllerBackfillSnapshots(
2930
- data: ReportingControllerBackfillSnapshotsData
2931
- ): CancelablePromise<ReportingControllerBackfillSnapshotsResponse> {
3952
+ public static holdingPnlControllerGetHoldingPnl(
3953
+ data: HoldingPnlControllerGetHoldingPnlData
3954
+ ): CancelablePromise<HoldingPnlControllerGetHoldingPnlResponse> {
2932
3955
  return __request(OpenAPI, {
2933
- method: 'POST',
2934
- url: '/api/v1/{region}/reporting/snapshots/backfill',
3956
+ method: 'GET',
3957
+ url: '/api/v1/{region}/investment/holdings/pnl',
2935
3958
  path: {
2936
3959
  region: data.region
2937
3960
  },
2938
- body: data.requestBody,
2939
- mediaType: 'application/json',
3961
+ query: {
3962
+ asOf: data.asOf,
3963
+ accountId: data.accountId,
3964
+ method: data.method
3965
+ },
2940
3966
  errors: {
2941
- 400: 'Invalid date format or range',
2942
- 401: 'User not authenticated',
2943
- 409: 'Backfill already in progress for this user'
3967
+ 400: 'Invalid asOf format/value/future date, invalid accountId format, or unsupported method',
3968
+ 401: 'User not authenticated'
2944
3969
  }
2945
3970
  });
2946
3971
  }
@@ -2948,19 +3973,17 @@ export class ReportingService {
2948
3973
 
2949
3974
  export class ApiKeysService {
2950
3975
  /**
2951
- * @param data The data for the request.
2952
- * @param data.region Region code (cn, us, de)
2953
- * @returns unknown
3976
+ * Create API key
3977
+ * Generates a new API key for the authenticated user
3978
+ * @returns unknown API key created successfully
2954
3979
  * @throws ApiError
2955
3980
  */
2956
- public static apiKeysController(
2957
- data: ApiKeysControllerData
2958
- ): CancelablePromise<ApiKeysControllerResponse> {
3981
+ public static apiKeysControllerCreateApiKey(): CancelablePromise<ApiKeysControllerCreateApiKeyResponse> {
2959
3982
  return __request(OpenAPI, {
2960
3983
  method: 'POST',
2961
3984
  url: '/api/v1/auth/api-keys',
2962
- path: {
2963
- region: data.region
3985
+ errors: {
3986
+ 403: 'Insufficient permissions to create API key'
2964
3987
  }
2965
3988
  });
2966
3989
  }
@@ -2970,9 +3993,8 @@ export class AuthService {
2970
3993
  /**
2971
3994
  * Anonymous login with access token
2972
3995
  * @param data The data for the request.
2973
- * @param data.region Region code (cn, us, de)
2974
3996
  * @param data.requestBody
2975
- * @returns unknown Login successful
3997
+ * @returns AnonymousLoginResponseDto Login successful
2976
3998
  * @throws ApiError
2977
3999
  */
2978
4000
  public static authControllerAccessTokenLogin(
@@ -2981,9 +4003,6 @@ export class AuthService {
2981
4003
  return __request(OpenAPI, {
2982
4004
  method: 'POST',
2983
4005
  url: '/api/v1/auth/sessions/anonymous',
2984
- path: {
2985
- region: data.region
2986
- },
2987
4006
  body: data.requestBody,
2988
4007
  mediaType: 'application/json',
2989
4008
  errors: {
@@ -2993,6 +4012,19 @@ export class AuthService {
2993
4012
  }
2994
4013
  }
2995
4014
 
4015
+ export class DefaultService {
4016
+ /**
4017
+ * @returns unknown
4018
+ * @throws ApiError
4019
+ */
4020
+ public static cacheControllerFlushCache(): CancelablePromise<CacheControllerFlushCacheResponse> {
4021
+ return __request(OpenAPI, {
4022
+ method: 'POST',
4023
+ url: '/api/v1/cache/flush'
4024
+ });
4025
+ }
4026
+ }
4027
+
2996
4028
  export class ExchangeRateService {
2997
4029
  /**
2998
4030
  * Get exchange rate for currency pair
@@ -3000,7 +4032,6 @@ export class ExchangeRateService {
3000
4032
  * @param data The data for the request.
3001
4033
  * @param data.symbol Currency pair symbol (e.g., USDCNY, EURUSD)
3002
4034
  * @param data.dateString Date in ISO format (YYYY-MM-DD)
3003
- * @param data.region Region code (cn, us, de)
3004
4035
  * @returns unknown Exchange rate retrieved successfully
3005
4036
  * @throws ApiError
3006
4037
  */
@@ -3012,8 +4043,7 @@ export class ExchangeRateService {
3012
4043
  url: '/api/v1/market/exchange-rates/{symbol}/{dateString}',
3013
4044
  path: {
3014
4045
  symbol: data.symbol,
3015
- dateString: data.dateString,
3016
- region: data.region
4046
+ dateString: data.dateString
3017
4047
  },
3018
4048
  errors: {
3019
4049
  404: 'Exchange rate not found for the specified currency pair and date'
@@ -3025,20 +4055,13 @@ export class ExchangeRateService {
3025
4055
  export class HealthService {
3026
4056
  /**
3027
4057
  * Basic health check for K8s/load balancer probes
3028
- * @param data The data for the request.
3029
- * @param data.region Region code (cn, us, de)
3030
4058
  * @returns unknown Service is healthy
3031
4059
  * @throws ApiError
3032
4060
  */
3033
- public static healthControllerGetHealth(
3034
- data: HealthControllerGetHealthData
3035
- ): CancelablePromise<HealthControllerGetHealthResponse> {
4061
+ public static healthControllerGetHealth(): CancelablePromise<HealthControllerGetHealthResponse> {
3036
4062
  return __request(OpenAPI, {
3037
4063
  method: 'GET',
3038
4064
  url: '/api/v1/health',
3039
- path: {
3040
- region: data.region
3041
- },
3042
4065
  errors: {
3043
4066
  503: 'Service unavailable'
3044
4067
  }
@@ -3047,42 +4070,43 @@ export class HealthService {
3047
4070
 
3048
4071
  /**
3049
4072
  * Check database connection health
3050
- * @param data The data for the request.
3051
- * @param data.region Region code (cn, us, de)
3052
4073
  * @returns unknown Database is healthy
3053
4074
  * @throws ApiError
3054
4075
  */
3055
- public static healthControllerCheckDatabase(
3056
- data: HealthControllerCheckDatabaseData
3057
- ): CancelablePromise<HealthControllerCheckDatabaseResponse> {
4076
+ public static healthControllerCheckDatabase(): CancelablePromise<HealthControllerCheckDatabaseResponse> {
3058
4077
  return __request(OpenAPI, {
3059
4078
  method: 'GET',
3060
4079
  url: '/api/v1/health/database',
3061
- path: {
3062
- region: data.region
3063
- },
3064
4080
  errors: {
3065
4081
  503: 'Database unavailable'
3066
4082
  }
3067
4083
  });
3068
4084
  }
3069
4085
 
4086
+ /**
4087
+ * Check OpenBB schema status
4088
+ * @returns unknown OpenBB status
4089
+ * @throws ApiError
4090
+ */
4091
+ public static healthControllerCheckOpenBb(): CancelablePromise<HealthControllerCheckOpenBbResponse> {
4092
+ return __request(OpenAPI, {
4093
+ method: 'GET',
4094
+ url: '/api/v1/health/openbb',
4095
+ errors: {
4096
+ 503: 'OpenBB unavailable'
4097
+ }
4098
+ });
4099
+ }
4100
+
3070
4101
  /**
3071
4102
  * Check Redis connection health
3072
- * @param data The data for the request.
3073
- * @param data.region Region code (cn, us, de)
3074
4103
  * @returns unknown Redis is healthy
3075
4104
  * @throws ApiError
3076
4105
  */
3077
- public static healthControllerCheckRedis(
3078
- data: HealthControllerCheckRedisData
3079
- ): CancelablePromise<HealthControllerCheckRedisResponse> {
4106
+ public static healthControllerCheckRedis(): CancelablePromise<HealthControllerCheckRedisResponse> {
3080
4107
  return __request(OpenAPI, {
3081
4108
  method: 'GET',
3082
4109
  url: '/api/v1/health/redis',
3083
- path: {
3084
- region: data.region
3085
- },
3086
4110
  errors: {
3087
4111
  503: 'Redis unavailable'
3088
4112
  }
@@ -3091,20 +4115,13 @@ export class HealthService {
3091
4115
 
3092
4116
  /**
3093
4117
  * Get status of all circuit breakers
3094
- * @param data The data for the request.
3095
- * @param data.region Region code (cn, us, de)
3096
4118
  * @returns unknown Circuit breaker status
3097
4119
  * @throws ApiError
3098
4120
  */
3099
- public static healthControllerGetCircuitBreakersHealth(
3100
- data: HealthControllerGetCircuitBreakersHealthData
3101
- ): CancelablePromise<HealthControllerGetCircuitBreakersHealthResponse> {
4121
+ public static healthControllerGetCircuitBreakersHealth(): CancelablePromise<HealthControllerGetCircuitBreakersHealthResponse> {
3102
4122
  return __request(OpenAPI, {
3103
4123
  method: 'GET',
3104
4124
  url: '/api/v1/health/circuit-breakers',
3105
- path: {
3106
- region: data.region
3107
- },
3108
4125
  errors: {
3109
4126
  401: 'Unauthorized',
3110
4127
  500: 'Internal error'
@@ -3116,7 +4133,6 @@ export class HealthService {
3116
4133
  * Reset a circuit breaker to CLOSED state
3117
4134
  * @param data The data for the request.
3118
4135
  * @param data.name Circuit breaker name to reset
3119
- * @param data.region Region code (cn, us, de)
3120
4136
  * @returns unknown Circuit breaker reset successfully
3121
4137
  * @throws ApiError
3122
4138
  */
@@ -3127,8 +4143,7 @@ export class HealthService {
3127
4143
  method: 'POST',
3128
4144
  url: '/api/v1/health/circuit-breakers/{name}/reset',
3129
4145
  path: {
3130
- name: data.name,
3131
- region: data.region
4146
+ name: data.name
3132
4147
  },
3133
4148
  errors: {
3134
4149
  401: 'Unauthorized',
@@ -3139,222 +4154,79 @@ export class HealthService {
3139
4154
 
3140
4155
  /**
3141
4156
  * Get health check metrics and statistics
3142
- * @param data The data for the request.
3143
- * @param data.region Region code (cn, us, de)
3144
4157
  * @returns unknown Health metrics
3145
4158
  * @throws ApiError
3146
4159
  */
3147
- public static healthControllerGetMetrics(
3148
- data: HealthControllerGetMetricsData
3149
- ): CancelablePromise<HealthControllerGetMetricsResponse> {
4160
+ public static healthControllerGetMetrics(): CancelablePromise<HealthControllerGetMetricsResponse> {
3150
4161
  return __request(OpenAPI, {
3151
4162
  method: 'GET',
3152
4163
  url: '/api/v1/health/metrics',
3153
- path: {
3154
- region: data.region
3155
- },
3156
4164
  errors: {
3157
4165
  401: 'Unauthorized'
3158
4166
  }
3159
4167
  });
3160
4168
  }
3161
-
3162
- /**
3163
- * Check health of a specific data enhancer
3164
- * @param data The data for the request.
3165
- * @param data.name Data enhancer name
3166
- * @param data.region Region code (cn, us, de)
3167
- * @returns unknown Data enhancer is healthy
3168
- * @throws ApiError
3169
- */
3170
- public static healthControllerGetHealthOfDataEnhancer(
3171
- data: HealthControllerGetHealthOfDataEnhancerData
3172
- ): CancelablePromise<HealthControllerGetHealthOfDataEnhancerResponse> {
3173
- return __request(OpenAPI, {
3174
- method: 'GET',
3175
- url: '/api/v1/health/data-enhancer/{name}',
3176
- path: {
3177
- name: data.name,
3178
- region: data.region
3179
- },
3180
- errors: {
3181
- 401: 'Unauthorized',
3182
- 503: 'Data enhancer unavailable'
3183
- }
3184
- });
3185
- }
3186
-
3187
- /**
3188
- * Check health of all data providers
3189
- * @param data The data for the request.
3190
- * @param data.region Region code (cn, us, de)
3191
- * @returns unknown Data providers health status
3192
- * @throws ApiError
3193
- */
3194
- public static healthControllerCheckDataProviders(
3195
- data: HealthControllerCheckDataProvidersData
3196
- ): CancelablePromise<HealthControllerCheckDataProvidersResponse> {
3197
- return __request(OpenAPI, {
3198
- method: 'GET',
3199
- url: '/api/v1/health/data-providers',
3200
- path: {
3201
- region: data.region
3202
- },
3203
- errors: {
3204
- 401: 'Unauthorized',
3205
- 503: 'Data providers check failed'
3206
- }
3207
- });
3208
- }
3209
-
3210
- /**
3211
- * Check health of a specific data provider
3212
- * @param data The data for the request.
3213
- * @param data.dataSource Data source identifier
3214
- * @param data.region Region code (cn, us, de)
3215
- * @returns unknown Data provider is healthy
3216
- * @throws ApiError
3217
- */
3218
- public static healthControllerGetHealthOfDataProvider(
3219
- data: HealthControllerGetHealthOfDataProviderData
3220
- ): CancelablePromise<HealthControllerGetHealthOfDataProviderResponse> {
3221
- return __request(OpenAPI, {
3222
- method: 'GET',
3223
- url: '/api/v1/health/data-provider/{dataSource}',
3224
- path: {
3225
- dataSource: data.dataSource,
3226
- region: data.region
3227
- },
3228
- errors: {
3229
- 400: 'Invalid data source',
3230
- 401: 'Unauthorized',
3231
- 503: 'Data provider unavailable'
3232
- }
3233
- });
3234
- }
3235
4169
  }
3236
4170
 
3237
4171
  export class InfoService {
3238
4172
  /**
3239
4173
  * Get system information
3240
- * @param data The data for the request.
3241
- * @param data.region Region code (cn, us, de)
3242
4174
  * @returns unknown System information retrieved successfully
3243
4175
  * @throws ApiError
3244
4176
  */
3245
- public static infoControllerGetInfo(
3246
- data: InfoControllerGetInfoData
3247
- ): CancelablePromise<InfoControllerGetInfoResponse> {
4177
+ public static infoControllerGetInfo(): CancelablePromise<InfoControllerGetInfoResponse> {
3248
4178
  return __request(OpenAPI, {
3249
4179
  method: 'GET',
3250
- url: '/api/v1/system/info',
3251
- path: {
3252
- region: data.region
3253
- }
4180
+ url: '/api/v1/system/info'
3254
4181
  });
3255
4182
  }
3256
4183
  }
3257
4184
 
3258
- export class LogosService {
3259
- /**
3260
- * Get asset logo by data source and symbol
3261
- * @param data The data for the request.
3262
- * @param data.dataSource Data source identifier (e.g., YAHOO, COINGECKO)
3263
- * @param data.symbol Asset symbol (e.g., AAPL, BTC)
3264
- * @param data.region Region code (cn, us, de)
3265
- * @returns unknown Logo image stream (favicon)
3266
- * @throws ApiError
3267
- */
3268
- public static logoControllerGetLogoByDataSourceAndSymbol(
3269
- data: LogoControllerGetLogoByDataSourceAndSymbolData
3270
- ): CancelablePromise<LogoControllerGetLogoByDataSourceAndSymbolResponse> {
3271
- return __request(OpenAPI, {
3272
- method: 'GET',
3273
- url: '/api/v1/market/logos/{dataSource}/{symbol}',
3274
- path: {
3275
- dataSource: data.dataSource,
3276
- symbol: data.symbol,
3277
- region: data.region
3278
- },
3279
- errors: {
3280
- 401: 'Unauthorized',
3281
- 404: 'Logo not found for the specified asset',
3282
- 503: 'Service unavailable'
3283
- }
3284
- });
3285
- }
3286
-
4185
+ export class MarketDataService {
3287
4186
  /**
3288
- * Get website favicon by URL
4187
+ * Search market symbols by name or code
4188
+ * Ranked search over the openbb catalog. Empty `q` returns [].
3289
4189
  * @param data The data for the request.
3290
- * @param data.url Website URL to fetch favicon from
3291
- * @param data.region Region code (cn, us, de)
3292
- * @returns unknown Logo image stream (favicon)
4190
+ * @param data.q Search term — matched against symbol and instrument name. Empty string returns [].
4191
+ * @param data.limit Maximum number of results (clamped 1..50)
4192
+ * @param data.exchange Filter by exchange code (e.g. US, HK, SS, SZ)
4193
+ * @param data.assetType Filter by OpenBB asset_type (e.g. stock, etf)
4194
+ * @returns SymbolSearchResultDto Ranked search results
3293
4195
  * @throws ApiError
3294
4196
  */
3295
- public static logoControllerGetLogoByUrl(
3296
- data: LogoControllerGetLogoByUrlData
3297
- ): CancelablePromise<LogoControllerGetLogoByUrlResponse> {
4197
+ public static symbolControllerSearch(
4198
+ data: SymbolControllerSearchData
4199
+ ): CancelablePromise<SymbolControllerSearchResponse> {
3298
4200
  return __request(OpenAPI, {
3299
4201
  method: 'GET',
3300
- url: '/api/v1/market/logos',
3301
- path: {
3302
- region: data.region
3303
- },
4202
+ url: '/api/v1/market/symbols/search',
3304
4203
  query: {
3305
- url: data.url
3306
- },
3307
- errors: {
3308
- 401: 'Unauthorized',
3309
- 503: 'Service unavailable'
4204
+ q: data.q,
4205
+ limit: data.limit,
4206
+ exchange: data.exchange,
4207
+ assetType: data.assetType
3310
4208
  }
3311
4209
  });
3312
4210
  }
3313
- }
3314
4211
 
3315
- export class MarketDataService {
3316
4212
  /**
3317
- * Get market data by symbol
3318
- * Retrieves market data and asset profile for a given symbol and data source
4213
+ * Get a market symbol quote
3319
4214
  * @param data The data for the request.
3320
- * @param data.dataSource Data source provider
3321
- * @param data.symbol Symbol code
3322
- * @param data.region Region code (cn, us, de)
3323
- * @returns unknown Market data retrieved successfully
4215
+ * @param data.symbol
4216
+ * @returns SymbolQuoteDto Symbol quote
3324
4217
  * @throws ApiError
3325
4218
  */
3326
- public static marketDataControllerGetMarketDataBySymbol(
3327
- data: MarketDataControllerGetMarketDataBySymbolData
3328
- ): CancelablePromise<MarketDataControllerGetMarketDataBySymbolResponse> {
4219
+ public static symbolControllerGetQuote(
4220
+ data: SymbolControllerGetQuoteData
4221
+ ): CancelablePromise<SymbolControllerGetQuoteResponse> {
3329
4222
  return __request(OpenAPI, {
3330
4223
  method: 'GET',
3331
- url: '/api/v1/market-data/{dataSource}/{symbol}',
4224
+ url: '/api/v1/market/symbols/{symbol}/quote',
3332
4225
  path: {
3333
- dataSource: data.dataSource,
3334
- symbol: data.symbol,
3335
- region: data.region
4226
+ symbol: data.symbol
3336
4227
  },
3337
4228
  errors: {
3338
- 403: 'Insufficient permissions to read market data',
3339
- 404: 'Market data not found'
3340
- }
3341
- });
3342
- }
3343
-
3344
- /**
3345
- * @param data The data for the request.
3346
- * @param data.region Region code (cn, us, de)
3347
- * @returns unknown
3348
- * @throws ApiError
3349
- */
3350
- public static marketDataController(
3351
- data: MarketDataControllerData
3352
- ): CancelablePromise<MarketDataControllerResponse> {
3353
- return __request(OpenAPI, {
3354
- method: 'POST',
3355
- url: '/api/v1/market-data/{dataSource}/{symbol}',
3356
- path: {
3357
- region: data.region
4229
+ 404: 'Symbol not found in the openbb catalog'
3358
4230
  }
3359
4231
  });
3360
4232
  }