@firela/api-types 0.0.0-canary.6feee68d → 0.0.0-canary.792fa5f1

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.
@@ -29,6 +29,10 @@ import type {
29
29
  TransactionControllerListResponse,
30
30
  TransactionControllerCreateBatchData,
31
31
  TransactionControllerCreateBatchResponse,
32
+ TransactionControllerCorrectData,
33
+ TransactionControllerCorrectResponse,
34
+ TransactionControllerSuggestTagsData,
35
+ TransactionControllerSuggestTagsResponse,
32
36
  TransactionControllerGetDetailData,
33
37
  TransactionControllerGetDetailResponse,
34
38
  TransactionControllerUpdateData,
@@ -198,6 +202,10 @@ import type {
198
202
  ProviderSyncControllerIsProviderSupportedResponse,
199
203
  TelemetryControllerReportTelemetryData,
200
204
  TelemetryControllerReportTelemetryResponse,
205
+ TelemetryControllerReportCoverageMissData,
206
+ TelemetryControllerReportCoverageMissResponse,
207
+ TelemetryControllerGetCoverageMetricsData,
208
+ TelemetryControllerGetCoverageMetricsResponse,
201
209
  NlpControllerProcessNaturalLanguageData,
202
210
  NlpControllerProcessNaturalLanguageResponse,
203
211
  NlpControllerClearSessionData,
@@ -210,6 +218,20 @@ import type {
210
218
  DashboardControllerGetAccountsResponse,
211
219
  DashboardControllerGetCashFlowData,
212
220
  DashboardControllerGetCashFlowResponse,
221
+ HoldingPnlControllerGetHoldingPnlData,
222
+ HoldingPnlControllerGetHoldingPnlResponse,
223
+ PriceControllerCreateData,
224
+ PriceControllerCreateResponse,
225
+ PriceControllerFindAllData,
226
+ PriceControllerFindAllResponse,
227
+ PriceControllerFindOneData,
228
+ PriceControllerFindOneResponse,
229
+ PriceControllerUpdateData,
230
+ PriceControllerUpdateResponse,
231
+ PriceControllerDeleteData,
232
+ PriceControllerDeleteResponse,
233
+ PriceControllerBulkCreateData,
234
+ PriceControllerBulkCreateResponse,
213
235
  ReportingControllerGetPortfolioTrendsData,
214
236
  ReportingControllerGetPortfolioTrendsResponse,
215
237
  ReportingControllerGenerateSnapshotData,
@@ -603,6 +625,68 @@ export class BeanTransactionsService {
603
625
  });
604
626
  }
605
627
 
628
+ /**
629
+ * Correct (supersede) a transaction
630
+ * Atomically voids the original (SUPERSEDED) and creates a replacement through the full validation pipeline.
631
+ * @param data The data for the request.
632
+ * @param data.id Original transaction ID to correct
633
+ * @param data.region Region code for tenant context
634
+ * @param data.requestBody
635
+ * @returns TransactionDetailDto Corrected transaction created
636
+ * @throws ApiError
637
+ */
638
+ public static transactionControllerCorrect(
639
+ data: TransactionControllerCorrectData
640
+ ): CancelablePromise<TransactionControllerCorrectResponse> {
641
+ return __request(OpenAPI, {
642
+ method: 'POST',
643
+ url: '/api/v1/{region}/bean/transactions/{id}/correct',
644
+ path: {
645
+ id: data.id,
646
+ region: data.region
647
+ },
648
+ body: data.requestBody,
649
+ mediaType: 'application/json',
650
+ errors: {
651
+ 404: 'Original transaction not found',
652
+ 409: 'Original no longer ACTIVE (concurrent modification)',
653
+ 422: 'Pipeline validation failed (does not balance, invalid accounts)'
654
+ }
655
+ });
656
+ }
657
+
658
+ /**
659
+ * Suggest transaction tags
660
+ * Returns distinct tags from the user ACTIVE transactions, sorted by usage, for autocomplete. Optional q performs a case-insensitive prefix match.
661
+ * @param data The data for the request.
662
+ * @param data.region Region code for tenant context
663
+ * @param data.q Prefix match, case-insensitive (max 50 chars)
664
+ * @param data.sort usage (default) or name
665
+ * @param data.limit Max suggestions (1-100, default 10)
666
+ * @returns TagSuggestionsResponseDto Tag suggestions
667
+ * @throws ApiError
668
+ */
669
+ public static transactionControllerSuggestTags(
670
+ data: TransactionControllerSuggestTagsData
671
+ ): CancelablePromise<TransactionControllerSuggestTagsResponse> {
672
+ return __request(OpenAPI, {
673
+ method: 'GET',
674
+ url: '/api/v1/{region}/bean/transactions/tags',
675
+ path: {
676
+ region: data.region
677
+ },
678
+ query: {
679
+ q: data.q,
680
+ sort: data.sort,
681
+ limit: data.limit
682
+ },
683
+ errors: {
684
+ 400: 'Validation failed',
685
+ 401: 'Authentication required'
686
+ }
687
+ });
688
+ }
689
+
606
690
  /**
607
691
  * Get transaction detail
608
692
  * Returns transaction details including all postings
@@ -2695,7 +2779,7 @@ export class ProviderSyncService {
2695
2779
  *
2696
2780
  * @param data The data for the request.
2697
2781
  * @param data.providerName Provider name
2698
- * @param data.region Region code
2782
+ * @param data.region Region code for tenant context
2699
2783
  * @param data.requestBody
2700
2784
  * @returns ProviderSyncResponseDto Sync completed successfully
2701
2785
  * @throws ApiError
@@ -2794,6 +2878,54 @@ export class ImportTelemetryService {
2794
2878
  }
2795
2879
  });
2796
2880
  }
2881
+
2882
+ /**
2883
+ * Receive anonymous zero-hit coverage miss report
2884
+ * @param data The data for the request.
2885
+ * @param data.region Region code for tenant context
2886
+ * @param data.requestBody
2887
+ * @returns unknown Coverage miss report received
2888
+ * @throws ApiError
2889
+ */
2890
+ public static telemetryControllerReportCoverageMiss(
2891
+ data: TelemetryControllerReportCoverageMissData
2892
+ ): CancelablePromise<TelemetryControllerReportCoverageMissResponse> {
2893
+ return __request(OpenAPI, {
2894
+ method: 'POST',
2895
+ url: '/api/v1/{region}/bean/import/parser-coverage-miss',
2896
+ path: {
2897
+ region: data.region
2898
+ },
2899
+ body: data.requestBody,
2900
+ mediaType: 'application/json',
2901
+ errors: {
2902
+ 401: 'Unauthorized'
2903
+ }
2904
+ });
2905
+ }
2906
+
2907
+ /**
2908
+ * Coverage metrics (uncovered format aggregation)
2909
+ * @param data The data for the request.
2910
+ * @param data.region Region code for tenant context
2911
+ * @param data.topN Top-N uncovered formats (default 10)
2912
+ * @returns unknown Coverage metrics
2913
+ * @throws ApiError
2914
+ */
2915
+ public static telemetryControllerGetCoverageMetrics(
2916
+ data: TelemetryControllerGetCoverageMetricsData
2917
+ ): CancelablePromise<TelemetryControllerGetCoverageMetricsResponse> {
2918
+ return __request(OpenAPI, {
2919
+ method: 'GET',
2920
+ url: '/api/v1/{region}/bean/import/parser-coverage-metrics',
2921
+ path: {
2922
+ region: data.region
2923
+ },
2924
+ query: {
2925
+ topN: data.topN
2926
+ }
2927
+ });
2928
+ }
2797
2929
  }
