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

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