@firela/api-types 0.0.0-canary.b3b7767b → 0.0.0-canary.da5984a1
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 +1977 -1117
- package/dist/index.d.ts +1977 -1117
- package/dist/index.js +127 -123
- package/dist/index.mjs +127 -123
- package/package.json +1 -1
- package/src/generated/schemas.gen.ts +1553 -187
- package/src/generated/services.gen.ts +912 -941
- package/src/generated/types.gen.ts +2280 -1339
package/dist/index.mjs
CHANGED
|
@@ -658,22 +658,62 @@ var BeanTransactionsService = class {
|
|
|
658
658
|
accountId: data.accountId
|
|
659
659
|
},
|
|
660
660
|
errors: {
|
|
661
|
+
400: "Validation failed",
|
|
661
662
|
401: "Authentication required"
|
|
662
663
|
}
|
|
663
664
|
});
|
|
664
665
|
}
|
|
665
666
|
/**
|
|
667
|
+
* @deprecated
|
|
668
|
+
* Batch create transactions (DEPRECATED)
|
|
669
|
+
* DEPRECATED: Use POST /:region/bean/import/provider/:name/sync instead. This endpoint skips dedup, rule matching, and review branching.
|
|
666
670
|
* @param data The data for the request.
|
|
667
671
|
* @param data.region Region code for tenant context
|
|
668
|
-
* @
|
|
672
|
+
* @param data.requestBody
|
|
673
|
+
* @returns BatchTransactionResponseDto Transactions processed
|
|
669
674
|
* @throws ApiError
|
|
670
675
|
*/
|
|
671
|
-
static
|
|
676
|
+
static transactionControllerCreateBatch(data) {
|
|
672
677
|
return request(OpenAPI, {
|
|
673
678
|
method: "POST",
|
|
674
679
|
url: "/api/v1/{region}/bean/transactions/batch",
|
|
675
680
|
path: {
|
|
676
681
|
region: data.region
|
|
682
|
+
},
|
|
683
|
+
body: data.requestBody,
|
|
684
|
+
mediaType: "application/json",
|
|
685
|
+
errors: {
|
|
686
|
+
400: "Invalid input",
|
|
687
|
+
401: "Authentication required"
|
|
688
|
+
}
|
|
689
|
+
});
|
|
690
|
+
}
|
|
691
|
+
/**
|
|
692
|
+
* Suggest transaction tags
|
|
693
|
+
* Returns distinct tags from the user ACTIVE transactions, sorted by usage, for autocomplete. Optional q performs a case-insensitive prefix match.
|
|
694
|
+
* @param data The data for the request.
|
|
695
|
+
* @param data.region Region code for tenant context
|
|
696
|
+
* @param data.q Prefix match, case-insensitive (max 50 chars)
|
|
697
|
+
* @param data.sort usage (default) or name
|
|
698
|
+
* @param data.limit Max suggestions (1-100, default 10)
|
|
699
|
+
* @returns TagSuggestionsResponseDto Tag suggestions
|
|
700
|
+
* @throws ApiError
|
|
701
|
+
*/
|
|
702
|
+
static transactionControllerSuggestTags(data) {
|
|
703
|
+
return request(OpenAPI, {
|
|
704
|
+
method: "GET",
|
|
705
|
+
url: "/api/v1/{region}/bean/transactions/tags",
|
|
706
|
+
path: {
|
|
707
|
+
region: data.region
|
|
708
|
+
},
|
|
709
|
+
query: {
|
|
710
|
+
q: data.q,
|
|
711
|
+
sort: data.sort,
|
|
712
|
+
limit: data.limit
|
|
713
|
+
},
|
|
714
|
+
errors: {
|
|
715
|
+
400: "Validation failed",
|
|
716
|
+
401: "Authentication required"
|
|
677
717
|
}
|
|
678
718
|
});
|
|
679
719
|
}
|
|
@@ -728,17 +768,26 @@ var BeanTransactionsService = class {
|
|
|
728
768
|
});
|
|
729
769
|
}
|
|
730
770
|
/**
|
|
771
|
+
* Void transaction
|
|
772
|
+
* Soft-deletes a transaction by marking it as VOIDED
|
|
731
773
|
* @param data The data for the request.
|
|
774
|
+
* @param data.id Transaction ID
|
|
732
775
|
* @param data.region Region code for tenant context
|
|
733
|
-
* @returns void
|
|
776
|
+
* @returns void Transaction voided successfully
|
|
734
777
|
* @throws ApiError
|
|
735
778
|
*/
|
|
736
|
-
static
|
|
779
|
+
static transactionControllerDelete(data) {
|
|
737
780
|
return request(OpenAPI, {
|
|
738
781
|
method: "DELETE",
|
|
739
782
|
url: "/api/v1/{region}/bean/transactions/{id}",
|
|
740
783
|
path: {
|
|
784
|
+
id: data.id,
|
|
741
785
|
region: data.region
|
|
786
|
+
},
|
|
787
|
+
errors: {
|
|
788
|
+
400: "Transaction already voided",
|
|
789
|
+
401: "Authentication required",
|
|
790
|
+
404: "Transaction not found"
|
|
742
791
|
}
|
|
743
792
|
});
|
|
744
793
|
}
|
|
@@ -749,7 +798,7 @@ var BeanBalancesService = class {
|
|
|
749
798
|
* Calculate account balance at a specific date for a single currency
|
|
750
799
|
* @param data The data for the request.
|
|
751
800
|
* @param data.account Account name (e.g., "Assets:Bank:Checking")
|
|
752
|
-
* @param data.region Region code
|
|
801
|
+
* @param data.region Region code for tenant context
|
|
753
802
|
* @param data.date Date to calculate balance at (ISO 8601 format)
|
|
754
803
|
* @param data.currency Currency to query (e.g., "USD", "CNY")
|
|
755
804
|
* @returns BalanceResponseDto Balance calculated successfully
|
|
@@ -777,7 +826,7 @@ var BeanBalancesService = class {
|
|
|
777
826
|
* Query multi-currency account balance
|
|
778
827
|
* Calculate account balances for all currencies at a specific date
|
|
779
828
|
* @param data The data for the request.
|
|
780
|
-
* @param data.region Region code
|
|
829
|
+
* @param data.region Region code for tenant context
|
|
781
830
|
* @returns MultiCurrencyBalanceResponseDto Balances calculated successfully
|
|
782
831
|
* @throws ApiError
|
|
783
832
|
*/
|
|
@@ -797,17 +846,26 @@ var BeanBalancesService = class {
|
|
|
797
846
|
};
|
|
798
847
|
var BeanCommoditiesService = class {
|
|
799
848
|
/**
|
|
849
|
+
* Create a new commodity
|
|
850
|
+
* Creates a new commodity definition for the authenticated user
|
|
800
851
|
* @param data The data for the request.
|
|
801
|
-
* @param data.region Region code
|
|
802
|
-
* @
|
|
852
|
+
* @param data.region Region code for tenant context
|
|
853
|
+
* @param data.requestBody
|
|
854
|
+
* @returns CommodityResponseDto Commodity created successfully
|
|
803
855
|
* @throws ApiError
|
|
804
856
|
*/
|
|
805
|
-
static
|
|
857
|
+
static commodityControllerCreate(data) {
|
|
806
858
|
return request(OpenAPI, {
|
|
807
859
|
method: "POST",
|
|
808
860
|
url: "/api/v1/{region}/bean/commodities",
|
|
809
861
|
path: {
|
|
810
862
|
region: data.region
|
|
863
|
+
},
|
|
864
|
+
body: data.requestBody,
|
|
865
|
+
mediaType: "application/json",
|
|
866
|
+
errors: {
|
|
867
|
+
400: "Invalid input data",
|
|
868
|
+
409: "Commodity already exists"
|
|
811
869
|
}
|
|
812
870
|
});
|
|
813
871
|
}
|
|
@@ -815,7 +873,7 @@ var BeanCommoditiesService = class {
|
|
|
815
873
|
* List user commodities
|
|
816
874
|
* Returns all commodity definitions for the authenticated user with optional filtering
|
|
817
875
|
* @param data The data for the request.
|
|
818
|
-
* @param data.region Region code
|
|
876
|
+
* @param data.region Region code for tenant context
|
|
819
877
|
* @param data.search Search term for symbol or metadata fields (partial match). Searches symbol and metadata.name.
|
|
820
878
|
* @param data.symbol Filter by exact symbol match
|
|
821
879
|
* @returns CommodityListResponseDto Commodities retrieved successfully
|
|
@@ -839,7 +897,7 @@ var BeanCommoditiesService = class {
|
|
|
839
897
|
* Returns a specific commodity definition by its symbol
|
|
840
898
|
* @param data The data for the request.
|
|
841
899
|
* @param data.symbol Commodity symbol
|
|
842
|
-
* @param data.region Region code
|
|
900
|
+
* @param data.region Region code for tenant context
|
|
843
901
|
* @returns CommodityResponseDto Commodity retrieved successfully
|
|
844
902
|
* @throws ApiError
|
|
845
903
|
*/
|
|
@@ -857,57 +915,81 @@ var BeanCommoditiesService = class {
|
|
|
857
915
|
});
|
|
858
916
|
}
|
|
859
917
|
/**
|
|
918
|
+
* Update commodity
|
|
919
|
+
* Updates an existing commodity definition. Symbol cannot be changed.
|
|
860
920
|
* @param data The data for the request.
|
|
861
|
-
* @param data.
|
|
862
|
-
* @
|
|
921
|
+
* @param data.symbol Commodity symbol
|
|
922
|
+
* @param data.region Region code for tenant context
|
|
923
|
+
* @param data.requestBody
|
|
924
|
+
* @returns CommodityResponseDto Commodity updated successfully
|
|
863
925
|
* @throws ApiError
|
|
864
926
|
*/
|
|
865
|
-
static
|
|
927
|
+
static commodityControllerUpdate(data) {
|
|
866
928
|
return request(OpenAPI, {
|
|
867
929
|
method: "PUT",
|
|
868
930
|
url: "/api/v1/{region}/bean/commodities/{symbol}",
|
|
869
931
|
path: {
|
|
932
|
+
symbol: data.symbol,
|
|
870
933
|
region: data.region
|
|
934
|
+
},
|
|
935
|
+
body: data.requestBody,
|
|
936
|
+
mediaType: "application/json",
|
|
937
|
+
errors: {
|
|
938
|
+
400: "Invalid input data",
|
|
939
|
+
404: "Commodity not found"
|
|
871
940
|
}
|
|
872
941
|
});
|
|
873
942
|
}
|
|
874
943
|
/**
|
|
944
|
+
* Delete commodity
|
|
945
|
+
* Deletes a commodity definition
|
|
875
946
|
* @param data The data for the request.
|
|
876
|
-
* @param data.
|
|
877
|
-
* @
|
|
947
|
+
* @param data.symbol Commodity symbol
|
|
948
|
+
* @param data.region Region code for tenant context
|
|
949
|
+
* @returns void Commodity deleted successfully
|
|
878
950
|
* @throws ApiError
|
|
879
951
|
*/
|
|
880
|
-
static
|
|
952
|
+
static commodityControllerDelete(data) {
|
|
881
953
|
return request(OpenAPI, {
|
|
882
954
|
method: "DELETE",
|
|
883
955
|
url: "/api/v1/{region}/bean/commodities/{symbol}",
|
|
884
956
|
path: {
|
|
957
|
+
symbol: data.symbol,
|
|
885
958
|
region: data.region
|
|
959
|
+
},
|
|
960
|
+
errors: {
|
|
961
|
+
404: "Commodity not found"
|
|
886
962
|
}
|
|
887
963
|
});
|
|
888
964
|
}
|
|
889
965
|
/**
|
|
966
|
+
* Ensure commodity exists
|
|
967
|
+
* Gets existing commodity or creates it with automatic initialization from OpenBB
|
|
890
968
|
* @param data The data for the request.
|
|
891
|
-
* @param data.
|
|
892
|
-
* @
|
|
969
|
+
* @param data.symbol Commodity symbol
|
|
970
|
+
* @param data.region Region code for tenant context
|
|
971
|
+
* @returns CommodityResponseDto Commodity retrieved or created
|
|
893
972
|
* @throws ApiError
|
|
894
973
|
*/
|
|
895
|
-
static
|
|
974
|
+
static commodityControllerGetOrCreate(data) {
|
|
896
975
|
return request(OpenAPI, {
|
|
897
976
|
method: "POST",
|
|
898
977
|
url: "/api/v1/{region}/bean/commodities/{symbol}/ensure",
|
|
899
978
|
path: {
|
|
979
|
+
symbol: data.symbol,
|
|
900
980
|
region: data.region
|
|
901
981
|
}
|
|
902
982
|
});
|
|
903
983
|
}
|
|
904
984
|
/**
|
|
985
|
+
* Bulk create commodities
|
|
986
|
+
* Creates multiple commodities from a list of symbols, useful for initialization
|
|
905
987
|
* @param data The data for the request.
|
|
906
|
-
* @param data.region Region code
|
|
907
|
-
* @returns
|
|
988
|
+
* @param data.region Region code for tenant context
|
|
989
|
+
* @returns CommodityResponseDto Commodities created successfully
|
|
908
990
|
* @throws ApiError
|
|
909
991
|
*/
|
|
910
|
-
static
|
|
992
|
+
static commodityControllerBulkCreate(data) {
|
|
911
993
|
return request(OpenAPI, {
|
|
912
994
|
method: "POST",
|
|
913
995
|
url: "/api/v1/{region}/bean/commodities/bulk",
|
|
@@ -969,7 +1051,7 @@ var ProviderSyncService = class {
|
|
|
969
1051
|
* Get supported providers
|
|
970
1052
|
* Returns a list of all providers supported by the sync endpoint.
|
|
971
1053
|
* @param data The data for the request.
|
|
972
|
-
* @param data.region Region code
|
|
1054
|
+
* @param data.region Region code for tenant context
|
|
973
1055
|
* @returns SupportedProvidersResponseDto List of supported providers
|
|
974
1056
|
* @throws ApiError
|
|
975
1057
|
*/
|
|
@@ -990,7 +1072,7 @@ var ProviderSyncService = class {
|
|
|
990
1072
|
* Returns whether a specific provider is supported.
|
|
991
1073
|
* @param data The data for the request.
|
|
992
1074
|
* @param data.providerName Provider name to check
|
|
993
|
-
* @param data.region Region code
|
|
1075
|
+
* @param data.region Region code for tenant context
|
|
994
1076
|
* @returns unknown Provider support status
|
|
995
1077
|
* @throws ApiError
|
|
996
1078
|
*/
|
|
@@ -1011,18 +1093,13 @@ var ProviderSyncService = class {
|
|
|
1011
1093
|
var HealthService = class {
|
|
1012
1094
|
/**
|
|
1013
1095
|
* Basic health check for K8s/load balancer probes
|
|
1014
|
-
* @param data The data for the request.
|
|
1015
|
-
* @param data.region Region code (cn, us, de)
|
|
1016
1096
|
* @returns unknown Service is healthy
|
|
1017
1097
|
* @throws ApiError
|
|
1018
1098
|
*/
|
|
1019
|
-
static healthControllerGetHealth(
|
|
1099
|
+
static healthControllerGetHealth() {
|
|
1020
1100
|
return request(OpenAPI, {
|
|
1021
1101
|
method: "GET",
|
|
1022
1102
|
url: "/api/v1/health",
|
|
1023
|
-
path: {
|
|
1024
|
-
region: data.region
|
|
1025
|
-
},
|
|
1026
1103
|
errors: {
|
|
1027
1104
|
503: "Service unavailable"
|
|
1028
1105
|
}
|
|
@@ -1030,37 +1107,41 @@ var HealthService = class {
|
|
|
1030
1107
|
}
|
|
1031
1108
|
/**
|
|
1032
1109
|
* Check database connection health
|
|
1033
|
-
* @param data The data for the request.
|
|
1034
|
-
* @param data.region Region code (cn, us, de)
|
|
1035
1110
|
* @returns unknown Database is healthy
|
|
1036
1111
|
* @throws ApiError
|
|
1037
1112
|
*/
|
|
1038
|
-
static healthControllerCheckDatabase(
|
|
1113
|
+
static healthControllerCheckDatabase() {
|
|
1039
1114
|
return request(OpenAPI, {
|
|
1040
1115
|
method: "GET",
|
|
1041
1116
|
url: "/api/v1/health/database",
|
|
1042
|
-
path: {
|
|
1043
|
-
region: data.region
|
|
1044
|
-
},
|
|
1045
1117
|
errors: {
|
|
1046
1118
|
503: "Database unavailable"
|
|
1047
1119
|
}
|
|
1048
1120
|
});
|
|
1049
1121
|
}
|
|
1122
|
+
/**
|
|
1123
|
+
* Check OpenBB schema status
|
|
1124
|
+
* @returns unknown OpenBB status
|
|
1125
|
+
* @throws ApiError
|
|
1126
|
+
*/
|
|
1127
|
+
static healthControllerCheckOpenBb() {
|
|
1128
|
+
return request(OpenAPI, {
|
|
1129
|
+
method: "GET",
|
|
1130
|
+
url: "/api/v1/health/openbb",
|
|
1131
|
+
errors: {
|
|
1132
|
+
503: "OpenBB unavailable"
|
|
1133
|
+
}
|
|
1134
|
+
});
|
|
1135
|
+
}
|
|
1050
1136
|
/**
|
|
1051
1137
|
* Check Redis connection health
|
|
1052
|
-
* @param data The data for the request.
|
|
1053
|
-
* @param data.region Region code (cn, us, de)
|
|
1054
1138
|
* @returns unknown Redis is healthy
|
|
1055
1139
|
* @throws ApiError
|
|
1056
1140
|
*/
|
|
1057
|
-
static healthControllerCheckRedis(
|
|
1141
|
+
static healthControllerCheckRedis() {
|
|
1058
1142
|
return request(OpenAPI, {
|
|
1059
1143
|
method: "GET",
|
|
1060
1144
|
url: "/api/v1/health/redis",
|
|
1061
|
-
path: {
|
|
1062
|
-
region: data.region
|
|
1063
|
-
},
|
|
1064
1145
|
errors: {
|
|
1065
1146
|
503: "Redis unavailable"
|
|
1066
1147
|
}
|
|
@@ -1068,18 +1149,13 @@ var HealthService = class {
|
|
|
1068
1149
|
}
|
|
1069
1150
|
/**
|
|
1070
1151
|
* Get status of all circuit breakers
|
|
1071
|
-
* @param data The data for the request.
|
|
1072
|
-
* @param data.region Region code (cn, us, de)
|
|
1073
1152
|
* @returns unknown Circuit breaker status
|
|
1074
1153
|
* @throws ApiError
|
|
1075
1154
|
*/
|
|
1076
|
-
static healthControllerGetCircuitBreakersHealth(
|
|
1155
|
+
static healthControllerGetCircuitBreakersHealth() {
|
|
1077
1156
|
return request(OpenAPI, {
|
|
1078
1157
|
method: "GET",
|
|
1079
1158
|
url: "/api/v1/health/circuit-breakers",
|
|
1080
|
-
path: {
|
|
1081
|
-
region: data.region
|
|
1082
|
-
},
|
|
1083
1159
|
errors: {
|
|
1084
1160
|
401: "Unauthorized",
|
|
1085
1161
|
500: "Internal error"
|
|
@@ -1090,7 +1166,6 @@ var HealthService = class {
|
|
|
1090
1166
|
* Reset a circuit breaker to CLOSED state
|
|
1091
1167
|
* @param data The data for the request.
|
|
1092
1168
|
* @param data.name Circuit breaker name to reset
|
|
1093
|
-
* @param data.region Region code (cn, us, de)
|
|
1094
1169
|
* @returns unknown Circuit breaker reset successfully
|
|
1095
1170
|
* @throws ApiError
|
|
1096
1171
|
*/
|
|
@@ -1099,8 +1174,7 @@ var HealthService = class {
|
|
|
1099
1174
|
method: "POST",
|
|
1100
1175
|
url: "/api/v1/health/circuit-breakers/{name}/reset",
|
|
1101
1176
|
path: {
|
|
1102
|
-
name: data.name
|
|
1103
|
-
region: data.region
|
|
1177
|
+
name: data.name
|
|
1104
1178
|
},
|
|
1105
1179
|
errors: {
|
|
1106
1180
|
401: "Unauthorized",
|
|
@@ -1110,88 +1184,18 @@ var HealthService = class {
|
|
|
1110
1184
|
}
|
|
1111
1185
|
/**
|
|
1112
1186
|
* Get health check metrics and statistics
|
|
1113
|
-
* @param data The data for the request.
|
|
1114
|
-
* @param data.region Region code (cn, us, de)
|
|
1115
1187
|
* @returns unknown Health metrics
|
|
1116
1188
|
* @throws ApiError
|
|
1117
1189
|
*/
|
|
1118
|
-
static healthControllerGetMetrics(
|
|
1190
|
+
static healthControllerGetMetrics() {
|
|
1119
1191
|
return request(OpenAPI, {
|
|
1120
1192
|
method: "GET",
|
|
1121
1193
|
url: "/api/v1/health/metrics",
|
|
1122
|
-
path: {
|
|
1123
|
-
region: data.region
|
|
1124
|
-
},
|
|
1125
1194
|
errors: {
|
|
1126
1195
|
401: "Unauthorized"
|
|
1127
1196
|
}
|
|
1128
1197
|
});
|
|
1129
1198
|
}
|
|
1130
|
-
/**
|
|
1131
|
-
* Check health of a specific data enhancer
|
|
1132
|
-
* @param data The data for the request.
|
|
1133
|
-
* @param data.name Data enhancer name
|
|
1134
|
-
* @param data.region Region code (cn, us, de)
|
|
1135
|
-
* @returns unknown Data enhancer is healthy
|
|
1136
|
-
* @throws ApiError
|
|
1137
|
-
*/
|
|
1138
|
-
static healthControllerGetHealthOfDataEnhancer(data) {
|
|
1139
|
-
return request(OpenAPI, {
|
|
1140
|
-
method: "GET",
|
|
1141
|
-
url: "/api/v1/health/data-enhancer/{name}",
|
|
1142
|
-
path: {
|
|
1143
|
-
name: data.name,
|
|
1144
|
-
region: data.region
|
|
1145
|
-
},
|
|
1146
|
-
errors: {
|
|
1147
|
-
401: "Unauthorized",
|
|
1148
|
-
503: "Data enhancer unavailable"
|
|
1149
|
-
}
|
|
1150
|
-
});
|
|
1151
|
-
}
|
|
1152
|
-
/**
|
|
1153
|
-
* Check health of all data providers
|
|
1154
|
-
* @param data The data for the request.
|
|
1155
|
-
* @param data.region Region code (cn, us, de)
|
|
1156
|
-
* @returns unknown Data providers health status
|
|
1157
|
-
* @throws ApiError
|
|
1158
|
-
*/
|
|
1159
|
-
static healthControllerCheckDataProviders(data) {
|
|
1160
|
-
return request(OpenAPI, {
|
|
1161
|
-
method: "GET",
|
|
1162
|
-
url: "/api/v1/health/data-providers",
|
|
1163
|
-
path: {
|
|
1164
|
-
region: data.region
|
|
1165
|
-
},
|
|
1166
|
-
errors: {
|
|
1167
|
-
401: "Unauthorized",
|
|
1168
|
-
503: "Data providers check failed"
|
|
1169
|
-
}
|
|
1170
|
-
});
|
|
1171
|
-
}
|
|
1172
|
-
/**
|
|
1173
|
-
* Check health of a specific data provider
|
|
1174
|
-
* @param data The data for the request.
|
|
1175
|
-
* @param data.dataSource Data source identifier
|
|
1176
|
-
* @param data.region Region code (cn, us, de)
|
|
1177
|
-
* @returns unknown Data provider is healthy
|
|
1178
|
-
* @throws ApiError
|
|
1179
|
-
*/
|
|
1180
|
-
static healthControllerGetHealthOfDataProvider(data) {
|
|
1181
|
-
return request(OpenAPI, {
|
|
1182
|
-
method: "GET",
|
|
1183
|
-
url: "/api/v1/health/data-provider/{dataSource}",
|
|
1184
|
-
path: {
|
|
1185
|
-
dataSource: data.dataSource,
|
|
1186
|
-
region: data.region
|
|
1187
|
-
},
|
|
1188
|
-
errors: {
|
|
1189
|
-
400: "Invalid data source",
|
|
1190
|
-
401: "Unauthorized",
|
|
1191
|
-
503: "Data provider unavailable"
|
|
1192
|
-
}
|
|
1193
|
-
});
|
|
1194
|
-
}
|
|
1195
1199
|
};
|
|
1196
1200
|
export {
|
|
1197
1201
|
BeanAccountsService,
|