2798
2930
 
2799
2931
  export class BeanNlpService {
@@ -2914,6 +3046,7 @@ export class DashboardService {
2914
3046
  * @param data.region Region code for tenant context
2915
3047
  * @param data.groupBy Grouping strategy
2916
3048
  * @param data.date Date for balance calculation (ISO 8601 format)
3049
+ * @param data.accountId Scope to a single account (only valid with groupBy=holdingAssetClass, ADR-0105 §6)
2917
3050
  * @returns unknown Accounts retrieved successfully. Response type depends on groupBy parameter.
2918
3051
  * @throws ApiError
2919
3052
  */
@@ -2928,7 +3061,8 @@ export class DashboardService {
2928
3061
  },
2929
3062
  query: {
2930
3063
  groupBy: data.groupBy,
2931
- date: data.date
3064
+ date: data.date,
3065
+ accountId: data.accountId
2932
3066
  },
2933
3067
  errors: {
2934
3068
  401: 'User not authenticated'
@@ -2965,6 +3099,207 @@ export class DashboardService {
2965
3099
  }
2966
3100
  }
2967
3101
 
3102
+ export class InvestmentService {
3103
+ /**
3104
+ * Get per-holding unrealized + realized P&L
3105
+ * Average-cost unrealized P&L per account × commodity, plus cumulative realized P&L on sold lots (method = FIFO | average, default average).
3106
+ * @param data The data for the request.
3107
+ * @param data.region Region code for tenant context
3108
+ * @param data.asOf As-of date (ISO 8601), defaults to today
3109
+ * @param data.accountId Scope to a single account
3110
+ * @param data.method Realized-P&L lot-matching method (default average). Does not affect the average-cost unrealized basis.
3111
+ * @returns HoldingPnlResponseDto Holding P&L retrieved successfully
3112
+ * @throws ApiError
3113
+ */
3114
+ public static holdingPnlControllerGetHoldingPnl(
3115
+ data: HoldingPnlControllerGetHoldingPnlData
3116
+ ): CancelablePromise<HoldingPnlControllerGetHoldingPnlResponse> {
3117
+ return __request(OpenAPI, {
3118
+ method: 'GET',
3119
+ url: '/api/v1/{region}/investment/holdings/pnl',
3120
+ path: {
3121
+ region: data.region
3122
+ },
3123
+ query: {
3124
+ asOf: data.asOf,
3125
+ accountId: data.accountId,
3126
+ method: data.method
3127
+ },
3128
+ errors: {
3129
+ 400: 'Invalid asOf format/value/future date, invalid accountId format, or unsupported method',
3130
+ 401: 'User not authenticated'
3131
+ }
3132
+ });
3133
+ }
3134
+ }
3135
+
3136
+ export class BeanPricesService {
3137
+ /**
3138
+ * Create a new price
3139
+ * Creates a new price entry for the authenticated user
3140
+ * @param data The data for the request.
3141
+ * @param data.region Region code for tenant context
3142
+ * @param data.requestBody
3143
+ * @returns PriceResponseDto Price created successfully
3144
+ * @throws ApiError
3145
+ */
3146
+ public static priceControllerCreate(
3147
+ data: PriceControllerCreateData
3148
+ ): CancelablePromise<PriceControllerCreateResponse> {
3149
+ return __request(OpenAPI, {
3150
+ method: 'POST',
3151
+ url: '/api/v1/{region}/bean/prices',
3152
+ path: {
3153
+ region: data.region
3154
+ },
3155
+ body: data.requestBody,
3156
+ mediaType: 'application/json',
3157
+ errors: {
3158
+ 404: 'Currency or quoteCurrency commodity not found',
3159
+ 409: 'Price already exists for this currency pair and date'
3160
+ }
3161
+ });
3162
+ }
3163
+
3164
+ /**
3165
+ * List user prices
3166
+ * Returns all price entries for the authenticated user with optional filtering
3167
+ * @param data The data for the request.
3168
+ * @param data.region Region code for tenant context
3169
+ * @param data.currency Filter by currency (e.g., BTC, AAPL, USD)
3170
+ * @param data.quoteCurrency Filter by quote currency (pricing currency, e.g., USD, CNY)
3171
+ * @param data.dateFrom Filter prices from this date (ISO 8601 format)
3172
+ * @param data.dateTo Filter prices to this date (ISO 8601 format)
3173
+ * @param data.search Search term for currency or quoteCurrency (case-insensitive partial match)
3174
+ * @param data.page Page number for pagination (default: 1)
3175
+ * @param data.limit Number of items per page (default: 20, max: 100)
3176
+ * @returns PriceListResponseDto Prices retrieved successfully
3177
+ * @throws ApiError
3178
+ */
3179
+ public static priceControllerFindAll(
3180
+ data: PriceControllerFindAllData
3181
+ ): CancelablePromise<PriceControllerFindAllResponse> {
3182
+ return __request(OpenAPI, {
3183
+ method: 'GET',
3184
+ url: '/api/v1/{region}/bean/prices',
3185
+ path: {
3186
+ region: data.region
3187
+ },
3188
+ query: {
3189
+ currency: data.currency,
3190
+ quoteCurrency: data.quoteCurrency,
3191
+ dateFrom: data.dateFrom,
3192
+ dateTo: data.dateTo,
3193
+ search: data.search,
3194
+ page: data.page,
3195
+ limit: data.limit
3196
+ }
3197
+ });
3198
+ }
3199
+
3200
+ /**
3201
+ * Get price by ID
3202
+ * Returns a single price entry by its ID
3203
+ * @param data The data for the request.
3204
+ * @param data.id Price ID
3205
+ * @param data.region Region code for tenant context
3206
+ * @returns PriceResponseDto Price retrieved successfully
3207
+ * @throws ApiError
3208
+ */
3209
+ public static priceControllerFindOne(
3210
+ data: PriceControllerFindOneData
3211
+ ): CancelablePromise<PriceControllerFindOneResponse> {
3212
+ return __request(OpenAPI, {
3213
+ method: 'GET',
3214
+ url: '/api/v1/{region}/bean/prices/{id}',
3215
+ path: {
3216
+ id: data.id,
3217
+ region: data.region
3218
+ },
3219
+ errors: {
3220
+ 404: 'Price not found'
3221
+ }
3222
+ });
3223
+ }
3224
+
3225
+ /**
3226
+ * Update a price
3227
+ * Updates an existing price entry
3228
+ * @param data The data for the request.
3229
+ * @param data.id Price ID
3230
+ * @param data.region Region code for tenant context
3231
+ * @param data.requestBody
3232
+ * @returns PriceResponseDto Price updated successfully
3233
+ * @throws ApiError
3234
+ */
3235
+ public static priceControllerUpdate(
3236
+ data: PriceControllerUpdateData
3237
+ ): CancelablePromise<PriceControllerUpdateResponse> {
3238
+ return __request(OpenAPI, {
3239
+ method: 'PUT',
3240
+ url: '/api/v1/{region}/bean/prices/{id}',
3241
+ path: {
3242
+ id: data.id,
3243
+ region: data.region
3244
+ },
3245
+ body: data.requestBody,
3246
+ mediaType: 'application/json',
3247
+ errors: {
3248
+ 404: 'Price not found',
3249
+ 409: 'Updated price conflicts with existing price'
3250
+ }
3251
+ });
3252
+ }
3253
+
3254
+ /**
3255
+ * Delete a price
3256
+ * Deletes a price entry (hard delete)
3257
+ * @param data The data for the request.
3258
+ * @param data.id Price ID
3259
+ * @param data.region Region code for tenant context
3260
+ * @returns void Price deleted successfully
3261
+ * @throws ApiError
3262
+ */
3263
+ public static priceControllerDelete(
3264
+ data: PriceControllerDeleteData
3265
+ ): CancelablePromise<PriceControllerDeleteResponse> {
3266
+ return __request(OpenAPI, {
3267
+ method: 'DELETE',
3268
+ url: '/api/v1/{region}/bean/prices/{id}',
3269
+ path: {
3270
+ id: data.id,
3271
+ region: data.region
3272
+ },
3273
+ errors: {
3274
+ 404: 'Price not found'
3275
+ }
3276
+ });
3277
+ }
3278
+
3279
+ /**
3280
+ * Bulk create prices
3281
+ * Creates multiple price entries at once (skips duplicates)
3282
+ * @param data The data for the request.
3283
+ * @param data.region Region code for tenant context
3284
+ * @param data.requestBody
3285
+ * @returns PriceResponseDto Prices created successfully
3286
+ * @throws ApiError
3287
+ */
3288
+ public static priceControllerBulkCreate(
3289
+ data: PriceControllerBulkCreateData
3290
+ ): CancelablePromise<PriceControllerBulkCreateResponse> {
3291
+ return __request(OpenAPI, {
3292
+ method: 'POST',
3293
+ url: '/api/v1/{region}/bean/prices/bulk',
3294
+ path: {
3295
+ region: data.region
3296
+ },
3297
+ body: data.requestBody,
3298
+ mediaType: 'application/json'
3299
+ });
3300
+ }
3301
+ }
3302
+
2968
3303
  export class ReportingService {
2969
3304
  /**
2970
3305
  * Get portfolio value trends