squarefi-bff-api-module 1.36.66 → 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.
@@ -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/user_verification/init": {
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
- * Initialize user-level Sumsub verification
10058
- * @description Starts (or upgrades) the caller's user-level Sumsub verification via
10059
- * the Auth API. The chosen `flow` maps to a tenant-configured Sumsub
10060
- * level — `data` (personal information), `documents` (+identity
10061
- * document) or `face` (+face check) — and the whole level is completed
10062
- * as one WebSDK session. Returns the Sumsub applicant id plus a
10063
- * short-lived WebSDK access token. The caller's Bearer token is
10064
- * forwarded to the Auth API.
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`.
@@ -13411,7 +14416,7 @@ export interface components {
13411
14416
  * @example EXCHANGE_OMNI
13412
14417
  * @enum {string}
13413
14418
  */
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";
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";
13415
14420
  OrderCalculation: {
13416
14421
  /**
13417
14422
  * Format: uuid
@@ -15292,6 +16297,94 @@ export interface components {
15292
16297
  /** Format: uuid */
15293
16298
  wallet_id?: string;
15294
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
+ };
15295
16388
  Invoice: {
15296
16389
  /** Format: uuid */
15297
16390
  id?: string;
@@ -15581,7 +16674,7 @@ export interface components {
15581
16674
  /** Format: uuid */
15582
16675
  id: string;
15583
16676
  /** @enum {string} */
15584
- 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";
15585
16678
  /** @description Structured fact snapshot; the client renders the presentation. Shape depends on `type`; evolution is additive-only. */
15586
16679
  payload: Record<string, never>;
15587
16680
  /** Format: uuid */
@@ -15601,6 +16694,241 @@ export interface components {
15601
16694
  category: "TRANSACTIONS" | "COMPLIANCE" | "ANNOUNCEMENTS" | "SYSTEM" | "SECURITY";
15602
16695
  enabled: boolean;
15603
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
+ };
15604
16932
  };
15605
16933
  responses: {
15606
16934
  /** @description Authentication credentials are missing or invalid */
@@ -15658,6 +16986,9 @@ export interface components {
15658
16986
  * @example e04c0c85-b031-47d7-8541-207b4e83d91a
15659
16987
  */
15660
16988
  TenantId: string;
16989
+ /** @description Wallet the screening belongs to (and is paid from) */
16990
+ AmlWalletId: string;
16991
+ AmlScreeningId: string;
15661
16992
  /** @description Wallet the invoices belong to */
15662
16993
  InvoiceWalletId: string;
15663
16994
  InvoiceId: string;
@@ -15667,6 +16998,9 @@ export interface components {
15667
16998
  MassPayoutWalletId: string;
15668
16999
  MassPayoutId: string;
15669
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;
15670
17004
  };
15671
17005
  requestBodies: never;
15672
17006
  headers: never;