squarefi-bff-api-module 1.36.66 → 1.36.68
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/frontend.d.ts +5 -0
- package/dist/api/frontend.js +7 -0
- package/dist/api/types/autogen/apiV1External.types.d.ts +17 -2
- package/dist/api/types/autogen/apiV1Frontend.types.d.ts +1510 -54
- 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 +11 -1
- package/dist/api/types/types.d.ts +13 -2
- 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
|
|
@@ -9060,12 +9374,18 @@ export interface paths {
|
|
|
9060
9374
|
};
|
|
9061
9375
|
requestBody?: never;
|
|
9062
9376
|
responses: {
|
|
9063
|
-
/** @description
|
|
9377
|
+
/** @description The whole order-type catalogue, each with the tenant markup */
|
|
9064
9378
|
200: {
|
|
9065
9379
|
headers: {
|
|
9066
9380
|
[name: string]: unknown;
|
|
9067
9381
|
};
|
|
9068
|
-
content
|
|
9382
|
+
content: {
|
|
9383
|
+
"application/json": {
|
|
9384
|
+
/** @example true */
|
|
9385
|
+
success: boolean;
|
|
9386
|
+
data: components["schemas"]["OrderTypeInfo"][];
|
|
9387
|
+
};
|
|
9388
|
+
};
|
|
9069
9389
|
};
|
|
9070
9390
|
};
|
|
9071
9391
|
};
|
|
@@ -9107,14 +9427,22 @@ export interface paths {
|
|
|
9107
9427
|
headers: {
|
|
9108
9428
|
[name: string]: unknown;
|
|
9109
9429
|
};
|
|
9110
|
-
content
|
|
9111
|
-
|
|
9112
|
-
|
|
9113
|
-
|
|
9430
|
+
content: {
|
|
9431
|
+
"application/json": {
|
|
9432
|
+
/** @example true */
|
|
9433
|
+
success: boolean;
|
|
9434
|
+
data: components["schemas"]["OrderTypeInfo"];
|
|
9435
|
+
};
|
|
9436
|
+
};
|
|
9437
|
+
};
|
|
9438
|
+
/** @description Order type not found */
|
|
9439
|
+
404: {
|
|
9114
9440
|
headers: {
|
|
9115
9441
|
[name: string]: unknown;
|
|
9116
9442
|
};
|
|
9117
|
-
content
|
|
9443
|
+
content: {
|
|
9444
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
9445
|
+
};
|
|
9118
9446
|
};
|
|
9119
9447
|
};
|
|
9120
9448
|
};
|
|
@@ -9641,6 +9969,8 @@ export interface paths {
|
|
|
9641
9969
|
type?: "token" | "native";
|
|
9642
9970
|
symbol?: string;
|
|
9643
9971
|
enabled_only?: boolean;
|
|
9972
|
+
/** @description Only tokens whose network the tenant's AML provider can screen addresses on */
|
|
9973
|
+
aml_supported?: boolean;
|
|
9644
9974
|
offset?: number;
|
|
9645
9975
|
limit?: number;
|
|
9646
9976
|
};
|
|
@@ -9650,7 +9980,7 @@ export interface paths {
|
|
|
9650
9980
|
};
|
|
9651
9981
|
requestBody?: never;
|
|
9652
9982
|
responses: {
|
|
9653
|
-
/** @description Currencies list retrieved successfully */
|
|
9983
|
+
/** @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
9984
|
200: {
|
|
9655
9985
|
headers: {
|
|
9656
9986
|
[name: string]: unknown;
|
|
@@ -9795,7 +10125,14 @@ export interface paths {
|
|
|
9795
10125
|
headers: {
|
|
9796
10126
|
[name: string]: unknown;
|
|
9797
10127
|
};
|
|
9798
|
-
content
|
|
10128
|
+
content: {
|
|
10129
|
+
"application/json": {
|
|
10130
|
+
/** @example true */
|
|
10131
|
+
success: boolean;
|
|
10132
|
+
data: components["schemas"]["ExchangeRate"][];
|
|
10133
|
+
pagination: components["schemas"]["PaginationResponse"];
|
|
10134
|
+
};
|
|
10135
|
+
};
|
|
9799
10136
|
};
|
|
9800
10137
|
401: components["responses"]["UnauthorizedError"];
|
|
9801
10138
|
};
|
|
@@ -9848,7 +10185,14 @@ export interface paths {
|
|
|
9848
10185
|
headers: {
|
|
9849
10186
|
[name: string]: unknown;
|
|
9850
10187
|
};
|
|
9851
|
-
content
|
|
10188
|
+
content: {
|
|
10189
|
+
"application/json": {
|
|
10190
|
+
/** @example true */
|
|
10191
|
+
success: boolean;
|
|
10192
|
+
data: components["schemas"]["ReferenceOrderType"][];
|
|
10193
|
+
pagination: components["schemas"]["PaginationResponse"];
|
|
10194
|
+
};
|
|
10195
|
+
};
|
|
9852
10196
|
};
|
|
9853
10197
|
401: components["responses"]["UnauthorizedError"];
|
|
9854
10198
|
};
|
|
@@ -9878,6 +10222,8 @@ export interface paths {
|
|
|
9878
10222
|
get: {
|
|
9879
10223
|
parameters: {
|
|
9880
10224
|
query?: {
|
|
10225
|
+
/** @description Only networks the tenant's AML provider can screen addresses on */
|
|
10226
|
+
aml_supported?: boolean;
|
|
9881
10227
|
offset?: number;
|
|
9882
10228
|
limit?: number;
|
|
9883
10229
|
};
|
|
@@ -9887,7 +10233,7 @@ export interface paths {
|
|
|
9887
10233
|
};
|
|
9888
10234
|
requestBody?: never;
|
|
9889
10235
|
responses: {
|
|
9890
|
-
/** @description Chains retrieved successfully */
|
|
10236
|
+
/** @description Chains retrieved successfully. Every item carries `aml_supported`; always false while AML screening is off for the tenant. */
|
|
9891
10237
|
200: {
|
|
9892
10238
|
headers: {
|
|
9893
10239
|
[name: string]: unknown;
|
|
@@ -9930,19 +10276,666 @@ export interface paths {
|
|
|
9930
10276
|
limit?: number;
|
|
9931
10277
|
};
|
|
9932
10278
|
header?: never;
|
|
9933
|
-
path?: never;
|
|
10279
|
+
path?: never;
|
|
10280
|
+
cookie?: never;
|
|
10281
|
+
};
|
|
10282
|
+
requestBody?: never;
|
|
10283
|
+
responses: {
|
|
10284
|
+
/** @description Countries retrieved successfully */
|
|
10285
|
+
200: {
|
|
10286
|
+
headers: {
|
|
10287
|
+
[name: string]: unknown;
|
|
10288
|
+
};
|
|
10289
|
+
content?: never;
|
|
10290
|
+
};
|
|
10291
|
+
401: components["responses"]["UnauthorizedError"];
|
|
10292
|
+
};
|
|
10293
|
+
};
|
|
10294
|
+
put?: never;
|
|
10295
|
+
post?: never;
|
|
10296
|
+
delete?: never;
|
|
10297
|
+
options?: never;
|
|
10298
|
+
head?: never;
|
|
10299
|
+
patch?: never;
|
|
10300
|
+
trace?: never;
|
|
10301
|
+
};
|
|
10302
|
+
"/frontend/reference/regions": {
|
|
10303
|
+
parameters: {
|
|
10304
|
+
query?: never;
|
|
10305
|
+
header?: never;
|
|
10306
|
+
path?: never;
|
|
10307
|
+
cookie?: never;
|
|
10308
|
+
};
|
|
10309
|
+
/**
|
|
10310
|
+
* List regions
|
|
10311
|
+
* @description Returns world regions (e.g. Europe, Asia, Americas).
|
|
10312
|
+
*
|
|
10313
|
+
* **Authentication**: Bearer token + x-tenant-id header
|
|
10314
|
+
*
|
|
10315
|
+
*/
|
|
10316
|
+
get: {
|
|
10317
|
+
parameters: {
|
|
10318
|
+
query?: {
|
|
10319
|
+
offset?: number;
|
|
10320
|
+
limit?: number;
|
|
10321
|
+
};
|
|
10322
|
+
header?: never;
|
|
10323
|
+
path?: never;
|
|
10324
|
+
cookie?: never;
|
|
10325
|
+
};
|
|
10326
|
+
requestBody?: never;
|
|
10327
|
+
responses: {
|
|
10328
|
+
/** @description Regions retrieved successfully */
|
|
10329
|
+
200: {
|
|
10330
|
+
headers: {
|
|
10331
|
+
[name: string]: unknown;
|
|
10332
|
+
};
|
|
10333
|
+
content?: never;
|
|
10334
|
+
};
|
|
10335
|
+
401: components["responses"]["UnauthorizedError"];
|
|
10336
|
+
};
|
|
10337
|
+
};
|
|
10338
|
+
put?: never;
|
|
10339
|
+
post?: never;
|
|
10340
|
+
delete?: never;
|
|
10341
|
+
options?: never;
|
|
10342
|
+
head?: never;
|
|
10343
|
+
patch?: never;
|
|
10344
|
+
trace?: never;
|
|
10345
|
+
};
|
|
10346
|
+
"/frontend/reference/states": {
|
|
10347
|
+
parameters: {
|
|
10348
|
+
query?: never;
|
|
10349
|
+
header?: never;
|
|
10350
|
+
path?: never;
|
|
10351
|
+
cookie?: never;
|
|
10352
|
+
};
|
|
10353
|
+
/**
|
|
10354
|
+
* List states
|
|
10355
|
+
* @description Returns states / provinces. Use `country_id` or `country_code` to filter.
|
|
10356
|
+
*
|
|
10357
|
+
* **Authentication**: Bearer token + x-tenant-id header
|
|
10358
|
+
*
|
|
10359
|
+
*/
|
|
10360
|
+
get: {
|
|
10361
|
+
parameters: {
|
|
10362
|
+
query?: {
|
|
10363
|
+
country_id?: number;
|
|
10364
|
+
country_code?: string;
|
|
10365
|
+
search?: string;
|
|
10366
|
+
offset?: number;
|
|
10367
|
+
limit?: number;
|
|
10368
|
+
};
|
|
10369
|
+
header?: never;
|
|
10370
|
+
path?: never;
|
|
10371
|
+
cookie?: never;
|
|
10372
|
+
};
|
|
10373
|
+
requestBody?: never;
|
|
10374
|
+
responses: {
|
|
10375
|
+
/** @description States retrieved successfully */
|
|
10376
|
+
200: {
|
|
10377
|
+
headers: {
|
|
10378
|
+
[name: string]: unknown;
|
|
10379
|
+
};
|
|
10380
|
+
content?: never;
|
|
10381
|
+
};
|
|
10382
|
+
401: components["responses"]["UnauthorizedError"];
|
|
10383
|
+
};
|
|
10384
|
+
};
|
|
10385
|
+
put?: never;
|
|
10386
|
+
post?: never;
|
|
10387
|
+
delete?: never;
|
|
10388
|
+
options?: never;
|
|
10389
|
+
head?: never;
|
|
10390
|
+
patch?: never;
|
|
10391
|
+
trace?: never;
|
|
10392
|
+
};
|
|
10393
|
+
"/frontend/referrals/summary": {
|
|
10394
|
+
parameters: {
|
|
10395
|
+
query?: never;
|
|
10396
|
+
header?: never;
|
|
10397
|
+
path?: never;
|
|
10398
|
+
cookie?: never;
|
|
10399
|
+
};
|
|
10400
|
+
/**
|
|
10401
|
+
* The agent's referral summary
|
|
10402
|
+
* @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.
|
|
10403
|
+
*/
|
|
10404
|
+
get: {
|
|
10405
|
+
parameters: {
|
|
10406
|
+
query?: never;
|
|
10407
|
+
header?: never;
|
|
10408
|
+
path?: never;
|
|
10409
|
+
cookie?: never;
|
|
10410
|
+
};
|
|
10411
|
+
requestBody?: never;
|
|
10412
|
+
responses: {
|
|
10413
|
+
/** @description The summary. */
|
|
10414
|
+
200: {
|
|
10415
|
+
headers: {
|
|
10416
|
+
[name: string]: unknown;
|
|
10417
|
+
};
|
|
10418
|
+
content: {
|
|
10419
|
+
"application/json": {
|
|
10420
|
+
/** @example true */
|
|
10421
|
+
success?: boolean;
|
|
10422
|
+
data?: components["schemas"]["ReferralSummary"];
|
|
10423
|
+
};
|
|
10424
|
+
};
|
|
10425
|
+
};
|
|
10426
|
+
401: components["responses"]["UnauthorizedError"];
|
|
10427
|
+
/** @description The referral program is not enabled for the tenant (`REFERRAL_PROGRAM_NOT_ENABLED`). */
|
|
10428
|
+
403: {
|
|
10429
|
+
headers: {
|
|
10430
|
+
[name: string]: unknown;
|
|
10431
|
+
};
|
|
10432
|
+
content?: never;
|
|
10433
|
+
};
|
|
10434
|
+
};
|
|
10435
|
+
};
|
|
10436
|
+
put?: never;
|
|
10437
|
+
post?: never;
|
|
10438
|
+
delete?: never;
|
|
10439
|
+
options?: never;
|
|
10440
|
+
head?: never;
|
|
10441
|
+
patch?: never;
|
|
10442
|
+
trace?: never;
|
|
10443
|
+
};
|
|
10444
|
+
"/frontend/referrals/events": {
|
|
10445
|
+
parameters: {
|
|
10446
|
+
query?: never;
|
|
10447
|
+
header?: never;
|
|
10448
|
+
path?: never;
|
|
10449
|
+
cookie?: never;
|
|
10450
|
+
};
|
|
10451
|
+
/**
|
|
10452
|
+
* The agent's rewards of a month
|
|
10453
|
+
* @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.
|
|
10454
|
+
*/
|
|
10455
|
+
get: {
|
|
10456
|
+
parameters: {
|
|
10457
|
+
query?: {
|
|
10458
|
+
/** @description UTC month `YYYY-MM`; defaults to the current one. */
|
|
10459
|
+
period?: string;
|
|
10460
|
+
offset?: number;
|
|
10461
|
+
limit?: number;
|
|
10462
|
+
};
|
|
10463
|
+
header?: never;
|
|
10464
|
+
path?: never;
|
|
10465
|
+
cookie?: never;
|
|
10466
|
+
};
|
|
10467
|
+
requestBody?: never;
|
|
10468
|
+
responses: {
|
|
10469
|
+
/** @description A page of rows; `meta.period` names the month served. */
|
|
10470
|
+
200: {
|
|
10471
|
+
headers: {
|
|
10472
|
+
[name: string]: unknown;
|
|
10473
|
+
};
|
|
10474
|
+
content: {
|
|
10475
|
+
"application/json": {
|
|
10476
|
+
/** @example true */
|
|
10477
|
+
success?: boolean;
|
|
10478
|
+
data?: components["schemas"]["ReferralEvent"][];
|
|
10479
|
+
pagination?: components["schemas"]["PaginationResponse"];
|
|
10480
|
+
meta?: {
|
|
10481
|
+
/** @example 2026-09 */
|
|
10482
|
+
period?: string;
|
|
10483
|
+
};
|
|
10484
|
+
};
|
|
10485
|
+
};
|
|
10486
|
+
};
|
|
10487
|
+
/** @description Invalid query (`VALIDATION_ERROR`). */
|
|
10488
|
+
400: {
|
|
10489
|
+
headers: {
|
|
10490
|
+
[name: string]: unknown;
|
|
10491
|
+
};
|
|
10492
|
+
content?: never;
|
|
10493
|
+
};
|
|
10494
|
+
401: components["responses"]["UnauthorizedError"];
|
|
10495
|
+
/** @description The referral program is not enabled for the tenant (`REFERRAL_PROGRAM_NOT_ENABLED`). */
|
|
10496
|
+
403: {
|
|
10497
|
+
headers: {
|
|
10498
|
+
[name: string]: unknown;
|
|
10499
|
+
};
|
|
10500
|
+
content?: never;
|
|
10501
|
+
};
|
|
10502
|
+
};
|
|
10503
|
+
};
|
|
10504
|
+
put?: never;
|
|
10505
|
+
post?: never;
|
|
10506
|
+
delete?: never;
|
|
10507
|
+
options?: never;
|
|
10508
|
+
head?: never;
|
|
10509
|
+
patch?: never;
|
|
10510
|
+
trace?: never;
|
|
10511
|
+
};
|
|
10512
|
+
"/frontend/referrals/payouts": {
|
|
10513
|
+
parameters: {
|
|
10514
|
+
query?: never;
|
|
10515
|
+
header?: never;
|
|
10516
|
+
path?: never;
|
|
10517
|
+
cookie?: never;
|
|
10518
|
+
};
|
|
10519
|
+
/**
|
|
10520
|
+
* The agent's payouts
|
|
10521
|
+
* @description One per closed month the agent was paid for (or is being paid for), newest month first.
|
|
10522
|
+
*/
|
|
10523
|
+
get: {
|
|
10524
|
+
parameters: {
|
|
10525
|
+
query?: {
|
|
10526
|
+
offset?: number;
|
|
10527
|
+
limit?: number;
|
|
10528
|
+
};
|
|
10529
|
+
header?: never;
|
|
10530
|
+
path?: never;
|
|
10531
|
+
cookie?: never;
|
|
10532
|
+
};
|
|
10533
|
+
requestBody?: never;
|
|
10534
|
+
responses: {
|
|
10535
|
+
/** @description A page of payouts. */
|
|
10536
|
+
200: {
|
|
10537
|
+
headers: {
|
|
10538
|
+
[name: string]: unknown;
|
|
10539
|
+
};
|
|
10540
|
+
content: {
|
|
10541
|
+
"application/json": {
|
|
10542
|
+
/** @example true */
|
|
10543
|
+
success?: boolean;
|
|
10544
|
+
data?: components["schemas"]["ReferralPayout"][];
|
|
10545
|
+
pagination?: components["schemas"]["PaginationResponse"];
|
|
10546
|
+
};
|
|
10547
|
+
};
|
|
10548
|
+
};
|
|
10549
|
+
401: components["responses"]["UnauthorizedError"];
|
|
10550
|
+
/** @description The referral program is not enabled for the tenant (`REFERRAL_PROGRAM_NOT_ENABLED`). */
|
|
10551
|
+
403: {
|
|
10552
|
+
headers: {
|
|
10553
|
+
[name: string]: unknown;
|
|
10554
|
+
};
|
|
10555
|
+
content?: never;
|
|
10556
|
+
};
|
|
10557
|
+
};
|
|
10558
|
+
};
|
|
10559
|
+
put?: never;
|
|
10560
|
+
post?: never;
|
|
10561
|
+
delete?: never;
|
|
10562
|
+
options?: never;
|
|
10563
|
+
head?: never;
|
|
10564
|
+
patch?: never;
|
|
10565
|
+
trace?: never;
|
|
10566
|
+
};
|
|
10567
|
+
"/frontend/referrals/report": {
|
|
10568
|
+
parameters: {
|
|
10569
|
+
query?: never;
|
|
10570
|
+
header?: never;
|
|
10571
|
+
path?: never;
|
|
10572
|
+
cookie?: never;
|
|
10573
|
+
};
|
|
10574
|
+
/**
|
|
10575
|
+
* Download the monthly referral report (PDF)
|
|
10576
|
+
* @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.
|
|
10577
|
+
*/
|
|
10578
|
+
get: {
|
|
10579
|
+
parameters: {
|
|
10580
|
+
query?: {
|
|
10581
|
+
/** @description UTC month `YYYY-MM`; defaults to the last closed month. */
|
|
10582
|
+
period?: string;
|
|
10583
|
+
};
|
|
10584
|
+
header?: never;
|
|
10585
|
+
path?: never;
|
|
10586
|
+
cookie?: never;
|
|
10587
|
+
};
|
|
10588
|
+
requestBody?: never;
|
|
10589
|
+
responses: {
|
|
10590
|
+
/** @description PDF file */
|
|
10591
|
+
200: {
|
|
10592
|
+
headers: {
|
|
10593
|
+
[name: string]: unknown;
|
|
10594
|
+
};
|
|
10595
|
+
content: {
|
|
10596
|
+
"application/pdf": string;
|
|
10597
|
+
};
|
|
10598
|
+
};
|
|
10599
|
+
/** @description Invalid query (`VALIDATION_ERROR`). */
|
|
10600
|
+
400: {
|
|
10601
|
+
headers: {
|
|
10602
|
+
[name: string]: unknown;
|
|
10603
|
+
};
|
|
10604
|
+
content?: never;
|
|
10605
|
+
};
|
|
10606
|
+
401: components["responses"]["UnauthorizedError"];
|
|
10607
|
+
/** @description The referral program is not enabled for the tenant (`REFERRAL_PROGRAM_NOT_ENABLED`). */
|
|
10608
|
+
403: {
|
|
10609
|
+
headers: {
|
|
10610
|
+
[name: string]: unknown;
|
|
10611
|
+
};
|
|
10612
|
+
content?: never;
|
|
10613
|
+
};
|
|
10614
|
+
/** @description More than 5 report requests (downloads and Telegram sends together) in a minute (`RATE_LIMIT_EXCEEDED`). */
|
|
10615
|
+
429: {
|
|
10616
|
+
headers: {
|
|
10617
|
+
[name: string]: unknown;
|
|
10618
|
+
};
|
|
10619
|
+
content?: never;
|
|
10620
|
+
};
|
|
10621
|
+
};
|
|
10622
|
+
};
|
|
10623
|
+
put?: never;
|
|
10624
|
+
post?: never;
|
|
10625
|
+
delete?: never;
|
|
10626
|
+
options?: never;
|
|
10627
|
+
head?: never;
|
|
10628
|
+
patch?: never;
|
|
10629
|
+
trace?: never;
|
|
10630
|
+
};
|
|
10631
|
+
"/frontend/referrals/report/telegram": {
|
|
10632
|
+
parameters: {
|
|
10633
|
+
query?: never;
|
|
10634
|
+
header?: never;
|
|
10635
|
+
path?: never;
|
|
10636
|
+
cookie?: never;
|
|
10637
|
+
};
|
|
10638
|
+
get?: never;
|
|
10639
|
+
put?: never;
|
|
10640
|
+
/**
|
|
10641
|
+
* Send the monthly referral report to the user's Telegram
|
|
10642
|
+
* @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.
|
|
10643
|
+
*/
|
|
10644
|
+
post: {
|
|
10645
|
+
parameters: {
|
|
10646
|
+
query?: never;
|
|
10647
|
+
header?: never;
|
|
10648
|
+
path?: never;
|
|
10649
|
+
cookie?: never;
|
|
10650
|
+
};
|
|
10651
|
+
requestBody?: {
|
|
10652
|
+
content: {
|
|
10653
|
+
"application/json": {
|
|
10654
|
+
/**
|
|
10655
|
+
* @description UTC month; defaults to the last closed month.
|
|
10656
|
+
* @example 2026-08
|
|
10657
|
+
*/
|
|
10658
|
+
period?: string;
|
|
10659
|
+
};
|
|
10660
|
+
};
|
|
10661
|
+
};
|
|
10662
|
+
responses: {
|
|
10663
|
+
/** @description The report was handed to Telegram. */
|
|
10664
|
+
200: {
|
|
10665
|
+
headers: {
|
|
10666
|
+
[name: string]: unknown;
|
|
10667
|
+
};
|
|
10668
|
+
content: {
|
|
10669
|
+
"application/json": {
|
|
10670
|
+
/** @example true */
|
|
10671
|
+
success?: boolean;
|
|
10672
|
+
data?: {
|
|
10673
|
+
/** @example true */
|
|
10674
|
+
sent?: boolean;
|
|
10675
|
+
/** @example 2026-08 */
|
|
10676
|
+
period?: string;
|
|
10677
|
+
};
|
|
10678
|
+
};
|
|
10679
|
+
};
|
|
10680
|
+
};
|
|
10681
|
+
/** @description Invalid body (`VALIDATION_ERROR`). */
|
|
10682
|
+
400: {
|
|
10683
|
+
headers: {
|
|
10684
|
+
[name: string]: unknown;
|
|
10685
|
+
};
|
|
10686
|
+
content?: never;
|
|
10687
|
+
};
|
|
10688
|
+
401: components["responses"]["UnauthorizedError"];
|
|
10689
|
+
/** @description The referral program is not enabled for the tenant (`REFERRAL_PROGRAM_NOT_ENABLED`). */
|
|
10690
|
+
403: {
|
|
10691
|
+
headers: {
|
|
10692
|
+
[name: string]: unknown;
|
|
10693
|
+
};
|
|
10694
|
+
content?: never;
|
|
10695
|
+
};
|
|
10696
|
+
/** @description The user has not started the tenant's bot (`TELEGRAM_NOT_LINKED`), or the tenant runs no bot (`TELEGRAM_NOT_AVAILABLE`). */
|
|
10697
|
+
409: {
|
|
10698
|
+
headers: {
|
|
10699
|
+
[name: string]: unknown;
|
|
10700
|
+
};
|
|
10701
|
+
content?: never;
|
|
10702
|
+
};
|
|
10703
|
+
/** @description More than 5 report requests (downloads and Telegram sends together) in a minute (`RATE_LIMIT_EXCEEDED`). */
|
|
10704
|
+
429: {
|
|
10705
|
+
headers: {
|
|
10706
|
+
[name: string]: unknown;
|
|
10707
|
+
};
|
|
10708
|
+
content?: never;
|
|
10709
|
+
};
|
|
10710
|
+
/** @description Telegram did not accept the document (`TELEGRAM_DELIVERY_FAILED`); retry later. */
|
|
10711
|
+
503: {
|
|
10712
|
+
headers: {
|
|
10713
|
+
[name: string]: unknown;
|
|
10714
|
+
};
|
|
10715
|
+
content?: never;
|
|
10716
|
+
};
|
|
10717
|
+
};
|
|
10718
|
+
};
|
|
10719
|
+
delete?: never;
|
|
10720
|
+
options?: never;
|
|
10721
|
+
head?: never;
|
|
10722
|
+
patch?: never;
|
|
10723
|
+
trace?: never;
|
|
10724
|
+
};
|
|
10725
|
+
"/frontend/referrals/telegram-report": {
|
|
10726
|
+
parameters: {
|
|
10727
|
+
query?: never;
|
|
10728
|
+
header?: never;
|
|
10729
|
+
path?: never;
|
|
10730
|
+
cookie?: never;
|
|
10731
|
+
};
|
|
10732
|
+
/**
|
|
10733
|
+
* The "report every month" Telegram setting
|
|
10734
|
+
* @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.
|
|
10735
|
+
*/
|
|
10736
|
+
get: {
|
|
10737
|
+
parameters: {
|
|
10738
|
+
query?: never;
|
|
10739
|
+
header?: never;
|
|
10740
|
+
path?: never;
|
|
10741
|
+
cookie?: never;
|
|
10742
|
+
};
|
|
10743
|
+
requestBody?: never;
|
|
10744
|
+
responses: {
|
|
10745
|
+
/** @description The setting. */
|
|
10746
|
+
200: {
|
|
10747
|
+
headers: {
|
|
10748
|
+
[name: string]: unknown;
|
|
10749
|
+
};
|
|
10750
|
+
content: {
|
|
10751
|
+
"application/json": {
|
|
10752
|
+
/** @example true */
|
|
10753
|
+
success?: boolean;
|
|
10754
|
+
data?: components["schemas"]["ReferralTelegramReportSetting"];
|
|
10755
|
+
};
|
|
10756
|
+
};
|
|
10757
|
+
};
|
|
10758
|
+
401: components["responses"]["UnauthorizedError"];
|
|
10759
|
+
/** @description The referral program is not enabled for the tenant (`REFERRAL_PROGRAM_NOT_ENABLED`). */
|
|
10760
|
+
403: {
|
|
10761
|
+
headers: {
|
|
10762
|
+
[name: string]: unknown;
|
|
10763
|
+
};
|
|
10764
|
+
content?: never;
|
|
10765
|
+
};
|
|
10766
|
+
};
|
|
10767
|
+
};
|
|
10768
|
+
/** Switch the monthly Telegram report on or off */
|
|
10769
|
+
put: {
|
|
10770
|
+
parameters: {
|
|
10771
|
+
query?: never;
|
|
10772
|
+
header?: never;
|
|
10773
|
+
path?: never;
|
|
10774
|
+
cookie?: never;
|
|
10775
|
+
};
|
|
10776
|
+
requestBody: {
|
|
10777
|
+
content: {
|
|
10778
|
+
"application/json": {
|
|
10779
|
+
enabled: boolean;
|
|
10780
|
+
};
|
|
10781
|
+
};
|
|
10782
|
+
};
|
|
10783
|
+
responses: {
|
|
10784
|
+
/** @description The setting after the change. */
|
|
10785
|
+
200: {
|
|
10786
|
+
headers: {
|
|
10787
|
+
[name: string]: unknown;
|
|
10788
|
+
};
|
|
10789
|
+
content: {
|
|
10790
|
+
"application/json": {
|
|
10791
|
+
/** @example true */
|
|
10792
|
+
success?: boolean;
|
|
10793
|
+
data?: components["schemas"]["ReferralTelegramReportSetting"];
|
|
10794
|
+
};
|
|
10795
|
+
};
|
|
10796
|
+
};
|
|
10797
|
+
/** @description Invalid body (`VALIDATION_ERROR`). */
|
|
10798
|
+
400: {
|
|
10799
|
+
headers: {
|
|
10800
|
+
[name: string]: unknown;
|
|
10801
|
+
};
|
|
10802
|
+
content?: never;
|
|
10803
|
+
};
|
|
10804
|
+
401: components["responses"]["UnauthorizedError"];
|
|
10805
|
+
/** @description The referral program is not enabled for the tenant (`REFERRAL_PROGRAM_NOT_ENABLED`). */
|
|
10806
|
+
403: {
|
|
10807
|
+
headers: {
|
|
10808
|
+
[name: string]: unknown;
|
|
10809
|
+
};
|
|
10810
|
+
content?: never;
|
|
10811
|
+
};
|
|
10812
|
+
/** @description The user has not started the tenant's bot (`TELEGRAM_NOT_LINKED`) — there is nowhere to send the report. */
|
|
10813
|
+
409: {
|
|
10814
|
+
headers: {
|
|
10815
|
+
[name: string]: unknown;
|
|
10816
|
+
};
|
|
10817
|
+
content?: never;
|
|
10818
|
+
};
|
|
10819
|
+
};
|
|
10820
|
+
};
|
|
10821
|
+
post?: never;
|
|
10822
|
+
delete?: never;
|
|
10823
|
+
options?: never;
|
|
10824
|
+
head?: never;
|
|
10825
|
+
patch?: never;
|
|
10826
|
+
trace?: never;
|
|
10827
|
+
};
|
|
10828
|
+
"/frontend/rfi/{wallet_id}": {
|
|
10829
|
+
parameters: {
|
|
10830
|
+
query?: never;
|
|
10831
|
+
header?: never;
|
|
10832
|
+
path?: never;
|
|
10833
|
+
cookie?: never;
|
|
10834
|
+
};
|
|
10835
|
+
/**
|
|
10836
|
+
* List compliance requests (RFI) of an account, with the banner counters
|
|
10837
|
+
* @description Requests for information compliance sent about this account, newest first. `summary`
|
|
10838
|
+
* counts every open request regardless of paging — use it for the home-screen banner:
|
|
10839
|
+
* `action_required > 0` shows it, `overdue > 0` turns it red, `next_due_at` is the
|
|
10840
|
+
* nearest deadline. Any wallet member except the scoped `user` role may read.
|
|
10841
|
+
* Refresh on the realtime `data.changed` hint with entity `WALLET_RFI`.
|
|
10842
|
+
*
|
|
10843
|
+
*/
|
|
10844
|
+
get: {
|
|
10845
|
+
parameters: {
|
|
10846
|
+
query?: {
|
|
10847
|
+
/** @description `open` — everything still in progress (`action_required` + `awaiting_compliance`), the Open tab; `closed` — the Resolved tab. */
|
|
10848
|
+
status?: "open" | "action_required" | "awaiting_compliance" | "closed";
|
|
10849
|
+
/** @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. */
|
|
10850
|
+
order_uuid?: string;
|
|
10851
|
+
limit?: number;
|
|
10852
|
+
offset?: number;
|
|
10853
|
+
};
|
|
10854
|
+
header?: never;
|
|
10855
|
+
path: {
|
|
10856
|
+
/** @description The account the requests are about. Requests and their conversations are kept per account. */
|
|
10857
|
+
wallet_id: components["parameters"]["RfiWalletId"];
|
|
10858
|
+
};
|
|
10859
|
+
cookie?: never;
|
|
10860
|
+
};
|
|
10861
|
+
requestBody?: never;
|
|
10862
|
+
responses: {
|
|
10863
|
+
/** @description Page of requests and the open-request counters */
|
|
10864
|
+
200: {
|
|
10865
|
+
headers: {
|
|
10866
|
+
[name: string]: unknown;
|
|
10867
|
+
};
|
|
10868
|
+
content: {
|
|
10869
|
+
"application/json": {
|
|
10870
|
+
/** @example true */
|
|
10871
|
+
success?: boolean;
|
|
10872
|
+
data?: {
|
|
10873
|
+
summary?: {
|
|
10874
|
+
action_required?: number;
|
|
10875
|
+
overdue?: number;
|
|
10876
|
+
awaiting_compliance?: number;
|
|
10877
|
+
/** Format: date-time */
|
|
10878
|
+
next_due_at?: string | null;
|
|
10879
|
+
};
|
|
10880
|
+
items?: components["schemas"]["RfiCase"][];
|
|
10881
|
+
total?: number;
|
|
10882
|
+
limit?: number;
|
|
10883
|
+
offset?: number;
|
|
10884
|
+
};
|
|
10885
|
+
};
|
|
10886
|
+
};
|
|
10887
|
+
};
|
|
10888
|
+
403: components["responses"]["ForbiddenError"];
|
|
10889
|
+
};
|
|
10890
|
+
};
|
|
10891
|
+
put?: never;
|
|
10892
|
+
post?: never;
|
|
10893
|
+
delete?: never;
|
|
10894
|
+
options?: never;
|
|
10895
|
+
head?: never;
|
|
10896
|
+
patch?: never;
|
|
10897
|
+
trace?: never;
|
|
10898
|
+
};
|
|
10899
|
+
"/frontend/rfi/{wallet_id}/{case_id}": {
|
|
10900
|
+
parameters: {
|
|
10901
|
+
query?: never;
|
|
10902
|
+
header?: never;
|
|
10903
|
+
path?: never;
|
|
10904
|
+
cookie?: never;
|
|
10905
|
+
};
|
|
10906
|
+
/**
|
|
10907
|
+
* Get a compliance request with its conversation and covered transactions
|
|
10908
|
+
* @description The conversation holds compliance's questions and the client's answers, oldest first.
|
|
10909
|
+
* A request of another account answers 404.
|
|
10910
|
+
*
|
|
10911
|
+
*/
|
|
10912
|
+
get: {
|
|
10913
|
+
parameters: {
|
|
10914
|
+
query?: never;
|
|
10915
|
+
header?: never;
|
|
10916
|
+
path: {
|
|
10917
|
+
/** @description The account the requests are about. Requests and their conversations are kept per account. */
|
|
10918
|
+
wallet_id: components["parameters"]["RfiWalletId"];
|
|
10919
|
+
case_id: components["parameters"]["RfiCaseId"];
|
|
10920
|
+
};
|
|
9934
10921
|
cookie?: never;
|
|
9935
10922
|
};
|
|
9936
10923
|
requestBody?: never;
|
|
9937
10924
|
responses: {
|
|
9938
|
-
/** @description
|
|
10925
|
+
/** @description The request */
|
|
9939
10926
|
200: {
|
|
9940
10927
|
headers: {
|
|
9941
10928
|
[name: string]: unknown;
|
|
9942
10929
|
};
|
|
9943
|
-
content
|
|
10930
|
+
content: {
|
|
10931
|
+
"application/json": {
|
|
10932
|
+
/** @example true */
|
|
10933
|
+
success?: boolean;
|
|
10934
|
+
data?: components["schemas"]["RfiCaseDetail"];
|
|
10935
|
+
};
|
|
10936
|
+
};
|
|
9944
10937
|
};
|
|
9945
|
-
|
|
10938
|
+
404: components["responses"]["NotFoundError"];
|
|
9946
10939
|
};
|
|
9947
10940
|
};
|
|
9948
10941
|
put?: never;
|
|
@@ -9953,87 +10946,127 @@ export interface paths {
|
|
|
9953
10946
|
patch?: never;
|
|
9954
10947
|
trace?: never;
|
|
9955
10948
|
};
|
|
9956
|
-
"/frontend/
|
|
10949
|
+
"/frontend/rfi/{wallet_id}/{case_id}/messages": {
|
|
9957
10950
|
parameters: {
|
|
9958
10951
|
query?: never;
|
|
9959
10952
|
header?: never;
|
|
9960
10953
|
path?: never;
|
|
9961
10954
|
cookie?: never;
|
|
9962
10955
|
};
|
|
10956
|
+
get?: never;
|
|
10957
|
+
put?: never;
|
|
9963
10958
|
/**
|
|
9964
|
-
*
|
|
9965
|
-
* @description
|
|
9966
|
-
*
|
|
9967
|
-
*
|
|
10959
|
+
* Answer a compliance request
|
|
10960
|
+
* @description `multipart/form-data` with a `body` text field and up to 10 files under `files`
|
|
10961
|
+
* (PDF, JPEG, PNG, WebP, TXT, DOCX, XLSX; 20 MB each). At least one of the two is required.
|
|
10962
|
+
* The request moves to `awaiting_compliance`; answering again while compliance reviews is
|
|
10963
|
+
* allowed, and compliance may ask further rounds. Requires the `admin` role on the wallet.
|
|
10964
|
+
* Do not set `Content-Type` manually — the browser adds the multipart boundary.
|
|
9968
10965
|
*
|
|
9969
10966
|
*/
|
|
9970
|
-
|
|
10967
|
+
post: {
|
|
9971
10968
|
parameters: {
|
|
9972
|
-
query?:
|
|
9973
|
-
offset?: number;
|
|
9974
|
-
limit?: number;
|
|
9975
|
-
};
|
|
10969
|
+
query?: never;
|
|
9976
10970
|
header?: never;
|
|
9977
|
-
path
|
|
10971
|
+
path: {
|
|
10972
|
+
/** @description The account the requests are about. Requests and their conversations are kept per account. */
|
|
10973
|
+
wallet_id: components["parameters"]["RfiWalletId"];
|
|
10974
|
+
case_id: components["parameters"]["RfiCaseId"];
|
|
10975
|
+
};
|
|
9978
10976
|
cookie?: never;
|
|
9979
10977
|
};
|
|
9980
|
-
requestBody
|
|
10978
|
+
requestBody: {
|
|
10979
|
+
content: {
|
|
10980
|
+
"multipart/form-data": {
|
|
10981
|
+
body?: string;
|
|
10982
|
+
files?: string[];
|
|
10983
|
+
};
|
|
10984
|
+
};
|
|
10985
|
+
};
|
|
9981
10986
|
responses: {
|
|
9982
|
-
/** @description
|
|
9983
|
-
|
|
10987
|
+
/** @description The message as stored */
|
|
10988
|
+
201: {
|
|
10989
|
+
headers: {
|
|
10990
|
+
[name: string]: unknown;
|
|
10991
|
+
};
|
|
10992
|
+
content: {
|
|
10993
|
+
"application/json": {
|
|
10994
|
+
/** @example true */
|
|
10995
|
+
success?: boolean;
|
|
10996
|
+
data?: components["schemas"]["RfiMessage"];
|
|
10997
|
+
};
|
|
10998
|
+
};
|
|
10999
|
+
};
|
|
11000
|
+
/** @description `VALIDATION_ERROR` (empty answer, too many files), `FILE_TOO_LARGE`, `UNSUPPORTED_FILE_TYPE` or `INVALID_REQUEST` (malformed multipart) */
|
|
11001
|
+
400: {
|
|
11002
|
+
headers: {
|
|
11003
|
+
[name: string]: unknown;
|
|
11004
|
+
};
|
|
11005
|
+
content?: never;
|
|
11006
|
+
};
|
|
11007
|
+
404: components["responses"]["NotFoundError"];
|
|
11008
|
+
/** @description `RFI_CLOSED` — the request no longer accepts replies */
|
|
11009
|
+
409: {
|
|
11010
|
+
headers: {
|
|
11011
|
+
[name: string]: unknown;
|
|
11012
|
+
};
|
|
11013
|
+
content?: never;
|
|
11014
|
+
};
|
|
11015
|
+
/** @description Too many replies */
|
|
11016
|
+
429: {
|
|
9984
11017
|
headers: {
|
|
9985
11018
|
[name: string]: unknown;
|
|
9986
11019
|
};
|
|
9987
11020
|
content?: never;
|
|
9988
11021
|
};
|
|
9989
|
-
401: components["responses"]["UnauthorizedError"];
|
|
9990
11022
|
};
|
|
9991
11023
|
};
|
|
9992
|
-
put?: never;
|
|
9993
|
-
post?: never;
|
|
9994
11024
|
delete?: never;
|
|
9995
11025
|
options?: never;
|
|
9996
11026
|
head?: never;
|
|
9997
11027
|
patch?: never;
|
|
9998
11028
|
trace?: never;
|
|
9999
11029
|
};
|
|
10000
|
-
"/frontend/
|
|
11030
|
+
"/frontend/rfi/{wallet_id}/{case_id}/attachments/{attachment_id}": {
|
|
10001
11031
|
parameters: {
|
|
10002
11032
|
query?: never;
|
|
10003
11033
|
header?: never;
|
|
10004
11034
|
path?: never;
|
|
10005
11035
|
cookie?: never;
|
|
10006
11036
|
};
|
|
10007
|
-
/**
|
|
10008
|
-
* List states
|
|
10009
|
-
* @description Returns states / provinces. Use `country_id` or `country_code` to filter.
|
|
10010
|
-
*
|
|
10011
|
-
* **Authentication**: Bearer token + x-tenant-id header
|
|
10012
|
-
*
|
|
10013
|
-
*/
|
|
11037
|
+
/** Get a short-lived download link for a file in the conversation */
|
|
10014
11038
|
get: {
|
|
10015
11039
|
parameters: {
|
|
10016
|
-
query?:
|
|
10017
|
-
country_id?: number;
|
|
10018
|
-
country_code?: string;
|
|
10019
|
-
search?: string;
|
|
10020
|
-
offset?: number;
|
|
10021
|
-
limit?: number;
|
|
10022
|
-
};
|
|
11040
|
+
query?: never;
|
|
10023
11041
|
header?: never;
|
|
10024
|
-
path
|
|
11042
|
+
path: {
|
|
11043
|
+
/** @description The account the requests are about. Requests and their conversations are kept per account. */
|
|
11044
|
+
wallet_id: components["parameters"]["RfiWalletId"];
|
|
11045
|
+
case_id: components["parameters"]["RfiCaseId"];
|
|
11046
|
+
attachment_id: string;
|
|
11047
|
+
};
|
|
10025
11048
|
cookie?: never;
|
|
10026
11049
|
};
|
|
10027
11050
|
requestBody?: never;
|
|
10028
11051
|
responses: {
|
|
10029
|
-
/** @description
|
|
11052
|
+
/** @description A signed link, valid for `expires_in` seconds — open it right away, do not store it */
|
|
10030
11053
|
200: {
|
|
10031
11054
|
headers: {
|
|
10032
11055
|
[name: string]: unknown;
|
|
10033
11056
|
};
|
|
10034
|
-
content
|
|
11057
|
+
content: {
|
|
11058
|
+
"application/json": {
|
|
11059
|
+
/** @example true */
|
|
11060
|
+
success?: boolean;
|
|
11061
|
+
data?: {
|
|
11062
|
+
url?: string;
|
|
11063
|
+
/** @example 120 */
|
|
11064
|
+
expires_in?: number;
|
|
11065
|
+
};
|
|
11066
|
+
};
|
|
11067
|
+
};
|
|
10035
11068
|
};
|
|
10036
|
-
|
|
11069
|
+
404: components["responses"]["NotFoundError"];
|
|
10037
11070
|
};
|
|
10038
11071
|
};
|
|
10039
11072
|
put?: never;
|
|
@@ -13411,7 +14444,7 @@ export interface components {
|
|
|
13411
14444
|
* @example EXCHANGE_OMNI
|
|
13412
14445
|
* @enum {string}
|
|
13413
14446
|
*/
|
|
13414
|
-
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";
|
|
14447
|
+
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";
|
|
13415
14448
|
OrderCalculation: {
|
|
13416
14449
|
/**
|
|
13417
14450
|
* Format: uuid
|
|
@@ -13480,6 +14513,90 @@ export interface components {
|
|
|
13480
14513
|
total: number;
|
|
13481
14514
|
has_more: boolean;
|
|
13482
14515
|
};
|
|
14516
|
+
/** @description A currency pair enabled for the tenant: the `exchange_rates` row with the tenant FX spread applied. Pairs a vendor rate table adds for its own order types (Reap Payments, `RPP_*`) have no `id`. */
|
|
14517
|
+
ExchangeRate: {
|
|
14518
|
+
/** @description Absent on a vendor-only pair */
|
|
14519
|
+
id?: number;
|
|
14520
|
+
/** Format: date-time */
|
|
14521
|
+
updated_at: string;
|
|
14522
|
+
/** @description Symbol of the currency sold */
|
|
14523
|
+
from?: string;
|
|
14524
|
+
/** @description Symbol of the currency bought */
|
|
14525
|
+
to?: string;
|
|
14526
|
+
/** @description Rate the tenant trades at — `base_rate` with `fx_spread_percent` taken off */
|
|
14527
|
+
rate: number;
|
|
14528
|
+
/** @description Exact inverse of `rate` */
|
|
14529
|
+
inverted_rate: number;
|
|
14530
|
+
/**
|
|
14531
|
+
* @description Feed the market rate came from; `reap_payments` on vendor pairs
|
|
14532
|
+
* @enum {string|null}
|
|
14533
|
+
*/
|
|
14534
|
+
rate_source?: "cryptomus" | "coingecko" | "openexchangerates" | "reap_payments" | null;
|
|
14535
|
+
/** Format: uuid */
|
|
14536
|
+
from_uuid: string;
|
|
14537
|
+
/** Format: uuid */
|
|
14538
|
+
to_uuid: string;
|
|
14539
|
+
/** @description Market rate before the tenant FX spread */
|
|
14540
|
+
base_rate: number;
|
|
14541
|
+
/** @description Tenant FX spread taken off `base_rate`, in percent; 0 when none applies */
|
|
14542
|
+
fx_spread_percent: number;
|
|
14543
|
+
};
|
|
14544
|
+
/**
|
|
14545
|
+
* @description Rail an order type pays through (`order_types.payment_method`)
|
|
14546
|
+
* @enum {string}
|
|
14547
|
+
*/
|
|
14548
|
+
OrderPaymentMethod: "ACH" | "SWIFT" | "SEPA" | "CRYPTO_EXTERNAL" | "CRYPTO_INTERNAL" | "CHAPS" | "FPS" | "FEDWIRE" | "RTP" | "INTERNAL" | "CARD";
|
|
14549
|
+
/** @description The tenant's markup for the order type (`tenant_order_type_rates`) */
|
|
14550
|
+
OrderTypeTenantRates: {
|
|
14551
|
+
markup_percent: number | null;
|
|
14552
|
+
markup_fixed: number | null;
|
|
14553
|
+
mon_min_usd: number | null;
|
|
14554
|
+
};
|
|
14555
|
+
/** @description An order type from the global catalogue (`order_types`), with its KYC rails and the tenant markup. */
|
|
14556
|
+
OrderTypeInfo: {
|
|
14557
|
+
/** @description Order type id, e.g. `TRANSFER_CARD_SUBACCOUNT` */
|
|
14558
|
+
id: string;
|
|
14559
|
+
name: string | null;
|
|
14560
|
+
description: string | null;
|
|
14561
|
+
/** @enum {string|null} */
|
|
14562
|
+
transaction_type: "deposit" | "withdrawal" | null;
|
|
14563
|
+
payment_method: components["schemas"]["OrderPaymentMethod"] | null;
|
|
14564
|
+
is_internal: boolean | null;
|
|
14565
|
+
/** @description Trusted order types skip the OTP step on approve */
|
|
14566
|
+
is_trusted: boolean;
|
|
14567
|
+
is_deprecated: boolean;
|
|
14568
|
+
/** @description Payouts are limited to the wallet owner's own account */
|
|
14569
|
+
first_party_only: boolean;
|
|
14570
|
+
/**
|
|
14571
|
+
* Format: uuid
|
|
14572
|
+
* @description Legacy single rail; use `order_types_kyc_rails`
|
|
14573
|
+
*/
|
|
14574
|
+
kyc_rails_id: string | null;
|
|
14575
|
+
/** @description Minimum amount the product should allow */
|
|
14576
|
+
min_amount: number | null;
|
|
14577
|
+
/** @description Maximum amount the product should allow */
|
|
14578
|
+
max_amount: number | null;
|
|
14579
|
+
order_types_kyc_rails: {
|
|
14580
|
+
/** Format: uuid */
|
|
14581
|
+
id: string;
|
|
14582
|
+
/** Format: uuid */
|
|
14583
|
+
kyc_rail_id: string;
|
|
14584
|
+
}[];
|
|
14585
|
+
/** @description Null when the tenant has no rate row for the type; absent if the rates lookup failed */
|
|
14586
|
+
tenant_rates?: components["schemas"]["OrderTypeTenantRates"] | null;
|
|
14587
|
+
};
|
|
14588
|
+
/** @description An order type enabled for the tenant — one with a `tenant_order_type_rates` row. */
|
|
14589
|
+
ReferenceOrderType: {
|
|
14590
|
+
id: string;
|
|
14591
|
+
description: string | null;
|
|
14592
|
+
is_internal: boolean | null;
|
|
14593
|
+
payment_method: components["schemas"]["OrderPaymentMethod"] | null;
|
|
14594
|
+
is_trusted: boolean;
|
|
14595
|
+
min_amount: number | null;
|
|
14596
|
+
max_amount: number | null;
|
|
14597
|
+
first_party_only: boolean;
|
|
14598
|
+
tenant_rates: components["schemas"]["OrderTypeTenantRates"];
|
|
14599
|
+
};
|
|
13483
14600
|
ErrorResponse: {
|
|
13484
14601
|
/** @example false */
|
|
13485
14602
|
success?: boolean;
|
|
@@ -14687,7 +15804,7 @@ export interface components {
|
|
|
14687
15804
|
transaction_amount_currency?: string | null;
|
|
14688
15805
|
/** @description Total amount debited (including fees) */
|
|
14689
15806
|
billing_amount?: number | null;
|
|
14690
|
-
/**
|
|
15807
|
+
/** @description Currency of `billing_amount`. Not uniform across rails: a currency uuid on most orders, an ISO code (e.g. `EUR`) on L2F off-ramps, the destination currency uuid on BC/DLS on-ramps. Use the order's `from_uuid` for the debited currency. */
|
|
14691
15808
|
billing_amount_currency?: string | null;
|
|
14692
15809
|
fee?: number | null;
|
|
14693
15810
|
/** Format: uuid */
|
|
@@ -14734,6 +15851,11 @@ export interface components {
|
|
|
14734
15851
|
linked_order_uuid?: string | null;
|
|
14735
15852
|
/** @description True when the order settled as an internal (on-platform) transfer */
|
|
14736
15853
|
is_internal?: boolean | null;
|
|
15854
|
+
/**
|
|
15855
|
+
* @description Leg side of an internal transfer: 'out' on the sender's order, 'in' on the receiver's. Card authorizations carry 'out', their refunds 'in'.
|
|
15856
|
+
* @enum {string|null}
|
|
15857
|
+
*/
|
|
15858
|
+
direction?: "in" | "out" | null;
|
|
14737
15859
|
/** Format: uuid */
|
|
14738
15860
|
counterparty_account_id?: string | null;
|
|
14739
15861
|
counterparty_account_name?: string | null;
|
|
@@ -15254,6 +16376,11 @@ export interface components {
|
|
|
15254
16376
|
to_fiat_account_id?: string;
|
|
15255
16377
|
to_vendor_id?: string;
|
|
15256
16378
|
txid?: string;
|
|
16379
|
+
/**
|
|
16380
|
+
* @description Which side of the movement this row is: 'out' debits the wallet, 'in' credits it. Set on internal-transfer legs (copied from the order's meta), card authorizations ('out') and their refunds ('in').
|
|
16381
|
+
* @enum {string}
|
|
16382
|
+
*/
|
|
16383
|
+
direction?: "in" | "out";
|
|
15257
16384
|
/** Format: uuid */
|
|
15258
16385
|
order_id?: string;
|
|
15259
16386
|
} & {
|
|
@@ -15292,6 +16419,94 @@ export interface components {
|
|
|
15292
16419
|
/** Format: uuid */
|
|
15293
16420
|
wallet_id?: string;
|
|
15294
16421
|
};
|
|
16422
|
+
AmlProvider: {
|
|
16423
|
+
/** @description Name of the on-chain analytics partner, for the "Screening by …" line */
|
|
16424
|
+
display_name?: string;
|
|
16425
|
+
};
|
|
16426
|
+
AmlScreeningAsset: {
|
|
16427
|
+
/** Format: uuid */
|
|
16428
|
+
currency_id?: string;
|
|
16429
|
+
/** @example USDT */
|
|
16430
|
+
symbol?: string;
|
|
16431
|
+
chain_id?: number;
|
|
16432
|
+
/** @example TRX */
|
|
16433
|
+
chain_symbol?: string;
|
|
16434
|
+
/** @example Tron */
|
|
16435
|
+
chain_name?: string;
|
|
16436
|
+
};
|
|
16437
|
+
AmlCheckedCategory: {
|
|
16438
|
+
/** @example sanctions */
|
|
16439
|
+
code?: string;
|
|
16440
|
+
/** @example Sanctions */
|
|
16441
|
+
title?: string;
|
|
16442
|
+
/** @description True when the address has exposure to this category */
|
|
16443
|
+
flagged?: boolean;
|
|
16444
|
+
};
|
|
16445
|
+
AmlScreeningResult: {
|
|
16446
|
+
/** @enum {string} */
|
|
16447
|
+
risk_level?: "LOW" | "ELEVATED" | "HIGH";
|
|
16448
|
+
risk_score?: number;
|
|
16449
|
+
checked_categories?: components["schemas"]["AmlCheckedCategory"][];
|
|
16450
|
+
checked_categories_total?: number;
|
|
16451
|
+
/**
|
|
16452
|
+
* Format: date-time
|
|
16453
|
+
* @description The on-chain data cut the verdict was made against
|
|
16454
|
+
*/
|
|
16455
|
+
data_as_of?: string;
|
|
16456
|
+
};
|
|
16457
|
+
AmlScreening: {
|
|
16458
|
+
/** Format: uuid */
|
|
16459
|
+
id?: string;
|
|
16460
|
+
/**
|
|
16461
|
+
* @description PENDING — paid, not yet handed to the provider. SCREENING — the
|
|
16462
|
+
* provider is analysing it; poll `GET …/screenings/{id}`. COMPLETED —
|
|
16463
|
+
* `result` is set and the report can be downloaded. FAILED — no
|
|
16464
|
+
* result will come; the fee has been refunded to the paying balance.
|
|
16465
|
+
*
|
|
16466
|
+
* @enum {string}
|
|
16467
|
+
*/
|
|
16468
|
+
status?: "PENDING" | "SCREENING" | "COMPLETED" | "FAILED";
|
|
16469
|
+
/**
|
|
16470
|
+
* @description PAYMENT_FAILED — the fee could not be taken, nothing was charged; the other two refund the fee
|
|
16471
|
+
* @enum {string|null}
|
|
16472
|
+
*/
|
|
16473
|
+
failure_reason?: "PAYMENT_FAILED" | "PROVIDER_ERROR" | "TIMEOUT" | null;
|
|
16474
|
+
address?: string;
|
|
16475
|
+
asset?: components["schemas"]["AmlScreeningAsset"];
|
|
16476
|
+
provider?: components["schemas"]["AmlProvider"];
|
|
16477
|
+
/**
|
|
16478
|
+
* Format: uuid
|
|
16479
|
+
* @description The AML_CHECK fee order that paid for the screening
|
|
16480
|
+
*/
|
|
16481
|
+
order_id?: string | null;
|
|
16482
|
+
result?: components["schemas"]["AmlScreeningResult"] | null;
|
|
16483
|
+
report_available?: boolean;
|
|
16484
|
+
/** Format: date-time */
|
|
16485
|
+
created_at?: string;
|
|
16486
|
+
/** Format: date-time */
|
|
16487
|
+
completed_at?: string | null;
|
|
16488
|
+
};
|
|
16489
|
+
AmlScreeningQuote: {
|
|
16490
|
+
/** @example 10 */
|
|
16491
|
+
price_usd?: number;
|
|
16492
|
+
/** Format: uuid */
|
|
16493
|
+
price_currency_id?: string;
|
|
16494
|
+
/** Format: uuid */
|
|
16495
|
+
pay_from_currency_id?: string;
|
|
16496
|
+
/** @description How many USD one unit of the paying currency is worth */
|
|
16497
|
+
rate?: number;
|
|
16498
|
+
/** @description What leaves the wallet, in the paying currency */
|
|
16499
|
+
total?: number;
|
|
16500
|
+
provider?: components["schemas"]["AmlProvider"];
|
|
16501
|
+
/** @description Present when `currency_id` was given — whether that token's network can be screened */
|
|
16502
|
+
asset?: {
|
|
16503
|
+
/** Format: uuid */
|
|
16504
|
+
currency_id?: string;
|
|
16505
|
+
supported?: boolean;
|
|
16506
|
+
/** @enum {string|null} */
|
|
16507
|
+
unsupported_reason?: "NOT_CRYPTO" | "UNKNOWN_CURRENCY" | "NETWORK_NOT_SUPPORTED" | null;
|
|
16508
|
+
} | null;
|
|
16509
|
+
};
|
|
15295
16510
|
Invoice: {
|
|
15296
16511
|
/** Format: uuid */
|
|
15297
16512
|
id?: string;
|
|
@@ -15581,7 +16796,7 @@ export interface components {
|
|
|
15581
16796
|
/** Format: uuid */
|
|
15582
16797
|
id: string;
|
|
15583
16798
|
/** @enum {string} */
|
|
15584
|
-
type: "DEPOSIT_RECEIVED" | "TRANSFER_RECEIVED" | "ORDER_STATUS_CHANGED" | "KYC_STATUS_CHANGED" | "ANNOUNCEMENT" | "SYSTEM_MESSAGE" | "MASS_PAYOUT_STATUS_CHANGED" | "CARD_OTP";
|
|
16799
|
+
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";
|
|
15585
16800
|
/** @description Structured fact snapshot; the client renders the presentation. Shape depends on `type`; evolution is additive-only. */
|
|
15586
16801
|
payload: Record<string, never>;
|
|
15587
16802
|
/** Format: uuid */
|
|
@@ -15601,6 +16816,241 @@ export interface components {
|
|
|
15601
16816
|
category: "TRANSACTIONS" | "COMPLIANCE" | "ANNOUNCEMENTS" | "SYSTEM" | "SECURITY";
|
|
15602
16817
|
enabled: boolean;
|
|
15603
16818
|
};
|
|
16819
|
+
ReferralLevelRate: {
|
|
16820
|
+
/** @example TRANSFER_CARD_SUBACCOUNT */
|
|
16821
|
+
order_type?: string;
|
|
16822
|
+
/** @example Top-ups */
|
|
16823
|
+
label?: string;
|
|
16824
|
+
/** @example 0.7 */
|
|
16825
|
+
percent?: number;
|
|
16826
|
+
/** @example 0 */
|
|
16827
|
+
fixed_usd?: number;
|
|
16828
|
+
};
|
|
16829
|
+
ReferralSummary: {
|
|
16830
|
+
/**
|
|
16831
|
+
* @description The agent's referral code. The invite link is built by the client (`t.me/<bot>?start=referrer=<code>`).
|
|
16832
|
+
* @example k3j9dm2p1q
|
|
16833
|
+
*/
|
|
16834
|
+
code?: string;
|
|
16835
|
+
/** @description The current UTC month — the one `earned_usd`, `level` and `breakdown` are about. */
|
|
16836
|
+
period?: {
|
|
16837
|
+
/** @example 2026-09 */
|
|
16838
|
+
month?: string;
|
|
16839
|
+
/** Format: date-time */
|
|
16840
|
+
closes_at?: string;
|
|
16841
|
+
};
|
|
16842
|
+
/**
|
|
16843
|
+
* @description Signed sum of this month's rewards (reversals are negative).
|
|
16844
|
+
* @example 186
|
|
16845
|
+
*/
|
|
16846
|
+
earned_usd?: number;
|
|
16847
|
+
/**
|
|
16848
|
+
* @description Earned in closed months and waiting for a payout.
|
|
16849
|
+
* @example 75
|
|
16850
|
+
*/
|
|
16851
|
+
pending_usd?: number;
|
|
16852
|
+
/** @example 980 */
|
|
16853
|
+
paid_total_usd?: number;
|
|
16854
|
+
/**
|
|
16855
|
+
* Format: date-time
|
|
16856
|
+
* @description When the first payout was made.
|
|
16857
|
+
*/
|
|
16858
|
+
paid_since?: string | null;
|
|
16859
|
+
/** @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. */
|
|
16860
|
+
participating?: boolean;
|
|
16861
|
+
level?: {
|
|
16862
|
+
/** @example 2 */
|
|
16863
|
+
no?: number;
|
|
16864
|
+
/** @example Bronze */
|
|
16865
|
+
name?: string;
|
|
16866
|
+
/**
|
|
16867
|
+
* @description This month's turnover the level is measured by.
|
|
16868
|
+
* @example 186000
|
|
16869
|
+
*/
|
|
16870
|
+
turnover_usd?: number;
|
|
16871
|
+
/** @description The next level; null on the top one. */
|
|
16872
|
+
next?: {
|
|
16873
|
+
/** @example 3 */
|
|
16874
|
+
no?: number;
|
|
16875
|
+
/** @example Silver */
|
|
16876
|
+
name?: string;
|
|
16877
|
+
/** @example 300000 */
|
|
16878
|
+
min_turnover_usd?: number;
|
|
16879
|
+
/** @example 114000 */
|
|
16880
|
+
remaining_usd?: number;
|
|
16881
|
+
} | null;
|
|
16882
|
+
} | null;
|
|
16883
|
+
/** @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. */
|
|
16884
|
+
breakdown?: {
|
|
16885
|
+
/** @example CARD_ISSUING_FEE */
|
|
16886
|
+
order_type?: string;
|
|
16887
|
+
/** @example Card openings */
|
|
16888
|
+
label?: string;
|
|
16889
|
+
/** @example 6 */
|
|
16890
|
+
orders?: number;
|
|
16891
|
+
/** @example 300 */
|
|
16892
|
+
amount_usd?: number;
|
|
16893
|
+
/** @example 150 */
|
|
16894
|
+
reward_usd?: number;
|
|
16895
|
+
/** @description What the type pays on the agent's current level; null when the program no longer prices it. */
|
|
16896
|
+
current_rate_percent?: number | null;
|
|
16897
|
+
current_fixed_usd?: number | null;
|
|
16898
|
+
}[];
|
|
16899
|
+
/** @description The ladder, for the levels carousel. */
|
|
16900
|
+
levels?: {
|
|
16901
|
+
no?: number;
|
|
16902
|
+
name?: string;
|
|
16903
|
+
min_turnover_usd?: number;
|
|
16904
|
+
/** @description The threshold of the next level; null on the top one. */
|
|
16905
|
+
max_turnover_usd?: number | null;
|
|
16906
|
+
rates?: components["schemas"]["ReferralLevelRate"][];
|
|
16907
|
+
}[];
|
|
16908
|
+
/** @description The "Program terms" lines — what each order type pays across the levels. */
|
|
16909
|
+
terms?: {
|
|
16910
|
+
order_type?: string;
|
|
16911
|
+
/** @example Top-ups */
|
|
16912
|
+
label?: string;
|
|
16913
|
+
/** @example 0.5%–1.3% */
|
|
16914
|
+
fee_label?: string;
|
|
16915
|
+
counts_toward_turnover?: boolean;
|
|
16916
|
+
}[];
|
|
16917
|
+
};
|
|
16918
|
+
ReferralEvent: {
|
|
16919
|
+
/** Format: uuid */
|
|
16920
|
+
id?: string;
|
|
16921
|
+
/** @enum {string} */
|
|
16922
|
+
kind?: "ACCRUAL" | "REVERSAL";
|
|
16923
|
+
/** @enum {string} */
|
|
16924
|
+
status?: "PENDING" | "PAID";
|
|
16925
|
+
/** @example TRANSFER_CARD_SUBACCOUNT */
|
|
16926
|
+
order_type?: string;
|
|
16927
|
+
/** @example Top-ups */
|
|
16928
|
+
label?: string;
|
|
16929
|
+
/**
|
|
16930
|
+
* @description The referred customer, anonymised.
|
|
16931
|
+
* @example Customer 4821
|
|
16932
|
+
*/
|
|
16933
|
+
customer_alias?: string;
|
|
16934
|
+
/** @example 18000 */
|
|
16935
|
+
amount_usd?: number;
|
|
16936
|
+
/** @example 0.7 */
|
|
16937
|
+
rate_percent?: number;
|
|
16938
|
+
/** @example 0 */
|
|
16939
|
+
fixed_usd?: number;
|
|
16940
|
+
/**
|
|
16941
|
+
* @description Negative on a REVERSAL.
|
|
16942
|
+
* @example 126
|
|
16943
|
+
*/
|
|
16944
|
+
reward_usd?: number;
|
|
16945
|
+
/** @example 2 */
|
|
16946
|
+
level_no?: number;
|
|
16947
|
+
/** @example Bronze */
|
|
16948
|
+
level_name?: string;
|
|
16949
|
+
/** Format: date-time */
|
|
16950
|
+
occurred_at?: string;
|
|
16951
|
+
};
|
|
16952
|
+
ReferralPayout: {
|
|
16953
|
+
/** @example 2026-08 */
|
|
16954
|
+
period?: string;
|
|
16955
|
+
/** @enum {string} */
|
|
16956
|
+
status?: "PROCESSING" | "PAID";
|
|
16957
|
+
/** @example 980 */
|
|
16958
|
+
amount_usd?: number;
|
|
16959
|
+
/** Format: date-time */
|
|
16960
|
+
created_at?: string;
|
|
16961
|
+
/** Format: date-time */
|
|
16962
|
+
paid_at?: string | null;
|
|
16963
|
+
};
|
|
16964
|
+
ReferralTelegramReportSetting: {
|
|
16965
|
+
/** @description The user has started the tenant's Telegram bot. */
|
|
16966
|
+
linked?: boolean;
|
|
16967
|
+
/** @description The report is sent to Telegram every month. Always false while not linked. */
|
|
16968
|
+
enabled?: boolean;
|
|
16969
|
+
};
|
|
16970
|
+
RfiCase: {
|
|
16971
|
+
/** Format: uuid */
|
|
16972
|
+
id?: string;
|
|
16973
|
+
/**
|
|
16974
|
+
* @description Human-facing id — quoted in the notification email
|
|
16975
|
+
* @example RFI-000042
|
|
16976
|
+
*/
|
|
16977
|
+
reference?: string;
|
|
16978
|
+
/** @enum {string} */
|
|
16979
|
+
type?: "onboarding" | "transaction" | "ongoing";
|
|
16980
|
+
/**
|
|
16981
|
+
* @description `action_required` — compliance asked and waits for the client; `awaiting_compliance` — the client answered, compliance is reviewing; `closed` — no longer accepts replies.
|
|
16982
|
+
* @enum {string}
|
|
16983
|
+
*/
|
|
16984
|
+
status?: "action_required" | "awaiting_compliance" | "closed";
|
|
16985
|
+
/**
|
|
16986
|
+
* Format: date-time
|
|
16987
|
+
* @description When the answer is due
|
|
16988
|
+
*/
|
|
16989
|
+
due_at?: string | null;
|
|
16990
|
+
/** @description True only while `action_required` and past `due_at` (red banner) */
|
|
16991
|
+
overdue?: boolean;
|
|
16992
|
+
/** @description One of the covered transactions is held until the request closes */
|
|
16993
|
+
holds_transaction?: boolean;
|
|
16994
|
+
/** @description The account is on hold while the request is open */
|
|
16995
|
+
holds_account?: boolean;
|
|
16996
|
+
/** @description How many transactions the request covers */
|
|
16997
|
+
transactions_count?: number;
|
|
16998
|
+
/** @description The last message of the conversation, for the card — null while nothing is visible yet */
|
|
16999
|
+
last_message?: {
|
|
17000
|
+
/** @enum {string} */
|
|
17001
|
+
author?: "compliance" | "client";
|
|
17002
|
+
/** @description One line of the message, up to 140 characters, cut at a word */
|
|
17003
|
+
preview?: string | null;
|
|
17004
|
+
/** Format: date-time */
|
|
17005
|
+
created_at?: string;
|
|
17006
|
+
} | null;
|
|
17007
|
+
/** Format: date-time */
|
|
17008
|
+
created_at?: string;
|
|
17009
|
+
/** Format: date-time */
|
|
17010
|
+
updated_at?: string;
|
|
17011
|
+
/** Format: date-time */
|
|
17012
|
+
closed_at?: string | null;
|
|
17013
|
+
};
|
|
17014
|
+
RfiAttachment: {
|
|
17015
|
+
/** Format: uuid */
|
|
17016
|
+
id?: string;
|
|
17017
|
+
file_name?: string;
|
|
17018
|
+
content_type?: string | null;
|
|
17019
|
+
size_bytes?: number | null;
|
|
17020
|
+
/** Format: date-time */
|
|
17021
|
+
created_at?: string;
|
|
17022
|
+
};
|
|
17023
|
+
RfiMessage: {
|
|
17024
|
+
/** Format: uuid */
|
|
17025
|
+
id?: string;
|
|
17026
|
+
/** @enum {string} */
|
|
17027
|
+
author?: "compliance" | "client";
|
|
17028
|
+
/**
|
|
17029
|
+
* @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.
|
|
17030
|
+
* @example Polina S
|
|
17031
|
+
*/
|
|
17032
|
+
author_name?: string | null;
|
|
17033
|
+
body?: string;
|
|
17034
|
+
attachments?: components["schemas"]["RfiAttachment"][];
|
|
17035
|
+
/** Format: date-time */
|
|
17036
|
+
created_at?: string;
|
|
17037
|
+
};
|
|
17038
|
+
RfiTransaction: {
|
|
17039
|
+
order_uuid?: string;
|
|
17040
|
+
order_type?: string | null;
|
|
17041
|
+
status?: string | null;
|
|
17042
|
+
amount_from?: number | null;
|
|
17043
|
+
amount_to?: number | null;
|
|
17044
|
+
/** Format: date-time */
|
|
17045
|
+
created_at?: string | null;
|
|
17046
|
+
};
|
|
17047
|
+
RfiCaseDetail: components["schemas"]["RfiCase"] & {
|
|
17048
|
+
can_reply?: boolean;
|
|
17049
|
+
/** @description The conversation, oldest first */
|
|
17050
|
+
messages?: components["schemas"]["RfiMessage"][];
|
|
17051
|
+
/** @description Every transaction the request covers, in the order compliance linked them */
|
|
17052
|
+
transactions?: components["schemas"]["RfiTransaction"][];
|
|
17053
|
+
};
|
|
15604
17054
|
};
|
|
15605
17055
|
responses: {
|
|
15606
17056
|
/** @description Authentication credentials are missing or invalid */
|
|
@@ -15658,6 +17108,9 @@ export interface components {
|
|
|
15658
17108
|
* @example e04c0c85-b031-47d7-8541-207b4e83d91a
|
|
15659
17109
|
*/
|
|
15660
17110
|
TenantId: string;
|
|
17111
|
+
/** @description Wallet the screening belongs to (and is paid from) */
|
|
17112
|
+
AmlWalletId: string;
|
|
17113
|
+
AmlScreeningId: string;
|
|
15661
17114
|
/** @description Wallet the invoices belong to */
|
|
15662
17115
|
InvoiceWalletId: string;
|
|
15663
17116
|
InvoiceId: string;
|
|
@@ -15667,6 +17120,9 @@ export interface components {
|
|
|
15667
17120
|
MassPayoutWalletId: string;
|
|
15668
17121
|
MassPayoutId: string;
|
|
15669
17122
|
MassPayoutTemplateId: string;
|
|
17123
|
+
/** @description The account the requests are about. Requests and their conversations are kept per account. */
|
|
17124
|
+
RfiWalletId: string;
|
|
17125
|
+
RfiCaseId: string;
|
|
15670
17126
|
};
|
|
15671
17127
|
requestBodies: never;
|
|
15672
17128
|
headers: never;
|