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

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,28 @@ 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,
196
+ CategoryCatalogControllerListData,
197
+ CategoryCatalogControllerListResponse,
186
198
  EventControllerCreateData,
187
199
  EventControllerCreateResponse,
188
200
  EventControllerFindAllData,
@@ -247,6 +259,7 @@ import type {
247
259
  PlatformControllerFindAllResponse,
248
260
  PlatformControllerCreateData,
249
261
  PlatformControllerCreateResponse,
262
+ PlatformControllerGetPlatformListData,
250
263
  PlatformControllerGetPlatformListResponse,
251
264
  PlatformControllerMatchPlatformsData,
252
265
  PlatformControllerMatchPlatformsResponse,
@@ -264,17 +277,11 @@ import type {
264
277
  DashboardControllerGetExpensesResponse,
265
278
  HoldingPnlControllerGetHoldingPnlData,
266
279
  HoldingPnlControllerGetHoldingPnlResponse,
267
- ReportingControllerGetPortfolioTrendsData,
268
- ReportingControllerGetPortfolioTrendsResponse,
269
- ReportingControllerGetCashFlowTrendsData,
270
- ReportingControllerGetCashFlowTrendsResponse,
271
- ReportingControllerGenerateSnapshotData,
272
- ReportingControllerGenerateSnapshotResponse,
273
- ReportingControllerBackfillSnapshotsData,
274
- ReportingControllerBackfillSnapshotsResponse,
275
280
  ApiKeysControllerCreateApiKeyResponse,
276
281
  AuthControllerAccessTokenLoginData,
277
282
  AuthControllerAccessTokenLoginResponse,
283
+ ParserContributionControllerCreateData,
284
+ ParserContributionControllerCreateResponse,
278
285
  CacheControllerFlushCacheResponse,
279
286
  ExchangeRateControllerGetExchangeRateData,
280
287
  ExchangeRateControllerGetExchangeRateResponse,
@@ -286,7 +293,11 @@ import type {
286
293
  HealthControllerResetCircuitBreakerData,
287
294
  HealthControllerResetCircuitBreakerResponse,
288
295
  HealthControllerGetMetricsResponse,
289
- InfoControllerGetInfoResponse
296
+ InfoControllerGetInfoResponse,
297
+ SymbolControllerSearchData,
298
+ SymbolControllerSearchResponse,
299
+ SymbolControllerGetQuoteData,
300
+ SymbolControllerGetQuoteResponse
290
301
  } from './types.gen';
291
302
 
292
303
  export class BeanAccountsService {
@@ -405,7 +416,7 @@ export class BeanAccountsService {
405
416
 
406
417
  /**
407
418
  * Delete account
408
- * Deletes an account (only if no transactions)
419
+ * Deletes an account (only if no active transactions; voided/superseded residual postings are cleaned up)
409
420
  * @param data The data for the request.
410
421
  * @param data.id Account UUID
411
422
  * @param data.region Region code for tenant context
@@ -424,7 +435,7 @@ export class BeanAccountsService {
424
435
  },
425
436
  errors: {
426
437
  404: 'Account not found',
427
- 409: 'Account has transactions and cannot be deleted'
438
+ 409: 'Account has active transactions and cannot be deleted'
428
439
  }
429
440
  });
430
441
  }
@@ -486,6 +497,35 @@ export class BeanAccountsService {
486
497
  }
487
498
  });
488
499
  }
500
+
501
+ /**
502
+ * Post an opening-balance transaction
503
+ * 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.
504
+ * @param data The data for the request.
505
+ * @param data.id Account UUID
506
+ * @param data.region Region code for tenant context
507
+ * @param data.requestBody
508
+ * @returns OpeningBalanceResultDto Opening-balance transaction created
509
+ * @throws ApiError
510
+ */
511
+ public static accountControllerAddOpeningBalance(
512
+ data: AccountControllerAddOpeningBalanceData
513
+ ): CancelablePromise<AccountControllerAddOpeningBalanceResponse> {
514
+ return __request(OpenAPI, {
515
+ method: 'POST',
516
+ url: '/api/v1/{region}/bean/accounts/{id}/opening-balance',
517
+ path: {
518
+ id: data.id,
519
+ region: data.region
520
+ },
521
+ body: data.requestBody,
522
+ mediaType: 'application/json',
523
+ errors: {
524
+ 404: 'Account not found',
525
+ 409: 'An opening balance already exists for this account'
526
+ }
527
+ });
528
+ }
489
529
  }
490
530
 
491
531
  export class BeanAccountStandardsService {
@@ -600,10 +640,11 @@ export class BeanTransactionsService {
600
640
  * @param data.offset Number of items to skip (default: 0)
601
641
  * @param data.dateFrom Filter by start date (inclusive), format: YYYY-MM-DD
602
642
  * @param data.dateTo Filter by end date (inclusive), format: YYYY-MM-DD
603
- * @param data.status Filter by transaction status
643
+ * @param data.status Filter by transaction status: single value, comma-separated multi-value (e.g. VOIDED,SUPERSEDED), or ALL to include audit rows. Defaults to ACTIVE-only (ADR-0128; previously unfiltered — breaking change).
604
644
  * @param data.search Search in narration and payee fields (max 200 chars)
605
645
  * @param data.accountId Filter by account ID (transactions with postings to this account)
606
- * @param data.category Filter by ADR-0075 functional category (Group segment); matches any posting to an Expenses/Income account whose derived Group segment equals this value
646
+ * @param data.category Filter by ADR-0075 functional category (Group segment); matches any posting to an account whose derived Group segment equals this value. Must be accompanied by flow (ADR-0126).
647
+ * @param data.flow Required when category is present (400 otherwise) and vice versa (ADR-0126). Restricts the category account set to the flow root (income → Income:, expense → Expenses:) and drives the per-leg sign normalization of row viewpointAmount and the summary. OpenAPI cannot express conditional requiredness — the pairing is enforced at runtime.
607
648
  * @returns TransactionListResponseDto Transaction list
608
649
  * @throws ApiError
609
650
  */
@@ -624,7 +665,8 @@ export class BeanTransactionsService {
624
665
  status: data.status,
625
666
  search: data.search,
626
667
  accountId: data.accountId,
627
- category: data.category
668
+ category: data.category,
669
+ flow: data.flow
628
670
  },
629
671
  errors: {
630
672
  400: 'Validation failed',
@@ -2130,534 +2172,719 @@ export class RecurringForecastService {
2130
2172
  }
2131
2173
  }
2132
2174
 
2133
- export class BeanTransactionRulesService {
2175
+ export class ReportingService {
2134
2176
  /**
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.
2177
+ * Get portfolio value trends
2178
+ *
2179
+ * Returns time series data of portfolio net worth.
2180
+ *
2181
+ * **Multi-currency Support:**
2182
+ * - `series[].byCurrency` - Currency breakdown for each data point
2183
+ * - `byCurrency` - Separate time series grouped by currency
2184
+ * - `warnings` - Exchange rate warnings if conversion failed
2185
+ *
2186
+ * **Parameters:**
2187
+ * - `period`: Time period (1m, 3m, 6m, 1y)
2188
+ * - `granularity`: Data granularity (day, week, month)
2189
+ *
2137
2190
  * @param data The data for the request.
2138
2191
  * @param data.region Region code for tenant context
2139
- * @param data.requestBody
2140
- * @returns TransactionRuleResponseDto Rule updated successfully (upsert mode)
2192
+ * @param data.period Time period
2193
+ * @param data.granularity Data granularity
2194
+ * @returns PortfolioTrendsResponseDto Trends retrieved successfully
2141
2195
  * @throws ApiError
2142
2196
  */
2143
- public static transactionRuleControllerCreate(
2144
- data: TransactionRuleControllerCreateData
2145
- ): CancelablePromise<TransactionRuleControllerCreateResponse> {
2197
+ public static reportingControllerGetPortfolioTrends(
2198
+ data: ReportingControllerGetPortfolioTrendsData
2199
+ ): CancelablePromise<ReportingControllerGetPortfolioTrendsResponse> {
2146
2200
  return __request(OpenAPI, {
2147
- method: 'POST',
2148
- url: '/api/v1/{region}/bean/transaction-rules',
2201
+ method: 'GET',
2202
+ url: '/api/v1/{region}/reporting/portfolio/trends',
2149
2203
  path: {
2150
2204
  region: data.region
2151
2205
  },
2152
- body: data.requestBody,
2153
- mediaType: 'application/json',
2206
+ query: {
2207
+ period: data.period,
2208
+ granularity: data.granularity
2209
+ },
2154
2210
  errors: {
2155
- 400: 'Validation failed',
2156
- 401: 'Unauthorized',
2157
- 409: 'Resource conflict - another process is updating this rule'
2211
+ 401: 'User not authenticated'
2158
2212
  }
2159
2213
  });
2160
2214
  }
2161
2215
 
2162
2216
  /**
2163
- * Get all transaction rules for user
2217
+ * Get cash-flow trends
2218
+ *
2219
+ * Monthly income / expense / netSavings over a fixed N-month window
2220
+ * (current month + N−1 prior). Missing months are zero-filled (flow metric).
2221
+ *
2222
+ * **Parameters:**
2223
+ * - `period`: 1m | 3m | 6m | 1y (default 6m)
2224
+ * - `granularity`: accepted for API symmetry; v1 returns month buckets
2225
+ *
2164
2226
  * @param data The data for the request.
2165
2227
  * @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
2228
+ * @param data.period Time period
2229
+ * @param data.granularity Data granularity (accepted for API symmetry; v1 returns month buckets)
2230
+ * @returns CashFlowTrendsResponseDto Cash-flow trends retrieved successfully
2172
2231
  * @throws ApiError
2173
2232
  */
2174
- public static transactionRuleControllerList(
2175
- data: TransactionRuleControllerListData
2176
- ): CancelablePromise<TransactionRuleControllerListResponse> {
2233
+ public static reportingControllerGetCashFlowTrends(
2234
+ data: ReportingControllerGetCashFlowTrendsData
2235
+ ): CancelablePromise<ReportingControllerGetCashFlowTrendsResponse> {
2177
2236
  return __request(OpenAPI, {
2178
2237
  method: 'GET',
2179
- url: '/api/v1/{region}/bean/transaction-rules',
2238
+ url: '/api/v1/{region}/reporting/cash-flow/trends',
2180
2239
  path: {
2181
2240
  region: data.region
2182
2241
  },
2183
2242
  query: {
2184
- limit: data.limit,
2185
- offset: data.offset,
2186
- enabled: data.enabled,
2187
- learningSource: data.learningSource,
2188
- autoApplyEnabled: data.autoApplyEnabled
2243
+ period: data.period,
2244
+ granularity: data.granularity
2189
2245
  },
2190
2246
  errors: {
2191
- 401: 'Unauthorized'
2247
+ 401: 'User not authenticated'
2192
2248
  }
2193
2249
  });
2194
2250
  }
2195
2251
 
2196
2252
  /**
2197
- * Validate transaction rule configuration
2253
+ * Generate portfolio snapshot
2254
+ *
2255
+ * Manually generate a portfolio snapshot for a specific date.
2256
+ *
2257
+ * **Multi-currency Support:**
2258
+ * - Fetches balances grouped by currency
2259
+ * - Uses user's baseCurrency setting for conversion
2260
+ * - Stores exchange rates and warnings
2261
+ *
2262
+ * **Use Cases:**
2263
+ * - Testing snapshot generation
2264
+ * - Force regeneration after data correction
2265
+ * - Initial setup for new users
2266
+ *
2198
2267
  * @param data The data for the request.
2199
2268
  * @param data.region Region code for tenant context
2200
- * @param data.requestBody
2201
- * @returns ValidateRuleResponseDto Validation result
2269
+ * @param data.requestBody Optional date (defaults to today)
2270
+ * @returns GenerateSnapshotResponse Snapshot generated successfully
2202
2271
  * @throws ApiError
2203
2272
  */
2204
- public static transactionRuleControllerValidate(
2205
- data: TransactionRuleControllerValidateData
2206
- ): CancelablePromise<TransactionRuleControllerValidateResponse> {
2273
+ public static reportingControllerGenerateSnapshot(
2274
+ data: ReportingControllerGenerateSnapshotData
2275
+ ): CancelablePromise<ReportingControllerGenerateSnapshotResponse> {
2207
2276
  return __request(OpenAPI, {
2208
2277
  method: 'POST',
2209
- url: '/api/v1/{region}/bean/transaction-rules/validate',
2278
+ url: '/api/v1/{region}/reporting/snapshots/generate',
2210
2279
  path: {
2211
2280
  region: data.region
2212
2281
  },
2213
2282
  body: data.requestBody,
2214
2283
  mediaType: 'application/json',
2215
2284
  errors: {
2216
- 400: 'Validation failed',
2217
- 401: 'Unauthorized'
2285
+ 400: 'Invalid date format',
2286
+ 401: 'User not authenticated'
2218
2287
  }
2219
2288
  });
2220
2289
  }
2221
2290
 
2222
2291
  /**
2223
- * Bulk create transaction rules
2292
+ * Backfill portfolio snapshots
2293
+ *
2294
+ * Generate snapshots for a date range (historical data backfill).
2295
+ *
2296
+ * **Multi-currency Support:**
2297
+ * - Each snapshot includes multi-currency data
2298
+ * - Uses exchange rates available at generation time
2299
+ * - Warnings stored for missing exchange rates
2300
+ *
2301
+ * **Best Practices:**
2302
+ * - Use for initial setup after account configuration
2303
+ * - Run during low-traffic periods for large date ranges
2304
+ * - Existing snapshots are skipped (not regenerated)
2305
+ *
2224
2306
  * @param data The data for the request.
2225
2307
  * @param data.region Region code for tenant context
2226
2308
  * @param data.requestBody
2227
- * @returns BulkCreateRulesResponseDto Bulk create completed
2309
+ * @returns BackfillSnapshotsResponse Backfill completed successfully
2228
2310
  * @throws ApiError
2229
2311
  */
2230
- public static transactionRuleControllerBulkCreate(
2231
- data: TransactionRuleControllerBulkCreateData
2232
- ): CancelablePromise<TransactionRuleControllerBulkCreateResponse> {
2312
+ public static reportingControllerBackfillSnapshots(
2313
+ data: ReportingControllerBackfillSnapshotsData
2314
+ ): CancelablePromise<ReportingControllerBackfillSnapshotsResponse> {
2233
2315
  return __request(OpenAPI, {
2234
2316
  method: 'POST',
2235
- url: '/api/v1/{region}/bean/transaction-rules/bulk',
2317
+ url: '/api/v1/{region}/reporting/snapshots/backfill',
2236
2318
  path: {
2237
2319
  region: data.region
2238
2320
  },
2239
2321
  body: data.requestBody,
2240
2322
  mediaType: 'application/json',
2241
2323
  errors: {
2242
- 400: 'Invalid bulk create data',
2243
- 401: 'Unauthorized'
2324
+ 400: 'Invalid date format or range',
2325
+ 401: 'User not authenticated',
2326
+ 409: 'Backfill already in progress for this user'
2244
2327
  }
2245
2328
  });
2246
2329
  }
2330
+ }
2247
2331
 
2332
+ export class UsersService {
2248
2333
  /**
2249
- * Export transaction rules
2334
+ * Delete own user account
2250
2335
  * @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
2336
+ * @param data.requestBody
2337
+ * @returns void User deleted successfully
2254
2338
  * @throws ApiError
2255
2339
  */
2256
- public static transactionRuleControllerExport(
2257
- data: TransactionRuleControllerExportData
2258
- ): CancelablePromise<TransactionRuleControllerExportResponse> {
2340
+ public static userControllerDeleteOwnUser(
2341
+ data: UserControllerDeleteOwnUserData
2342
+ ): CancelablePromise<UserControllerDeleteOwnUserResponse> {
2259
2343
  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
- },
2344
+ method: 'DELETE',
2345
+ url: '/api/v1/users',
2346
+ body: data.requestBody,
2347
+ mediaType: 'application/json',
2266
2348
  errors: {
2267
- 400: 'Unsupported format',
2268
- 401: 'Unauthorized'
2349
+ 403: 'Invalid access token'
2269
2350
  }
2270
2351
  });
2271
2352
  }
2272
2353
 
2273
2354
  /**
2274
- * Get transaction rule statistics
2355
+ * Get current authenticated user
2275
2356
  * @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
2357
+ * @param data.acceptLanguage
2358
+ * @returns UserResponseDto User retrieved successfully
2279
2359
  * @throws ApiError
2280
2360
  */
2281
- public static transactionRuleControllerGetStatistics(
2282
- data: TransactionRuleControllerGetStatisticsData
2283
- ): CancelablePromise<TransactionRuleControllerGetStatisticsResponse> {
2284
- return __request(OpenAPI, {
2361
+ public static userControllerGetUser(
2362
+ data: UserControllerGetUserData
2363
+ ): CancelablePromise<UserControllerGetUserResponse> {
2364
+ return __request(OpenAPI, {
2285
2365
  method: 'GET',
2286
- url: '/api/v1/{region}/bean/transaction-rules/statistics/{period}',
2366
+ url: '/api/v1/users',
2367
+ headers: {
2368
+ 'accept-language': data.acceptLanguage
2369
+ }
2370
+ });
2371
+ }
2372
+
2373
+ /**
2374
+ * Sign up new user
2375
+ * Create a new account with auto-generated access token. Protected by Cloudflare Turnstile to prevent automated signup (when enabled).
2376
+ * @param data The data for the request.
2377
+ * @param data.requestBody
2378
+ * @returns SignupResponseDto User created successfully
2379
+ * @throws ApiError
2380
+ */
2381
+ public static userControllerSignupUser(
2382
+ data: UserControllerSignupUserData
2383
+ ): CancelablePromise<UserControllerSignupUserResponse> {
2384
+ return __request(OpenAPI, {
2385
+ method: 'POST',
2386
+ url: '/api/v1/users',
2387
+ body: data.requestBody,
2388
+ mediaType: 'application/json',
2389
+ errors: {
2390
+ 400: 'Invalid Turnstile token (when Turnstile is enabled)',
2391
+ 403: 'User signup is disabled'
2392
+ }
2393
+ });
2394
+ }
2395
+
2396
+ /**
2397
+ * Delete user by ID (admin only)
2398
+ * @param data The data for the request.
2399
+ * @param data.id User ID to delete
2400
+ * @returns void User deleted successfully
2401
+ * @throws ApiError
2402
+ */
2403
+ public static userControllerDeleteUser(
2404
+ data: UserControllerDeleteUserData
2405
+ ): CancelablePromise<UserControllerDeleteUserResponse> {
2406
+ return __request(OpenAPI, {
2407
+ method: 'DELETE',
2408
+ url: '/api/v1/users/{id}',
2287
2409
  path: {
2288
- period: data.period,
2289
- region: data.region
2410
+ id: data.id
2290
2411
  },
2291
2412
  errors: {
2292
- 401: 'Unauthorized'
2413
+ 403: 'Cannot delete own account or insufficient permissions'
2293
2414
  }
2294
2415
  });
2295
2416
  }
2296
2417
 
2297
2418
  /**
2298
- * Get transaction rule detail
2419
+ * Get user info by user ID
2299
2420
  * @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
2421
+ * @param data.id User ID
2422
+ * @returns unknown User info retrieved successfully
2303
2423
  * @throws ApiError
2304
2424
  */
2305
- public static transactionRuleControllerGetDetail(
2306
- data: TransactionRuleControllerGetDetailData
2307
- ): CancelablePromise<TransactionRuleControllerGetDetailResponse> {
2425
+ public static userControllerGetUserInfo(
2426
+ data: UserControllerGetUserInfoData
2427
+ ): CancelablePromise<UserControllerGetUserInfoResponse> {
2308
2428
  return __request(OpenAPI, {
2309
2429
  method: 'GET',
2310
- url: '/api/v1/{region}/bean/transaction-rules/{ruleId}',
2430
+ url: '/api/v1/users/{id}/info',
2311
2431
  path: {
2312
- ruleId: data.ruleId,
2313
- region: data.region
2432
+ id: data.id
2314
2433
  },
2315
2434
  errors: {
2316
- 401: 'Unauthorized',
2317
- 403: 'Forbidden - not owner of rule',
2318
- 404: 'Rule not found'
2435
+ 403: 'Cannot access other user info without admin permission'
2319
2436
  }
2320
2437
  });
2321
2438
  }
2322
2439
 
2323
2440
  /**
2324
- * Update a transaction rule
2441
+ * Update user settings
2325
2442
  * @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
2443
  * @param data.requestBody
2329
- * @returns TransactionRuleResponseDto Rule updated successfully
2444
+ * @returns unknown Settings updated successfully
2330
2445
  * @throws ApiError
2331
2446
  */
2332
- public static transactionRuleControllerUpdate(
2333
- data: TransactionRuleControllerUpdateData
2334
- ): CancelablePromise<TransactionRuleControllerUpdateResponse> {
2447
+ public static userControllerUpdateUserSetting(
2448
+ data: UserControllerUpdateUserSettingData
2449
+ ): CancelablePromise<UserControllerUpdateUserSettingResponse> {
2335
2450
  return __request(OpenAPI, {
2336
2451
  method: 'PUT',
2337
- url: '/api/v1/{region}/bean/transaction-rules/{ruleId}',
2338
- path: {
2339
- ruleId: data.ruleId,
2340
- region: data.region
2341
- },
2452
+ url: '/api/v1/users/setting',
2342
2453
  body: data.requestBody,
2343
2454
  mediaType: 'application/json',
2344
2455
  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'
2456
+ 403: 'Insufficient permissions'
2350
2457
  }
2351
2458
  });
2352
2459
  }
2353
2460
 
2354
2461
  /**
2355
- * Delete a transaction rule
2462
+ * Get all user settings paginated (admin only)
2356
2463
  * @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
2464
+ * @param data.pageNo Page number
2465
+ * @param data.pageSize Page size
2466
+ * @returns unknown Settings list retrieved successfully
2360
2467
  * @throws ApiError
2361
2468
  */
2362
- public static transactionRuleControllerDelete(
2363
- data: TransactionRuleControllerDeleteData
2364
- ): CancelablePromise<TransactionRuleControllerDeleteResponse> {
2469
+ public static userControllerGetAllUserSettingsByPage(
2470
+ data: UserControllerGetAllUserSettingsByPageData
2471
+ ): CancelablePromise<UserControllerGetAllUserSettingsByPageResponse> {
2365
2472
  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
- },
2473
+ method: 'GET',
2474
+ url: '/api/v1/users/settings-by-page',
2475
+ query: {
2476
+ pageNo: data.pageNo,
2477
+ pageSize: data.pageSize
2478
+ }
2479
+ });
2480
+ }
2481
+
2482
+ /**
2483
+ * Get asset and liability summary for current user
2484
+ * @returns unknown Summary retrieved successfully
2485
+ * @throws ApiError
2486
+ */
2487
+ public static userControllerGetAssetLiabilitySummary(): CancelablePromise<UserControllerGetAssetLiabilitySummaryResponse> {
2488
+ return __request(OpenAPI, {
2489
+ method: 'GET',
2490
+ url: '/api/v1/users/asset-liability-summary'
2491
+ });
2492
+ }
2493
+ }
2494
+
2495
+ export class PropertiesService {
2496
+ /**
2497
+ * Get all system properties
2498
+ * @returns unknown Properties retrieved successfully
2499
+ * @throws ApiError
2500
+ */
2501
+ public static propertyControllerGetAll(): CancelablePromise<PropertyControllerGetAllResponse> {
2502
+ return __request(OpenAPI, {
2503
+ method: 'GET',
2504
+ url: '/api/v1/admin/properties',
2372
2505
  errors: {
2373
2506
  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'
2507
+ 403: 'Forbidden - insufficient permissions'
2377
2508
  }
2378
2509
  });
2379
2510
  }
2380
2511
 
2381
2512
  /**
2382
- * Test rule matching
2513
+ * Get property by key
2383
2514
  * @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
2515
+ * @param data.key Property key
2516
+ * @returns unknown Property retrieved successfully
2388
2517
  * @throws ApiError
2389
2518
  */
2390
- public static transactionRuleControllerTest(
2391
- data: TransactionRuleControllerTestData
2392
- ): CancelablePromise<TransactionRuleControllerTestResponse> {
2519
+ public static propertyControllerGetByKey(
2520
+ data: PropertyControllerGetByKeyData
2521
+ ): CancelablePromise<PropertyControllerGetByKeyResponse> {
2393
2522
  return __request(OpenAPI, {
2394
- method: 'POST',
2395
- url: '/api/v1/{region}/bean/transaction-rules/{ruleId}/test',
2523
+ method: 'GET',
2524
+ url: '/api/v1/admin/properties/{key}',
2396
2525
  path: {
2397
- ruleId: data.ruleId,
2398
- region: data.region
2526
+ key: data.key
2399
2527
  },
2400
- body: data.requestBody,
2401
- mediaType: 'application/json',
2402
2528
  errors: {
2403
2529
  401: 'Unauthorized',
2404
- 403: 'Forbidden - not owner of rule',
2405
- 404: 'Rule not found'
2530
+ 403: 'Forbidden - insufficient permissions',
2531
+ 404: 'Property not found'
2406
2532
  }
2407
2533
  });
2408
2534
  }
2409
- }
2410
2535
 
2411
- export class UsersService {
2412
2536
  /**
2413
- * Delete own user account
2537
+ * Update a system property
2414
2538
  * @param data The data for the request.
2539
+ * @param data.key Property key
2415
2540
  * @param data.requestBody
2416
- * @returns void User deleted successfully
2541
+ * @returns unknown Property updated successfully
2417
2542
  * @throws ApiError
2418
2543
  */
2419
- public static userControllerDeleteOwnUser(
2420
- data: UserControllerDeleteOwnUserData
2421
- ): CancelablePromise<UserControllerDeleteOwnUserResponse> {
2544
+ public static propertyControllerUpdate(
2545
+ data: PropertyControllerUpdateData
2546
+ ): CancelablePromise<PropertyControllerUpdateResponse> {
2422
2547
  return __request(OpenAPI, {
2423
- method: 'DELETE',
2424
- url: '/api/v1/users',
2548
+ method: 'PUT',
2549
+ url: '/api/v1/admin/properties/{key}',
2550
+ path: {
2551
+ key: data.key
2552
+ },
2425
2553
  body: data.requestBody,
2426
2554
  mediaType: 'application/json',
2427
2555
  errors: {
2428
- 403: 'Invalid access token'
2556
+ 401: 'Unauthorized',
2557
+ 403: 'Forbidden - insufficient permissions'
2429
2558
  }
2430
2559
  });
2431
2560
  }
2432
2561
 
2433
2562
  /**
2434
- * Get current authenticated user
2563
+ * Delete a system property
2435
2564
  * @param data The data for the request.
2436
- * @param data.acceptLanguage
2437
- * @returns unknown User retrieved successfully
2565
+ * @param data.key Property key
2566
+ * @returns void Property deleted successfully
2438
2567
  * @throws ApiError
2439
2568
  */
2440
- public static userControllerGetUser(
2441
- data: UserControllerGetUserData
2442
- ): CancelablePromise<UserControllerGetUserResponse> {
2569
+ public static propertyControllerDelete(
2570
+ data: PropertyControllerDeleteData
2571
+ ): CancelablePromise<PropertyControllerDeleteResponse> {
2443
2572
  return __request(OpenAPI, {
2444
- method: 'GET',
2445
- url: '/api/v1/users',
2446
- headers: {
2447
- 'accept-language': data.acceptLanguage
2573
+ method: 'DELETE',
2574
+ url: '/api/v1/admin/properties/{key}',
2575
+ path: {
2576
+ key: data.key
2577
+ },
2578
+ errors: {
2579
+ 401: 'Unauthorized',
2580
+ 403: 'Forbidden - insufficient permissions',
2581
+ 404: 'Property not found'
2448
2582
  }
2449
2583
  });
2450
2584
  }
2585
+ }
2451
2586
 
2587
+ export class BeanTransactionRulesService {
2452
2588
  /**
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).
2589
+ * Create a new transaction rule (or upsert if upsertByPayee=true)
2590
+ * Creates a new rule. If upsertByPayee=true, updates existing rule matching payeeKeywords[0] instead of creating duplicate.
2455
2591
  * @param data The data for the request.
2592
+ * @param data.region Region code for tenant context
2456
2593
  * @param data.requestBody
2457
- * @returns unknown User created successfully
2594
+ * @returns TransactionRuleResponseDto Rule updated successfully (upsert mode)
2458
2595
  * @throws ApiError
2459
2596
  */
2460
- public static userControllerSignupUser(
2461
- data: UserControllerSignupUserData
2462
- ): CancelablePromise<UserControllerSignupUserResponse> {
2597
+ public static transactionRuleControllerCreate(
2598
+ data: TransactionRuleControllerCreateData
2599
+ ): CancelablePromise<TransactionRuleControllerCreateResponse> {
2463
2600
  return __request(OpenAPI, {
2464
2601
  method: 'POST',
2465
- url: '/api/v1/users',
2602
+ url: '/api/v1/{region}/bean/transaction-rules',
2603
+ path: {
2604
+ region: data.region
2605
+ },
2466
2606
  body: data.requestBody,
2467
2607
  mediaType: 'application/json',
2468
2608
  errors: {
2469
- 400: 'Invalid Turnstile token (when Turnstile is enabled)',
2470
- 403: 'User signup is disabled'
2609
+ 400: 'Validation failed',
2610
+ 401: 'Unauthorized',
2611
+ 409: 'Resource conflict - another process is updating this rule'
2471
2612
  }
2472
2613
  });
2473
2614
  }
2474
2615
 
2475
2616
  /**
2476
- * Delete user by ID (admin only)
2617
+ * Get all transaction rules for user
2477
2618
  * @param data The data for the request.
2478
- * @param data.id User ID to delete
2479
- * @returns void User deleted successfully
2619
+ * @param data.region Region code for tenant context
2620
+ * @param data.limit Max results per page (default: 20, max: 100)
2621
+ * @param data.offset Pagination offset (default: 0)
2622
+ * @param data.enabled Filter by enabled status
2623
+ * @param data.learningSource Filter by learning source. Omit this parameter or pass empty string to get manually created rules (learningSource is null in database).
2624
+ * @param data.autoApplyEnabled Filter by auto-apply status
2625
+ * @returns TransactionRuleListResponseDto List of rules
2480
2626
  * @throws ApiError
2481
2627
  */
2482
- public static userControllerDeleteUser(
2483
- data: UserControllerDeleteUserData
2484
- ): CancelablePromise<UserControllerDeleteUserResponse> {
2628
+ public static transactionRuleControllerList(
2629
+ data: TransactionRuleControllerListData
2630
+ ): CancelablePromise<TransactionRuleControllerListResponse> {
2485
2631
  return __request(OpenAPI, {
2486
- method: 'DELETE',
2487
- url: '/api/v1/users/{id}',
2632
+ method: 'GET',
2633
+ url: '/api/v1/{region}/bean/transaction-rules',
2488
2634
  path: {
2489
- id: data.id
2635
+ region: data.region
2636
+ },
2637
+ query: {
2638
+ limit: data.limit,
2639
+ offset: data.offset,
2640
+ enabled: data.enabled,
2641
+ learningSource: data.learningSource,
2642
+ autoApplyEnabled: data.autoApplyEnabled
2490
2643
  },
2491
2644
  errors: {
2492
- 403: 'Cannot delete own account or insufficient permissions'
2645
+ 401: 'Unauthorized'
2493
2646
  }
2494
2647
  });
2495
2648
  }
2496
2649
 
2497
2650
  /**
2498
- * Get user info by user ID
2651
+ * Validate transaction rule configuration
2499
2652
  * @param data The data for the request.
2500
- * @param data.id User ID
2501
- * @returns unknown User info retrieved successfully
2653
+ * @param data.region Region code for tenant context
2654
+ * @param data.requestBody
2655
+ * @returns ValidateRuleResponseDto Validation result
2502
2656
  * @throws ApiError
2503
2657
  */
2504
- public static userControllerGetUserInfo(
2505
- data: UserControllerGetUserInfoData
2506
- ): CancelablePromise<UserControllerGetUserInfoResponse> {
2658
+ public static transactionRuleControllerValidate(
2659
+ data: TransactionRuleControllerValidateData
2660
+ ): CancelablePromise<TransactionRuleControllerValidateResponse> {
2507
2661
  return __request(OpenAPI, {
2508
- method: 'GET',
2509
- url: '/api/v1/users/{id}/info',
2662
+ method: 'POST',
2663
+ url: '/api/v1/{region}/bean/transaction-rules/validate',
2510
2664
  path: {
2511
- id: data.id
2665
+ region: data.region
2512
2666
  },
2667
+ body: data.requestBody,
2668
+ mediaType: 'application/json',
2513
2669
  errors: {
2514
- 403: 'Cannot access other user info without admin permission'
2670
+ 400: 'Validation failed',
2671
+ 401: 'Unauthorized'
2515
2672
  }
2516
2673
  });
2517
2674
  }
2518
2675
 
2519
2676
  /**
2520
- * Update user settings
2677
+ * Bulk create transaction rules
2521
2678
  * @param data The data for the request.
2679
+ * @param data.region Region code for tenant context
2522
2680
  * @param data.requestBody
2523
- * @returns unknown Settings updated successfully
2681
+ * @returns BulkCreateRulesResponseDto Bulk create completed
2524
2682
  * @throws ApiError
2525
2683
  */
2526
- public static userControllerUpdateUserSetting(
2527
- data: UserControllerUpdateUserSettingData
2528
- ): CancelablePromise<UserControllerUpdateUserSettingResponse> {
2684
+ public static transactionRuleControllerBulkCreate(
2685
+ data: TransactionRuleControllerBulkCreateData
2686
+ ): CancelablePromise<TransactionRuleControllerBulkCreateResponse> {
2529
2687
  return __request(OpenAPI, {
2530
- method: 'PUT',
2531
- url: '/api/v1/users/setting',
2688
+ method: 'POST',
2689
+ url: '/api/v1/{region}/bean/transaction-rules/bulk',
2690
+ path: {
2691
+ region: data.region
2692
+ },
2532
2693
  body: data.requestBody,
2533
2694
  mediaType: 'application/json',
2534
2695
  errors: {
2535
- 403: 'Insufficient permissions'
2696
+ 400: 'Invalid bulk create data',
2697
+ 401: 'Unauthorized'
2536
2698
  }
2537
2699
  });
2538
2700
  }
2539
2701
 
2540
2702
  /**
2541
- * Get all user settings paginated (admin only)
2703
+ * Export transaction rules
2542
2704
  * @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
2705
+ * @param data.format Export format (currently only JSON supported)
2706
+ * @param data.region Region code for tenant context
2707
+ * @returns ExportRulesResponseDto Exported rules
2546
2708
  * @throws ApiError
2547
2709
  */
2548
- public static userControllerGetAllUserSettingsByPage(
2549
- data: UserControllerGetAllUserSettingsByPageData
2550
- ): CancelablePromise<UserControllerGetAllUserSettingsByPageResponse> {
2710
+ public static transactionRuleControllerExport(
2711
+ data: TransactionRuleControllerExportData
2712
+ ): CancelablePromise<TransactionRuleControllerExportResponse> {
2551
2713
  return __request(OpenAPI, {
2552
2714
  method: 'GET',
2553
- url: '/api/v1/users/settings-by-page',
2554
- query: {
2555
- pageNo: data.pageNo,
2556
- pageSize: data.pageSize
2715
+ url: '/api/v1/{region}/bean/transaction-rules/export/{format}',
2716
+ path: {
2717
+ format: data.format,
2718
+ region: data.region
2719
+ },
2720
+ errors: {
2721
+ 400: 'Unsupported format',
2722
+ 401: 'Unauthorized'
2557
2723
  }
2558
2724
  });
2559
2725
  }
2560
2726
 
2561
2727
  /**
2562
- * Get asset and liability summary for current user
2563
- * @returns unknown Summary retrieved successfully
2728
+ * Get transaction rule statistics
2729
+ * @param data The data for the request.
2730
+ * @param data.period Statistics time period
2731
+ * @param data.region Region code for tenant context
2732
+ * @returns RuleStatisticsResponseDto Rule statistics
2564
2733
  * @throws ApiError
2565
2734
  */
2566
- public static userControllerGetAssetLiabilitySummary(): CancelablePromise<UserControllerGetAssetLiabilitySummaryResponse> {
2735
+ public static transactionRuleControllerGetStatistics(
2736
+ data: TransactionRuleControllerGetStatisticsData
2737
+ ): CancelablePromise<TransactionRuleControllerGetStatisticsResponse> {
2567
2738
  return __request(OpenAPI, {
2568
2739
  method: 'GET',
2569
- url: '/api/v1/users/asset-liability-summary'
2740
+ url: '/api/v1/{region}/bean/transaction-rules/statistics/{period}',
2741
+ path: {
2742
+ period: data.period,
2743
+ region: data.region
2744
+ },
2745
+ errors: {
2746
+ 401: 'Unauthorized'
2747
+ }
2570
2748
  });
2571
2749
  }
2572
- }
2573
2750
 
2574
- export class PropertiesService {
2575
2751
  /**
2576
- * Get all system properties
2577
- * @returns unknown Properties retrieved successfully
2752
+ * Get transaction rule detail
2753
+ * @param data The data for the request.
2754
+ * @param data.ruleId Rule ID
2755
+ * @param data.region Region code for tenant context
2756
+ * @returns TransactionRuleResponseDto Rule details
2578
2757
  * @throws ApiError
2579
2758
  */
2580
- public static propertyControllerGetAll(): CancelablePromise<PropertyControllerGetAllResponse> {
2759
+ public static transactionRuleControllerGetDetail(
2760
+ data: TransactionRuleControllerGetDetailData
2761
+ ): CancelablePromise<TransactionRuleControllerGetDetailResponse> {
2581
2762
  return __request(OpenAPI, {
2582
2763
  method: 'GET',
2583
- url: '/api/v1/admin/properties',
2764
+ url: '/api/v1/{region}/bean/transaction-rules/{ruleId}',
2765
+ path: {
2766
+ ruleId: data.ruleId,
2767
+ region: data.region
2768
+ },
2584
2769
  errors: {
2585
2770
  401: 'Unauthorized',
2586
- 403: 'Forbidden - insufficient permissions'
2771
+ 403: 'Forbidden - not owner of rule',
2772
+ 404: 'Rule not found'
2587
2773
  }
2588
2774
  });
2589
2775
  }
2590
2776
 
2591
2777
  /**
2592
- * Get property by key
2778
+ * Update a transaction rule
2593
2779
  * @param data The data for the request.
2594
- * @param data.key Property key
2595
- * @returns unknown Property retrieved successfully
2780
+ * @param data.ruleId Rule ID to update
2781
+ * @param data.region Region code for tenant context
2782
+ * @param data.requestBody
2783
+ * @returns TransactionRuleResponseDto Rule updated successfully
2596
2784
  * @throws ApiError
2597
2785
  */
2598
- public static propertyControllerGetByKey(
2599
- data: PropertyControllerGetByKeyData
2600
- ): CancelablePromise<PropertyControllerGetByKeyResponse> {
2786
+ public static transactionRuleControllerUpdate(
2787
+ data: TransactionRuleControllerUpdateData
2788
+ ): CancelablePromise<TransactionRuleControllerUpdateResponse> {
2601
2789
  return __request(OpenAPI, {
2602
- method: 'GET',
2603
- url: '/api/v1/admin/properties/{key}',
2790
+ method: 'PUT',
2791
+ url: '/api/v1/{region}/bean/transaction-rules/{ruleId}',
2604
2792
  path: {
2605
- key: data.key
2793
+ ruleId: data.ruleId,
2794
+ region: data.region
2795
+ },
2796
+ body: data.requestBody,
2797
+ mediaType: 'application/json',
2798
+ errors: {
2799
+ 400: 'Validation failed',
2800
+ 401: 'Unauthorized',
2801
+ 403: 'Forbidden - not owner of rule',
2802
+ 404: 'Rule not found',
2803
+ 409: 'Resource conflict - rule is being modified by another process'
2804
+ }
2805
+ });
2806
+ }
2807
+
2808
+ /**
2809
+ * Delete a transaction rule
2810
+ * @param data The data for the request.
2811
+ * @param data.ruleId Rule ID to delete
2812
+ * @param data.region Region code for tenant context
2813
+ * @returns void Rule deleted successfully
2814
+ * @throws ApiError
2815
+ */
2816
+ public static transactionRuleControllerDelete(
2817
+ data: TransactionRuleControllerDeleteData
2818
+ ): CancelablePromise<TransactionRuleControllerDeleteResponse> {
2819
+ return __request(OpenAPI, {
2820
+ method: 'DELETE',
2821
+ url: '/api/v1/{region}/bean/transaction-rules/{ruleId}',
2822
+ path: {
2823
+ ruleId: data.ruleId,
2824
+ region: data.region
2606
2825
  },
2607
2826
  errors: {
2608
2827
  401: 'Unauthorized',
2609
- 403: 'Forbidden - insufficient permissions',
2610
- 404: 'Property not found'
2828
+ 403: 'Forbidden - not owner of rule',
2829
+ 404: 'Rule not found',
2830
+ 409: 'Resource conflict - rule is being modified by another process'
2611
2831
  }
2612
2832
  });
2613
2833
  }
2614
2834
 
2615
2835
  /**
2616
- * Update a system property
2836
+ * Test rule matching
2617
2837
  * @param data The data for the request.
2618
- * @param data.key Property key
2838
+ * @param data.ruleId Rule ID to test
2839
+ * @param data.region Region code for tenant context
2619
2840
  * @param data.requestBody
2620
- * @returns unknown Property updated successfully
2841
+ * @returns TestRuleResponseDto Test result
2621
2842
  * @throws ApiError
2622
2843
  */
2623
- public static propertyControllerUpdate(
2624
- data: PropertyControllerUpdateData
2625
- ): CancelablePromise<PropertyControllerUpdateResponse> {
2844
+ public static transactionRuleControllerTest(
2845
+ data: TransactionRuleControllerTestData
2846
+ ): CancelablePromise<TransactionRuleControllerTestResponse> {
2626
2847
  return __request(OpenAPI, {
2627
- method: 'PUT',
2628
- url: '/api/v1/admin/properties/{key}',
2848
+ method: 'POST',
2849
+ url: '/api/v1/{region}/bean/transaction-rules/{ruleId}/test',
2629
2850
  path: {
2630
- key: data.key
2851
+ ruleId: data.ruleId,
2852
+ region: data.region
2631
2853
  },
2632
2854
  body: data.requestBody,
2633
2855
  mediaType: 'application/json',
2634
2856
  errors: {
2635
2857
  401: 'Unauthorized',
2636
- 403: 'Forbidden - insufficient permissions'
2858
+ 403: 'Forbidden - not owner of rule',
2859
+ 404: 'Rule not found'
2637
2860
  }
2638
2861
  });
2639
2862
  }
2863
+ }
2640
2864
 
2865
+ export class BeanCategoryCatalogService {
2641
2866
  /**
2642
- * Delete a system property
2867
+ * List category catalog for a region
2868
+ * 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.
2643
2869
  * @param data The data for the request.
2644
- * @param data.key Property key
2645
- * @returns void Property deleted successfully
2870
+ * @param data.region Region code for tenant context
2871
+ * @param data.scenario Filter by scenario
2872
+ * @param data.routeBearing Filter by routeBearing (entity-router route() consumes it)
2873
+ * @returns CategoryCatalogListResponseDto Category catalog retrieved successfully
2646
2874
  * @throws ApiError
2647
2875
  */
2648
- public static propertyControllerDelete(
2649
- data: PropertyControllerDeleteData
2650
- ): CancelablePromise<PropertyControllerDeleteResponse> {
2876
+ public static categoryCatalogControllerList(
2877
+ data: CategoryCatalogControllerListData
2878
+ ): CancelablePromise<CategoryCatalogControllerListResponse> {
2651
2879
  return __request(OpenAPI, {
2652
- method: 'DELETE',
2653
- url: '/api/v1/admin/properties/{key}',
2880
+ method: 'GET',
2881
+ url: '/api/v1/{region}/bean/categories',
2654
2882
  path: {
2655
- key: data.key
2883
+ region: data.region
2656
2884
  },
2657
- errors: {
2658
- 401: 'Unauthorized',
2659
- 403: 'Forbidden - insufficient permissions',
2660
- 404: 'Property not found'
2885
+ query: {
2886
+ scenario: data.scenario,
2887
+ routeBearing: data.routeBearing
2661
2888
  }
2662
2889
  });
2663
2890
  }
@@ -3538,13 +3765,20 @@ export class BeanPlatformsService {
3538
3765
 
3539
3766
  /**
3540
3767
  * Get platform list for current user
3541
- * @returns unknown List of platforms with user binding status
3768
+ * @param data The data for the request.
3769
+ * @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").
3770
+ * @returns PlatformListItemDto List of platforms with user binding status
3542
3771
  * @throws ApiError
3543
3772
  */
3544
- public static platformControllerGetPlatformList(): CancelablePromise<PlatformControllerGetPlatformListResponse> {
3773
+ public static platformControllerGetPlatformList(
3774
+ data: PlatformControllerGetPlatformListData = {}
3775
+ ): CancelablePromise<PlatformControllerGetPlatformListResponse> {
3545
3776
  return __request(OpenAPI, {
3546
3777
  method: 'GET',
3547
- url: '/api/v1/bean/platforms/list'
3778
+ url: '/api/v1/bean/platforms/list',
3779
+ query: {
3780
+ region: data.region
3781
+ }
3548
3782
  });
3549
3783
  }
3550
3784
 
@@ -3552,8 +3786,8 @@ export class BeanPlatformsService {
3552
3786
  * Match platforms by name or alias
3553
3787
  * @param data The data for the request.
3554
3788
  * @param data.q Search query — Chinese name, English name, or abbreviation
3555
- * @param data.region Region code for category override lookup
3556
- * @returns unknown List of matching platforms with suggested segment names
3789
+ * @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").
3790
+ * @returns PlatformMatchResponseDto Matching platforms with overall match type and truncation flag
3557
3791
  * @throws ApiError
3558
3792
  */
3559
3793
  public static platformControllerMatchPlatforms(
@@ -3771,163 +4005,6 @@ export class InvestmentService {
3771
4005
  }
3772
4006
  }
3773
4007
 
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
4008
  export class ApiKeysService {
3932
4009
  /**
3933
4010
  * Create API key
@@ -3951,7 +4028,7 @@ export class AuthService {
3951
4028
  * Anonymous login with access token
3952
4029
  * @param data The data for the request.
3953
4030
  * @param data.requestBody
3954
- * @returns unknown Login successful
4031
+ * @returns AnonymousLoginResponseDto Login successful
3955
4032
  * @throws ApiError
3956
4033
  */
3957
4034
  public static authControllerAccessTokenLogin(
@@ -3969,6 +4046,38 @@ export class AuthService {
3969
4046
  }
3970
4047
  }
3971
4048
 
4049
+ export class CommunityService {
4050
+ /**
4051
+ * Relay a sanitized parser-contribution payload
4052
+ * A server-side bot re-sanitizes the payload and opens an issue on the target repository; the issue URL is returned. The payload is never persisted or logged (forward-and-drop).
4053
+ * @param data The data for the request.
4054
+ * @param data.region Region code for tenant context (routing only; the institution region rides in the payload meta)
4055
+ * @param data.requestBody
4056
+ * @returns ParserContributionRelayResponseDto Issue created by the bot
4057
+ * @throws ApiError
4058
+ */
4059
+ public static parserContributionControllerCreate(
4060
+ data: ParserContributionControllerCreateData
4061
+ ): CancelablePromise<ParserContributionControllerCreateResponse> {
4062
+ return __request(OpenAPI, {
4063
+ method: 'POST',
4064
+ url: '/api/v1/{region}/community/parser-contributions',
4065
+ path: {
4066
+ region: data.region
4067
+ },
4068
+ body: data.requestBody,
4069
+ mediaType: 'application/json',
4070
+ errors: {
4071
+ 401: 'Unauthorized',
4072
+ 422: 'Validation failed (institution slug, empty samples, row/cell size limits)',
4073
+ 429: 'Rate limited (5 submissions per user per hour)',
4074
+ 501: 'Relay not configured on this deployment — clients fall back to the clipboard flow',
4075
+ 502: 'GitHub bot failure (upstream), safe to retry'
4076
+ }
4077
+ });
4078
+ }
4079
+ }
4080
+
3972
4081
  export class DefaultService {
3973
4082
  /**
3974
4083
  * @returns unknown
@@ -4138,3 +4247,53 @@ export class InfoService {
4138
4247
  });
4139
4248
  }
4140
4249
  }
4250
+
4251
+ export class MarketDataService {
4252
+ /**
4253
+ * Search market symbols by name or code
4254
+ * Ranked search over the openbb catalog. Empty `q` returns [].
4255
+ * @param data The data for the request.
4256
+ * @param data.q Search term — matched against symbol and instrument name. Empty string returns [].
4257
+ * @param data.limit Maximum number of results (clamped 1..50)
4258
+ * @param data.exchange Filter by exchange code (e.g. US, HK, SS, SZ)
4259
+ * @param data.assetType Filter by OpenBB asset_type (e.g. stock, etf)
4260
+ * @returns SymbolSearchResultDto Ranked search results
4261
+ * @throws ApiError
4262
+ */
4263
+ public static symbolControllerSearch(
4264
+ data: SymbolControllerSearchData
4265
+ ): CancelablePromise<SymbolControllerSearchResponse> {
4266
+ return __request(OpenAPI, {
4267
+ method: 'GET',
4268
+ url: '/api/v1/market/symbols/search',
4269
+ query: {
4270
+ q: data.q,
4271
+ limit: data.limit,
4272
+ exchange: data.exchange,
4273
+ assetType: data.assetType
4274
+ }
4275
+ });
4276
+ }
4277
+
4278
+ /**
4279
+ * Get a market symbol quote
4280
+ * @param data The data for the request.
4281
+ * @param data.symbol
4282
+ * @returns SymbolQuoteDto Symbol quote
4283
+ * @throws ApiError
4284
+ */
4285
+ public static symbolControllerGetQuote(
4286
+ data: SymbolControllerGetQuoteData
4287
+ ): CancelablePromise<SymbolControllerGetQuoteResponse> {
4288
+ return __request(OpenAPI, {
4289
+ method: 'GET',
4290
+ url: '/api/v1/market/symbols/{symbol}/quote',
4291
+ path: {
4292
+ symbol: data.symbol
4293
+ },
4294
+ errors: {
4295
+ 404: 'Symbol not found in the openbb catalog'
4296
+ }
4297
+ });
4298
+ }
4299
+ }