@firela/api-types 0.0.0-canary.e1146c01 → 0.0.0-canary.e6edf4ac
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.
- package/dist/index.d.mts +5079 -2760
- package/dist/index.d.ts +5079 -2760
- package/dist/index.js +37 -7
- package/dist/index.mjs +37 -7
- package/package.json +1 -1
- package/src/generated/schemas.gen.ts +5374 -2727
- package/src/generated/services.gen.ts +1525 -558
- package/src/generated/types.gen.ts +8584 -3220
|
@@ -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,
|
|
@@ -97,6 +99,48 @@ import type {
|
|
|
97
99
|
CommodityControllerGetOrCreateResponse,
|
|
98
100
|
CommodityControllerBulkCreateData,
|
|
99
101
|
CommodityControllerBulkCreateResponse,
|
|
102
|
+
ReportingControllerGetPortfolioTrendsData,
|
|
103
|
+
ReportingControllerGetPortfolioTrendsResponse,
|
|
104
|
+
ReportingControllerGetCashFlowTrendsData,
|
|
105
|
+
ReportingControllerGetCashFlowTrendsResponse,
|
|
106
|
+
ReportingControllerGenerateSnapshotData,
|
|
107
|
+
ReportingControllerGenerateSnapshotResponse,
|
|
108
|
+
ReportingControllerBackfillSnapshotsData,
|
|
109
|
+
ReportingControllerBackfillSnapshotsResponse,
|
|
110
|
+
PriceControllerCreateData,
|
|
111
|
+
PriceControllerCreateResponse,
|
|
112
|
+
PriceControllerFindAllData,
|
|
113
|
+
PriceControllerFindAllResponse,
|
|
114
|
+
PriceControllerFindOneData,
|
|
115
|
+
PriceControllerFindOneResponse,
|
|
116
|
+
PriceControllerUpdateData,
|
|
117
|
+
PriceControllerUpdateResponse,
|
|
118
|
+
PriceControllerDeleteData,
|
|
119
|
+
PriceControllerDeleteResponse,
|
|
120
|
+
PriceControllerBulkCreateData,
|
|
121
|
+
PriceControllerBulkCreateResponse,
|
|
122
|
+
UserControllerDeleteOwnUserData,
|
|
123
|
+
UserControllerDeleteOwnUserResponse,
|
|
124
|
+
UserControllerGetUserData,
|
|
125
|
+
UserControllerGetUserResponse,
|
|
126
|
+
UserControllerSignupUserData,
|
|
127
|
+
UserControllerSignupUserResponse,
|
|
128
|
+
UserControllerDeleteUserData,
|
|
129
|
+
UserControllerDeleteUserResponse,
|
|
130
|
+
UserControllerGetUserInfoData,
|
|
131
|
+
UserControllerGetUserInfoResponse,
|
|
132
|
+
UserControllerUpdateUserSettingData,
|
|
133
|
+
UserControllerUpdateUserSettingResponse,
|
|
134
|
+
UserControllerGetAllUserSettingsByPageData,
|
|
135
|
+
UserControllerGetAllUserSettingsByPageResponse,
|
|
136
|
+
UserControllerGetAssetLiabilitySummaryResponse,
|
|
137
|
+
PropertyControllerGetAllResponse,
|
|
138
|
+
PropertyControllerGetByKeyData,
|
|
139
|
+
PropertyControllerGetByKeyResponse,
|
|
140
|
+
PropertyControllerUpdateData,
|
|
141
|
+
PropertyControllerUpdateResponse,
|
|
142
|
+
PropertyControllerDeleteData,
|
|
143
|
+
PropertyControllerDeleteResponse,
|
|
100
144
|
RecurringRuleControllerCreateData,
|
|
101
145
|
RecurringRuleControllerCreateResponse,
|
|
102
146
|
RecurringRuleControllerFindAllData,
|
|
@@ -149,28 +193,30 @@ import type {
|
|
|
149
193
|
TransactionRuleControllerDeleteResponse,
|
|
150
194
|
TransactionRuleControllerTestData,
|
|
151
195
|
TransactionRuleControllerTestResponse,
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
196
|
+
CategoryCatalogControllerListData,
|
|
197
|
+
CategoryCatalogControllerListResponse,
|
|
198
|
+
EventControllerCreateData,
|
|
199
|
+
EventControllerCreateResponse,
|
|
200
|
+
EventControllerFindAllData,
|
|
201
|
+
EventControllerFindAllResponse,
|
|
202
|
+
EventControllerFindOneData,
|
|
203
|
+
EventControllerFindOneResponse,
|
|
204
|
+
EventControllerUpdateData,
|
|
205
|
+
EventControllerUpdateResponse,
|
|
206
|
+
EventControllerDeleteData,
|
|
207
|
+
EventControllerDeleteResponse,
|
|
208
|
+
EventControllerGetSliceData,
|
|
209
|
+
EventControllerGetSliceResponse,
|
|
210
|
+
OnboardingControllerBootstrapData,
|
|
211
|
+
OnboardingControllerBootstrapResponse,
|
|
212
|
+
ReconciliationControllerComputeData,
|
|
213
|
+
ReconciliationControllerComputeResponse,
|
|
214
|
+
ReconciliationControllerAssertData,
|
|
215
|
+
ReconciliationControllerAssertResponse,
|
|
216
|
+
ReconciliationControllerPadData,
|
|
217
|
+
ReconciliationControllerPadResponse,
|
|
218
|
+
ReconciliationControllerHistoryData,
|
|
219
|
+
ReconciliationControllerHistoryResponse,
|
|
174
220
|
ExportControllerExportBeancountResponse,
|
|
175
221
|
FileImportControllerImportFileData,
|
|
176
222
|
FileImportControllerImportFileResponse,
|
|
@@ -184,45 +230,60 @@ import type {
|
|
|
184
230
|
ImporterConfigControllerUpdateConfigResponse,
|
|
185
231
|
ImporterConfigControllerResetConfigData,
|
|
186
232
|
ImporterConfigControllerResetConfigResponse,
|
|
187
|
-
PlatformControllerFindAllResponse,
|
|
188
|
-
PlatformControllerCreateData,
|
|
189
|
-
PlatformControllerCreateResponse,
|
|
190
|
-
PlatformControllerGetPlatformListResponse,
|
|
191
|
-
PlatformControllerMatchPlatformsData,
|
|
192
|
-
PlatformControllerMatchPlatformsResponse,
|
|
193
|
-
PlatformControllerUpdateData,
|
|
194
|
-
PlatformControllerUpdateResponse,
|
|
195
|
-
PlatformControllerDeleteData,
|
|
196
|
-
PlatformControllerDeleteResponse,
|
|
197
233
|
ProviderSyncControllerSyncData,
|
|
198
234
|
ProviderSyncControllerSyncResponse,
|
|
199
235
|
ProviderSyncControllerGetSupportedProvidersData,
|
|
200
236
|
ProviderSyncControllerGetSupportedProvidersResponse,
|
|
201
237
|
ProviderSyncControllerIsProviderSupportedData,
|
|
202
238
|
ProviderSyncControllerIsProviderSupportedResponse,
|
|
239
|
+
ExternalAccountLinkControllerCreateData,
|
|
240
|
+
ExternalAccountLinkControllerCreateResponse,
|
|
241
|
+
ExternalAccountLinkControllerFindAllData,
|
|
242
|
+
ExternalAccountLinkControllerFindAllResponse,
|
|
243
|
+
ExternalAccountLinkControllerFindOneData,
|
|
244
|
+
ExternalAccountLinkControllerFindOneResponse,
|
|
245
|
+
ExternalAccountLinkControllerRemoveData,
|
|
246
|
+
ExternalAccountLinkControllerRemoveResponse,
|
|
203
247
|
TelemetryControllerReportTelemetryData,
|
|
204
248
|
TelemetryControllerReportTelemetryResponse,
|
|
249
|
+
TelemetryControllerReportCoverageMissData,
|
|
250
|
+
TelemetryControllerReportCoverageMissResponse,
|
|
251
|
+
TelemetryControllerGetCoverageMetricsData,
|
|
252
|
+
TelemetryControllerGetCoverageMetricsResponse,
|
|
205
253
|
NlpControllerProcessNaturalLanguageData,
|
|
206
254
|
NlpControllerProcessNaturalLanguageResponse,
|
|
207
255
|
NlpControllerClearSessionData,
|
|
208
256
|
NlpControllerClearSessionResponse,
|
|
209
257
|
NlpControllerGetSessionData,
|
|
210
258
|
NlpControllerGetSessionResponse,
|
|
259
|
+
PlatformControllerFindAllResponse,
|
|
260
|
+
PlatformControllerCreateData,
|
|
261
|
+
PlatformControllerCreateResponse,
|
|
262
|
+
PlatformControllerGetPlatformListData,
|
|
263
|
+
PlatformControllerGetPlatformListResponse,
|
|
264
|
+
PlatformControllerMatchPlatformsData,
|
|
265
|
+
PlatformControllerMatchPlatformsResponse,
|
|
266
|
+
PlatformControllerGetPlatformStandardsData,
|
|
267
|
+
PlatformControllerGetPlatformStandardsResponse,
|
|
268
|
+
PlatformControllerUpdateData,
|
|
269
|
+
PlatformControllerUpdateResponse,
|
|
270
|
+
PlatformControllerDeleteData,
|
|
271
|
+
PlatformControllerDeleteResponse,
|
|
211
272
|
DashboardControllerGetNetWorthData,
|
|
212
273
|
DashboardControllerGetNetWorthResponse,
|
|
213
274
|
DashboardControllerGetAccountsData,
|
|
214
275
|
DashboardControllerGetAccountsResponse,
|
|
215
276
|
DashboardControllerGetCashFlowData,
|
|
216
277
|
DashboardControllerGetCashFlowResponse,
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
ReportingControllerBackfillSnapshotsData,
|
|
222
|
-
ReportingControllerBackfillSnapshotsResponse,
|
|
278
|
+
DashboardControllerGetExpensesData,
|
|
279
|
+
DashboardControllerGetExpensesResponse,
|
|
280
|
+
HoldingPnlControllerGetHoldingPnlData,
|
|
281
|
+
HoldingPnlControllerGetHoldingPnlResponse,
|
|
223
282
|
ApiKeysControllerCreateApiKeyResponse,
|
|
224
283
|
AuthControllerAccessTokenLoginData,
|
|
225
284
|
AuthControllerAccessTokenLoginResponse,
|
|
285
|
+
ParserContributionControllerCreateData,
|
|
286
|
+
ParserContributionControllerCreateResponse,
|
|
226
287
|
CacheControllerFlushCacheResponse,
|
|
227
288
|
ExchangeRateControllerGetExchangeRateData,
|
|
228
289
|
ExchangeRateControllerGetExchangeRateResponse,
|
|
@@ -234,7 +295,11 @@ import type {
|
|
|
234
295
|
HealthControllerResetCircuitBreakerData,
|
|
235
296
|
HealthControllerResetCircuitBreakerResponse,
|
|
236
297
|
HealthControllerGetMetricsResponse,
|
|
237
|
-
InfoControllerGetInfoResponse
|
|
298
|
+
InfoControllerGetInfoResponse,
|
|
299
|
+
SymbolControllerSearchData,
|
|
300
|
+
SymbolControllerSearchResponse,
|
|
301
|
+
SymbolControllerGetQuoteData,
|
|
302
|
+
SymbolControllerGetQuoteResponse
|
|
238
303
|
} from './types.gen';
|
|
239
304
|
|
|
240
305
|
export class BeanAccountsService {
|
|
@@ -272,7 +337,7 @@ export class BeanAccountsService {
|
|
|
272
337
|
* @param data.type Filter by account type
|
|
273
338
|
* @param data.status Filter by status
|
|
274
339
|
* @param data.isCustom Filter by custom (user-created) accounts only
|
|
275
|
-
* @param data.search Search term for path
|
|
340
|
+
* @param data.search Search term for account path
|
|
276
341
|
* @param data.limit Maximum number of results
|
|
277
342
|
* @param data.offset Number of results to skip
|
|
278
343
|
* @returns AccountListResponseDto Accounts retrieved successfully
|
|
@@ -353,7 +418,7 @@ export class BeanAccountsService {
|
|
|
353
418
|
|
|
354
419
|
/**
|
|
355
420
|
* Delete account
|
|
356
|
-
* Deletes an account (only if no transactions)
|
|
421
|
+
* Deletes an account (only if no active transactions; voided/superseded residual postings are cleaned up)
|
|
357
422
|
* @param data The data for the request.
|
|
358
423
|
* @param data.id Account UUID
|
|
359
424
|
* @param data.region Region code for tenant context
|
|
@@ -372,7 +437,7 @@ export class BeanAccountsService {
|
|
|
372
437
|
},
|
|
373
438
|
errors: {
|
|
374
439
|
404: 'Account not found',
|
|
375
|
-
409: 'Account has transactions and cannot be deleted'
|
|
440
|
+
409: 'Account has active transactions and cannot be deleted'
|
|
376
441
|
}
|
|
377
442
|
});
|
|
378
443
|
}
|
|
@@ -434,6 +499,35 @@ export class BeanAccountsService {
|
|
|
434
499
|
}
|
|
435
500
|
});
|
|
436
501
|
}
|
|
502
|
+
|
|
503
|
+
/**
|
|
504
|
+
* Post an opening-balance transaction
|
|
505
|
+
* Posts a double-entry opening-balance transaction against Equity:Opening-Balances for an existing Assets/Liabilities account. At most one active opening balance per account.
|
|
506
|
+
* @param data The data for the request.
|
|
507
|
+
* @param data.id Account UUID
|
|
508
|
+
* @param data.region Region code for tenant context
|
|
509
|
+
* @param data.requestBody
|
|
510
|
+
* @returns OpeningBalanceResultDto Opening-balance transaction created
|
|
511
|
+
* @throws ApiError
|
|
512
|
+
*/
|
|
513
|
+
public static accountControllerAddOpeningBalance(
|
|
514
|
+
data: AccountControllerAddOpeningBalanceData
|
|
515
|
+
): CancelablePromise<AccountControllerAddOpeningBalanceResponse> {
|
|
516
|
+
return __request(OpenAPI, {
|
|
517
|
+
method: 'POST',
|
|
518
|
+
url: '/api/v1/{region}/bean/accounts/{id}/opening-balance',
|
|
519
|
+
path: {
|
|
520
|
+
id: data.id,
|
|
521
|
+
region: data.region
|
|
522
|
+
},
|
|
523
|
+
body: data.requestBody,
|
|
524
|
+
mediaType: 'application/json',
|
|
525
|
+
errors: {
|
|
526
|
+
404: 'Account not found',
|
|
527
|
+
409: 'An opening balance already exists for this account'
|
|
528
|
+
}
|
|
529
|
+
});
|
|
530
|
+
}
|
|
437
531
|
}
|
|
438
532
|
|
|
439
533
|
export class BeanAccountStandardsService {
|
|
@@ -443,7 +537,7 @@ export class BeanAccountStandardsService {
|
|
|
443
537
|
* @param data The data for the request.
|
|
444
538
|
* @param data.region Region code (cn, us, de)
|
|
445
539
|
* @param data.type Filter by account type
|
|
446
|
-
* @param data.search Search term for path or
|
|
540
|
+
* @param data.search Search term for path, description, aliases, or localized display name
|
|
447
541
|
* @returns AccountStandardListResponseDto Account templates retrieved successfully
|
|
448
542
|
* @throws ApiError
|
|
449
543
|
*/
|
|
@@ -465,7 +559,7 @@ export class BeanAccountStandardsService {
|
|
|
465
559
|
|
|
466
560
|
/**
|
|
467
561
|
* Get template metadata for an account path
|
|
468
|
-
* Returns
|
|
562
|
+
* Returns root type for a template path.
|
|
469
563
|
* @param data The data for the request.
|
|
470
564
|
* @param data.region Region code for tenant context
|
|
471
565
|
* @param data.path Account path to check
|
|
@@ -548,9 +642,11 @@ export class BeanTransactionsService {
|
|
|
548
642
|
* @param data.offset Number of items to skip (default: 0)
|
|
549
643
|
* @param data.dateFrom Filter by start date (inclusive), format: YYYY-MM-DD
|
|
550
644
|
* @param data.dateTo Filter by end date (inclusive), format: YYYY-MM-DD
|
|
551
|
-
* @param data.status Filter by transaction status
|
|
645
|
+
* @param data.status Filter by transaction status: single value, comma-separated multi-value (e.g. VOIDED,SUPERSEDED), or ALL to include audit rows. Defaults to ACTIVE-only (ADR-0128; previously unfiltered — breaking change).
|
|
552
646
|
* @param data.search Search in narration and payee fields (max 200 chars)
|
|
553
647
|
* @param data.accountId Filter by account ID (transactions with postings to this account)
|
|
648
|
+
* @param data.category Filter by ADR-0075 functional category (Group segment); matches any posting to an account whose derived Group segment equals this value. Must be accompanied by flow (ADR-0126).
|
|
649
|
+
* @param data.flow Required when category is present (400 otherwise) and vice versa (ADR-0126). Restricts the category account set to the flow root (income → Income:, expense → Expenses:) and drives the per-leg sign normalization of row viewpointAmount and the summary. OpenAPI cannot express conditional requiredness — the pairing is enforced at runtime.
|
|
554
650
|
* @returns TransactionListResponseDto Transaction list
|
|
555
651
|
* @throws ApiError
|
|
556
652
|
*/
|
|
@@ -570,7 +666,9 @@ export class BeanTransactionsService {
|
|
|
570
666
|
dateTo: data.dateTo,
|
|
571
667
|
status: data.status,
|
|
572
668
|
search: data.search,
|
|
573
|
-
accountId: data.accountId
|
|
669
|
+
accountId: data.accountId,
|
|
670
|
+
category: data.category,
|
|
671
|
+
flow: data.flow
|
|
574
672
|
},
|
|
575
673
|
errors: {
|
|
576
674
|
400: 'Validation failed',
|
|
@@ -758,7 +856,7 @@ export class BeanBalancesService {
|
|
|
758
856
|
* Query account balance
|
|
759
857
|
* Calculate account balance at a specific date for a single currency
|
|
760
858
|
* @param data The data for the request.
|
|
761
|
-
* @param data.account Account name (e.g., "Assets:
|
|
859
|
+
* @param data.account Account name (e.g., "Assets:Checking")
|
|
762
860
|
* @param data.region Region code for tenant context
|
|
763
861
|
* @param data.date Date to calculate balance at (ISO 8601 format)
|
|
764
862
|
* @param data.currency Currency to query (e.g., "USD", "CNY")
|
|
@@ -1283,7 +1381,7 @@ export class AdminPayeeProfilesService {
|
|
|
1283
1381
|
* Removes verification status by setting verifiedAt to null.
|
|
1284
1382
|
* @param data The data for the request.
|
|
1285
1383
|
* @param data.id Payee profile ID (UUID)
|
|
1286
|
-
* @returns
|
|
1384
|
+
* @returns void Payee profile unverified successfully
|
|
1287
1385
|
* @throws ApiError
|
|
1288
1386
|
*/
|
|
1289
1387
|
public static payeeProfileAdminControllerUnverify(
|
|
@@ -1479,159 +1577,738 @@ export class BeanCommoditiesService {
|
|
|
1479
1577
|
}
|
|
1480
1578
|
}
|
|
1481
1579
|
|
|
1482
|
-
export class
|
|
1580
|
+
export class ReportingService {
|
|
1483
1581
|
/**
|
|
1484
|
-
*
|
|
1485
|
-
*
|
|
1582
|
+
* Get portfolio value trends
|
|
1583
|
+
*
|
|
1584
|
+
* Returns time series data of portfolio net worth.
|
|
1585
|
+
*
|
|
1586
|
+
* **Multi-currency Support:**
|
|
1587
|
+
* - `series[].byCurrency` - Currency breakdown for each data point
|
|
1588
|
+
* - `byCurrency` - Separate time series grouped by currency
|
|
1589
|
+
* - `warnings` - Exchange rate warnings if conversion failed
|
|
1590
|
+
*
|
|
1591
|
+
* **Parameters:**
|
|
1592
|
+
* - `period`: Time period (1m, 3m, 6m, 1y)
|
|
1593
|
+
* - `granularity`: Data granularity (day, week, month)
|
|
1594
|
+
*
|
|
1486
1595
|
* @param data The data for the request.
|
|
1487
1596
|
* @param data.region Region code for tenant context
|
|
1488
|
-
* @param data.
|
|
1489
|
-
* @
|
|
1597
|
+
* @param data.period Time period
|
|
1598
|
+
* @param data.granularity Data granularity
|
|
1599
|
+
* @returns PortfolioTrendsResponseDto Trends retrieved successfully
|
|
1490
1600
|
* @throws ApiError
|
|
1491
1601
|
*/
|
|
1492
|
-
public static
|
|
1493
|
-
data:
|
|
1494
|
-
): CancelablePromise<
|
|
1602
|
+
public static reportingControllerGetPortfolioTrends(
|
|
1603
|
+
data: ReportingControllerGetPortfolioTrendsData
|
|
1604
|
+
): CancelablePromise<ReportingControllerGetPortfolioTrendsResponse> {
|
|
1495
1605
|
return __request(OpenAPI, {
|
|
1496
|
-
method: '
|
|
1497
|
-
url: '/api/v1/{region}/
|
|
1606
|
+
method: 'GET',
|
|
1607
|
+
url: '/api/v1/{region}/reporting/portfolio/trends',
|
|
1498
1608
|
path: {
|
|
1499
1609
|
region: data.region
|
|
1500
1610
|
},
|
|
1501
|
-
|
|
1502
|
-
|
|
1611
|
+
query: {
|
|
1612
|
+
period: data.period,
|
|
1613
|
+
granularity: data.granularity
|
|
1614
|
+
},
|
|
1503
1615
|
errors: {
|
|
1504
|
-
|
|
1505
|
-
409: 'Rule with same name already exists'
|
|
1616
|
+
401: 'User not authenticated'
|
|
1506
1617
|
}
|
|
1507
1618
|
});
|
|
1508
1619
|
}
|
|
1509
1620
|
|
|
1510
1621
|
/**
|
|
1511
|
-
*
|
|
1512
|
-
*
|
|
1622
|
+
* Get cash-flow trends
|
|
1623
|
+
*
|
|
1624
|
+
* Monthly income / expense / netSavings over a fixed N-month window
|
|
1625
|
+
* (current month + N−1 prior). Missing months are zero-filled (flow metric).
|
|
1626
|
+
*
|
|
1627
|
+
* **Parameters:**
|
|
1628
|
+
* - `period`: 1m | 3m | 6m | 1y (default 6m)
|
|
1629
|
+
* - `granularity`: accepted for API symmetry; v1 returns month buckets
|
|
1630
|
+
*
|
|
1513
1631
|
* @param data The data for the request.
|
|
1514
1632
|
* @param data.region Region code for tenant context
|
|
1515
|
-
* @param data.
|
|
1516
|
-
* @param data.
|
|
1517
|
-
* @
|
|
1518
|
-
* @returns RecurringRuleResponseDto Rules retrieved successfully
|
|
1633
|
+
* @param data.period Time period
|
|
1634
|
+
* @param data.granularity Data granularity (accepted for API symmetry; v1 returns month buckets)
|
|
1635
|
+
* @returns CashFlowTrendsResponseDto Cash-flow trends retrieved successfully
|
|
1519
1636
|
* @throws ApiError
|
|
1520
1637
|
*/
|
|
1521
|
-
public static
|
|
1522
|
-
data:
|
|
1523
|
-
): CancelablePromise<
|
|
1638
|
+
public static reportingControllerGetCashFlowTrends(
|
|
1639
|
+
data: ReportingControllerGetCashFlowTrendsData
|
|
1640
|
+
): CancelablePromise<ReportingControllerGetCashFlowTrendsResponse> {
|
|
1524
1641
|
return __request(OpenAPI, {
|
|
1525
1642
|
method: 'GET',
|
|
1526
|
-
url: '/api/v1/{region}/
|
|
1643
|
+
url: '/api/v1/{region}/reporting/cash-flow/trends',
|
|
1527
1644
|
path: {
|
|
1528
1645
|
region: data.region
|
|
1529
1646
|
},
|
|
1530
1647
|
query: {
|
|
1531
|
-
|
|
1532
|
-
|
|
1533
|
-
|
|
1648
|
+
period: data.period,
|
|
1649
|
+
granularity: data.granularity
|
|
1650
|
+
},
|
|
1651
|
+
errors: {
|
|
1652
|
+
401: 'User not authenticated'
|
|
1534
1653
|
}
|
|
1535
1654
|
});
|
|
1536
1655
|
}
|
|
1537
1656
|
|
|
1538
1657
|
/**
|
|
1539
|
-
*
|
|
1540
|
-
*
|
|
1658
|
+
* Generate portfolio snapshot
|
|
1659
|
+
*
|
|
1660
|
+
* Manually generate a portfolio snapshot for a specific date.
|
|
1661
|
+
*
|
|
1662
|
+
* **Multi-currency Support:**
|
|
1663
|
+
* - Fetches balances grouped by currency
|
|
1664
|
+
* - Uses user's baseCurrency setting for conversion
|
|
1665
|
+
* - Stores exchange rates and warnings
|
|
1666
|
+
*
|
|
1667
|
+
* **Use Cases:**
|
|
1668
|
+
* - Testing snapshot generation
|
|
1669
|
+
* - Force regeneration after data correction
|
|
1670
|
+
* - Initial setup for new users
|
|
1671
|
+
*
|
|
1541
1672
|
* @param data The data for the request.
|
|
1542
|
-
* @param data.transactionId Source transaction ID
|
|
1543
1673
|
* @param data.region Region code for tenant context
|
|
1544
|
-
* @param data.requestBody
|
|
1545
|
-
* @returns
|
|
1674
|
+
* @param data.requestBody Optional date (defaults to today)
|
|
1675
|
+
* @returns GenerateSnapshotResponse Snapshot generated successfully
|
|
1546
1676
|
* @throws ApiError
|
|
1547
1677
|
*/
|
|
1548
|
-
public static
|
|
1549
|
-
data:
|
|
1550
|
-
): CancelablePromise<
|
|
1678
|
+
public static reportingControllerGenerateSnapshot(
|
|
1679
|
+
data: ReportingControllerGenerateSnapshotData
|
|
1680
|
+
): CancelablePromise<ReportingControllerGenerateSnapshotResponse> {
|
|
1551
1681
|
return __request(OpenAPI, {
|
|
1552
1682
|
method: 'POST',
|
|
1553
|
-
url: '/api/v1/{region}/
|
|
1683
|
+
url: '/api/v1/{region}/reporting/snapshots/generate',
|
|
1554
1684
|
path: {
|
|
1555
|
-
transactionId: data.transactionId,
|
|
1556
1685
|
region: data.region
|
|
1557
1686
|
},
|
|
1558
1687
|
body: data.requestBody,
|
|
1559
1688
|
mediaType: 'application/json',
|
|
1560
1689
|
errors: {
|
|
1561
|
-
|
|
1562
|
-
|
|
1690
|
+
400: 'Invalid date format',
|
|
1691
|
+
401: 'User not authenticated'
|
|
1563
1692
|
}
|
|
1564
1693
|
});
|
|
1565
1694
|
}
|
|
1566
1695
|
|
|
1567
1696
|
/**
|
|
1568
|
-
*
|
|
1569
|
-
*
|
|
1697
|
+
* Backfill portfolio snapshots
|
|
1698
|
+
*
|
|
1699
|
+
* Generate snapshots for a date range (historical data backfill).
|
|
1700
|
+
*
|
|
1701
|
+
* **Multi-currency Support:**
|
|
1702
|
+
* - Each snapshot includes multi-currency data
|
|
1703
|
+
* - Uses exchange rates available at generation time
|
|
1704
|
+
* - Warnings stored for missing exchange rates
|
|
1705
|
+
*
|
|
1706
|
+
* **Best Practices:**
|
|
1707
|
+
* - Use for initial setup after account configuration
|
|
1708
|
+
* - Run during low-traffic periods for large date ranges
|
|
1709
|
+
* - Existing snapshots are skipped (not regenerated)
|
|
1710
|
+
*
|
|
1570
1711
|
* @param data The data for the request.
|
|
1571
|
-
* @param data.id Rule ID
|
|
1572
1712
|
* @param data.region Region code for tenant context
|
|
1573
|
-
* @
|
|
1713
|
+
* @param data.requestBody
|
|
1714
|
+
* @returns BackfillSnapshotsResponse Backfill completed successfully
|
|
1574
1715
|
* @throws ApiError
|
|
1575
1716
|
*/
|
|
1576
|
-
public static
|
|
1577
|
-
data:
|
|
1578
|
-
): CancelablePromise<
|
|
1717
|
+
public static reportingControllerBackfillSnapshots(
|
|
1718
|
+
data: ReportingControllerBackfillSnapshotsData
|
|
1719
|
+
): CancelablePromise<ReportingControllerBackfillSnapshotsResponse> {
|
|
1579
1720
|
return __request(OpenAPI, {
|
|
1580
|
-
method: '
|
|
1581
|
-
url: '/api/v1/{region}/
|
|
1721
|
+
method: 'POST',
|
|
1722
|
+
url: '/api/v1/{region}/reporting/snapshots/backfill',
|
|
1582
1723
|
path: {
|
|
1583
|
-
id: data.id,
|
|
1584
1724
|
region: data.region
|
|
1585
1725
|
},
|
|
1726
|
+
body: data.requestBody,
|
|
1727
|
+
mediaType: 'application/json',
|
|
1586
1728
|
errors: {
|
|
1587
|
-
|
|
1729
|
+
400: 'Invalid date format or range',
|
|
1730
|
+
401: 'User not authenticated',
|
|
1731
|
+
409: 'Backfill already in progress for this user'
|
|
1588
1732
|
}
|
|
1589
1733
|
});
|
|
1590
1734
|
}
|
|
1735
|
+
}
|
|
1591
1736
|
|
|
1737
|
+
export class BeanPricesService {
|
|
1592
1738
|
/**
|
|
1593
|
-
*
|
|
1594
|
-
*
|
|
1739
|
+
* Create a new price
|
|
1740
|
+
* Creates a new price entry for the authenticated user
|
|
1595
1741
|
* @param data The data for the request.
|
|
1596
|
-
* @param data.id Rule ID
|
|
1597
1742
|
* @param data.region Region code for tenant context
|
|
1598
1743
|
* @param data.requestBody
|
|
1599
|
-
* @returns
|
|
1744
|
+
* @returns PriceResponseDto Price created successfully
|
|
1600
1745
|
* @throws ApiError
|
|
1601
1746
|
*/
|
|
1602
|
-
public static
|
|
1603
|
-
data:
|
|
1604
|
-
): CancelablePromise<
|
|
1747
|
+
public static priceControllerCreate(
|
|
1748
|
+
data: PriceControllerCreateData
|
|
1749
|
+
): CancelablePromise<PriceControllerCreateResponse> {
|
|
1605
1750
|
return __request(OpenAPI, {
|
|
1606
|
-
method: '
|
|
1607
|
-
url: '/api/v1/{region}/bean/
|
|
1751
|
+
method: 'POST',
|
|
1752
|
+
url: '/api/v1/{region}/bean/prices',
|
|
1608
1753
|
path: {
|
|
1609
|
-
id: data.id,
|
|
1610
1754
|
region: data.region
|
|
1611
1755
|
},
|
|
1612
1756
|
body: data.requestBody,
|
|
1613
1757
|
mediaType: 'application/json',
|
|
1614
1758
|
errors: {
|
|
1615
|
-
|
|
1616
|
-
|
|
1759
|
+
404: 'Currency or quoteCurrency commodity not found',
|
|
1760
|
+
409: 'Price already exists for this currency pair and date'
|
|
1617
1761
|
}
|
|
1618
1762
|
});
|
|
1619
1763
|
}
|
|
1620
1764
|
|
|
1621
1765
|
/**
|
|
1622
|
-
*
|
|
1623
|
-
*
|
|
1766
|
+
* List user prices
|
|
1767
|
+
* Returns all price entries for the authenticated user with optional filtering
|
|
1624
1768
|
* @param data The data for the request.
|
|
1625
|
-
* @param data.id Rule ID
|
|
1626
1769
|
* @param data.region Region code for tenant context
|
|
1627
|
-
* @
|
|
1770
|
+
* @param data.currency Filter by currency (e.g., BTC, AAPL, USD)
|
|
1771
|
+
* @param data.quoteCurrency Filter by quote currency (pricing currency, e.g., USD, CNY)
|
|
1772
|
+
* @param data.dateFrom Filter prices from this date (ISO 8601 format)
|
|
1773
|
+
* @param data.dateTo Filter prices to this date (ISO 8601 format)
|
|
1774
|
+
* @param data.search Search term for currency or quoteCurrency (case-insensitive partial match)
|
|
1775
|
+
* @param data.page Page number for pagination (default: 1)
|
|
1776
|
+
* @param data.limit Number of items per page (default: 20, max: 100)
|
|
1777
|
+
* @returns PriceListResponseDto Prices retrieved successfully
|
|
1628
1778
|
* @throws ApiError
|
|
1629
1779
|
*/
|
|
1630
|
-
public static
|
|
1631
|
-
data:
|
|
1632
|
-
): CancelablePromise<
|
|
1780
|
+
public static priceControllerFindAll(
|
|
1781
|
+
data: PriceControllerFindAllData
|
|
1782
|
+
): CancelablePromise<PriceControllerFindAllResponse> {
|
|
1633
1783
|
return __request(OpenAPI, {
|
|
1634
|
-
method: '
|
|
1784
|
+
method: 'GET',
|
|
1785
|
+
url: '/api/v1/{region}/bean/prices',
|
|
1786
|
+
path: {
|
|
1787
|
+
region: data.region
|
|
1788
|
+
},
|
|
1789
|
+
query: {
|
|
1790
|
+
currency: data.currency,
|
|
1791
|
+
quoteCurrency: data.quoteCurrency,
|
|
1792
|
+
dateFrom: data.dateFrom,
|
|
1793
|
+
dateTo: data.dateTo,
|
|
1794
|
+
search: data.search,
|
|
1795
|
+
page: data.page,
|
|
1796
|
+
limit: data.limit
|
|
1797
|
+
}
|
|
1798
|
+
});
|
|
1799
|
+
}
|
|
1800
|
+
|
|
1801
|
+
/**
|
|
1802
|
+
* Get price by ID
|
|
1803
|
+
* Returns a single price entry by its ID
|
|
1804
|
+
* @param data The data for the request.
|
|
1805
|
+
* @param data.id Price ID
|
|
1806
|
+
* @param data.region Region code for tenant context
|
|
1807
|
+
* @returns PriceResponseDto Price retrieved successfully
|
|
1808
|
+
* @throws ApiError
|
|
1809
|
+
*/
|
|
1810
|
+
public static priceControllerFindOne(
|
|
1811
|
+
data: PriceControllerFindOneData
|
|
1812
|
+
): CancelablePromise<PriceControllerFindOneResponse> {
|
|
1813
|
+
return __request(OpenAPI, {
|
|
1814
|
+
method: 'GET',
|
|
1815
|
+
url: '/api/v1/{region}/bean/prices/{id}',
|
|
1816
|
+
path: {
|
|
1817
|
+
id: data.id,
|
|
1818
|
+
region: data.region
|
|
1819
|
+
},
|
|
1820
|
+
errors: {
|
|
1821
|
+
404: 'Price not found'
|
|
1822
|
+
}
|
|
1823
|
+
});
|
|
1824
|
+
}
|
|
1825
|
+
|
|
1826
|
+
/**
|
|
1827
|
+
* Update a price
|
|
1828
|
+
* Updates an existing price entry
|
|
1829
|
+
* @param data The data for the request.
|
|
1830
|
+
* @param data.id Price ID
|
|
1831
|
+
* @param data.region Region code for tenant context
|
|
1832
|
+
* @param data.requestBody
|
|
1833
|
+
* @returns PriceResponseDto Price updated successfully
|
|
1834
|
+
* @throws ApiError
|
|
1835
|
+
*/
|
|
1836
|
+
public static priceControllerUpdate(
|
|
1837
|
+
data: PriceControllerUpdateData
|
|
1838
|
+
): CancelablePromise<PriceControllerUpdateResponse> {
|
|
1839
|
+
return __request(OpenAPI, {
|
|
1840
|
+
method: 'PUT',
|
|
1841
|
+
url: '/api/v1/{region}/bean/prices/{id}',
|
|
1842
|
+
path: {
|
|
1843
|
+
id: data.id,
|
|
1844
|
+
region: data.region
|
|
1845
|
+
},
|
|
1846
|
+
body: data.requestBody,
|
|
1847
|
+
mediaType: 'application/json',
|
|
1848
|
+
errors: {
|
|
1849
|
+
404: 'Price not found',
|
|
1850
|
+
409: 'Updated price conflicts with existing price'
|
|
1851
|
+
}
|
|
1852
|
+
});
|
|
1853
|
+
}
|
|
1854
|
+
|
|
1855
|
+
/**
|
|
1856
|
+
* Delete a price
|
|
1857
|
+
* Deletes a price entry (hard delete)
|
|
1858
|
+
* @param data The data for the request.
|
|
1859
|
+
* @param data.id Price ID
|
|
1860
|
+
* @param data.region Region code for tenant context
|
|
1861
|
+
* @returns void Price deleted successfully
|
|
1862
|
+
* @throws ApiError
|
|
1863
|
+
*/
|
|
1864
|
+
public static priceControllerDelete(
|
|
1865
|
+
data: PriceControllerDeleteData
|
|
1866
|
+
): CancelablePromise<PriceControllerDeleteResponse> {
|
|
1867
|
+
return __request(OpenAPI, {
|
|
1868
|
+
method: 'DELETE',
|
|
1869
|
+
url: '/api/v1/{region}/bean/prices/{id}',
|
|
1870
|
+
path: {
|
|
1871
|
+
id: data.id,
|
|
1872
|
+
region: data.region
|
|
1873
|
+
},
|
|
1874
|
+
errors: {
|
|
1875
|
+
404: 'Price not found'
|
|
1876
|
+
}
|
|
1877
|
+
});
|
|
1878
|
+
}
|
|
1879
|
+
|
|
1880
|
+
/**
|
|
1881
|
+
* Bulk create prices
|
|
1882
|
+
* Creates multiple price entries at once (skips duplicates)
|
|
1883
|
+
* @param data The data for the request.
|
|
1884
|
+
* @param data.region Region code for tenant context
|
|
1885
|
+
* @param data.requestBody
|
|
1886
|
+
* @returns PriceResponseDto Prices created successfully
|
|
1887
|
+
* @throws ApiError
|
|
1888
|
+
*/
|
|
1889
|
+
public static priceControllerBulkCreate(
|
|
1890
|
+
data: PriceControllerBulkCreateData
|
|
1891
|
+
): CancelablePromise<PriceControllerBulkCreateResponse> {
|
|
1892
|
+
return __request(OpenAPI, {
|
|
1893
|
+
method: 'POST',
|
|
1894
|
+
url: '/api/v1/{region}/bean/prices/bulk',
|
|
1895
|
+
path: {
|
|
1896
|
+
region: data.region
|
|
1897
|
+
},
|
|
1898
|
+
body: data.requestBody,
|
|
1899
|
+
mediaType: 'application/json'
|
|
1900
|
+
});
|
|
1901
|
+
}
|
|
1902
|
+
}
|
|
1903
|
+
|
|
1904
|
+
export class UsersService {
|
|
1905
|
+
/**
|
|
1906
|
+
* Delete own user account
|
|
1907
|
+
* @param data The data for the request.
|
|
1908
|
+
* @param data.requestBody
|
|
1909
|
+
* @returns void User deleted successfully
|
|
1910
|
+
* @throws ApiError
|
|
1911
|
+
*/
|
|
1912
|
+
public static userControllerDeleteOwnUser(
|
|
1913
|
+
data: UserControllerDeleteOwnUserData
|
|
1914
|
+
): CancelablePromise<UserControllerDeleteOwnUserResponse> {
|
|
1915
|
+
return __request(OpenAPI, {
|
|
1916
|
+
method: 'DELETE',
|
|
1917
|
+
url: '/api/v1/users',
|
|
1918
|
+
body: data.requestBody,
|
|
1919
|
+
mediaType: 'application/json',
|
|
1920
|
+
errors: {
|
|
1921
|
+
403: 'Invalid access token'
|
|
1922
|
+
}
|
|
1923
|
+
});
|
|
1924
|
+
}
|
|
1925
|
+
|
|
1926
|
+
/**
|
|
1927
|
+
* Get current authenticated user
|
|
1928
|
+
* @param data The data for the request.
|
|
1929
|
+
* @param data.acceptLanguage
|
|
1930
|
+
* @returns UserResponseDto User retrieved successfully
|
|
1931
|
+
* @throws ApiError
|
|
1932
|
+
*/
|
|
1933
|
+
public static userControllerGetUser(
|
|
1934
|
+
data: UserControllerGetUserData
|
|
1935
|
+
): CancelablePromise<UserControllerGetUserResponse> {
|
|
1936
|
+
return __request(OpenAPI, {
|
|
1937
|
+
method: 'GET',
|
|
1938
|
+
url: '/api/v1/users',
|
|
1939
|
+
headers: {
|
|
1940
|
+
'accept-language': data.acceptLanguage
|
|
1941
|
+
}
|
|
1942
|
+
});
|
|
1943
|
+
}
|
|
1944
|
+
|
|
1945
|
+
/**
|
|
1946
|
+
* Sign up new user
|
|
1947
|
+
* Create a new account with auto-generated access token. Protected by Cloudflare Turnstile to prevent automated signup (when enabled).
|
|
1948
|
+
* @param data The data for the request.
|
|
1949
|
+
* @param data.requestBody
|
|
1950
|
+
* @returns SignupResponseDto User created successfully
|
|
1951
|
+
* @throws ApiError
|
|
1952
|
+
*/
|
|
1953
|
+
public static userControllerSignupUser(
|
|
1954
|
+
data: UserControllerSignupUserData
|
|
1955
|
+
): CancelablePromise<UserControllerSignupUserResponse> {
|
|
1956
|
+
return __request(OpenAPI, {
|
|
1957
|
+
method: 'POST',
|
|
1958
|
+
url: '/api/v1/users',
|
|
1959
|
+
body: data.requestBody,
|
|
1960
|
+
mediaType: 'application/json',
|
|
1961
|
+
errors: {
|
|
1962
|
+
400: 'Invalid Turnstile token (when Turnstile is enabled)',
|
|
1963
|
+
403: 'User signup is disabled'
|
|
1964
|
+
}
|
|
1965
|
+
});
|
|
1966
|
+
}
|
|
1967
|
+
|
|
1968
|
+
/**
|
|
1969
|
+
* Delete user by ID (admin only)
|
|
1970
|
+
* @param data The data for the request.
|
|
1971
|
+
* @param data.id User ID to delete
|
|
1972
|
+
* @returns void User deleted successfully
|
|
1973
|
+
* @throws ApiError
|
|
1974
|
+
*/
|
|
1975
|
+
public static userControllerDeleteUser(
|
|
1976
|
+
data: UserControllerDeleteUserData
|
|
1977
|
+
): CancelablePromise<UserControllerDeleteUserResponse> {
|
|
1978
|
+
return __request(OpenAPI, {
|
|
1979
|
+
method: 'DELETE',
|
|
1980
|
+
url: '/api/v1/users/{id}',
|
|
1981
|
+
path: {
|
|
1982
|
+
id: data.id
|
|
1983
|
+
},
|
|
1984
|
+
errors: {
|
|
1985
|
+
403: 'Cannot delete own account or insufficient permissions'
|
|
1986
|
+
}
|
|
1987
|
+
});
|
|
1988
|
+
}
|
|
1989
|
+
|
|
1990
|
+
/**
|
|
1991
|
+
* Get user info by user ID
|
|
1992
|
+
* @param data The data for the request.
|
|
1993
|
+
* @param data.id User ID
|
|
1994
|
+
* @returns unknown User info retrieved successfully
|
|
1995
|
+
* @throws ApiError
|
|
1996
|
+
*/
|
|
1997
|
+
public static userControllerGetUserInfo(
|
|
1998
|
+
data: UserControllerGetUserInfoData
|
|
1999
|
+
): CancelablePromise<UserControllerGetUserInfoResponse> {
|
|
2000
|
+
return __request(OpenAPI, {
|
|
2001
|
+
method: 'GET',
|
|
2002
|
+
url: '/api/v1/users/{id}/info',
|
|
2003
|
+
path: {
|
|
2004
|
+
id: data.id
|
|
2005
|
+
},
|
|
2006
|
+
errors: {
|
|
2007
|
+
403: 'Cannot access other user info without admin permission'
|
|
2008
|
+
}
|
|
2009
|
+
});
|
|
2010
|
+
}
|
|
2011
|
+
|
|
2012
|
+
/**
|
|
2013
|
+
* Update user settings
|
|
2014
|
+
* @param data The data for the request.
|
|
2015
|
+
* @param data.requestBody
|
|
2016
|
+
* @returns unknown Settings updated successfully
|
|
2017
|
+
* @throws ApiError
|
|
2018
|
+
*/
|
|
2019
|
+
public static userControllerUpdateUserSetting(
|
|
2020
|
+
data: UserControllerUpdateUserSettingData
|
|
2021
|
+
): CancelablePromise<UserControllerUpdateUserSettingResponse> {
|
|
2022
|
+
return __request(OpenAPI, {
|
|
2023
|
+
method: 'PUT',
|
|
2024
|
+
url: '/api/v1/users/setting',
|
|
2025
|
+
body: data.requestBody,
|
|
2026
|
+
mediaType: 'application/json',
|
|
2027
|
+
errors: {
|
|
2028
|
+
403: 'Insufficient permissions'
|
|
2029
|
+
}
|
|
2030
|
+
});
|
|
2031
|
+
}
|
|
2032
|
+
|
|
2033
|
+
/**
|
|
2034
|
+
* Get all user settings paginated (admin only)
|
|
2035
|
+
* @param data The data for the request.
|
|
2036
|
+
* @param data.pageNo Page number
|
|
2037
|
+
* @param data.pageSize Page size
|
|
2038
|
+
* @returns unknown Settings list retrieved successfully
|
|
2039
|
+
* @throws ApiError
|
|
2040
|
+
*/
|
|
2041
|
+
public static userControllerGetAllUserSettingsByPage(
|
|
2042
|
+
data: UserControllerGetAllUserSettingsByPageData
|
|
2043
|
+
): CancelablePromise<UserControllerGetAllUserSettingsByPageResponse> {
|
|
2044
|
+
return __request(OpenAPI, {
|
|
2045
|
+
method: 'GET',
|
|
2046
|
+
url: '/api/v1/users/settings-by-page',
|
|
2047
|
+
query: {
|
|
2048
|
+
pageNo: data.pageNo,
|
|
2049
|
+
pageSize: data.pageSize
|
|
2050
|
+
}
|
|
2051
|
+
});
|
|
2052
|
+
}
|
|
2053
|
+
|
|
2054
|
+
/**
|
|
2055
|
+
* Get asset and liability summary for current user
|
|
2056
|
+
* @returns unknown Summary retrieved successfully
|
|
2057
|
+
* @throws ApiError
|
|
2058
|
+
*/
|
|
2059
|
+
public static userControllerGetAssetLiabilitySummary(): CancelablePromise<UserControllerGetAssetLiabilitySummaryResponse> {
|
|
2060
|
+
return __request(OpenAPI, {
|
|
2061
|
+
method: 'GET',
|
|
2062
|
+
url: '/api/v1/users/asset-liability-summary'
|
|
2063
|
+
});
|
|
2064
|
+
}
|
|
2065
|
+
}
|
|
2066
|
+
|
|
2067
|
+
export class PropertiesService {
|
|
2068
|
+
/**
|
|
2069
|
+
* Get all system properties
|
|
2070
|
+
* @returns unknown Properties retrieved successfully
|
|
2071
|
+
* @throws ApiError
|
|
2072
|
+
*/
|
|
2073
|
+
public static propertyControllerGetAll(): CancelablePromise<PropertyControllerGetAllResponse> {
|
|
2074
|
+
return __request(OpenAPI, {
|
|
2075
|
+
method: 'GET',
|
|
2076
|
+
url: '/api/v1/admin/properties',
|
|
2077
|
+
errors: {
|
|
2078
|
+
401: 'Unauthorized',
|
|
2079
|
+
403: 'Forbidden - insufficient permissions'
|
|
2080
|
+
}
|
|
2081
|
+
});
|
|
2082
|
+
}
|
|
2083
|
+
|
|
2084
|
+
/**
|
|
2085
|
+
* Get property by key
|
|
2086
|
+
* @param data The data for the request.
|
|
2087
|
+
* @param data.key Property key
|
|
2088
|
+
* @returns unknown Property retrieved successfully
|
|
2089
|
+
* @throws ApiError
|
|
2090
|
+
*/
|
|
2091
|
+
public static propertyControllerGetByKey(
|
|
2092
|
+
data: PropertyControllerGetByKeyData
|
|
2093
|
+
): CancelablePromise<PropertyControllerGetByKeyResponse> {
|
|
2094
|
+
return __request(OpenAPI, {
|
|
2095
|
+
method: 'GET',
|
|
2096
|
+
url: '/api/v1/admin/properties/{key}',
|
|
2097
|
+
path: {
|
|
2098
|
+
key: data.key
|
|
2099
|
+
},
|
|
2100
|
+
errors: {
|
|
2101
|
+
401: 'Unauthorized',
|
|
2102
|
+
403: 'Forbidden - insufficient permissions',
|
|
2103
|
+
404: 'Property not found'
|
|
2104
|
+
}
|
|
2105
|
+
});
|
|
2106
|
+
}
|
|
2107
|
+
|
|
2108
|
+
/**
|
|
2109
|
+
* Update a system property
|
|
2110
|
+
* @param data The data for the request.
|
|
2111
|
+
* @param data.key Property key
|
|
2112
|
+
* @param data.requestBody
|
|
2113
|
+
* @returns unknown Property updated successfully
|
|
2114
|
+
* @throws ApiError
|
|
2115
|
+
*/
|
|
2116
|
+
public static propertyControllerUpdate(
|
|
2117
|
+
data: PropertyControllerUpdateData
|
|
2118
|
+
): CancelablePromise<PropertyControllerUpdateResponse> {
|
|
2119
|
+
return __request(OpenAPI, {
|
|
2120
|
+
method: 'PUT',
|
|
2121
|
+
url: '/api/v1/admin/properties/{key}',
|
|
2122
|
+
path: {
|
|
2123
|
+
key: data.key
|
|
2124
|
+
},
|
|
2125
|
+
body: data.requestBody,
|
|
2126
|
+
mediaType: 'application/json',
|
|
2127
|
+
errors: {
|
|
2128
|
+
401: 'Unauthorized',
|
|
2129
|
+
403: 'Forbidden - insufficient permissions'
|
|
2130
|
+
}
|
|
2131
|
+
});
|
|
2132
|
+
}
|
|
2133
|
+
|
|
2134
|
+
/**
|
|
2135
|
+
* Delete a system property
|
|
2136
|
+
* @param data The data for the request.
|
|
2137
|
+
* @param data.key Property key
|
|
2138
|
+
* @returns void Property deleted successfully
|
|
2139
|
+
* @throws ApiError
|
|
2140
|
+
*/
|
|
2141
|
+
public static propertyControllerDelete(
|
|
2142
|
+
data: PropertyControllerDeleteData
|
|
2143
|
+
): CancelablePromise<PropertyControllerDeleteResponse> {
|
|
2144
|
+
return __request(OpenAPI, {
|
|
2145
|
+
method: 'DELETE',
|
|
2146
|
+
url: '/api/v1/admin/properties/{key}',
|
|
2147
|
+
path: {
|
|
2148
|
+
key: data.key
|
|
2149
|
+
},
|
|
2150
|
+
errors: {
|
|
2151
|
+
401: 'Unauthorized',
|
|
2152
|
+
403: 'Forbidden - insufficient permissions',
|
|
2153
|
+
404: 'Property not found'
|
|
2154
|
+
}
|
|
2155
|
+
});
|
|
2156
|
+
}
|
|
2157
|
+
}
|
|
2158
|
+
|
|
2159
|
+
export class RecurringRulesService {
|
|
2160
|
+
/**
|
|
2161
|
+
* Create a new recurring rule
|
|
2162
|
+
* Creates a new recurring transaction rule for the authenticated user
|
|
2163
|
+
* @param data The data for the request.
|
|
2164
|
+
* @param data.region Region code for tenant context
|
|
2165
|
+
* @param data.requestBody
|
|
2166
|
+
* @returns RecurringRuleResponseDto Rule created successfully
|
|
2167
|
+
* @throws ApiError
|
|
2168
|
+
*/
|
|
2169
|
+
public static recurringRuleControllerCreate(
|
|
2170
|
+
data: RecurringRuleControllerCreateData
|
|
2171
|
+
): CancelablePromise<RecurringRuleControllerCreateResponse> {
|
|
2172
|
+
return __request(OpenAPI, {
|
|
2173
|
+
method: 'POST',
|
|
2174
|
+
url: '/api/v1/{region}/bean/recurring-rules',
|
|
2175
|
+
path: {
|
|
2176
|
+
region: data.region
|
|
2177
|
+
},
|
|
2178
|
+
body: data.requestBody,
|
|
2179
|
+
mediaType: 'application/json',
|
|
2180
|
+
errors: {
|
|
2181
|
+
400: 'Invalid input data (e.g., autoCreate without accounts)',
|
|
2182
|
+
409: 'Rule with same name already exists'
|
|
2183
|
+
}
|
|
2184
|
+
});
|
|
2185
|
+
}
|
|
2186
|
+
|
|
2187
|
+
/**
|
|
2188
|
+
* List recurring rules
|
|
2189
|
+
* Returns all recurring rules for the authenticated user with optional filtering
|
|
2190
|
+
* @param data The data for the request.
|
|
2191
|
+
* @param data.region Region code for tenant context
|
|
2192
|
+
* @param data.isActive Filter by active status
|
|
2193
|
+
* @param data.frequency Filter by frequency (WEEKLY, MONTHLY, etc.)
|
|
2194
|
+
* @param data.hasAutoCreate Filter by autoCreate enabled
|
|
2195
|
+
* @returns RecurringRuleResponseDto Rules retrieved successfully
|
|
2196
|
+
* @throws ApiError
|
|
2197
|
+
*/
|
|
2198
|
+
public static recurringRuleControllerFindAll(
|
|
2199
|
+
data: RecurringRuleControllerFindAllData
|
|
2200
|
+
): CancelablePromise<RecurringRuleControllerFindAllResponse> {
|
|
2201
|
+
return __request(OpenAPI, {
|
|
2202
|
+
method: 'GET',
|
|
2203
|
+
url: '/api/v1/{region}/bean/recurring-rules',
|
|
2204
|
+
path: {
|
|
2205
|
+
region: data.region
|
|
2206
|
+
},
|
|
2207
|
+
query: {
|
|
2208
|
+
isActive: data.isActive,
|
|
2209
|
+
frequency: data.frequency,
|
|
2210
|
+
hasAutoCreate: data.hasAutoCreate
|
|
2211
|
+
}
|
|
2212
|
+
});
|
|
2213
|
+
}
|
|
2214
|
+
|
|
2215
|
+
/**
|
|
2216
|
+
* Create recurring rule from transaction
|
|
2217
|
+
* Auto-creates a recurring rule using transaction data. User only confirms frequency.
|
|
2218
|
+
* @param data The data for the request.
|
|
2219
|
+
* @param data.transactionId Source transaction ID
|
|
2220
|
+
* @param data.region Region code for tenant context
|
|
2221
|
+
* @param data.requestBody
|
|
2222
|
+
* @returns RecurringRuleResponseDto Rule created successfully
|
|
2223
|
+
* @throws ApiError
|
|
2224
|
+
*/
|
|
2225
|
+
public static recurringRuleControllerCreateFromTransaction(
|
|
2226
|
+
data: RecurringRuleControllerCreateFromTransactionData
|
|
2227
|
+
): CancelablePromise<RecurringRuleControllerCreateFromTransactionResponse> {
|
|
2228
|
+
return __request(OpenAPI, {
|
|
2229
|
+
method: 'POST',
|
|
2230
|
+
url: '/api/v1/{region}/bean/recurring-rules/from-transaction/{transactionId}',
|
|
2231
|
+
path: {
|
|
2232
|
+
transactionId: data.transactionId,
|
|
2233
|
+
region: data.region
|
|
2234
|
+
},
|
|
2235
|
+
body: data.requestBody,
|
|
2236
|
+
mediaType: 'application/json',
|
|
2237
|
+
errors: {
|
|
2238
|
+
404: 'Transaction not found',
|
|
2239
|
+
409: 'Rule with same name already exists or transaction already linked'
|
|
2240
|
+
}
|
|
2241
|
+
});
|
|
2242
|
+
}
|
|
2243
|
+
|
|
2244
|
+
/**
|
|
2245
|
+
* Get recurring rule by ID
|
|
2246
|
+
* Returns a specific recurring rule with its details
|
|
2247
|
+
* @param data The data for the request.
|
|
2248
|
+
* @param data.id Rule ID
|
|
2249
|
+
* @param data.region Region code for tenant context
|
|
2250
|
+
* @returns RecurringRuleResponseDto Rule retrieved successfully
|
|
2251
|
+
* @throws ApiError
|
|
2252
|
+
*/
|
|
2253
|
+
public static recurringRuleControllerFindOne(
|
|
2254
|
+
data: RecurringRuleControllerFindOneData
|
|
2255
|
+
): CancelablePromise<RecurringRuleControllerFindOneResponse> {
|
|
2256
|
+
return __request(OpenAPI, {
|
|
2257
|
+
method: 'GET',
|
|
2258
|
+
url: '/api/v1/{region}/bean/recurring-rules/{id}',
|
|
2259
|
+
path: {
|
|
2260
|
+
id: data.id,
|
|
2261
|
+
region: data.region
|
|
2262
|
+
},
|
|
2263
|
+
errors: {
|
|
2264
|
+
404: 'Rule not found'
|
|
2265
|
+
}
|
|
2266
|
+
});
|
|
2267
|
+
}
|
|
2268
|
+
|
|
2269
|
+
/**
|
|
2270
|
+
* Update recurring rule
|
|
2271
|
+
* Updates an existing recurring rule
|
|
2272
|
+
* @param data The data for the request.
|
|
2273
|
+
* @param data.id Rule ID
|
|
2274
|
+
* @param data.region Region code for tenant context
|
|
2275
|
+
* @param data.requestBody
|
|
2276
|
+
* @returns RecurringRuleResponseDto Rule updated successfully
|
|
2277
|
+
* @throws ApiError
|
|
2278
|
+
*/
|
|
2279
|
+
public static recurringRuleControllerUpdate(
|
|
2280
|
+
data: RecurringRuleControllerUpdateData
|
|
2281
|
+
): CancelablePromise<RecurringRuleControllerUpdateResponse> {
|
|
2282
|
+
return __request(OpenAPI, {
|
|
2283
|
+
method: 'PATCH',
|
|
2284
|
+
url: '/api/v1/{region}/bean/recurring-rules/{id}',
|
|
2285
|
+
path: {
|
|
2286
|
+
id: data.id,
|
|
2287
|
+
region: data.region
|
|
2288
|
+
},
|
|
2289
|
+
body: data.requestBody,
|
|
2290
|
+
mediaType: 'application/json',
|
|
2291
|
+
errors: {
|
|
2292
|
+
400: 'Invalid input data',
|
|
2293
|
+
404: 'Rule not found'
|
|
2294
|
+
}
|
|
2295
|
+
});
|
|
2296
|
+
}
|
|
2297
|
+
|
|
2298
|
+
/**
|
|
2299
|
+
* Delete recurring rule
|
|
2300
|
+
* Soft deletes a recurring rule (sets isActive to false)
|
|
2301
|
+
* @param data The data for the request.
|
|
2302
|
+
* @param data.id Rule ID
|
|
2303
|
+
* @param data.region Region code for tenant context
|
|
2304
|
+
* @returns void Rule deleted successfully
|
|
2305
|
+
* @throws ApiError
|
|
2306
|
+
*/
|
|
2307
|
+
public static recurringRuleControllerDelete(
|
|
2308
|
+
data: RecurringRuleControllerDeleteData
|
|
2309
|
+
): CancelablePromise<RecurringRuleControllerDeleteResponse> {
|
|
2310
|
+
return __request(OpenAPI, {
|
|
2311
|
+
method: 'DELETE',
|
|
1635
2312
|
url: '/api/v1/{region}/bean/recurring-rules/{id}',
|
|
1636
2313
|
path: {
|
|
1637
2314
|
id: data.id,
|
|
@@ -1777,7 +2454,7 @@ export class ExpectedTransactionsService {
|
|
|
1777
2454
|
* @param data The data for the request.
|
|
1778
2455
|
* @param data.id Expected transaction ID
|
|
1779
2456
|
* @param data.region Region code for tenant context
|
|
1780
|
-
* @returns
|
|
2457
|
+
* @returns void Skip undone successfully
|
|
1781
2458
|
* @throws ApiError
|
|
1782
2459
|
*/
|
|
1783
2460
|
public static expectedTransactionControllerUndoSkip(
|
|
@@ -1833,7 +2510,7 @@ export class ExpectedTransactionsService {
|
|
|
1833
2510
|
* @param data The data for the request.
|
|
1834
2511
|
* @param data.id Expected transaction ID
|
|
1835
2512
|
* @param data.region Region code for tenant context
|
|
1836
|
-
* @returns
|
|
2513
|
+
* @returns void Match removed successfully
|
|
1837
2514
|
* @throws ApiError
|
|
1838
2515
|
*/
|
|
1839
2516
|
public static expectedTransactionControllerUnmatch(
|
|
@@ -2187,256 +2864,337 @@ export class BeanTransactionRulesService {
|
|
|
2187
2864
|
}
|
|
2188
2865
|
}
|
|
2189
2866
|
|
|
2190
|
-
export class
|
|
2191
|
-
/**
|
|
2192
|
-
* Delete own user account
|
|
2193
|
-
* @param data The data for the request.
|
|
2194
|
-
* @param data.requestBody
|
|
2195
|
-
* @returns void User deleted successfully
|
|
2196
|
-
* @throws ApiError
|
|
2197
|
-
*/
|
|
2198
|
-
public static userControllerDeleteOwnUser(
|
|
2199
|
-
data: UserControllerDeleteOwnUserData
|
|
2200
|
-
): CancelablePromise<UserControllerDeleteOwnUserResponse> {
|
|
2201
|
-
return __request(OpenAPI, {
|
|
2202
|
-
method: 'DELETE',
|
|
2203
|
-
url: '/api/v1/users',
|
|
2204
|
-
body: data.requestBody,
|
|
2205
|
-
mediaType: 'application/json',
|
|
2206
|
-
errors: {
|
|
2207
|
-
403: 'Invalid access token'
|
|
2208
|
-
}
|
|
2209
|
-
});
|
|
2210
|
-
}
|
|
2211
|
-
|
|
2867
|
+
export class BeanCategoryCatalogService {
|
|
2212
2868
|
/**
|
|
2213
|
-
*
|
|
2869
|
+
* List category catalog for a region
|
|
2870
|
+
* Returns the region-scoped category slugs (expense/income/investment/banking/transfer/payment) for the NLP result picker. CN-exclusive payment instruments (huabei/baitiao) appear only under /cn.
|
|
2214
2871
|
* @param data The data for the request.
|
|
2215
|
-
* @param data.
|
|
2216
|
-
* @
|
|
2872
|
+
* @param data.region Region code for tenant context
|
|
2873
|
+
* @param data.scenario Filter by scenario
|
|
2874
|
+
* @param data.routeBearing Filter by routeBearing (entity-router route() consumes it)
|
|
2875
|
+
* @returns CategoryCatalogListResponseDto Category catalog retrieved successfully
|
|
2217
2876
|
* @throws ApiError
|
|
2218
2877
|
*/
|
|
2219
|
-
public static
|
|
2220
|
-
data:
|
|
2221
|
-
): CancelablePromise<
|
|
2878
|
+
public static categoryCatalogControllerList(
|
|
2879
|
+
data: CategoryCatalogControllerListData
|
|
2880
|
+
): CancelablePromise<CategoryCatalogControllerListResponse> {
|
|
2222
2881
|
return __request(OpenAPI, {
|
|
2223
2882
|
method: 'GET',
|
|
2224
|
-
url: '/api/v1/
|
|
2225
|
-
|
|
2226
|
-
|
|
2883
|
+
url: '/api/v1/{region}/bean/categories',
|
|
2884
|
+
path: {
|
|
2885
|
+
region: data.region
|
|
2886
|
+
},
|
|
2887
|
+
query: {
|
|
2888
|
+
scenario: data.scenario,
|
|
2889
|
+
routeBearing: data.routeBearing
|
|
2227
2890
|
}
|
|
2228
2891
|
});
|
|
2229
2892
|
}
|
|
2893
|
+
}
|
|
2230
2894
|
|
|
2895
|
+
export class LifeEventsService {
|
|
2231
2896
|
/**
|
|
2232
|
-
*
|
|
2233
|
-
*
|
|
2897
|
+
* Create a new life event
|
|
2898
|
+
* Creates a new life event entry for the authenticated user. Returns ETag header carrying the row updatedAt.
|
|
2234
2899
|
* @param data The data for the request.
|
|
2900
|
+
* @param data.region Region code for tenant context (decorative for life events)
|
|
2235
2901
|
* @param data.requestBody
|
|
2236
|
-
* @returns
|
|
2902
|
+
* @returns EventResponseDto Life event created successfully
|
|
2237
2903
|
* @throws ApiError
|
|
2238
2904
|
*/
|
|
2239
|
-
public static
|
|
2240
|
-
data:
|
|
2241
|
-
): CancelablePromise<
|
|
2905
|
+
public static eventControllerCreate(
|
|
2906
|
+
data: EventControllerCreateData
|
|
2907
|
+
): CancelablePromise<EventControllerCreateResponse> {
|
|
2242
2908
|
return __request(OpenAPI, {
|
|
2243
2909
|
method: 'POST',
|
|
2244
|
-
url: '/api/v1/
|
|
2910
|
+
url: '/api/v1/{region}/bean/events',
|
|
2911
|
+
path: {
|
|
2912
|
+
region: data.region
|
|
2913
|
+
},
|
|
2245
2914
|
body: data.requestBody,
|
|
2246
2915
|
mediaType: 'application/json',
|
|
2247
2916
|
errors: {
|
|
2248
|
-
|
|
2249
|
-
403: 'User signup is disabled'
|
|
2917
|
+
409: 'Life event already exists for this (userId, type, date) combination'
|
|
2250
2918
|
}
|
|
2251
2919
|
});
|
|
2252
2920
|
}
|
|
2253
2921
|
|
|
2254
2922
|
/**
|
|
2255
|
-
*
|
|
2923
|
+
* List user life events
|
|
2924
|
+
* Returns life events for the authenticated user with optional filtering by type, description search, and date range.
|
|
2256
2925
|
* @param data The data for the request.
|
|
2257
|
-
* @param data.
|
|
2258
|
-
* @
|
|
2926
|
+
* @param data.region Region code for tenant context (decorative for life events)
|
|
2927
|
+
* @param data.type Filter by life event type (exact match)
|
|
2928
|
+
* @param data.q Search term for description (case-insensitive partial match)
|
|
2929
|
+
* @param data.from Filter life events from this date (ISO 8601 format)
|
|
2930
|
+
* @param data.to Filter life events to this date (ISO 8601 format)
|
|
2931
|
+
* @param data.page Page number for pagination (default: 1)
|
|
2932
|
+
* @param data.limit Number of items per page (default: 20, max: 100)
|
|
2933
|
+
* @returns EventListResponseDto Life events retrieved successfully
|
|
2259
2934
|
* @throws ApiError
|
|
2260
2935
|
*/
|
|
2261
|
-
public static
|
|
2262
|
-
data:
|
|
2263
|
-
): CancelablePromise<
|
|
2936
|
+
public static eventControllerFindAll(
|
|
2937
|
+
data: EventControllerFindAllData
|
|
2938
|
+
): CancelablePromise<EventControllerFindAllResponse> {
|
|
2264
2939
|
return __request(OpenAPI, {
|
|
2265
|
-
method: '
|
|
2266
|
-
url: '/api/v1/
|
|
2940
|
+
method: 'GET',
|
|
2941
|
+
url: '/api/v1/{region}/bean/events',
|
|
2267
2942
|
path: {
|
|
2268
|
-
|
|
2943
|
+
region: data.region
|
|
2269
2944
|
},
|
|
2270
|
-
|
|
2271
|
-
|
|
2945
|
+
query: {
|
|
2946
|
+
type: data.type,
|
|
2947
|
+
q: data.q,
|
|
2948
|
+
from: data.from,
|
|
2949
|
+
to: data.to,
|
|
2950
|
+
page: data.page,
|
|
2951
|
+
limit: data.limit
|
|
2272
2952
|
}
|
|
2273
2953
|
});
|
|
2274
2954
|
}
|
|
2275
2955
|
|
|
2276
2956
|
/**
|
|
2277
|
-
* Get
|
|
2957
|
+
* Get life event by ID
|
|
2958
|
+
* Returns a single life event by its ID. Returns ETag header.
|
|
2278
2959
|
* @param data The data for the request.
|
|
2279
|
-
* @param data.id
|
|
2280
|
-
* @
|
|
2960
|
+
* @param data.id Life event ID
|
|
2961
|
+
* @param data.region Region code for tenant context (decorative for life events)
|
|
2962
|
+
* @returns EventResponseDto Life event retrieved successfully
|
|
2281
2963
|
* @throws ApiError
|
|
2282
2964
|
*/
|
|
2283
|
-
public static
|
|
2284
|
-
data:
|
|
2285
|
-
): CancelablePromise<
|
|
2965
|
+
public static eventControllerFindOne(
|
|
2966
|
+
data: EventControllerFindOneData
|
|
2967
|
+
): CancelablePromise<EventControllerFindOneResponse> {
|
|
2286
2968
|
return __request(OpenAPI, {
|
|
2287
2969
|
method: 'GET',
|
|
2288
|
-
url: '/api/v1/
|
|
2970
|
+
url: '/api/v1/{region}/bean/events/{id}',
|
|
2289
2971
|
path: {
|
|
2290
|
-
id: data.id
|
|
2972
|
+
id: data.id,
|
|
2973
|
+
region: data.region
|
|
2291
2974
|
},
|
|
2292
2975
|
errors: {
|
|
2293
|
-
|
|
2976
|
+
404: 'Life event not found'
|
|
2294
2977
|
}
|
|
2295
2978
|
});
|
|
2296
2979
|
}
|
|
2297
2980
|
|
|
2298
2981
|
/**
|
|
2299
|
-
* Update
|
|
2982
|
+
* Update a life event
|
|
2983
|
+
* Updates an existing life event. If If-Match header is provided, performs optimistic concurrency check; mismatched updatedAt returns 412.
|
|
2300
2984
|
* @param data The data for the request.
|
|
2985
|
+
* @param data.id Life event ID
|
|
2986
|
+
* @param data.region Region code for tenant context (decorative for life events)
|
|
2301
2987
|
* @param data.requestBody
|
|
2302
|
-
* @returns
|
|
2988
|
+
* @returns EventResponseDto Life event updated successfully
|
|
2303
2989
|
* @throws ApiError
|
|
2304
2990
|
*/
|
|
2305
|
-
public static
|
|
2306
|
-
data:
|
|
2307
|
-
): CancelablePromise<
|
|
2991
|
+
public static eventControllerUpdate(
|
|
2992
|
+
data: EventControllerUpdateData
|
|
2993
|
+
): CancelablePromise<EventControllerUpdateResponse> {
|
|
2308
2994
|
return __request(OpenAPI, {
|
|
2309
2995
|
method: 'PUT',
|
|
2310
|
-
url: '/api/v1/
|
|
2996
|
+
url: '/api/v1/{region}/bean/events/{id}',
|
|
2997
|
+
path: {
|
|
2998
|
+
id: data.id,
|
|
2999
|
+
region: data.region
|
|
3000
|
+
},
|
|
2311
3001
|
body: data.requestBody,
|
|
2312
3002
|
mediaType: 'application/json',
|
|
2313
3003
|
errors: {
|
|
2314
|
-
|
|
3004
|
+
400: 'If-Match header is not a valid ISO 8601 date',
|
|
3005
|
+
404: 'Life event not found',
|
|
3006
|
+
409: 'Updated event conflicts with an existing (userId, type, date) combination',
|
|
3007
|
+
412: 'If-Match precondition failed (updatedAt mismatch)'
|
|
2315
3008
|
}
|
|
2316
3009
|
});
|
|
2317
3010
|
}
|
|
2318
3011
|
|
|
2319
3012
|
/**
|
|
2320
|
-
*
|
|
3013
|
+
* Delete a life event
|
|
3014
|
+
* Deletes a life event entry (hard delete). Returns 204.
|
|
2321
3015
|
* @param data The data for the request.
|
|
2322
|
-
* @param data.
|
|
2323
|
-
* @param data.
|
|
2324
|
-
* @returns
|
|
3016
|
+
* @param data.id Life event ID
|
|
3017
|
+
* @param data.region Region code for tenant context (decorative for life events)
|
|
3018
|
+
* @returns void Life event deleted successfully
|
|
2325
3019
|
* @throws ApiError
|
|
2326
3020
|
*/
|
|
2327
|
-
public static
|
|
2328
|
-
data:
|
|
2329
|
-
): CancelablePromise<
|
|
3021
|
+
public static eventControllerDelete(
|
|
3022
|
+
data: EventControllerDeleteData
|
|
3023
|
+
): CancelablePromise<EventControllerDeleteResponse> {
|
|
3024
|
+
return __request(OpenAPI, {
|
|
3025
|
+
method: 'DELETE',
|
|
3026
|
+
url: '/api/v1/{region}/bean/events/{id}',
|
|
3027
|
+
path: {
|
|
3028
|
+
id: data.id,
|
|
3029
|
+
region: data.region
|
|
3030
|
+
},
|
|
3031
|
+
errors: {
|
|
3032
|
+
404: 'Life event not found'
|
|
3033
|
+
}
|
|
3034
|
+
});
|
|
3035
|
+
}
|
|
3036
|
+
|
|
3037
|
+
/**
|
|
3038
|
+
* Slice time-series by a life event (Phase 79)
|
|
3039
|
+
* Returns aggregated time-series for postings matching accountPattern within the half-open date range of the given life event.
|
|
3040
|
+
* @param data The data for the request.
|
|
3041
|
+
* @param data.id Life event ID
|
|
3042
|
+
* @param data.accountPattern
|
|
3043
|
+
* @param data.granularity
|
|
3044
|
+
* @param data.region Region code for tenant context (decorative for life events)
|
|
3045
|
+
* @returns unknown Time-series sliced by the life event range
|
|
3046
|
+
* @throws ApiError
|
|
3047
|
+
*/
|
|
3048
|
+
public static eventControllerGetSlice(
|
|
3049
|
+
data: EventControllerGetSliceData
|
|
3050
|
+
): CancelablePromise<EventControllerGetSliceResponse> {
|
|
2330
3051
|
return __request(OpenAPI, {
|
|
2331
3052
|
method: 'GET',
|
|
2332
|
-
url: '/api/v1/
|
|
3053
|
+
url: '/api/v1/{region}/bean/events/{id}/slice',
|
|
3054
|
+
path: {
|
|
3055
|
+
id: data.id,
|
|
3056
|
+
region: data.region
|
|
3057
|
+
},
|
|
2333
3058
|
query: {
|
|
2334
|
-
|
|
2335
|
-
|
|
3059
|
+
accountPattern: data.accountPattern,
|
|
3060
|
+
granularity: data.granularity
|
|
3061
|
+
},
|
|
3062
|
+
errors: {
|
|
3063
|
+
400: 'accountPattern query param is empty',
|
|
3064
|
+
404: 'Life event not found'
|
|
2336
3065
|
}
|
|
2337
3066
|
});
|
|
2338
3067
|
}
|
|
3068
|
+
}
|
|
2339
3069
|
|
|
3070
|
+
export class OnboardingService {
|
|
2340
3071
|
/**
|
|
2341
|
-
*
|
|
2342
|
-
* @
|
|
3072
|
+
* Bootstrap core accounts + register asset accounts with opening balances (ADR-0113)
|
|
3073
|
+
* @param data The data for the request.
|
|
3074
|
+
* @param data.region Region code for tenant context
|
|
3075
|
+
* @param data.requestBody
|
|
3076
|
+
* @returns unknown Onboarding bootstrap result.
|
|
2343
3077
|
* @throws ApiError
|
|
2344
3078
|
*/
|
|
2345
|
-
public static
|
|
3079
|
+
public static onboardingControllerBootstrap(
|
|
3080
|
+
data: OnboardingControllerBootstrapData
|
|
3081
|
+
): CancelablePromise<OnboardingControllerBootstrapResponse> {
|
|
2346
3082
|
return __request(OpenAPI, {
|
|
2347
|
-
method: '
|
|
2348
|
-
url: '/api/v1/
|
|
3083
|
+
method: 'POST',
|
|
3084
|
+
url: '/api/v1/{region}/bean/onboarding',
|
|
3085
|
+
path: {
|
|
3086
|
+
region: data.region
|
|
3087
|
+
},
|
|
3088
|
+
body: data.requestBody,
|
|
3089
|
+
mediaType: 'application/json',
|
|
3090
|
+
errors: {
|
|
3091
|
+
422: 'Invalid region/account path/duplicate paths.'
|
|
3092
|
+
}
|
|
2349
3093
|
});
|
|
2350
3094
|
}
|
|
2351
3095
|
}
|
|
2352
3096
|
|
|
2353
|
-
export class
|
|
3097
|
+
export class BalanceReconciliationService {
|
|
2354
3098
|
/**
|
|
2355
|
-
*
|
|
2356
|
-
*
|
|
3099
|
+
* Preview reconciliation (book vs actual)
|
|
3100
|
+
* Computes book balance, diff, Beancount-inferred tolerance, and suggested action without persisting.
|
|
3101
|
+
* @param data The data for the request.
|
|
3102
|
+
* @param data.region Region code for tenant context (decorative for reconciliation)
|
|
3103
|
+
* @param data.requestBody
|
|
3104
|
+
* @returns ReconciliationComputeResultDto Reconciliation preview
|
|
2357
3105
|
* @throws ApiError
|
|
2358
3106
|
*/
|
|
2359
|
-
public static
|
|
3107
|
+
public static reconciliationControllerCompute(
|
|
3108
|
+
data: ReconciliationControllerComputeData
|
|
3109
|
+
): CancelablePromise<ReconciliationControllerComputeResponse> {
|
|
2360
3110
|
return __request(OpenAPI, {
|
|
2361
|
-
method: '
|
|
2362
|
-
url: '/api/v1/
|
|
3111
|
+
method: 'POST',
|
|
3112
|
+
url: '/api/v1/{region}/bean/reconciliations',
|
|
3113
|
+
path: {
|
|
3114
|
+
region: data.region
|
|
3115
|
+
},
|
|
3116
|
+
body: data.requestBody,
|
|
3117
|
+
mediaType: 'application/json',
|
|
2363
3118
|
errors: {
|
|
2364
|
-
|
|
2365
|
-
403: 'Forbidden - insufficient permissions'
|
|
3119
|
+
404: 'Account not found'
|
|
2366
3120
|
}
|
|
2367
3121
|
});
|
|
2368
3122
|
}
|
|
2369
3123
|
|
|
2370
3124
|
/**
|
|
2371
|
-
*
|
|
3125
|
+
* Record a balance assertion
|
|
3126
|
+
* Persists the reconciliation as a BeanBalance assertion (amount = actual, diffAmount = book − actual). Re-reconciling the same day/currency upserts.
|
|
2372
3127
|
* @param data The data for the request.
|
|
2373
|
-
* @param data.
|
|
2374
|
-
* @
|
|
3128
|
+
* @param data.region Region code for tenant context (decorative for reconciliation)
|
|
3129
|
+
* @param data.requestBody
|
|
3130
|
+
* @returns ReconciliationRecordDto Balance assertion recorded
|
|
2375
3131
|
* @throws ApiError
|
|
2376
3132
|
*/
|
|
2377
|
-
public static
|
|
2378
|
-
data:
|
|
2379
|
-
): CancelablePromise<
|
|
3133
|
+
public static reconciliationControllerAssert(
|
|
3134
|
+
data: ReconciliationControllerAssertData
|
|
3135
|
+
): CancelablePromise<ReconciliationControllerAssertResponse> {
|
|
2380
3136
|
return __request(OpenAPI, {
|
|
2381
|
-
method: '
|
|
2382
|
-
url: '/api/v1/
|
|
3137
|
+
method: 'POST',
|
|
3138
|
+
url: '/api/v1/{region}/bean/reconciliations/assert',
|
|
2383
3139
|
path: {
|
|
2384
|
-
|
|
3140
|
+
region: data.region
|
|
2385
3141
|
},
|
|
3142
|
+
body: data.requestBody,
|
|
3143
|
+
mediaType: 'application/json',
|
|
2386
3144
|
errors: {
|
|
2387
|
-
|
|
2388
|
-
403: 'Forbidden - insufficient permissions',
|
|
2389
|
-
404: 'Property not found'
|
|
3145
|
+
404: 'Account not found'
|
|
2390
3146
|
}
|
|
2391
3147
|
});
|
|
2392
3148
|
}
|
|
2393
3149
|
|
|
2394
3150
|
/**
|
|
2395
|
-
*
|
|
3151
|
+
* Generate a pad adjusting entry
|
|
3152
|
+
* When book is outside tolerance, synthesizes a Beancount pad transaction (flag P) booking the diff from source_account and persists it. Source defaults to Equity:Opening-Balances.
|
|
2396
3153
|
* @param data The data for the request.
|
|
2397
|
-
* @param data.
|
|
3154
|
+
* @param data.region Region code for tenant context (decorative for reconciliation)
|
|
2398
3155
|
* @param data.requestBody
|
|
2399
|
-
* @returns
|
|
3156
|
+
* @returns PadResultDto Pad adjusting entry generated
|
|
2400
3157
|
* @throws ApiError
|
|
2401
3158
|
*/
|
|
2402
|
-
public static
|
|
2403
|
-
data:
|
|
2404
|
-
): CancelablePromise<
|
|
3159
|
+
public static reconciliationControllerPad(
|
|
3160
|
+
data: ReconciliationControllerPadData
|
|
3161
|
+
): CancelablePromise<ReconciliationControllerPadResponse> {
|
|
2405
3162
|
return __request(OpenAPI, {
|
|
2406
|
-
method: '
|
|
2407
|
-
url: '/api/v1/
|
|
3163
|
+
method: 'POST',
|
|
3164
|
+
url: '/api/v1/{region}/bean/reconciliations/pad',
|
|
2408
3165
|
path: {
|
|
2409
|
-
|
|
3166
|
+
region: data.region
|
|
2410
3167
|
},
|
|
2411
3168
|
body: data.requestBody,
|
|
2412
3169
|
mediaType: 'application/json',
|
|
2413
3170
|
errors: {
|
|
2414
|
-
|
|
2415
|
-
|
|
3171
|
+
400: 'Book already within tolerance — no pad needed',
|
|
3172
|
+
404: 'Account not found'
|
|
2416
3173
|
}
|
|
2417
3174
|
});
|
|
2418
3175
|
}
|
|
2419
3176
|
|
|
2420
3177
|
/**
|
|
2421
|
-
*
|
|
3178
|
+
* List reconciliation history for an account
|
|
3179
|
+
* Returns recorded balance assertions (most recent first). The latest drives the account-detail "Last <date>" badge.
|
|
2422
3180
|
* @param data The data for the request.
|
|
2423
|
-
* @param data.
|
|
2424
|
-
* @
|
|
3181
|
+
* @param data.accountId BeanAccount id
|
|
3182
|
+
* @param data.region Region code for tenant context (decorative for reconciliation)
|
|
3183
|
+
* @returns ReconciliationRecordDto Reconciliation history
|
|
2425
3184
|
* @throws ApiError
|
|
2426
3185
|
*/
|
|
2427
|
-
public static
|
|
2428
|
-
data:
|
|
2429
|
-
): CancelablePromise<
|
|
3186
|
+
public static reconciliationControllerHistory(
|
|
3187
|
+
data: ReconciliationControllerHistoryData
|
|
3188
|
+
): CancelablePromise<ReconciliationControllerHistoryResponse> {
|
|
2430
3189
|
return __request(OpenAPI, {
|
|
2431
|
-
method: '
|
|
2432
|
-
url: '/api/v1/
|
|
3190
|
+
method: 'GET',
|
|
3191
|
+
url: '/api/v1/{region}/bean/accounts/{accountId}/reconciliations',
|
|
2433
3192
|
path: {
|
|
2434
|
-
|
|
3193
|
+
accountId: data.accountId,
|
|
3194
|
+
region: data.region
|
|
2435
3195
|
},
|
|
2436
3196
|
errors: {
|
|
2437
|
-
|
|
2438
|
-
403: 'Forbidden - insufficient permissions',
|
|
2439
|
-
404: 'Property not found'
|
|
3197
|
+
404: 'Account not found'
|
|
2440
3198
|
}
|
|
2441
3199
|
});
|
|
2442
3200
|
}
|
|
@@ -2446,7 +3204,7 @@ export class BeanExportService {
|
|
|
2446
3204
|
/**
|
|
2447
3205
|
* Export Beancount ledger as ZIP
|
|
2448
3206
|
* Export all user Beancount data as a ZIP file containing ledger.beancount and yearly files in community format.
|
|
2449
|
-
* @returns
|
|
3207
|
+
* @returns binary ZIP archive (application/zip) streamed as an attachment
|
|
2450
3208
|
* @throws ApiError
|
|
2451
3209
|
*/
|
|
2452
3210
|
public static exportControllerExportBeancount(): CancelablePromise<ExportControllerExportBeancountResponse> {
|
|
@@ -2534,412 +3292,587 @@ export class BeanImportService {
|
|
|
2534
3292
|
formData: data.formData,
|
|
2535
3293
|
mediaType: 'multipart/form-data',
|
|
2536
3294
|
errors: {
|
|
2537
|
-
400: 'Bad request - invalid file or no file uploaded'
|
|
3295
|
+
400: 'Bad request - invalid file or no file uploaded'
|
|
3296
|
+
}
|
|
3297
|
+
});
|
|
3298
|
+
}
|
|
3299
|
+
|
|
3300
|
+
/**
|
|
3301
|
+
* Get importer configuration
|
|
3302
|
+
* Returns the current configuration for the specified importer. Creates default configuration if none exists.
|
|
3303
|
+
* @param data The data for the request.
|
|
3304
|
+
* @param data.importerId Importer identifier. Supported importers: alipay, alipay-web, wechat, boc, boc-credit, ccb, cmb, cmbc, cmbc-credit, icbc, icbc-credit, hsbc-hk-credit, hsbc-hk-debit
|
|
3305
|
+
* @param data.region Region code for tenant context
|
|
3306
|
+
* @returns ImporterConfigDto Configuration retrieved successfully
|
|
3307
|
+
* @throws ApiError
|
|
3308
|
+
*/
|
|
3309
|
+
public static importerConfigControllerGetConfig(
|
|
3310
|
+
data: ImporterConfigControllerGetConfigData
|
|
3311
|
+
): CancelablePromise<ImporterConfigControllerGetConfigResponse> {
|
|
3312
|
+
return __request(OpenAPI, {
|
|
3313
|
+
method: 'GET',
|
|
3314
|
+
url: '/api/v1/{region}/bean/import/config/{importerId}',
|
|
3315
|
+
path: {
|
|
3316
|
+
importerId: data.importerId,
|
|
3317
|
+
region: data.region
|
|
3318
|
+
},
|
|
3319
|
+
errors: {
|
|
3320
|
+
400: 'Invalid input - Unsupported importer',
|
|
3321
|
+
401: 'Unauthorized - Authentication required'
|
|
3322
|
+
}
|
|
3323
|
+
});
|
|
3324
|
+
}
|
|
3325
|
+
|
|
3326
|
+
/**
|
|
3327
|
+
* Update importer configuration
|
|
3328
|
+
* Updates the configuration for the specified importer. Partial updates are supported.
|
|
3329
|
+
* @param data The data for the request.
|
|
3330
|
+
* @param data.importerId Importer identifier. Supported importers: alipay, alipay-web, wechat, boc, boc-credit, ccb, cmb, cmbc, cmbc-credit, icbc, icbc-credit, hsbc-hk-credit, hsbc-hk-debit
|
|
3331
|
+
* @param data.region Region code for tenant context
|
|
3332
|
+
* @param data.requestBody Partial configuration update. Only provided fields will be updated.
|
|
3333
|
+
* @returns ImporterConfigDto Configuration updated successfully
|
|
3334
|
+
* @throws ApiError
|
|
3335
|
+
*/
|
|
3336
|
+
public static importerConfigControllerUpdateConfig(
|
|
3337
|
+
data: ImporterConfigControllerUpdateConfigData
|
|
3338
|
+
): CancelablePromise<ImporterConfigControllerUpdateConfigResponse> {
|
|
3339
|
+
return __request(OpenAPI, {
|
|
3340
|
+
method: 'PUT',
|
|
3341
|
+
url: '/api/v1/{region}/bean/import/config/{importerId}',
|
|
3342
|
+
path: {
|
|
3343
|
+
importerId: data.importerId,
|
|
3344
|
+
region: data.region
|
|
3345
|
+
},
|
|
3346
|
+
body: data.requestBody,
|
|
3347
|
+
mediaType: 'application/json',
|
|
3348
|
+
errors: {
|
|
3349
|
+
400: 'Invalid input - Validation failed',
|
|
3350
|
+
404: 'Configuration not found'
|
|
3351
|
+
}
|
|
3352
|
+
});
|
|
3353
|
+
}
|
|
3354
|
+
|
|
3355
|
+
/**
|
|
3356
|
+
* Reset configuration to default
|
|
3357
|
+
* Resets the configuration for the specified importer to default values. This operation overwrites all existing configuration.
|
|
3358
|
+
* @param data The data for the request.
|
|
3359
|
+
* @param data.importerId Importer identifier. Supported importers: alipay, alipay-web, wechat, boc, boc-credit, ccb, cmb, cmbc, cmbc-credit, icbc, icbc-credit, hsbc-hk-credit, hsbc-hk-debit
|
|
3360
|
+
* @param data.region Region code for tenant context
|
|
3361
|
+
* @returns ImporterConfigDto Configuration reset successfully
|
|
3362
|
+
* @throws ApiError
|
|
3363
|
+
*/
|
|
3364
|
+
public static importerConfigControllerResetConfig(
|
|
3365
|
+
data: ImporterConfigControllerResetConfigData
|
|
3366
|
+
): CancelablePromise<ImporterConfigControllerResetConfigResponse> {
|
|
3367
|
+
return __request(OpenAPI, {
|
|
3368
|
+
method: 'POST',
|
|
3369
|
+
url: '/api/v1/{region}/bean/import/config/{importerId}/reset',
|
|
3370
|
+
path: {
|
|
3371
|
+
importerId: data.importerId,
|
|
3372
|
+
region: data.region
|
|
3373
|
+
},
|
|
3374
|
+
errors: {
|
|
3375
|
+
400: 'Invalid input - Unsupported importer'
|
|
3376
|
+
}
|
|
3377
|
+
});
|
|
3378
|
+
}
|
|
3379
|
+
}
|
|
3380
|
+
|
|
3381
|
+
export class ProviderSyncService {
|
|
3382
|
+
/**
|
|
3383
|
+
* Sync transactions from financial data provider
|
|
3384
|
+
*
|
|
3385
|
+
* Accepts raw transactions from external financial data providers, transforms them to Beancount format, and processes them through the ingestion pipeline.
|
|
3386
|
+
*
|
|
3387
|
+
* **Supported Providers:**
|
|
3388
|
+
* - **plaid**: Plaid API (US, Canada, Europe)
|
|
3389
|
+
* - **teller**: Teller API (US)
|
|
3390
|
+
* - **truelayer**: TrueLayer Open Banking (UK, Europe)
|
|
3391
|
+
* - **gocardless**: GoCardless Bank Account Data (Europe)
|
|
3392
|
+
* - **simplefin**: SimpleFIN (Self-hosted)
|
|
3393
|
+
* - **yodlee**: Yodlee (Global)
|
|
3394
|
+
* - **beancount-direct**: Beancount format transactions
|
|
3395
|
+
* - **parsed-bill**: Client-side parsed bill transactions
|
|
3396
|
+
*
|
|
3397
|
+
* **Processing Flow:**
|
|
3398
|
+
* 1. Transform raw data via provider adapter
|
|
3399
|
+
* 2. Validate transaction format
|
|
3400
|
+
* 3. Deduplicate using originalId
|
|
3401
|
+
* 4. Classify using rule engine
|
|
3402
|
+
* 5. Route low-confidence to Review Center
|
|
3403
|
+
* 6. Persist validated transactions
|
|
3404
|
+
*
|
|
3405
|
+
* @param data The data for the request.
|
|
3406
|
+
* @param data.providerName Provider name
|
|
3407
|
+
* @param data.region Region code for tenant context
|
|
3408
|
+
* @param data.requestBody
|
|
3409
|
+
* @returns ProviderSyncResponseDto Sync completed successfully
|
|
3410
|
+
* @throws ApiError
|
|
3411
|
+
*/
|
|
3412
|
+
public static providerSyncControllerSync(
|
|
3413
|
+
data: ProviderSyncControllerSyncData
|
|
3414
|
+
): CancelablePromise<ProviderSyncControllerSyncResponse> {
|
|
3415
|
+
return __request(OpenAPI, {
|
|
3416
|
+
method: 'POST',
|
|
3417
|
+
url: '/api/v1/{region}/bean/import/provider/{providerName}/sync',
|
|
3418
|
+
path: {
|
|
3419
|
+
providerName: data.providerName,
|
|
3420
|
+
region: data.region
|
|
3421
|
+
},
|
|
3422
|
+
body: data.requestBody,
|
|
3423
|
+
mediaType: 'application/json',
|
|
3424
|
+
errors: {
|
|
3425
|
+
400: 'Invalid request data',
|
|
3426
|
+
401: 'Missing or invalid authentication',
|
|
3427
|
+
404: 'Provider not supported'
|
|
3428
|
+
}
|
|
3429
|
+
});
|
|
3430
|
+
}
|
|
3431
|
+
|
|
3432
|
+
/**
|
|
3433
|
+
* Get supported providers
|
|
3434
|
+
* Returns a list of all providers supported by the sync endpoint.
|
|
3435
|
+
* @param data The data for the request.
|
|
3436
|
+
* @param data.region Region code for tenant context
|
|
3437
|
+
* @returns SupportedProvidersResponseDto List of supported providers
|
|
3438
|
+
* @throws ApiError
|
|
3439
|
+
*/
|
|
3440
|
+
public static providerSyncControllerGetSupportedProviders(
|
|
3441
|
+
data: ProviderSyncControllerGetSupportedProvidersData
|
|
3442
|
+
): CancelablePromise<ProviderSyncControllerGetSupportedProvidersResponse> {
|
|
3443
|
+
return __request(OpenAPI, {
|
|
3444
|
+
method: 'GET',
|
|
3445
|
+
url: '/api/v1/{region}/bean/import/provider/supported',
|
|
3446
|
+
path: {
|
|
3447
|
+
region: data.region
|
|
3448
|
+
},
|
|
3449
|
+
errors: {
|
|
3450
|
+
401: 'Missing or invalid authentication'
|
|
3451
|
+
}
|
|
3452
|
+
});
|
|
3453
|
+
}
|
|
3454
|
+
|
|
3455
|
+
/**
|
|
3456
|
+
* Check if provider is supported
|
|
3457
|
+
* Returns whether a specific provider is supported.
|
|
3458
|
+
* @param data The data for the request.
|
|
3459
|
+
* @param data.providerName Provider name to check
|
|
3460
|
+
* @param data.region Region code for tenant context
|
|
3461
|
+
* @returns unknown Provider support status
|
|
3462
|
+
* @throws ApiError
|
|
3463
|
+
*/
|
|
3464
|
+
public static providerSyncControllerIsProviderSupported(
|
|
3465
|
+
data: ProviderSyncControllerIsProviderSupportedData
|
|
3466
|
+
): CancelablePromise<ProviderSyncControllerIsProviderSupportedResponse> {
|
|
3467
|
+
return __request(OpenAPI, {
|
|
3468
|
+
method: 'GET',
|
|
3469
|
+
url: '/api/v1/{region}/bean/import/provider/{providerName}/supported',
|
|
3470
|
+
path: {
|
|
3471
|
+
providerName: data.providerName,
|
|
3472
|
+
region: data.region
|
|
3473
|
+
},
|
|
3474
|
+
errors: {
|
|
3475
|
+
401: 'Missing or invalid authentication'
|
|
2538
3476
|
}
|
|
2539
3477
|
});
|
|
2540
3478
|
}
|
|
3479
|
+
}
|
|
2541
3480
|
|
|
3481
|
+
export class ExternalAccountLinksService {
|
|
2542
3482
|
/**
|
|
2543
|
-
*
|
|
2544
|
-
* Returns the current configuration for the specified importer. Creates default configuration if none exists.
|
|
3483
|
+
* Create an external account → BeanAccount mapping (ADR-0113)
|
|
2545
3484
|
* @param data The data for the request.
|
|
2546
|
-
* @param data.importerId Importer identifier. Supported importers: alipay, alipay-web, wechat, boc, boc-credit, ccb, cmb, cmbc, cmbc-credit, icbc, icbc-credit, hsbc-hk-credit, hsbc-hk-debit
|
|
2547
3485
|
* @param data.region Region code for tenant context
|
|
2548
|
-
* @
|
|
3486
|
+
* @param data.requestBody
|
|
3487
|
+
* @returns ExternalAccountLinkResponseDto Link created.
|
|
2549
3488
|
* @throws ApiError
|
|
2550
3489
|
*/
|
|
2551
|
-
public static
|
|
2552
|
-
data:
|
|
2553
|
-
): CancelablePromise<
|
|
3490
|
+
public static externalAccountLinkControllerCreate(
|
|
3491
|
+
data: ExternalAccountLinkControllerCreateData
|
|
3492
|
+
): CancelablePromise<ExternalAccountLinkControllerCreateResponse> {
|
|
2554
3493
|
return __request(OpenAPI, {
|
|
2555
|
-
method: '
|
|
2556
|
-
url: '/api/v1/{region}/bean/
|
|
3494
|
+
method: 'POST',
|
|
3495
|
+
url: '/api/v1/{region}/bean/external-account-links',
|
|
2557
3496
|
path: {
|
|
2558
|
-
importerId: data.importerId,
|
|
2559
3497
|
region: data.region
|
|
2560
3498
|
},
|
|
3499
|
+
body: data.requestBody,
|
|
3500
|
+
mediaType: 'application/json',
|
|
2561
3501
|
errors: {
|
|
2562
|
-
|
|
2563
|
-
401: 'Unauthorized - Authentication required'
|
|
3502
|
+
422: 'beanAccountId not owned, or an active link already exists.'
|
|
2564
3503
|
}
|
|
2565
3504
|
});
|
|
2566
3505
|
}
|
|
2567
3506
|
|
|
2568
3507
|
/**
|
|
2569
|
-
*
|
|
2570
|
-
* Updates the configuration for the specified importer. Partial updates are supported.
|
|
3508
|
+
* List the user's active external account links
|
|
2571
3509
|
* @param data The data for the request.
|
|
2572
|
-
* @param data.
|
|
3510
|
+
* @param data.provider
|
|
2573
3511
|
* @param data.region Region code for tenant context
|
|
2574
|
-
* @
|
|
2575
|
-
* @returns ImporterConfigDto Configuration updated successfully
|
|
3512
|
+
* @returns ExternalAccountLinkListResponseDto Links retrieved.
|
|
2576
3513
|
* @throws ApiError
|
|
2577
3514
|
*/
|
|
2578
|
-
public static
|
|
2579
|
-
data:
|
|
2580
|
-
): CancelablePromise<
|
|
3515
|
+
public static externalAccountLinkControllerFindAll(
|
|
3516
|
+
data: ExternalAccountLinkControllerFindAllData
|
|
3517
|
+
): CancelablePromise<ExternalAccountLinkControllerFindAllResponse> {
|
|
2581
3518
|
return __request(OpenAPI, {
|
|
2582
|
-
method: '
|
|
2583
|
-
url: '/api/v1/{region}/bean/
|
|
3519
|
+
method: 'GET',
|
|
3520
|
+
url: '/api/v1/{region}/bean/external-account-links',
|
|
2584
3521
|
path: {
|
|
2585
|
-
importerId: data.importerId,
|
|
2586
3522
|
region: data.region
|
|
2587
3523
|
},
|
|
2588
|
-
|
|
2589
|
-
|
|
2590
|
-
errors: {
|
|
2591
|
-
400: 'Invalid input - Validation failed',
|
|
2592
|
-
404: 'Configuration not found'
|
|
3524
|
+
query: {
|
|
3525
|
+
provider: data.provider
|
|
2593
3526
|
}
|
|
2594
3527
|
});
|
|
2595
3528
|
}
|
|
2596
3529
|
|
|
2597
3530
|
/**
|
|
2598
|
-
*
|
|
2599
|
-
* Resets the configuration for the specified importer to default values. This operation overwrites all existing configuration.
|
|
3531
|
+
* Get a single external account link
|
|
2600
3532
|
* @param data The data for the request.
|
|
2601
|
-
* @param data.
|
|
3533
|
+
* @param data.id
|
|
2602
3534
|
* @param data.region Region code for tenant context
|
|
2603
|
-
* @returns
|
|
3535
|
+
* @returns ExternalAccountLinkResponseDto Link retrieved.
|
|
2604
3536
|
* @throws ApiError
|
|
2605
3537
|
*/
|
|
2606
|
-
public static
|
|
2607
|
-
data:
|
|
2608
|
-
): CancelablePromise<
|
|
3538
|
+
public static externalAccountLinkControllerFindOne(
|
|
3539
|
+
data: ExternalAccountLinkControllerFindOneData
|
|
3540
|
+
): CancelablePromise<ExternalAccountLinkControllerFindOneResponse> {
|
|
2609
3541
|
return __request(OpenAPI, {
|
|
2610
|
-
method: '
|
|
2611
|
-
url: '/api/v1/{region}/bean/
|
|
3542
|
+
method: 'GET',
|
|
3543
|
+
url: '/api/v1/{region}/bean/external-account-links/{id}',
|
|
2612
3544
|
path: {
|
|
2613
|
-
|
|
3545
|
+
id: data.id,
|
|
2614
3546
|
region: data.region
|
|
2615
3547
|
},
|
|
2616
3548
|
errors: {
|
|
2617
|
-
|
|
3549
|
+
422: 'Link not found or not owned by the user.'
|
|
2618
3550
|
}
|
|
2619
3551
|
});
|
|
2620
3552
|
}
|
|
2621
|
-
}
|
|
2622
3553
|
|
|
2623
|
-
export class BeanPlatformsService {
|
|
2624
3554
|
/**
|
|
2625
|
-
*
|
|
2626
|
-
* @
|
|
3555
|
+
* Soft-delete (disconnect) an external account link
|
|
3556
|
+
* @param data The data for the request.
|
|
3557
|
+
* @param data.id
|
|
3558
|
+
* @param data.region Region code for tenant context
|
|
3559
|
+
* @returns void Link soft-deleted; historical transactions are unaffected.
|
|
2627
3560
|
* @throws ApiError
|
|
2628
3561
|
*/
|
|
2629
|
-
public static
|
|
3562
|
+
public static externalAccountLinkControllerRemove(
|
|
3563
|
+
data: ExternalAccountLinkControllerRemoveData
|
|
3564
|
+
): CancelablePromise<ExternalAccountLinkControllerRemoveResponse> {
|
|
2630
3565
|
return __request(OpenAPI, {
|
|
2631
|
-
method: '
|
|
2632
|
-
url: '/api/v1/bean/
|
|
3566
|
+
method: 'DELETE',
|
|
3567
|
+
url: '/api/v1/{region}/bean/external-account-links/{id}',
|
|
3568
|
+
path: {
|
|
3569
|
+
id: data.id,
|
|
3570
|
+
region: data.region
|
|
3571
|
+
}
|
|
2633
3572
|
});
|
|
2634
3573
|
}
|
|
3574
|
+
}
|
|
2635
3575
|
|
|
3576
|
+
export class ImportTelemetryService {
|
|
2636
3577
|
/**
|
|
2637
|
-
*
|
|
3578
|
+
* Receive anonymous parser failure telemetry
|
|
2638
3579
|
* @param data The data for the request.
|
|
3580
|
+
* @param data.region Region code for tenant context
|
|
2639
3581
|
* @param data.requestBody
|
|
2640
|
-
* @returns unknown
|
|
3582
|
+
* @returns unknown Telemetry report received
|
|
2641
3583
|
* @throws ApiError
|
|
2642
3584
|
*/
|
|
2643
|
-
public static
|
|
2644
|
-
data:
|
|
2645
|
-
): CancelablePromise<
|
|
3585
|
+
public static telemetryControllerReportTelemetry(
|
|
3586
|
+
data: TelemetryControllerReportTelemetryData
|
|
3587
|
+
): CancelablePromise<TelemetryControllerReportTelemetryResponse> {
|
|
2646
3588
|
return __request(OpenAPI, {
|
|
2647
3589
|
method: 'POST',
|
|
2648
|
-
url: '/api/v1/bean/
|
|
3590
|
+
url: '/api/v1/{region}/bean/import/parser-telemetry',
|
|
3591
|
+
path: {
|
|
3592
|
+
region: data.region
|
|
3593
|
+
},
|
|
2649
3594
|
body: data.requestBody,
|
|
2650
3595
|
mediaType: 'application/json',
|
|
2651
3596
|
errors: {
|
|
2652
|
-
|
|
3597
|
+
401: 'Unauthorized'
|
|
2653
3598
|
}
|
|
2654
3599
|
});
|
|
2655
3600
|
}
|
|
2656
3601
|
|
|
2657
3602
|
/**
|
|
2658
|
-
*
|
|
2659
|
-
* @
|
|
3603
|
+
* Receive anonymous zero-hit coverage miss report
|
|
3604
|
+
* @param data The data for the request.
|
|
3605
|
+
* @param data.region Region code for tenant context
|
|
3606
|
+
* @param data.requestBody
|
|
3607
|
+
* @returns unknown Coverage miss report received
|
|
2660
3608
|
* @throws ApiError
|
|
2661
3609
|
*/
|
|
2662
|
-
public static
|
|
3610
|
+
public static telemetryControllerReportCoverageMiss(
|
|
3611
|
+
data: TelemetryControllerReportCoverageMissData
|
|
3612
|
+
): CancelablePromise<TelemetryControllerReportCoverageMissResponse> {
|
|
2663
3613
|
return __request(OpenAPI, {
|
|
2664
|
-
method: '
|
|
2665
|
-
url: '/api/v1/bean/
|
|
3614
|
+
method: 'POST',
|
|
3615
|
+
url: '/api/v1/{region}/bean/import/parser-coverage-miss',
|
|
3616
|
+
path: {
|
|
3617
|
+
region: data.region
|
|
3618
|
+
},
|
|
3619
|
+
body: data.requestBody,
|
|
3620
|
+
mediaType: 'application/json',
|
|
3621
|
+
errors: {
|
|
3622
|
+
401: 'Unauthorized'
|
|
3623
|
+
}
|
|
2666
3624
|
});
|
|
2667
3625
|
}
|
|
2668
3626
|
|
|
2669
3627
|
/**
|
|
2670
|
-
*
|
|
3628
|
+
* Coverage metrics (uncovered format aggregation)
|
|
2671
3629
|
* @param data The data for the request.
|
|
2672
|
-
* @param data.
|
|
2673
|
-
* @param data.
|
|
2674
|
-
* @returns unknown
|
|
3630
|
+
* @param data.region Region code for tenant context
|
|
3631
|
+
* @param data.topN Top-N uncovered formats (default 10)
|
|
3632
|
+
* @returns unknown Coverage metrics
|
|
2675
3633
|
* @throws ApiError
|
|
2676
3634
|
*/
|
|
2677
|
-
public static
|
|
2678
|
-
data:
|
|
2679
|
-
): CancelablePromise<
|
|
3635
|
+
public static telemetryControllerGetCoverageMetrics(
|
|
3636
|
+
data: TelemetryControllerGetCoverageMetricsData
|
|
3637
|
+
): CancelablePromise<TelemetryControllerGetCoverageMetricsResponse> {
|
|
2680
3638
|
return __request(OpenAPI, {
|
|
2681
3639
|
method: 'GET',
|
|
2682
|
-
url: '/api/v1/bean/
|
|
2683
|
-
|
|
2684
|
-
q: data.q,
|
|
3640
|
+
url: '/api/v1/{region}/bean/import/parser-coverage-metrics',
|
|
3641
|
+
path: {
|
|
2685
3642
|
region: data.region
|
|
3643
|
+
},
|
|
3644
|
+
query: {
|
|
3645
|
+
topN: data.topN
|
|
2686
3646
|
}
|
|
2687
3647
|
});
|
|
2688
3648
|
}
|
|
3649
|
+
}
|
|
2689
3650
|
|
|
3651
|
+
export class BeanNlpService {
|
|
2690
3652
|
/**
|
|
2691
|
-
*
|
|
3653
|
+
* Process natural language input
|
|
3654
|
+
* Parse natural language text (Chinese/English) describing a transaction. Supports multi-turn dialogue for collecting missing information. When confidence < 0.75, returns "confirm" action requiring user verification. User can reply with confirmation words (确认/yes/ok) or provide corrections. Examples: "yesterday Starbucks spent 35 yuan", "today lunch 28 yuan", "spent $50 at Walmart"
|
|
2692
3655
|
* @param data The data for the request.
|
|
2693
|
-
* @param data.
|
|
2694
|
-
* @param data.requestBody
|
|
2695
|
-
* @returns
|
|
3656
|
+
* @param data.region Region code for tenant context
|
|
3657
|
+
* @param data.requestBody Natural language transaction input with optional session ID
|
|
3658
|
+
* @returns NlpResponseDto NLP processing result - either created transaction or asking for more info
|
|
2696
3659
|
* @throws ApiError
|
|
2697
3660
|
*/
|
|
2698
|
-
public static
|
|
2699
|
-
data:
|
|
2700
|
-
): CancelablePromise<
|
|
3661
|
+
public static nlpControllerProcessNaturalLanguage(
|
|
3662
|
+
data: NlpControllerProcessNaturalLanguageData
|
|
3663
|
+
): CancelablePromise<NlpControllerProcessNaturalLanguageResponse> {
|
|
2701
3664
|
return __request(OpenAPI, {
|
|
2702
|
-
method: '
|
|
2703
|
-
url: '/api/v1/bean/
|
|
3665
|
+
method: 'POST',
|
|
3666
|
+
url: '/api/v1/{region}/bean/nlp/process',
|
|
2704
3667
|
path: {
|
|
2705
|
-
|
|
3668
|
+
region: data.region
|
|
2706
3669
|
},
|
|
2707
3670
|
body: data.requestBody,
|
|
2708
3671
|
mediaType: 'application/json',
|
|
2709
3672
|
errors: {
|
|
2710
|
-
|
|
3673
|
+
400: 'Invalid input',
|
|
3674
|
+
401: 'Unauthorized'
|
|
2711
3675
|
}
|
|
2712
3676
|
});
|
|
2713
3677
|
}
|
|
2714
3678
|
|
|
2715
3679
|
/**
|
|
2716
|
-
*
|
|
3680
|
+
* Clear dialogue session
|
|
3681
|
+
* Clear the current NLP dialogue session. Use this to cancel an ongoing multi-turn dialogue.
|
|
2717
3682
|
* @param data The data for the request.
|
|
2718
|
-
* @param data.
|
|
2719
|
-
* @
|
|
3683
|
+
* @param data.region Region code for tenant context
|
|
3684
|
+
* @param data.sessionId Specific session ID to clear (defaults to user session)
|
|
3685
|
+
* @returns void Session cleared successfully
|
|
2720
3686
|
* @throws ApiError
|
|
2721
3687
|
*/
|
|
2722
|
-
public static
|
|
2723
|
-
data:
|
|
2724
|
-
): CancelablePromise<
|
|
3688
|
+
public static nlpControllerClearSession(
|
|
3689
|
+
data: NlpControllerClearSessionData
|
|
3690
|
+
): CancelablePromise<NlpControllerClearSessionResponse> {
|
|
2725
3691
|
return __request(OpenAPI, {
|
|
2726
3692
|
method: 'DELETE',
|
|
2727
|
-
url: '/api/v1/bean/
|
|
3693
|
+
url: '/api/v1/{region}/bean/nlp/session',
|
|
2728
3694
|
path: {
|
|
2729
|
-
|
|
3695
|
+
region: data.region
|
|
3696
|
+
},
|
|
3697
|
+
query: {
|
|
3698
|
+
sessionId: data.sessionId
|
|
2730
3699
|
},
|
|
2731
3700
|
errors: {
|
|
2732
|
-
|
|
3701
|
+
401: 'Unauthorized'
|
|
2733
3702
|
}
|
|
2734
3703
|
});
|
|
2735
3704
|
}
|
|
2736
|
-
}
|
|
2737
3705
|
|
|
2738
|
-
export class ProviderSyncService {
|
|
2739
3706
|
/**
|
|
2740
|
-
*
|
|
2741
|
-
*
|
|
2742
|
-
* Accepts raw transactions from external financial data providers, transforms them to Beancount format, and processes them through the ingestion pipeline.
|
|
2743
|
-
*
|
|
2744
|
-
* **Supported Providers:**
|
|
2745
|
-
* - **plaid**: Plaid API (US, Canada, Europe)
|
|
2746
|
-
* - **teller**: Teller API (US)
|
|
2747
|
-
* - **truelayer**: TrueLayer Open Banking (UK, Europe)
|
|
2748
|
-
* - **gocardless**: GoCardless Bank Account Data (Europe)
|
|
2749
|
-
* - **simplefin**: SimpleFIN (Self-hosted)
|
|
2750
|
-
* - **yodlee**: Yodlee (Global)
|
|
2751
|
-
* - **beancount-direct**: Beancount format transactions
|
|
2752
|
-
* - **parsed-bill**: Client-side parsed bill transactions
|
|
2753
|
-
*
|
|
2754
|
-
* **Processing Flow:**
|
|
2755
|
-
* 1. Transform raw data via provider adapter
|
|
2756
|
-
* 2. Validate transaction format
|
|
2757
|
-
* 3. Deduplicate using originalId
|
|
2758
|
-
* 4. Classify using rule engine
|
|
2759
|
-
* 5. Route low-confidence to Review Center
|
|
2760
|
-
* 6. Persist validated transactions
|
|
2761
|
-
*
|
|
3707
|
+
* Get current session state
|
|
3708
|
+
* Get the current NLP dialogue session state. Useful for debugging and displaying session context in UI.
|
|
2762
3709
|
* @param data The data for the request.
|
|
2763
|
-
* @param data.
|
|
2764
|
-
* @param data.
|
|
2765
|
-
* @
|
|
2766
|
-
* @returns ProviderSyncResponseDto Sync completed successfully
|
|
3710
|
+
* @param data.region Region code for tenant context
|
|
3711
|
+
* @param data.sessionId Specific session ID to get (defaults to user session)
|
|
3712
|
+
* @returns unknown Current session state (or null if no active session)
|
|
2767
3713
|
* @throws ApiError
|
|
2768
3714
|
*/
|
|
2769
|
-
public static
|
|
2770
|
-
data:
|
|
2771
|
-
): CancelablePromise<
|
|
3715
|
+
public static nlpControllerGetSession(
|
|
3716
|
+
data: NlpControllerGetSessionData
|
|
3717
|
+
): CancelablePromise<NlpControllerGetSessionResponse> {
|
|
2772
3718
|
return __request(OpenAPI, {
|
|
2773
|
-
method: '
|
|
2774
|
-
url: '/api/v1/{region}/bean/
|
|
3719
|
+
method: 'GET',
|
|
3720
|
+
url: '/api/v1/{region}/bean/nlp/session',
|
|
2775
3721
|
path: {
|
|
2776
|
-
providerName: data.providerName,
|
|
2777
3722
|
region: data.region
|
|
2778
3723
|
},
|
|
2779
|
-
|
|
2780
|
-
|
|
3724
|
+
query: {
|
|
3725
|
+
sessionId: data.sessionId
|
|
3726
|
+
},
|
|
2781
3727
|
errors: {
|
|
2782
|
-
|
|
2783
|
-
401: 'Missing or invalid authentication',
|
|
2784
|
-
404: 'Provider not supported'
|
|
3728
|
+
401: 'Unauthorized'
|
|
2785
3729
|
}
|
|
2786
3730
|
});
|
|
2787
3731
|
}
|
|
3732
|
+
}
|
|
2788
3733
|
|
|
3734
|
+
export class BeanPlatformsService {
|
|
2789
3735
|
/**
|
|
2790
|
-
* Get
|
|
2791
|
-
*
|
|
2792
|
-
* @param data The data for the request.
|
|
2793
|
-
* @param data.region Region code for tenant context
|
|
2794
|
-
* @returns SupportedProvidersResponseDto List of supported providers
|
|
3736
|
+
* Get all platforms with statistics
|
|
3737
|
+
* @returns unknown List of platforms with binding and account counts
|
|
2795
3738
|
* @throws ApiError
|
|
2796
3739
|
*/
|
|
2797
|
-
public static
|
|
2798
|
-
data: ProviderSyncControllerGetSupportedProvidersData
|
|
2799
|
-
): CancelablePromise<ProviderSyncControllerGetSupportedProvidersResponse> {
|
|
3740
|
+
public static platformControllerFindAll(): CancelablePromise<PlatformControllerFindAllResponse> {
|
|
2800
3741
|
return __request(OpenAPI, {
|
|
2801
3742
|
method: 'GET',
|
|
2802
|
-
url: '/api/v1/
|
|
2803
|
-
|
|
2804
|
-
|
|
2805
|
-
|
|
3743
|
+
url: '/api/v1/bean/platforms'
|
|
3744
|
+
});
|
|
3745
|
+
}
|
|
3746
|
+
|
|
3747
|
+
/**
|
|
3748
|
+
* Create a new platform
|
|
3749
|
+
* @param data The data for the request.
|
|
3750
|
+
* @param data.requestBody
|
|
3751
|
+
* @returns unknown Platform created successfully
|
|
3752
|
+
* @throws ApiError
|
|
3753
|
+
*/
|
|
3754
|
+
public static platformControllerCreate(
|
|
3755
|
+
data: PlatformControllerCreateData
|
|
3756
|
+
): CancelablePromise<PlatformControllerCreateResponse> {
|
|
3757
|
+
return __request(OpenAPI, {
|
|
3758
|
+
method: 'POST',
|
|
3759
|
+
url: '/api/v1/bean/platforms',
|
|
3760
|
+
body: data.requestBody,
|
|
3761
|
+
mediaType: 'application/json',
|
|
2806
3762
|
errors: {
|
|
2807
|
-
|
|
3763
|
+
409: 'Platform already exists'
|
|
2808
3764
|
}
|
|
2809
3765
|
});
|
|
2810
3766
|
}
|
|
2811
3767
|
|
|
2812
3768
|
/**
|
|
2813
|
-
*
|
|
2814
|
-
* Returns whether a specific provider is supported.
|
|
3769
|
+
* Get platform list for current user
|
|
2815
3770
|
* @param data The data for the request.
|
|
2816
|
-
* @param data.
|
|
2817
|
-
* @
|
|
2818
|
-
* @returns unknown Provider support status
|
|
3771
|
+
* @param data.region Region code (ISO 3166-1 alpha-2) that biases within-type-bucket ordering (local-region platforms first). Case-insensitive — stored/compared UPPERCASE ("cn" == "CN").
|
|
3772
|
+
* @returns PlatformListItemDto List of platforms with user binding status
|
|
2819
3773
|
* @throws ApiError
|
|
2820
3774
|
*/
|
|
2821
|
-
public static
|
|
2822
|
-
data:
|
|
2823
|
-
): CancelablePromise<
|
|
3775
|
+
public static platformControllerGetPlatformList(
|
|
3776
|
+
data: PlatformControllerGetPlatformListData = {}
|
|
3777
|
+
): CancelablePromise<PlatformControllerGetPlatformListResponse> {
|
|
2824
3778
|
return __request(OpenAPI, {
|
|
2825
3779
|
method: 'GET',
|
|
2826
|
-
url: '/api/v1/
|
|
2827
|
-
|
|
2828
|
-
providerName: data.providerName,
|
|
3780
|
+
url: '/api/v1/bean/platforms/list',
|
|
3781
|
+
query: {
|
|
2829
3782
|
region: data.region
|
|
2830
|
-
},
|
|
2831
|
-
errors: {
|
|
2832
|
-
401: 'Missing or invalid authentication'
|
|
2833
3783
|
}
|
|
2834
3784
|
});
|
|
2835
3785
|
}
|
|
2836
|
-
}
|
|
2837
3786
|
|
|
2838
|
-
export class ImportTelemetryService {
|
|
2839
3787
|
/**
|
|
2840
|
-
*
|
|
3788
|
+
* Match platforms by name or alias
|
|
2841
3789
|
* @param data The data for the request.
|
|
2842
|
-
* @param data.
|
|
2843
|
-
* @param data.
|
|
2844
|
-
* @returns
|
|
3790
|
+
* @param data.q Search query — Chinese name, English name, or abbreviation
|
|
3791
|
+
* @param data.region Region code (ISO 3166-1 alpha-2) that biases within-tier ordering (local-region platforms first); also the intended categoryOverrides key. Case-insensitive — stored/compared UPPERCASE ("cn" == "CN").
|
|
3792
|
+
* @returns PlatformMatchResponseDto Matching platforms with overall match type and truncation flag
|
|
2845
3793
|
* @throws ApiError
|
|
2846
3794
|
*/
|
|
2847
|
-
public static
|
|
2848
|
-
data:
|
|
2849
|
-
): CancelablePromise<
|
|
3795
|
+
public static platformControllerMatchPlatforms(
|
|
3796
|
+
data: PlatformControllerMatchPlatformsData
|
|
3797
|
+
): CancelablePromise<PlatformControllerMatchPlatformsResponse> {
|
|
2850
3798
|
return __request(OpenAPI, {
|
|
2851
|
-
method: '
|
|
2852
|
-
url: '/api/v1/
|
|
2853
|
-
|
|
3799
|
+
method: 'GET',
|
|
3800
|
+
url: '/api/v1/bean/platforms/match',
|
|
3801
|
+
query: {
|
|
3802
|
+
q: data.q,
|
|
2854
3803
|
region: data.region
|
|
2855
|
-
},
|
|
2856
|
-
body: data.requestBody,
|
|
2857
|
-
mediaType: 'application/json',
|
|
2858
|
-
errors: {
|
|
2859
|
-
401: 'Unauthorized'
|
|
2860
3804
|
}
|
|
2861
3805
|
});
|
|
2862
3806
|
}
|
|
2863
|
-
}
|
|
2864
3807
|
|
|
2865
|
-
export class BeanNlpService {
|
|
2866
3808
|
/**
|
|
2867
|
-
*
|
|
2868
|
-
* Parse natural language text (Chinese/English) describing a transaction. Supports multi-turn dialogue for collecting missing information. When confidence < 0.75, returns "confirm" action requiring user verification. User can reply with confirmation words (确认/yes/ok) or provide corrections. Examples: "yesterday Starbucks spent 35 yuan", "today lunch 28 yuan", "spent $50 at Walmart"
|
|
3809
|
+
* Get the region and candidate account standards for a platform
|
|
2869
3810
|
* @param data The data for the request.
|
|
2870
|
-
* @param data.
|
|
2871
|
-
* @param data.
|
|
2872
|
-
* @
|
|
3811
|
+
* @param data.id Platform ID (from a match result)
|
|
3812
|
+
* @param data.region Region code (ISO 3166-1 alpha-2, case-insensitive). Required for global platforms (countryCode null) — resolved as their template region; ignored when the platform has its own countryCode.
|
|
3813
|
+
* @param data.type Filter templates by account type (path first segment)
|
|
3814
|
+
* @returns PlatformStandardsResponseDto Resolved region plus the merged account-standard catalog of that region (groupable by productCategory client-side)
|
|
2873
3815
|
* @throws ApiError
|
|
2874
3816
|
*/
|
|
2875
|
-
public static
|
|
2876
|
-
data:
|
|
2877
|
-
): CancelablePromise<
|
|
3817
|
+
public static platformControllerGetPlatformStandards(
|
|
3818
|
+
data: PlatformControllerGetPlatformStandardsData
|
|
3819
|
+
): CancelablePromise<PlatformControllerGetPlatformStandardsResponse> {
|
|
2878
3820
|
return __request(OpenAPI, {
|
|
2879
|
-
method: '
|
|
2880
|
-
url: '/api/v1/{
|
|
3821
|
+
method: 'GET',
|
|
3822
|
+
url: '/api/v1/bean/platforms/{id}/standards',
|
|
2881
3823
|
path: {
|
|
2882
|
-
|
|
3824
|
+
id: data.id
|
|
2883
3825
|
},
|
|
2884
|
-
|
|
2885
|
-
|
|
2886
|
-
|
|
2887
|
-
400: 'Invalid input',
|
|
2888
|
-
401: 'Unauthorized'
|
|
3826
|
+
query: {
|
|
3827
|
+
region: data.region,
|
|
3828
|
+
type: data.type
|
|
2889
3829
|
}
|
|
2890
3830
|
});
|
|
2891
3831
|
}
|
|
2892
3832
|
|
|
2893
3833
|
/**
|
|
2894
|
-
*
|
|
2895
|
-
* Clear the current NLP dialogue session. Use this to cancel an ongoing multi-turn dialogue.
|
|
3834
|
+
* Update a platform
|
|
2896
3835
|
* @param data The data for the request.
|
|
2897
|
-
* @param data.
|
|
2898
|
-
* @param data.
|
|
2899
|
-
* @returns
|
|
3836
|
+
* @param data.id Platform ID
|
|
3837
|
+
* @param data.requestBody
|
|
3838
|
+
* @returns unknown Platform updated successfully
|
|
2900
3839
|
* @throws ApiError
|
|
2901
3840
|
*/
|
|
2902
|
-
public static
|
|
2903
|
-
data:
|
|
2904
|
-
): CancelablePromise<
|
|
3841
|
+
public static platformControllerUpdate(
|
|
3842
|
+
data: PlatformControllerUpdateData
|
|
3843
|
+
): CancelablePromise<PlatformControllerUpdateResponse> {
|
|
2905
3844
|
return __request(OpenAPI, {
|
|
2906
|
-
method: '
|
|
2907
|
-
url: '/api/v1/
|
|
3845
|
+
method: 'PUT',
|
|
3846
|
+
url: '/api/v1/bean/platforms/{id}',
|
|
2908
3847
|
path: {
|
|
2909
|
-
|
|
2910
|
-
},
|
|
2911
|
-
query: {
|
|
2912
|
-
sessionId: data.sessionId
|
|
3848
|
+
id: data.id
|
|
2913
3849
|
},
|
|
3850
|
+
body: data.requestBody,
|
|
3851
|
+
mediaType: 'application/json',
|
|
2914
3852
|
errors: {
|
|
2915
|
-
|
|
3853
|
+
404: 'Platform not found'
|
|
2916
3854
|
}
|
|
2917
3855
|
});
|
|
2918
3856
|
}
|
|
2919
3857
|
|
|
2920
3858
|
/**
|
|
2921
|
-
*
|
|
2922
|
-
* Get the current NLP dialogue session state. Useful for debugging and displaying session context in UI.
|
|
3859
|
+
* Delete a platform
|
|
2923
3860
|
* @param data The data for the request.
|
|
2924
|
-
* @param data.
|
|
2925
|
-
* @
|
|
2926
|
-
* @returns unknown Current session state (or null if no active session)
|
|
3861
|
+
* @param data.id Platform ID
|
|
3862
|
+
* @returns void Platform deleted successfully
|
|
2927
3863
|
* @throws ApiError
|
|
2928
3864
|
*/
|
|
2929
|
-
public static
|
|
2930
|
-
data:
|
|
2931
|
-
): CancelablePromise<
|
|
3865
|
+
public static platformControllerDelete(
|
|
3866
|
+
data: PlatformControllerDeleteData
|
|
3867
|
+
): CancelablePromise<PlatformControllerDeleteResponse> {
|
|
2932
3868
|
return __request(OpenAPI, {
|
|
2933
|
-
method: '
|
|
2934
|
-
url: '/api/v1/
|
|
3869
|
+
method: 'DELETE',
|
|
3870
|
+
url: '/api/v1/bean/platforms/{id}',
|
|
2935
3871
|
path: {
|
|
2936
|
-
|
|
2937
|
-
},
|
|
2938
|
-
query: {
|
|
2939
|
-
sessionId: data.sessionId
|
|
3872
|
+
id: data.id
|
|
2940
3873
|
},
|
|
2941
3874
|
errors: {
|
|
2942
|
-
|
|
3875
|
+
404: 'Platform not found'
|
|
2943
3876
|
}
|
|
2944
3877
|
});
|
|
2945
3878
|
}
|
|
@@ -2980,6 +3913,7 @@ export class DashboardService {
|
|
|
2980
3913
|
* @param data.region Region code for tenant context
|
|
2981
3914
|
* @param data.groupBy Grouping strategy
|
|
2982
3915
|
* @param data.date Date for balance calculation (ISO 8601 format)
|
|
3916
|
+
* @param data.accountId Scope to a single account (only valid with groupBy=holdingAssetClass, ADR-0105 §6)
|
|
2983
3917
|
* @returns unknown Accounts retrieved successfully. Response type depends on groupBy parameter.
|
|
2984
3918
|
* @throws ApiError
|
|
2985
3919
|
*/
|
|
@@ -2994,7 +3928,8 @@ export class DashboardService {
|
|
|
2994
3928
|
},
|
|
2995
3929
|
query: {
|
|
2996
3930
|
groupBy: data.groupBy,
|
|
2997
|
-
date: data.date
|
|
3931
|
+
date: data.date,
|
|
3932
|
+
accountId: data.accountId
|
|
2998
3933
|
},
|
|
2999
3934
|
errors: {
|
|
3000
3935
|
401: 'User not authenticated'
|
|
@@ -3029,124 +3964,69 @@ export class DashboardService {
|
|
|
3029
3964
|
}
|
|
3030
3965
|
});
|
|
3031
3966
|
}
|
|
3032
|
-
}
|
|
3033
3967
|
|
|
3034
|
-
export class ReportingService {
|
|
3035
3968
|
/**
|
|
3036
|
-
* Get
|
|
3037
|
-
*
|
|
3038
|
-
* Returns time series data of portfolio net worth.
|
|
3039
|
-
*
|
|
3040
|
-
* **Multi-currency Support:**
|
|
3041
|
-
* - `series[].byCurrency` - Currency breakdown for each data point
|
|
3042
|
-
* - `byCurrency` - Separate time series grouped by currency
|
|
3043
|
-
* - `warnings` - Exchange rate warnings if conversion failed
|
|
3044
|
-
*
|
|
3045
|
-
* **Parameters:**
|
|
3046
|
-
* - `period`: Time period (1m, 3m, 6m, 1y)
|
|
3047
|
-
* - `granularity`: Data granularity (day, week, month)
|
|
3048
|
-
*
|
|
3969
|
+
* Get expenses/income grouped by functional category
|
|
3970
|
+
* Returns amounts pre-aggregated by functional category (account-path Group segment) with server-side multi-currency conversion. flow=expense (default) aggregates ^Expenses: accounts; flow=income aggregates ^Income: accounts (issue #518)
|
|
3049
3971
|
* @param data The data for the request.
|
|
3050
3972
|
* @param data.region Region code for tenant context
|
|
3051
|
-
* @param data.
|
|
3052
|
-
* @param data.
|
|
3053
|
-
* @
|
|
3973
|
+
* @param data.groupBy Grouping strategy
|
|
3974
|
+
* @param data.period Time window (1m = current calendar month)
|
|
3975
|
+
* @param data.flow Account root to aggregate (expense → ^Expenses:, income → ^Income:)
|
|
3976
|
+
* @returns ExpensesByCategoryResponseDto Expenses retrieved successfully
|
|
3054
3977
|
* @throws ApiError
|
|
3055
3978
|
*/
|
|
3056
|
-
public static
|
|
3057
|
-
data:
|
|
3058
|
-
): CancelablePromise<
|
|
3979
|
+
public static dashboardControllerGetExpenses(
|
|
3980
|
+
data: DashboardControllerGetExpensesData
|
|
3981
|
+
): CancelablePromise<DashboardControllerGetExpensesResponse> {
|
|
3059
3982
|
return __request(OpenAPI, {
|
|
3060
3983
|
method: 'GET',
|
|
3061
|
-
url: '/api/v1/{region}/
|
|
3984
|
+
url: '/api/v1/{region}/dashboard/expenses',
|
|
3062
3985
|
path: {
|
|
3063
3986
|
region: data.region
|
|
3064
3987
|
},
|
|
3065
3988
|
query: {
|
|
3989
|
+
groupBy: data.groupBy,
|
|
3066
3990
|
period: data.period,
|
|
3067
|
-
|
|
3991
|
+
flow: data.flow
|
|
3068
3992
|
},
|
|
3069
3993
|
errors: {
|
|
3994
|
+
400: 'Invalid groupBy or period',
|
|
3070
3995
|
401: 'User not authenticated'
|
|
3071
3996
|
}
|
|
3072
3997
|
});
|
|
3073
3998
|
}
|
|
3999
|
+
}
|
|
3074
4000
|
|
|
4001
|
+
export class InvestmentService {
|
|
3075
4002
|
/**
|
|
3076
|
-
*
|
|
3077
|
-
*
|
|
3078
|
-
* Manually generate a portfolio snapshot for a specific date.
|
|
3079
|
-
*
|
|
3080
|
-
* **Multi-currency Support:**
|
|
3081
|
-
* - Fetches balances grouped by currency
|
|
3082
|
-
* - Uses user's baseCurrency setting for conversion
|
|
3083
|
-
* - Stores exchange rates and warnings
|
|
3084
|
-
*
|
|
3085
|
-
* **Use Cases:**
|
|
3086
|
-
* - Testing snapshot generation
|
|
3087
|
-
* - Force regeneration after data correction
|
|
3088
|
-
* - Initial setup for new users
|
|
3089
|
-
*
|
|
4003
|
+
* Get per-holding unrealized + realized P&L
|
|
4004
|
+
* Average-cost unrealized P&L per account × commodity, plus cumulative realized P&L on sold lots (method = FIFO | average, default average).
|
|
3090
4005
|
* @param data The data for the request.
|
|
3091
4006
|
* @param data.region Region code for tenant context
|
|
3092
|
-
* @param data.
|
|
3093
|
-
* @
|
|
4007
|
+
* @param data.asOf As-of date (ISO 8601), defaults to today
|
|
4008
|
+
* @param data.accountId Scope to a single account
|
|
4009
|
+
* @param data.method Realized-P&L lot-matching method (default average). Does not affect the average-cost unrealized basis.
|
|
4010
|
+
* @returns HoldingPnlResponseDto Holding P&L retrieved successfully
|
|
3094
4011
|
* @throws ApiError
|
|
3095
4012
|
*/
|
|
3096
|
-
public static
|
|
3097
|
-
data:
|
|
3098
|
-
): CancelablePromise<
|
|
4013
|
+
public static holdingPnlControllerGetHoldingPnl(
|
|
4014
|
+
data: HoldingPnlControllerGetHoldingPnlData
|
|
4015
|
+
): CancelablePromise<HoldingPnlControllerGetHoldingPnlResponse> {
|
|
3099
4016
|
return __request(OpenAPI, {
|
|
3100
|
-
method: '
|
|
3101
|
-
url: '/api/v1/{region}/
|
|
4017
|
+
method: 'GET',
|
|
4018
|
+
url: '/api/v1/{region}/investment/holdings/pnl',
|
|
3102
4019
|
path: {
|
|
3103
4020
|
region: data.region
|
|
3104
4021
|
},
|
|
3105
|
-
|
|
3106
|
-
|
|
3107
|
-
|
|
3108
|
-
|
|
3109
|
-
401: 'User not authenticated'
|
|
3110
|
-
}
|
|
3111
|
-
});
|
|
3112
|
-
}
|
|
3113
|
-
|
|
3114
|
-
/**
|
|
3115
|
-
* Backfill portfolio snapshots
|
|
3116
|
-
*
|
|
3117
|
-
* Generate snapshots for a date range (historical data backfill).
|
|
3118
|
-
*
|
|
3119
|
-
* **Multi-currency Support:**
|
|
3120
|
-
* - Each snapshot includes multi-currency data
|
|
3121
|
-
* - Uses exchange rates available at generation time
|
|
3122
|
-
* - Warnings stored for missing exchange rates
|
|
3123
|
-
*
|
|
3124
|
-
* **Best Practices:**
|
|
3125
|
-
* - Use for initial setup after account configuration
|
|
3126
|
-
* - Run during low-traffic periods for large date ranges
|
|
3127
|
-
* - Existing snapshots are skipped (not regenerated)
|
|
3128
|
-
*
|
|
3129
|
-
* @param data The data for the request.
|
|
3130
|
-
* @param data.region Region code for tenant context
|
|
3131
|
-
* @param data.requestBody
|
|
3132
|
-
* @returns BackfillSnapshotsResponse Backfill completed successfully
|
|
3133
|
-
* @throws ApiError
|
|
3134
|
-
*/
|
|
3135
|
-
public static reportingControllerBackfillSnapshots(
|
|
3136
|
-
data: ReportingControllerBackfillSnapshotsData
|
|
3137
|
-
): CancelablePromise<ReportingControllerBackfillSnapshotsResponse> {
|
|
3138
|
-
return __request(OpenAPI, {
|
|
3139
|
-
method: 'POST',
|
|
3140
|
-
url: '/api/v1/{region}/reporting/snapshots/backfill',
|
|
3141
|
-
path: {
|
|
3142
|
-
region: data.region
|
|
4022
|
+
query: {
|
|
4023
|
+
asOf: data.asOf,
|
|
4024
|
+
accountId: data.accountId,
|
|
4025
|
+
method: data.method
|
|
3143
4026
|
},
|
|
3144
|
-
body: data.requestBody,
|
|
3145
|
-
mediaType: 'application/json',
|
|
3146
4027
|
errors: {
|
|
3147
|
-
400: 'Invalid date format or
|
|
3148
|
-
401: 'User not authenticated'
|
|
3149
|
-
409: 'Backfill already in progress for this user'
|
|
4028
|
+
400: 'Invalid asOf format/value/future date, invalid accountId format, or unsupported method',
|
|
4029
|
+
401: 'User not authenticated'
|
|
3150
4030
|
}
|
|
3151
4031
|
});
|
|
3152
4032
|
}
|
|
@@ -3175,7 +4055,7 @@ export class AuthService {
|
|
|
3175
4055
|
* Anonymous login with access token
|
|
3176
4056
|
* @param data The data for the request.
|
|
3177
4057
|
* @param data.requestBody
|
|
3178
|
-
* @returns
|
|
4058
|
+
* @returns AnonymousLoginResponseDto Login successful
|
|
3179
4059
|
* @throws ApiError
|
|
3180
4060
|
*/
|
|
3181
4061
|
public static authControllerAccessTokenLogin(
|
|
@@ -3193,15 +4073,52 @@ export class AuthService {
|
|
|
3193
4073
|
}
|
|
3194
4074
|
}
|
|
3195
4075
|
|
|
3196
|
-
export class
|
|
4076
|
+
export class CommunityService {
|
|
4077
|
+
/**
|
|
4078
|
+
* Relay a sanitized parser-contribution payload
|
|
4079
|
+
* A server-side bot re-sanitizes the payload and opens an issue on the target repository; the issue URL is returned. The payload is never persisted or logged (forward-and-drop).
|
|
4080
|
+
* @param data The data for the request.
|
|
4081
|
+
* @param data.region Region code for tenant context (routing only; the institution region rides in the payload meta)
|
|
4082
|
+
* @param data.requestBody
|
|
4083
|
+
* @returns ParserContributionRelayResponseDto Issue created by the bot
|
|
4084
|
+
* @throws ApiError
|
|
4085
|
+
*/
|
|
4086
|
+
public static parserContributionControllerCreate(
|
|
4087
|
+
data: ParserContributionControllerCreateData
|
|
4088
|
+
): CancelablePromise<ParserContributionControllerCreateResponse> {
|
|
4089
|
+
return __request(OpenAPI, {
|
|
4090
|
+
method: 'POST',
|
|
4091
|
+
url: '/api/v1/{region}/community/parser-contributions',
|
|
4092
|
+
path: {
|
|
4093
|
+
region: data.region
|
|
4094
|
+
},
|
|
4095
|
+
body: data.requestBody,
|
|
4096
|
+
mediaType: 'application/json',
|
|
4097
|
+
errors: {
|
|
4098
|
+
401: 'Unauthorized',
|
|
4099
|
+
422: 'Validation failed (institution slug, empty samples, row/cell size limits)',
|
|
4100
|
+
429: 'Rate limited (5 submissions per user per hour)',
|
|
4101
|
+
501: 'Relay not configured on this deployment — clients fall back to the clipboard flow',
|
|
4102
|
+
502: 'GitHub bot failure (upstream), safe to retry'
|
|
4103
|
+
}
|
|
4104
|
+
});
|
|
4105
|
+
}
|
|
4106
|
+
}
|
|
4107
|
+
|
|
4108
|
+
export class AdminCacheService {
|
|
3197
4109
|
/**
|
|
3198
|
-
*
|
|
4110
|
+
* Flush entire cache (L1 + L2)
|
|
4111
|
+
* Clears ALL cache entries across ALL namespaces and users. Use only for emergency cache corruption recovery, maintenance-window refresh, or development resets.
|
|
4112
|
+
* @returns unknown Cache flushed successfully
|
|
3199
4113
|
* @throws ApiError
|
|
3200
4114
|
*/
|
|
3201
4115
|
public static cacheControllerFlushCache(): CancelablePromise<CacheControllerFlushCacheResponse> {
|
|
3202
4116
|
return __request(OpenAPI, {
|
|
3203
4117
|
method: 'POST',
|
|
3204
|
-
url: '/api/v1/cache/flush'
|
|
4118
|
+
url: '/api/v1/cache/flush',
|
|
4119
|
+
errors: {
|
|
4120
|
+
403: 'Admin access required'
|
|
4121
|
+
}
|
|
3205
4122
|
});
|
|
3206
4123
|
}
|
|
3207
4124
|
}
|
|
@@ -3362,3 +4279,53 @@ export class InfoService {
|
|
|
3362
4279
|
});
|
|
3363
4280
|
}
|
|
3364
4281
|
}
|
|
4282
|
+
|
|
4283
|
+
export class MarketDataService {
|
|
4284
|
+
/**
|
|
4285
|
+
* Search market symbols by name or code
|
|
4286
|
+
* Ranked search over the openbb catalog. Empty `q` returns [].
|
|
4287
|
+
* @param data The data for the request.
|
|
4288
|
+
* @param data.q Search term — matched against symbol and instrument name. Empty string returns [].
|
|
4289
|
+
* @param data.limit Maximum number of results (clamped 1..50)
|
|
4290
|
+
* @param data.exchange Filter by exchange code (e.g. US, HK, SS, SZ)
|
|
4291
|
+
* @param data.assetType Filter by OpenBB asset_type (e.g. stock, etf)
|
|
4292
|
+
* @returns SymbolSearchResultDto Ranked search results
|
|
4293
|
+
* @throws ApiError
|
|
4294
|
+
*/
|
|
4295
|
+
public static symbolControllerSearch(
|
|
4296
|
+
data: SymbolControllerSearchData
|
|
4297
|
+
): CancelablePromise<SymbolControllerSearchResponse> {
|
|
4298
|
+
return __request(OpenAPI, {
|
|
4299
|
+
method: 'GET',
|
|
4300
|
+
url: '/api/v1/market/symbols/search',
|
|
4301
|
+
query: {
|
|
4302
|
+
q: data.q,
|
|
4303
|
+
limit: data.limit,
|
|
4304
|
+
exchange: data.exchange,
|
|
4305
|
+
assetType: data.assetType
|
|
4306
|
+
}
|
|
4307
|
+
});
|
|
4308
|
+
}
|
|
4309
|
+
|
|
4310
|
+
/**
|
|
4311
|
+
* Get a market symbol quote
|
|
4312
|
+
* @param data The data for the request.
|
|
4313
|
+
* @param data.symbol
|
|
4314
|
+
* @returns SymbolQuoteDto Symbol quote
|
|
4315
|
+
* @throws ApiError
|
|
4316
|
+
*/
|
|
4317
|
+
public static symbolControllerGetQuote(
|
|
4318
|
+
data: SymbolControllerGetQuoteData
|
|
4319
|
+
): CancelablePromise<SymbolControllerGetQuoteResponse> {
|
|
4320
|
+
return __request(OpenAPI, {
|
|
4321
|
+
method: 'GET',
|
|
4322
|
+
url: '/api/v1/market/symbols/{symbol}/quote',
|
|
4323
|
+
path: {
|
|
4324
|
+
symbol: data.symbol
|
|
4325
|
+
},
|
|
4326
|
+
errors: {
|
|
4327
|
+
404: 'Symbol not found in the openbb catalog'
|
|
4328
|
+
}
|
|
4329
|
+
});
|
|
4330
|
+
}
|
|
4331
|
+
}
|