squarefi-bff-api-module 1.36.100 → 1.36.102

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.
@@ -7518,7 +7518,7 @@ export interface components {
7518
7518
  * @example EXCHANGE_OMNI
7519
7519
  * @enum {string}
7520
7520
  */
7521
- 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_FEDNOW_ONRAMP" | "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";
7521
+ 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_FEDNOW_ONRAMP" | "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" | "BC3_SWIFT_ONRAMP" | "BC3_SWIFT_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";
7522
7522
  OrderCalculation: {
7523
7523
  /**
7524
7524
  * Format: uuid
@@ -8708,7 +8708,7 @@ export interface components {
8708
8708
  info?: string | null;
8709
8709
  balance_before?: number | null;
8710
8710
  balance_after?: number | null;
8711
- /** @description Transaction metadata */
8711
+ /** @description Transaction metadata. The `FEE` row of an AML check carries `screened_address`. The `REFUND` row of that fee does not: follow its `order_uuid` to the `AML_CHECK` order. */
8712
8712
  meta?: Record<string, never> | null;
8713
8713
  currency?: components["schemas"]["CurrencyRef"];
8714
8714
  };
@@ -8739,6 +8739,8 @@ export interface components {
8739
8739
  from_address?: string | null;
8740
8740
  to_address?: string | null;
8741
8741
  to_crypto_address?: string | null;
8742
+ /** @description The screened address (`AML_CHECK` orders only) */
8743
+ screened_address?: string | null;
8742
8744
  txid?: string | null;
8743
8745
  transaction_hash?: string | null;
8744
8746
  /** Format: uuid */
@@ -966,7 +966,80 @@ export interface paths {
966
966
  path?: never;
967
967
  cookie?: never;
968
968
  };
969
- get?: never;
969
+ /**
970
+ * List the wallet's screenings, newest first
971
+ * @description Every screening of the wallet whose fee was charged, whoever in the
972
+ * wallet ran it: running, completed and failed ones. Any member of the
973
+ * wallet can read it. A request refused
974
+ * before the charge (for example `INSUFFICIENT_FUNDS`) is not listed.
975
+ * `report_available` says whether the report can be downloaded.
976
+ *
977
+ */
978
+ get: {
979
+ parameters: {
980
+ query?: {
981
+ /** @description Number of screenings to skip */
982
+ offset?: number;
983
+ /** @description Page size */
984
+ limit?: number;
985
+ /** @description Only screenings whose address contains this value, in any case. A whole address finds that address, a part of one works as a search */
986
+ address?: string;
987
+ /** @description Only screenings on this network — `asset.chain_id` of a screening, `id` in `GET /frontend/reference/chains` */
988
+ chain_id?: number;
989
+ };
990
+ header?: never;
991
+ path: {
992
+ /** @description Wallet the screening belongs to (and is paid from) */
993
+ wallet_id: components["parameters"]["AmlWalletId"];
994
+ };
995
+ cookie?: never;
996
+ };
997
+ requestBody?: never;
998
+ responses: {
999
+ /** @description A page of screenings */
1000
+ 200: {
1001
+ headers: {
1002
+ [name: string]: unknown;
1003
+ };
1004
+ content: {
1005
+ "application/json": {
1006
+ /** @example true */
1007
+ success: boolean;
1008
+ data: components["schemas"]["AmlScreening"][];
1009
+ pagination: components["schemas"]["PaginationResponse"];
1010
+ };
1011
+ };
1012
+ };
1013
+ /** @description Validation error (`offset`, `limit`, `address`, `chain_id`; `VALIDATION_ERROR`, `details.issues[].field`) */
1014
+ 400: {
1015
+ headers: {
1016
+ [name: string]: unknown;
1017
+ };
1018
+ content: {
1019
+ "application/json": components["schemas"]["ErrorResponse"];
1020
+ };
1021
+ };
1022
+ 401: components["responses"]["UnauthorizedError"];
1023
+ /** @description Feature not enabled for the tenant (AML_CHECK_NOT_ENABLED), no access to the wallet (ACCESS_DENIED) or the wallet's KYC is not approved (KYC_REQUIREMENTS_NOT_MET; a wallet on hold can still read) */
1024
+ 403: {
1025
+ headers: {
1026
+ [name: string]: unknown;
1027
+ };
1028
+ content: {
1029
+ "application/json": components["schemas"]["ErrorResponse"];
1030
+ };
1031
+ };
1032
+ /** @description Too many requests (RATE_LIMIT_EXCEEDED) */
1033
+ 429: {
1034
+ headers: {
1035
+ [name: string]: unknown;
1036
+ };
1037
+ content: {
1038
+ "application/json": components["schemas"]["ErrorResponse"];
1039
+ };
1040
+ };
1041
+ };
1042
+ };
970
1043
  put?: never;
971
1044
  /**
972
1045
  * Pay for and start an AML screening of a crypto address
@@ -978,6 +1051,12 @@ export interface paths {
978
1051
  * `GET /frontend/aml/{wallet_id}/screenings/{id}` for the verdict
979
1052
  * (`COMPLETED` or `FAILED`). A failed screening refunds the fee in full.
980
1053
  *
1054
+ * An address that does not fit the network of `currency_id` answers
1055
+ * `400 VALIDATION_ERROR` (`details.issues[].field: address`) and charges
1056
+ * nothing. Networks of one family share a format: an Ethereum address
1057
+ * passes on BSC. A network whose format cannot be checked is not
1058
+ * validated here.
1059
+ *
981
1060
  * Send an `Idempotency-Key` header to make a retry return the screening
982
1061
  * the first call created instead of charging again.
983
1062
  *
@@ -1004,7 +1083,10 @@ export interface paths {
1004
1083
  requestBody: {
1005
1084
  content: {
1006
1085
  "application/json": {
1007
- /** @example TAX544wj9oDmAqWLzuAnYLU9GfS8XncsJ9 */
1086
+ /**
1087
+ * @description Must fit the network of `currency_id`
1088
+ * @example TAX544wj9oDmAqWLzuAnYLU9GfS8XncsJ9
1089
+ */
1008
1090
  address: string;
1009
1091
  /**
1010
1092
  * Format: uuid
@@ -1033,7 +1115,7 @@ export interface paths {
1033
1115
  };
1034
1116
  };
1035
1117
  };
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) */
1118
+ /** @description Validation error (an address that does not fit the network of `currency_id` included), unsupported asset (AML_ASSET_NOT_SUPPORTED), insufficient funds (INSUFFICIENT_FUNDS) or a fee that cannot be priced (AML_FEE_NOT_PRICEABLE) */
1037
1119
  400: {
1038
1120
  headers: {
1039
1121
  [name: string]: unknown;
@@ -1111,6 +1193,15 @@ export interface paths {
1111
1193
  };
1112
1194
  };
1113
1195
  };
1196
+ /** @description Feature not enabled for the tenant (AML_CHECK_NOT_ENABLED) or no access to the wallet */
1197
+ 403: {
1198
+ headers: {
1199
+ [name: string]: unknown;
1200
+ };
1201
+ content: {
1202
+ "application/json": components["schemas"]["ErrorResponse"];
1203
+ };
1204
+ };
1114
1205
  /** @description Not found in this wallet (SCREENING_NOT_FOUND) */
1115
1206
  404: {
1116
1207
  headers: {
@@ -1176,6 +1267,15 @@ export interface paths {
1176
1267
  "application/json": components["schemas"]["ErrorResponse"];
1177
1268
  };
1178
1269
  };
1270
+ /** @description Feature not enabled for the tenant (AML_CHECK_NOT_ENABLED) or no access to the wallet */
1271
+ 403: {
1272
+ headers: {
1273
+ [name: string]: unknown;
1274
+ };
1275
+ content: {
1276
+ "application/json": components["schemas"]["ErrorResponse"];
1277
+ };
1278
+ };
1179
1279
  /** @description Not found in this wallet (SCREENING_NOT_FOUND) */
1180
1280
  404: {
1181
1281
  headers: {
@@ -6045,6 +6145,12 @@ export interface paths {
6045
6145
  * document photos call `POST /cardholders` with the member's `user_data_id` — it answers
6046
6146
  * `409` with this `cardholder_id` after completing the row from the member's KYC
6047
6147
  * dossier. When the member has not passed that verification, run it first.
6148
+ * - `NEEDS_CARD_FORM` — KYC forms flow only: required fields of the program's card form are
6149
+ * still empty. Only the member fills that form in their personal KYC entity; the create is
6150
+ * refused until they do (`400 CARD_REQUIREMENTS_INCOMPLETE`, or `400 KYC_PERSONAL_ENTITY_MISSING`
6151
+ * for a member with no personal entity), and fields in the request body do not help.
6152
+ * `will_require` names what the member has left: tell them to fill the card form, do not
6153
+ * ask the caller for these fields.
6048
6154
  * - `NEEDS_RESUBMIT` — the VENDOR's review of the cardholder came back rejected (or asked
6049
6155
  * for part of the dossier again). Not a dead end: fix what `reject_reason` names —
6050
6156
  * `PATCH` the field, or re-upload and re-attach the document — then call
@@ -6065,22 +6171,24 @@ export interface paths {
6065
6171
  * - `NOT_MEMBER` — the uuid is not an active member of this wallet.
6066
6172
  *
6067
6173
  * **On a tenant of the KYC forms flow** (SFI-2544) the verdict comes from the member's personal
6068
- * KYC entity and the program's card form, not from the profile statuses: `CAN_CREATE` with
6069
- * `will_require` = the required fields of the card form still empty in the entity (catalog
6070
- * keys such as `first_name`, `email`, `phone`), `NEEDS_VERIFICATION` while the level needs the
6071
- * identity check and it has not passed, `REJECTED` for an application refused for good,
6072
- * `PENDING` while compliance untangles several personal entities of the member or while every
6073
- * required field is answered but some wait in a submission under review. A member without a
6074
- * personal entity is `CAN_CREATE` with every required field of the form in `will_require`.
6174
+ * KYC entity and the program's card form, not from the profile statuses: `CAN_CREATE` when the
6175
+ * form is complete, with nothing in `will_require`; `NEEDS_CARD_FORM` with `will_require` = the
6176
+ * required fields of the card form still empty in the entity (catalog keys such as `first_name`,
6177
+ * `email`, `phone`), `NEEDS_VERIFICATION` while the level needs the identity check and it has
6178
+ * not passed, `REJECTED` for an application refused for good, `PENDING` while compliance
6179
+ * untangles several personal entities of the member or while every required field is answered
6180
+ * but some wait in a submission under review. A member without a personal entity is
6181
+ * `NEEDS_CARD_FORM` with every required field of the form in `will_require` — or
6182
+ * `NEEDS_VERIFICATION` when the level needs the identity check, which such a member has not passed.
6075
6183
  *
6076
6184
  * **`will_require`**: fields the client should expect to collect BY HAND (same vocabulary
6077
6185
  * as the submit 400 `missing` list, e.g. `address.line1`, `tax_identification_number`,
6078
6186
  * `email or phone`). For `DRAFT` it is the draft's actual leftovers; for `NEEDS_COMPLETION`
6079
6187
  * it is what the card create refuses the row over; for `CAN_CREATE` it
6080
6188
  * is a projection that assumes the KYC dossier covers what it usually covers — the created
6081
- * draft's `missing_kyc_fields` is the authoritative version. The dossier never carries
6082
- * contacts, so a `CAN_CREATE` member without a valid `email` or `phone` on their profile
6083
- * always gets that field listed: send it in the create body.
6189
+ * draft's `missing_kyc_fields` is the authoritative version. Outside the KYC forms flow the
6190
+ * dossier never carries contacts, so a `CAN_CREATE` member without a valid `email` or `phone`
6191
+ * on their profile always gets that field listed: send it in the create body.
6084
6192
  *
6085
6193
  * **Authentication**: Bearer token with x-tenant-id header; wallet ADMIN role required.
6086
6194
  *
@@ -6124,7 +6232,7 @@ export interface paths {
6124
6232
  /** Format: uuid */
6125
6233
  user_data_id: string;
6126
6234
  /** @enum {string} */
6127
- verdict: "READY" | "DRAFT" | "CAN_CREATE" | "PENDING" | "NEEDS_VERIFICATION" | "NEEDS_VERIFICATION_UPGRADE" | "NEEDS_COMPLETION" | "NEEDS_RESUBMIT" | "ISSUER_REVIEW_PENDING" | "REJECTED" | "NOT_MEMBER";
6235
+ verdict: "READY" | "DRAFT" | "CAN_CREATE" | "PENDING" | "NEEDS_VERIFICATION" | "NEEDS_VERIFICATION_UPGRADE" | "NEEDS_COMPLETION" | "NEEDS_CARD_FORM" | "NEEDS_RESUBMIT" | "ISSUER_REVIEW_PENDING" | "REJECTED" | "NOT_MEMBER";
6128
6236
  /**
6129
6237
  * Format: uuid
6130
6238
  * @description The linked cardholder for READY / DRAFT / NEEDS_COMPLETION / NEEDS_RESUBMIT / ISSUER_REVIEW_PENDING verdicts
@@ -6151,34 +6259,51 @@ export interface paths {
6151
6259
  };
6152
6260
  };
6153
6261
  };
6154
- /** @description Invalid input (missing program, empty/oversized/malformed id list), or the program is not available for the caller's user group — the same "This program is not available for your user group" failure cardholder creation gives.
6262
+ /** @description `INVALID_REQUEST` — missing program, empty/oversized/malformed id list, or the program is not available for the caller's user group — the same "This program is not available for your user group" failure cardholder creation gives.
6155
6263
  * */
6156
6264
  400: {
6157
6265
  headers: {
6158
6266
  [name: string]: unknown;
6159
6267
  };
6160
- content?: never;
6268
+ content: {
6269
+ "application/json": components["schemas"]["ErrorResponse"];
6270
+ };
6271
+ };
6272
+ /** @description `UNAUTHORIZED` — missing or invalid Bearer token, `x-tenant-id` or session */
6273
+ 401: {
6274
+ headers: {
6275
+ [name: string]: unknown;
6276
+ };
6277
+ content: {
6278
+ "application/json": components["schemas"]["ErrorResponse"];
6279
+ };
6161
6280
  };
6162
6281
  /** @description Access denied to this wallet */
6163
6282
  403: {
6164
6283
  headers: {
6165
6284
  [name: string]: unknown;
6166
6285
  };
6167
- content?: never;
6286
+ content: {
6287
+ "application/json": components["schemas"]["ErrorResponse"];
6288
+ };
6168
6289
  };
6169
6290
  /** @description Issuing program not found */
6170
6291
  404: {
6171
6292
  headers: {
6172
6293
  [name: string]: unknown;
6173
6294
  };
6174
- content?: never;
6295
+ content: {
6296
+ "application/json": components["schemas"]["ErrorResponse"];
6297
+ };
6175
6298
  };
6176
6299
  /** @description Server error */
6177
6300
  500: {
6178
6301
  headers: {
6179
6302
  [name: string]: unknown;
6180
6303
  };
6181
- content?: never;
6304
+ content: {
6305
+ "application/json": components["schemas"]["ErrorResponse"];
6306
+ };
6182
6307
  };
6183
6308
  };
6184
6309
  };
@@ -10632,7 +10757,14 @@ export interface paths {
10632
10757
  headers: {
10633
10758
  [name: string]: unknown;
10634
10759
  };
10635
- content?: never;
10760
+ content: {
10761
+ "application/json": {
10762
+ /** @example true */
10763
+ success: boolean;
10764
+ data: components["schemas"]["ReferenceCurrency"][];
10765
+ pagination: components["schemas"]["PaginationResponse"];
10766
+ };
10767
+ };
10636
10768
  };
10637
10769
  401: components["responses"]["UnauthorizedError"];
10638
10770
  };
@@ -11986,6 +12118,8 @@ export interface paths {
11986
12118
  /**
11987
12119
  * Get a compliance request with its conversation and covered transactions
11988
12120
  * @description The conversation holds compliance's questions and the client's answers, oldest first.
12121
+ * The `body` of a compliance message is safe inline HTML, so a link can be a hyperlink; the
12122
+ * `body` of the client's own answer is plain text. `author` tells them apart.
11989
12123
  * A request of another account answers 404, and so does every request of a workspace
11990
12124
  * that still works RFI by email. Works at any KYC status of the account.
11991
12125
  *
@@ -12101,7 +12235,7 @@ export interface paths {
12101
12235
  };
12102
12236
  };
12103
12237
  responses: {
12104
- /** @description The message as stored */
12238
+ /** @description The message as stored. It is the client's own answer, so `body` is the text as sent, not HTML. */
12105
12239
  201: {
12106
12240
  headers: {
12107
12241
  [name: string]: unknown;
@@ -13098,8 +13232,11 @@ export interface paths {
13098
13232
  *
13099
13233
  * The selection cannot outlive the access it rides on: the flag sits on
13100
13234
  * the membership row, so revoking membership drops it. A deleted wallet,
13101
- * a deactivated membership or a wallet whose owner deleted their account
13102
- * falls back to the default.
13235
+ * a deactivated membership or a wallet closed for its members falls back
13236
+ * to the default. A shared wallet is closed when its owner deleted their
13237
+ * account or, on a KYC-enabled tenant, when its KYC status is `OFFBOARDED`.
13238
+ * Any other KYC status can be the active wallet: read it from `kyc_info.status`,
13239
+ * the KYC-gated endpoints answer `403 KYC_REQUIREMENTS_NOT_MET` until it opens.
13103
13240
  *
13104
13241
  * **Authentication**: Bearer token with x-tenant-id header required
13105
13242
  *
@@ -13143,7 +13280,8 @@ export interface paths {
13143
13280
  * Any wallet the caller is an **active member** of may be selected —
13144
13281
  * ownership is not required. A wallet whose owner has deleted their
13145
13282
  * account cannot be selected: the request answers `403`, the same as
13146
- * every other endpoint of that wallet.
13283
+ * every other endpoint of that wallet. On a KYC-enabled tenant a member
13284
+ * cannot select a wallet whose KYC status is `OFFBOARDED` either: `403`.
13147
13285
  *
13148
13286
  * **Authentication**: Bearer token with x-tenant-id header required
13149
13287
  *
@@ -13195,8 +13333,9 @@ export interface paths {
13195
13333
  };
13196
13334
  401: components["responses"]["UnauthorizedError"];
13197
13335
  /** @description `ACCESS_DENIED` (`You do not have access to this wallet`) — the caller is not an active
13198
- * member of the wallet, or the wallet is closed because its owner deleted their account.
13199
- * The answer is the same in both cases and does not reveal why. The stored selection is not changed.
13336
+ * member of the wallet, or the wallet is closed for its members: its owner deleted their account
13337
+ * or, on a KYC-enabled tenant, its KYC status is `OFFBOARDED` (the owner can still select it).
13338
+ * The answer is the same in every case and does not reveal why. The stored selection is not changed.
13200
13339
  * */
13201
13340
  403: {
13202
13341
  headers: {
@@ -13517,6 +13656,10 @@ export interface paths {
13517
13656
  *
13518
13657
  * A wallet whose owner has deleted their account is closed for every member and is not listed.
13519
13658
  *
13659
+ * On a KYC-enabled tenant a shared wallet is listed whatever its KYC status, except `OFFBOARDED`:
13660
+ * that wallet is closed for its members and is listed only for its owner. Read the status from
13661
+ * `kyc_info.status`; the KYC-gated endpoints answer `403 KYC_REQUIREMENTS_NOT_MET` until it opens.
13662
+ *
13520
13663
  * **Authentication**: Bearer token with x-tenant-id header required
13521
13664
  *
13522
13665
  */
@@ -13992,12 +14135,17 @@ export interface paths {
13992
14135
  };
13993
14136
  };
13994
14137
  };
13995
- /** @description Access denied to this wallet */
14138
+ /** @description `ACCESS_DENIED` (`Access denied to this wallet`) — the caller is not an active member of the wallet.
14139
+ * On a KYC-enabled tenant the same answer is given to a member (not the owner) of a wallet whose KYC
14140
+ * status is `OFFBOARDED`; it does not reveal why. The owner is not refused by this check.
14141
+ * */
13996
14142
  403: {
13997
14143
  headers: {
13998
14144
  [name: string]: unknown;
13999
14145
  };
14000
- content?: never;
14146
+ content: {
14147
+ "application/json": components["schemas"]["ErrorResponse"];
14148
+ };
14001
14149
  };
14002
14150
  /** @description Wallet not found */
14003
14151
  404: {
@@ -15146,12 +15294,17 @@ export interface paths {
15146
15294
  };
15147
15295
  };
15148
15296
  };
15149
- /** @description Access denied to this wallet */
15297
+ /** @description `ACCESS_DENIED` (`Access denied to this wallet`) — the caller is not an active member of the wallet, or the caller is a scoped `user` member (this endpoint is closed to that role).
15298
+ * On a KYC-enabled tenant the same answer is given to a member (not the owner) of a wallet whose KYC
15299
+ * status is `OFFBOARDED`; it does not reveal why. The owner is not refused by this check.
15300
+ * */
15150
15301
  403: {
15151
15302
  headers: {
15152
15303
  [name: string]: unknown;
15153
15304
  };
15154
- content?: never;
15305
+ content: {
15306
+ "application/json": components["schemas"]["ErrorResponse"];
15307
+ };
15155
15308
  };
15156
15309
  /** @description Wallet not found */
15157
15310
  404: {
@@ -16655,7 +16808,7 @@ export interface paths {
16655
16808
  get?: never;
16656
16809
  /**
16657
16810
  * Save the draft of a form
16658
- * @description The form is the one `rails` and `programs` name, as for `GET …/forms`. Replaces the draft as a whole with the given values of open fields; the files of the draft stay, and so do those of a `returned` last submission (they carry over into the draft, those removed excepted). Types are checked, rules and requiredness are not — except that owner shares over 100% in total, a value whose condition reads an empty required source, and a change to a saved owner the form does not allow (left out of the list, its value cleared, or changed outside a `returned` form) are refused here too, as on the submission: the draft is not saved. Nothing is written to the KYC entity. The first draft of a business form moves the application to `PENDING`. The entity's owner, or an owner or admin of a linked wallet.
16811
+ * @description The form is the one `rails` and `programs` name, as for `GET …/forms`. Replaces the draft as a whole with the given values of open fields; the files of the draft stay, and so do those of a `returned` last submission (they carry over into the draft, those removed excepted). Types are checked, rules and requiredness are not — except that owner shares over 100% in total, a value whose condition reads an empty required source, and a change to a saved owner the form does not allow (left out of the list, its value cleared, or changed outside a `returned` form) are refused here too, as on the submission: the draft is not saved. Nothing is written to the KYC entity. The first draft of a business form moves the application to `PENDING`. One change to a form at a time — a draft save, an upload, a removal or the submission: another one sent meanwhile, from any tab or member, answers `409 OPERATION_IN_PROGRESS` and changes nothing; send the changes of one form one after another. The entity's owner, or an owner or admin of a linked wallet.
16659
16812
  */
16660
16813
  put: {
16661
16814
  parameters: {
@@ -16706,7 +16859,7 @@ export interface paths {
16706
16859
  "application/json": components["schemas"]["ErrorResponse"];
16707
16860
  };
16708
16861
  };
16709
- /** @description `FORM_LOCKED` — the form is read-only by the application status, or its last submission waits on the verification or the review; `FORM_OUTDATED` — `schema_version` is not the one the form has now, reload it (`GET …/forms`) and send again; `KYC_FORM_CONDITIONS_CYCLE` — the tenant's form settings show fields on conditions that read each other in a circle */
16862
+ /** @description `FORM_LOCKED` — the form is read-only by the application status, or its last submission waits on the verification or the review; `FORM_OUTDATED` — `schema_version` is not the one the form has now, reload it (`GET …/forms`) and send again; `OPERATION_IN_PROGRESS` — another change to this form (a draft save, an upload, a removal, the submission) is running: nothing was changed, try again once it answers; `KYC_FORM_CONDITIONS_CYCLE` — the tenant's form settings show fields on conditions that read each other in a circle */
16710
16863
  409: {
16711
16864
  headers: {
16712
16865
  [name: string]: unknown;
@@ -16715,6 +16868,7 @@ export interface paths {
16715
16868
  "application/json": components["schemas"]["KycFormsErrorResponse"];
16716
16869
  };
16717
16870
  };
16871
+ 503: components["responses"]["KycFormsLockUnavailable"];
16718
16872
  };
16719
16873
  };
16720
16874
  post?: never;
@@ -16735,7 +16889,7 @@ export interface paths {
16735
16889
  put?: never;
16736
16890
  /**
16737
16891
  * Upload a file into a file field of a form
16738
- * @description The form is the one `rails` and `programs` name. Multipart: `field` (the key of an open file field: shown, not locked) and `file`. PDF, JPEG or PNG up to 20 MB, told by the bytes — a renamed file is refused with `DOCUMENT_REJECTED`; a field whose `file.accept` lists only images (the photos of the identity document, `gov_id_front` / `gov_id_back`) refuses a PDF the same way. A field that takes no files now — unknown, not a file field, locked (a form read-only by the application status locks every field), or hidden by its condition — is refused with `FORM_FIELD_NOT_ALLOWED`, whatever the file. The file stays in the draft until the submission is applied; a file of a field hidden by its condition stays in the draft's storage (removable by its `id`), is not listed in the form's `values` while hidden, and does not go with the submission. The photos of the identity document go to the identity provider once the submission waits on the verification. On a form whose last submission is `returned` the files of that submission count toward `file.max_files` of the field and carry over into the draft with the new file. The entity's owner, or an owner or admin of a linked wallet.
16892
+ * @description The form is the one `rails` and `programs` name. Multipart: `field` (the key of an open file field: shown, not locked) and `file`. PDF, JPEG or PNG up to 20 MB, told by the bytes — a renamed file is refused with `DOCUMENT_REJECTED`; a field whose `file.accept` lists only images (the photos of the identity document, `gov_id_front` / `gov_id_back`) refuses a PDF the same way. A field that takes no files now — unknown, not a file field, locked (a form read-only by the application status locks every field), or hidden by its condition — is refused with `FORM_FIELD_NOT_ALLOWED`, whatever the file. The file stays in the draft until the submission is applied; a file of a field hidden by its condition stays in the draft's storage (removable by its `id`), is not listed in the form's `values` while hidden, and does not go with the submission. The photos of the identity document go to the identity provider once the submission waits on the verification. On a form whose last submission is `returned` the files of that submission count toward `file.max_files` of the field and carry over into the draft with the new file. One change to a form at a time: an upload sent while another change to the form runs answers `409 OPERATION_IN_PROGRESS` and stores nothing — upload the files of one form one after another. The entity's owner, or an owner or admin of a linked wallet.
16739
16893
  */
16740
16894
  post: {
16741
16895
  parameters: {
@@ -16805,7 +16959,7 @@ export interface paths {
16805
16959
  "application/json": components["schemas"]["ErrorResponse"];
16806
16960
  };
16807
16961
  };
16808
- /** @description `FORM_LOCKED` — the last submission of the form waits on the verification or the review (a form read-only by the application status answers `400 FORM_FIELD_NOT_ALLOWED` instead); `KYC_FORM_CONDITIONS_CYCLE` — the tenant's form settings show fields on conditions that read each other in a circle. */
16962
+ /** @description `FORM_LOCKED` — the last submission of the form waits on the verification or the review (a form read-only by the application status answers `400 FORM_FIELD_NOT_ALLOWED` instead); `OPERATION_IN_PROGRESS` — another change to this form (a draft save, an upload, a removal, the submission) is running: nothing was changed, try again once it answers; `KYC_FORM_CONDITIONS_CYCLE` — the tenant's form settings show fields on conditions that read each other in a circle. */
16809
16963
  409: {
16810
16964
  headers: {
16811
16965
  [name: string]: unknown;
@@ -16814,7 +16968,7 @@ export interface paths {
16814
16968
  "application/json": components["schemas"]["KycFormsErrorResponse"];
16815
16969
  };
16816
16970
  };
16817
- /** @description File storage is not configured on this server (SERVICE_UNAVAILABLE) */
16971
+ /** @description `SERVICE_UNAVAILABLE` — file storage is not configured on this server, or the locking service is unavailable */
16818
16972
  503: {
16819
16973
  headers: {
16820
16974
  [name: string]: unknown;
@@ -16843,7 +16997,7 @@ export interface paths {
16843
16997
  post?: never;
16844
16998
  /**
16845
16999
  * Remove a file from the draft of a form
16846
- * @description The form is the one `rails` and `programs` name. Only a file of the draft (`saved: false`) can be removed — a file of a returned submission is one too: the submission opens as the draft without it, its own record keeps the file; a document already in the KYC entity never is. The entity's owner, or an owner or admin of a linked wallet.
17000
+ * @description The form is the one `rails` and `programs` name. Only a file of the draft (`saved: false`) can be removed — a file of a returned submission is one too: the submission opens as the draft without it, its own record keeps the file; a document already in the KYC entity never is. One change to a form at a time: a removal sent while another change to the form runs (a draft save, an upload, another removal, the submission) answers `409 OPERATION_IN_PROGRESS` and removes nothing — remove the files of one form one after another. The entity's owner, or an owner or admin of a linked wallet.
16847
17001
  */
16848
17002
  delete: {
16849
17003
  parameters: {
@@ -16902,7 +17056,16 @@ export interface paths {
16902
17056
  "application/json": components["schemas"]["ErrorResponse"];
16903
17057
  };
16904
17058
  };
16905
- 409: components["responses"]["KycFormsConditionsCycle"];
17059
+ /** @description `OPERATION_IN_PROGRESS` — another change to this form (a draft save, an upload, a removal, the submission) is running: nothing was changed, try again once it answers; `KYC_FORM_CONDITIONS_CYCLE` — the tenant's form settings show fields on conditions that read each other in a circle */
17060
+ 409: {
17061
+ headers: {
17062
+ [name: string]: unknown;
17063
+ };
17064
+ content: {
17065
+ "application/json": components["schemas"]["KycFormsErrorResponse"];
17066
+ };
17067
+ };
17068
+ 503: components["responses"]["KycFormsLockUnavailable"];
16906
17069
  };
16907
17070
  };
16908
17071
  options?: never;
@@ -16921,7 +17084,7 @@ export interface paths {
16921
17084
  put?: never;
16922
17085
  /**
16923
17086
  * Send a form
16924
- * @description The form is the one `rails` and `programs` name. The full check of every open field (all errors in one `VALIDATION_ERROR`), then a submission: `awaiting_verification` when the identity document and face are still needed, `applied` when every profile of the form writes the answers into the KYC entity at once, `in_review` when compliance decides (any profile of the form in review mode). Answers `200` with the form in its new state. One submission of a form at a time. A rail form does not change the application status; once its submission is approved, the rail is submitted through the wallet's existing `POST /frontend/wallets/{wallet_id}/kyc-rails/{rail_id}`. A card form is `auto` unless a profile of it says otherwise and never changes the application status; once applied, the cardholder is created through `POST /frontend/issuing/cardholders` with `user_data_id`. A multi form moves the application like the base form it includes; once applied, every rail and program of the set is satisfied from the shared data. A `returned` submission sent again keeps its files that were not removed. A saved beneficial owner (an item of `beneficial_owners` with an `id`) is the entity's: a list without one, a changed saved value outside a `returned` form, and a saved value sent empty are refused with `VALIDATION_ERROR`, as in the draft. The entity's owner, or an owner or admin of a linked wallet.
17087
+ * @description The form is the one `rails` and `programs` name. The full check of every open field (all errors in one `VALIDATION_ERROR`), then a submission: `awaiting_verification` when the identity document and face are still needed, `applied` when every profile of the form writes the answers into the KYC entity at once, `in_review` when compliance decides (any profile of the form in review mode). Answers `200` with the form in its new state. One change to a form at a time: a submission sent while a draft save, an upload, a removal or another submission of the form runs answers `409 OPERATION_IN_PROGRESS` and changes nothing; send it again once the others answer. A rail form does not change the application status; once its submission is approved, the rail is submitted through the wallet's existing `POST /frontend/wallets/{wallet_id}/kyc-rails/{rail_id}`. A card form is `auto` unless a profile of it says otherwise and never changes the application status; once applied, the cardholder is created through `POST /frontend/issuing/cardholders` with `user_data_id`. A multi form moves the application like the base form it includes; once applied, every rail and program of the set is satisfied from the shared data. A `returned` submission sent again keeps its files that were not removed. A saved beneficial owner (an item of `beneficial_owners` with an `id`) is the entity's: a list without one, a changed saved value outside a `returned` form, and a saved value sent empty are refused with `VALIDATION_ERROR`, as in the draft. The entity's owner, or an owner or admin of a linked wallet.
16925
17088
  */
16926
17089
  post: {
16927
17090
  parameters: {
@@ -16972,7 +17135,7 @@ export interface paths {
16972
17135
  "application/json": components["schemas"]["ErrorResponse"];
16973
17136
  };
16974
17137
  };
16975
- /** @description `FORM_LOCKED` — the form is read-only by the application status, or its last submission waits on the verification or the review; `FORM_OUTDATED` — `schema_version` is not the one the form has now, reload it (`GET …/forms`) and send again; `OPERATION_IN_PROGRESS` — a submission of this form is already running; `KYC_FORM_CONDITIONS_CYCLE` — the tenant's form settings show fields on conditions that read each other in a circle */
17138
+ /** @description `FORM_LOCKED` — the form is read-only by the application status, or its last submission waits on the verification or the review; `FORM_OUTDATED` — `schema_version` is not the one the form has now, reload it (`GET …/forms`) and send again; `OPERATION_IN_PROGRESS` — a submission of this form, or another change to it (a draft save, an upload, a removal), is running; `KYC_FORM_CONDITIONS_CYCLE` — the tenant's form settings show fields on conditions that read each other in a circle */
16976
17139
  409: {
16977
17140
  headers: {
16978
17141
  [name: string]: unknown;
@@ -17517,7 +17680,7 @@ export interface components {
17517
17680
  * @example EXCHANGE_OMNI
17518
17681
  * @enum {string}
17519
17682
  */
17520
- 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_FEDNOW_ONRAMP" | "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";
17683
+ 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_FEDNOW_ONRAMP" | "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" | "BC3_SWIFT_ONRAMP" | "BC3_SWIFT_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";
17521
17684
  OrderCalculation: {
17522
17685
  /**
17523
17686
  * Format: uuid
@@ -18543,6 +18706,39 @@ export interface components {
18543
18706
  /** @description Whether the tenant's AML provider can screen addresses on this network (chains list only) */
18544
18707
  aml_supported?: boolean;
18545
18708
  };
18709
+ /** @description A currency on `GET /frontend/reference/currencies`. */
18710
+ ReferenceCurrency: {
18711
+ /**
18712
+ * Format: uuid
18713
+ * @description The `currency_id` other endpoints take
18714
+ */
18715
+ uuid: string;
18716
+ /** @example Tether USD */
18717
+ name: string;
18718
+ /** @example USDT */
18719
+ symbol: string;
18720
+ icon?: string | null;
18721
+ /** @enum {string|null} */
18722
+ type?: "token" | "native" | "fiat" | null;
18723
+ is_crypto: boolean;
18724
+ is_stablecoin?: boolean;
18725
+ is_memo?: boolean | null;
18726
+ /** @example 6 */
18727
+ decimal: number;
18728
+ /** @example 2 */
18729
+ render_decimal: number;
18730
+ /** @description Raw reference data, not a stable contract */
18731
+ meta?: {
18732
+ [key: string]: unknown;
18733
+ } | null;
18734
+ enabled: boolean;
18735
+ /** @description The network of the token; null for a fiat currency */
18736
+ chain?: components["schemas"]["ReferenceChain"] | null;
18737
+ /** @description Whether the currency is enabled for the tenant of the session */
18738
+ is_tenant_enabled: boolean;
18739
+ /** @description Whether 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 */
18740
+ aml_supported: boolean;
18741
+ };
18546
18742
  /** @description Blockchain network as stored in the `chain` reference table. Embedded whole into every item of `GET /frontend/wallets/{wallet_id}/addresses`; `GET /frontend/reference/chains` returns the `ReferenceChain` subset of the same rows. Rely on `id` / `name` / `symbol` / `enabled` / `display_name` — the rest is the raw reference row and is not a stable contract. `name` and `symbol` are keys: match on them, show `display_name`. */
18547
18743
  Chain: {
18548
18744
  /**
@@ -19043,6 +19239,8 @@ export interface components {
19043
19239
  to_address?: string | null;
19044
19240
  /** @description Destination crypto address (crypto transfers) */
19045
19241
  to_crypto_address?: string | null;
19242
+ /** @description The screened address (`AML_CHECK` orders only) */
19243
+ screened_address?: string | null;
19046
19244
  /** @description Blockchain transaction id (when settled on-chain) */
19047
19245
  txid?: string | null;
19048
19246
  /** @description Blockchain transaction hash (when settled on-chain) */
@@ -19490,7 +19688,7 @@ export interface components {
19490
19688
  */
19491
19689
  type: "individual" | "business" | "universal";
19492
19690
  /**
19493
- * @description KYC verification status. A refusal is one of three values: `DECLINED`, `REJECT` or `SOFT_REJECT`. Only `APPROVED` (full access) and `HOLD` (read-only) open the wallet. `OFFBOARDED` — final: the work with this company or person is over; `EXPIRED` — no activity on the application for over three months; a check passed on it brings it back.
19691
+ * @description KYC verification status. A refusal is one of three values: `DECLINED`, `REJECT` or `SOFT_REJECT`. Only `APPROVED` (full access) and `HOLD` (read-only) open the wallet's data endpoints; any other status except `OFFBOARDED` stays listed for members. `OFFBOARDED` — final: the work with this company or person is over, and the wallet is closed for its members: every wallet endpoint answers them `403 ACCESS_DENIED` (its owner still sees it); `EXPIRED` — no activity on the application for over three months; a check passed on it brings it back.
19494
19692
  * @enum {string}
19495
19693
  */
19496
19694
  status: "APPROVED" | "DECLINED" | "PENDING" | "PROCESSING" | "HOLD" | "NEEDS_ATTENTION" | "DOUBLE" | "SOFT_REJECT" | "REJECT" | "UNVERIFIED" | "WAITING_ON_UBOS" | "WAITING_ON_REVIEW" | "EXPIRED" | "OFFBOARDED";
@@ -19686,6 +19884,8 @@ export interface components {
19686
19884
  exchange_rate?: number;
19687
19885
  from_address?: string;
19688
19886
  to_address?: string;
19887
+ /** @description The screened address of an AML check, on its `FEE` row next to `meta_type: AML_CHECK`. The `REFUND` row of that fee does not carry it: follow `order_uuid` to the `AML_CHECK` order. */
19888
+ screened_address?: string;
19689
19889
  /** Format: uuid */
19690
19890
  from_user_data?: string;
19691
19891
  /** Format: uuid */
@@ -19702,6 +19902,13 @@ export interface components {
19702
19902
  direction?: "in" | "out";
19703
19903
  /** Format: uuid */
19704
19904
  order_id?: string;
19905
+ /**
19906
+ * Format: uuid
19907
+ * @description The order this row belongs to. On the `REFUND` row of an AML check it leads to the `AML_CHECK` order.
19908
+ */
19909
+ order_uuid?: string;
19910
+ /** @description What the row pays for, when the order type sets it: `AML_CHECK` on the `FEE` row of an AML check. The `REFUND` row of that fee does not carry it. */
19911
+ meta_type?: string;
19705
19912
  } & {
19706
19913
  [key: string]: unknown;
19707
19914
  };
@@ -20476,7 +20683,7 @@ export interface components {
20476
20683
  last_message: {
20477
20684
  /** @enum {string} */
20478
20685
  author: "compliance" | "client";
20479
- /** @description One line of the message, up to 140 characters, cut at a word; null when the message has no text — an answer of files only */
20686
+ /** @description One line of the message as plain text (no markup; a link reads `label (url)`), up to 140 characters, cut at a word; null when the message has no text — an answer of files only */
20480
20687
  preview: string | null;
20481
20688
  /** Format: date-time */
20482
20689
  created_at: string;
@@ -20506,7 +20713,7 @@ export interface components {
20506
20713
  * @enum {string}
20507
20714
  */
20508
20715
  author: "compliance" | "client";
20509
- /** @description The text of the message. An empty string when the client answered with files only — show the attachments alone. */
20716
+ /** @description Depends on `author`. `compliance`: safe inline HTML, render it as HTML with `white-space: pre-wrap` (line breaks stay `\n`). A message published in the app may use only `b`, `strong`, `i`, `em`, `u`, `s`, `strike`, `del`, `code` and `a` with an `http(s)` or `mailto` `href`; any other compliance message (sent by email before the workspace moved to the app, or not valid HTML) comes as its text with `<`, `>`, `&`, `"` and `'` escaped, so it renders as the same text. `client`: the text as the client sent it, render it as text and never as HTML; an empty string when the client answered with files only — show the attachments alone. */
20510
20717
  body: string;
20511
20718
  attachments: components["schemas"]["RfiAttachment"][];
20512
20719
  /** Format: date-time */
@@ -20734,7 +20941,7 @@ export interface components {
20734
20941
  } & {
20735
20942
  [key: string]: unknown;
20736
20943
  };
20737
- /** @description The value of one field in `values`, shaped by the field's `type`: `text`, `textarea`, `email`, `phone` (E.164), `date` (`YYYY-MM-DD`), `enum` (an `options[].value`), `country` (alpha-2) — a string; `number`, `integer` — a number; `bool`, `consent` — a boolean; `multi_enum`, `country_multi` — an array of strings; `file` — an array of `KycFormsFileValue`; `list` — an array of `KycFormsListItemValue`. Empty is null. */
20944
+ /** @description The value of one field in `values`, shaped by the field's `type`: `text`, `textarea`, `email`, `phone` (E.164), `date` (`YYYY-MM-DD`), `enum` (an `options[].value`), `country` (alpha-2) — a string; `number`, `integer` — a number; `bool` — a boolean; `multi_enum`, `country_multi` — an array of strings; `file` — an array of `KycFormsFileValue`; `list` — an array of `KycFormsListItemValue`. Empty is null. */
20738
20945
  KycFormsFieldValue: (string | number | boolean | string[] | components["schemas"]["KycFormsFileValue"][] | components["schemas"]["KycFormsListItemValue"][]) | null;
20739
20946
  /** @description The value of one open field in the draft or the submission, shaped by the field's `type` as `KycFormsFieldValue` — except a `file` field, whose files travel through the uploads routes only (its key is refused with `FORM_FIELD_NOT_ALLOWED`). `null` clears the field. */
20740
20947
  KycFormsAnswerValue: (string | number | boolean | string[] | components["schemas"]["KycFormsListItemValue"][]) | null;
@@ -20745,10 +20952,10 @@ export interface components {
20745
20952
  */
20746
20953
  key: string;
20747
20954
  /**
20748
- * @description The control, and the shape of the value in `values` and in the draft: `text`, `textarea`, `email` — string; `phone` — E.164 string; `number`, `integer` — number; `date` — `YYYY-MM-DD`; `bool` — boolean; `consent` — only `true` is accepted; `enum` — one `options[].value`; `multi_enum` — an array of them; `country` — alpha-2; `country_multi` — an array of alpha-2; `file` — files travel through the uploads routes, `values` lists them as `KycFormsFileValue`; `list` — an array of items, each an object keyed by `item.fields[].key` (plus `id` for a saved row).
20955
+ * @description The control, and the shape of the value in `values` and in the draft: `text`, `textarea`, `email` — string; `phone` — E.164 string; `number`, `integer` — number; `date` — `YYYY-MM-DD`; `bool` — boolean; `enum` — one `options[].value`; `multi_enum` — an array of them; `country` — alpha-2; `country_multi` — an array of alpha-2; `file` — files travel through the uploads routes, `values` lists them as `KycFormsFileValue`; `list` — an array of items, each an object keyed by `item.fields[].key` (plus `id` for a saved row).
20749
20956
  * @enum {string}
20750
20957
  */
20751
- type: "text" | "textarea" | "number" | "integer" | "date" | "bool" | "consent" | "enum" | "multi_enum" | "country" | "country_multi" | "email" | "phone" | "file" | "list";
20958
+ type: "text" | "textarea" | "number" | "integer" | "date" | "bool" | "enum" | "multi_enum" | "country" | "country_multi" | "email" | "phone" | "file" | "list";
20752
20959
  label: string;
20753
20960
  hint: string | null;
20754
20961
  placeholder: string | null;
@@ -2905,7 +2905,7 @@ export interface components {
2905
2905
  * @example EXCHANGE_OMNI
2906
2906
  * @enum {string}
2907
2907
  */
2908
- 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_FEDNOW_ONRAMP" | "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";
2908
+ 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_FEDNOW_ONRAMP" | "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" | "BC3_SWIFT_ONRAMP" | "BC3_SWIFT_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";
2909
2909
  OrderCalculation: {
2910
2910
  /**
2911
2911
  * Format: uuid
@@ -9202,7 +9202,7 @@ export interface components {
9202
9202
  * @example EXCHANGE_OMNI
9203
9203
  * @enum {string}
9204
9204
  */
9205
- 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_FEDNOW_ONRAMP" | "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";
9205
+ 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_FEDNOW_ONRAMP" | "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" | "BC3_SWIFT_ONRAMP" | "BC3_SWIFT_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";
9206
9206
  OrderCalculation: {
9207
9207
  /**
9208
9208
  * Format: uuid
@@ -1811,6 +1811,7 @@ export interface components {
1811
1811
  source_of_wealth_ubo?: string | null;
1812
1812
  customer_acquisition_and_location?: string | null;
1813
1813
  funds_senders_and_recipients?: string | null;
1814
+ who_pays_and_how?: string | null;
1814
1815
  purposes?: string[] | null;
1815
1816
  payment_flows?: string[] | null;
1816
1817
  source_of_funds_list?: string[] | null;
@@ -2184,6 +2185,8 @@ export interface components {
2184
2185
  auth_provider: "supabase" | "clerk";
2185
2186
  /** @default false */
2186
2187
  kyc_forms_enabled: boolean;
2188
+ /** @default false */
2189
+ enable_promo_codes: boolean;
2187
2190
  base_currency: string;
2188
2191
  mass_payouts: components["schemas"]["SystemMassPayoutsConfigDto"];
2189
2192
  aml_check: components["schemas"]["SystemAmlCheckConfigDto"];
@@ -3738,6 +3741,13 @@ export interface operations {
3738
3741
  "application/json": components["schemas"]["InitUserVerificationResponseDto"];
3739
3742
  };
3740
3743
  };
3744
+ /** @description The tenant runs the KYC forms flow: the user verifies through the KYC forms of CORE */
3745
+ 400: {
3746
+ headers: {
3747
+ [name: string]: unknown;
3748
+ };
3749
+ content?: never;
3750
+ };
3741
3751
  /** @description Unauthorized */
3742
3752
  401: {
3743
3753
  headers: {
@@ -3771,6 +3781,13 @@ export interface operations {
3771
3781
  "application/json": components["schemas"]["ResumeUserVerificationResponseDto"];
3772
3782
  };
3773
3783
  };
3784
+ /** @description The tenant runs the KYC forms flow: the user verifies through the KYC forms of CORE */
3785
+ 400: {
3786
+ headers: {
3787
+ [name: string]: unknown;
3788
+ };
3789
+ content?: never;
3790
+ };
3774
3791
  /** @description Unauthorized */
3775
3792
  401: {
3776
3793
  headers: {
@@ -1378,6 +1378,25 @@ export declare namespace API {
1378
1378
  * `cardholder_requirements.level` to name the bar ("requires FULL").
1379
1379
  */
1380
1380
  | 'NEEDS_VERIFICATION_UPGRADE'
1381
+ /**
1382
+ * An ACTIVE cardholder is linked (`cardholder_id`), but it does not hold what the
1383
+ * program's ISSUANCE bar asks for — typically one written before that bar existed.
1384
+ * Creating a card now is refused with `400`; `will_require` names the same fields
1385
+ * that 400 would. Nothing is submitted again: `PATCH` the fields, and for the
1386
+ * document photos call `POST /cardholders` with the member's `user_data_id` — it
1387
+ * answers `409` with this `cardholder_id` after completing the row from the
1388
+ * member's KYC dossier. When the member has not passed that verification, run it first.
1389
+ */
1390
+ | 'NEEDS_COMPLETION'
1391
+ /**
1392
+ * KYC forms flow only: required fields of the program's card form are still empty.
1393
+ * Only the member fills that form in their personal KYC entity; the create is refused
1394
+ * until they do (`400 CARD_REQUIREMENTS_INCOMPLETE`, or `400 KYC_PERSONAL_ENTITY_MISSING`
1395
+ * for a member with no personal entity), and fields in the request body do not help.
1396
+ * `will_require` names what the member has left: tell them to fill the card form, do
1397
+ * not ask the caller for these fields.
1398
+ */
1399
+ | 'NEEDS_CARD_FORM'
1381
1400
  /**
1382
1401
  * A verification came back with a FINAL rejection — only support can
1383
1402
  * reset it. Never render an actionable "verify now" for this state.
@@ -1390,6 +1409,16 @@ export declare namespace API {
1390
1409
  * has, so a fresh cardholder is NOT the way to retry.
1391
1410
  */
1392
1411
  | 'NEEDS_RESUBMIT'
1412
+ /**
1413
+ * The cardholder is submitted (`cardholder_id` is set) and the ISSUER is still
1414
+ * reviewing the person. Nothing is wrong and nothing can be done but wait:
1415
+ * re-submitting would only spend another review (the submit endpoint refuses it with
1416
+ * `409 CARDHOLDER_NOT_DRAFT`), and creating a card now is refused with
1417
+ * `400 INVALID_REQUEST`. Show the member as pending and poll. Only programs whose
1418
+ * vendor reviews the person before issuance ever return this; vendors that issue
1419
+ * inline go straight to READY.
1420
+ */
1421
+ | 'ISSUER_REVIEW_PENDING'
1393
1422
  /** Not an active member of this wallet. */
1394
1423
  | 'NOT_MEMBER';
1395
1424
  type Request = {
@@ -1401,7 +1430,7 @@ export declare namespace API {
1401
1430
  type Item = {
1402
1431
  user_data_id: string;
1403
1432
  verdict: Verdict;
1404
- /** The linked cardholder for READY/DRAFT verdicts, null otherwise. */
1433
+ /** The linked cardholder for READY / DRAFT / NEEDS_COMPLETION / NEEDS_RESUBMIT / ISSUER_REVIEW_PENDING verdicts. */
1405
1434
  cardholder_id: string | null;
1406
1435
  /** Fields to collect by hand (submit `missing` vocabulary). */
1407
1436
  will_require: string[];
@@ -3276,6 +3305,8 @@ export declare namespace API {
3276
3305
  interface OrderType {
3277
3306
  order_type_id: string;
3278
3307
  }
3308
+ type EmbeddedProgram = NonNullable<componentsV1Frontend['schemas']['VirtualAccount']['virtual_accounts_program']>;
3309
+ type EmbeddedDetailProgram = NonNullable<componentsV1Frontend['schemas']['VirtualAccountDetail']['virtual_accounts_program']>;
3279
3310
  interface VirtualAccountListItem {
3280
3311
  id: string;
3281
3312
  created_at: string;
@@ -3289,7 +3320,7 @@ export declare namespace API {
3289
3320
  destination_address: string;
3290
3321
  integration_vendor_id: string;
3291
3322
  vendor_account_id: string;
3292
- virtual_accounts_program: API.VirtualAccounts.Programs.Program;
3323
+ virtual_accounts_program: API.VirtualAccounts.VirtualAccount.EmbeddedProgram;
3293
3324
  deposit_instructions?: API.VirtualAccounts.VirtualAccount.DepositInstruction.DepositInstruction[];
3294
3325
  }
3295
3326
  interface VirtualAccountDetailItem {
@@ -3311,7 +3342,7 @@ export declare namespace API {
3311
3342
  total_balance: number;
3312
3343
  va_programs_id: string;
3313
3344
  vendor_account_id: string;
3314
- virtual_accounts_program: API.VirtualAccounts.Programs.Program;
3345
+ virtual_accounts_program: API.VirtualAccounts.VirtualAccount.EmbeddedDetailProgram;
3315
3346
  wallet_id: string;
3316
3347
  }
3317
3348
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "squarefi-bff-api-module",
3
- "version": "1.36.100",
3
+ "version": "1.36.102",
4
4
  "description": "Squarefi BFF API client module",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",