@firela/api-types 0.0.0-canary.2fbeefe9 → 0.0.0-canary.3550df41

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,6 +17,8 @@ import type {
17
17
  AccountControllerCloseResponse,
18
18
  AccountControllerReopenData,
19
19
  AccountControllerReopenResponse,
20
+ AccountControllerAddOpeningBalanceData,
21
+ AccountControllerAddOpeningBalanceResponse,
20
22
  AccountStandardsControllerGetTemplatesData,
21
23
  AccountStandardsControllerGetTemplatesResponse,
22
24
  AccountStandardsControllerGetTemplateMetadataData,
@@ -141,26 +143,14 @@ import type {
141
143
  ExpectedTransactionControllerEnterNowResponse,
142
144
  ForecastControllerGetForecastData,
143
145
  ForecastControllerGetForecastResponse,
144
- TransactionRuleControllerCreateData,
145
- TransactionRuleControllerCreateResponse,
146
- TransactionRuleControllerListData,
147
- TransactionRuleControllerListResponse,
148
- TransactionRuleControllerValidateData,
149
- TransactionRuleControllerValidateResponse,
150
- TransactionRuleControllerBulkCreateData,
151
- TransactionRuleControllerBulkCreateResponse,
152
- TransactionRuleControllerExportData,
153
- TransactionRuleControllerExportResponse,
154
- TransactionRuleControllerGetStatisticsData,
155
- TransactionRuleControllerGetStatisticsResponse,
156
- TransactionRuleControllerGetDetailData,
157
- TransactionRuleControllerGetDetailResponse,
158
- TransactionRuleControllerUpdateData,
159
- TransactionRuleControllerUpdateResponse,
160
- TransactionRuleControllerDeleteData,
161
- TransactionRuleControllerDeleteResponse,
162
- TransactionRuleControllerTestData,
163
- TransactionRuleControllerTestResponse,
146
+ ReportingControllerGetPortfolioTrendsData,
147
+ ReportingControllerGetPortfolioTrendsResponse,
148
+ ReportingControllerGetCashFlowTrendsData,
149
+ ReportingControllerGetCashFlowTrendsResponse,
150
+ ReportingControllerGenerateSnapshotData,
151
+ ReportingControllerGenerateSnapshotResponse,
152
+ ReportingControllerBackfillSnapshotsData,
153
+ ReportingControllerBackfillSnapshotsResponse,
164
154
  UserControllerDeleteOwnUserData,
165
155
  UserControllerDeleteOwnUserResponse,
166
156
  UserControllerGetUserData,
@@ -183,6 +173,26 @@ import type {
183
173
  PropertyControllerUpdateResponse,
184
174
  PropertyControllerDeleteData,
185
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,
186
196
  EventControllerCreateData,
187
197
  EventControllerCreateResponse,
188
198
  EventControllerFindAllData,
@@ -264,14 +274,6 @@ import type {
264
274
  DashboardControllerGetExpensesResponse,
265
275
  HoldingPnlControllerGetHoldingPnlData,
266
276
  HoldingPnlControllerGetHoldingPnlResponse,
267
- ReportingControllerGetPortfolioTrendsData,
268
- ReportingControllerGetPortfolioTrendsResponse,
269
- ReportingControllerGetCashFlowTrendsData,
270
- ReportingControllerGetCashFlowTrendsResponse,
271
- ReportingControllerGenerateSnapshotData,
272
- ReportingControllerGenerateSnapshotResponse,
273
- ReportingControllerBackfillSnapshotsData,
274
- ReportingControllerBackfillSnapshotsResponse,
275
277
  ApiKeysControllerCreateApiKeyResponse,
276
278
  AuthControllerAccessTokenLoginData,
277
279
  AuthControllerAccessTokenLoginResponse,
@@ -286,7 +288,11 @@ import type {
286
288
  HealthControllerResetCircuitBreakerData,
287
289
  HealthControllerResetCircuitBreakerResponse,
288
290
  HealthControllerGetMetricsResponse,
289
- InfoControllerGetInfoResponse
291
+ InfoControllerGetInfoResponse,
292
+ SymbolControllerSearchData,
293
+ SymbolControllerSearchResponse,
294
+ SymbolControllerGetQuoteData,
295
+ SymbolControllerGetQuoteResponse
290
296
  } from './types.gen';
291
297
 
292
298
  export class BeanAccountsService {
@@ -405,7 +411,7 @@ export class BeanAccountsService {
405
411
 
406
412
  /**
407
413
  * Delete account
408
- * Deletes an account (only if no transactions)
414
+ * Deletes an account (only if no active transactions; voided/superseded residual postings are cleaned up)
409
415
  * @param data The data for the request.
410
416
  * @param data.id Account UUID
411
417
  * @param data.region Region code for tenant context
@@ -424,7 +430,7 @@ export class BeanAccountsService {
424
430
  },
425
431
  errors: {
426
432
  404: 'Account not found',
427
- 409: 'Account has transactions and cannot be deleted'
433
+ 409: 'Account has active transactions and cannot be deleted'
428
434
  }
429
435
  });
430
436
  }
@@ -486,6 +492,35 @@ export class BeanAccountsService {
486
492
  }
487
493
  });
488
494
  }
495
+
496
+ /**
497
+ * Post an opening-balance transaction
498
+ * 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.
499
+ * @param data The data for the request.
500
+ * @param data.id Account UUID
501
+ * @param data.region Region code for tenant context
502
+ * @param data.requestBody
503
+ * @returns OpeningBalanceResultDto Opening-balance transaction created
504
+ * @throws ApiError
505
+ */
506
+ public static accountControllerAddOpeningBalance(
507
+ data: AccountControllerAddOpeningBalanceData
508
+ ): CancelablePromise<AccountControllerAddOpeningBalanceResponse> {
509
+ return __request(OpenAPI, {
510
+ method: 'POST',
511
+ url: '/api/v1/{region}/bean/accounts/{id}/opening-balance',
512
+ path: {
513
+ id: data.id,
514
+ region: data.region
515
+ },
516
+ body: data.requestBody,
517
+ mediaType: 'application/json',
518
+ errors: {
519
+ 404: 'Account not found',
520
+ 409: 'An opening balance already exists for this account'
521
+ }
522
+ });
523
+ }
489
524
  }
490
525
 
491
526
  export class BeanAccountStandardsService {
@@ -2130,534 +2165,691 @@ export class RecurringForecastService {
2130
2165
  }
2131
2166
  }
2132
2167
 
2133
- export class BeanTransactionRulesService {
2168
+ export class ReportingService {
2134
2169
  /**
2135
- * Create a new transaction rule (or upsert if upsertByPayee=true)
2136
- * Creates a new rule. If upsertByPayee=true, updates existing rule matching payeeKeywords[0] instead of creating duplicate.
2170
+ * Get portfolio value trends
2171
+ *
2172
+ * Returns time series data of portfolio net worth.
2173
+ *
2174
+ * **Multi-currency Support:**
2175
+ * - `series[].byCurrency` - Currency breakdown for each data point
2176
+ * - `byCurrency` - Separate time series grouped by currency
2177
+ * - `warnings` - Exchange rate warnings if conversion failed
2178
+ *
2179
+ * **Parameters:**
2180
+ * - `period`: Time period (1m, 3m, 6m, 1y)
2181
+ * - `granularity`: Data granularity (day, week, month)
2182
+ *
2137
2183
  * @param data The data for the request.
2138
2184
  * @param data.region Region code for tenant context
2139
- * @param data.requestBody
2140
- * @returns TransactionRuleResponseDto Rule updated successfully (upsert mode)
2185
+ * @param data.period Time period
2186
+ * @param data.granularity Data granularity
2187
+ * @returns PortfolioTrendsResponseDto Trends retrieved successfully
2141
2188
  * @throws ApiError
2142
2189
  */
2143
- public static transactionRuleControllerCreate(
2144
- data: TransactionRuleControllerCreateData
2145
- ): CancelablePromise<TransactionRuleControllerCreateResponse> {
2190
+ public static reportingControllerGetPortfolioTrends(
2191
+ data: ReportingControllerGetPortfolioTrendsData
2192
+ ): CancelablePromise<ReportingControllerGetPortfolioTrendsResponse> {
2146
2193
  return __request(OpenAPI, {
2147
- method: 'POST',
2148
- url: '/api/v1/{region}/bean/transaction-rules',
2194
+ method: 'GET',
2195
+ url: '/api/v1/{region}/reporting/portfolio/trends',
2149
2196
  path: {
2150
2197
  region: data.region
2151
2198
  },
2152
- body: data.requestBody,
2153
- mediaType: 'application/json',
2199
+ query: {
2200
+ period: data.period,
2201
+ granularity: data.granularity
2202
+ },
2154
2203
  errors: {
2155
- 400: 'Validation failed',
2156
- 401: 'Unauthorized',
2157
- 409: 'Resource conflict - another process is updating this rule'
2204
+ 401: 'User not authenticated'
2158
2205
  }
2159
2206
  });
2160
2207
  }
2161
2208
 
2162
2209
  /**
2163
- * Get all transaction rules for user
2210
+ * Get cash-flow trends
2211
+ *
2212
+ * Monthly income / expense / netSavings over a fixed N-month window
2213
+ * (current month + N−1 prior). Missing months are zero-filled (flow metric).
2214
+ *
2215
+ * **Parameters:**
2216
+ * - `period`: 1m | 3m | 6m | 1y (default 6m)
2217
+ * - `granularity`: accepted for API symmetry; v1 returns month buckets
2218
+ *
2164
2219
  * @param data The data for the request.
2165
2220
  * @param data.region Region code for tenant context
2166
- * @param data.limit Max results per page (default: 20, max: 100)
2167
- * @param data.offset Pagination offset (default: 0)
2168
- * @param data.enabled Filter by enabled status
2169
- * @param data.learningSource Filter by learning source. Omit this parameter or pass empty string to get manually created rules (learningSource is null in database).
2170
- * @param data.autoApplyEnabled Filter by auto-apply status
2171
- * @returns TransactionRuleListResponseDto List of rules
2221
+ * @param data.period Time period
2222
+ * @param data.granularity Data granularity (accepted for API symmetry; v1 returns month buckets)
2223
+ * @returns CashFlowTrendsResponseDto Cash-flow trends retrieved successfully
2172
2224
  * @throws ApiError
2173
2225
  */
2174
- public static transactionRuleControllerList(
2175
- data: TransactionRuleControllerListData
2176
- ): CancelablePromise<TransactionRuleControllerListResponse> {
2226
+ public static reportingControllerGetCashFlowTrends(
2227
+ data: ReportingControllerGetCashFlowTrendsData
2228
+ ): CancelablePromise<ReportingControllerGetCashFlowTrendsResponse> {
2177
2229
  return __request(OpenAPI, {
2178
2230
  method: 'GET',
2179
- url: '/api/v1/{region}/bean/transaction-rules',
2231
+ url: '/api/v1/{region}/reporting/cash-flow/trends',
2180
2232
  path: {
2181
2233
  region: data.region
2182
2234
  },
2183
2235
  query: {
2184
- limit: data.limit,
2185
- offset: data.offset,
2186
- enabled: data.enabled,
2187
- learningSource: data.learningSource,
2188
- autoApplyEnabled: data.autoApplyEnabled
2236
+ period: data.period,
2237
+ granularity: data.granularity
2189
2238
  },
2190
2239
  errors: {
2191
- 401: 'Unauthorized'
2240
+ 401: 'User not authenticated'
2192
2241
  }
2193
2242
  });
2194
2243
  }
2195
2244
 
2196
2245
  /**
2197
- * Validate transaction rule configuration
2246
+ * Generate portfolio snapshot
2247
+ *
2248
+ * Manually generate a portfolio snapshot for a specific date.
2249
+ *
2250
+ * **Multi-currency Support:**
2251
+ * - Fetches balances grouped by currency
2252
+ * - Uses user's baseCurrency setting for conversion
2253
+ * - Stores exchange rates and warnings
2254
+ *
2255
+ * **Use Cases:**
2256
+ * - Testing snapshot generation
2257
+ * - Force regeneration after data correction
2258
+ * - Initial setup for new users
2259
+ *
2198
2260
  * @param data The data for the request.
2199
2261
  * @param data.region Region code for tenant context
2200
- * @param data.requestBody
2201
- * @returns ValidateRuleResponseDto Validation result
2262
+ * @param data.requestBody Optional date (defaults to today)
2263
+ * @returns GenerateSnapshotResponse Snapshot generated successfully
2202
2264
  * @throws ApiError
2203
2265
  */
2204
- public static transactionRuleControllerValidate(
2205
- data: TransactionRuleControllerValidateData
2206
- ): CancelablePromise<TransactionRuleControllerValidateResponse> {
2266
+ public static reportingControllerGenerateSnapshot(
2267
+ data: ReportingControllerGenerateSnapshotData
2268
+ ): CancelablePromise<ReportingControllerGenerateSnapshotResponse> {
2207
2269
  return __request(OpenAPI, {
2208
2270
  method: 'POST',
2209
- url: '/api/v1/{region}/bean/transaction-rules/validate',
2271
+ url: '/api/v1/{region}/reporting/snapshots/generate',
2210
2272
  path: {
2211
2273
  region: data.region
2212
2274
  },
2213
2275
  body: data.requestBody,
2214
2276
  mediaType: 'application/json',
2215
2277
  errors: {
2216
- 400: 'Validation failed',
2217
- 401: 'Unauthorized'
2278
+ 400: 'Invalid date format',
2279
+ 401: 'User not authenticated'
2218
2280
  }
2219
2281
  });
2220
2282
  }
2221
2283
 
2222
2284
  /**
2223
- * Bulk create transaction rules
2285
+ * Backfill portfolio snapshots
2286
+ *
2287
+ * Generate snapshots for a date range (historical data backfill).
2288
+ *
2289
+ * **Multi-currency Support:**
2290
+ * - Each snapshot includes multi-currency data
2291
+ * - Uses exchange rates available at generation time
2292
+ * - Warnings stored for missing exchange rates
2293
+ *
2294
+ * **Best Practices:**
2295
+ * - Use for initial setup after account configuration
2296
+ * - Run during low-traffic periods for large date ranges
2297
+ * - Existing snapshots are skipped (not regenerated)
2298
+ *
2224
2299
  * @param data The data for the request.
2225
2300
  * @param data.region Region code for tenant context
2226
2301
  * @param data.requestBody
2227
- * @returns BulkCreateRulesResponseDto Bulk create completed
2302
+ * @returns BackfillSnapshotsResponse Backfill completed successfully
2228
2303
  * @throws ApiError
2229
2304
  */
2230
- public static transactionRuleControllerBulkCreate(
2231
- data: TransactionRuleControllerBulkCreateData
2232
- ): CancelablePromise<TransactionRuleControllerBulkCreateResponse> {
2305
+ public static reportingControllerBackfillSnapshots(
2306
+ data: ReportingControllerBackfillSnapshotsData
2307
+ ): CancelablePromise<ReportingControllerBackfillSnapshotsResponse> {
2233
2308
  return __request(OpenAPI, {
2234
2309
  method: 'POST',
2235
- url: '/api/v1/{region}/bean/transaction-rules/bulk',
2310
+ url: '/api/v1/{region}/reporting/snapshots/backfill',
2236
2311
  path: {
2237
2312
  region: data.region
2238
2313
  },
2239
2314
  body: data.requestBody,
2240
2315
  mediaType: 'application/json',
2241
2316
  errors: {
2242
- 400: 'Invalid bulk create data',
2243
- 401: 'Unauthorized'
2317
+ 400: 'Invalid date format or range',
2318
+ 401: 'User not authenticated',
2319
+ 409: 'Backfill already in progress for this user'
2244
2320
  }
2245
2321
  });
2246
2322
  }
2323
+ }
2247
2324
 
2325
+ export class UsersService {
2248
2326
  /**
2249
- * Export transaction rules
2327
+ * Delete own user account
2250
2328
  * @param data The data for the request.
2251
- * @param data.format Export format (currently only JSON supported)
2252
- * @param data.region Region code for tenant context
2253
- * @returns ExportRulesResponseDto Exported rules
2329
+ * @param data.requestBody
2330
+ * @returns void User deleted successfully
2254
2331
  * @throws ApiError
2255
2332
  */
2256
- public static transactionRuleControllerExport(
2257
- data: TransactionRuleControllerExportData
2258
- ): CancelablePromise<TransactionRuleControllerExportResponse> {
2333
+ public static userControllerDeleteOwnUser(
2334
+ data: UserControllerDeleteOwnUserData
2335
+ ): CancelablePromise<UserControllerDeleteOwnUserResponse> {
2259
2336
  return __request(OpenAPI, {
2260
- method: 'GET',
2261
- url: '/api/v1/{region}/bean/transaction-rules/export/{format}',
2262
- path: {
2263
- format: data.format,
2264
- region: data.region
2265
- },
2337
+ method: 'DELETE',
2338
+ url: '/api/v1/users',
2339
+ body: data.requestBody,
2340
+ mediaType: 'application/json',
2266
2341
  errors: {
2267
- 400: 'Unsupported format',
2268
- 401: 'Unauthorized'
2342
+ 403: 'Invalid access token'
2269
2343
  }
2270
2344
  });
2271
2345
  }
2272
2346
 
2273
2347
  /**
2274
- * Get transaction rule statistics
2348
+ * Get current authenticated user
2275
2349
  * @param data The data for the request.
2276
- * @param data.period Statistics time period
2277
- * @param data.region Region code for tenant context
2278
- * @returns RuleStatisticsResponseDto Rule statistics
2350
+ * @param data.acceptLanguage
2351
+ * @returns unknown User retrieved successfully
2279
2352
  * @throws ApiError
2280
2353
  */
2281
- public static transactionRuleControllerGetStatistics(
2282
- data: TransactionRuleControllerGetStatisticsData
2283
- ): CancelablePromise<TransactionRuleControllerGetStatisticsResponse> {
2284
- return __request(OpenAPI, {
2285
- method: 'GET',
2286
- url: '/api/v1/{region}/bean/transaction-rules/statistics/{period}',
2354
+ public static userControllerGetUser(
2355
+ data: UserControllerGetUserData
2356
+ ): CancelablePromise<UserControllerGetUserResponse> {
2357
+ return __request(OpenAPI, {
2358
+ method: 'GET',
2359
+ url: '/api/v1/users',
2360
+ headers: {
2361
+ 'accept-language': data.acceptLanguage
2362
+ }
2363
+ });
2364
+ }
2365
+
2366
+ /**
2367
+ * Sign up new user
2368
+ * Create a new account with auto-generated access token. Protected by Cloudflare Turnstile to prevent automated signup (when enabled).
2369
+ * @param data The data for the request.
2370
+ * @param data.requestBody
2371
+ * @returns SignupResponseDto User created successfully
2372
+ * @throws ApiError
2373
+ */
2374
+ public static userControllerSignupUser(
2375
+ data: UserControllerSignupUserData
2376
+ ): CancelablePromise<UserControllerSignupUserResponse> {
2377
+ return __request(OpenAPI, {
2378
+ method: 'POST',
2379
+ url: '/api/v1/users',
2380
+ body: data.requestBody,
2381
+ mediaType: 'application/json',
2382
+ errors: {
2383
+ 400: 'Invalid Turnstile token (when Turnstile is enabled)',
2384
+ 403: 'User signup is disabled'
2385
+ }
2386
+ });
2387
+ }
2388
+
2389
+ /**
2390
+ * Delete user by ID (admin only)
2391
+ * @param data The data for the request.
2392
+ * @param data.id User ID to delete
2393
+ * @returns void User deleted successfully
2394
+ * @throws ApiError
2395
+ */
2396
+ public static userControllerDeleteUser(
2397
+ data: UserControllerDeleteUserData
2398
+ ): CancelablePromise<UserControllerDeleteUserResponse> {
2399
+ return __request(OpenAPI, {
2400
+ method: 'DELETE',
2401
+ url: '/api/v1/users/{id}',
2287
2402
  path: {
2288
- period: data.period,
2289
- region: data.region
2403
+ id: data.id
2290
2404
  },
2291
2405
  errors: {
2292
- 401: 'Unauthorized'
2406
+ 403: 'Cannot delete own account or insufficient permissions'
2293
2407
  }
2294
2408
  });
2295
2409
  }
2296
2410
 
2297
2411
  /**
2298
- * Get transaction rule detail
2412
+ * Get user info by user ID
2299
2413
  * @param data The data for the request.
2300
- * @param data.ruleId Rule ID
2301
- * @param data.region Region code for tenant context
2302
- * @returns TransactionRuleResponseDto Rule details
2414
+ * @param data.id User ID
2415
+ * @returns unknown User info retrieved successfully
2303
2416
  * @throws ApiError
2304
2417
  */
2305
- public static transactionRuleControllerGetDetail(
2306
- data: TransactionRuleControllerGetDetailData
2307
- ): CancelablePromise<TransactionRuleControllerGetDetailResponse> {
2418
+ public static userControllerGetUserInfo(
2419
+ data: UserControllerGetUserInfoData
2420
+ ): CancelablePromise<UserControllerGetUserInfoResponse> {
2308
2421
  return __request(OpenAPI, {
2309
2422
  method: 'GET',
2310
- url: '/api/v1/{region}/bean/transaction-rules/{ruleId}',
2423
+ url: '/api/v1/users/{id}/info',
2311
2424
  path: {
2312
- ruleId: data.ruleId,
2313
- region: data.region
2425
+ id: data.id
2314
2426
  },
2315
2427
  errors: {
2316
- 401: 'Unauthorized',
2317
- 403: 'Forbidden - not owner of rule',
2318
- 404: 'Rule not found'
2428
+ 403: 'Cannot access other user info without admin permission'
2319
2429
  }
2320
2430
  });
2321
2431
  }
2322
2432
 
2323
2433
  /**
2324
- * Update a transaction rule
2434
+ * Update user settings
2325
2435
  * @param data The data for the request.
2326
- * @param data.ruleId Rule ID to update
2327
- * @param data.region Region code for tenant context
2328
2436
  * @param data.requestBody
2329
- * @returns TransactionRuleResponseDto Rule updated successfully
2437
+ * @returns unknown Settings updated successfully
2330
2438
  * @throws ApiError
2331
2439
  */
2332
- public static transactionRuleControllerUpdate(
2333
- data: TransactionRuleControllerUpdateData
2334
- ): CancelablePromise<TransactionRuleControllerUpdateResponse> {
2440
+ public static userControllerUpdateUserSetting(
2441
+ data: UserControllerUpdateUserSettingData
2442
+ ): CancelablePromise<UserControllerUpdateUserSettingResponse> {
2335
2443
  return __request(OpenAPI, {
2336
2444
  method: 'PUT',
2337
- url: '/api/v1/{region}/bean/transaction-rules/{ruleId}',
2338
- path: {
2339
- ruleId: data.ruleId,
2340
- region: data.region
2341
- },
2445
+ url: '/api/v1/users/setting',
2342
2446
  body: data.requestBody,
2343
2447
  mediaType: 'application/json',
2344
2448
  errors: {
2345
- 400: 'Validation failed',
2346
- 401: 'Unauthorized',
2347
- 403: 'Forbidden - not owner of rule',
2348
- 404: 'Rule not found',
2349
- 409: 'Resource conflict - rule is being modified by another process'
2449
+ 403: 'Insufficient permissions'
2350
2450
  }
2351
2451
  });
2352
2452
  }
2353
2453
 
2354
2454
  /**
2355
- * Delete a transaction rule
2455
+ * Get all user settings paginated (admin only)
2356
2456
  * @param data The data for the request.
2357
- * @param data.ruleId Rule ID to delete
2358
- * @param data.region Region code for tenant context
2359
- * @returns void Rule deleted successfully
2457
+ * @param data.pageNo Page number
2458
+ * @param data.pageSize Page size
2459
+ * @returns unknown Settings list retrieved successfully
2360
2460
  * @throws ApiError
2361
2461
  */
2362
- public static transactionRuleControllerDelete(
2363
- data: TransactionRuleControllerDeleteData
2364
- ): CancelablePromise<TransactionRuleControllerDeleteResponse> {
2462
+ public static userControllerGetAllUserSettingsByPage(
2463
+ data: UserControllerGetAllUserSettingsByPageData
2464
+ ): CancelablePromise<UserControllerGetAllUserSettingsByPageResponse> {
2365
2465
  return __request(OpenAPI, {
2366
- method: 'DELETE',
2367
- url: '/api/v1/{region}/bean/transaction-rules/{ruleId}',
2368
- path: {
2369
- ruleId: data.ruleId,
2370
- region: data.region
2371
- },
2466
+ method: 'GET',
2467
+ url: '/api/v1/users/settings-by-page',
2468
+ query: {
2469
+ pageNo: data.pageNo,
2470
+ pageSize: data.pageSize
2471
+ }
2472
+ });
2473
+ }
2474
+
2475
+ /**
2476
+ * Get asset and liability summary for current user
2477
+ * @returns unknown Summary retrieved successfully
2478
+ * @throws ApiError
2479
+ */
2480
+ public static userControllerGetAssetLiabilitySummary(): CancelablePromise<UserControllerGetAssetLiabilitySummaryResponse> {
2481
+ return __request(OpenAPI, {
2482
+ method: 'GET',
2483
+ url: '/api/v1/users/asset-liability-summary'
2484
+ });
2485
+ }
2486
+ }
2487
+
2488
+ export class PropertiesService {
2489
+ /**
2490
+ * Get all system properties
2491
+ * @returns unknown Properties retrieved successfully
2492
+ * @throws ApiError
2493
+ */
2494
+ public static propertyControllerGetAll(): CancelablePromise<PropertyControllerGetAllResponse> {
2495
+ return __request(OpenAPI, {
2496
+ method: 'GET',
2497
+ url: '/api/v1/admin/properties',
2372
2498
  errors: {
2373
2499
  401: 'Unauthorized',
2374
- 403: 'Forbidden - not owner of rule',
2375
- 404: 'Rule not found',
2376
- 409: 'Resource conflict - rule is being modified by another process'
2500
+ 403: 'Forbidden - insufficient permissions'
2377
2501
  }
2378
2502
  });
2379
2503
  }
2380
2504
 
2381
2505
  /**
2382
- * Test rule matching
2506
+ * Get property by key
2383
2507
  * @param data The data for the request.
2384
- * @param data.ruleId Rule ID to test
2385
- * @param data.region Region code for tenant context
2386
- * @param data.requestBody
2387
- * @returns TestRuleResponseDto Test result
2508
+ * @param data.key Property key
2509
+ * @returns unknown Property retrieved successfully
2388
2510
  * @throws ApiError
2389
2511
  */
2390
- public static transactionRuleControllerTest(
2391
- data: TransactionRuleControllerTestData
2392
- ): CancelablePromise<TransactionRuleControllerTestResponse> {
2512
+ public static propertyControllerGetByKey(
2513
+ data: PropertyControllerGetByKeyData
2514
+ ): CancelablePromise<PropertyControllerGetByKeyResponse> {
2393
2515
  return __request(OpenAPI, {
2394
- method: 'POST',
2395
- url: '/api/v1/{region}/bean/transaction-rules/{ruleId}/test',
2516
+ method: 'GET',
2517
+ url: '/api/v1/admin/properties/{key}',
2396
2518
  path: {
2397
- ruleId: data.ruleId,
2398
- region: data.region
2519
+ key: data.key
2399
2520
  },
2400
- body: data.requestBody,
2401
- mediaType: 'application/json',
2402
2521
  errors: {
2403
2522
  401: 'Unauthorized',
2404
- 403: 'Forbidden - not owner of rule',
2405
- 404: 'Rule not found'
2523
+ 403: 'Forbidden - insufficient permissions',
2524
+ 404: 'Property not found'
2406
2525
  }
2407
2526
  });
2408
2527
  }
2409
- }
2410
2528
 
2411
- export class UsersService {
2412
2529
  /**
2413
- * Delete own user account
2530
+ * Update a system property
2414
2531
  * @param data The data for the request.
2532
+ * @param data.key Property key
2415
2533
  * @param data.requestBody
2416
- * @returns void User deleted successfully
2534
+ * @returns unknown Property updated successfully
2417
2535
  * @throws ApiError
2418
2536
  */
2419
- public static userControllerDeleteOwnUser(
2420
- data: UserControllerDeleteOwnUserData
2421
- ): CancelablePromise<UserControllerDeleteOwnUserResponse> {
2537
+ public static propertyControllerUpdate(
2538
+ data: PropertyControllerUpdateData
2539
+ ): CancelablePromise<PropertyControllerUpdateResponse> {
2422
2540
  return __request(OpenAPI, {
2423
- method: 'DELETE',
2424
- url: '/api/v1/users',
2541
+ method: 'PUT',
2542
+ url: '/api/v1/admin/properties/{key}',
2543
+ path: {
2544
+ key: data.key
2545
+ },
2425
2546
  body: data.requestBody,
2426
2547
  mediaType: 'application/json',
2427
2548
  errors: {
2428
- 403: 'Invalid access token'
2549
+ 401: 'Unauthorized',
2550
+ 403: 'Forbidden - insufficient permissions'
2429
2551
  }
2430
2552
  });
2431
2553
  }
2432
2554
 
2433
2555
  /**
2434
- * Get current authenticated user
2556
+ * Delete a system property
2435
2557
  * @param data The data for the request.
2436
- * @param data.acceptLanguage
2437
- * @returns unknown User retrieved successfully
2558
+ * @param data.key Property key
2559
+ * @returns void Property deleted successfully
2438
2560
  * @throws ApiError
2439
2561
  */
2440
- public static userControllerGetUser(
2441
- data: UserControllerGetUserData
2442
- ): CancelablePromise<UserControllerGetUserResponse> {
2562
+ public static propertyControllerDelete(
2563
+ data: PropertyControllerDeleteData
2564
+ ): CancelablePromise<PropertyControllerDeleteResponse> {
2443
2565
  return __request(OpenAPI, {
2444
- method: 'GET',
2445
- url: '/api/v1/users',
2446
- headers: {
2447
- 'accept-language': data.acceptLanguage
2566
+ method: 'DELETE',
2567
+ url: '/api/v1/admin/properties/{key}',
2568
+ path: {
2569
+ key: data.key
2570
+ },
2571
+ errors: {
2572
+ 401: 'Unauthorized',
2573
+ 403: 'Forbidden - insufficient permissions',
2574
+ 404: 'Property not found'
2448
2575
  }
2449
2576
  });
2450
2577
  }
2578
+ }
2451
2579
 
2580
+ export class BeanTransactionRulesService {
2452
2581
  /**
2453
- * Sign up new user
2454
- * Create a new account with auto-generated access token. Protected by Cloudflare Turnstile to prevent automated signup (when enabled).
2582
+ * Create a new transaction rule (or upsert if upsertByPayee=true)
2583
+ * Creates a new rule. If upsertByPayee=true, updates existing rule matching payeeKeywords[0] instead of creating duplicate.
2455
2584
  * @param data The data for the request.
2585
+ * @param data.region Region code for tenant context
2456
2586
  * @param data.requestBody
2457
- * @returns unknown User created successfully
2587
+ * @returns TransactionRuleResponseDto Rule updated successfully (upsert mode)
2458
2588
  * @throws ApiError
2459
2589
  */
2460
- public static userControllerSignupUser(
2461
- data: UserControllerSignupUserData
2462
- ): CancelablePromise<UserControllerSignupUserResponse> {
2590
+ public static transactionRuleControllerCreate(
2591
+ data: TransactionRuleControllerCreateData
2592
+ ): CancelablePromise<TransactionRuleControllerCreateResponse> {
2463
2593
  return __request(OpenAPI, {
2464
2594
  method: 'POST',
2465
- url: '/api/v1/users',
2595
+ url: '/api/v1/{region}/bean/transaction-rules',
2596
+ path: {
2597
+ region: data.region
2598
+ },
2466
2599
  body: data.requestBody,
2467
2600
  mediaType: 'application/json',
2468
2601
  errors: {
2469
- 400: 'Invalid Turnstile token (when Turnstile is enabled)',
2470
- 403: 'User signup is disabled'
2602
+ 400: 'Validation failed',
2603
+ 401: 'Unauthorized',
2604
+ 409: 'Resource conflict - another process is updating this rule'
2471
2605
  }
2472
2606
  });
2473
2607
  }
2474
2608
 
2475
2609
  /**
2476
- * Delete user by ID (admin only)
2610
+ * Get all transaction rules for user
2477
2611
  * @param data The data for the request.
2478
- * @param data.id User ID to delete
2479
- * @returns void User deleted successfully
2612
+ * @param data.region Region code for tenant context
2613
+ * @param data.limit Max results per page (default: 20, max: 100)
2614
+ * @param data.offset Pagination offset (default: 0)
2615
+ * @param data.enabled Filter by enabled status
2616
+ * @param data.learningSource Filter by learning source. Omit this parameter or pass empty string to get manually created rules (learningSource is null in database).
2617
+ * @param data.autoApplyEnabled Filter by auto-apply status
2618
+ * @returns TransactionRuleListResponseDto List of rules
2480
2619
  * @throws ApiError
2481
2620
  */
2482
- public static userControllerDeleteUser(
2483
- data: UserControllerDeleteUserData
2484
- ): CancelablePromise<UserControllerDeleteUserResponse> {
2621
+ public static transactionRuleControllerList(
2622
+ data: TransactionRuleControllerListData
2623
+ ): CancelablePromise<TransactionRuleControllerListResponse> {
2485
2624
  return __request(OpenAPI, {
2486
- method: 'DELETE',
2487
- url: '/api/v1/users/{id}',
2625
+ method: 'GET',
2626
+ url: '/api/v1/{region}/bean/transaction-rules',
2488
2627
  path: {
2489
- id: data.id
2628
+ region: data.region
2629
+ },
2630
+ query: {
2631
+ limit: data.limit,
2632
+ offset: data.offset,
2633
+ enabled: data.enabled,
2634
+ learningSource: data.learningSource,
2635
+ autoApplyEnabled: data.autoApplyEnabled
2490
2636
  },
2491
2637
  errors: {
2492
- 403: 'Cannot delete own account or insufficient permissions'
2638
+ 401: 'Unauthorized'
2493
2639
  }
2494
2640
  });
2495
2641
  }
2496
2642
 
2497
2643
  /**
2498
- * Get user info by user ID
2644
+ * Validate transaction rule configuration
2499
2645
  * @param data The data for the request.
2500
- * @param data.id User ID
2501
- * @returns unknown User info retrieved successfully
2646
+ * @param data.region Region code for tenant context
2647
+ * @param data.requestBody
2648
+ * @returns ValidateRuleResponseDto Validation result
2502
2649
  * @throws ApiError
2503
2650
  */
2504
- public static userControllerGetUserInfo(
2505
- data: UserControllerGetUserInfoData
2506
- ): CancelablePromise<UserControllerGetUserInfoResponse> {
2651
+ public static transactionRuleControllerValidate(
2652
+ data: TransactionRuleControllerValidateData
2653
+ ): CancelablePromise<TransactionRuleControllerValidateResponse> {
2507
2654
  return __request(OpenAPI, {
2508
- method: 'GET',
2509
- url: '/api/v1/users/{id}/info',
2655
+ method: 'POST',
2656
+ url: '/api/v1/{region}/bean/transaction-rules/validate',
2510
2657
  path: {
2511
- id: data.id
2658
+ region: data.region
2512
2659
  },
2660
+ body: data.requestBody,
2661
+ mediaType: 'application/json',
2513
2662
  errors: {
2514
- 403: 'Cannot access other user info without admin permission'
2663
+ 400: 'Validation failed',
2664
+ 401: 'Unauthorized'
2515
2665
  }
2516
2666
  });
2517
2667
  }
2518
2668
 
2519
2669
  /**
2520
- * Update user settings
2670
+ * Bulk create transaction rules
2521
2671
  * @param data The data for the request.
2672
+ * @param data.region Region code for tenant context
2522
2673
  * @param data.requestBody
2523
- * @returns unknown Settings updated successfully
2674
+ * @returns BulkCreateRulesResponseDto Bulk create completed
2524
2675
  * @throws ApiError
2525
2676
  */
2526
- public static userControllerUpdateUserSetting(
2527
- data: UserControllerUpdateUserSettingData
2528
- ): CancelablePromise<UserControllerUpdateUserSettingResponse> {
2677
+ public static transactionRuleControllerBulkCreate(
2678
+ data: TransactionRuleControllerBulkCreateData
2679
+ ): CancelablePromise<TransactionRuleControllerBulkCreateResponse> {
2529
2680
  return __request(OpenAPI, {
2530
- method: 'PUT',
2531
- url: '/api/v1/users/setting',
2681
+ method: 'POST',
2682
+ url: '/api/v1/{region}/bean/transaction-rules/bulk',
2683
+ path: {
2684
+ region: data.region
2685
+ },
2532
2686
  body: data.requestBody,
2533
2687
  mediaType: 'application/json',
2534
2688
  errors: {
2535
- 403: 'Insufficient permissions'
2689
+ 400: 'Invalid bulk create data',
2690
+ 401: 'Unauthorized'
2536
2691
  }
2537
2692
  });
2538
2693
  }
2539
2694
 
2540
2695
  /**
2541
- * Get all user settings paginated (admin only)
2696
+ * Export transaction rules
2542
2697
  * @param data The data for the request.
2543
- * @param data.pageNo Page number
2544
- * @param data.pageSize Page size
2545
- * @returns unknown Settings list retrieved successfully
2698
+ * @param data.format Export format (currently only JSON supported)
2699
+ * @param data.region Region code for tenant context
2700
+ * @returns ExportRulesResponseDto Exported rules
2546
2701
  * @throws ApiError
2547
2702
  */
2548
- public static userControllerGetAllUserSettingsByPage(
2549
- data: UserControllerGetAllUserSettingsByPageData
2550
- ): CancelablePromise<UserControllerGetAllUserSettingsByPageResponse> {
2703
+ public static transactionRuleControllerExport(
2704
+ data: TransactionRuleControllerExportData
2705
+ ): CancelablePromise<TransactionRuleControllerExportResponse> {
2551
2706
  return __request(OpenAPI, {
2552
2707
  method: 'GET',
2553
- url: '/api/v1/users/settings-by-page',
2554
- query: {
2555
- pageNo: data.pageNo,
2556
- pageSize: data.pageSize
2708
+ url: '/api/v1/{region}/bean/transaction-rules/export/{format}',
2709
+ path: {
2710
+ format: data.format,
2711
+ region: data.region
2712
+ },
2713
+ errors: {
2714
+ 400: 'Unsupported format',
2715
+ 401: 'Unauthorized'
2557
2716
  }
2558
2717
  });
2559
2718
  }
2560
2719
 
2561
2720
  /**
2562
- * Get asset and liability summary for current user
2563
- * @returns unknown Summary retrieved successfully
2721
+ * Get transaction rule statistics
2722
+ * @param data The data for the request.
2723
+ * @param data.period Statistics time period
2724
+ * @param data.region Region code for tenant context
2725
+ * @returns RuleStatisticsResponseDto Rule statistics
2564
2726
  * @throws ApiError
2565
2727
  */
2566
- public static userControllerGetAssetLiabilitySummary(): CancelablePromise<UserControllerGetAssetLiabilitySummaryResponse> {
2728
+ public static transactionRuleControllerGetStatistics(
2729
+ data: TransactionRuleControllerGetStatisticsData
2730
+ ): CancelablePromise<TransactionRuleControllerGetStatisticsResponse> {
2567
2731
  return __request(OpenAPI, {
2568
2732
  method: 'GET',
2569
- url: '/api/v1/users/asset-liability-summary'
2733
+ url: '/api/v1/{region}/bean/transaction-rules/statistics/{period}',
2734
+ path: {
2735
+ period: data.period,
2736
+ region: data.region
2737
+ },
2738
+ errors: {
2739
+ 401: 'Unauthorized'
2740
+ }
2570
2741
  });
2571
2742
  }
2572
- }
2573
2743
 
2574
- export class PropertiesService {
2575
2744
  /**
2576
- * Get all system properties
2577
- * @returns unknown Properties retrieved successfully
2745
+ * Get transaction rule detail
2746
+ * @param data The data for the request.
2747
+ * @param data.ruleId Rule ID
2748
+ * @param data.region Region code for tenant context
2749
+ * @returns TransactionRuleResponseDto Rule details
2578
2750
  * @throws ApiError
2579
2751
  */
2580
- public static propertyControllerGetAll(): CancelablePromise<PropertyControllerGetAllResponse> {
2752
+ public static transactionRuleControllerGetDetail(
2753
+ data: TransactionRuleControllerGetDetailData
2754
+ ): CancelablePromise<TransactionRuleControllerGetDetailResponse> {
2581
2755
  return __request(OpenAPI, {
2582
2756
  method: 'GET',
2583
- url: '/api/v1/admin/properties',
2757
+ url: '/api/v1/{region}/bean/transaction-rules/{ruleId}',
2758
+ path: {
2759
+ ruleId: data.ruleId,
2760
+ region: data.region
2761
+ },
2584
2762
  errors: {
2585
2763
  401: 'Unauthorized',
2586
- 403: 'Forbidden - insufficient permissions'
2764
+ 403: 'Forbidden - not owner of rule',
2765
+ 404: 'Rule not found'
2587
2766
  }
2588
2767
  });
2589
2768
  }
2590
2769
 
2591
2770
  /**
2592
- * Get property by key
2771
+ * Update a transaction rule
2593
2772
  * @param data The data for the request.
2594
- * @param data.key Property key
2595
- * @returns unknown Property retrieved successfully
2773
+ * @param data.ruleId Rule ID to update
2774
+ * @param data.region Region code for tenant context
2775
+ * @param data.requestBody
2776
+ * @returns TransactionRuleResponseDto Rule updated successfully
2596
2777
  * @throws ApiError
2597
2778
  */
2598
- public static propertyControllerGetByKey(
2599
- data: PropertyControllerGetByKeyData
2600
- ): CancelablePromise<PropertyControllerGetByKeyResponse> {
2779
+ public static transactionRuleControllerUpdate(
2780
+ data: TransactionRuleControllerUpdateData
2781
+ ): CancelablePromise<TransactionRuleControllerUpdateResponse> {
2601
2782
  return __request(OpenAPI, {
2602
- method: 'GET',
2603
- url: '/api/v1/admin/properties/{key}',
2783
+ method: 'PUT',
2784
+ url: '/api/v1/{region}/bean/transaction-rules/{ruleId}',
2604
2785
  path: {
2605
- key: data.key
2786
+ ruleId: data.ruleId,
2787
+ region: data.region
2606
2788
  },
2789
+ body: data.requestBody,
2790
+ mediaType: 'application/json',
2607
2791
  errors: {
2792
+ 400: 'Validation failed',
2608
2793
  401: 'Unauthorized',
2609
- 403: 'Forbidden - insufficient permissions',
2610
- 404: 'Property not found'
2794
+ 403: 'Forbidden - not owner of rule',
2795
+ 404: 'Rule not found',
2796
+ 409: 'Resource conflict - rule is being modified by another process'
2611
2797
  }
2612
2798
  });
2613
2799
  }
2614
2800
 
2615
2801
  /**
2616
- * Update a system property
2802
+ * Delete a transaction rule
2617
2803
  * @param data The data for the request.
2618
- * @param data.key Property key
2619
- * @param data.requestBody
2620
- * @returns unknown Property updated successfully
2804
+ * @param data.ruleId Rule ID to delete
2805
+ * @param data.region Region code for tenant context
2806
+ * @returns void Rule deleted successfully
2621
2807
  * @throws ApiError
2622
2808
  */
2623
- public static propertyControllerUpdate(
2624
- data: PropertyControllerUpdateData
2625
- ): CancelablePromise<PropertyControllerUpdateResponse> {
2809
+ public static transactionRuleControllerDelete(
2810
+ data: TransactionRuleControllerDeleteData
2811
+ ): CancelablePromise<TransactionRuleControllerDeleteResponse> {
2626
2812
  return __request(OpenAPI, {
2627
- method: 'PUT',
2628
- url: '/api/v1/admin/properties/{key}',
2813
+ method: 'DELETE',
2814
+ url: '/api/v1/{region}/bean/transaction-rules/{ruleId}',
2629
2815
  path: {
2630
- key: data.key
2816
+ ruleId: data.ruleId,
2817
+ region: data.region
2631
2818
  },
2632
- body: data.requestBody,
2633
- mediaType: 'application/json',
2634
2819
  errors: {
2635
2820
  401: 'Unauthorized',
2636
- 403: 'Forbidden - insufficient permissions'
2821
+ 403: 'Forbidden - not owner of rule',
2822
+ 404: 'Rule not found',
2823
+ 409: 'Resource conflict - rule is being modified by another process'
2637
2824
  }
2638
2825
  });
2639
2826
  }
2640
2827
 
2641
2828
  /**
2642
- * Delete a system property
2829
+ * Test rule matching
2643
2830
  * @param data The data for the request.
2644
- * @param data.key Property key
2645
- * @returns void Property deleted successfully
2831
+ * @param data.ruleId Rule ID to test
2832
+ * @param data.region Region code for tenant context
2833
+ * @param data.requestBody
2834
+ * @returns TestRuleResponseDto Test result
2646
2835
  * @throws ApiError
2647
2836
  */
2648
- public static propertyControllerDelete(
2649
- data: PropertyControllerDeleteData
2650
- ): CancelablePromise<PropertyControllerDeleteResponse> {
2837
+ public static transactionRuleControllerTest(
2838
+ data: TransactionRuleControllerTestData
2839
+ ): CancelablePromise<TransactionRuleControllerTestResponse> {
2651
2840
  return __request(OpenAPI, {
2652
- method: 'DELETE',
2653
- url: '/api/v1/admin/properties/{key}',
2841
+ method: 'POST',
2842
+ url: '/api/v1/{region}/bean/transaction-rules/{ruleId}/test',
2654
2843
  path: {
2655
- key: data.key
2844
+ ruleId: data.ruleId,
2845
+ region: data.region
2656
2846
  },
2847
+ body: data.requestBody,
2848
+ mediaType: 'application/json',
2657
2849
  errors: {
2658
2850
  401: 'Unauthorized',
2659
- 403: 'Forbidden - insufficient permissions',
2660
- 404: 'Property not found'
2851
+ 403: 'Forbidden - not owner of rule',
2852
+ 404: 'Rule not found'
2661
2853
  }
2662
2854
  });
2663
2855
  }
@@ -3538,7 +3730,7 @@ export class BeanPlatformsService {
3538
3730
 
3539
3731
  /**
3540
3732
  * Get platform list for current user
3541
- * @returns unknown List of platforms with user binding status
3733
+ * @returns PlatformListItemDto List of platforms with user binding status
3542
3734
  * @throws ApiError
3543
3735
  */
3544
3736
  public static platformControllerGetPlatformList(): CancelablePromise<PlatformControllerGetPlatformListResponse> {
@@ -3553,7 +3745,7 @@ export class BeanPlatformsService {
3553
3745
  * @param data The data for the request.
3554
3746
  * @param data.q Search query — Chinese name, English name, or abbreviation
3555
3747
  * @param data.region Region code for category override lookup
3556
- * @returns unknown List of matching platforms with suggested segment names
3748
+ * @returns PlatformMatchResponseDto Matching platforms with overall match type and truncation flag
3557
3749
  * @throws ApiError
3558
3750
  */
3559
3751
  public static platformControllerMatchPlatforms(
@@ -3771,163 +3963,6 @@ export class InvestmentService {
3771
3963
  }
3772
3964
  }
3773
3965
 
3774
- export class ReportingService {
3775
- /**
3776
- * Get portfolio value trends
3777
- *
3778
- * Returns time series data of portfolio net worth.
3779
- *
3780
- * **Multi-currency Support:**
3781
- * - `series[].byCurrency` - Currency breakdown for each data point
3782
- * - `byCurrency` - Separate time series grouped by currency
3783
- * - `warnings` - Exchange rate warnings if conversion failed
3784
- *
3785
- * **Parameters:**
3786
- * - `period`: Time period (1m, 3m, 6m, 1y)
3787
- * - `granularity`: Data granularity (day, week, month)
3788
- *
3789
- * @param data The data for the request.
3790
- * @param data.region Region code for tenant context
3791
- * @param data.period Time period
3792
- * @param data.granularity Data granularity
3793
- * @returns PortfolioTrendsResponseDto Trends retrieved successfully
3794
- * @throws ApiError
3795
- */
3796
- public static reportingControllerGetPortfolioTrends(
3797
- data: ReportingControllerGetPortfolioTrendsData
3798
- ): CancelablePromise<ReportingControllerGetPortfolioTrendsResponse> {
3799
- return __request(OpenAPI, {
3800
- method: 'GET',
3801
- url: '/api/v1/{region}/reporting/portfolio/trends',
3802
- path: {
3803
- region: data.region
3804
- },
3805
- query: {
3806
- period: data.period,
3807
- granularity: data.granularity
3808
- },
3809
- errors: {
3810
- 401: 'User not authenticated'
3811
- }
3812
- });
3813
- }
3814
-
3815
- /**
3816
- * Get cash-flow trends
3817
- *
3818
- * Monthly income / expense / netSavings over a fixed N-month window
3819
- * (current month + N−1 prior). Missing months are zero-filled (flow metric).
3820
- *
3821
- * **Parameters:**
3822
- * - `period`: 1m | 3m | 6m | 1y (default 6m)
3823
- * - `granularity`: accepted for API symmetry; v1 returns month buckets
3824
- *
3825
- * @param data The data for the request.
3826
- * @param data.region Region code for tenant context
3827
- * @param data.period Time period
3828
- * @param data.granularity Data granularity (accepted for API symmetry; v1 returns month buckets)
3829
- * @returns CashFlowTrendsResponseDto Cash-flow trends retrieved successfully
3830
- * @throws ApiError
3831
- */
3832
- public static reportingControllerGetCashFlowTrends(
3833
- data: ReportingControllerGetCashFlowTrendsData
3834
- ): CancelablePromise<ReportingControllerGetCashFlowTrendsResponse> {
3835
- return __request(OpenAPI, {
3836
- method: 'GET',
3837
- url: '/api/v1/{region}/reporting/cash-flow/trends',
3838
- path: {
3839
- region: data.region
3840
- },
3841
- query: {
3842
- period: data.period,
3843
- granularity: data.granularity
3844
- },
3845
- errors: {
3846
- 401: 'User not authenticated'
3847
- }
3848
- });
3849
- }
3850
-
3851
- /**
3852
- * Generate portfolio snapshot
3853
- *
3854
- * Manually generate a portfolio snapshot for a specific date.
3855
- *
3856
- * **Multi-currency Support:**
3857
- * - Fetches balances grouped by currency
3858
- * - Uses user's baseCurrency setting for conversion
3859
- * - Stores exchange rates and warnings
3860
- *
3861
- * **Use Cases:**
3862
- * - Testing snapshot generation
3863
- * - Force regeneration after data correction
3864
- * - Initial setup for new users
3865
- *
3866
- * @param data The data for the request.
3867
- * @param data.region Region code for tenant context
3868
- * @param data.requestBody Optional date (defaults to today)
3869
- * @returns GenerateSnapshotResponse Snapshot generated successfully
3870
- * @throws ApiError
3871
- */
3872
- public static reportingControllerGenerateSnapshot(
3873
- data: ReportingControllerGenerateSnapshotData
3874
- ): CancelablePromise<ReportingControllerGenerateSnapshotResponse> {
3875
- return __request(OpenAPI, {
3876
- method: 'POST',
3877
- url: '/api/v1/{region}/reporting/snapshots/generate',
3878
- path: {
3879
- region: data.region
3880
- },
3881
- body: data.requestBody,
3882
- mediaType: 'application/json',
3883
- errors: {
3884
- 400: 'Invalid date format',
3885
- 401: 'User not authenticated'
3886
- }
3887
- });
3888
- }
3889
-
3890
- /**
3891
- * Backfill portfolio snapshots
3892
- *
3893
- * Generate snapshots for a date range (historical data backfill).
3894
- *
3895
- * **Multi-currency Support:**
3896
- * - Each snapshot includes multi-currency data
3897
- * - Uses exchange rates available at generation time
3898
- * - Warnings stored for missing exchange rates
3899
- *
3900
- * **Best Practices:**
3901
- * - Use for initial setup after account configuration
3902
- * - Run during low-traffic periods for large date ranges
3903
- * - Existing snapshots are skipped (not regenerated)
3904
- *
3905
- * @param data The data for the request.
3906
- * @param data.region Region code for tenant context
3907
- * @param data.requestBody
3908
- * @returns BackfillSnapshotsResponse Backfill completed successfully
3909
- * @throws ApiError
3910
- */
3911
- public static reportingControllerBackfillSnapshots(
3912
- data: ReportingControllerBackfillSnapshotsData
3913
- ): CancelablePromise<ReportingControllerBackfillSnapshotsResponse> {
3914
- return __request(OpenAPI, {
3915
- method: 'POST',
3916
- url: '/api/v1/{region}/reporting/snapshots/backfill',
3917
- path: {
3918
- region: data.region
3919
- },
3920
- body: data.requestBody,
3921
- mediaType: 'application/json',
3922
- errors: {
3923
- 400: 'Invalid date format or range',
3924
- 401: 'User not authenticated',
3925
- 409: 'Backfill already in progress for this user'
3926
- }
3927
- });
3928
- }
3929
- }
3930
-
3931
3966
  export class ApiKeysService {
3932
3967
  /**
3933
3968
  * Create API key
@@ -3951,7 +3986,7 @@ export class AuthService {
3951
3986
  * Anonymous login with access token
3952
3987
  * @param data The data for the request.
3953
3988
  * @param data.requestBody
3954
- * @returns unknown Login successful
3989
+ * @returns AnonymousLoginResponseDto Login successful
3955
3990
  * @throws ApiError
3956
3991
  */
3957
3992
  public static authControllerAccessTokenLogin(
@@ -4138,3 +4173,53 @@ export class InfoService {
4138
4173
  });
4139
4174
  }
4140
4175
  }
4176
+
4177
+ export class MarketDataService {
4178
+ /**
4179
+ * Search market symbols by name or code
4180
+ * Ranked search over the openbb catalog. Empty `q` returns [].
4181
+ * @param data The data for the request.
4182
+ * @param data.q Search term — matched against symbol and instrument name. Empty string returns [].
4183
+ * @param data.limit Maximum number of results (clamped 1..50)
4184
+ * @param data.exchange Filter by exchange code (e.g. US, HK, SS, SZ)
4185
+ * @param data.assetType Filter by OpenBB asset_type (e.g. stock, etf)
4186
+ * @returns SymbolSearchResultDto Ranked search results
4187
+ * @throws ApiError
4188
+ */
4189
+ public static symbolControllerSearch(
4190
+ data: SymbolControllerSearchData
4191
+ ): CancelablePromise<SymbolControllerSearchResponse> {
4192
+ return __request(OpenAPI, {
4193
+ method: 'GET',
4194
+ url: '/api/v1/market/symbols/search',
4195
+ query: {
4196
+ q: data.q,
4197
+ limit: data.limit,
4198
+ exchange: data.exchange,
4199
+ assetType: data.assetType
4200
+ }
4201
+ });
4202
+ }
4203
+
4204
+ /**
4205
+ * Get a market symbol quote
4206
+ * @param data The data for the request.
4207
+ * @param data.symbol
4208
+ * @returns SymbolQuoteDto Symbol quote
4209
+ * @throws ApiError
4210
+ */
4211
+ public static symbolControllerGetQuote(
4212
+ data: SymbolControllerGetQuoteData
4213
+ ): CancelablePromise<SymbolControllerGetQuoteResponse> {
4214
+ return __request(OpenAPI, {
4215
+ method: 'GET',
4216
+ url: '/api/v1/market/symbols/{symbol}/quote',
4217
+ path: {
4218
+ symbol: data.symbol
4219
+ },
4220
+ errors: {
4221
+ 404: 'Symbol not found in the openbb catalog'
4222
+ }
4223
+ });
4224
+ }
4225
+ }