squarefi-bff-api-module 1.36.65 → 1.36.67
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/api/types/autogen/apiV1External.types.d.ts +11 -1
- package/dist/api/types/autogen/apiV1Frontend.types.d.ts +1412 -49
- package/dist/api/types/autogen/apiV1Legacy.types.d.ts +1 -1
- package/dist/api/types/autogen/apiV1Tenant.types.d.ts +6 -1
- package/dist/api/types/autogen/apiV2.types.d.ts +12 -1
- package/package.json +1 -1
|
@@ -884,6 +884,310 @@ export interface paths {
|
|
|
884
884
|
};
|
|
885
885
|
trace?: never;
|
|
886
886
|
};
|
|
887
|
+
"/frontend/aml/{wallet_id}/quote": {
|
|
888
|
+
parameters: {
|
|
889
|
+
query?: never;
|
|
890
|
+
header?: never;
|
|
891
|
+
path?: never;
|
|
892
|
+
cookie?: never;
|
|
893
|
+
};
|
|
894
|
+
/**
|
|
895
|
+
* Price of one address screening in the chosen paying currency
|
|
896
|
+
* @description What the "Pay and screen" modal shows: the tenant's price in USD, the
|
|
897
|
+
* rate of the paying currency and the total that will leave the wallet.
|
|
898
|
+
* Nothing is charged. With `currency_id`, `asset.supported` says whether
|
|
899
|
+
* the token's network can be screened at all — when it cannot, show
|
|
900
|
+
* that the check is unavailable and let the transfer proceed; a
|
|
901
|
+
* screening is never a condition of sending.
|
|
902
|
+
*
|
|
903
|
+
*/
|
|
904
|
+
get: {
|
|
905
|
+
parameters: {
|
|
906
|
+
query: {
|
|
907
|
+
/** @description Balance the fee will be paid from (any wallet currency, crypto or fiat) */
|
|
908
|
+
pay_from_currency_id: string;
|
|
909
|
+
/** @description The token the address would be checked for — adds `asset.supported` to the answer */
|
|
910
|
+
currency_id?: string;
|
|
911
|
+
};
|
|
912
|
+
header?: never;
|
|
913
|
+
path: {
|
|
914
|
+
/** @description Wallet the screening belongs to (and is paid from) */
|
|
915
|
+
wallet_id: components["parameters"]["AmlWalletId"];
|
|
916
|
+
};
|
|
917
|
+
cookie?: never;
|
|
918
|
+
};
|
|
919
|
+
requestBody?: never;
|
|
920
|
+
responses: {
|
|
921
|
+
/** @description The quote */
|
|
922
|
+
200: {
|
|
923
|
+
headers: {
|
|
924
|
+
[name: string]: unknown;
|
|
925
|
+
};
|
|
926
|
+
content: {
|
|
927
|
+
"application/json": {
|
|
928
|
+
/** @example true */
|
|
929
|
+
success?: boolean;
|
|
930
|
+
data?: components["schemas"]["AmlScreeningQuote"];
|
|
931
|
+
};
|
|
932
|
+
};
|
|
933
|
+
};
|
|
934
|
+
/** @description Validation error, or the fee cannot be priced in this currency (AML_FEE_NOT_PRICEABLE) */
|
|
935
|
+
400: {
|
|
936
|
+
headers: {
|
|
937
|
+
[name: string]: unknown;
|
|
938
|
+
};
|
|
939
|
+
content: {
|
|
940
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
941
|
+
};
|
|
942
|
+
};
|
|
943
|
+
/** @description Feature not enabled for the tenant (AML_CHECK_NOT_ENABLED) or no access to the wallet */
|
|
944
|
+
403: {
|
|
945
|
+
headers: {
|
|
946
|
+
[name: string]: unknown;
|
|
947
|
+
};
|
|
948
|
+
content: {
|
|
949
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
950
|
+
};
|
|
951
|
+
};
|
|
952
|
+
};
|
|
953
|
+
};
|
|
954
|
+
put?: never;
|
|
955
|
+
post?: never;
|
|
956
|
+
delete?: never;
|
|
957
|
+
options?: never;
|
|
958
|
+
head?: never;
|
|
959
|
+
patch?: never;
|
|
960
|
+
trace?: never;
|
|
961
|
+
};
|
|
962
|
+
"/frontend/aml/{wallet_id}/screenings": {
|
|
963
|
+
parameters: {
|
|
964
|
+
query?: never;
|
|
965
|
+
header?: never;
|
|
966
|
+
path?: never;
|
|
967
|
+
cookie?: never;
|
|
968
|
+
};
|
|
969
|
+
get?: never;
|
|
970
|
+
put?: never;
|
|
971
|
+
/**
|
|
972
|
+
* Pay for and start an AML screening of a crypto address
|
|
973
|
+
* @description Charges the tenant's screening fee from `pay_from_currency_id` (an
|
|
974
|
+
* `AML_CHECK` order) and hands the address to the analytics provider.
|
|
975
|
+
* The answer is the screening in `PENDING`. Do not poll: subscribe to
|
|
976
|
+
* the wallet's realtime channel and wait for the `data.changed` hint
|
|
977
|
+
* with `entity: WALLET_AML_SCREENINGS`, then read
|
|
978
|
+
* `GET /frontend/aml/{wallet_id}/screenings/{id}` for the verdict
|
|
979
|
+
* (`COMPLETED` or `FAILED`). A failed screening refunds the fee in full.
|
|
980
|
+
*
|
|
981
|
+
* Send an `Idempotency-Key` header to make a retry return the screening
|
|
982
|
+
* the first call created instead of charging again.
|
|
983
|
+
*
|
|
984
|
+
* One screening of an address (per wallet and token) runs at a time: a
|
|
985
|
+
* second request while the first is still `PENDING` / `SCREENING`
|
|
986
|
+
* answers `409 SCREENING_IN_PROGRESS` with `details.screening_id` of the
|
|
987
|
+
* running one and charges nothing — wait on that screening instead. Once
|
|
988
|
+
* it has finished the address can be screened (and paid for) again; a
|
|
989
|
+
* screening stuck for more than 15 minutes stops blocking.
|
|
990
|
+
*
|
|
991
|
+
*/
|
|
992
|
+
post: {
|
|
993
|
+
parameters: {
|
|
994
|
+
query?: never;
|
|
995
|
+
header?: {
|
|
996
|
+
"Idempotency-Key"?: string;
|
|
997
|
+
};
|
|
998
|
+
path: {
|
|
999
|
+
/** @description Wallet the screening belongs to (and is paid from) */
|
|
1000
|
+
wallet_id: components["parameters"]["AmlWalletId"];
|
|
1001
|
+
};
|
|
1002
|
+
cookie?: never;
|
|
1003
|
+
};
|
|
1004
|
+
requestBody: {
|
|
1005
|
+
content: {
|
|
1006
|
+
"application/json": {
|
|
1007
|
+
/** @example TAX544wj9oDmAqWLzuAnYLU9GfS8XncsJ9 */
|
|
1008
|
+
address: string;
|
|
1009
|
+
/**
|
|
1010
|
+
* Format: uuid
|
|
1011
|
+
* @description The token the address is checked for — decides the network (see `aml_supported` in the currency reference)
|
|
1012
|
+
*/
|
|
1013
|
+
currency_id: string;
|
|
1014
|
+
/**
|
|
1015
|
+
* Format: uuid
|
|
1016
|
+
* @description Balance the fee is paid from
|
|
1017
|
+
*/
|
|
1018
|
+
pay_from_currency_id: string;
|
|
1019
|
+
};
|
|
1020
|
+
};
|
|
1021
|
+
};
|
|
1022
|
+
responses: {
|
|
1023
|
+
/** @description Screening created and paid for */
|
|
1024
|
+
201: {
|
|
1025
|
+
headers: {
|
|
1026
|
+
[name: string]: unknown;
|
|
1027
|
+
};
|
|
1028
|
+
content: {
|
|
1029
|
+
"application/json": {
|
|
1030
|
+
/** @example true */
|
|
1031
|
+
success?: boolean;
|
|
1032
|
+
data?: components["schemas"]["AmlScreening"];
|
|
1033
|
+
};
|
|
1034
|
+
};
|
|
1035
|
+
};
|
|
1036
|
+
/** @description Validation error, unsupported asset (AML_ASSET_NOT_SUPPORTED), insufficient funds (INSUFFICIENT_FUNDS) or a fee that cannot be priced (AML_FEE_NOT_PRICEABLE) */
|
|
1037
|
+
400: {
|
|
1038
|
+
headers: {
|
|
1039
|
+
[name: string]: unknown;
|
|
1040
|
+
};
|
|
1041
|
+
content: {
|
|
1042
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
1043
|
+
};
|
|
1044
|
+
};
|
|
1045
|
+
/** @description Feature not enabled (AML_CHECK_NOT_ENABLED), KYC not approved, or caller is not an admin of the wallet */
|
|
1046
|
+
403: {
|
|
1047
|
+
headers: {
|
|
1048
|
+
[name: string]: unknown;
|
|
1049
|
+
};
|
|
1050
|
+
content: {
|
|
1051
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
1052
|
+
};
|
|
1053
|
+
};
|
|
1054
|
+
/** @description The address is already being screened for this wallet (SCREENING_IN_PROGRESS, `details.screening_id`), or the same request is still being processed (OPERATION_IN_PROGRESS) */
|
|
1055
|
+
409: {
|
|
1056
|
+
headers: {
|
|
1057
|
+
[name: string]: unknown;
|
|
1058
|
+
};
|
|
1059
|
+
content: {
|
|
1060
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
1061
|
+
};
|
|
1062
|
+
};
|
|
1063
|
+
/** @description Rate limit exceeded */
|
|
1064
|
+
429: {
|
|
1065
|
+
headers: {
|
|
1066
|
+
[name: string]: unknown;
|
|
1067
|
+
};
|
|
1068
|
+
content: {
|
|
1069
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
1070
|
+
};
|
|
1071
|
+
};
|
|
1072
|
+
};
|
|
1073
|
+
};
|
|
1074
|
+
delete?: never;
|
|
1075
|
+
options?: never;
|
|
1076
|
+
head?: never;
|
|
1077
|
+
patch?: never;
|
|
1078
|
+
trace?: never;
|
|
1079
|
+
};
|
|
1080
|
+
"/frontend/aml/{wallet_id}/screenings/{id}": {
|
|
1081
|
+
parameters: {
|
|
1082
|
+
query?: never;
|
|
1083
|
+
header?: never;
|
|
1084
|
+
path?: never;
|
|
1085
|
+
cookie?: never;
|
|
1086
|
+
};
|
|
1087
|
+
/** Get a screening and its verdict */
|
|
1088
|
+
get: {
|
|
1089
|
+
parameters: {
|
|
1090
|
+
query?: never;
|
|
1091
|
+
header?: never;
|
|
1092
|
+
path: {
|
|
1093
|
+
/** @description Wallet the screening belongs to (and is paid from) */
|
|
1094
|
+
wallet_id: components["parameters"]["AmlWalletId"];
|
|
1095
|
+
id: components["parameters"]["AmlScreeningId"];
|
|
1096
|
+
};
|
|
1097
|
+
cookie?: never;
|
|
1098
|
+
};
|
|
1099
|
+
requestBody?: never;
|
|
1100
|
+
responses: {
|
|
1101
|
+
/** @description The screening */
|
|
1102
|
+
200: {
|
|
1103
|
+
headers: {
|
|
1104
|
+
[name: string]: unknown;
|
|
1105
|
+
};
|
|
1106
|
+
content: {
|
|
1107
|
+
"application/json": {
|
|
1108
|
+
/** @example true */
|
|
1109
|
+
success?: boolean;
|
|
1110
|
+
data?: components["schemas"]["AmlScreening"];
|
|
1111
|
+
};
|
|
1112
|
+
};
|
|
1113
|
+
};
|
|
1114
|
+
/** @description Not found in this wallet (SCREENING_NOT_FOUND) */
|
|
1115
|
+
404: {
|
|
1116
|
+
headers: {
|
|
1117
|
+
[name: string]: unknown;
|
|
1118
|
+
};
|
|
1119
|
+
content: {
|
|
1120
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
1121
|
+
};
|
|
1122
|
+
};
|
|
1123
|
+
};
|
|
1124
|
+
};
|
|
1125
|
+
put?: never;
|
|
1126
|
+
post?: never;
|
|
1127
|
+
delete?: never;
|
|
1128
|
+
options?: never;
|
|
1129
|
+
head?: never;
|
|
1130
|
+
patch?: never;
|
|
1131
|
+
trace?: never;
|
|
1132
|
+
};
|
|
1133
|
+
"/frontend/aml/{wallet_id}/screenings/{id}/report": {
|
|
1134
|
+
parameters: {
|
|
1135
|
+
query?: never;
|
|
1136
|
+
header?: never;
|
|
1137
|
+
path?: never;
|
|
1138
|
+
cookie?: never;
|
|
1139
|
+
};
|
|
1140
|
+
/** Download the PDF report of a completed screening */
|
|
1141
|
+
get: {
|
|
1142
|
+
parameters: {
|
|
1143
|
+
query?: never;
|
|
1144
|
+
header?: never;
|
|
1145
|
+
path: {
|
|
1146
|
+
/** @description Wallet the screening belongs to (and is paid from) */
|
|
1147
|
+
wallet_id: components["parameters"]["AmlWalletId"];
|
|
1148
|
+
id: components["parameters"]["AmlScreeningId"];
|
|
1149
|
+
};
|
|
1150
|
+
cookie?: never;
|
|
1151
|
+
};
|
|
1152
|
+
requestBody?: never;
|
|
1153
|
+
responses: {
|
|
1154
|
+
/** @description The report as an attachment */
|
|
1155
|
+
200: {
|
|
1156
|
+
headers: {
|
|
1157
|
+
[name: string]: unknown;
|
|
1158
|
+
};
|
|
1159
|
+
content: {
|
|
1160
|
+
"application/pdf": string;
|
|
1161
|
+
};
|
|
1162
|
+
};
|
|
1163
|
+
/** @description Not found in this wallet (SCREENING_NOT_FOUND) */
|
|
1164
|
+
404: {
|
|
1165
|
+
headers: {
|
|
1166
|
+
[name: string]: unknown;
|
|
1167
|
+
};
|
|
1168
|
+
content: {
|
|
1169
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
1170
|
+
};
|
|
1171
|
+
};
|
|
1172
|
+
/** @description The screening has not completed (SCREENING_REPORT_NOT_READY) */
|
|
1173
|
+
409: {
|
|
1174
|
+
headers: {
|
|
1175
|
+
[name: string]: unknown;
|
|
1176
|
+
};
|
|
1177
|
+
content: {
|
|
1178
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
1179
|
+
};
|
|
1180
|
+
};
|
|
1181
|
+
};
|
|
1182
|
+
};
|
|
1183
|
+
put?: never;
|
|
1184
|
+
post?: never;
|
|
1185
|
+
delete?: never;
|
|
1186
|
+
options?: never;
|
|
1187
|
+
head?: never;
|
|
1188
|
+
patch?: never;
|
|
1189
|
+
trace?: never;
|
|
1190
|
+
};
|
|
887
1191
|
"/frontend/bank-data": {
|
|
888
1192
|
parameters: {
|
|
889
1193
|
query?: never;
|
|
@@ -3658,6 +3962,11 @@ export interface paths {
|
|
|
3658
3962
|
*/
|
|
3659
3963
|
from_currency_id: string;
|
|
3660
3964
|
amount: number;
|
|
3965
|
+
/**
|
|
3966
|
+
* @description When true, `amount` is what the sub-account is credited; the wallet debit (conversion + fees) is derived from it.
|
|
3967
|
+
* @default false
|
|
3968
|
+
*/
|
|
3969
|
+
is_reverse?: boolean;
|
|
3661
3970
|
note?: string;
|
|
3662
3971
|
};
|
|
3663
3972
|
};
|
|
@@ -4271,6 +4580,11 @@ export interface paths {
|
|
|
4271
4580
|
* @example 250
|
|
4272
4581
|
*/
|
|
4273
4582
|
amount: number;
|
|
4583
|
+
/**
|
|
4584
|
+
* @description When true, `amount` is what the sub-account is credited; the wallet debit (conversion + fees) is derived from it.
|
|
4585
|
+
* @default false
|
|
4586
|
+
*/
|
|
4587
|
+
is_reverse?: boolean;
|
|
4274
4588
|
/**
|
|
4275
4589
|
* @description Optional description for the deposit
|
|
4276
4590
|
* @example Top up sub-account
|
|
@@ -9641,6 +9955,8 @@ export interface paths {
|
|
|
9641
9955
|
type?: "token" | "native";
|
|
9642
9956
|
symbol?: string;
|
|
9643
9957
|
enabled_only?: boolean;
|
|
9958
|
+
/** @description Only tokens whose network the tenant's AML provider can screen addresses on */
|
|
9959
|
+
aml_supported?: boolean;
|
|
9644
9960
|
offset?: number;
|
|
9645
9961
|
limit?: number;
|
|
9646
9962
|
};
|
|
@@ -9650,7 +9966,7 @@ export interface paths {
|
|
|
9650
9966
|
};
|
|
9651
9967
|
requestBody?: never;
|
|
9652
9968
|
responses: {
|
|
9653
|
-
/** @description Currencies list retrieved successfully */
|
|
9969
|
+
/** @description Currencies list retrieved successfully. Every item carries `aml_supported` — true when an address on this token's network can be screened (`POST /frontend/aml/{wallet_id}/screenings`); always false while AML screening is off for the tenant. */
|
|
9654
9970
|
200: {
|
|
9655
9971
|
headers: {
|
|
9656
9972
|
[name: string]: unknown;
|
|
@@ -9878,6 +10194,8 @@ export interface paths {
|
|
|
9878
10194
|
get: {
|
|
9879
10195
|
parameters: {
|
|
9880
10196
|
query?: {
|
|
10197
|
+
/** @description Only networks the tenant's AML provider can screen addresses on */
|
|
10198
|
+
aml_supported?: boolean;
|
|
9881
10199
|
offset?: number;
|
|
9882
10200
|
limit?: number;
|
|
9883
10201
|
};
|
|
@@ -9887,7 +10205,7 @@ export interface paths {
|
|
|
9887
10205
|
};
|
|
9888
10206
|
requestBody?: never;
|
|
9889
10207
|
responses: {
|
|
9890
|
-
/** @description Chains retrieved successfully */
|
|
10208
|
+
/** @description Chains retrieved successfully. Every item carries `aml_supported`; always false while AML screening is off for the tenant. */
|
|
9891
10209
|
200: {
|
|
9892
10210
|
headers: {
|
|
9893
10211
|
[name: string]: unknown;
|
|
@@ -10044,24 +10362,711 @@ export interface paths {
|
|
|
10044
10362
|
patch?: never;
|
|
10045
10363
|
trace?: never;
|
|
10046
10364
|
};
|
|
10047
|
-
"/frontend/
|
|
10365
|
+
"/frontend/referrals/summary": {
|
|
10048
10366
|
parameters: {
|
|
10049
10367
|
query?: never;
|
|
10050
10368
|
header?: never;
|
|
10051
10369
|
path?: never;
|
|
10052
10370
|
cookie?: never;
|
|
10053
10371
|
};
|
|
10054
|
-
get?: never;
|
|
10055
|
-
put?: never;
|
|
10056
10372
|
/**
|
|
10057
|
-
*
|
|
10058
|
-
* @description
|
|
10059
|
-
|
|
10060
|
-
|
|
10061
|
-
|
|
10062
|
-
|
|
10063
|
-
|
|
10064
|
-
|
|
10373
|
+
* The agent's referral summary
|
|
10374
|
+
* @description The main referral screen in one call — the agent's code, this month's earnings and level, what waits for a payout, what was paid so far, the ladder and the program terms. A user without a referral code gets one here.
|
|
10375
|
+
*/
|
|
10376
|
+
get: {
|
|
10377
|
+
parameters: {
|
|
10378
|
+
query?: never;
|
|
10379
|
+
header?: never;
|
|
10380
|
+
path?: never;
|
|
10381
|
+
cookie?: never;
|
|
10382
|
+
};
|
|
10383
|
+
requestBody?: never;
|
|
10384
|
+
responses: {
|
|
10385
|
+
/** @description The summary. */
|
|
10386
|
+
200: {
|
|
10387
|
+
headers: {
|
|
10388
|
+
[name: string]: unknown;
|
|
10389
|
+
};
|
|
10390
|
+
content: {
|
|
10391
|
+
"application/json": {
|
|
10392
|
+
/** @example true */
|
|
10393
|
+
success?: boolean;
|
|
10394
|
+
data?: components["schemas"]["ReferralSummary"];
|
|
10395
|
+
};
|
|
10396
|
+
};
|
|
10397
|
+
};
|
|
10398
|
+
401: components["responses"]["UnauthorizedError"];
|
|
10399
|
+
/** @description The referral program is not enabled for the tenant (`REFERRAL_PROGRAM_NOT_ENABLED`). */
|
|
10400
|
+
403: {
|
|
10401
|
+
headers: {
|
|
10402
|
+
[name: string]: unknown;
|
|
10403
|
+
};
|
|
10404
|
+
content?: never;
|
|
10405
|
+
};
|
|
10406
|
+
};
|
|
10407
|
+
};
|
|
10408
|
+
put?: never;
|
|
10409
|
+
post?: never;
|
|
10410
|
+
delete?: never;
|
|
10411
|
+
options?: never;
|
|
10412
|
+
head?: never;
|
|
10413
|
+
patch?: never;
|
|
10414
|
+
trace?: never;
|
|
10415
|
+
};
|
|
10416
|
+
"/frontend/referrals/events": {
|
|
10417
|
+
parameters: {
|
|
10418
|
+
query?: never;
|
|
10419
|
+
header?: never;
|
|
10420
|
+
path?: never;
|
|
10421
|
+
cookie?: never;
|
|
10422
|
+
};
|
|
10423
|
+
/**
|
|
10424
|
+
* The agent's rewards of a month
|
|
10425
|
+
* @description One row per rewarded order (and per reversal), newest first. Canceled rows are not listed. Without `period` the current month is served; a level change is visible as a change of `level_no` between rows.
|
|
10426
|
+
*/
|
|
10427
|
+
get: {
|
|
10428
|
+
parameters: {
|
|
10429
|
+
query?: {
|
|
10430
|
+
/** @description UTC month `YYYY-MM`; defaults to the current one. */
|
|
10431
|
+
period?: string;
|
|
10432
|
+
offset?: number;
|
|
10433
|
+
limit?: number;
|
|
10434
|
+
};
|
|
10435
|
+
header?: never;
|
|
10436
|
+
path?: never;
|
|
10437
|
+
cookie?: never;
|
|
10438
|
+
};
|
|
10439
|
+
requestBody?: never;
|
|
10440
|
+
responses: {
|
|
10441
|
+
/** @description A page of rows; `meta.period` names the month served. */
|
|
10442
|
+
200: {
|
|
10443
|
+
headers: {
|
|
10444
|
+
[name: string]: unknown;
|
|
10445
|
+
};
|
|
10446
|
+
content: {
|
|
10447
|
+
"application/json": {
|
|
10448
|
+
/** @example true */
|
|
10449
|
+
success?: boolean;
|
|
10450
|
+
data?: components["schemas"]["ReferralEvent"][];
|
|
10451
|
+
pagination?: components["schemas"]["PaginationResponse"];
|
|
10452
|
+
meta?: {
|
|
10453
|
+
/** @example 2026-09 */
|
|
10454
|
+
period?: string;
|
|
10455
|
+
};
|
|
10456
|
+
};
|
|
10457
|
+
};
|
|
10458
|
+
};
|
|
10459
|
+
/** @description Invalid query (`VALIDATION_ERROR`). */
|
|
10460
|
+
400: {
|
|
10461
|
+
headers: {
|
|
10462
|
+
[name: string]: unknown;
|
|
10463
|
+
};
|
|
10464
|
+
content?: never;
|
|
10465
|
+
};
|
|
10466
|
+
401: components["responses"]["UnauthorizedError"];
|
|
10467
|
+
/** @description The referral program is not enabled for the tenant (`REFERRAL_PROGRAM_NOT_ENABLED`). */
|
|
10468
|
+
403: {
|
|
10469
|
+
headers: {
|
|
10470
|
+
[name: string]: unknown;
|
|
10471
|
+
};
|
|
10472
|
+
content?: never;
|
|
10473
|
+
};
|
|
10474
|
+
};
|
|
10475
|
+
};
|
|
10476
|
+
put?: never;
|
|
10477
|
+
post?: never;
|
|
10478
|
+
delete?: never;
|
|
10479
|
+
options?: never;
|
|
10480
|
+
head?: never;
|
|
10481
|
+
patch?: never;
|
|
10482
|
+
trace?: never;
|
|
10483
|
+
};
|
|
10484
|
+
"/frontend/referrals/payouts": {
|
|
10485
|
+
parameters: {
|
|
10486
|
+
query?: never;
|
|
10487
|
+
header?: never;
|
|
10488
|
+
path?: never;
|
|
10489
|
+
cookie?: never;
|
|
10490
|
+
};
|
|
10491
|
+
/**
|
|
10492
|
+
* The agent's payouts
|
|
10493
|
+
* @description One per closed month the agent was paid for (or is being paid for), newest month first.
|
|
10494
|
+
*/
|
|
10495
|
+
get: {
|
|
10496
|
+
parameters: {
|
|
10497
|
+
query?: {
|
|
10498
|
+
offset?: number;
|
|
10499
|
+
limit?: number;
|
|
10500
|
+
};
|
|
10501
|
+
header?: never;
|
|
10502
|
+
path?: never;
|
|
10503
|
+
cookie?: never;
|
|
10504
|
+
};
|
|
10505
|
+
requestBody?: never;
|
|
10506
|
+
responses: {
|
|
10507
|
+
/** @description A page of payouts. */
|
|
10508
|
+
200: {
|
|
10509
|
+
headers: {
|
|
10510
|
+
[name: string]: unknown;
|
|
10511
|
+
};
|
|
10512
|
+
content: {
|
|
10513
|
+
"application/json": {
|
|
10514
|
+
/** @example true */
|
|
10515
|
+
success?: boolean;
|
|
10516
|
+
data?: components["schemas"]["ReferralPayout"][];
|
|
10517
|
+
pagination?: components["schemas"]["PaginationResponse"];
|
|
10518
|
+
};
|
|
10519
|
+
};
|
|
10520
|
+
};
|
|
10521
|
+
401: components["responses"]["UnauthorizedError"];
|
|
10522
|
+
/** @description The referral program is not enabled for the tenant (`REFERRAL_PROGRAM_NOT_ENABLED`). */
|
|
10523
|
+
403: {
|
|
10524
|
+
headers: {
|
|
10525
|
+
[name: string]: unknown;
|
|
10526
|
+
};
|
|
10527
|
+
content?: never;
|
|
10528
|
+
};
|
|
10529
|
+
};
|
|
10530
|
+
};
|
|
10531
|
+
put?: never;
|
|
10532
|
+
post?: never;
|
|
10533
|
+
delete?: never;
|
|
10534
|
+
options?: never;
|
|
10535
|
+
head?: never;
|
|
10536
|
+
patch?: never;
|
|
10537
|
+
trace?: never;
|
|
10538
|
+
};
|
|
10539
|
+
"/frontend/referrals/report": {
|
|
10540
|
+
parameters: {
|
|
10541
|
+
query?: never;
|
|
10542
|
+
header?: never;
|
|
10543
|
+
path?: never;
|
|
10544
|
+
cookie?: never;
|
|
10545
|
+
};
|
|
10546
|
+
/**
|
|
10547
|
+
* Download the monthly referral report (PDF)
|
|
10548
|
+
* @description The month's summary, the breakdown by order type and the reward rows, on the tenant's branded sheet. Without `period` the last closed month is served — the one a payout is made for; the current month is served too, marked preliminary. Generated on the fly and streamed; nothing is persisted.
|
|
10549
|
+
*/
|
|
10550
|
+
get: {
|
|
10551
|
+
parameters: {
|
|
10552
|
+
query?: {
|
|
10553
|
+
/** @description UTC month `YYYY-MM`; defaults to the last closed month. */
|
|
10554
|
+
period?: string;
|
|
10555
|
+
};
|
|
10556
|
+
header?: never;
|
|
10557
|
+
path?: never;
|
|
10558
|
+
cookie?: never;
|
|
10559
|
+
};
|
|
10560
|
+
requestBody?: never;
|
|
10561
|
+
responses: {
|
|
10562
|
+
/** @description PDF file */
|
|
10563
|
+
200: {
|
|
10564
|
+
headers: {
|
|
10565
|
+
[name: string]: unknown;
|
|
10566
|
+
};
|
|
10567
|
+
content: {
|
|
10568
|
+
"application/pdf": string;
|
|
10569
|
+
};
|
|
10570
|
+
};
|
|
10571
|
+
/** @description Invalid query (`VALIDATION_ERROR`). */
|
|
10572
|
+
400: {
|
|
10573
|
+
headers: {
|
|
10574
|
+
[name: string]: unknown;
|
|
10575
|
+
};
|
|
10576
|
+
content?: never;
|
|
10577
|
+
};
|
|
10578
|
+
401: components["responses"]["UnauthorizedError"];
|
|
10579
|
+
/** @description The referral program is not enabled for the tenant (`REFERRAL_PROGRAM_NOT_ENABLED`). */
|
|
10580
|
+
403: {
|
|
10581
|
+
headers: {
|
|
10582
|
+
[name: string]: unknown;
|
|
10583
|
+
};
|
|
10584
|
+
content?: never;
|
|
10585
|
+
};
|
|
10586
|
+
/** @description More than 5 report requests (downloads and Telegram sends together) in a minute (`RATE_LIMIT_EXCEEDED`). */
|
|
10587
|
+
429: {
|
|
10588
|
+
headers: {
|
|
10589
|
+
[name: string]: unknown;
|
|
10590
|
+
};
|
|
10591
|
+
content?: never;
|
|
10592
|
+
};
|
|
10593
|
+
};
|
|
10594
|
+
};
|
|
10595
|
+
put?: never;
|
|
10596
|
+
post?: never;
|
|
10597
|
+
delete?: never;
|
|
10598
|
+
options?: never;
|
|
10599
|
+
head?: never;
|
|
10600
|
+
patch?: never;
|
|
10601
|
+
trace?: never;
|
|
10602
|
+
};
|
|
10603
|
+
"/frontend/referrals/report/telegram": {
|
|
10604
|
+
parameters: {
|
|
10605
|
+
query?: never;
|
|
10606
|
+
header?: never;
|
|
10607
|
+
path?: never;
|
|
10608
|
+
cookie?: never;
|
|
10609
|
+
};
|
|
10610
|
+
get?: never;
|
|
10611
|
+
put?: never;
|
|
10612
|
+
/**
|
|
10613
|
+
* Send the monthly referral report to the user's Telegram
|
|
10614
|
+
* @description The same PDF as `GET /report`, delivered as a document to the chat the user has with the tenant's Telegram bot. Without `period` the last closed month is sent.
|
|
10615
|
+
*/
|
|
10616
|
+
post: {
|
|
10617
|
+
parameters: {
|
|
10618
|
+
query?: never;
|
|
10619
|
+
header?: never;
|
|
10620
|
+
path?: never;
|
|
10621
|
+
cookie?: never;
|
|
10622
|
+
};
|
|
10623
|
+
requestBody?: {
|
|
10624
|
+
content: {
|
|
10625
|
+
"application/json": {
|
|
10626
|
+
/**
|
|
10627
|
+
* @description UTC month; defaults to the last closed month.
|
|
10628
|
+
* @example 2026-08
|
|
10629
|
+
*/
|
|
10630
|
+
period?: string;
|
|
10631
|
+
};
|
|
10632
|
+
};
|
|
10633
|
+
};
|
|
10634
|
+
responses: {
|
|
10635
|
+
/** @description The report was handed to Telegram. */
|
|
10636
|
+
200: {
|
|
10637
|
+
headers: {
|
|
10638
|
+
[name: string]: unknown;
|
|
10639
|
+
};
|
|
10640
|
+
content: {
|
|
10641
|
+
"application/json": {
|
|
10642
|
+
/** @example true */
|
|
10643
|
+
success?: boolean;
|
|
10644
|
+
data?: {
|
|
10645
|
+
/** @example true */
|
|
10646
|
+
sent?: boolean;
|
|
10647
|
+
/** @example 2026-08 */
|
|
10648
|
+
period?: string;
|
|
10649
|
+
};
|
|
10650
|
+
};
|
|
10651
|
+
};
|
|
10652
|
+
};
|
|
10653
|
+
/** @description Invalid body (`VALIDATION_ERROR`). */
|
|
10654
|
+
400: {
|
|
10655
|
+
headers: {
|
|
10656
|
+
[name: string]: unknown;
|
|
10657
|
+
};
|
|
10658
|
+
content?: never;
|
|
10659
|
+
};
|
|
10660
|
+
401: components["responses"]["UnauthorizedError"];
|
|
10661
|
+
/** @description The referral program is not enabled for the tenant (`REFERRAL_PROGRAM_NOT_ENABLED`). */
|
|
10662
|
+
403: {
|
|
10663
|
+
headers: {
|
|
10664
|
+
[name: string]: unknown;
|
|
10665
|
+
};
|
|
10666
|
+
content?: never;
|
|
10667
|
+
};
|
|
10668
|
+
/** @description The user has not started the tenant's bot (`TELEGRAM_NOT_LINKED`), or the tenant runs no bot (`TELEGRAM_NOT_AVAILABLE`). */
|
|
10669
|
+
409: {
|
|
10670
|
+
headers: {
|
|
10671
|
+
[name: string]: unknown;
|
|
10672
|
+
};
|
|
10673
|
+
content?: never;
|
|
10674
|
+
};
|
|
10675
|
+
/** @description More than 5 report requests (downloads and Telegram sends together) in a minute (`RATE_LIMIT_EXCEEDED`). */
|
|
10676
|
+
429: {
|
|
10677
|
+
headers: {
|
|
10678
|
+
[name: string]: unknown;
|
|
10679
|
+
};
|
|
10680
|
+
content?: never;
|
|
10681
|
+
};
|
|
10682
|
+
/** @description Telegram did not accept the document (`TELEGRAM_DELIVERY_FAILED`); retry later. */
|
|
10683
|
+
503: {
|
|
10684
|
+
headers: {
|
|
10685
|
+
[name: string]: unknown;
|
|
10686
|
+
};
|
|
10687
|
+
content?: never;
|
|
10688
|
+
};
|
|
10689
|
+
};
|
|
10690
|
+
};
|
|
10691
|
+
delete?: never;
|
|
10692
|
+
options?: never;
|
|
10693
|
+
head?: never;
|
|
10694
|
+
patch?: never;
|
|
10695
|
+
trace?: never;
|
|
10696
|
+
};
|
|
10697
|
+
"/frontend/referrals/telegram-report": {
|
|
10698
|
+
parameters: {
|
|
10699
|
+
query?: never;
|
|
10700
|
+
header?: never;
|
|
10701
|
+
path?: never;
|
|
10702
|
+
cookie?: never;
|
|
10703
|
+
};
|
|
10704
|
+
/**
|
|
10705
|
+
* The "report every month" Telegram setting
|
|
10706
|
+
* @description Whether the user has linked the tenant's Telegram bot, and whether they asked for their referral report there every month. The report is sent when the month's payout is made.
|
|
10707
|
+
*/
|
|
10708
|
+
get: {
|
|
10709
|
+
parameters: {
|
|
10710
|
+
query?: never;
|
|
10711
|
+
header?: never;
|
|
10712
|
+
path?: never;
|
|
10713
|
+
cookie?: never;
|
|
10714
|
+
};
|
|
10715
|
+
requestBody?: never;
|
|
10716
|
+
responses: {
|
|
10717
|
+
/** @description The setting. */
|
|
10718
|
+
200: {
|
|
10719
|
+
headers: {
|
|
10720
|
+
[name: string]: unknown;
|
|
10721
|
+
};
|
|
10722
|
+
content: {
|
|
10723
|
+
"application/json": {
|
|
10724
|
+
/** @example true */
|
|
10725
|
+
success?: boolean;
|
|
10726
|
+
data?: components["schemas"]["ReferralTelegramReportSetting"];
|
|
10727
|
+
};
|
|
10728
|
+
};
|
|
10729
|
+
};
|
|
10730
|
+
401: components["responses"]["UnauthorizedError"];
|
|
10731
|
+
/** @description The referral program is not enabled for the tenant (`REFERRAL_PROGRAM_NOT_ENABLED`). */
|
|
10732
|
+
403: {
|
|
10733
|
+
headers: {
|
|
10734
|
+
[name: string]: unknown;
|
|
10735
|
+
};
|
|
10736
|
+
content?: never;
|
|
10737
|
+
};
|
|
10738
|
+
};
|
|
10739
|
+
};
|
|
10740
|
+
/** Switch the monthly Telegram report on or off */
|
|
10741
|
+
put: {
|
|
10742
|
+
parameters: {
|
|
10743
|
+
query?: never;
|
|
10744
|
+
header?: never;
|
|
10745
|
+
path?: never;
|
|
10746
|
+
cookie?: never;
|
|
10747
|
+
};
|
|
10748
|
+
requestBody: {
|
|
10749
|
+
content: {
|
|
10750
|
+
"application/json": {
|
|
10751
|
+
enabled: boolean;
|
|
10752
|
+
};
|
|
10753
|
+
};
|
|
10754
|
+
};
|
|
10755
|
+
responses: {
|
|
10756
|
+
/** @description The setting after the change. */
|
|
10757
|
+
200: {
|
|
10758
|
+
headers: {
|
|
10759
|
+
[name: string]: unknown;
|
|
10760
|
+
};
|
|
10761
|
+
content: {
|
|
10762
|
+
"application/json": {
|
|
10763
|
+
/** @example true */
|
|
10764
|
+
success?: boolean;
|
|
10765
|
+
data?: components["schemas"]["ReferralTelegramReportSetting"];
|
|
10766
|
+
};
|
|
10767
|
+
};
|
|
10768
|
+
};
|
|
10769
|
+
/** @description Invalid body (`VALIDATION_ERROR`). */
|
|
10770
|
+
400: {
|
|
10771
|
+
headers: {
|
|
10772
|
+
[name: string]: unknown;
|
|
10773
|
+
};
|
|
10774
|
+
content?: never;
|
|
10775
|
+
};
|
|
10776
|
+
401: components["responses"]["UnauthorizedError"];
|
|
10777
|
+
/** @description The referral program is not enabled for the tenant (`REFERRAL_PROGRAM_NOT_ENABLED`). */
|
|
10778
|
+
403: {
|
|
10779
|
+
headers: {
|
|
10780
|
+
[name: string]: unknown;
|
|
10781
|
+
};
|
|
10782
|
+
content?: never;
|
|
10783
|
+
};
|
|
10784
|
+
/** @description The user has not started the tenant's bot (`TELEGRAM_NOT_LINKED`) — there is nowhere to send the report. */
|
|
10785
|
+
409: {
|
|
10786
|
+
headers: {
|
|
10787
|
+
[name: string]: unknown;
|
|
10788
|
+
};
|
|
10789
|
+
content?: never;
|
|
10790
|
+
};
|
|
10791
|
+
};
|
|
10792
|
+
};
|
|
10793
|
+
post?: never;
|
|
10794
|
+
delete?: never;
|
|
10795
|
+
options?: never;
|
|
10796
|
+
head?: never;
|
|
10797
|
+
patch?: never;
|
|
10798
|
+
trace?: never;
|
|
10799
|
+
};
|
|
10800
|
+
"/frontend/rfi/{wallet_id}": {
|
|
10801
|
+
parameters: {
|
|
10802
|
+
query?: never;
|
|
10803
|
+
header?: never;
|
|
10804
|
+
path?: never;
|
|
10805
|
+
cookie?: never;
|
|
10806
|
+
};
|
|
10807
|
+
/**
|
|
10808
|
+
* List compliance requests (RFI) of an account, with the banner counters
|
|
10809
|
+
* @description Requests for information compliance sent about this account, newest first. `summary`
|
|
10810
|
+
* counts every open request regardless of paging — use it for the home-screen banner:
|
|
10811
|
+
* `action_required > 0` shows it, `overdue > 0` turns it red, `next_due_at` is the
|
|
10812
|
+
* nearest deadline. Any wallet member except the scoped `user` role may read.
|
|
10813
|
+
* Refresh on the realtime `data.changed` hint with entity `WALLET_RFI`.
|
|
10814
|
+
*
|
|
10815
|
+
*/
|
|
10816
|
+
get: {
|
|
10817
|
+
parameters: {
|
|
10818
|
+
query?: {
|
|
10819
|
+
/** @description `open` — everything still in progress (`action_required` + `awaiting_compliance`), the Open tab; `closed` — the Resolved tab. */
|
|
10820
|
+
status?: "open" | "action_required" | "awaiting_compliance" | "closed";
|
|
10821
|
+
/** @description Only the requests covering this transaction — what the transaction screen asks by to decide whether to show "compliance has questions". A transaction of another account, or one no request covers, returns an empty page. */
|
|
10822
|
+
order_uuid?: string;
|
|
10823
|
+
limit?: number;
|
|
10824
|
+
offset?: number;
|
|
10825
|
+
};
|
|
10826
|
+
header?: never;
|
|
10827
|
+
path: {
|
|
10828
|
+
/** @description The account the requests are about. Requests and their conversations are kept per account. */
|
|
10829
|
+
wallet_id: components["parameters"]["RfiWalletId"];
|
|
10830
|
+
};
|
|
10831
|
+
cookie?: never;
|
|
10832
|
+
};
|
|
10833
|
+
requestBody?: never;
|
|
10834
|
+
responses: {
|
|
10835
|
+
/** @description Page of requests and the open-request counters */
|
|
10836
|
+
200: {
|
|
10837
|
+
headers: {
|
|
10838
|
+
[name: string]: unknown;
|
|
10839
|
+
};
|
|
10840
|
+
content: {
|
|
10841
|
+
"application/json": {
|
|
10842
|
+
/** @example true */
|
|
10843
|
+
success?: boolean;
|
|
10844
|
+
data?: {
|
|
10845
|
+
summary?: {
|
|
10846
|
+
action_required?: number;
|
|
10847
|
+
overdue?: number;
|
|
10848
|
+
awaiting_compliance?: number;
|
|
10849
|
+
/** Format: date-time */
|
|
10850
|
+
next_due_at?: string | null;
|
|
10851
|
+
};
|
|
10852
|
+
items?: components["schemas"]["RfiCase"][];
|
|
10853
|
+
total?: number;
|
|
10854
|
+
limit?: number;
|
|
10855
|
+
offset?: number;
|
|
10856
|
+
};
|
|
10857
|
+
};
|
|
10858
|
+
};
|
|
10859
|
+
};
|
|
10860
|
+
403: components["responses"]["ForbiddenError"];
|
|
10861
|
+
};
|
|
10862
|
+
};
|
|
10863
|
+
put?: never;
|
|
10864
|
+
post?: never;
|
|
10865
|
+
delete?: never;
|
|
10866
|
+
options?: never;
|
|
10867
|
+
head?: never;
|
|
10868
|
+
patch?: never;
|
|
10869
|
+
trace?: never;
|
|
10870
|
+
};
|
|
10871
|
+
"/frontend/rfi/{wallet_id}/{case_id}": {
|
|
10872
|
+
parameters: {
|
|
10873
|
+
query?: never;
|
|
10874
|
+
header?: never;
|
|
10875
|
+
path?: never;
|
|
10876
|
+
cookie?: never;
|
|
10877
|
+
};
|
|
10878
|
+
/**
|
|
10879
|
+
* Get a compliance request with its conversation and covered transactions
|
|
10880
|
+
* @description The conversation holds compliance's questions and the client's answers, oldest first.
|
|
10881
|
+
* A request of another account answers 404.
|
|
10882
|
+
*
|
|
10883
|
+
*/
|
|
10884
|
+
get: {
|
|
10885
|
+
parameters: {
|
|
10886
|
+
query?: never;
|
|
10887
|
+
header?: never;
|
|
10888
|
+
path: {
|
|
10889
|
+
/** @description The account the requests are about. Requests and their conversations are kept per account. */
|
|
10890
|
+
wallet_id: components["parameters"]["RfiWalletId"];
|
|
10891
|
+
case_id: components["parameters"]["RfiCaseId"];
|
|
10892
|
+
};
|
|
10893
|
+
cookie?: never;
|
|
10894
|
+
};
|
|
10895
|
+
requestBody?: never;
|
|
10896
|
+
responses: {
|
|
10897
|
+
/** @description The request */
|
|
10898
|
+
200: {
|
|
10899
|
+
headers: {
|
|
10900
|
+
[name: string]: unknown;
|
|
10901
|
+
};
|
|
10902
|
+
content: {
|
|
10903
|
+
"application/json": {
|
|
10904
|
+
/** @example true */
|
|
10905
|
+
success?: boolean;
|
|
10906
|
+
data?: components["schemas"]["RfiCaseDetail"];
|
|
10907
|
+
};
|
|
10908
|
+
};
|
|
10909
|
+
};
|
|
10910
|
+
404: components["responses"]["NotFoundError"];
|
|
10911
|
+
};
|
|
10912
|
+
};
|
|
10913
|
+
put?: never;
|
|
10914
|
+
post?: never;
|
|
10915
|
+
delete?: never;
|
|
10916
|
+
options?: never;
|
|
10917
|
+
head?: never;
|
|
10918
|
+
patch?: never;
|
|
10919
|
+
trace?: never;
|
|
10920
|
+
};
|
|
10921
|
+
"/frontend/rfi/{wallet_id}/{case_id}/messages": {
|
|
10922
|
+
parameters: {
|
|
10923
|
+
query?: never;
|
|
10924
|
+
header?: never;
|
|
10925
|
+
path?: never;
|
|
10926
|
+
cookie?: never;
|
|
10927
|
+
};
|
|
10928
|
+
get?: never;
|
|
10929
|
+
put?: never;
|
|
10930
|
+
/**
|
|
10931
|
+
* Answer a compliance request
|
|
10932
|
+
* @description `multipart/form-data` with a `body` text field and up to 10 files under `files`
|
|
10933
|
+
* (PDF, JPEG, PNG, WebP, TXT, DOCX, XLSX; 20 MB each). At least one of the two is required.
|
|
10934
|
+
* The request moves to `awaiting_compliance`; answering again while compliance reviews is
|
|
10935
|
+
* allowed, and compliance may ask further rounds. Requires the `admin` role on the wallet.
|
|
10936
|
+
* Do not set `Content-Type` manually — the browser adds the multipart boundary.
|
|
10937
|
+
*
|
|
10938
|
+
*/
|
|
10939
|
+
post: {
|
|
10940
|
+
parameters: {
|
|
10941
|
+
query?: never;
|
|
10942
|
+
header?: never;
|
|
10943
|
+
path: {
|
|
10944
|
+
/** @description The account the requests are about. Requests and their conversations are kept per account. */
|
|
10945
|
+
wallet_id: components["parameters"]["RfiWalletId"];
|
|
10946
|
+
case_id: components["parameters"]["RfiCaseId"];
|
|
10947
|
+
};
|
|
10948
|
+
cookie?: never;
|
|
10949
|
+
};
|
|
10950
|
+
requestBody: {
|
|
10951
|
+
content: {
|
|
10952
|
+
"multipart/form-data": {
|
|
10953
|
+
body?: string;
|
|
10954
|
+
files?: string[];
|
|
10955
|
+
};
|
|
10956
|
+
};
|
|
10957
|
+
};
|
|
10958
|
+
responses: {
|
|
10959
|
+
/** @description The message as stored */
|
|
10960
|
+
201: {
|
|
10961
|
+
headers: {
|
|
10962
|
+
[name: string]: unknown;
|
|
10963
|
+
};
|
|
10964
|
+
content: {
|
|
10965
|
+
"application/json": {
|
|
10966
|
+
/** @example true */
|
|
10967
|
+
success?: boolean;
|
|
10968
|
+
data?: components["schemas"]["RfiMessage"];
|
|
10969
|
+
};
|
|
10970
|
+
};
|
|
10971
|
+
};
|
|
10972
|
+
/** @description `VALIDATION_ERROR` (empty answer, too many files), `FILE_TOO_LARGE`, `UNSUPPORTED_FILE_TYPE` or `INVALID_REQUEST` (malformed multipart) */
|
|
10973
|
+
400: {
|
|
10974
|
+
headers: {
|
|
10975
|
+
[name: string]: unknown;
|
|
10976
|
+
};
|
|
10977
|
+
content?: never;
|
|
10978
|
+
};
|
|
10979
|
+
404: components["responses"]["NotFoundError"];
|
|
10980
|
+
/** @description `RFI_CLOSED` — the request no longer accepts replies */
|
|
10981
|
+
409: {
|
|
10982
|
+
headers: {
|
|
10983
|
+
[name: string]: unknown;
|
|
10984
|
+
};
|
|
10985
|
+
content?: never;
|
|
10986
|
+
};
|
|
10987
|
+
/** @description Too many replies */
|
|
10988
|
+
429: {
|
|
10989
|
+
headers: {
|
|
10990
|
+
[name: string]: unknown;
|
|
10991
|
+
};
|
|
10992
|
+
content?: never;
|
|
10993
|
+
};
|
|
10994
|
+
};
|
|
10995
|
+
};
|
|
10996
|
+
delete?: never;
|
|
10997
|
+
options?: never;
|
|
10998
|
+
head?: never;
|
|
10999
|
+
patch?: never;
|
|
11000
|
+
trace?: never;
|
|
11001
|
+
};
|
|
11002
|
+
"/frontend/rfi/{wallet_id}/{case_id}/attachments/{attachment_id}": {
|
|
11003
|
+
parameters: {
|
|
11004
|
+
query?: never;
|
|
11005
|
+
header?: never;
|
|
11006
|
+
path?: never;
|
|
11007
|
+
cookie?: never;
|
|
11008
|
+
};
|
|
11009
|
+
/** Get a short-lived download link for a file in the conversation */
|
|
11010
|
+
get: {
|
|
11011
|
+
parameters: {
|
|
11012
|
+
query?: never;
|
|
11013
|
+
header?: never;
|
|
11014
|
+
path: {
|
|
11015
|
+
/** @description The account the requests are about. Requests and their conversations are kept per account. */
|
|
11016
|
+
wallet_id: components["parameters"]["RfiWalletId"];
|
|
11017
|
+
case_id: components["parameters"]["RfiCaseId"];
|
|
11018
|
+
attachment_id: string;
|
|
11019
|
+
};
|
|
11020
|
+
cookie?: never;
|
|
11021
|
+
};
|
|
11022
|
+
requestBody?: never;
|
|
11023
|
+
responses: {
|
|
11024
|
+
/** @description A signed link, valid for `expires_in` seconds — open it right away, do not store it */
|
|
11025
|
+
200: {
|
|
11026
|
+
headers: {
|
|
11027
|
+
[name: string]: unknown;
|
|
11028
|
+
};
|
|
11029
|
+
content: {
|
|
11030
|
+
"application/json": {
|
|
11031
|
+
/** @example true */
|
|
11032
|
+
success?: boolean;
|
|
11033
|
+
data?: {
|
|
11034
|
+
url?: string;
|
|
11035
|
+
/** @example 120 */
|
|
11036
|
+
expires_in?: number;
|
|
11037
|
+
};
|
|
11038
|
+
};
|
|
11039
|
+
};
|
|
11040
|
+
};
|
|
11041
|
+
404: components["responses"]["NotFoundError"];
|
|
11042
|
+
};
|
|
11043
|
+
};
|
|
11044
|
+
put?: never;
|
|
11045
|
+
post?: never;
|
|
11046
|
+
delete?: never;
|
|
11047
|
+
options?: never;
|
|
11048
|
+
head?: never;
|
|
11049
|
+
patch?: never;
|
|
11050
|
+
trace?: never;
|
|
11051
|
+
};
|
|
11052
|
+
"/frontend/user_verification/init": {
|
|
11053
|
+
parameters: {
|
|
11054
|
+
query?: never;
|
|
11055
|
+
header?: never;
|
|
11056
|
+
path?: never;
|
|
11057
|
+
cookie?: never;
|
|
11058
|
+
};
|
|
11059
|
+
get?: never;
|
|
11060
|
+
put?: never;
|
|
11061
|
+
/**
|
|
11062
|
+
* Initialize user-level Sumsub verification
|
|
11063
|
+
* @description Starts (or upgrades) the caller's user-level Sumsub verification via
|
|
11064
|
+
* the Auth API. The chosen `flow` maps to a tenant-configured Sumsub
|
|
11065
|
+
* level — `data` (personal information), `documents` (+identity
|
|
11066
|
+
* document) or `face` (+face check) — and the whole level is completed
|
|
11067
|
+
* as one WebSDK session. Returns the Sumsub applicant id plus a
|
|
11068
|
+
* short-lived WebSDK access token. The caller's Bearer token is
|
|
11069
|
+
* forwarded to the Auth API.
|
|
10065
11070
|
*
|
|
10066
11071
|
* User-scoped: no wallet is involved, unlike
|
|
10067
11072
|
* `/frontend/kyc_verification/{wallet_id}/init`.
|
|
@@ -11257,7 +12262,7 @@ export interface paths {
|
|
|
11257
12262
|
* Each wallet includes `access_role` (owner/admin/user/auditor) and `is_owner` boolean.
|
|
11258
12263
|
*
|
|
11259
12264
|
* Wallets where the caller holds the scoped `user` role are returned as a reduced shell
|
|
11260
|
-
* (`uuid`, `name`, `display_name`, `tenant_id`, `kyc_info`, `created_at` + the role fields) — no `logo_url`.
|
|
12265
|
+
* (`uuid`, `name`, `display_name`, `tenant_id`, `kyc_entity_id`, `kyc_info`, `created_at` + the role fields) — no `logo_url`.
|
|
11261
12266
|
*
|
|
11262
12267
|
* **Authentication**: Bearer token with x-tenant-id header required
|
|
11263
12268
|
*
|
|
@@ -11323,20 +12328,18 @@ export interface paths {
|
|
|
11323
12328
|
access_role: "owner" | "admin" | "user" | "auditor";
|
|
11324
12329
|
/** @description True if user is the wallet owner */
|
|
11325
12330
|
is_owner: boolean;
|
|
12331
|
+
/**
|
|
12332
|
+
* Format: uuid
|
|
12333
|
+
* @description KYC entity the wallet was opened for (`GET /kyc/entities`) — group the
|
|
12334
|
+
* list by it to see which accounts an entity already has. `null` for a
|
|
12335
|
+
* wallet created without one.
|
|
12336
|
+
*
|
|
12337
|
+
*/
|
|
12338
|
+
kyc_entity_id: string | null;
|
|
11326
12339
|
/** @description KYC entity attached to the wallet (joined from `kyc_entity`).
|
|
11327
12340
|
* `null` when the wallet has no KYC entity yet.
|
|
11328
12341
|
* */
|
|
11329
|
-
kyc_info:
|
|
11330
|
-
/** @description KYC entity type (e.g. INDIVIDUAL, BUSINESS) */
|
|
11331
|
-
type: string;
|
|
11332
|
-
/** @description KYC verification status (e.g. UNVERIFIED, PENDING, APPROVED, REJECTED) */
|
|
11333
|
-
status: string;
|
|
11334
|
-
business_name: string | null;
|
|
11335
|
-
first_name: string | null;
|
|
11336
|
-
last_name: string | null;
|
|
11337
|
-
email: string | null;
|
|
11338
|
-
phone: string | null;
|
|
11339
|
-
} | null;
|
|
12342
|
+
kyc_info: components["schemas"]["WalletKycInfo"] | null;
|
|
11340
12343
|
}[];
|
|
11341
12344
|
pagination: {
|
|
11342
12345
|
offset: number;
|
|
@@ -11373,6 +12376,10 @@ export interface paths {
|
|
|
11373
12376
|
* - `empty_name: false` or omitted (default) → a random placeholder name
|
|
11374
12377
|
* is generated (e.g., "Golden Vault 42").
|
|
11375
12378
|
* - `empty_name: true` → the wallet is created with `name: null`.
|
|
12379
|
+
* - **purpose** — what the account is opened for, one of the listed codes.
|
|
12380
|
+
* `other` needs a free-text **purpose_other**; any other code refuses it.
|
|
12381
|
+
* Stored once with the wallet: it cannot be changed later and no
|
|
12382
|
+
* endpoint returns it.
|
|
11376
12383
|
*
|
|
11377
12384
|
* **Authentication**: Bearer token with x-tenant-id header required
|
|
11378
12385
|
*
|
|
@@ -11410,6 +12417,21 @@ export interface paths {
|
|
|
11410
12417
|
*
|
|
11411
12418
|
*/
|
|
11412
12419
|
kyc_entity_id?: string;
|
|
12420
|
+
/**
|
|
12421
|
+
* @description What the account is opened for. Only the code travels — labels
|
|
12422
|
+
* are the client's. Write-once and never returned.
|
|
12423
|
+
*
|
|
12424
|
+
* @example payroll
|
|
12425
|
+
* @enum {string}
|
|
12426
|
+
*/
|
|
12427
|
+
purpose?: "payroll" | "client_or_project_funds" | "treasury_or_reserves" | "separate_by_team" | "separate_by_currency_or_region" | "other";
|
|
12428
|
+
/**
|
|
12429
|
+
* @description Free-text purpose. Required when `purpose` is `other`, refused
|
|
12430
|
+
* with any other `purpose` (a blank value counts as absent).
|
|
12431
|
+
*
|
|
12432
|
+
* @example Contractor payouts
|
|
12433
|
+
*/
|
|
12434
|
+
purpose_other?: string | null;
|
|
11413
12435
|
};
|
|
11414
12436
|
};
|
|
11415
12437
|
};
|
|
@@ -11438,25 +12460,22 @@ export interface paths {
|
|
|
11438
12460
|
tenant_id: string;
|
|
11439
12461
|
/** Format: date-time */
|
|
11440
12462
|
created_at: string;
|
|
12463
|
+
/**
|
|
12464
|
+
* Format: uuid
|
|
12465
|
+
* @description KYC entity the wallet was opened for. `null` for a wallet created without one.
|
|
12466
|
+
*/
|
|
12467
|
+
kyc_entity_id: string | null;
|
|
11441
12468
|
/** @description Mirrors the GET-wallet shape. `null` when the wallet was created
|
|
11442
12469
|
* without `kyc_entity_id`; populated with the linked entity otherwise.
|
|
11443
12470
|
* */
|
|
11444
|
-
kyc_info:
|
|
11445
|
-
type: string;
|
|
11446
|
-
status: string;
|
|
11447
|
-
business_name: string | null;
|
|
11448
|
-
first_name: string | null;
|
|
11449
|
-
last_name: string | null;
|
|
11450
|
-
email: string | null;
|
|
11451
|
-
phone: string | null;
|
|
11452
|
-
} | null;
|
|
12471
|
+
kyc_info: components["schemas"]["WalletKycInfo"] | null;
|
|
11453
12472
|
};
|
|
11454
12473
|
/** @example Wallet created successfully */
|
|
11455
12474
|
message: string;
|
|
11456
12475
|
};
|
|
11457
12476
|
};
|
|
11458
12477
|
};
|
|
11459
|
-
/** @description Bad request — invalid name
|
|
12478
|
+
/** @description Bad request — invalid name; `kyc_entity_id` is malformed / not an entity of the current user / belongs to another tenant; `purpose` is not a listed code; `purpose_other` is missing for `other`, longer than 255 characters or sent with another `purpose` */
|
|
11460
12479
|
400: {
|
|
11461
12480
|
headers: {
|
|
11462
12481
|
[name: string]: unknown;
|
|
@@ -11670,7 +12689,7 @@ export interface paths {
|
|
|
11670
12689
|
* - `owner` / `admin` / `auditor` — the full wallet (`WalletDetails`): identity, KYC, `balance`,
|
|
11671
12690
|
* `fiat_accounts`, `base_currency` and the totals.
|
|
11672
12691
|
* - `user` — a shell-only wallet (`WalletDetailsScopedUser`): `uuid`, `id`, `name`, `display_name`,
|
|
11673
|
-
* `tenant_id`, `kyc_info`, `created_at` + the role fields. `logo_url`, `balance`, `fiat_accounts`,
|
|
12692
|
+
* `tenant_id`, `kyc_entity_id`, `kyc_info`, `created_at` + the role fields. `logo_url`, `balance`, `fiat_accounts`,
|
|
11674
12693
|
* `base_currency`, `fiat_total`, `crypto_total`, `pending_balance` and `total_amount` are absent
|
|
11675
12694
|
* (not null) for that role — check `access_role` before reading them.
|
|
11676
12695
|
*
|
|
@@ -11788,18 +12807,15 @@ export interface paths {
|
|
|
11788
12807
|
tenant_id: string;
|
|
11789
12808
|
/** Format: date-time */
|
|
11790
12809
|
created_at: string;
|
|
12810
|
+
/**
|
|
12811
|
+
* Format: uuid
|
|
12812
|
+
* @description KYC entity the wallet was opened for. `null` for a wallet created without one.
|
|
12813
|
+
*/
|
|
12814
|
+
kyc_entity_id: string | null;
|
|
11791
12815
|
/** @description KYC entity attached to the wallet (joined from `kyc_entity`).
|
|
11792
12816
|
* `null` when the wallet has no KYC entity yet.
|
|
11793
12817
|
* */
|
|
11794
|
-
kyc_info:
|
|
11795
|
-
type: string;
|
|
11796
|
-
status: string;
|
|
11797
|
-
business_name: string | null;
|
|
11798
|
-
first_name: string | null;
|
|
11799
|
-
last_name: string | null;
|
|
11800
|
-
email: string | null;
|
|
11801
|
-
phone: string | null;
|
|
11802
|
-
} | null;
|
|
12818
|
+
kyc_info: components["schemas"]["WalletKycInfo"] | null;
|
|
11803
12819
|
};
|
|
11804
12820
|
/** @example Wallet updated successfully */
|
|
11805
12821
|
message: string;
|
|
@@ -13400,7 +14416,7 @@ export interface components {
|
|
|
13400
14416
|
* @example EXCHANGE_OMNI
|
|
13401
14417
|
* @enum {string}
|
|
13402
14418
|
*/
|
|
13403
|
-
OrderTypeId: "EXCHANGE_OMNI" | "EXCHANGE_OMNI_ONRAMP" | "EXCHANGE_OMNI_OFFRAMP" | "EXCHANGE_OMNI_CRYPTO" | "EXCHANGE_CRYPTO_INTERNAL" | "L2F_ACH_ONRAMP" | "L2F_ACH_OFFRAMP" | "L2F_SEPA_ONRAMP" | "L2F_SEPA_OFFRAMP" | "L2F_SWIFT_ONRAMP" | "L2F_SWIFT_OFFRAMP" | "L2F_WIRE_ONRAMP" | "L2F_WIRE_OFFRAMP" | "L2F_CHAPS_ONRAMP" | "L2F_CHAPS_OFFRAMP" | "L2F_FPS_ONRAMP" | "L2F_FPS_OFFRAMP" | "BRL_WIRE_ONRAMP" | "BRL_WIRE_OFFRAMP" | "BRL_ACH_ONRAMP" | "BRL_ACH_OFFRAMP" | "BRL_RTP_OFFRAMP" | "DLS_WIRE_ONRAMP" | "DLS_WIRE_OFFRAMP" | "DLS_ACH_ONRAMP" | "DLS_ACH_OFFRAMP" | "DLS_SEPA_ONRAMP" | "DLS_SEPA_OFFRAMP" | "DLS_SWIFT_ONRAMP" | "DLS_SWIFT_OFFRAMP" | "BC1_SEPA_ONRAMP" | "BC1_SEPA_OFFRAMP" | "BC1_SWIFT_ONRAMP" | "BC1_SWIFT_OFFRAMP" | "BC3_SEPA_ONRAMP" | "BC3_SEPA_OFFRAMP" | "RPP_SWIFT_OFFRAMP" | "RPP_SEPA_OFFRAMP" | "RPP_FPS_OFFRAMP" | "RPP_ACH_OFFRAMP" | "OMNIBUS_CRYPTO_TRANSFER" | "OMNIBUS_CRYPTO_WITHDRAWAL" | "OMNIBUS_INTERNAL_TRANSFER" | "SEGREGATED_CRYPTO_TRANSFER" | "TRANSFER_INTERNAL" | "TRANSFER_CARD_PREPAID" | "TRANSFER_CARD_SUBACCOUNT" | "TRANSFER_CARD_WHOLESALE" | "WITHDRAW_CARD_PREPAID" | "WITHDRAW_CARD_SUBACCOUNT" | "REFUND_CARD_PREPAID" | "REFUND_CARD_SUBACCOUNT" | "RN_CARDS_OFFRAMP" | "CARD_ISSUING_FEE" | "MONTHLY_FEE";
|
|
14419
|
+
OrderTypeId: "EXCHANGE_OMNI" | "EXCHANGE_OMNI_ONRAMP" | "EXCHANGE_OMNI_OFFRAMP" | "EXCHANGE_OMNI_CRYPTO" | "EXCHANGE_CRYPTO_INTERNAL" | "L2F_ACH_ONRAMP" | "L2F_ACH_OFFRAMP" | "L2F_SEPA_ONRAMP" | "L2F_SEPA_OFFRAMP" | "L2F_SWIFT_ONRAMP" | "L2F_SWIFT_OFFRAMP" | "L2F_WIRE_ONRAMP" | "L2F_WIRE_OFFRAMP" | "L2F_CHAPS_ONRAMP" | "L2F_CHAPS_OFFRAMP" | "L2F_FPS_ONRAMP" | "L2F_FPS_OFFRAMP" | "BRL_WIRE_ONRAMP" | "BRL_WIRE_OFFRAMP" | "BRL_ACH_ONRAMP" | "BRL_ACH_OFFRAMP" | "BRL_RTP_OFFRAMP" | "DLS_WIRE_ONRAMP" | "DLS_WIRE_OFFRAMP" | "DLS_ACH_ONRAMP" | "DLS_ACH_OFFRAMP" | "DLS_SEPA_ONRAMP" | "DLS_SEPA_OFFRAMP" | "DLS_SWIFT_ONRAMP" | "DLS_SWIFT_OFFRAMP" | "BC1_SEPA_ONRAMP" | "BC1_SEPA_OFFRAMP" | "BC1_SWIFT_ONRAMP" | "BC1_SWIFT_OFFRAMP" | "BC3_SEPA_ONRAMP" | "BC3_SEPA_OFFRAMP" | "RPP_SWIFT_OFFRAMP" | "RPP_SEPA_OFFRAMP" | "RPP_FPS_OFFRAMP" | "RPP_ACH_OFFRAMP" | "OMNIBUS_CRYPTO_TRANSFER" | "OMNIBUS_CRYPTO_WITHDRAWAL" | "OMNIBUS_INTERNAL_TRANSFER" | "SEGREGATED_CRYPTO_TRANSFER" | "TRANSFER_INTERNAL" | "TRANSFER_CARD_PREPAID" | "TRANSFER_CARD_SUBACCOUNT" | "TRANSFER_CARD_WHOLESALE" | "WITHDRAW_CARD_PREPAID" | "WITHDRAW_CARD_SUBACCOUNT" | "REFUND_CARD_PREPAID" | "REFUND_CARD_SUBACCOUNT" | "RN_CARDS_OFFRAMP" | "CARD_ISSUING_FEE" | "MONTHLY_FEE" | "REFERRAL_PAYOUT";
|
|
13404
14420
|
OrderCalculation: {
|
|
13405
14421
|
/**
|
|
13406
14422
|
* Format: uuid
|
|
@@ -15093,8 +16109,16 @@ export interface components {
|
|
|
15093
16109
|
};
|
|
15094
16110
|
/** @description KYC entity attached to the wallet. `null` when the wallet has no KYC entity yet. */
|
|
15095
16111
|
WalletKycInfo: {
|
|
15096
|
-
|
|
15097
|
-
|
|
16112
|
+
/**
|
|
16113
|
+
* @description KYC entity type, lower-case.
|
|
16114
|
+
* @enum {string}
|
|
16115
|
+
*/
|
|
16116
|
+
type: "individual" | "business" | "universal";
|
|
16117
|
+
/**
|
|
16118
|
+
* @description KYC verification status. A refusal is one of three values: `DECLINED`, `REJECT` or `SOFT_REJECT`. Only `APPROVED` (full access) and `HOLD` (read-only) open the wallet.
|
|
16119
|
+
* @enum {string}
|
|
16120
|
+
*/
|
|
16121
|
+
status: "APPROVED" | "DECLINED" | "PENDING" | "PROCESSING" | "HOLD" | "NEEDS_ATTENTION" | "DOUBLE" | "SOFT_REJECT" | "REJECT" | "UNVERIFIED" | "WAITING_ON_UBOS" | "WAITING_ON_REVIEW";
|
|
15098
16122
|
business_name: string | null;
|
|
15099
16123
|
first_name: string | null;
|
|
15100
16124
|
last_name: string | null;
|
|
@@ -15130,6 +16154,11 @@ export interface components {
|
|
|
15130
16154
|
tenant_id: string;
|
|
15131
16155
|
/** Format: date-time */
|
|
15132
16156
|
created_at: string;
|
|
16157
|
+
/**
|
|
16158
|
+
* Format: uuid
|
|
16159
|
+
* @description KYC entity the wallet was opened for (`GET /kyc/entities`). `null` for a wallet created without one.
|
|
16160
|
+
*/
|
|
16161
|
+
kyc_entity_id: string | null;
|
|
15133
16162
|
kyc_info: components["schemas"]["WalletKycInfo"] | null;
|
|
15134
16163
|
/** @description Aggregated crypto balances */
|
|
15135
16164
|
balance: components["schemas"]["WalletBalanceEntry"][];
|
|
@@ -15171,6 +16200,11 @@ export interface components {
|
|
|
15171
16200
|
tenant_id: string;
|
|
15172
16201
|
/** Format: date-time */
|
|
15173
16202
|
created_at: string;
|
|
16203
|
+
/**
|
|
16204
|
+
* Format: uuid
|
|
16205
|
+
* @description KYC entity the wallet was opened for (`GET /kyc/entities`). `null` for a wallet created without one.
|
|
16206
|
+
*/
|
|
16207
|
+
kyc_entity_id: string | null;
|
|
15174
16208
|
kyc_info: components["schemas"]["WalletKycInfo"] | null;
|
|
15175
16209
|
/**
|
|
15176
16210
|
* @description Always `user` on this shape. (enum property replaced by openapi-typescript)
|
|
@@ -15263,6 +16297,94 @@ export interface components {
|
|
|
15263
16297
|
/** Format: uuid */
|
|
15264
16298
|
wallet_id?: string;
|
|
15265
16299
|
};
|
|
16300
|
+
AmlProvider: {
|
|
16301
|
+
/** @description Name of the on-chain analytics partner, for the "Screening by …" line */
|
|
16302
|
+
display_name?: string;
|
|
16303
|
+
};
|
|
16304
|
+
AmlScreeningAsset: {
|
|
16305
|
+
/** Format: uuid */
|
|
16306
|
+
currency_id?: string;
|
|
16307
|
+
/** @example USDT */
|
|
16308
|
+
symbol?: string;
|
|
16309
|
+
chain_id?: number;
|
|
16310
|
+
/** @example TRX */
|
|
16311
|
+
chain_symbol?: string;
|
|
16312
|
+
/** @example Tron */
|
|
16313
|
+
chain_name?: string;
|
|
16314
|
+
};
|
|
16315
|
+
AmlCheckedCategory: {
|
|
16316
|
+
/** @example sanctions */
|
|
16317
|
+
code?: string;
|
|
16318
|
+
/** @example Sanctions */
|
|
16319
|
+
title?: string;
|
|
16320
|
+
/** @description True when the address has exposure to this category */
|
|
16321
|
+
flagged?: boolean;
|
|
16322
|
+
};
|
|
16323
|
+
AmlScreeningResult: {
|
|
16324
|
+
/** @enum {string} */
|
|
16325
|
+
risk_level?: "LOW" | "ELEVATED" | "HIGH";
|
|
16326
|
+
risk_score?: number;
|
|
16327
|
+
checked_categories?: components["schemas"]["AmlCheckedCategory"][];
|
|
16328
|
+
checked_categories_total?: number;
|
|
16329
|
+
/**
|
|
16330
|
+
* Format: date-time
|
|
16331
|
+
* @description The on-chain data cut the verdict was made against
|
|
16332
|
+
*/
|
|
16333
|
+
data_as_of?: string;
|
|
16334
|
+
};
|
|
16335
|
+
AmlScreening: {
|
|
16336
|
+
/** Format: uuid */
|
|
16337
|
+
id?: string;
|
|
16338
|
+
/**
|
|
16339
|
+
* @description PENDING — paid, not yet handed to the provider. SCREENING — the
|
|
16340
|
+
* provider is analysing it; poll `GET …/screenings/{id}`. COMPLETED —
|
|
16341
|
+
* `result` is set and the report can be downloaded. FAILED — no
|
|
16342
|
+
* result will come; the fee has been refunded to the paying balance.
|
|
16343
|
+
*
|
|
16344
|
+
* @enum {string}
|
|
16345
|
+
*/
|
|
16346
|
+
status?: "PENDING" | "SCREENING" | "COMPLETED" | "FAILED";
|
|
16347
|
+
/**
|
|
16348
|
+
* @description PAYMENT_FAILED — the fee could not be taken, nothing was charged; the other two refund the fee
|
|
16349
|
+
* @enum {string|null}
|
|
16350
|
+
*/
|
|
16351
|
+
failure_reason?: "PAYMENT_FAILED" | "PROVIDER_ERROR" | "TIMEOUT" | null;
|
|
16352
|
+
address?: string;
|
|
16353
|
+
asset?: components["schemas"]["AmlScreeningAsset"];
|
|
16354
|
+
provider?: components["schemas"]["AmlProvider"];
|
|
16355
|
+
/**
|
|
16356
|
+
* Format: uuid
|
|
16357
|
+
* @description The AML_CHECK fee order that paid for the screening
|
|
16358
|
+
*/
|
|
16359
|
+
order_id?: string | null;
|
|
16360
|
+
result?: components["schemas"]["AmlScreeningResult"] | null;
|
|
16361
|
+
report_available?: boolean;
|
|
16362
|
+
/** Format: date-time */
|
|
16363
|
+
created_at?: string;
|
|
16364
|
+
/** Format: date-time */
|
|
16365
|
+
completed_at?: string | null;
|
|
16366
|
+
};
|
|
16367
|
+
AmlScreeningQuote: {
|
|
16368
|
+
/** @example 10 */
|
|
16369
|
+
price_usd?: number;
|
|
16370
|
+
/** Format: uuid */
|
|
16371
|
+
price_currency_id?: string;
|
|
16372
|
+
/** Format: uuid */
|
|
16373
|
+
pay_from_currency_id?: string;
|
|
16374
|
+
/** @description How many USD one unit of the paying currency is worth */
|
|
16375
|
+
rate?: number;
|
|
16376
|
+
/** @description What leaves the wallet, in the paying currency */
|
|
16377
|
+
total?: number;
|
|
16378
|
+
provider?: components["schemas"]["AmlProvider"];
|
|
16379
|
+
/** @description Present when `currency_id` was given — whether that token's network can be screened */
|
|
16380
|
+
asset?: {
|
|
16381
|
+
/** Format: uuid */
|
|
16382
|
+
currency_id?: string;
|
|
16383
|
+
supported?: boolean;
|
|
16384
|
+
/** @enum {string|null} */
|
|
16385
|
+
unsupported_reason?: "NOT_CRYPTO" | "UNKNOWN_CURRENCY" | "NETWORK_NOT_SUPPORTED" | null;
|
|
16386
|
+
} | null;
|
|
16387
|
+
};
|
|
15266
16388
|
Invoice: {
|
|
15267
16389
|
/** Format: uuid */
|
|
15268
16390
|
id?: string;
|
|
@@ -15552,7 +16674,7 @@ export interface components {
|
|
|
15552
16674
|
/** Format: uuid */
|
|
15553
16675
|
id: string;
|
|
15554
16676
|
/** @enum {string} */
|
|
15555
|
-
type: "DEPOSIT_RECEIVED" | "TRANSFER_RECEIVED" | "ORDER_STATUS_CHANGED" | "KYC_STATUS_CHANGED" | "ANNOUNCEMENT" | "SYSTEM_MESSAGE" | "MASS_PAYOUT_STATUS_CHANGED" | "CARD_OTP";
|
|
16677
|
+
type: "DEPOSIT_RECEIVED" | "DEPOSIT_NOT_ACCEPTED" | "TRANSFER_RECEIVED" | "ORDER_STATUS_CHANGED" | "KYC_STATUS_CHANGED" | "ANNOUNCEMENT" | "SYSTEM_MESSAGE" | "MASS_PAYOUT_STATUS_CHANGED" | "CARD_OTP" | "RFI_REQUESTED" | "RFI_RESOLVED";
|
|
15556
16678
|
/** @description Structured fact snapshot; the client renders the presentation. Shape depends on `type`; evolution is additive-only. */
|
|
15557
16679
|
payload: Record<string, never>;
|
|
15558
16680
|
/** Format: uuid */
|
|
@@ -15572,6 +16694,241 @@ export interface components {
|
|
|
15572
16694
|
category: "TRANSACTIONS" | "COMPLIANCE" | "ANNOUNCEMENTS" | "SYSTEM" | "SECURITY";
|
|
15573
16695
|
enabled: boolean;
|
|
15574
16696
|
};
|
|
16697
|
+
ReferralLevelRate: {
|
|
16698
|
+
/** @example TRANSFER_CARD_SUBACCOUNT */
|
|
16699
|
+
order_type?: string;
|
|
16700
|
+
/** @example Top-ups */
|
|
16701
|
+
label?: string;
|
|
16702
|
+
/** @example 0.7 */
|
|
16703
|
+
percent?: number;
|
|
16704
|
+
/** @example 0 */
|
|
16705
|
+
fixed_usd?: number;
|
|
16706
|
+
};
|
|
16707
|
+
ReferralSummary: {
|
|
16708
|
+
/**
|
|
16709
|
+
* @description The agent's referral code. The invite link is built by the client (`t.me/<bot>?start=referrer=<code>`).
|
|
16710
|
+
* @example k3j9dm2p1q
|
|
16711
|
+
*/
|
|
16712
|
+
code?: string;
|
|
16713
|
+
/** @description The current UTC month — the one `earned_usd`, `level` and `breakdown` are about. */
|
|
16714
|
+
period?: {
|
|
16715
|
+
/** @example 2026-09 */
|
|
16716
|
+
month?: string;
|
|
16717
|
+
/** Format: date-time */
|
|
16718
|
+
closes_at?: string;
|
|
16719
|
+
};
|
|
16720
|
+
/**
|
|
16721
|
+
* @description Signed sum of this month's rewards (reversals are negative).
|
|
16722
|
+
* @example 186
|
|
16723
|
+
*/
|
|
16724
|
+
earned_usd?: number;
|
|
16725
|
+
/**
|
|
16726
|
+
* @description Earned in closed months and waiting for a payout.
|
|
16727
|
+
* @example 75
|
|
16728
|
+
*/
|
|
16729
|
+
pending_usd?: number;
|
|
16730
|
+
/** @example 980 */
|
|
16731
|
+
paid_total_usd?: number;
|
|
16732
|
+
/**
|
|
16733
|
+
* Format: date-time
|
|
16734
|
+
* @description When the first payout was made.
|
|
16735
|
+
*/
|
|
16736
|
+
paid_since?: string | null;
|
|
16737
|
+
/** @description Whether the tenant's default tariff runs the program. When false there is no ladder — `level` is null, `levels` and `terms` are empty — while the money fields are still real. */
|
|
16738
|
+
participating?: boolean;
|
|
16739
|
+
level?: {
|
|
16740
|
+
/** @example 2 */
|
|
16741
|
+
no?: number;
|
|
16742
|
+
/** @example Bronze */
|
|
16743
|
+
name?: string;
|
|
16744
|
+
/**
|
|
16745
|
+
* @description This month's turnover the level is measured by.
|
|
16746
|
+
* @example 186000
|
|
16747
|
+
*/
|
|
16748
|
+
turnover_usd?: number;
|
|
16749
|
+
/** @description The next level; null on the top one. */
|
|
16750
|
+
next?: {
|
|
16751
|
+
/** @example 3 */
|
|
16752
|
+
no?: number;
|
|
16753
|
+
/** @example Silver */
|
|
16754
|
+
name?: string;
|
|
16755
|
+
/** @example 300000 */
|
|
16756
|
+
min_turnover_usd?: number;
|
|
16757
|
+
/** @example 114000 */
|
|
16758
|
+
remaining_usd?: number;
|
|
16759
|
+
} | null;
|
|
16760
|
+
} | null;
|
|
16761
|
+
/** @description This month by order type — every type the program prices (a zero line before the first order), plus any type the month earned on. */
|
|
16762
|
+
breakdown?: {
|
|
16763
|
+
/** @example CARD_ISSUING_FEE */
|
|
16764
|
+
order_type?: string;
|
|
16765
|
+
/** @example Card openings */
|
|
16766
|
+
label?: string;
|
|
16767
|
+
/** @example 6 */
|
|
16768
|
+
orders?: number;
|
|
16769
|
+
/** @example 300 */
|
|
16770
|
+
amount_usd?: number;
|
|
16771
|
+
/** @example 150 */
|
|
16772
|
+
reward_usd?: number;
|
|
16773
|
+
/** @description What the type pays on the agent's current level; null when the program no longer prices it. */
|
|
16774
|
+
current_rate_percent?: number | null;
|
|
16775
|
+
current_fixed_usd?: number | null;
|
|
16776
|
+
}[];
|
|
16777
|
+
/** @description The ladder, for the levels carousel. */
|
|
16778
|
+
levels?: {
|
|
16779
|
+
no?: number;
|
|
16780
|
+
name?: string;
|
|
16781
|
+
min_turnover_usd?: number;
|
|
16782
|
+
/** @description The threshold of the next level; null on the top one. */
|
|
16783
|
+
max_turnover_usd?: number | null;
|
|
16784
|
+
rates?: components["schemas"]["ReferralLevelRate"][];
|
|
16785
|
+
}[];
|
|
16786
|
+
/** @description The "Program terms" lines — what each order type pays across the levels. */
|
|
16787
|
+
terms?: {
|
|
16788
|
+
order_type?: string;
|
|
16789
|
+
/** @example Top-ups */
|
|
16790
|
+
label?: string;
|
|
16791
|
+
/** @example 0.5%–1.3% */
|
|
16792
|
+
fee_label?: string;
|
|
16793
|
+
counts_toward_turnover?: boolean;
|
|
16794
|
+
}[];
|
|
16795
|
+
};
|
|
16796
|
+
ReferralEvent: {
|
|
16797
|
+
/** Format: uuid */
|
|
16798
|
+
id?: string;
|
|
16799
|
+
/** @enum {string} */
|
|
16800
|
+
kind?: "ACCRUAL" | "REVERSAL";
|
|
16801
|
+
/** @enum {string} */
|
|
16802
|
+
status?: "PENDING" | "PAID";
|
|
16803
|
+
/** @example TRANSFER_CARD_SUBACCOUNT */
|
|
16804
|
+
order_type?: string;
|
|
16805
|
+
/** @example Top-ups */
|
|
16806
|
+
label?: string;
|
|
16807
|
+
/**
|
|
16808
|
+
* @description The referred customer, anonymised.
|
|
16809
|
+
* @example Customer 4821
|
|
16810
|
+
*/
|
|
16811
|
+
customer_alias?: string;
|
|
16812
|
+
/** @example 18000 */
|
|
16813
|
+
amount_usd?: number;
|
|
16814
|
+
/** @example 0.7 */
|
|
16815
|
+
rate_percent?: number;
|
|
16816
|
+
/** @example 0 */
|
|
16817
|
+
fixed_usd?: number;
|
|
16818
|
+
/**
|
|
16819
|
+
* @description Negative on a REVERSAL.
|
|
16820
|
+
* @example 126
|
|
16821
|
+
*/
|
|
16822
|
+
reward_usd?: number;
|
|
16823
|
+
/** @example 2 */
|
|
16824
|
+
level_no?: number;
|
|
16825
|
+
/** @example Bronze */
|
|
16826
|
+
level_name?: string;
|
|
16827
|
+
/** Format: date-time */
|
|
16828
|
+
occurred_at?: string;
|
|
16829
|
+
};
|
|
16830
|
+
ReferralPayout: {
|
|
16831
|
+
/** @example 2026-08 */
|
|
16832
|
+
period?: string;
|
|
16833
|
+
/** @enum {string} */
|
|
16834
|
+
status?: "PROCESSING" | "PAID";
|
|
16835
|
+
/** @example 980 */
|
|
16836
|
+
amount_usd?: number;
|
|
16837
|
+
/** Format: date-time */
|
|
16838
|
+
created_at?: string;
|
|
16839
|
+
/** Format: date-time */
|
|
16840
|
+
paid_at?: string | null;
|
|
16841
|
+
};
|
|
16842
|
+
ReferralTelegramReportSetting: {
|
|
16843
|
+
/** @description The user has started the tenant's Telegram bot. */
|
|
16844
|
+
linked?: boolean;
|
|
16845
|
+
/** @description The report is sent to Telegram every month. Always false while not linked. */
|
|
16846
|
+
enabled?: boolean;
|
|
16847
|
+
};
|
|
16848
|
+
RfiCase: {
|
|
16849
|
+
/** Format: uuid */
|
|
16850
|
+
id?: string;
|
|
16851
|
+
/**
|
|
16852
|
+
* @description Human-facing id — quoted in the notification email
|
|
16853
|
+
* @example RFI-000042
|
|
16854
|
+
*/
|
|
16855
|
+
reference?: string;
|
|
16856
|
+
/** @enum {string} */
|
|
16857
|
+
type?: "onboarding" | "transaction" | "ongoing";
|
|
16858
|
+
/**
|
|
16859
|
+
* @description `action_required` — compliance asked and waits for the client; `awaiting_compliance` — the client answered, compliance is reviewing; `closed` — no longer accepts replies.
|
|
16860
|
+
* @enum {string}
|
|
16861
|
+
*/
|
|
16862
|
+
status?: "action_required" | "awaiting_compliance" | "closed";
|
|
16863
|
+
/**
|
|
16864
|
+
* Format: date-time
|
|
16865
|
+
* @description When the answer is due
|
|
16866
|
+
*/
|
|
16867
|
+
due_at?: string | null;
|
|
16868
|
+
/** @description True only while `action_required` and past `due_at` (red banner) */
|
|
16869
|
+
overdue?: boolean;
|
|
16870
|
+
/** @description One of the covered transactions is held until the request closes */
|
|
16871
|
+
holds_transaction?: boolean;
|
|
16872
|
+
/** @description The account is on hold while the request is open */
|
|
16873
|
+
holds_account?: boolean;
|
|
16874
|
+
/** @description How many transactions the request covers */
|
|
16875
|
+
transactions_count?: number;
|
|
16876
|
+
/** @description The last message of the conversation, for the card — null while nothing is visible yet */
|
|
16877
|
+
last_message?: {
|
|
16878
|
+
/** @enum {string} */
|
|
16879
|
+
author?: "compliance" | "client";
|
|
16880
|
+
/** @description One line of the message, up to 140 characters, cut at a word */
|
|
16881
|
+
preview?: string | null;
|
|
16882
|
+
/** Format: date-time */
|
|
16883
|
+
created_at?: string;
|
|
16884
|
+
} | null;
|
|
16885
|
+
/** Format: date-time */
|
|
16886
|
+
created_at?: string;
|
|
16887
|
+
/** Format: date-time */
|
|
16888
|
+
updated_at?: string;
|
|
16889
|
+
/** Format: date-time */
|
|
16890
|
+
closed_at?: string | null;
|
|
16891
|
+
};
|
|
16892
|
+
RfiAttachment: {
|
|
16893
|
+
/** Format: uuid */
|
|
16894
|
+
id?: string;
|
|
16895
|
+
file_name?: string;
|
|
16896
|
+
content_type?: string | null;
|
|
16897
|
+
size_bytes?: number | null;
|
|
16898
|
+
/** Format: date-time */
|
|
16899
|
+
created_at?: string;
|
|
16900
|
+
};
|
|
16901
|
+
RfiMessage: {
|
|
16902
|
+
/** Format: uuid */
|
|
16903
|
+
id?: string;
|
|
16904
|
+
/** @enum {string} */
|
|
16905
|
+
author?: "compliance" | "client";
|
|
16906
|
+
/**
|
|
16907
|
+
* @description The analyst's signature on a compliance message — first name and last initial, from the analyst's current name. Null on the client's own messages (render them as "You") and when no name is on record.
|
|
16908
|
+
* @example Polina S
|
|
16909
|
+
*/
|
|
16910
|
+
author_name?: string | null;
|
|
16911
|
+
body?: string;
|
|
16912
|
+
attachments?: components["schemas"]["RfiAttachment"][];
|
|
16913
|
+
/** Format: date-time */
|
|
16914
|
+
created_at?: string;
|
|
16915
|
+
};
|
|
16916
|
+
RfiTransaction: {
|
|
16917
|
+
order_uuid?: string;
|
|
16918
|
+
order_type?: string | null;
|
|
16919
|
+
status?: string | null;
|
|
16920
|
+
amount_from?: number | null;
|
|
16921
|
+
amount_to?: number | null;
|
|
16922
|
+
/** Format: date-time */
|
|
16923
|
+
created_at?: string | null;
|
|
16924
|
+
};
|
|
16925
|
+
RfiCaseDetail: components["schemas"]["RfiCase"] & {
|
|
16926
|
+
can_reply?: boolean;
|
|
16927
|
+
/** @description The conversation, oldest first */
|
|
16928
|
+
messages?: components["schemas"]["RfiMessage"][];
|
|
16929
|
+
/** @description Every transaction the request covers, in the order compliance linked them */
|
|
16930
|
+
transactions?: components["schemas"]["RfiTransaction"][];
|
|
16931
|
+
};
|
|
15575
16932
|
};
|
|
15576
16933
|
responses: {
|
|
15577
16934
|
/** @description Authentication credentials are missing or invalid */
|
|
@@ -15629,6 +16986,9 @@ export interface components {
|
|
|
15629
16986
|
* @example e04c0c85-b031-47d7-8541-207b4e83d91a
|
|
15630
16987
|
*/
|
|
15631
16988
|
TenantId: string;
|
|
16989
|
+
/** @description Wallet the screening belongs to (and is paid from) */
|
|
16990
|
+
AmlWalletId: string;
|
|
16991
|
+
AmlScreeningId: string;
|
|
15632
16992
|
/** @description Wallet the invoices belong to */
|
|
15633
16993
|
InvoiceWalletId: string;
|
|
15634
16994
|
InvoiceId: string;
|
|
@@ -15638,6 +16998,9 @@ export interface components {
|
|
|
15638
16998
|
MassPayoutWalletId: string;
|
|
15639
16999
|
MassPayoutId: string;
|
|
15640
17000
|
MassPayoutTemplateId: string;
|
|
17001
|
+
/** @description The account the requests are about. Requests and their conversations are kept per account. */
|
|
17002
|
+
RfiWalletId: string;
|
|
17003
|
+
RfiCaseId: string;
|
|
15641
17004
|
};
|
|
15642
17005
|
requestBodies: never;
|
|
15643
17006
|
headers: never;
|