squarefi-bff-api-module 1.36.99 → 1.36.100

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.
@@ -108,6 +108,9 @@ export declare const frontend: {
108
108
  exchangeRates: {
109
109
  list: (params?: API.Frontend.Reference.ExchangeRates.List.Request) => Promise<API.Frontend.Reference.ExchangeRates.List.Response>;
110
110
  };
111
+ countries: {
112
+ list: (params?: API.Frontend.Reference.Countries.List.Request) => Promise<API.Frontend.Reference.Countries.List.Response>;
113
+ };
111
114
  orderTypes: {
112
115
  list: (params?: API.Frontend.Reference.OrderTypes.List.Request) => Promise<API.Frontend.Reference.OrderTypes.List.Response>;
113
116
  };
@@ -227,6 +227,15 @@ export const frontend = {
227
227
  exchangeRates: {
228
228
  list: (params = {}) => apiClientV1Frontend.getRequest('/frontend/reference/exchange_rates', { params }),
229
229
  },
230
+ // Core's countries with `iban`: what banks of the country take as the account of an incoming SWIFT payment.
231
+ // MANDATORY — only an IBAN (label the SWIFT account field "IBAN"); OPTIONAL — an IBAN or a domestic number;
232
+ // NONE — no IBANs. Look the bank up by the BIC's country (letters 5–6), not the beneficiary's, and join to
233
+ // `list.countries` by `iso2`. The backend pages it (50 by default), so the whole list is asked for by default.
234
+ countries: {
235
+ list: (params = {}) => apiClientV1Frontend.getRequest('/frontend/reference/countries', {
236
+ params: { limit: 500, ...params },
237
+ }),
238
+ },
230
239
  // Only the types enabled for the tenant (a `tenant_order_type_rates` row), paged — 50 by default, 500 at most.
231
240
  orderTypes: {
232
241
  list: (params = {}) => apiClientV1Frontend.getRequest('/frontend/reference/order_types', { params }),
@@ -6624,6 +6624,8 @@ export interface paths {
6624
6624
  * List countries
6625
6625
  * @description Returns countries with ISO codes, phone codes, currency info, and flags.
6626
6626
  *
6627
+ * `iban` says what the country's banks take as the account of an incoming SWIFT payment: `MANDATORY` — only an IBAN (a SWIFT destination to such a bank is refused with `IBAN_REQUIRED` otherwise), `OPTIONAL` — an IBAN or a domestic account number, `NONE` — no IBANs in the country.
6628
+ *
6627
6629
  * **Authentication**: x-api-key header required
6628
6630
  *
6629
6631
  */
@@ -6653,7 +6655,12 @@ export interface paths {
6653
6655
  [name: string]: unknown;
6654
6656
  };
6655
6657
  content: {
6656
- "application/json": components["schemas"]["ApiSuccessResponse"];
6658
+ "application/json": {
6659
+ /** @example true */
6660
+ success: boolean;
6661
+ data: components["schemas"]["ReferenceCountry"][];
6662
+ pagination?: components["schemas"]["PaginationResponse"];
6663
+ };
6657
6664
  };
6658
6665
  };
6659
6666
  401: components["responses"]["Unauthorized"];
@@ -8333,7 +8340,7 @@ export interface components {
8333
8340
  /** @example iban */
8334
8341
  field: string;
8335
8342
  /**
8336
- * @description Machine-readable reason. Bank details: `REQUIRED`, `IBAN_WRONG_FORMAT`, `IBAN_INVALID_CHARACTERS`, `IBAN_COUNTRY_NOT_SUPPORTED`, `IBAN_WRONG_LENGTH`, `IBAN_WRONG_BBAN_FORMAT`, `IBAN_WRONG_CHECKSUM`, `IBAN_WRONG_NATIONAL_CHECKSUM`, `IBAN_QR_NOT_ALLOWED`, `IBAN_NOT_SEPA`, `IBAN_BIC_COUNTRY_MISMATCH`, `BIC_WRONG_FORMAT`, `BIC_UNKNOWN_COUNTRY`, `BIC_TEST_CODE`, `ROUTING_NUMBER_INVALID`, `ACCOUNT_NUMBER_INVALID`, `SORT_CODE_INVALID`, `WRONG_IDENTIFIER_TYPE`, `INVALID_VALUE`; reference data: `BANK_COUNTRY_MISMATCH`, `VALIDATION_ERROR`; dry run only: `INVALID_TYPE`. New codes may be added — show `message` for an unknown one.
8343
+ * @description Machine-readable reason. Bank details: `REQUIRED`, `IBAN_WRONG_FORMAT`, `IBAN_INVALID_CHARACTERS`, `IBAN_COUNTRY_NOT_SUPPORTED`, `IBAN_WRONG_LENGTH`, `IBAN_WRONG_BBAN_FORMAT`, `IBAN_WRONG_CHECKSUM`, `IBAN_WRONG_NATIONAL_CHECKSUM`, `IBAN_QR_NOT_ALLOWED`, `IBAN_NOT_SEPA`, `IBAN_REQUIRED`, `IBAN_BIC_COUNTRY_MISMATCH`, `BIC_WRONG_FORMAT`, `BIC_UNKNOWN_COUNTRY`, `BIC_TEST_CODE`, `ROUTING_NUMBER_INVALID`, `ACCOUNT_NUMBER_INVALID`, `SORT_CODE_INVALID`, `WRONG_IDENTIFIER_TYPE`, `INVALID_VALUE`; reference data: `BANK_COUNTRY_MISMATCH`, `VALIDATION_ERROR`; dry run only: `INVALID_TYPE`. New codes may be added — show `message` for an unknown one.
8337
8344
  * @example IBAN_NOT_SEPA
8338
8345
  */
8339
8346
  code: string;
@@ -8350,6 +8357,34 @@ export interface components {
8350
8357
  */
8351
8358
  detected?: "IBAN" | "BIC" | "ROUTING_NUMBER";
8352
8359
  };
8360
+ /** @description A country of the reference. `id` is the `country_id` of addresses (bank and beneficiary address of a destination). `iban` says what banks of the country take as the account of an incoming SWIFT payment: `MANDATORY` — only an IBAN, a SWIFT destination to such a bank is refused with `IBAN_REQUIRED` for anything else; `OPTIONAL` — the country issues IBANs, its banks also take a domestic account number; `NONE` — the country issues no IBANs. */
8361
+ ReferenceCountry: {
8362
+ /** @example 231 */
8363
+ id: number;
8364
+ /** @example United Arab Emirates */
8365
+ name: string;
8366
+ /** @example AE */
8367
+ iso2: string;
8368
+ /** @example ARE */
8369
+ iso3?: string | null;
8370
+ /** @example 971 */
8371
+ phonecode?: string | null;
8372
+ /** @example AED */
8373
+ currency?: string | null;
8374
+ currency_name?: string | null;
8375
+ currency_symbol?: string | null;
8376
+ /** @example Asia */
8377
+ region?: string | null;
8378
+ /** @example Western Asia */
8379
+ subregion?: string | null;
8380
+ emoji?: string | null;
8381
+ nationality?: string | null;
8382
+ /**
8383
+ * @example MANDATORY
8384
+ * @enum {string}
8385
+ */
8386
+ iban: "MANDATORY" | "OPTIONAL" | "NONE";
8387
+ };
8353
8388
  DestinationValidationResult: {
8354
8389
  /** @description True when creating the destination with this payload would pass every check */
8355
8390
  valid: boolean;
@@ -10916,6 +10916,8 @@ export interface paths {
10916
10916
  * List countries
10917
10917
  * @description Returns countries with ISO codes, phone codes, currency info.
10918
10918
  *
10919
+ * `iban` says what the country's banks take as the account of an incoming SWIFT payment: `MANDATORY` — only an IBAN (a SWIFT destination to such a bank is refused with `IBAN_REQUIRED` otherwise), `OPTIONAL` — an IBAN or a domestic account number, `NONE` — no IBANs in the country.
10920
+ *
10919
10921
  * **Authentication**: Bearer token + x-tenant-id header
10920
10922
  *
10921
10923
  */
@@ -10940,7 +10942,14 @@ export interface paths {
10940
10942
  headers: {
10941
10943
  [name: string]: unknown;
10942
10944
  };
10943
- content?: never;
10945
+ content: {
10946
+ "application/json": {
10947
+ /** @example true */
10948
+ success: boolean;
10949
+ data: components["schemas"]["ReferenceCountry"][];
10950
+ pagination?: components["schemas"]["PaginationResponse"];
10951
+ };
10952
+ };
10944
10953
  };
10945
10954
  401: components["responses"]["UnauthorizedError"];
10946
10955
  };
@@ -16570,7 +16579,7 @@ export interface paths {
16570
16579
  };
16571
16580
  /**
16572
16581
  * The form of an entity for a set of purposes
16573
- * @description Built on every call from the tenant's requirement profiles and the entity. Without `rails` and `programs` it is the base form. With one rail it is that rail's form: the base profile, the tenant's rail profile and the vendor's minimum merged: a field required by any of them is required, `review` wins over `auto`, and a field is shown when any of them shows it (one asking it without a condition — the vendor's minimum always — shows it always); profiles whose conditions read each other in a circle answer `409 KYC_FORM_CONDITIONS_CYCLE`. Sections are the groups to draw, `visible_when` the show logic, `required_by` the purposes a field is required for, the locks (`saved`, `from_document`, `pending`, `status`) what the client cannot change, `schema_version` what to echo back. Fields that come from the identity document (names, date of birth, citizenship, the document number and dates) are left out until the document is verified; the document itself is asked: its type `gov_id_type` (`PASSPORT`, `ID_CARD`, `RESIDENCE_PERMIT`, `DRIVERS` — the codes `…/owners/{owner_id}/document` takes as `type` too), issuing country `gov_id_country` and photos `gov_id_front` and `gov_id_back` (shown unless a passport) — saved, and no longer asked, once it is verified; `state: complete` on a rail form means nothing is left to ask and the client goes straight to the rail's terms. With one program and `wallet_id` it is the form before a card: the level the program's vendor demands (`minimal`: name, email, phone; `basic`: plus date of birth, citizenship, gender, identity document type and number, residential address; `declared` / `full`: plus the identity document and the face, verified after the form) merged with the tenant's binding for the program, without the base form; what the personal entity already holds is locked `saved`, so `state: complete` means the card can be asked for at once. Several rails and programs at once is the multi form: the base form, every rail and every program merged, each field once with `required_by` naming the purposes. Access: the owner of the entity, or an owner / admin of a wallet it is linked to.
16582
+ * @description Built on every call from the tenant's requirement profiles and the entity. Without `rails` and `programs` it is the base form. With one rail it is that rail's form: the base profile, the tenant's rail profile and the vendor's minimum merged: a field required by any of them is required, `review` wins over `auto`, and a field is shown when any of them shows it (one asking it without a condition — the vendor's minimum always — shows it always); profiles whose conditions read each other in a circle answer `409 KYC_FORM_CONDITIONS_CYCLE`. Sections are the groups to draw, `visible_when` the show logic, `required_by` the purposes a field is required for, the locks (`saved`, `from_document`, `pending`, `status`) what the client cannot change, `schema_version` what to echo back. Fields that come from the identity document (names, date of birth, citizenship, the document number and dates) are left out until the document is verified; the document itself is asked: its type `gov_id_type` (`PASSPORT`, `ID_CARD`, `RESIDENCE_PERMIT`, `DRIVERS` — the codes `…/owners/{owner_id}/document` takes as `type` too), issuing country `gov_id_country` and photos `gov_id_front` and `gov_id_back` (shown unless a passport) — saved, and no longer asked, once it is verified; `state: complete` on a rail form means nothing is left to ask and the client goes straight to the rail's terms. With one program and `wallet_id` it is the form before a card: the level the program's vendor demands (`minimal`: name, email, phone; `basic`: plus date of birth, citizenship, gender, identity document type and number, residential address; `declared` / `full`: plus the identity document and the face, verified after the form) merged with the tenant's binding for the program, without the base form; what the personal entity already holds is locked `saved`, so `state: complete` means the card can be asked for at once. Several rails and programs at once is the multi form: the base form, every rail and every program merged, each field once with `required_by` naming the purposes. A form whose last submission is `returned` comes back with that submission's answers in `values` — its files too, as files of the draft (`saved: false`, removable by `DELETE …/forms/uploads/{upload_id}`) — until the client saves, uploads or sends again. Access: the owner of the entity, or an owner / admin of a wallet it is linked to.
16574
16583
  */
16575
16584
  get: {
16576
16585
  parameters: {
@@ -16646,7 +16655,7 @@ export interface paths {
16646
16655
  get?: never;
16647
16656
  /**
16648
16657
  * Save the draft of a form
16649
- * @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. Types are checked, rules and requiredness are not — except that owner shares over 100% in total and a value whose condition reads an empty required source are refused here too. 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.
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.
16650
16659
  */
16651
16660
  put: {
16652
16661
  parameters: {
@@ -16726,7 +16735,7 @@ export interface paths {
16726
16735
  put?: never;
16727
16736
  /**
16728
16737
  * Upload a file into a file field of a form
16729
- * @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. The entity's owner, or an owner or admin of a linked wallet.
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.
16730
16739
  */
16731
16740
  post: {
16732
16741
  parameters: {
@@ -16834,7 +16843,7 @@ export interface paths {
16834
16843
  post?: never;
16835
16844
  /**
16836
16845
  * Remove a file from the draft of a form
16837
- * @description The form is the one `rails` and `programs` name. Only a file of the draft (`saved: false`) can be removed; a document already in the KYC entity never is. The entity's owner, or an owner or admin of a linked wallet.
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.
16838
16847
  */
16839
16848
  delete: {
16840
16849
  parameters: {
@@ -16850,7 +16859,7 @@ export interface paths {
16850
16859
  path: {
16851
16860
  /** @description `kyc_entity.id` of the caller, or of an entity linked to a wallet the caller owns or administers */
16852
16861
  entity_id: components["parameters"]["KycFormsEntityId"];
16853
- /** @description The `id` of a file in the draft (`saved: false`) */
16862
+ /** @description The `id` of a file in the draft or in the returned submission of the form (`saved: false`) */
16854
16863
  upload_id: components["parameters"]["KycFormsUploadId"];
16855
16864
  };
16856
16865
  cookie?: never;
@@ -16873,18 +16882,18 @@ export interface paths {
16873
16882
  };
16874
16883
  };
16875
16884
  };
16876
- /** @description `VALIDATION_ERROR` — an id (`entity_id`, `upload_id`, `wallet_id`, `rails`, `programs`) is not a uuid; `INVALID_REQUEST` — `wallet_id` missing for a form over card programs; `KYC_FORMS_NOT_ENABLED`. */
16885
+ /** @description `VALIDATION_ERROR` — an id (`entity_id`, `upload_id`, `wallet_id`, `rails`, `programs`) is not a uuid (a message only); `INVALID_REQUEST` — `wallet_id` missing for a form over card programs; `FORM_TARGET_UNSUPPORTED` — a card program named on a business entity; `KYC_BASE_BINDING_MISSING` — the tenant has no base form for this client type; `KYC_FORMS_NOT_ENABLED` — the tenant still runs KYC through the BFF. */
16877
16886
  400: {
16878
16887
  headers: {
16879
16888
  [name: string]: unknown;
16880
16889
  };
16881
16890
  content: {
16882
- "application/json": components["schemas"]["ErrorResponse"];
16891
+ "application/json": components["schemas"]["KycFormsErrorResponse"];
16883
16892
  };
16884
16893
  };
16885
16894
  401: components["responses"]["UnauthorizedError"];
16886
16895
  403: components["responses"]["KycFormsAccessDenied"];
16887
- /** @description The entity does not exist or belongs to another tenant, or the upload is not in the draft of this form — a saved document is never removed here (`NOT_FOUND`). */
16896
+ /** @description `NOT_FOUND` — the entity does not exist or belongs to another tenant, a rail / program of the query does not exist for the tenant, or the upload is not in the draft or in the returned submission of this form — a saved document is never removed here. */
16888
16897
  404: {
16889
16898
  headers: {
16890
16899
  [name: string]: unknown;
@@ -16893,6 +16902,7 @@ export interface paths {
16893
16902
  "application/json": components["schemas"]["ErrorResponse"];
16894
16903
  };
16895
16904
  };
16905
+ 409: components["responses"]["KycFormsConditionsCycle"];
16896
16906
  };
16897
16907
  };
16898
16908
  options?: never;
@@ -16911,7 +16921,7 @@ export interface paths {
16911
16921
  put?: never;
16912
16922
  /**
16913
16923
  * Send a form
16914
- * @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. The entity's owner, or an owner or admin of a linked wallet.
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.
16915
16925
  */
16916
16926
  post: {
16917
16927
  parameters: {
@@ -17878,7 +17888,7 @@ export interface components {
17878
17888
  /** @example iban */
17879
17889
  field: string;
17880
17890
  /**
17881
- * @description Machine-readable reason. Bank details: `REQUIRED`, `IBAN_WRONG_FORMAT`, `IBAN_INVALID_CHARACTERS`, `IBAN_COUNTRY_NOT_SUPPORTED`, `IBAN_WRONG_LENGTH`, `IBAN_WRONG_BBAN_FORMAT`, `IBAN_WRONG_CHECKSUM`, `IBAN_WRONG_NATIONAL_CHECKSUM`, `IBAN_QR_NOT_ALLOWED`, `IBAN_NOT_SEPA`, `IBAN_BIC_COUNTRY_MISMATCH`, `BIC_WRONG_FORMAT`, `BIC_UNKNOWN_COUNTRY`, `BIC_TEST_CODE`, `ROUTING_NUMBER_INVALID`, `ACCOUNT_NUMBER_INVALID`, `SORT_CODE_INVALID`, `WRONG_IDENTIFIER_TYPE`, `INVALID_VALUE`; reference data: `BANK_COUNTRY_MISMATCH`, `VALIDATION_ERROR`; dry run only: `INVALID_TYPE`. New codes may be added — show `message` for an unknown one.
17891
+ * @description Machine-readable reason. Bank details: `REQUIRED`, `IBAN_WRONG_FORMAT`, `IBAN_INVALID_CHARACTERS`, `IBAN_COUNTRY_NOT_SUPPORTED`, `IBAN_WRONG_LENGTH`, `IBAN_WRONG_BBAN_FORMAT`, `IBAN_WRONG_CHECKSUM`, `IBAN_WRONG_NATIONAL_CHECKSUM`, `IBAN_QR_NOT_ALLOWED`, `IBAN_NOT_SEPA`, `IBAN_REQUIRED`, `IBAN_BIC_COUNTRY_MISMATCH`, `BIC_WRONG_FORMAT`, `BIC_UNKNOWN_COUNTRY`, `BIC_TEST_CODE`, `ROUTING_NUMBER_INVALID`, `ACCOUNT_NUMBER_INVALID`, `SORT_CODE_INVALID`, `WRONG_IDENTIFIER_TYPE`, `INVALID_VALUE`; reference data: `BANK_COUNTRY_MISMATCH`, `VALIDATION_ERROR`; dry run only: `INVALID_TYPE`. New codes may be added — show `message` for an unknown one.
17882
17892
  * @example IBAN_NOT_SEPA
17883
17893
  */
17884
17894
  code: string;
@@ -17895,6 +17905,34 @@ export interface components {
17895
17905
  */
17896
17906
  detected?: "IBAN" | "BIC" | "ROUTING_NUMBER";
17897
17907
  };
17908
+ /** @description A country of the reference. `id` is the `country_id` of addresses (bank and beneficiary address of a destination). `iban` says what banks of the country take as the account of an incoming SWIFT payment: `MANDATORY` — only an IBAN, a SWIFT destination to such a bank is refused with `IBAN_REQUIRED` for anything else; `OPTIONAL` — the country issues IBANs, its banks also take a domestic account number; `NONE` — the country issues no IBANs. */
17909
+ ReferenceCountry: {
17910
+ /** @example 231 */
17911
+ id: number;
17912
+ /** @example United Arab Emirates */
17913
+ name: string;
17914
+ /** @example AE */
17915
+ iso2: string;
17916
+ /** @example ARE */
17917
+ iso3?: string | null;
17918
+ /** @example 971 */
17919
+ phonecode?: string | null;
17920
+ /** @example AED */
17921
+ currency?: string | null;
17922
+ currency_name?: string | null;
17923
+ currency_symbol?: string | null;
17924
+ /** @example Asia */
17925
+ region?: string | null;
17926
+ /** @example Western Asia */
17927
+ subregion?: string | null;
17928
+ emoji?: string | null;
17929
+ nationality?: string | null;
17930
+ /**
17931
+ * @example MANDATORY
17932
+ * @enum {string}
17933
+ */
17934
+ iban: "MANDATORY" | "OPTIONAL" | "NONE";
17935
+ };
17898
17936
  DestinationValidationResult: {
17899
17937
  /** @description True when creating the destination with this payload would pass every check */
17900
17938
  valid: boolean;
@@ -20670,11 +20708,11 @@ export interface components {
20670
20708
  file_name: string | null;
20671
20709
  /** Format: date-time */
20672
20710
  uploaded_at: string;
20673
- /** @description false — in the draft, deletable; true — already a KYC document, never removed here. */
20711
+ /** @description false — in the draft (a returned submission's files included until it is sent again), deletable; true — already a KYC document, never removed here. */
20674
20712
  saved: boolean;
20675
20713
  };
20676
20714
  /**
20677
- * @description One item of a `list` field (`beneficial_owners`): an object keyed by the `item.fields[].key` of the field, each value shaped by that item field's `type` (an item field never takes files). `id` is set on a row already saved in the KYC entity (for an owner, the `owner_id` of the owner routes); send it back to keep the row, leave it out for a new one.
20715
+ * @description One item of a `list` field (`beneficial_owners`): an object keyed by the `item.fields[].key` of the field, each value shaped by that item field's `type` (an item field never takes files). `id` is set on a row already saved in the KYC entity (for an owner, the `owner_id` of the owner routes); send it back to keep the row, leave it out for a new one. A saved row is the entity's: the client never removes it — a list (or a draft's list, an empty or `null` one included) without an `id` the form gave is refused with `VALIDATION_ERROR` on the list key, «A saved beneficial owner cannot be removed; contact support»; compliance removes one. Nor does its `owner_type` change, nor is a saved value of it cleared (sent empty: `VALIDATION_ERROR` on the item field, «A saved value cannot be cleared; correct it or contact support»; left out of the item: kept). On a `returned` form the client corrects the other values of the item fields the form asks; outside a return a changed saved value is refused (`VALIDATION_ERROR`, «A saved value cannot be changed; contact support»). Messages come in the language of the form. Do not offer to delete an item with an `id`, nor to change its type.
20678
20716
  * @example {
20679
20717
  * "id": "2d7c1b9e-4f30-4a8c-9e21-7b6a5c4d3e2f",
20680
20718
  * "owner_type": "individual",
@@ -20690,7 +20728,7 @@ export interface components {
20690
20728
  KycFormsListItemValue: {
20691
20729
  /**
20692
20730
  * Format: uuid
20693
- * @description The saved row; absent on an item that is not saved yet.
20731
+ * @description The saved row — not removable by the client; absent on an item that is not saved yet, which the client adds and removes freely.
20694
20732
  */
20695
20733
  id?: string;
20696
20734
  } & {
@@ -20897,11 +20935,19 @@ export interface components {
20897
20935
  saved: boolean;
20898
20936
  };
20899
20937
  };
20900
- /** @description The base form in the overview. */
20938
+ /** @description The base form in the overview, with the newest submission of the application. `state` and `missing_required` are the base form's own; `submission` and `target` may come from a multi form over it. */
20901
20939
  KycFormsFormSummary: {
20902
20940
  state: components["schemas"]["KycFormsFormState"];
20903
20941
  missing_required: number;
20904
- submission: components["schemas"]["KycFormsSubmission"];
20942
+ /** @description The newest submission of the application: of the base form or of a multi form over it, whatever set it was sent under. `target` names that form. */
20943
+ submission: components["schemas"]["KycFormsSubmission"] | null;
20944
+ /** @description The form the application was last sent under: open `GET …/forms` with these `rails`, `programs` and `wallet_id` to show a returned submission with its `comment` on any device, and send it again under the same set to close the return. Empty `rails` and `programs` are the base form (also when nothing was sent yet: then `wallet_id` is null). `wallet_id` is the wallet the submission was sent for, the entity's first linked wallet when no other was asked for, so it is not null for a base form of an entity linked to a wallet; pass it through as it is. To anyone but the owner of the entity — an admin of a linked wallet — only `rails` are named (`programs` empty, `wallet_id` null): like `cards[]`, which wallets the application was sent in and for which cards is the owner's to see; a form over rails alone opens the same without `wallet_id`. */
20945
+ target: {
20946
+ rails: string[];
20947
+ programs: string[];
20948
+ /** Format: uuid */
20949
+ wallet_id: string | null;
20950
+ };
20905
20951
  };
20906
20952
  KycFormsOverview: {
20907
20953
  /** @example true */
@@ -20919,6 +20965,11 @@ export interface components {
20919
20965
  * "id": "7b0f3c52-1d2e-4a6b-8f90-3c4d5e6f7a81",
20920
20966
  * "status": "awaiting_verification",
20921
20967
  * "comment": null
20968
+ * },
20969
+ * "target": {
20970
+ * "rails": [],
20971
+ * "programs": [],
20972
+ * "wallet_id": null
20922
20973
  * }
20923
20974
  * },
20924
20975
  * "verification": {
@@ -20936,7 +20987,7 @@ export interface components {
20936
20987
  entity_type: "individual" | "business";
20937
20988
  status: components["schemas"]["KycFormsEntityStatus"];
20938
20989
  /**
20939
- * @description Build the screen by this, not by `status`. `not_required` — the tenant asks nothing of this client type (`base_form` is null); `not_started` — the base form was not started; `incomplete` — a draft exists; `action_required` — the client's move: pass the identity check (`next_step: verification`), or, for a business, get the owners through theirs (`next_step: owners`); `in_review` — the identity provider or compliance is looking; `resubmit` — returned by compliance, the form is open again with `submission.comment`; `on_hold` — frozen by compliance; `verified` — approved; `expired` — no activity on the application for over three months: a passed identity check brings it back (`next_step: verification`), then compliance looks again; `rejected` — refused, the form is read-only; `offboarded` — compliance ended the relationship, final; `unknown` — a status this contract does not know. The stage of each `status`: `APPROVED` → `verified`; `REJECT`, `DECLINED`, `DOUBLE` → `rejected`; `OFFBOARDED` → `offboarded`; `EXPIRED` → `expired`; `HOLD` → `on_hold`; `WAITING_ON_REVIEW` → `in_review`; `NEEDS_ATTENTION` → `resubmit`; `WAITING_ON_UBOS` → `action_required` while an owner other than the filler's row has a check to start, finish or redo (`next_step: owners`), else `in_review`; `UNVERIFIED`, `PENDING`, `SOFT_REJECT` → by the base form and the identity check: `not_required` (no base form), `not_started`, `incomplete` (a draft), `action_required` (the check is the move), `in_review` (sent, with compliance or the provider), `resubmit` (the latest submission was returned) — the forms flow never sets `SOFT_REJECT`, one left by the old flow shows the screen of its form like `PENDING`; `PROCESSING` → `unknown` (the forms flow never sets it, an old-flow vendor sync may leave it).
20990
+ * @description Build the screen by this, not by `status`. `not_required` — the tenant asks nothing of this client type (`base_form` is null); `not_started` — the base form was not started; `incomplete` — a draft exists; `action_required` — the client's move: pass the identity check (`next_step: verification`), or, for a business, get the owners through theirs (`next_step: owners`); `in_review` — the identity provider or compliance is looking; `resubmit` — returned by compliance, the form is open again with `submission.comment` (open it with `base_form.target`); `on_hold` — frozen by compliance; `verified` — approved; `expired` — no activity on the application for over three months: a passed identity check brings it back (`next_step: verification`), then compliance looks again; `rejected` — refused, the form is read-only; `offboarded` — compliance ended the relationship, final; `unknown` — a status this contract does not know. The stage of each `status`: `APPROVED` → `verified`; `REJECT`, `DECLINED`, `DOUBLE` → `rejected`; `OFFBOARDED` → `offboarded`; `EXPIRED` → `expired`; `HOLD` → `on_hold`; `WAITING_ON_REVIEW` → `in_review`; `NEEDS_ATTENTION` → `resubmit`; `WAITING_ON_UBOS` → `action_required` while an owner other than the filler's row has a check to start, finish or redo (`next_step: owners`), else `in_review`; `UNVERIFIED`, `PENDING`, `SOFT_REJECT` → by the base form and the identity check: `not_required` (no base form), `not_started`, `incomplete` (a draft), `action_required` (the check is the move), `in_review` (sent, with compliance or the provider), `resubmit` (the latest submission was returned) — the forms flow never sets `SOFT_REJECT`, one left by the old flow shows the screen of its form like `PENDING`; `PROCESSING` → `unknown` (the forms flow never sets it, an old-flow vendor sync may leave it).
20940
20991
  * @enum {string}
20941
20992
  */
20942
20993
  stage: "not_required" | "not_started" | "incomplete" | "action_required" | "in_review" | "resubmit" | "on_hold" | "verified" | "expired" | "rejected" | "offboarded" | "unknown";
@@ -21268,7 +21319,7 @@ export interface components {
21268
21319
  "application/json": components["schemas"]["ErrorResponse"];
21269
21320
  };
21270
21321
  };
21271
- /** @description `VALIDATION_ERROR` — field errors in `details.fields[key] = [message]` (on a business form the owner list the KYC tables refuse, and owner shares adding up to more than 100%, come back under `beneficial_owners`; a value sent for a field whose condition reads a source left empty or wrong comes back as the error of the source, e.g. `beneficial_owners[0].role`), or a message only for a malformed body (`schema_version` missing or longer than 64, `values` not an object) and a path id that is not a uuid; `FORM_FIELD_NOT_ALLOWED` — a key the form does not accept (unknown, locked, hidden, a file field), `details.fields = [key]`, the whole request refused; `FORM_TARGET_UNSUPPORTED` — a card program named on a business entity; `INVALID_REQUEST` — `wallet_id` missing for a form over card programs; `KYC_BASE_BINDING_MISSING` — the tenant has no base form for this client type; `KYC_FORMS_NOT_ENABLED` — the tenant is not on the forms flow */
21322
+ /** @description `VALIDATION_ERROR` — field errors in `details.fields[key] = [message]` (on a business form the owner list the KYC tables refuse, and owner shares adding up to more than 100%, come back under `beneficial_owners`; a saved beneficial owner (an item with an `id`) left out of the list — an empty or `null` list included — comes back under `beneficial_owners`, a saved value of it changed outside a `returned` form, or sent empty, under `beneficial_owners[i].<field>`, and nothing is saved; a value sent for a field whose condition reads a source left empty or wrong comes back as the error of the source, e.g. `beneficial_owners[0].role`), or a message only for a malformed body (`schema_version` missing or longer than 64, `values` not an object) and a path id that is not a uuid; `FORM_FIELD_NOT_ALLOWED` — a key the form does not accept (unknown, locked, hidden, a file field), `details.fields = [key]`, the whole request refused; `FORM_TARGET_UNSUPPORTED` — a card program named on a business entity; `INVALID_REQUEST` — `wallet_id` missing for a form over card programs; `KYC_BASE_BINDING_MISSING` — the tenant has no base form for this client type; `KYC_FORMS_NOT_ENABLED` — the tenant is not on the forms flow */
21272
21323
  KycFormsFieldErrors: {
21273
21324
  headers: {
21274
21325
  [name: string]: unknown;
@@ -21387,7 +21438,7 @@ export interface components {
21387
21438
  KycFormsWalletId: string;
21388
21439
  /** @description The wallet the rails and the card programs are read for. Optional: without it the first linked wallet (main wallet first) that the entity's owner and the caller are both members of is used; when there is none — no linked wallet, or none the two share — the answer has `wallet_id: null` and empty `rails` and `programs`. With it, the entity's owner must be an active member of the wallet, and so must the caller when it is someone else, else `403 ACCESS_DENIED`. */
21389
21440
  KycFormsTargetsWalletId: string;
21390
- /** @description The `id` of a file in the draft (`saved: false`) */
21441
+ /** @description The `id` of a file in the draft or in the returned submission of the form (`saved: false`) */
21391
21442
  KycFormsUploadId: string;
21392
21443
  /** @description Language of the texts (labels, hints, options, section titles, general messages); takes precedence over `Accept-Language`. A language outside the tenant's list is served in English. */
21393
21444
  KycFormsLocale: string;
@@ -2409,77 +2409,6 @@ export interface paths {
2409
2409
  patch?: never;
2410
2410
  trace?: never;
2411
2411
  };
2412
- "/orders/WITHDRAW_CARD_PREPAID": {
2413
- parameters: {
2414
- query?: never;
2415
- header?: never;
2416
- path?: never;
2417
- cookie?: never;
2418
- };
2419
- get?: never;
2420
- put?: never;
2421
- /**
2422
- * Withdraw funds from prepaid card to wallet
2423
- * @description Withdraw funds from a closed prepaid card back to crypto wallet. Currency is automatically determined from card's fiat_account.
2424
- */
2425
- post: {
2426
- parameters: {
2427
- query?: never;
2428
- header?: never;
2429
- path?: never;
2430
- cookie?: never;
2431
- };
2432
- requestBody: {
2433
- content: {
2434
- "application/json": {
2435
- /**
2436
- * @description Amount to withdraw
2437
- * @example 100
2438
- */
2439
- amount: number;
2440
- /**
2441
- * @description Destination wallet UUID
2442
- * @example 8205c701-cd41-4929-910f-fccbb949729a
2443
- */
2444
- wallet_uuid: string;
2445
- /**
2446
- * @description Card ID to withdraw from (must be closed)
2447
- * @example a60e477a-2ebb-4158-91ee-2f39ade8d883
2448
- */
2449
- card_id: string;
2450
- };
2451
- };
2452
- };
2453
- responses: {
2454
- /** @description Order successfully created */
2455
- 200: {
2456
- headers: {
2457
- [name: string]: unknown;
2458
- };
2459
- content?: never;
2460
- };
2461
- /** @description Bad request - validation error or card not closed */
2462
- 400: {
2463
- headers: {
2464
- [name: string]: unknown;
2465
- };
2466
- content?: never;
2467
- };
2468
- /** @description Server error */
2469
- 500: {
2470
- headers: {
2471
- [name: string]: unknown;
2472
- };
2473
- content?: never;
2474
- };
2475
- };
2476
- };
2477
- delete?: never;
2478
- options?: never;
2479
- head?: never;
2480
- patch?: never;
2481
- trace?: never;
2482
- };
2483
2412
  "/v2/orders/order_types": {
2484
2413
  parameters: {
2485
2414
  query?: never;
@@ -4431,6 +4431,8 @@ export interface paths {
4431
4431
  * List countries
4432
4432
  * @description Returns all countries with complete data including timezones, translations, coordinates.
4433
4433
  *
4434
+ * `iban` says what the country's banks take as the account of an incoming SWIFT payment: `MANDATORY` — only an IBAN (a SWIFT destination to such a bank is refused with `IBAN_REQUIRED` otherwise), `OPTIONAL` — an IBAN or a domestic account number, `NONE` — no IBANs in the country.
4435
+ *
4434
4436
  */
4435
4437
  get: {
4436
4438
  parameters: {
@@ -4449,13 +4451,18 @@ export interface paths {
4449
4451
  };
4450
4452
  requestBody?: never;
4451
4453
  responses: {
4452
- /** @description Countries retrieved successfully */
4454
+ /** @description Countries retrieved successfully — every column of the reference row, `iban` included */
4453
4455
  200: {
4454
4456
  headers: {
4455
4457
  [name: string]: unknown;
4456
4458
  };
4457
4459
  content: {
4458
- "application/json": components["schemas"]["TenantSuccessResponse"];
4460
+ "application/json": {
4461
+ /** @example true */
4462
+ success: boolean;
4463
+ data: components["schemas"]["ReferenceCountry"][];
4464
+ pagination?: components["schemas"]["PaginationResponse"];
4465
+ };
4459
4466
  };
4460
4467
  };
4461
4468
  /** @description Internal server error */
@@ -8854,7 +8861,7 @@ export interface components {
8854
8861
  /** @example iban */
8855
8862
  field: string;
8856
8863
  /**
8857
- * @description Machine-readable reason. Bank details: `REQUIRED`, `IBAN_WRONG_FORMAT`, `IBAN_INVALID_CHARACTERS`, `IBAN_COUNTRY_NOT_SUPPORTED`, `IBAN_WRONG_LENGTH`, `IBAN_WRONG_BBAN_FORMAT`, `IBAN_WRONG_CHECKSUM`, `IBAN_WRONG_NATIONAL_CHECKSUM`, `IBAN_QR_NOT_ALLOWED`, `IBAN_NOT_SEPA`, `IBAN_BIC_COUNTRY_MISMATCH`, `BIC_WRONG_FORMAT`, `BIC_UNKNOWN_COUNTRY`, `BIC_TEST_CODE`, `ROUTING_NUMBER_INVALID`, `ACCOUNT_NUMBER_INVALID`, `SORT_CODE_INVALID`, `WRONG_IDENTIFIER_TYPE`, `INVALID_VALUE`; reference data: `BANK_COUNTRY_MISMATCH`, `VALIDATION_ERROR`; dry run only: `INVALID_TYPE`. New codes may be added — show `message` for an unknown one.
8864
+ * @description Machine-readable reason. Bank details: `REQUIRED`, `IBAN_WRONG_FORMAT`, `IBAN_INVALID_CHARACTERS`, `IBAN_COUNTRY_NOT_SUPPORTED`, `IBAN_WRONG_LENGTH`, `IBAN_WRONG_BBAN_FORMAT`, `IBAN_WRONG_CHECKSUM`, `IBAN_WRONG_NATIONAL_CHECKSUM`, `IBAN_QR_NOT_ALLOWED`, `IBAN_NOT_SEPA`, `IBAN_REQUIRED`, `IBAN_BIC_COUNTRY_MISMATCH`, `BIC_WRONG_FORMAT`, `BIC_UNKNOWN_COUNTRY`, `BIC_TEST_CODE`, `ROUTING_NUMBER_INVALID`, `ACCOUNT_NUMBER_INVALID`, `SORT_CODE_INVALID`, `WRONG_IDENTIFIER_TYPE`, `INVALID_VALUE`; reference data: `BANK_COUNTRY_MISMATCH`, `VALIDATION_ERROR`; dry run only: `INVALID_TYPE`. New codes may be added — show `message` for an unknown one.
8858
8865
  * @example IBAN_NOT_SEPA
8859
8866
  */
8860
8867
  code: string;
@@ -8871,6 +8878,34 @@ export interface components {
8871
8878
  */
8872
8879
  detected?: "IBAN" | "BIC" | "ROUTING_NUMBER";
8873
8880
  };
8881
+ /** @description A country of the reference. `id` is the `country_id` of addresses (bank and beneficiary address of a destination). `iban` says what banks of the country take as the account of an incoming SWIFT payment: `MANDATORY` — only an IBAN, a SWIFT destination to such a bank is refused with `IBAN_REQUIRED` for anything else; `OPTIONAL` — the country issues IBANs, its banks also take a domestic account number; `NONE` — the country issues no IBANs. */
8882
+ ReferenceCountry: {
8883
+ /** @example 231 */
8884
+ id: number;
8885
+ /** @example United Arab Emirates */
8886
+ name: string;
8887
+ /** @example AE */
8888
+ iso2: string;
8889
+ /** @example ARE */
8890
+ iso3?: string | null;
8891
+ /** @example 971 */
8892
+ phonecode?: string | null;
8893
+ /** @example AED */
8894
+ currency?: string | null;
8895
+ currency_name?: string | null;
8896
+ currency_symbol?: string | null;
8897
+ /** @example Asia */
8898
+ region?: string | null;
8899
+ /** @example Western Asia */
8900
+ subregion?: string | null;
8901
+ emoji?: string | null;
8902
+ nationality?: string | null;
8903
+ /**
8904
+ * @example MANDATORY
8905
+ * @enum {string}
8906
+ */
8907
+ iban: "MANDATORY" | "OPTIONAL" | "NONE";
8908
+ };
8874
8909
  DestinationValidationResult: {
8875
8910
  /** @description True when creating the destination with this payload would pass every check */
8876
8911
  valid: boolean;
@@ -1032,6 +1032,17 @@ export declare namespace API {
1032
1032
  }
1033
1033
  export {};
1034
1034
  }
1035
+ namespace Countries {
1036
+ type CountriesRoot = pathsV1Frontend['/frontend/reference/countries'];
1037
+ export type Country = componentsV1Frontend['schemas']['ReferenceCountry'];
1038
+ /** What the country's banks take as the account of an incoming SWIFT payment. */
1039
+ export type IbanRequirement = Country['iban'];
1040
+ export namespace List {
1041
+ type Request = NonNullable<CountriesRoot['get']['parameters']['query']>;
1042
+ type Response = CountriesRoot['get']['responses'][200]['content']['application/json'];
1043
+ }
1044
+ export {};
1045
+ }
1035
1046
  namespace OrderTypes {
1036
1047
  type OrderTypesRoot = pathsV1Frontend['/frontend/reference/order_types'];
1037
1048
  export type OrderType = componentsV1Frontend['schemas']['ReferenceOrderType'];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "squarefi-bff-api-module",
3
- "version": "1.36.99",
3
+ "version": "1.36.100",
4
4
  "description": "Squarefi BFF API client module",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",