@firela/api-types 0.0.0-canary.63a53b7d → 0.0.0-canary.693e8bdf

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.
@@ -143,26 +143,14 @@ import type {
143
143
  ExpectedTransactionControllerEnterNowResponse,
144
144
  ForecastControllerGetForecastData,
145
145
  ForecastControllerGetForecastResponse,
146
- TransactionRuleControllerCreateData,
147
- TransactionRuleControllerCreateResponse,
148
- TransactionRuleControllerListData,
149
- TransactionRuleControllerListResponse,
150
- TransactionRuleControllerValidateData,
151
- TransactionRuleControllerValidateResponse,
152
- TransactionRuleControllerBulkCreateData,
153
- TransactionRuleControllerBulkCreateResponse,
154
- TransactionRuleControllerExportData,
155
- TransactionRuleControllerExportResponse,
156
- TransactionRuleControllerGetStatisticsData,
157
- TransactionRuleControllerGetStatisticsResponse,
158
- TransactionRuleControllerGetDetailData,
159
- TransactionRuleControllerGetDetailResponse,
160
- TransactionRuleControllerUpdateData,
161
- TransactionRuleControllerUpdateResponse,
162
- TransactionRuleControllerDeleteData,
163
- TransactionRuleControllerDeleteResponse,
164
- TransactionRuleControllerTestData,
165
- TransactionRuleControllerTestResponse,
146
+ ReportingControllerGetPortfolioTrendsData,
147
+ ReportingControllerGetPortfolioTrendsResponse,
148
+ ReportingControllerGetCashFlowTrendsData,
149
+ ReportingControllerGetCashFlowTrendsResponse,
150
+ ReportingControllerGenerateSnapshotData,
151
+ ReportingControllerGenerateSnapshotResponse,
152
+ ReportingControllerBackfillSnapshotsData,
153
+ ReportingControllerBackfillSnapshotsResponse,
166
154
  UserControllerDeleteOwnUserData,
167
155
  UserControllerDeleteOwnUserResponse,
168
156
  UserControllerGetUserData,
@@ -185,6 +173,28 @@ import type {
185
173
  PropertyControllerUpdateResponse,
186
174
  PropertyControllerDeleteData,
187
175
  PropertyControllerDeleteResponse,
176
+ TransactionRuleControllerCreateData,
177
+ TransactionRuleControllerCreateResponse,
178
+ TransactionRuleControllerListData,
179
+ TransactionRuleControllerListResponse,
180
+ TransactionRuleControllerValidateData,
181
+ TransactionRuleControllerValidateResponse,
182
+ TransactionRuleControllerBulkCreateData,
183
+ TransactionRuleControllerBulkCreateResponse,
184
+ TransactionRuleControllerExportData,
185
+ TransactionRuleControllerExportResponse,
186
+ TransactionRuleControllerGetStatisticsData,
187
+ TransactionRuleControllerGetStatisticsResponse,
188
+ TransactionRuleControllerGetDetailData,
189
+ TransactionRuleControllerGetDetailResponse,
190
+ TransactionRuleControllerUpdateData,
191
+ TransactionRuleControllerUpdateResponse,
192
+ TransactionRuleControllerDeleteData,
193
+ TransactionRuleControllerDeleteResponse,
194
+ TransactionRuleControllerTestData,
195
+ TransactionRuleControllerTestResponse,
196
+ CategoryCatalogControllerListData,
197
+ CategoryCatalogControllerListResponse,
188
198
  EventControllerCreateData,
189
199
  EventControllerCreateResponse,
190
200
  EventControllerFindAllData,
@@ -249,6 +259,7 @@ import type {
249
259
  PlatformControllerFindAllResponse,
250
260
  PlatformControllerCreateData,
251
261
  PlatformControllerCreateResponse,
262
+ PlatformControllerGetPlatformListData,
252
263
  PlatformControllerGetPlatformListResponse,
253
264
  PlatformControllerMatchPlatformsData,
254
265
  PlatformControllerMatchPlatformsResponse,
@@ -266,14 +277,6 @@ import type {
266
277
  DashboardControllerGetExpensesResponse,
267
278
  HoldingPnlControllerGetHoldingPnlData,
268
279
  HoldingPnlControllerGetHoldingPnlResponse,
269
- ReportingControllerGetPortfolioTrendsData,
270
- ReportingControllerGetPortfolioTrendsResponse,
271
- ReportingControllerGetCashFlowTrendsData,
272
- ReportingControllerGetCashFlowTrendsResponse,
273
- ReportingControllerGenerateSnapshotData,
274
- ReportingControllerGenerateSnapshotResponse,
275
- ReportingControllerBackfillSnapshotsData,
276
- ReportingControllerBackfillSnapshotsResponse,
277
280
  ApiKeysControllerCreateApiKeyResponse,
278
281
  AuthControllerAccessTokenLoginData,
279
282
  AuthControllerAccessTokenLoginResponse,
@@ -288,7 +291,11 @@ import type {
288
291
  HealthControllerResetCircuitBreakerData,
289
292
  HealthControllerResetCircuitBreakerResponse,
290
293
  HealthControllerGetMetricsResponse,
291
- InfoControllerGetInfoResponse
294
+ InfoControllerGetInfoResponse,
295
+ SymbolControllerSearchData,
296
+ SymbolControllerSearchResponse,
297
+ SymbolControllerGetQuoteData,
298
+ SymbolControllerGetQuoteResponse
292
299
  } from './types.gen';
293
300
 
294
301
  export class BeanAccountsService {
@@ -407,7 +414,7 @@ export class BeanAccountsService {
407
414
 
408
415
  /**
409
416
  * Delete account
410
- * Deletes an account (only if no transactions)
417
+ * Deletes an account (only if no active transactions; voided/superseded residual postings are cleaned up)
411
418
  * @param data The data for the request.
412
419
  * @param data.id Account UUID
413
420
  * @param data.region Region code for tenant context
@@ -426,7 +433,7 @@ export class BeanAccountsService {
426
433
  },
427
434
  errors: {
428
435
  404: 'Account not found',
429
- 409: 'Account has transactions and cannot be deleted'
436
+ 409: 'Account has active transactions and cannot be deleted'
430
437
  }
431
438
  });
432
439
  }
@@ -2161,534 +2168,719 @@ export class RecurringForecastService {
2161
2168
  }
2162
2169
  }
2163
2170
 
2164
- export class BeanTransactionRulesService {
2171
+ export class ReportingService {
2165
2172
  /**
2166
- * Create a new transaction rule (or upsert if upsertByPayee=true)
2167
- * Creates a new rule. If upsertByPayee=true, updates existing rule matching payeeKeywords[0] instead of creating duplicate.
2173
+ * Get portfolio value trends
2174
+ *
2175
+ * Returns time series data of portfolio net worth.
2176
+ *
2177
+ * **Multi-currency Support:**
2178
+ * - `series[].byCurrency` - Currency breakdown for each data point
2179
+ * - `byCurrency` - Separate time series grouped by currency
2180
+ * - `warnings` - Exchange rate warnings if conversion failed
2181
+ *
2182
+ * **Parameters:**
2183
+ * - `period`: Time period (1m, 3m, 6m, 1y)
2184
+ * - `granularity`: Data granularity (day, week, month)
2185
+ *
2168
2186
  * @param data The data for the request.
2169
2187
  * @param data.region Region code for tenant context
2170
- * @param data.requestBody
2171
- * @returns TransactionRuleResponseDto Rule updated successfully (upsert mode)
2188
+ * @param data.period Time period
2189
+ * @param data.granularity Data granularity
2190
+ * @returns PortfolioTrendsResponseDto Trends retrieved successfully
2172
2191
  * @throws ApiError
2173
2192
  */
2174
- public static transactionRuleControllerCreate(
2175
- data: TransactionRuleControllerCreateData
2176
- ): CancelablePromise<TransactionRuleControllerCreateResponse> {
2193
+ public static reportingControllerGetPortfolioTrends(
2194
+ data: ReportingControllerGetPortfolioTrendsData
2195
+ ): CancelablePromise<ReportingControllerGetPortfolioTrendsResponse> {
2177
2196
  return __request(OpenAPI, {
2178
- method: 'POST',
2179
- url: '/api/v1/{region}/bean/transaction-rules',
2197
+ method: 'GET',
2198
+ url: '/api/v1/{region}/reporting/portfolio/trends',
2180
2199
  path: {
2181
2200
  region: data.region
2182
2201
  },
2183
- body: data.requestBody,
2184
- mediaType: 'application/json',
2202
+ query: {
2203
+ period: data.period,
2204
+ granularity: data.granularity
2205
+ },
2185
2206
  errors: {
2186
- 400: 'Validation failed',
2187
- 401: 'Unauthorized',
2188
- 409: 'Resource conflict - another process is updating this rule'
2207
+ 401: 'User not authenticated'
2189
2208
  }
2190
2209
  });
2191
2210
  }
2192
2211
 
2193
2212
  /**
2194
- * Get all transaction rules for user
2213
+ * Get cash-flow trends
2214
+ *
2215
+ * Monthly income / expense / netSavings over a fixed N-month window
2216
+ * (current month + N−1 prior). Missing months are zero-filled (flow metric).
2217
+ *
2218
+ * **Parameters:**
2219
+ * - `period`: 1m | 3m | 6m | 1y (default 6m)
2220
+ * - `granularity`: accepted for API symmetry; v1 returns month buckets
2221
+ *
2195
2222
  * @param data The data for the request.
2196
2223
  * @param data.region Region code for tenant context
2197
- * @param data.limit Max results per page (default: 20, max: 100)
2198
- * @param data.offset Pagination offset (default: 0)
2199
- * @param data.enabled Filter by enabled status
2200
- * @param data.learningSource Filter by learning source. Omit this parameter or pass empty string to get manually created rules (learningSource is null in database).
2201
- * @param data.autoApplyEnabled Filter by auto-apply status
2202
- * @returns TransactionRuleListResponseDto List of rules
2224
+ * @param data.period Time period
2225
+ * @param data.granularity Data granularity (accepted for API symmetry; v1 returns month buckets)
2226
+ * @returns CashFlowTrendsResponseDto Cash-flow trends retrieved successfully
2203
2227
  * @throws ApiError
2204
2228
  */
2205
- public static transactionRuleControllerList(
2206
- data: TransactionRuleControllerListData
2207
- ): CancelablePromise<TransactionRuleControllerListResponse> {
2229
+ public static reportingControllerGetCashFlowTrends(
2230
+ data: ReportingControllerGetCashFlowTrendsData
2231
+ ): CancelablePromise<ReportingControllerGetCashFlowTrendsResponse> {
2208
2232
  return __request(OpenAPI, {
2209
2233
  method: 'GET',
2210
- url: '/api/v1/{region}/bean/transaction-rules',
2234
+ url: '/api/v1/{region}/reporting/cash-flow/trends',
2211
2235
  path: {
2212
2236
  region: data.region
2213
2237
  },
2214
2238
  query: {
2215
- limit: data.limit,
2216
- offset: data.offset,
2217
- enabled: data.enabled,
2218
- learningSource: data.learningSource,
2219
- autoApplyEnabled: data.autoApplyEnabled
2239
+ period: data.period,
2240
+ granularity: data.granularity
2220
2241
  },
2221
2242
  errors: {
2222
- 401: 'Unauthorized'
2243
+ 401: 'User not authenticated'
2223
2244
  }
2224
2245
  });
2225
2246
  }
2226
2247
 
2227
2248
  /**
2228
- * Validate transaction rule configuration
2249
+ * Generate portfolio snapshot
2250
+ *
2251
+ * Manually generate a portfolio snapshot for a specific date.
2252
+ *
2253
+ * **Multi-currency Support:**
2254
+ * - Fetches balances grouped by currency
2255
+ * - Uses user's baseCurrency setting for conversion
2256
+ * - Stores exchange rates and warnings
2257
+ *
2258
+ * **Use Cases:**
2259
+ * - Testing snapshot generation
2260
+ * - Force regeneration after data correction
2261
+ * - Initial setup for new users
2262
+ *
2229
2263
  * @param data The data for the request.
2230
2264
  * @param data.region Region code for tenant context
2231
- * @param data.requestBody
2232
- * @returns ValidateRuleResponseDto Validation result
2265
+ * @param data.requestBody Optional date (defaults to today)
2266
+ * @returns GenerateSnapshotResponse Snapshot generated successfully
2233
2267
  * @throws ApiError
2234
2268
  */
2235
- public static transactionRuleControllerValidate(
2236
- data: TransactionRuleControllerValidateData
2237
- ): CancelablePromise<TransactionRuleControllerValidateResponse> {
2269
+ public static reportingControllerGenerateSnapshot(
2270
+ data: ReportingControllerGenerateSnapshotData
2271
+ ): CancelablePromise<ReportingControllerGenerateSnapshotResponse> {
2238
2272
  return __request(OpenAPI, {
2239
2273
  method: 'POST',
2240
- url: '/api/v1/{region}/bean/transaction-rules/validate',
2274
+ url: '/api/v1/{region}/reporting/snapshots/generate',
2241
2275
  path: {
2242
2276
  region: data.region
2243
2277
  },
2244
2278
  body: data.requestBody,
2245
2279
  mediaType: 'application/json',
2246
2280
  errors: {
2247
- 400: 'Validation failed',
2248
- 401: 'Unauthorized'
2281
+ 400: 'Invalid date format',
2282
+ 401: 'User not authenticated'
2249
2283
  }
2250
2284
  });
2251
2285
  }
2252
2286
 
2253
2287
  /**
2254
- * Bulk create transaction rules
2288
+ * Backfill portfolio snapshots
2289
+ *
2290
+ * Generate snapshots for a date range (historical data backfill).
2291
+ *
2292
+ * **Multi-currency Support:**
2293
+ * - Each snapshot includes multi-currency data
2294
+ * - Uses exchange rates available at generation time
2295
+ * - Warnings stored for missing exchange rates
2296
+ *
2297
+ * **Best Practices:**
2298
+ * - Use for initial setup after account configuration
2299
+ * - Run during low-traffic periods for large date ranges
2300
+ * - Existing snapshots are skipped (not regenerated)
2301
+ *
2255
2302
  * @param data The data for the request.
2256
2303
  * @param data.region Region code for tenant context
2257
2304
  * @param data.requestBody
2258
- * @returns BulkCreateRulesResponseDto Bulk create completed
2305
+ * @returns BackfillSnapshotsResponse Backfill completed successfully
2259
2306
  * @throws ApiError
2260
2307
  */
2261
- public static transactionRuleControllerBulkCreate(
2262
- data: TransactionRuleControllerBulkCreateData
2263
- ): CancelablePromise<TransactionRuleControllerBulkCreateResponse> {
2308
+ public static reportingControllerBackfillSnapshots(
2309
+ data: ReportingControllerBackfillSnapshotsData
2310
+ ): CancelablePromise<ReportingControllerBackfillSnapshotsResponse> {
2264
2311
  return __request(OpenAPI, {
2265
2312
  method: 'POST',
2266
- url: '/api/v1/{region}/bean/transaction-rules/bulk',
2313
+ url: '/api/v1/{region}/reporting/snapshots/backfill',
2267
2314
  path: {
2268
2315
  region: data.region
2269
2316
  },
2270
2317
  body: data.requestBody,
2271
2318
  mediaType: 'application/json',
2272
2319
  errors: {
2273
- 400: 'Invalid bulk create data',
2274
- 401: 'Unauthorized'
2320
+ 400: 'Invalid date format or range',
2321
+ 401: 'User not authenticated',
2322
+ 409: 'Backfill already in progress for this user'
2275
2323
  }
2276
2324
  });
2277
2325
  }
2326
+ }
2278
2327
 
2328
+ export class UsersService {
2279
2329
  /**
2280
- * Export transaction rules
2330
+ * Delete own user account
2281
2331
  * @param data The data for the request.
2282
- * @param data.format Export format (currently only JSON supported)
2283
- * @param data.region Region code for tenant context
2284
- * @returns ExportRulesResponseDto Exported rules
2332
+ * @param data.requestBody
2333
+ * @returns void User deleted successfully
2285
2334
  * @throws ApiError
2286
2335
  */
2287
- public static transactionRuleControllerExport(
2288
- data: TransactionRuleControllerExportData
2289
- ): CancelablePromise<TransactionRuleControllerExportResponse> {
2336
+ public static userControllerDeleteOwnUser(
2337
+ data: UserControllerDeleteOwnUserData
2338
+ ): CancelablePromise<UserControllerDeleteOwnUserResponse> {
2290
2339
  return __request(OpenAPI, {
2291
- method: 'GET',
2292
- url: '/api/v1/{region}/bean/transaction-rules/export/{format}',
2293
- path: {
2294
- format: data.format,
2295
- region: data.region
2296
- },
2340
+ method: 'DELETE',
2341
+ url: '/api/v1/users',
2342
+ body: data.requestBody,
2343
+ mediaType: 'application/json',
2297
2344
  errors: {
2298
- 400: 'Unsupported format',
2299
- 401: 'Unauthorized'
2345
+ 403: 'Invalid access token'
2300
2346
  }
2301
2347
  });
2302
2348
  }
2303
2349
 
2304
2350
  /**
2305
- * Get transaction rule statistics
2351
+ * Get current authenticated user
2306
2352
  * @param data The data for the request.
2307
- * @param data.period Statistics time period
2308
- * @param data.region Region code for tenant context
2309
- * @returns RuleStatisticsResponseDto Rule statistics
2353
+ * @param data.acceptLanguage
2354
+ * @returns UserResponseDto User retrieved successfully
2310
2355
  * @throws ApiError
2311
2356
  */
2312
- public static transactionRuleControllerGetStatistics(
2313
- data: TransactionRuleControllerGetStatisticsData
2314
- ): CancelablePromise<TransactionRuleControllerGetStatisticsResponse> {
2357
+ public static userControllerGetUser(
2358
+ data: UserControllerGetUserData
2359
+ ): CancelablePromise<UserControllerGetUserResponse> {
2315
2360
  return __request(OpenAPI, {
2316
2361
  method: 'GET',
2317
- url: '/api/v1/{region}/bean/transaction-rules/statistics/{period}',
2318
- path: {
2319
- period: data.period,
2320
- region: data.region
2321
- },
2322
- errors: {
2323
- 401: 'Unauthorized'
2362
+ url: '/api/v1/users',
2363
+ headers: {
2364
+ 'accept-language': data.acceptLanguage
2324
2365
  }
2325
2366
  });
2326
2367
  }
2327
2368
 
2328
2369
  /**
2329
- * Get transaction rule detail
2370
+ * Sign up new user
2371
+ * Create a new account with auto-generated access token. Protected by Cloudflare Turnstile to prevent automated signup (when enabled).
2330
2372
  * @param data The data for the request.
2331
- * @param data.ruleId Rule ID
2332
- * @param data.region Region code for tenant context
2333
- * @returns TransactionRuleResponseDto Rule details
2373
+ * @param data.requestBody
2374
+ * @returns SignupResponseDto User created successfully
2334
2375
  * @throws ApiError
2335
2376
  */
2336
- public static transactionRuleControllerGetDetail(
2337
- data: TransactionRuleControllerGetDetailData
2338
- ): CancelablePromise<TransactionRuleControllerGetDetailResponse> {
2339
- return __request(OpenAPI, {
2377
+ public static userControllerSignupUser(
2378
+ data: UserControllerSignupUserData
2379
+ ): CancelablePromise<UserControllerSignupUserResponse> {
2380
+ return __request(OpenAPI, {
2381
+ method: 'POST',
2382
+ url: '/api/v1/users',
2383
+ body: data.requestBody,
2384
+ mediaType: 'application/json',
2385
+ errors: {
2386
+ 400: 'Invalid Turnstile token (when Turnstile is enabled)',
2387
+ 403: 'User signup is disabled'
2388
+ }
2389
+ });
2390
+ }
2391
+
2392
+ /**
2393
+ * Delete user by ID (admin only)
2394
+ * @param data The data for the request.
2395
+ * @param data.id User ID to delete
2396
+ * @returns void User deleted successfully
2397
+ * @throws ApiError
2398
+ */
2399
+ public static userControllerDeleteUser(
2400
+ data: UserControllerDeleteUserData
2401
+ ): CancelablePromise<UserControllerDeleteUserResponse> {
2402
+ return __request(OpenAPI, {
2403
+ method: 'DELETE',
2404
+ url: '/api/v1/users/{id}',
2405
+ path: {
2406
+ id: data.id
2407
+ },
2408
+ errors: {
2409
+ 403: 'Cannot delete own account or insufficient permissions'
2410
+ }
2411
+ });
2412
+ }
2413
+
2414
+ /**
2415
+ * Get user info by user ID
2416
+ * @param data The data for the request.
2417
+ * @param data.id User ID
2418
+ * @returns unknown User info retrieved successfully
2419
+ * @throws ApiError
2420
+ */
2421
+ public static userControllerGetUserInfo(
2422
+ data: UserControllerGetUserInfoData
2423
+ ): CancelablePromise<UserControllerGetUserInfoResponse> {
2424
+ return __request(OpenAPI, {
2340
2425
  method: 'GET',
2341
- url: '/api/v1/{region}/bean/transaction-rules/{ruleId}',
2426
+ url: '/api/v1/users/{id}/info',
2342
2427
  path: {
2343
- ruleId: data.ruleId,
2344
- region: data.region
2428
+ id: data.id
2345
2429
  },
2346
2430
  errors: {
2347
- 401: 'Unauthorized',
2348
- 403: 'Forbidden - not owner of rule',
2349
- 404: 'Rule not found'
2431
+ 403: 'Cannot access other user info without admin permission'
2350
2432
  }
2351
2433
  });
2352
2434
  }
2353
2435
 
2354
2436
  /**
2355
- * Update a transaction rule
2437
+ * Update user settings
2356
2438
  * @param data The data for the request.
2357
- * @param data.ruleId Rule ID to update
2358
- * @param data.region Region code for tenant context
2359
2439
  * @param data.requestBody
2360
- * @returns TransactionRuleResponseDto Rule updated successfully
2440
+ * @returns unknown Settings updated successfully
2361
2441
  * @throws ApiError
2362
2442
  */
2363
- public static transactionRuleControllerUpdate(
2364
- data: TransactionRuleControllerUpdateData
2365
- ): CancelablePromise<TransactionRuleControllerUpdateResponse> {
2443
+ public static userControllerUpdateUserSetting(
2444
+ data: UserControllerUpdateUserSettingData
2445
+ ): CancelablePromise<UserControllerUpdateUserSettingResponse> {
2366
2446
  return __request(OpenAPI, {
2367
2447
  method: 'PUT',
2368
- url: '/api/v1/{region}/bean/transaction-rules/{ruleId}',
2369
- path: {
2370
- ruleId: data.ruleId,
2371
- region: data.region
2372
- },
2448
+ url: '/api/v1/users/setting',
2373
2449
  body: data.requestBody,
2374
2450
  mediaType: 'application/json',
2375
2451
  errors: {
2376
- 400: 'Validation failed',
2377
- 401: 'Unauthorized',
2378
- 403: 'Forbidden - not owner of rule',
2379
- 404: 'Rule not found',
2380
- 409: 'Resource conflict - rule is being modified by another process'
2452
+ 403: 'Insufficient permissions'
2381
2453
  }
2382
2454
  });
2383
2455
  }
2384
2456
 
2385
2457
  /**
2386
- * Delete a transaction rule
2458
+ * Get all user settings paginated (admin only)
2387
2459
  * @param data The data for the request.
2388
- * @param data.ruleId Rule ID to delete
2389
- * @param data.region Region code for tenant context
2390
- * @returns void Rule deleted successfully
2460
+ * @param data.pageNo Page number
2461
+ * @param data.pageSize Page size
2462
+ * @returns unknown Settings list retrieved successfully
2391
2463
  * @throws ApiError
2392
2464
  */
2393
- public static transactionRuleControllerDelete(
2394
- data: TransactionRuleControllerDeleteData
2395
- ): CancelablePromise<TransactionRuleControllerDeleteResponse> {
2465
+ public static userControllerGetAllUserSettingsByPage(
2466
+ data: UserControllerGetAllUserSettingsByPageData
2467
+ ): CancelablePromise<UserControllerGetAllUserSettingsByPageResponse> {
2396
2468
  return __request(OpenAPI, {
2397
- method: 'DELETE',
2398
- url: '/api/v1/{region}/bean/transaction-rules/{ruleId}',
2399
- path: {
2400
- ruleId: data.ruleId,
2401
- region: data.region
2402
- },
2469
+ method: 'GET',
2470
+ url: '/api/v1/users/settings-by-page',
2471
+ query: {
2472
+ pageNo: data.pageNo,
2473
+ pageSize: data.pageSize
2474
+ }
2475
+ });
2476
+ }
2477
+
2478
+ /**
2479
+ * Get asset and liability summary for current user
2480
+ * @returns unknown Summary retrieved successfully
2481
+ * @throws ApiError
2482
+ */
2483
+ public static userControllerGetAssetLiabilitySummary(): CancelablePromise<UserControllerGetAssetLiabilitySummaryResponse> {
2484
+ return __request(OpenAPI, {
2485
+ method: 'GET',
2486
+ url: '/api/v1/users/asset-liability-summary'
2487
+ });
2488
+ }
2489
+ }
2490
+
2491
+ export class PropertiesService {
2492
+ /**
2493
+ * Get all system properties
2494
+ * @returns unknown Properties retrieved successfully
2495
+ * @throws ApiError
2496
+ */
2497
+ public static propertyControllerGetAll(): CancelablePromise<PropertyControllerGetAllResponse> {
2498
+ return __request(OpenAPI, {
2499
+ method: 'GET',
2500
+ url: '/api/v1/admin/properties',
2403
2501
  errors: {
2404
2502
  401: 'Unauthorized',
2405
- 403: 'Forbidden - not owner of rule',
2406
- 404: 'Rule not found',
2407
- 409: 'Resource conflict - rule is being modified by another process'
2503
+ 403: 'Forbidden - insufficient permissions'
2408
2504
  }
2409
2505
  });
2410
2506
  }
2411
2507
 
2412
2508
  /**
2413
- * Test rule matching
2509
+ * Get property by key
2414
2510
  * @param data The data for the request.
2415
- * @param data.ruleId Rule ID to test
2416
- * @param data.region Region code for tenant context
2417
- * @param data.requestBody
2418
- * @returns TestRuleResponseDto Test result
2511
+ * @param data.key Property key
2512
+ * @returns unknown Property retrieved successfully
2419
2513
  * @throws ApiError
2420
2514
  */
2421
- public static transactionRuleControllerTest(
2422
- data: TransactionRuleControllerTestData
2423
- ): CancelablePromise<TransactionRuleControllerTestResponse> {
2515
+ public static propertyControllerGetByKey(
2516
+ data: PropertyControllerGetByKeyData
2517
+ ): CancelablePromise<PropertyControllerGetByKeyResponse> {
2424
2518
  return __request(OpenAPI, {
2425
- method: 'POST',
2426
- url: '/api/v1/{region}/bean/transaction-rules/{ruleId}/test',
2519
+ method: 'GET',
2520
+ url: '/api/v1/admin/properties/{key}',
2427
2521
  path: {
2428
- ruleId: data.ruleId,
2429
- region: data.region
2522
+ key: data.key
2430
2523
  },
2431
- body: data.requestBody,
2432
- mediaType: 'application/json',
2433
2524
  errors: {
2434
2525
  401: 'Unauthorized',
2435
- 403: 'Forbidden - not owner of rule',
2436
- 404: 'Rule not found'
2526
+ 403: 'Forbidden - insufficient permissions',
2527
+ 404: 'Property not found'
2437
2528
  }
2438
2529
  });
2439
2530
  }
2440
- }
2441
2531
 
2442
- export class UsersService {
2443
2532
  /**
2444
- * Delete own user account
2533
+ * Update a system property
2445
2534
  * @param data The data for the request.
2535
+ * @param data.key Property key
2446
2536
  * @param data.requestBody
2447
- * @returns void User deleted successfully
2537
+ * @returns unknown Property updated successfully
2448
2538
  * @throws ApiError
2449
2539
  */
2450
- public static userControllerDeleteOwnUser(
2451
- data: UserControllerDeleteOwnUserData
2452
- ): CancelablePromise<UserControllerDeleteOwnUserResponse> {
2540
+ public static propertyControllerUpdate(
2541
+ data: PropertyControllerUpdateData
2542
+ ): CancelablePromise<PropertyControllerUpdateResponse> {
2453
2543
  return __request(OpenAPI, {
2454
- method: 'DELETE',
2455
- url: '/api/v1/users',
2544
+ method: 'PUT',
2545
+ url: '/api/v1/admin/properties/{key}',
2546
+ path: {
2547
+ key: data.key
2548
+ },
2456
2549
  body: data.requestBody,
2457
2550
  mediaType: 'application/json',
2458
2551
  errors: {
2459
- 403: 'Invalid access token'
2552
+ 401: 'Unauthorized',
2553
+ 403: 'Forbidden - insufficient permissions'
2460
2554
  }
2461
2555
  });
2462
2556
  }
2463
2557
 
2464
2558
  /**
2465
- * Get current authenticated user
2559
+ * Delete a system property
2466
2560
  * @param data The data for the request.
2467
- * @param data.acceptLanguage
2468
- * @returns unknown User retrieved successfully
2561
+ * @param data.key Property key
2562
+ * @returns void Property deleted successfully
2469
2563
  * @throws ApiError
2470
2564
  */
2471
- public static userControllerGetUser(
2472
- data: UserControllerGetUserData
2473
- ): CancelablePromise<UserControllerGetUserResponse> {
2565
+ public static propertyControllerDelete(
2566
+ data: PropertyControllerDeleteData
2567
+ ): CancelablePromise<PropertyControllerDeleteResponse> {
2474
2568
  return __request(OpenAPI, {
2475
- method: 'GET',
2476
- url: '/api/v1/users',
2477
- headers: {
2478
- 'accept-language': data.acceptLanguage
2569
+ method: 'DELETE',
2570
+ url: '/api/v1/admin/properties/{key}',
2571
+ path: {
2572
+ key: data.key
2573
+ },
2574
+ errors: {
2575
+ 401: 'Unauthorized',
2576
+ 403: 'Forbidden - insufficient permissions',
2577
+ 404: 'Property not found'
2479
2578
  }
2480
2579
  });
2481
2580
  }
2581
+ }
2482
2582
 
2583
+ export class BeanTransactionRulesService {
2483
2584
  /**
2484
- * Sign up new user
2485
- * Create a new account with auto-generated access token. Protected by Cloudflare Turnstile to prevent automated signup (when enabled).
2585
+ * Create a new transaction rule (or upsert if upsertByPayee=true)
2586
+ * Creates a new rule. If upsertByPayee=true, updates existing rule matching payeeKeywords[0] instead of creating duplicate.
2486
2587
  * @param data The data for the request.
2588
+ * @param data.region Region code for tenant context
2487
2589
  * @param data.requestBody
2488
- * @returns unknown User created successfully
2590
+ * @returns TransactionRuleResponseDto Rule updated successfully (upsert mode)
2489
2591
  * @throws ApiError
2490
2592
  */
2491
- public static userControllerSignupUser(
2492
- data: UserControllerSignupUserData
2493
- ): CancelablePromise<UserControllerSignupUserResponse> {
2593
+ public static transactionRuleControllerCreate(
2594
+ data: TransactionRuleControllerCreateData
2595
+ ): CancelablePromise<TransactionRuleControllerCreateResponse> {
2494
2596
  return __request(OpenAPI, {
2495
2597
  method: 'POST',
2496
- url: '/api/v1/users',
2598
+ url: '/api/v1/{region}/bean/transaction-rules',
2599
+ path: {
2600
+ region: data.region
2601
+ },
2497
2602
  body: data.requestBody,
2498
2603
  mediaType: 'application/json',
2499
2604
  errors: {
2500
- 400: 'Invalid Turnstile token (when Turnstile is enabled)',
2501
- 403: 'User signup is disabled'
2605
+ 400: 'Validation failed',
2606
+ 401: 'Unauthorized',
2607
+ 409: 'Resource conflict - another process is updating this rule'
2502
2608
  }
2503
2609
  });
2504
2610
  }
2505
2611
 
2506
2612
  /**
2507
- * Delete user by ID (admin only)
2613
+ * Get all transaction rules for user
2508
2614
  * @param data The data for the request.
2509
- * @param data.id User ID to delete
2510
- * @returns void User deleted successfully
2615
+ * @param data.region Region code for tenant context
2616
+ * @param data.limit Max results per page (default: 20, max: 100)
2617
+ * @param data.offset Pagination offset (default: 0)
2618
+ * @param data.enabled Filter by enabled status
2619
+ * @param data.learningSource Filter by learning source. Omit this parameter or pass empty string to get manually created rules (learningSource is null in database).
2620
+ * @param data.autoApplyEnabled Filter by auto-apply status
2621
+ * @returns TransactionRuleListResponseDto List of rules
2511
2622
  * @throws ApiError
2512
2623
  */
2513
- public static userControllerDeleteUser(
2514
- data: UserControllerDeleteUserData
2515
- ): CancelablePromise<UserControllerDeleteUserResponse> {
2624
+ public static transactionRuleControllerList(
2625
+ data: TransactionRuleControllerListData
2626
+ ): CancelablePromise<TransactionRuleControllerListResponse> {
2516
2627
  return __request(OpenAPI, {
2517
- method: 'DELETE',
2518
- url: '/api/v1/users/{id}',
2628
+ method: 'GET',
2629
+ url: '/api/v1/{region}/bean/transaction-rules',
2519
2630
  path: {
2520
- id: data.id
2631
+ region: data.region
2632
+ },
2633
+ query: {
2634
+ limit: data.limit,
2635
+ offset: data.offset,
2636
+ enabled: data.enabled,
2637
+ learningSource: data.learningSource,
2638
+ autoApplyEnabled: data.autoApplyEnabled
2521
2639
  },
2522
2640
  errors: {
2523
- 403: 'Cannot delete own account or insufficient permissions'
2641
+ 401: 'Unauthorized'
2524
2642
  }
2525
2643
  });
2526
2644
  }
2527
2645
 
2528
2646
  /**
2529
- * Get user info by user ID
2647
+ * Validate transaction rule configuration
2530
2648
  * @param data The data for the request.
2531
- * @param data.id User ID
2532
- * @returns unknown User info retrieved successfully
2649
+ * @param data.region Region code for tenant context
2650
+ * @param data.requestBody
2651
+ * @returns ValidateRuleResponseDto Validation result
2533
2652
  * @throws ApiError
2534
2653
  */
2535
- public static userControllerGetUserInfo(
2536
- data: UserControllerGetUserInfoData
2537
- ): CancelablePromise<UserControllerGetUserInfoResponse> {
2654
+ public static transactionRuleControllerValidate(
2655
+ data: TransactionRuleControllerValidateData
2656
+ ): CancelablePromise<TransactionRuleControllerValidateResponse> {
2538
2657
  return __request(OpenAPI, {
2539
- method: 'GET',
2540
- url: '/api/v1/users/{id}/info',
2658
+ method: 'POST',
2659
+ url: '/api/v1/{region}/bean/transaction-rules/validate',
2541
2660
  path: {
2542
- id: data.id
2661
+ region: data.region
2543
2662
  },
2663
+ body: data.requestBody,
2664
+ mediaType: 'application/json',
2544
2665
  errors: {
2545
- 403: 'Cannot access other user info without admin permission'
2666
+ 400: 'Validation failed',
2667
+ 401: 'Unauthorized'
2546
2668
  }
2547
2669
  });
2548
2670
  }
2549
2671
 
2550
2672
  /**
2551
- * Update user settings
2673
+ * Bulk create transaction rules
2552
2674
  * @param data The data for the request.
2675
+ * @param data.region Region code for tenant context
2553
2676
  * @param data.requestBody
2554
- * @returns unknown Settings updated successfully
2677
+ * @returns BulkCreateRulesResponseDto Bulk create completed
2555
2678
  * @throws ApiError
2556
2679
  */
2557
- public static userControllerUpdateUserSetting(
2558
- data: UserControllerUpdateUserSettingData
2559
- ): CancelablePromise<UserControllerUpdateUserSettingResponse> {
2680
+ public static transactionRuleControllerBulkCreate(
2681
+ data: TransactionRuleControllerBulkCreateData
2682
+ ): CancelablePromise<TransactionRuleControllerBulkCreateResponse> {
2560
2683
  return __request(OpenAPI, {
2561
- method: 'PUT',
2562
- url: '/api/v1/users/setting',
2684
+ method: 'POST',
2685
+ url: '/api/v1/{region}/bean/transaction-rules/bulk',
2686
+ path: {
2687
+ region: data.region
2688
+ },
2563
2689
  body: data.requestBody,
2564
2690
  mediaType: 'application/json',
2565
2691
  errors: {
2566
- 403: 'Insufficient permissions'
2692
+ 400: 'Invalid bulk create data',
2693
+ 401: 'Unauthorized'
2567
2694
  }
2568
2695
  });
2569
2696
  }
2570
2697
 
2571
2698
  /**
2572
- * Get all user settings paginated (admin only)
2699
+ * Export transaction rules
2573
2700
  * @param data The data for the request.
2574
- * @param data.pageNo Page number
2575
- * @param data.pageSize Page size
2576
- * @returns unknown Settings list retrieved successfully
2701
+ * @param data.format Export format (currently only JSON supported)
2702
+ * @param data.region Region code for tenant context
2703
+ * @returns ExportRulesResponseDto Exported rules
2577
2704
  * @throws ApiError
2578
2705
  */
2579
- public static userControllerGetAllUserSettingsByPage(
2580
- data: UserControllerGetAllUserSettingsByPageData
2581
- ): CancelablePromise<UserControllerGetAllUserSettingsByPageResponse> {
2706
+ public static transactionRuleControllerExport(
2707
+ data: TransactionRuleControllerExportData
2708
+ ): CancelablePromise<TransactionRuleControllerExportResponse> {
2582
2709
  return __request(OpenAPI, {
2583
2710
  method: 'GET',
2584
- url: '/api/v1/users/settings-by-page',
2585
- query: {
2586
- pageNo: data.pageNo,
2587
- pageSize: data.pageSize
2711
+ url: '/api/v1/{region}/bean/transaction-rules/export/{format}',
2712
+ path: {
2713
+ format: data.format,
2714
+ region: data.region
2715
+ },
2716
+ errors: {
2717
+ 400: 'Unsupported format',
2718
+ 401: 'Unauthorized'
2588
2719
  }
2589
2720
  });
2590
2721
  }
2591
2722
 
2592
2723
  /**
2593
- * Get asset and liability summary for current user
2594
- * @returns unknown Summary retrieved successfully
2724
+ * Get transaction rule statistics
2725
+ * @param data The data for the request.
2726
+ * @param data.period Statistics time period
2727
+ * @param data.region Region code for tenant context
2728
+ * @returns RuleStatisticsResponseDto Rule statistics
2595
2729
  * @throws ApiError
2596
2730
  */
2597
- public static userControllerGetAssetLiabilitySummary(): CancelablePromise<UserControllerGetAssetLiabilitySummaryResponse> {
2731
+ public static transactionRuleControllerGetStatistics(
2732
+ data: TransactionRuleControllerGetStatisticsData
2733
+ ): CancelablePromise<TransactionRuleControllerGetStatisticsResponse> {
2598
2734
  return __request(OpenAPI, {
2599
2735
  method: 'GET',
2600
- url: '/api/v1/users/asset-liability-summary'
2736
+ url: '/api/v1/{region}/bean/transaction-rules/statistics/{period}',
2737
+ path: {
2738
+ period: data.period,
2739
+ region: data.region
2740
+ },
2741
+ errors: {
2742
+ 401: 'Unauthorized'
2743
+ }
2601
2744
  });
2602
2745
  }
2603
- }
2604
2746
 
2605
- export class PropertiesService {
2606
2747
  /**
2607
- * Get all system properties
2608
- * @returns unknown Properties retrieved successfully
2748
+ * Get transaction rule detail
2749
+ * @param data The data for the request.
2750
+ * @param data.ruleId Rule ID
2751
+ * @param data.region Region code for tenant context
2752
+ * @returns TransactionRuleResponseDto Rule details
2609
2753
  * @throws ApiError
2610
2754
  */
2611
- public static propertyControllerGetAll(): CancelablePromise<PropertyControllerGetAllResponse> {
2755
+ public static transactionRuleControllerGetDetail(
2756
+ data: TransactionRuleControllerGetDetailData
2757
+ ): CancelablePromise<TransactionRuleControllerGetDetailResponse> {
2612
2758
  return __request(OpenAPI, {
2613
2759
  method: 'GET',
2614
- url: '/api/v1/admin/properties',
2760
+ url: '/api/v1/{region}/bean/transaction-rules/{ruleId}',
2761
+ path: {
2762
+ ruleId: data.ruleId,
2763
+ region: data.region
2764
+ },
2615
2765
  errors: {
2616
2766
  401: 'Unauthorized',
2617
- 403: 'Forbidden - insufficient permissions'
2767
+ 403: 'Forbidden - not owner of rule',
2768
+ 404: 'Rule not found'
2769
+ }
2770
+ });
2771
+ }
2772
+
2773
+ /**
2774
+ * Update a transaction rule
2775
+ * @param data The data for the request.
2776
+ * @param data.ruleId Rule ID to update
2777
+ * @param data.region Region code for tenant context
2778
+ * @param data.requestBody
2779
+ * @returns TransactionRuleResponseDto Rule updated successfully
2780
+ * @throws ApiError
2781
+ */
2782
+ public static transactionRuleControllerUpdate(
2783
+ data: TransactionRuleControllerUpdateData
2784
+ ): CancelablePromise<TransactionRuleControllerUpdateResponse> {
2785
+ return __request(OpenAPI, {
2786
+ method: 'PUT',
2787
+ url: '/api/v1/{region}/bean/transaction-rules/{ruleId}',
2788
+ path: {
2789
+ ruleId: data.ruleId,
2790
+ region: data.region
2791
+ },
2792
+ body: data.requestBody,
2793
+ mediaType: 'application/json',
2794
+ errors: {
2795
+ 400: 'Validation failed',
2796
+ 401: 'Unauthorized',
2797
+ 403: 'Forbidden - not owner of rule',
2798
+ 404: 'Rule not found',
2799
+ 409: 'Resource conflict - rule is being modified by another process'
2618
2800
  }
2619
2801
  });
2620
2802
  }
2621
2803
 
2622
2804
  /**
2623
- * Get property by key
2805
+ * Delete a transaction rule
2624
2806
  * @param data The data for the request.
2625
- * @param data.key Property key
2626
- * @returns unknown Property retrieved successfully
2807
+ * @param data.ruleId Rule ID to delete
2808
+ * @param data.region Region code for tenant context
2809
+ * @returns void Rule deleted successfully
2627
2810
  * @throws ApiError
2628
2811
  */
2629
- public static propertyControllerGetByKey(
2630
- data: PropertyControllerGetByKeyData
2631
- ): CancelablePromise<PropertyControllerGetByKeyResponse> {
2812
+ public static transactionRuleControllerDelete(
2813
+ data: TransactionRuleControllerDeleteData
2814
+ ): CancelablePromise<TransactionRuleControllerDeleteResponse> {
2632
2815
  return __request(OpenAPI, {
2633
- method: 'GET',
2634
- url: '/api/v1/admin/properties/{key}',
2816
+ method: 'DELETE',
2817
+ url: '/api/v1/{region}/bean/transaction-rules/{ruleId}',
2635
2818
  path: {
2636
- key: data.key
2819
+ ruleId: data.ruleId,
2820
+ region: data.region
2637
2821
  },
2638
2822
  errors: {
2639
2823
  401: 'Unauthorized',
2640
- 403: 'Forbidden - insufficient permissions',
2641
- 404: 'Property not found'
2824
+ 403: 'Forbidden - not owner of rule',
2825
+ 404: 'Rule not found',
2826
+ 409: 'Resource conflict - rule is being modified by another process'
2642
2827
  }
2643
2828
  });
2644
2829
  }
2645
2830
 
2646
2831
  /**
2647
- * Update a system property
2832
+ * Test rule matching
2648
2833
  * @param data The data for the request.
2649
- * @param data.key Property key
2834
+ * @param data.ruleId Rule ID to test
2835
+ * @param data.region Region code for tenant context
2650
2836
  * @param data.requestBody
2651
- * @returns unknown Property updated successfully
2837
+ * @returns TestRuleResponseDto Test result
2652
2838
  * @throws ApiError
2653
2839
  */
2654
- public static propertyControllerUpdate(
2655
- data: PropertyControllerUpdateData
2656
- ): CancelablePromise<PropertyControllerUpdateResponse> {
2840
+ public static transactionRuleControllerTest(
2841
+ data: TransactionRuleControllerTestData
2842
+ ): CancelablePromise<TransactionRuleControllerTestResponse> {
2657
2843
  return __request(OpenAPI, {
2658
- method: 'PUT',
2659
- url: '/api/v1/admin/properties/{key}',
2844
+ method: 'POST',
2845
+ url: '/api/v1/{region}/bean/transaction-rules/{ruleId}/test',
2660
2846
  path: {
2661
- key: data.key
2847
+ ruleId: data.ruleId,
2848
+ region: data.region
2662
2849
  },
2663
2850
  body: data.requestBody,
2664
2851
  mediaType: 'application/json',
2665
2852
  errors: {
2666
2853
  401: 'Unauthorized',
2667
- 403: 'Forbidden - insufficient permissions'
2854
+ 403: 'Forbidden - not owner of rule',
2855
+ 404: 'Rule not found'
2668
2856
  }
2669
2857
  });
2670
2858
  }
2859
+ }
2671
2860
 
2861
+ export class BeanCategoryCatalogService {
2672
2862
  /**
2673
- * Delete a system property
2863
+ * List category catalog for a region
2864
+ * 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.
2674
2865
  * @param data The data for the request.
2675
- * @param data.key Property key
2676
- * @returns void Property deleted successfully
2866
+ * @param data.region Region code for tenant context
2867
+ * @param data.scenario Filter by scenario
2868
+ * @param data.routeBearing Filter by routeBearing (entity-router route() consumes it)
2869
+ * @returns CategoryCatalogListResponseDto Category catalog retrieved successfully
2677
2870
  * @throws ApiError
2678
2871
  */
2679
- public static propertyControllerDelete(
2680
- data: PropertyControllerDeleteData
2681
- ): CancelablePromise<PropertyControllerDeleteResponse> {
2872
+ public static categoryCatalogControllerList(
2873
+ data: CategoryCatalogControllerListData
2874
+ ): CancelablePromise<CategoryCatalogControllerListResponse> {
2682
2875
  return __request(OpenAPI, {
2683
- method: 'DELETE',
2684
- url: '/api/v1/admin/properties/{key}',
2876
+ method: 'GET',
2877
+ url: '/api/v1/{region}/bean/categories',
2685
2878
  path: {
2686
- key: data.key
2879
+ region: data.region
2687
2880
  },
2688
- errors: {
2689
- 401: 'Unauthorized',
2690
- 403: 'Forbidden - insufficient permissions',
2691
- 404: 'Property not found'
2881
+ query: {
2882
+ scenario: data.scenario,
2883
+ routeBearing: data.routeBearing
2692
2884
  }
2693
2885
  });
2694
2886
  }
@@ -3569,13 +3761,20 @@ export class BeanPlatformsService {
3569
3761
 
3570
3762
  /**
3571
3763
  * Get platform list for current user
3572
- * @returns unknown List of platforms with user binding status
3764
+ * @param data The data for the request.
3765
+ * @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").
3766
+ * @returns PlatformListItemDto List of platforms with user binding status
3573
3767
  * @throws ApiError
3574
3768
  */
3575
- public static platformControllerGetPlatformList(): CancelablePromise<PlatformControllerGetPlatformListResponse> {
3769
+ public static platformControllerGetPlatformList(
3770
+ data: PlatformControllerGetPlatformListData = {}
3771
+ ): CancelablePromise<PlatformControllerGetPlatformListResponse> {
3576
3772
  return __request(OpenAPI, {
3577
3773
  method: 'GET',
3578
- url: '/api/v1/bean/platforms/list'
3774
+ url: '/api/v1/bean/platforms/list',
3775
+ query: {
3776
+ region: data.region
3777
+ }
3579
3778
  });
3580
3779
  }
3581
3780
 
@@ -3583,8 +3782,8 @@ export class BeanPlatformsService {
3583
3782
  * Match platforms by name or alias
3584
3783
  * @param data The data for the request.
3585
3784
  * @param data.q Search query — Chinese name, English name, or abbreviation
3586
- * @param data.region Region code for category override lookup
3587
- * @returns unknown List of matching platforms with suggested segment names
3785
+ * @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").
3786
+ * @returns PlatformMatchResponseDto Matching platforms with overall match type and truncation flag
3588
3787
  * @throws ApiError
3589
3788
  */
3590
3789
  public static platformControllerMatchPlatforms(
@@ -3802,163 +4001,6 @@ export class InvestmentService {
3802
4001
  }
3803
4002
  }
3804
4003
 
3805
- export class ReportingService {
3806
- /**
3807
- * Get portfolio value trends
3808
- *
3809
- * Returns time series data of portfolio net worth.
3810
- *
3811
- * **Multi-currency Support:**
3812
- * - `series[].byCurrency` - Currency breakdown for each data point
3813
- * - `byCurrency` - Separate time series grouped by currency
3814
- * - `warnings` - Exchange rate warnings if conversion failed
3815
- *
3816
- * **Parameters:**
3817
- * - `period`: Time period (1m, 3m, 6m, 1y)
3818
- * - `granularity`: Data granularity (day, week, month)
3819
- *
3820
- * @param data The data for the request.
3821
- * @param data.region Region code for tenant context
3822
- * @param data.period Time period
3823
- * @param data.granularity Data granularity
3824
- * @returns PortfolioTrendsResponseDto Trends retrieved successfully
3825
- * @throws ApiError
3826
- */
3827
- public static reportingControllerGetPortfolioTrends(
3828
- data: ReportingControllerGetPortfolioTrendsData
3829
- ): CancelablePromise<ReportingControllerGetPortfolioTrendsResponse> {
3830
- return __request(OpenAPI, {
3831
- method: 'GET',
3832
- url: '/api/v1/{region}/reporting/portfolio/trends',
3833
- path: {
3834
- region: data.region
3835
- },
3836
- query: {
3837
- period: data.period,
3838
- granularity: data.granularity
3839
- },
3840
- errors: {
3841
- 401: 'User not authenticated'
3842
- }
3843
- });
3844
- }
3845
-
3846
- /**
3847
- * Get cash-flow trends
3848
- *
3849
- * Monthly income / expense / netSavings over a fixed N-month window
3850
- * (current month + N−1 prior). Missing months are zero-filled (flow metric).
3851
- *
3852
- * **Parameters:**
3853
- * - `period`: 1m | 3m | 6m | 1y (default 6m)
3854
- * - `granularity`: accepted for API symmetry; v1 returns month buckets
3855
- *
3856
- * @param data The data for the request.
3857
- * @param data.region Region code for tenant context
3858
- * @param data.period Time period
3859
- * @param data.granularity Data granularity (accepted for API symmetry; v1 returns month buckets)
3860
- * @returns CashFlowTrendsResponseDto Cash-flow trends retrieved successfully
3861
- * @throws ApiError
3862
- */
3863
- public static reportingControllerGetCashFlowTrends(
3864
- data: ReportingControllerGetCashFlowTrendsData
3865
- ): CancelablePromise<ReportingControllerGetCashFlowTrendsResponse> {
3866
- return __request(OpenAPI, {
3867
- method: 'GET',
3868
- url: '/api/v1/{region}/reporting/cash-flow/trends',
3869
- path: {
3870
- region: data.region
3871
- },
3872
- query: {
3873
- period: data.period,
3874
- granularity: data.granularity
3875
- },
3876
- errors: {
3877
- 401: 'User not authenticated'
3878
- }
3879
- });
3880
- }
3881
-
3882
- /**
3883
- * Generate portfolio snapshot
3884
- *
3885
- * Manually generate a portfolio snapshot for a specific date.
3886
- *
3887
- * **Multi-currency Support:**
3888
- * - Fetches balances grouped by currency
3889
- * - Uses user's baseCurrency setting for conversion
3890
- * - Stores exchange rates and warnings
3891
- *
3892
- * **Use Cases:**
3893
- * - Testing snapshot generation
3894
- * - Force regeneration after data correction
3895
- * - Initial setup for new users
3896
- *
3897
- * @param data The data for the request.
3898
- * @param data.region Region code for tenant context
3899
- * @param data.requestBody Optional date (defaults to today)
3900
- * @returns GenerateSnapshotResponse Snapshot generated successfully
3901
- * @throws ApiError
3902
- */
3903
- public static reportingControllerGenerateSnapshot(
3904
- data: ReportingControllerGenerateSnapshotData
3905
- ): CancelablePromise<ReportingControllerGenerateSnapshotResponse> {
3906
- return __request(OpenAPI, {
3907
- method: 'POST',
3908
- url: '/api/v1/{region}/reporting/snapshots/generate',
3909
- path: {
3910
- region: data.region
3911
- },
3912
- body: data.requestBody,
3913
- mediaType: 'application/json',
3914
- errors: {
3915
- 400: 'Invalid date format',
3916
- 401: 'User not authenticated'
3917
- }
3918
- });
3919
- }
3920
-
3921
- /**
3922
- * Backfill portfolio snapshots
3923
- *
3924
- * Generate snapshots for a date range (historical data backfill).
3925
- *
3926
- * **Multi-currency Support:**
3927
- * - Each snapshot includes multi-currency data
3928
- * - Uses exchange rates available at generation time
3929
- * - Warnings stored for missing exchange rates
3930
- *
3931
- * **Best Practices:**
3932
- * - Use for initial setup after account configuration
3933
- * - Run during low-traffic periods for large date ranges
3934
- * - Existing snapshots are skipped (not regenerated)
3935
- *
3936
- * @param data The data for the request.
3937
- * @param data.region Region code for tenant context
3938
- * @param data.requestBody
3939
- * @returns BackfillSnapshotsResponse Backfill completed successfully
3940
- * @throws ApiError
3941
- */
3942
- public static reportingControllerBackfillSnapshots(
3943
- data: ReportingControllerBackfillSnapshotsData
3944
- ): CancelablePromise<ReportingControllerBackfillSnapshotsResponse> {
3945
- return __request(OpenAPI, {
3946
- method: 'POST',
3947
- url: '/api/v1/{region}/reporting/snapshots/backfill',
3948
- path: {
3949
- region: data.region
3950
- },
3951
- body: data.requestBody,
3952
- mediaType: 'application/json',
3953
- errors: {
3954
- 400: 'Invalid date format or range',
3955
- 401: 'User not authenticated',
3956
- 409: 'Backfill already in progress for this user'
3957
- }
3958
- });
3959
- }
3960
- }
3961
-
3962
4004
  export class ApiKeysService {
3963
4005
  /**
3964
4006
  * Create API key
@@ -3982,7 +4024,7 @@ export class AuthService {
3982
4024
  * Anonymous login with access token
3983
4025
  * @param data The data for the request.
3984
4026
  * @param data.requestBody
3985
- * @returns unknown Login successful
4027
+ * @returns AnonymousLoginResponseDto Login successful
3986
4028
  * @throws ApiError
3987
4029
  */
3988
4030
  public static authControllerAccessTokenLogin(
@@ -4169,3 +4211,53 @@ export class InfoService {
4169
4211
  });
4170
4212
  }
4171
4213
  }
4214
+
4215
+ export class MarketDataService {
4216
+ /**
4217
+ * Search market symbols by name or code
4218
+ * Ranked search over the openbb catalog. Empty `q` returns [].
4219
+ * @param data The data for the request.
4220
+ * @param data.q Search term — matched against symbol and instrument name. Empty string returns [].
4221
+ * @param data.limit Maximum number of results (clamped 1..50)
4222
+ * @param data.exchange Filter by exchange code (e.g. US, HK, SS, SZ)
4223
+ * @param data.assetType Filter by OpenBB asset_type (e.g. stock, etf)
4224
+ * @returns SymbolSearchResultDto Ranked search results
4225
+ * @throws ApiError
4226
+ */
4227
+ public static symbolControllerSearch(
4228
+ data: SymbolControllerSearchData
4229
+ ): CancelablePromise<SymbolControllerSearchResponse> {
4230
+ return __request(OpenAPI, {
4231
+ method: 'GET',
4232
+ url: '/api/v1/market/symbols/search',
4233
+ query: {
4234
+ q: data.q,
4235
+ limit: data.limit,
4236
+ exchange: data.exchange,
4237
+ assetType: data.assetType
4238
+ }
4239
+ });
4240
+ }
4241
+
4242
+ /**
4243
+ * Get a market symbol quote
4244
+ * @param data The data for the request.
4245
+ * @param data.symbol
4246
+ * @returns SymbolQuoteDto Symbol quote
4247
+ * @throws ApiError
4248
+ */
4249
+ public static symbolControllerGetQuote(
4250
+ data: SymbolControllerGetQuoteData
4251
+ ): CancelablePromise<SymbolControllerGetQuoteResponse> {
4252
+ return __request(OpenAPI, {
4253
+ method: 'GET',
4254
+ url: '/api/v1/market/symbols/{symbol}/quote',
4255
+ path: {
4256
+ symbol: data.symbol
4257
+ },
4258
+ errors: {
4259
+ 404: 'Symbol not found in the openbb catalog'
4260
+ }
4261
+ });
4262
+ }
4263
+ }