squarefi-bff-api-module 1.36.105 → 1.36.107
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api/frontend.d.ts +1 -0
- package/dist/api/frontend.js +7 -0
- package/dist/api/types/autogen/apiV1Frontend.types.d.ts +145 -28
- package/dist/api/types/autogen/apiV1Legacy.types.d.ts +1 -7
- package/dist/api/types/autogen/apiV1Tenant.types.d.ts +181 -19
- package/dist/api/types/types.d.ts +9 -0
- package/package.json +1 -1
package/dist/api/frontend.d.ts
CHANGED
|
@@ -100,6 +100,7 @@ export declare const frontend: {
|
|
|
100
100
|
link: ({ entity_id, owner_id, }: API.Frontend.KycForms.Verification.Owners.Link.Request) => Promise<API.Frontend.KycForms.Verification.Owners.Link.Response>;
|
|
101
101
|
session: ({ entity_id, owner_id, }: API.Frontend.KycForms.Verification.Owners.Session.Request) => Promise<API.Frontend.KycForms.Verification.Owners.Session.Response>;
|
|
102
102
|
document: ({ entity_id, owner_id, file, side, type, country, signal, timeout, onUploadProgress, }: API.Frontend.KycForms.Verification.Owners.Document.Request) => Promise<API.Frontend.KycForms.Verification.Owners.Document.Response>;
|
|
103
|
+
authorityDocument: ({ entity_id, owner_id, file, signal, timeout, onUploadProgress, }: API.Frontend.KycForms.Verification.Owners.AuthorityDocument.Request) => Promise<API.Frontend.KycForms.Verification.Owners.AuthorityDocument.Response>;
|
|
103
104
|
invite: ({ entity_id, }: API.Frontend.KycForms.Verification.Owners.Invite.Request) => Promise<API.Frontend.KycForms.Verification.Owners.Invite.Response>;
|
|
104
105
|
};
|
|
105
106
|
};
|
package/dist/api/frontend.js
CHANGED
|
@@ -215,6 +215,13 @@ export const frontend = {
|
|
|
215
215
|
formData.append('country', country);
|
|
216
216
|
return apiClientV1Frontend.postRequest(`/frontend/kyc/entities/${entity_id}/verification/owners/${owner_id}/document`, { data: formData, signal, timeout, onUploadProgress });
|
|
217
217
|
},
|
|
218
|
+
// The owner's letter of authority: one PDF, JPEG or PNG. It stays with CORE and nothing waits on it.
|
|
219
|
+
// Unlike the other owner routes this one takes the filler's own row (`is_applicant`) too.
|
|
220
|
+
authorityDocument: ({ entity_id, owner_id, file, signal, timeout, onUploadProgress, }) => {
|
|
221
|
+
const formData = new FormData();
|
|
222
|
+
formData.append('file', file);
|
|
223
|
+
return apiClientV1Frontend.postRequest(`/frontend/kyc/entities/${entity_id}/verification/owners/${owner_id}/authority-document`, { data: formData, signal, timeout, onUploadProgress });
|
|
224
|
+
},
|
|
218
225
|
// The provider emails every owner still to pass the check; taken once in 10 minutes
|
|
219
226
|
// (409 KYC_OWNER_INVITES_TOO_SOON, `verification.invites.next_at` of the overview).
|
|
220
227
|
invite: ({ entity_id, }) => apiClientV1Frontend.postRequest(`/frontend/kyc/entities/${entity_id}/verification/owners/invite`),
|
|
@@ -931,7 +931,7 @@ export interface paths {
|
|
|
931
931
|
};
|
|
932
932
|
};
|
|
933
933
|
};
|
|
934
|
-
/** @description Validation error,
|
|
934
|
+
/** @description Validation error, the fee cannot be priced in this currency (AML_FEE_NOT_PRICEABLE) or the tenant's AML screening settings are unusable (AML_CHECK_MISCONFIGURED) */
|
|
935
935
|
400: {
|
|
936
936
|
headers: {
|
|
937
937
|
[name: string]: unknown;
|
|
@@ -1115,7 +1115,7 @@ export interface paths {
|
|
|
1115
1115
|
};
|
|
1116
1116
|
};
|
|
1117
1117
|
};
|
|
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)
|
|
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), a fee that cannot be priced (AML_FEE_NOT_PRICEABLE) or unusable AML screening settings of the tenant (AML_CHECK_MISCONFIGURED) */
|
|
1119
1119
|
400: {
|
|
1120
1120
|
headers: {
|
|
1121
1121
|
[name: string]: unknown;
|
|
@@ -1258,7 +1258,7 @@ export interface paths {
|
|
|
1258
1258
|
"application/pdf": string;
|
|
1259
1259
|
};
|
|
1260
1260
|
};
|
|
1261
|
-
/** @description The analytics provider cannot hand the report over right now — retry later (AML_REPORT_PROVIDER_UNAVAILABLE) */
|
|
1261
|
+
/** @description The analytics provider cannot hand the report over right now — retry later (AML_REPORT_PROVIDER_UNAVAILABLE); or the tenant's AML screening settings are unusable (AML_CHECK_MISCONFIGURED) */
|
|
1262
1262
|
400: {
|
|
1263
1263
|
headers: {
|
|
1264
1264
|
[name: string]: unknown;
|
|
@@ -16737,7 +16737,7 @@ export interface paths {
|
|
|
16737
16737
|
};
|
|
16738
16738
|
/**
|
|
16739
16739
|
* The form of an entity for a set of purposes
|
|
16740
|
-
* @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.
|
|
16740
|
+
* @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. On a personal entity's form (base, rail, card or multi) that is editable and shows an open `email` nobody has given yet — not saved, not pending, not in the draft — `values.email` carries the email of the entity owner's account as a suggestion: it is not saved until a draft or a submission sends it, the field stays unlocked, `missing_required` and `state` still count it as empty, and a saved, pending or draft value wins over it; a business form gets none, and only the owner of the entity gets it (a wallet admin reading the form does not). Access: the owner of the entity, or an owner / admin of a wallet it is linked to.
|
|
16741
16741
|
*/
|
|
16742
16742
|
get: {
|
|
16743
16743
|
parameters: {
|
|
@@ -16813,7 +16813,7 @@ export interface paths {
|
|
|
16813
16813
|
get?: never;
|
|
16814
16814
|
/**
|
|
16815
16815
|
* Save the draft of a form
|
|
16816
|
-
* @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 an option chosen together with another one while it excludes the others (`options[].exclusive` of a `multi_enum` field), 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.
|
|
16816
|
+
* @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 an option chosen together with another one while it excludes the others (`options[].exclusive` of a `multi_enum` field), 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. The rules of `validation` (`max_items`, `min_age`, patterns such as Latin letters only) and the owners' roles (`owner_role_missing`, `company_owner_role`) wait for the submission; a PEP detail sent with a value while `pep_declaration` is `false` is refused here as there, with `FORM_FIELD_NOT_ALLOWED`. 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.
|
|
16817
16817
|
*/
|
|
16818
16818
|
put: {
|
|
16819
16819
|
parameters: {
|
|
@@ -16894,7 +16894,7 @@ export interface paths {
|
|
|
16894
16894
|
put?: never;
|
|
16895
16895
|
/**
|
|
16896
16896
|
* Upload a file into a file field of a form
|
|
16897
|
-
* @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
|
|
16897
|
+
* @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`, and so is a PDF that does not open or has no pages (nothing is stored); 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.
|
|
16898
16898
|
*/
|
|
16899
16899
|
post: {
|
|
16900
16900
|
parameters: {
|
|
@@ -16944,7 +16944,7 @@ export interface paths {
|
|
|
16944
16944
|
"application/json": components["schemas"]["KycFormsUploadedFile"];
|
|
16945
16945
|
};
|
|
16946
16946
|
};
|
|
16947
|
-
/** @description `FORM_FIELD_NOT_ALLOWED` with `details.fields = [field]` — the field takes no files now (unknown, not a file field, locked, or hidden by its condition); `DOCUMENT_REJECTED` — the file: empty, over 20 MB, not PDF / JPEG / PNG by its bytes, a PDF for a field that takes photos only, or one more than the field takes (`file.max_files`); `VALIDATION_ERROR` — no `field` part, a `field` that is not a catalog key, or an id (`entity_id`, `wallet_id`, `rails`, `programs`) that is not a uuid; `INVALID_REQUEST` — no `file` part (or more than one), an unreadable multipart body, or `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`. */
|
|
16947
|
+
/** @description `FORM_FIELD_NOT_ALLOWED` with `details.fields = [field]` — the field takes no files now (unknown, not a file field, locked, or hidden by its condition); `DOCUMENT_REJECTED` — the file: empty, over 20 MB, not PDF / JPEG / PNG by its bytes, a PDF that cannot be read (it does not open or has no pages), a PDF for a field that takes photos only, or one more than the field takes (`file.max_files`); `VALIDATION_ERROR` — no `field` part, a `field` that is not a catalog key, or an id (`entity_id`, `wallet_id`, `rails`, `programs`) that is not a uuid; `INVALID_REQUEST` — no `file` part (or more than one), an unreadable multipart body, or `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`. */
|
|
16948
16948
|
400: {
|
|
16949
16949
|
headers: {
|
|
16950
16950
|
[name: string]: unknown;
|
|
@@ -17089,7 +17089,7 @@ export interface paths {
|
|
|
17089
17089
|
put?: never;
|
|
17090
17090
|
/**
|
|
17091
17091
|
* Send a form
|
|
17092
|
-
* @description The form is the one `rails` and `programs` name. The full check of every open field (all errors in one `VALIDATION_ERROR`, an option chosen together with another one that `options[].exclusive` says it excludes included), 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.
|
|
17092
|
+
* @description The form is the one `rails` and `programs` name. The full check of every open field (all errors in one `VALIDATION_ERROR`, an option chosen together with another one that `options[].exclusive` says it excludes included; the rules of `validation` — `max_items`, `min_age`, `max` (a `formation_date` or a `gov_id_issuance_date` later than today in UTC), Latin letters only — and, on a form that asks `beneficial_owners`, at least one person with the role `UBO` and one with `DIRECTOR` (the filler counts by their role), a company only as `SHAREHOLDER`), 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.
|
|
17093
17093
|
*/
|
|
17094
17094
|
post: {
|
|
17095
17095
|
parameters: {
|
|
@@ -17223,7 +17223,7 @@ export interface paths {
|
|
|
17223
17223
|
};
|
|
17224
17224
|
};
|
|
17225
17225
|
};
|
|
17226
|
-
/** @description `VALIDATION_ERROR` — `entity_id` is not a uuid; `KYC_FORMS_NOT_ENABLED`; `KYC_VERIFICATION_LEVEL_MISSING` — the tenant has no individual verification level configured; `VERIFICATION_PROVIDER_UNAVAILABLE` — the identity provider
|
|
17226
|
+
/** @description `VALIDATION_ERROR` — `entity_id` is not a uuid; `KYC_FORMS_NOT_ENABLED`; `KYC_VERIFICATION_LEVEL_MISSING` — the tenant has no individual verification level configured; `VERIFICATION_PROVIDER_UNAVAILABLE` — the identity provider did not answer, try later; `VERIFICATION_PROVIDER_REFUSED` — the identity provider did not accept the data, the same request gets the same answer; `VERIFICATION_PROVIDER_NOT_CONFIGURED` — the identity verification is not configured on this server. */
|
|
17227
17227
|
400: {
|
|
17228
17228
|
headers: {
|
|
17229
17229
|
[name: string]: unknown;
|
|
@@ -17328,7 +17328,7 @@ export interface paths {
|
|
|
17328
17328
|
};
|
|
17329
17329
|
};
|
|
17330
17330
|
};
|
|
17331
|
-
/** @description `KYC_NO_OWNER_TO_INVITE` — nobody is left to email: every owner with an email at the identity provider has passed the check, or none has an email there — an owner whose item has no `invite_by_email: true` has none at the provider, whatever email the form holds (hand the link over: `…/owners/{owner_id}/link` or `/session`); `VALIDATION_ERROR` — `entity_id` is not a uuid; `KYC_FORMS_NOT_ENABLED`; `VERIFICATION_PROVIDER_UNAVAILABLE` — the identity provider
|
|
17331
|
+
/** @description `KYC_NO_OWNER_TO_INVITE` — nobody is left to email: every owner with an email at the identity provider has passed the check, or none has an email there — an owner whose item has no `invite_by_email: true` has none at the provider, whatever email the form holds (hand the link over: `…/owners/{owner_id}/link` or `/session`); `VALIDATION_ERROR` — `entity_id` is not a uuid; `KYC_FORMS_NOT_ENABLED`; `VERIFICATION_PROVIDER_UNAVAILABLE` — the identity provider did not answer, try later; `VERIFICATION_PROVIDER_REFUSED` — the identity provider did not accept the data, the same request gets the same answer; `VERIFICATION_PROVIDER_NOT_CONFIGURED`. */
|
|
17332
17332
|
400: {
|
|
17333
17333
|
headers: {
|
|
17334
17334
|
[name: string]: unknown;
|
|
@@ -17607,6 +17607,98 @@ export interface paths {
|
|
|
17607
17607
|
patch?: never;
|
|
17608
17608
|
trace?: never;
|
|
17609
17609
|
};
|
|
17610
|
+
"/frontend/kyc/entities/{entity_id}/verification/owners/{owner_id}/authority-document": {
|
|
17611
|
+
parameters: {
|
|
17612
|
+
query?: never;
|
|
17613
|
+
header?: never;
|
|
17614
|
+
path?: never;
|
|
17615
|
+
cookie?: never;
|
|
17616
|
+
};
|
|
17617
|
+
get?: never;
|
|
17618
|
+
put?: never;
|
|
17619
|
+
/**
|
|
17620
|
+
* Upload the letter of authority of a beneficial owner
|
|
17621
|
+
* @description Multipart: `file` (PDF, JPEG or PNG up to 20 MB, told by the bytes; a PDF that does not open or has no pages is refused with `DOCUMENT_REJECTED`). The file is filed as the owner's `auth_letter` document (`source: client`, not verified) as it arrived, and `verification.owners[].documents` of the overview lists it. It stays with CORE: the identity provider and the card vendors never get it, and no applicant is made for it. Neither the sending of the form nor any status waits on it. Unlike the other owner routes this one takes the filler's own row too (`is_applicant`), as the filler is often the representative. Whether to ask for the file (an authorised representative who is not a director) is for the client to decide: any role is taken. Sent again, it is a new row: the newest counts, the older stay on record. Access: the owner of the business entity, or an owner / admin of a wallet it is linked to.
|
|
17622
|
+
*/
|
|
17623
|
+
post: {
|
|
17624
|
+
parameters: {
|
|
17625
|
+
query?: never;
|
|
17626
|
+
header?: never;
|
|
17627
|
+
path: {
|
|
17628
|
+
/** @description `kyc_entity.id` of the caller, or of an entity linked to a wallet the caller owns or administers */
|
|
17629
|
+
entity_id: components["parameters"]["KycFormsEntityId"];
|
|
17630
|
+
/** @description The `id` of a beneficial owner of the business entity — an item of `beneficial_owners` as `GET …/forms` lists it after the base form was sent (every saved item carries its `id`; `verification.owners[].id` of the overview is the same id). A person, not a company; not the owner the filler marked as themselves (`is_applicant`). */
|
|
17631
|
+
owner_id: components["parameters"]["KycFormsOwnerId"];
|
|
17632
|
+
};
|
|
17633
|
+
cookie?: never;
|
|
17634
|
+
};
|
|
17635
|
+
requestBody: {
|
|
17636
|
+
content: {
|
|
17637
|
+
"multipart/form-data": {
|
|
17638
|
+
/**
|
|
17639
|
+
* Format: binary
|
|
17640
|
+
* @description One PDF, JPEG or PNG file, up to 20 MB.
|
|
17641
|
+
*/
|
|
17642
|
+
file: string;
|
|
17643
|
+
};
|
|
17644
|
+
};
|
|
17645
|
+
};
|
|
17646
|
+
responses: {
|
|
17647
|
+
/** @description The document as filed */
|
|
17648
|
+
201: {
|
|
17649
|
+
headers: {
|
|
17650
|
+
[name: string]: unknown;
|
|
17651
|
+
};
|
|
17652
|
+
content: {
|
|
17653
|
+
"application/json": {
|
|
17654
|
+
/** @example true */
|
|
17655
|
+
success: boolean;
|
|
17656
|
+
/** @example {
|
|
17657
|
+
* "document_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
|
|
17658
|
+
* "type": "auth_letter"
|
|
17659
|
+
* } */
|
|
17660
|
+
data: {
|
|
17661
|
+
/**
|
|
17662
|
+
* Format: uuid
|
|
17663
|
+
* @description The `kyc_documents` row.
|
|
17664
|
+
*/
|
|
17665
|
+
document_id: string;
|
|
17666
|
+
/** @enum {string} */
|
|
17667
|
+
type: "auth_letter";
|
|
17668
|
+
};
|
|
17669
|
+
};
|
|
17670
|
+
};
|
|
17671
|
+
};
|
|
17672
|
+
/** @description `VALIDATION_ERROR` — `entity_id` or `owner_id` is not a uuid; `KYC_FORMS_NOT_ENABLED`; `KYC_OWNER_NOT_INDIVIDUAL` — the owner is a company; `DOCUMENT_REJECTED` — a file that is not PDF, JPEG or PNG, a PDF that cannot be read (it does not open or has no pages), empty, or over 20 MB; `INVALID_REQUEST` — no `file` part (or more than one), or an unreadable multipart body. */
|
|
17673
|
+
400: {
|
|
17674
|
+
headers: {
|
|
17675
|
+
[name: string]: unknown;
|
|
17676
|
+
};
|
|
17677
|
+
content: {
|
|
17678
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
17679
|
+
};
|
|
17680
|
+
};
|
|
17681
|
+
401: components["responses"]["UnauthorizedError"];
|
|
17682
|
+
403: components["responses"]["KycFormsAccessDenied"];
|
|
17683
|
+
404: components["responses"]["KycFormsOwnerNotFound"];
|
|
17684
|
+
409: components["responses"]["KycFormsOwnerConflict"];
|
|
17685
|
+
/** @description `SERVICE_UNAVAILABLE` — file storage is not configured on this server, or the locking service is unavailable */
|
|
17686
|
+
503: {
|
|
17687
|
+
headers: {
|
|
17688
|
+
[name: string]: unknown;
|
|
17689
|
+
};
|
|
17690
|
+
content: {
|
|
17691
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
17692
|
+
};
|
|
17693
|
+
};
|
|
17694
|
+
};
|
|
17695
|
+
};
|
|
17696
|
+
delete?: never;
|
|
17697
|
+
options?: never;
|
|
17698
|
+
head?: never;
|
|
17699
|
+
patch?: never;
|
|
17700
|
+
trace?: never;
|
|
17701
|
+
};
|
|
17610
17702
|
"/frontend/notifications/test": {
|
|
17611
17703
|
parameters: {
|
|
17612
17704
|
query?: never;
|
|
@@ -19951,7 +20043,7 @@ export interface components {
|
|
|
19951
20043
|
wallet_id?: string;
|
|
19952
20044
|
};
|
|
19953
20045
|
AmlProvider: {
|
|
19954
|
-
/** @description
|
|
20046
|
+
/** @description Neutral label of the screening provider, for the "Screening by …" line */
|
|
19955
20047
|
display_name?: string;
|
|
19956
20048
|
};
|
|
19957
20049
|
AmlScreeningAsset: {
|
|
@@ -20924,14 +21016,18 @@ export interface components {
|
|
|
20924
21016
|
saved: boolean;
|
|
20925
21017
|
};
|
|
20926
21018
|
/**
|
|
20927
|
-
* @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. An item with `owner_type: business` requires `corporate_name`, `corporate_country` and `corporate_registration_number` (the form marks them `required` on the item fields): without them the identity provider cannot set the company up, so the submission is refused with `VALIDATION_ERROR` on the item field. An item with `owner_type: individual` other than the filler's own requires `email` (the form marks it `required` on the item fields, whatever `invite_by_email` and the tenant's profiles say): a submission without it, a saved owner of a returned form included, is refused with `VALIDATION_ERROR` on `beneficial_owners[i].email` (required); the draft takes it empty. The filler's own item (`is_applicant: true`) has no `email` field — the email of their account is used. The email is kept either way; `invite_by_email: true` is what has the identity provider email the owner their link to it.
|
|
21019
|
+
* @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. An item with `owner_type: business` requires `corporate_name`, `corporate_country` and `corporate_registration_number` (the form marks them `required` on the item fields): without them the identity provider cannot set the company up, so the submission is refused with `VALIDATION_ERROR` on the item field. An item with `owner_type: individual` other than the filler's own requires `email` (the form marks it `required` on the item fields, whatever `invite_by_email` and the tenant's profiles say): a submission without it, a saved owner of a returned form included, is refused with `VALIDATION_ERROR` on `beneficial_owners[i].email` (required); the draft takes it empty. The filler's own item (`is_applicant: true`) has no `email` field — the email of their account is used. The email is kept either way; `invite_by_email: true` is what has the identity provider email the owner their link to it. An owner may hold several `roles`; `role` is not an item field: a new item that sends it is refused with `FORM_FIELD_NOT_ALLOWED`, an owner saved with one `role` comes with the `roles` it means. `has_control` is not an item field either (it follows from `roles` and `ubo_basis`): a new item that sends it with a value, `false` included, is refused the same way. `roles` is required (at least one of `UBO`, `SHAREHOLDER`, `DIRECTOR`, `REPRESENTATIVE`); a company owner takes only `SHAREHOLDER`. `share_proportion` (0.01 to 100) is asked of a `SHAREHOLDER` and of a `UBO`, but not of a `UBO` whose `ubo_basis` is `controls_otherwise` or `senior_managing_official`. `ubo_basis` (`owns_shares`, `controls_otherwise`, `senior_managing_official`) is asked of a `UBO` and required on a submission — not of an owner saved before it was asked. `ubo_control_details` (up to 2000 characters) is asked and required when `ubo_basis` is `controls_otherwise`. The names of a person are Latin letters only, up to 50 characters, and a date of birth typed in is of an adult (`validation.min_age`).
|
|
20928
21020
|
* @example {
|
|
20929
21021
|
* "id": "2d7c1b9e-4f30-4a8c-9e21-7b6a5c4d3e2f",
|
|
20930
21022
|
* "owner_type": "individual",
|
|
20931
21023
|
* "first_name": "Anna",
|
|
20932
21024
|
* "last_name": "Berg",
|
|
20933
|
-
* "
|
|
21025
|
+
* "roles": [
|
|
21026
|
+
* "UBO",
|
|
21027
|
+
* "DIRECTOR"
|
|
21028
|
+
* ],
|
|
20934
21029
|
* "share_proportion": 40,
|
|
21030
|
+
* "ubo_basis": "owns_shares",
|
|
20935
21031
|
* "is_applicant": false,
|
|
20936
21032
|
* "invite_by_email": true,
|
|
20937
21033
|
* "email": "anna@example.com"
|
|
@@ -20988,9 +21084,14 @@ export interface components {
|
|
|
20988
21084
|
/** @description Rules checked on submit (the draft checks the type only); null — none. `min` / `max` are numbers, or `YYYY-MM-DD` for a date; the text of a broken rule is the matching `form.messages` entry (`{value}` stands for the bound) or the `message` of a pattern. */
|
|
20989
21085
|
validation: {
|
|
20990
21086
|
min?: number | string;
|
|
21087
|
+
/** @description On a `date` that cannot be in the future (`formation_date`, `gov_id_issuance_date`) the current date in UTC: it changes every day and never changes `schema_version`. */
|
|
20991
21088
|
max?: number | string;
|
|
20992
21089
|
min_length?: number;
|
|
20993
21090
|
max_length?: number;
|
|
21091
|
+
/** @description `multi_enum`, `country_multi`: how many values the answer may hold; `form.messages.too_many_values`. */
|
|
21092
|
+
max_items?: number;
|
|
21093
|
+
/** @description `date` of birth: the full years the person must have reached by today (UTC); `form.messages.min_age`. */
|
|
21094
|
+
min_age?: number;
|
|
20994
21095
|
patterns?: {
|
|
20995
21096
|
regex: string;
|
|
20996
21097
|
message: string;
|
|
@@ -21001,7 +21102,7 @@ export interface components {
|
|
|
21001
21102
|
value: string;
|
|
21002
21103
|
label: string;
|
|
21003
21104
|
/**
|
|
21004
|
-
* @description The number the option stands for in a `gt` / `gte` / `lt` / `lte` condition — a volume
|
|
21105
|
+
* @description The number the option stands for in a `gt` / `gte` / `lt` / `lte` condition — a range (volume, income, number of transactions, employees, turnover) carries its upper bound, the open top range its lower bound plus 1, so a range read back from the entity is the option it was chosen as. Present only on the options of a dictionary that gives numbers: compare it with the condition's `value` to evaluate `visible_when` on an `enum` field.
|
|
21005
21106
|
* @example 50000
|
|
21006
21107
|
*/
|
|
21007
21108
|
numeric?: number;
|
|
@@ -21062,7 +21163,7 @@ export interface components {
|
|
|
21062
21163
|
/** @description How many required visible fields are still empty (saved, pending and draft values together). */
|
|
21063
21164
|
missing_required: number;
|
|
21064
21165
|
/**
|
|
21065
|
-
* @description General validation messages by code (`required`, `min`, `max`, `min_length`, `max_length`, `invalid`); `{value}` stands for the bound.
|
|
21166
|
+
* @description General validation messages by code (`required`, `min`, `max`, `min_length`, `max_length`, `invalid`, `min_age`, `too_many_values`); `{value}` stands for the bound.
|
|
21066
21167
|
* @example {
|
|
21067
21168
|
* "required": "This field is required",
|
|
21068
21169
|
* "min": "The value must be at least {value}",
|
|
@@ -21087,7 +21188,7 @@ export interface components {
|
|
|
21087
21188
|
data: {
|
|
21088
21189
|
form: components["schemas"]["KycFormsForm"];
|
|
21089
21190
|
/**
|
|
21090
|
-
* @description Current value per field key (saved in KYC first, then pending, then the draft), each shaped by the field's `type` (`KycFormsFieldValue`): strings, numbers, booleans, `YYYY-MM-DD` dates, alpha-2 countries, arrays of strings; files as `KycFormsFileValue[]`; lists as `KycFormsListItemValue[]` with an `id` on saved rows. Every field of the form has a key here; empty is null.
|
|
21191
|
+
* @description Current value per field key (saved in KYC first, then pending, then the draft), each shaped by the field's `type` (`KycFormsFieldValue`): strings, numbers, booleans, `YYYY-MM-DD` dates, alpha-2 countries, arrays of strings; files as `KycFormsFileValue[]`; lists as `KycFormsListItemValue[]` with an `id` on saved rows. Every field of the form has a key here; empty is null. On a personal entity's editable form an empty, shown, unlocked `email` carries the email of the entity owner's account as a suggestion: not saved until the draft or the submission sends it, not locked, still counted in `missing_required`; a business form gets none, and only the owner of the entity gets it (a wallet admin reading the form does not).
|
|
21091
21192
|
* @example {
|
|
21092
21193
|
* "email": "user@example.com",
|
|
21093
21194
|
* "citizenship": "DE",
|
|
@@ -21194,7 +21295,8 @@ export interface components {
|
|
|
21194
21295
|
* "state": "in_progress"
|
|
21195
21296
|
* },
|
|
21196
21297
|
* "owners": [],
|
|
21197
|
-
* "invites": null
|
|
21298
|
+
* "invites": null,
|
|
21299
|
+
* "rejected_documents": []
|
|
21198
21300
|
* },
|
|
21199
21301
|
* "rails": [],
|
|
21200
21302
|
* "cards": []
|
|
@@ -21225,7 +21327,7 @@ export interface components {
|
|
|
21225
21327
|
applicant: {
|
|
21226
21328
|
state: components["schemas"]["KycFormsVerificationState"];
|
|
21227
21329
|
};
|
|
21228
|
-
/** @description A business with a base form only (empty otherwise): one item per individual beneficial owner — the filler's own row included, told by `is_applicant` in the form's `values.beneficial_owners` — and per company among the owners whose check the identity provider runs (the tenant's company level checks companies; CORE requests the check on the company data of the item, there is no session, link or document for it). A company the provider does not check is not listed. `state` is that owner's own check; `not_started` while a person has no applicant. */
|
|
21330
|
+
/** @description A business with a base form only (empty otherwise): one item per individual beneficial owner — the filler's own row included, told by `is_applicant` in the form's `values.beneficial_owners` — and per company among the owners whose check the identity provider runs (the tenant's company level checks companies; CORE requests the check on the company data of the item, there is no session, link or document for it). A company the provider does not check is not listed. `state` is that owner's own check; `not_started` while a person has no applicant, but the filler's own row shows their personal check until the row has one. */
|
|
21229
21331
|
owners: {
|
|
21230
21332
|
/**
|
|
21231
21333
|
* Format: uuid
|
|
@@ -21237,14 +21339,16 @@ export interface components {
|
|
|
21237
21339
|
* @enum {string}
|
|
21238
21340
|
*/
|
|
21239
21341
|
type: "individual" | "company";
|
|
21240
|
-
/** @description The owner as the form names them: a person's first and last name, a company's name; null when the form gave none. The filler's own row
|
|
21342
|
+
/** @description The owner as the form names them: a person's first and last name, a company's name; null when the form gave none. The filler's own row without a check of its own yet carries the name on their personal entity, null when that has none; once they pass the identity check the name comes from their document. */
|
|
21241
21343
|
name: string | null;
|
|
21242
21344
|
/**
|
|
21243
|
-
* @description The
|
|
21345
|
+
* @description The highest of `roles` in the older list of one role, for those who read one value; a saved `PARTNER` stays as it is; null when none. Draw the owner by `roles`.
|
|
21244
21346
|
* @enum {string|null}
|
|
21245
21347
|
*/
|
|
21246
21348
|
role: "UBO" | "OWNER_OR_OPERATOR" | "PARTNER" | "DIRECTOR_CONTROL_PERSON_OR_LEGAL_REP" | "AGENT_OR_AUTHORISED_PERSON" | null;
|
|
21247
|
-
/** @description
|
|
21349
|
+
/** @description Every role of the owner, the highest first (UBO, shareholder, director, representative) — codes of the form's `roles` field, its labels in that field's `options`. An owner saved with one `role` reads as the role it means. Empty when none. */
|
|
21350
|
+
roles: ("UBO" | "SHAREHOLDER" | "DIRECTOR" | "REPRESENTATIVE")[];
|
|
21351
|
+
/** @description The filler's own row — the item the filler marked as themselves (`is_applicant` in the form), or the one CORE added for them from `applicant_role`. Draw it without the owner actions: the owner routes answer it `400 KYC_OWNER_IS_FILLER`, all but `…/authority-document`. Its `state` is the filler's own check on their personal entity — the same as `verification.applicant.state` for the owner of the business — and it never counts towards `next_step: owners`. */
|
|
21248
21352
|
is_applicant: boolean;
|
|
21249
21353
|
state: components["schemas"]["KycFormsVerificationState"];
|
|
21250
21354
|
/**
|
|
@@ -21252,15 +21356,15 @@ export interface components {
|
|
|
21252
21356
|
* @description When the identity provider last emailed this owner their link — after the form was sent and on each `POST …/verification/owners/invite`, to the persons whose item has `invite_by_email: true` (the email is required by the form); the filler's row too (through the email of their account); null = never (the owner gets the link by hand: `…/owners/{owner_id}/link` or `/session`); always null for a company.
|
|
21253
21357
|
*/
|
|
21254
21358
|
invited_at: string | null;
|
|
21255
|
-
/** @description The files of the
|
|
21359
|
+
/** @description The owner's files on record, one item per type however many times it was filed. `gov_id_front`, `gov_id_back` — the sides of the identity document, uploaded through `…/owners/{owner_id}/document` or read from the provider after the owner passed; not listed for the filler's own row. `proof_of_address` — read from the provider after the owner passed, when their check asks for one; on the filler's own row, for a UBO, the file of their personal form once their check passed, when its type is one of the form's list. `auth_letter` — uploaded through `…/owners/{owner_id}/authority-document`; it decides nothing, no status or step waits on it. An item says a file is there, not that the provider accepted it: `state` tells that, and the item stays after a refusal. Neither the file nor the kind of document (a passport or an ID card) is given. New keys may be added: pick the ones you draw by `key`. Empty for a company. */
|
|
21256
21360
|
documents: {
|
|
21257
21361
|
/**
|
|
21258
|
-
* @description The
|
|
21362
|
+
* @description The kind of file, as `type` in the answer of the upload.
|
|
21259
21363
|
* @enum {string}
|
|
21260
21364
|
*/
|
|
21261
|
-
key: "gov_id_front" | "gov_id_back";
|
|
21365
|
+
key: "gov_id_front" | "gov_id_back" | "proof_of_address" | "auth_letter";
|
|
21262
21366
|
/**
|
|
21263
|
-
* @description The name of the
|
|
21367
|
+
* @description The name of the document, in the language of the request.
|
|
21264
21368
|
* @example Identity document photo
|
|
21265
21369
|
*/
|
|
21266
21370
|
label: string;
|
|
@@ -21279,6 +21383,19 @@ export interface components {
|
|
|
21279
21383
|
*/
|
|
21280
21384
|
next_at: string | null;
|
|
21281
21385
|
} | null;
|
|
21386
|
+
/** @description A business with a base form: the papers of the sent form that did not get to the identity provider: it refused the file, or the file is not one we can send. The application goes on without them and the same file is not sent again; the client replaces a paper in the form once compliance returns the application. Neither `stage` nor `next_step` changes for it. Empty for a personal entity and when nothing was refused. */
|
|
21387
|
+
rejected_documents: {
|
|
21388
|
+
/**
|
|
21389
|
+
* @description The key of the file field of the form.
|
|
21390
|
+
* @example document.formation_doc
|
|
21391
|
+
*/
|
|
21392
|
+
key: string;
|
|
21393
|
+
/**
|
|
21394
|
+
* @description The label of that field, in the language of the request.
|
|
21395
|
+
* @example Certificate of incorporation
|
|
21396
|
+
*/
|
|
21397
|
+
label: string;
|
|
21398
|
+
}[];
|
|
21282
21399
|
};
|
|
21283
21400
|
/** @description Only for an entity linked to a wallet and with a base form: one item per active rail of the tenant of the entity's client type (and the universal ones) — not filtered by what the wallet sees (`GET …/targets` does that); empty otherwise. */
|
|
21284
21401
|
rails: {
|
|
@@ -21458,7 +21575,7 @@ export interface components {
|
|
|
21458
21575
|
}[];
|
|
21459
21576
|
};
|
|
21460
21577
|
};
|
|
21461
|
-
/** @description The structured payload of an error that carries one (absent otherwise — an invalid uuid or a malformed body is a message only). `VALIDATION_ERROR`: `fields` is a map from the field key to its messages (a list item field is `beneficial_owners[0].
|
|
21578
|
+
/** @description The structured payload of an error that carries one (absent otherwise — an invalid uuid or a malformed body is a message only). `VALIDATION_ERROR`: `fields` is a map from the field key to its messages (a list item field is `beneficial_owners[0].roles`, the list as a whole `beneficial_owners`). `FORM_FIELD_NOT_ALLOWED`, `KYC_FORM_CONDITIONS_CYCLE`: `fields` is a list of keys. */
|
|
21462
21579
|
KycFormsErrorDetails: {
|
|
21463
21580
|
fields: {
|
|
21464
21581
|
[key: string]: string[];
|
|
@@ -21549,7 +21666,7 @@ export interface components {
|
|
|
21549
21666
|
"application/json": components["schemas"]["ErrorResponse"];
|
|
21550
21667
|
};
|
|
21551
21668
|
};
|
|
21552
|
-
/** @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`; an individual beneficial owner other than the filler without an `email` comes back under `beneficial_owners[i].email` on a submission (the draft takes it empty); 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].
|
|
21669
|
+
/** @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`; an individual beneficial owner other than the filler without an `email` comes back under `beneficial_owners[i].email` on a submission (the draft takes it empty); 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].roles`; a `multi_enum` field with an option that excludes the others (`options[].exclusive`) chosen together with another one comes back under the field, on the draft too; on a submission only — the draft takes them: a value over the `validation` of its field comes back as the text of the rule with the bound in it — `max_items` «Choose no more than 5», `min_age` «You must be at least 18 years old», `max` «The value must be at most 2026-11-05» for a date in the future, a pattern its own message, such as «Use Latin characters only…» for the names and addresses written in Latin letters; a form that asks `beneficial_owners` without a person holding the role `UBO` or `DIRECTOR` — the filler counts by their role, a company counts for none — comes back under `beneficial_owners`, «Add at least one person with the role DIRECTOR», one text for each missing role (the code of the role); a company owner with a role other than `SHAREHOLDER` comes back under `beneficial_owners[i].roles`, «A company can only be a shareholder» — a saved company keeps its roles until they change; the texts are the `message.latin_only`, `message.max`, `message.min_age`, `message.too_many_values`, `message.owner_role_missing` and `message.company_owner_role` of the form texts, in the language of the form), 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; on a list item a key that is not an item field of the form — `role`, `has_control` — named `beneficial_owners[0].role` in `details.fields`), and, in the draft too, any PEP detail (`pep_full_name`, `pep_relationship`, `pep_country`, `pep_position`, `pep_is_current`, `pep_end_date`, `pep_related_declaration`, `pep_related_position`, `pep_related_country`) sent with a value while `pep_declaration` is `false` (a detail hidden by its condition is refused even empty, like any hidden key: leave it out), `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 */
|
|
21553
21670
|
KycFormsFieldErrors: {
|
|
21554
21671
|
headers: {
|
|
21555
21672
|
[name: string]: unknown;
|
|
@@ -21603,7 +21720,7 @@ export interface components {
|
|
|
21603
21720
|
"application/json": components["schemas"]["ErrorResponse"];
|
|
21604
21721
|
};
|
|
21605
21722
|
};
|
|
21606
|
-
/** @description `VALIDATION_ERROR` — `entity_id` or `owner_id` is not a uuid, or the body is malformed; `KYC_FORMS_NOT_ENABLED`; `KYC_OWNER_IS_FILLER` — the owner is the person filling the form: they verify their identity on their own profile (`POST …/verification/session`); `KYC_OWNER_NOT_INDIVIDUAL` — the owner is a company: it has nothing to pass itself, its check is requested on its behalf (`verification.owners[]` of the overview shows it with `type: company`); `KYC_VERIFICATION_LEVEL_MISSING` — the tenant has no individual verification level configured; `VERIFICATION_PROVIDER_UNAVAILABLE` — the identity provider
|
|
21723
|
+
/** @description `VALIDATION_ERROR` — `entity_id` or `owner_id` is not a uuid, or the body is malformed; `KYC_FORMS_NOT_ENABLED`; `KYC_OWNER_IS_FILLER` — the owner is the person filling the form: they verify their identity on their own profile (`POST …/verification/session`); `KYC_OWNER_NOT_INDIVIDUAL` — the owner is a company: it has nothing to pass itself, its check is requested on its behalf (`verification.owners[]` of the overview shows it with `type: company`); `KYC_VERIFICATION_LEVEL_MISSING` — the tenant has no individual verification level configured; `VERIFICATION_PROVIDER_UNAVAILABLE` — the identity provider did not answer, try later; `VERIFICATION_PROVIDER_REFUSED` — the identity provider did not accept the data, the same request gets the same answer; `VERIFICATION_PROVIDER_NOT_CONFIGURED`. */
|
|
21607
21724
|
KycFormsOwnerErrors: {
|
|
21608
21725
|
headers: {
|
|
21609
21726
|
[name: string]: unknown;
|
|
@@ -2754,7 +2754,7 @@ export interface paths {
|
|
|
2754
2754
|
updated_at?: string | null;
|
|
2755
2755
|
/**
|
|
2756
2756
|
* Format: uuid
|
|
2757
|
-
* @description
|
|
2757
|
+
* @description Card sub-account id, when the order funded a card
|
|
2758
2758
|
*/
|
|
2759
2759
|
sub_account_id?: string | null;
|
|
2760
2760
|
/** @description Order metadata (varies by order type).
|
|
@@ -2794,12 +2794,6 @@ export interface paths {
|
|
|
2794
2794
|
* - counterparty_account_nickname
|
|
2795
2795
|
* - to_crypto_address
|
|
2796
2796
|
* - reference, note (optional)
|
|
2797
|
-
*
|
|
2798
|
-
* RN_CARDS_OFFRAMP:
|
|
2799
|
-
* - sub_account_id
|
|
2800
|
-
* - to_address (crypto deposit address)
|
|
2801
|
-
* - sub_account_currency
|
|
2802
|
-
* - crypto_transaction_hash (when completed)
|
|
2803
2797
|
* */
|
|
2804
2798
|
meta?: {
|
|
2805
2799
|
billing_amount?: number;
|
|
@@ -1520,6 +1520,8 @@ export interface paths {
|
|
|
1520
1520
|
* @description Returns a paginated list of KYC records within the tenant.
|
|
1521
1521
|
* Optionally filter by `wallet_id`.
|
|
1522
1522
|
*
|
|
1523
|
+
* Minimum role: VIEWER.
|
|
1524
|
+
*
|
|
1523
1525
|
*/
|
|
1524
1526
|
get: {
|
|
1525
1527
|
parameters: {
|
|
@@ -1558,6 +1560,15 @@ export interface paths {
|
|
|
1558
1560
|
};
|
|
1559
1561
|
};
|
|
1560
1562
|
};
|
|
1563
|
+
/** @description `WALLET_ACCESS_DENIED`: `wallet_id` is not a wallet of the tenant of the key */
|
|
1564
|
+
403: {
|
|
1565
|
+
headers: {
|
|
1566
|
+
[name: string]: unknown;
|
|
1567
|
+
};
|
|
1568
|
+
content: {
|
|
1569
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
1570
|
+
};
|
|
1571
|
+
};
|
|
1561
1572
|
};
|
|
1562
1573
|
};
|
|
1563
1574
|
put?: never;
|
|
@@ -1571,6 +1582,8 @@ export interface paths {
|
|
|
1571
1582
|
* `wallets.kyc_entity_id` — a wallet without an active owner is rejected
|
|
1572
1583
|
* with 400.
|
|
1573
1584
|
*
|
|
1585
|
+
* Minimum role: OPERATOR.
|
|
1586
|
+
*
|
|
1574
1587
|
*/
|
|
1575
1588
|
post: {
|
|
1576
1589
|
parameters: {
|
|
@@ -1581,7 +1594,7 @@ export interface paths {
|
|
|
1581
1594
|
};
|
|
1582
1595
|
requestBody: {
|
|
1583
1596
|
content: {
|
|
1584
|
-
"application/json": {
|
|
1597
|
+
"application/json": components["schemas"]["KycEntityComplianceInput"] & {
|
|
1585
1598
|
/**
|
|
1586
1599
|
* Format: uuid
|
|
1587
1600
|
* @description Wallet to attach the KYC entity to
|
|
@@ -1652,26 +1665,41 @@ export interface paths {
|
|
|
1652
1665
|
};
|
|
1653
1666
|
};
|
|
1654
1667
|
};
|
|
1655
|
-
/** @description
|
|
1668
|
+
/** @description `INVALID_REQUEST`: `wallet_id` or `type` missing, the wallet has no active owner, or a field is malformed (the message names it): `gender`, `documents[]`, `pep_end_date` not `YYYY-MM`, `pep_related_country` not an alpha-3 code, `business_sector` outside the list, `employees_count` not a whole number from 0, `annual_turnover` below 0, a text field over 2000 characters; `INVALID_TYPE`: `type` is neither `individual` nor `business`; `KYC_ENTITY_EXISTS`: the wallet already has a KYC entity (use PATCH) */
|
|
1656
1669
|
400: {
|
|
1657
1670
|
headers: {
|
|
1658
1671
|
[name: string]: unknown;
|
|
1659
1672
|
};
|
|
1660
|
-
content
|
|
1673
|
+
content: {
|
|
1674
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
1675
|
+
};
|
|
1661
1676
|
};
|
|
1662
|
-
/** @description
|
|
1677
|
+
/** @description `INSUFFICIENT_ADMIN_ROLE`: the key is below OPERATOR; `WALLET_ACCESS_DENIED`: the wallet does not belong to the tenant of the key */
|
|
1678
|
+
403: {
|
|
1679
|
+
headers: {
|
|
1680
|
+
[name: string]: unknown;
|
|
1681
|
+
};
|
|
1682
|
+
content: {
|
|
1683
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
1684
|
+
};
|
|
1685
|
+
};
|
|
1686
|
+
/** @description `WALLET_NOT_FOUND` */
|
|
1663
1687
|
404: {
|
|
1664
1688
|
headers: {
|
|
1665
1689
|
[name: string]: unknown;
|
|
1666
1690
|
};
|
|
1667
|
-
content
|
|
1691
|
+
content: {
|
|
1692
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
1693
|
+
};
|
|
1668
1694
|
};
|
|
1669
|
-
/** @description
|
|
1695
|
+
/** @description `OPERATION_IN_PROGRESS`: concurrent creation for this wallet is in progress — retry later */
|
|
1670
1696
|
409: {
|
|
1671
1697
|
headers: {
|
|
1672
1698
|
[name: string]: unknown;
|
|
1673
1699
|
};
|
|
1674
|
-
content
|
|
1700
|
+
content: {
|
|
1701
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
1702
|
+
};
|
|
1675
1703
|
};
|
|
1676
1704
|
};
|
|
1677
1705
|
};
|
|
@@ -1693,6 +1721,8 @@ export interface paths {
|
|
|
1693
1721
|
* @description Returns the KYC data (individual or business) associated with the wallet,
|
|
1694
1722
|
* including address and beneficial owners for business entities.
|
|
1695
1723
|
*
|
|
1724
|
+
* Minimum role: VIEWER.
|
|
1725
|
+
*
|
|
1696
1726
|
*/
|
|
1697
1727
|
get: {
|
|
1698
1728
|
parameters: {
|
|
@@ -1719,12 +1749,23 @@ export interface paths {
|
|
|
1719
1749
|
};
|
|
1720
1750
|
};
|
|
1721
1751
|
};
|
|
1722
|
-
/** @description
|
|
1752
|
+
/** @description `WALLET_ACCESS_DENIED`: the wallet does not belong to the tenant of the key */
|
|
1753
|
+
403: {
|
|
1754
|
+
headers: {
|
|
1755
|
+
[name: string]: unknown;
|
|
1756
|
+
};
|
|
1757
|
+
content: {
|
|
1758
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
1759
|
+
};
|
|
1760
|
+
};
|
|
1761
|
+
/** @description `KYC_ENTITY_NOT_FOUND`: no KYC found for this wallet */
|
|
1723
1762
|
404: {
|
|
1724
1763
|
headers: {
|
|
1725
1764
|
[name: string]: unknown;
|
|
1726
1765
|
};
|
|
1727
|
-
content
|
|
1766
|
+
content: {
|
|
1767
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
1768
|
+
};
|
|
1728
1769
|
};
|
|
1729
1770
|
};
|
|
1730
1771
|
};
|
|
@@ -1755,6 +1796,9 @@ export interface paths {
|
|
|
1755
1796
|
* Once submitted (status moves to PENDING or beyond), the entity becomes immutable
|
|
1756
1797
|
* through this endpoint until the review process returns it to `SOFT_REJECT`.
|
|
1757
1798
|
*
|
|
1799
|
+
* Minimum role: OPERATOR. Only the keys of the body change their columns: an absent key leaves the column
|
|
1800
|
+
* alone, `null` clears it.
|
|
1801
|
+
*
|
|
1758
1802
|
*/
|
|
1759
1803
|
patch: {
|
|
1760
1804
|
parameters: {
|
|
@@ -1768,7 +1812,7 @@ export interface paths {
|
|
|
1768
1812
|
};
|
|
1769
1813
|
requestBody: {
|
|
1770
1814
|
content: {
|
|
1771
|
-
"application/json": {
|
|
1815
|
+
"application/json": components["schemas"]["KycEntityComplianceInput"] & {
|
|
1772
1816
|
/** @enum {string} */
|
|
1773
1817
|
type?: "individual" | "business";
|
|
1774
1818
|
/** Format: email */
|
|
@@ -1828,19 +1872,32 @@ export interface paths {
|
|
|
1828
1872
|
};
|
|
1829
1873
|
};
|
|
1830
1874
|
};
|
|
1831
|
-
/** @description
|
|
1875
|
+
/** @description `ENTITY_NOT_EDITABLE`: the entity is not in `UNVERIFIED` or `SOFT_REJECT` status; `INVALID_TYPE`: `type` is neither `individual` nor `business`; `INVALID_REQUEST`: a field is malformed (the message names it): `gender`, `documents[]`, `pep_end_date` not `YYYY-MM`, `pep_related_country` not an alpha-3 code, `business_sector` outside the list, `employees_count` not a whole number from 0, `annual_turnover` below 0, a text field over 2000 characters */
|
|
1832
1876
|
400: {
|
|
1833
1877
|
headers: {
|
|
1834
1878
|
[name: string]: unknown;
|
|
1835
1879
|
};
|
|
1836
|
-
content
|
|
1880
|
+
content: {
|
|
1881
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
1882
|
+
};
|
|
1837
1883
|
};
|
|
1838
|
-
/** @description
|
|
1884
|
+
/** @description `INSUFFICIENT_ADMIN_ROLE`: the key is below OPERATOR; `WALLET_ACCESS_DENIED`: the entity does not belong to the tenant of the key */
|
|
1885
|
+
403: {
|
|
1886
|
+
headers: {
|
|
1887
|
+
[name: string]: unknown;
|
|
1888
|
+
};
|
|
1889
|
+
content: {
|
|
1890
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
1891
|
+
};
|
|
1892
|
+
};
|
|
1893
|
+
/** @description `KYC_ENTITY_NOT_FOUND` */
|
|
1839
1894
|
404: {
|
|
1840
1895
|
headers: {
|
|
1841
1896
|
[name: string]: unknown;
|
|
1842
1897
|
};
|
|
1843
|
-
content
|
|
1898
|
+
content: {
|
|
1899
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
1900
|
+
};
|
|
1844
1901
|
};
|
|
1845
1902
|
};
|
|
1846
1903
|
};
|
|
@@ -1939,6 +1996,8 @@ export interface paths {
|
|
|
1939
1996
|
*
|
|
1940
1997
|
* This is a one-way action: to cancel a submission, contact support.
|
|
1941
1998
|
*
|
|
1999
|
+
* Minimum role: OPERATOR. At most 5 submissions per hour for one entity.
|
|
2000
|
+
*
|
|
1942
2001
|
*/
|
|
1943
2002
|
post: {
|
|
1944
2003
|
parameters: {
|
|
@@ -1965,19 +2024,41 @@ export interface paths {
|
|
|
1965
2024
|
};
|
|
1966
2025
|
};
|
|
1967
2026
|
};
|
|
1968
|
-
/** @description
|
|
2027
|
+
/** @description `ENTITY_NOT_SUBMITTABLE`: the entity is not in `UNVERIFIED` or `SOFT_REJECT` status */
|
|
1969
2028
|
400: {
|
|
1970
2029
|
headers: {
|
|
1971
2030
|
[name: string]: unknown;
|
|
1972
2031
|
};
|
|
1973
|
-
content
|
|
2032
|
+
content: {
|
|
2033
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
2034
|
+
};
|
|
2035
|
+
};
|
|
2036
|
+
/** @description `INSUFFICIENT_ADMIN_ROLE`: the key is below OPERATOR; `WALLET_ACCESS_DENIED`: the entity does not belong to the tenant of the key */
|
|
2037
|
+
403: {
|
|
2038
|
+
headers: {
|
|
2039
|
+
[name: string]: unknown;
|
|
2040
|
+
};
|
|
2041
|
+
content: {
|
|
2042
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
2043
|
+
};
|
|
1974
2044
|
};
|
|
1975
|
-
/** @description
|
|
2045
|
+
/** @description `KYC_ENTITY_NOT_FOUND` */
|
|
1976
2046
|
404: {
|
|
1977
2047
|
headers: {
|
|
1978
2048
|
[name: string]: unknown;
|
|
1979
2049
|
};
|
|
1980
|
-
content
|
|
2050
|
+
content: {
|
|
2051
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
2052
|
+
};
|
|
2053
|
+
};
|
|
2054
|
+
/** @description `RATE_LIMIT_EXCEEDED`: too many submissions for this entity */
|
|
2055
|
+
429: {
|
|
2056
|
+
headers: {
|
|
2057
|
+
[name: string]: unknown;
|
|
2058
|
+
};
|
|
2059
|
+
content: {
|
|
2060
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
2061
|
+
};
|
|
1981
2062
|
};
|
|
1982
2063
|
};
|
|
1983
2064
|
};
|
|
@@ -8940,10 +9021,40 @@ export interface components {
|
|
|
8940
9021
|
/** Format: date-time */
|
|
8941
9022
|
updated_at?: string;
|
|
8942
9023
|
};
|
|
9024
|
+
KycEntityComplianceInput: {
|
|
9025
|
+
pep_position?: string | null;
|
|
9026
|
+
pep_is_current?: boolean | null;
|
|
9027
|
+
/**
|
|
9028
|
+
* @description Month the position ended, `YYYY-MM`; any other shape answers 400
|
|
9029
|
+
* @example 2024-06
|
|
9030
|
+
*/
|
|
9031
|
+
pep_end_date?: string | null;
|
|
9032
|
+
pep_related_declaration?: boolean | null;
|
|
9033
|
+
pep_related_position?: string | null;
|
|
9034
|
+
/**
|
|
9035
|
+
* @description ISO 3166-1 alpha-3 country code; any other value answers 400
|
|
9036
|
+
* @example DEU
|
|
9037
|
+
*/
|
|
9038
|
+
pep_related_country?: string | null;
|
|
9039
|
+
acting_on_own_behalf?: boolean | null;
|
|
9040
|
+
on_behalf_details?: string | null;
|
|
9041
|
+
source_of_funds_other?: string | null;
|
|
9042
|
+
/**
|
|
9043
|
+
* @description One of the values listed on `business_sector` of the KycEntity schema; any other value answers 400
|
|
9044
|
+
* @example OtherServices
|
|
9045
|
+
*/
|
|
9046
|
+
business_sector?: string | null;
|
|
9047
|
+
online_presence?: string | null;
|
|
9048
|
+
employees_count?: number | null;
|
|
9049
|
+
annual_turnover?: number | null;
|
|
9050
|
+
third_party_payments_details?: string | null;
|
|
9051
|
+
sanctions_exposure?: boolean | null;
|
|
9052
|
+
sanctions_details?: string | null;
|
|
9053
|
+
};
|
|
8943
9054
|
/** @description Documents to file for the KYC entity. Each entry is stored as a document of its type; an earlier document of the same type stays on record (several documents of one type are allowed). All entries of one request form one batch in the given order, so a multi-file document (e.g. the pages of a bank statement) is sent as several entries of the same type in one request. A file already on record under its type is not filed again and keeps its dates; to change them, remove the document and file it again. A document is removed through DELETE /admin/kyc_entity/{entity_id}/documents/{document_id}. */
|
|
8944
9055
|
KycDocumentsInput: {
|
|
8945
9056
|
/**
|
|
8946
|
-
* @description Document type: supplementary, gov_id_front, gov_id_back, gov_id_hand_hold, selfie, proof_of_address, auth_letter, formation_doc, proof_of_ownership, certificate_of_registration_doc, business_registration_doc, share_structure, constitution_or_annual_report, articles_of_association, ubo_declaration, partnership_mins_of_meeting, partnership_deed, certificate_of_incumbency, regulatory_license, state_registry_doc, good_standing_cert, business_proof_of_address, invoices, contracts, financial_statements, source_of_funds, business_bank_statement, source_of_wealth_ubo, customer_supplier_agreements.
|
|
9057
|
+
* @description Document type: supplementary, gov_id_front, gov_id_back, gov_id_hand_hold, selfie, proof_of_address, auth_letter, formation_doc, proof_of_ownership, certificate_of_registration_doc, business_registration_doc, share_structure, constitution_or_annual_report, articles_of_association, ubo_declaration, partnership_mins_of_meeting, partnership_deed, certificate_of_incumbency, regulatory_license, state_registry_doc, good_standing_cert, business_proof_of_address, invoices, contracts, financial_statements, source_of_funds, business_bank_statement, source_of_wealth_ubo, customer_supplier_agreements, company_shareholder_documents.
|
|
8947
9058
|
* @example formation_doc
|
|
8948
9059
|
*/
|
|
8949
9060
|
type: string;
|
|
@@ -9147,6 +9258,47 @@ export interface components {
|
|
|
9147
9258
|
certificate_of_registration_doc_type?: string | null;
|
|
9148
9259
|
/** @description Certificate number (business) */
|
|
9149
9260
|
certificate_number?: string | null;
|
|
9261
|
+
/** @description Position of the politically exposed person */
|
|
9262
|
+
pep_position?: string | null;
|
|
9263
|
+
/** @description Whether the position is current */
|
|
9264
|
+
pep_is_current?: boolean | null;
|
|
9265
|
+
/**
|
|
9266
|
+
* @description Month the position ended, `YYYY-MM`
|
|
9267
|
+
* @example 2024-06
|
|
9268
|
+
*/
|
|
9269
|
+
pep_end_date?: string | null;
|
|
9270
|
+
/** @description Whether a relative or partner is a politically exposed person */
|
|
9271
|
+
pep_related_declaration?: boolean | null;
|
|
9272
|
+
/** @description Position of the related politically exposed person */
|
|
9273
|
+
pep_related_position?: string | null;
|
|
9274
|
+
/**
|
|
9275
|
+
* @description Country of the related politically exposed person, ISO 3166-1 alpha-3
|
|
9276
|
+
* @example DEU
|
|
9277
|
+
*/
|
|
9278
|
+
pep_related_country?: string | null;
|
|
9279
|
+
/** @description Whether the individual acts on their own behalf */
|
|
9280
|
+
acting_on_own_behalf?: boolean | null;
|
|
9281
|
+
/** @description On whose behalf the individual acts */
|
|
9282
|
+
on_behalf_details?: string | null;
|
|
9283
|
+
/** @description Describes a source of funds that is not listed */
|
|
9284
|
+
source_of_funds_other?: string | null;
|
|
9285
|
+
/**
|
|
9286
|
+
* @description Industry sector of the business; `business_industry` holds its NAICS codes
|
|
9287
|
+
* @enum {string|null}
|
|
9288
|
+
*/
|
|
9289
|
+
business_sector?: "FinancialServices" | "Cryptocurrency" | "Gaming" | "LuxuryGoods" | "Defense" | "AdultEntertainment" | "ProfessionalServices" | "RealEstate" | "TechnologySoftware" | "TelecommunicationsMedia" | "Healthcare" | "Retail" | "Manufacturing" | "Food&Beverage" | "Construction" | "Energy" | "Transportation" | "Hospitality&Tourism" | "Education&Training" | "Arts" | "Agriculture&Farming" | "NonProfit" | "Government" | "Cannabiis" | "OtherServices" | null;
|
|
9290
|
+
/** @description Where the business appears online */
|
|
9291
|
+
online_presence?: string | null;
|
|
9292
|
+
/** @description Number of employees. An answer from a KYC form holds the upper bound of the chosen range */
|
|
9293
|
+
employees_count?: number | null;
|
|
9294
|
+
/** @description Annual turnover, USD. An answer from a KYC form holds the upper bound of the chosen range */
|
|
9295
|
+
annual_turnover?: number | null;
|
|
9296
|
+
/** @description Payments from or to third parties */
|
|
9297
|
+
third_party_payments_details?: string | null;
|
|
9298
|
+
/** @description Whether the business has links to sanctioned countries or persons */
|
|
9299
|
+
sanctions_exposure?: boolean | null;
|
|
9300
|
+
/** @description Describes the links to sanctioned countries or persons */
|
|
9301
|
+
sanctions_details?: string | null;
|
|
9150
9302
|
/** Format: uuid */
|
|
9151
9303
|
kyc_address_id?: string | null;
|
|
9152
9304
|
/** Format: uuid */
|
|
@@ -9171,7 +9323,17 @@ export interface components {
|
|
|
9171
9323
|
first_name?: string;
|
|
9172
9324
|
last_name?: string;
|
|
9173
9325
|
email?: string | null;
|
|
9326
|
+
/** @description The highest of `roles` in the older list of one role */
|
|
9174
9327
|
role?: string | null;
|
|
9328
|
+
/** @description Every role of the owner, the highest first; empty when none */
|
|
9329
|
+
roles?: ("UBO" | "SHAREHOLDER" | "DIRECTOR" | "REPRESENTATIVE")[];
|
|
9330
|
+
/**
|
|
9331
|
+
* @description Why the owner is a UBO
|
|
9332
|
+
* @enum {string|null}
|
|
9333
|
+
*/
|
|
9334
|
+
ubo_basis?: "owns_shares" | "controls_otherwise" | "senior_managing_official" | null;
|
|
9335
|
+
/** @description How the owner controls the company */
|
|
9336
|
+
ubo_control_details?: string | null;
|
|
9175
9337
|
business_title?: string | null;
|
|
9176
9338
|
has_ownership?: boolean;
|
|
9177
9339
|
has_control?: boolean;
|
|
@@ -898,6 +898,7 @@ export declare namespace API {
|
|
|
898
898
|
type OwnerLinkRoot = pathsV1Frontend['/frontend/kyc/entities/{entity_id}/verification/owners/{owner_id}/link'];
|
|
899
899
|
type OwnerSessionRoot = pathsV1Frontend['/frontend/kyc/entities/{entity_id}/verification/owners/{owner_id}/session'];
|
|
900
900
|
type OwnerDocumentRoot = pathsV1Frontend['/frontend/kyc/entities/{entity_id}/verification/owners/{owner_id}/document'];
|
|
901
|
+
type OwnerAuthorityDocumentRoot = pathsV1Frontend['/frontend/kyc/entities/{entity_id}/verification/owners/{owner_id}/authority-document'];
|
|
901
902
|
type OwnersInviteRoot = pathsV1Frontend['/frontend/kyc/entities/{entity_id}/verification/owners/invite'];
|
|
902
903
|
type Schemas = componentsV1Frontend['schemas'];
|
|
903
904
|
type UploadOptions = Pick<AxiosRequestConfig, 'signal' | 'timeout' | 'onUploadProgress'>;
|
|
@@ -1014,6 +1015,14 @@ export declare namespace API {
|
|
|
1014
1015
|
export type Response = OwnerDocumentRoot['post']['responses'][201]['content']['application/json'];
|
|
1015
1016
|
export {};
|
|
1016
1017
|
}
|
|
1018
|
+
namespace AuthorityDocument {
|
|
1019
|
+
type Body = OwnerAuthorityDocumentRoot['post']['requestBody']['content']['multipart/form-data'];
|
|
1020
|
+
export type Request = OwnerAuthorityDocumentRoot['post']['parameters']['path'] & Omit<Body, 'file'> & {
|
|
1021
|
+
file: File | Blob;
|
|
1022
|
+
} & UploadOptions;
|
|
1023
|
+
export type Response = OwnerAuthorityDocumentRoot['post']['responses'][201]['content']['application/json'];
|
|
1024
|
+
export {};
|
|
1025
|
+
}
|
|
1017
1026
|
namespace Invite {
|
|
1018
1027
|
type Request = OwnersInviteRoot['post']['parameters']['path'];
|
|
1019
1028
|
type Response = OwnersInviteRoot['post']['responses'][200]['content']['application/json'];
|