squarefi-bff-api-module 1.36.97 → 1.36.99
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 -1
- package/dist/api/frontend.js +3 -2
- package/dist/api/kyc.d.ts +4 -1
- package/dist/api/kyc.js +4 -1
- package/dist/api/types/autogen/apiV1External.types.d.ts +7 -1
- package/dist/api/types/autogen/apiV1Frontend.types.d.ts +221 -110
- package/dist/api/types/autogen/apiV1Tenant.types.d.ts +6 -1
- package/dist/api/types/autogen/apiV2.types.d.ts +6 -1
- package/dist/api/types/types.d.ts +1 -3
- package/package.json +1 -1
package/dist/api/frontend.d.ts
CHANGED
|
@@ -73,7 +73,7 @@ export declare const frontend: {
|
|
|
73
73
|
kycRails: {
|
|
74
74
|
getAll: ({ wallet_id }: API.Frontend.KycRails.List.Request) => Promise<API.Frontend.KycRails.List.Response>;
|
|
75
75
|
getById: ({ wallet_id, rail_id }: API.Frontend.KycRails.Get.Request) => Promise<API.Frontend.KycRails.Get.Response>;
|
|
76
|
-
submit: ({ wallet_id, rail_id, }: API.Frontend.KycRails.Submit.Request) => Promise<API.Frontend.KycRails.Submit.Response>;
|
|
76
|
+
submit: ({ wallet_id, rail_id, accepted_terms, }: API.Frontend.KycRails.Submit.Request) => Promise<API.Frontend.KycRails.Submit.Response>;
|
|
77
77
|
confirmTerms: ({ wallet_id, rail_id, }: API.Frontend.KycRails.ConfirmTerms.Request) => Promise<API.Frontend.KycRails.ConfirmTerms.Response>;
|
|
78
78
|
};
|
|
79
79
|
kycForms: {
|
package/dist/api/frontend.js
CHANGED
|
@@ -151,7 +151,9 @@ export const frontend = {
|
|
|
151
151
|
kycRails: {
|
|
152
152
|
getAll: ({ wallet_id }) => apiClientV1Frontend.getRequest(`/frontend/wallets/${wallet_id}/kyc-rails`),
|
|
153
153
|
getById: ({ wallet_id, rail_id }) => apiClientV1Frontend.getRequest(`/frontend/wallets/${wallet_id}/kyc-rails/${rail_id}`),
|
|
154
|
-
|
|
154
|
+
// No `data` without `accepted_terms`, so both clients keep the old request (the fetch one sends no body). On a
|
|
155
|
+
// rail with terms an empty list is a refusal, and so is no list where the rail requires its terms (SFI-2865).
|
|
156
|
+
submit: ({ wallet_id, rail_id, accepted_terms, }) => apiClientV1Frontend.postRequest(`/frontend/wallets/${wallet_id}/kyc-rails/${rail_id}`, accepted_terms == null ? undefined : { data: { accepted_terms } }),
|
|
155
157
|
confirmTerms: ({ wallet_id, rail_id, }) => apiClientV1Frontend.postRequest(`/frontend/wallets/${wallet_id}/kyc-rails/${rail_id}/terms-and-conditions`),
|
|
156
158
|
},
|
|
157
159
|
// KYC forms (CORE). Personal entity creation is idempotent, a business entity is new on every call. A form is
|
|
@@ -194,7 +196,6 @@ export const frontend = {
|
|
|
194
196
|
params,
|
|
195
197
|
paramsSerializer: KYC_FORMS_ARRAY_PARAMS,
|
|
196
198
|
}),
|
|
197
|
-
// `accepted_terms`: all document ids of `form.terms` (`[]` if none); missing ones come back in `details.terms`.
|
|
198
199
|
submit: ({ entity_id, rails, programs, wallet_id, locale, ...data }) => apiClientV1Frontend.postRequest(`/frontend/kyc/entities/${entity_id}/forms/submit`, { data, params: { rails, programs, wallet_id, locale }, paramsSerializer: KYC_FORMS_ARRAY_PARAMS }),
|
|
199
200
|
},
|
|
200
201
|
verification: {
|
package/dist/api/kyc.d.ts
CHANGED
|
@@ -17,7 +17,10 @@ export declare const kyc: {
|
|
|
17
17
|
init: ({ kyc_entity_id, ...params }: API.KYC.Entity.Init.Request) => Promise<API.KYC.Entity.Init.Response>;
|
|
18
18
|
resume: ({ kyc_entity_id, verification_ref, }: API.KYC.Entity.Resume.Request) => Promise<API.KYC.Entity.Resume.Response>;
|
|
19
19
|
};
|
|
20
|
-
/**
|
|
20
|
+
/**
|
|
21
|
+
* @deprecated BFF rails are replaced by CORE `/frontend/wallets/{wallet_id}/kyc-rails` (SFI-2614). Use `frontend.kycRails`:
|
|
22
|
+
* only its `submit` takes the rail's terms ticked before the submission (`accepted_terms`, SFI-2865).
|
|
23
|
+
*/
|
|
21
24
|
rails: {
|
|
22
25
|
info: {
|
|
23
26
|
getAll: ({ wallet_id }: API.KYC.Rails.RailInfo.List.Request) => Promise<API.KYC.Rails.RailInfo.List.Response>;
|
package/dist/api/kyc.js
CHANGED
|
@@ -17,7 +17,10 @@ export const kyc = {
|
|
|
17
17
|
init: ({ kyc_entity_id, ...params }) => apiClientV2.postRequest(`/kyc/entities/${kyc_entity_id}/init`, { params }),
|
|
18
18
|
resume: ({ kyc_entity_id, verification_ref, }) => apiClientV2.postRequest(`/kyc/entities/${kyc_entity_id}/resume/${verification_ref}`),
|
|
19
19
|
},
|
|
20
|
-
/**
|
|
20
|
+
/**
|
|
21
|
+
* @deprecated BFF rails are replaced by CORE `/frontend/wallets/{wallet_id}/kyc-rails` (SFI-2614). Use `frontend.kycRails`:
|
|
22
|
+
* only its `submit` takes the rail's terms ticked before the submission (`accepted_terms`, SFI-2865).
|
|
23
|
+
*/
|
|
21
24
|
rails: {
|
|
22
25
|
info: {
|
|
23
26
|
getAll: ({ wallet_id }) => apiClientV2.getRequest(`/kyc/${wallet_id}/rails`),
|
|
@@ -2523,6 +2523,12 @@ export interface paths {
|
|
|
2523
2523
|
* fresh cardholder is NOT the way to retry. While a review is running, another submit is
|
|
2524
2524
|
* refused with `409`.
|
|
2525
2525
|
*
|
|
2526
|
+
* **Final rejection**: a rejection no corrected dossier answers — a forged document,
|
|
2527
|
+
* fraud, an attempt to bypass the liveness check, or a regulatory bar (age, region, a
|
|
2528
|
+
* duplicate applicant) — is final. The submit is refused with
|
|
2529
|
+
* `409 CARDHOLDER_REJECTION_FINAL`, and `error.details.reject_reason` carries the
|
|
2530
|
+
* vendor's reason; no card can be issued for this identity.
|
|
2531
|
+
*
|
|
2526
2532
|
* **Authentication**: x-api-key header required
|
|
2527
2533
|
*
|
|
2528
2534
|
*/
|
|
@@ -2582,7 +2588,7 @@ export interface paths {
|
|
|
2582
2588
|
"application/json": components["schemas"]["ApiErrorResponse"];
|
|
2583
2589
|
};
|
|
2584
2590
|
};
|
|
2585
|
-
/** @description Cardholder is live at the vendor, or its review is still running. On a program that issues under the wallet's company: `WALLET_BUSINESS_NOT_ONBOARDED` (the wallet's business has not been registered with the card issuer) or `WALLET_BUSINESS_NOT_APPROVED` (its review is not approved yet). */
|
|
2591
|
+
/** @description Cardholder is live at the vendor, or its review is still running (`CARDHOLDER_NOT_DRAFT`). Its rejection is final and cannot be answered by a resubmit (`CARDHOLDER_REJECTION_FINAL`, `error.details.reject_reason`). On a program that issues under the wallet's company: `WALLET_BUSINESS_NOT_ONBOARDED` (the wallet's business has not been registered with the card issuer) or `WALLET_BUSINESS_NOT_APPROVED` (its review is not approved yet). */
|
|
2586
2592
|
409: {
|
|
2587
2593
|
headers: {
|
|
2588
2594
|
[name: string]: unknown;
|
|
@@ -6058,7 +6058,10 @@ export interface paths {
|
|
|
6058
6058
|
* and poll. Only programs whose vendor reviews the person before issuance ever return
|
|
6059
6059
|
* this; vendors that issue inline go straight to `READY`.
|
|
6060
6060
|
* - `REJECTED` — a verification came back with a FINAL rejection; re-running it from the
|
|
6061
|
-
* app is not possible (support resets it), so never render a "verify now" action.
|
|
6061
|
+
* app is not possible (support resets it), so never render a "verify now" action. Also
|
|
6062
|
+
* a linked cardholder (`cardholder_id`, `reject_reason`) whose VENDOR rejection is final
|
|
6063
|
+
* — a forged document, fraud, a liveness bypass, a regulatory bar: its submit answers
|
|
6064
|
+
* `409 CARDHOLDER_REJECTION_FINAL`, so never render "fix and resubmit" for it.
|
|
6062
6065
|
* - `NOT_MEMBER` — the uuid is not an active member of this wallet.
|
|
6063
6066
|
*
|
|
6064
6067
|
* **On a tenant of the KYC forms flow** (SFI-2544) the verdict comes from the member's personal
|
|
@@ -6139,8 +6142,9 @@ export interface paths {
|
|
|
6139
6142
|
*/
|
|
6140
6143
|
required_level?: "minimal" | "basic" | "declared" | "full" | null;
|
|
6141
6144
|
/** @description What the vendor disliked, on a NEEDS_RESUBMIT verdict — show it before
|
|
6142
|
-
* asking for a correction
|
|
6143
|
-
*
|
|
6145
|
+
* asking for a correction — or on a REJECTED one with a linked
|
|
6146
|
+
* cardholder, why the rejection is final. Null when the vendor named no
|
|
6147
|
+
* reason, or the verdict is not a rejection.
|
|
6144
6148
|
* */
|
|
6145
6149
|
reject_reason?: string | null;
|
|
6146
6150
|
}[];
|
|
@@ -6215,6 +6219,12 @@ export interface paths {
|
|
|
6215
6219
|
* the person already has: the same document cannot be registered twice at the vendor, so
|
|
6216
6220
|
* a fresh cardholder is NOT the way to retry.
|
|
6217
6221
|
*
|
|
6222
|
+
* **Final rejection**: a rejection no corrected dossier answers — a forged document,
|
|
6223
|
+
* fraud, an attempt to bypass the liveness check, or a regulatory bar (age, region, a
|
|
6224
|
+
* duplicate applicant) — is final. The submit is refused with
|
|
6225
|
+
* `409 CARDHOLDER_REJECTION_FINAL`, and `error.details.reject_reason` carries the
|
|
6226
|
+
* vendor's reason; no card can be issued for this identity.
|
|
6227
|
+
*
|
|
6218
6228
|
* **Idempotency**: while a review is running, or once the cardholder is live, another
|
|
6219
6229
|
* submit returns `409 CARDHOLDER_NOT_DRAFT` rather than spending a second review.
|
|
6220
6230
|
*
|
|
@@ -6275,7 +6285,7 @@ export interface paths {
|
|
|
6275
6285
|
};
|
|
6276
6286
|
content?: never;
|
|
6277
6287
|
};
|
|
6278
|
-
/** @description Cardholder is live at the vendor, or its review is still running. On a program that issues under the wallet's company: `WALLET_BUSINESS_NOT_ONBOARDED` (the wallet's business has not been registered with the card issuer) or `WALLET_BUSINESS_NOT_APPROVED` (its review is not approved yet). */
|
|
6288
|
+
/** @description Cardholder is live at the vendor, or its review is still running (`CARDHOLDER_NOT_DRAFT`). Its rejection is final and cannot be answered by a resubmit (`CARDHOLDER_REJECTION_FINAL`, `error.details.reject_reason`). On a program that issues under the wallet's company: `WALLET_BUSINESS_NOT_ONBOARDED` (the wallet's business has not been registered with the card issuer) or `WALLET_BUSINESS_NOT_APPROVED` (its review is not approved yet). */
|
|
6279
6289
|
409: {
|
|
6280
6290
|
headers: {
|
|
6281
6291
|
[name: string]: unknown;
|
|
@@ -10463,6 +10473,125 @@ export interface paths {
|
|
|
10463
10473
|
patch?: never;
|
|
10464
10474
|
trace?: never;
|
|
10465
10475
|
};
|
|
10476
|
+
"/frontend/promo-codes/redeem": {
|
|
10477
|
+
parameters: {
|
|
10478
|
+
query?: never;
|
|
10479
|
+
header?: never;
|
|
10480
|
+
path?: never;
|
|
10481
|
+
cookie?: never;
|
|
10482
|
+
};
|
|
10483
|
+
get?: never;
|
|
10484
|
+
put?: never;
|
|
10485
|
+
/**
|
|
10486
|
+
* Apply a promo code
|
|
10487
|
+
* @description Moves the user to the user group (tariff) of the tenant's promo code, records the redemption and counts one use of the code. If a step fails, the earlier ones are undone and the request fails.
|
|
10488
|
+
* A user applies the same code once; another code can be applied later and moves the user again.
|
|
10489
|
+
* A code of another tenant, or a deleted one, is reported as not found.
|
|
10490
|
+
*
|
|
10491
|
+
*/
|
|
10492
|
+
post: {
|
|
10493
|
+
parameters: {
|
|
10494
|
+
query?: never;
|
|
10495
|
+
header?: never;
|
|
10496
|
+
path?: never;
|
|
10497
|
+
cookie?: never;
|
|
10498
|
+
};
|
|
10499
|
+
requestBody: {
|
|
10500
|
+
content: {
|
|
10501
|
+
"application/json": {
|
|
10502
|
+
/**
|
|
10503
|
+
* @description The promo code; case does not matter, surrounding spaces are trimmed. 3–32 characters `A–Z`, `0–9`, `-`, `_`.
|
|
10504
|
+
* @example summer-26
|
|
10505
|
+
*/
|
|
10506
|
+
code: string;
|
|
10507
|
+
};
|
|
10508
|
+
};
|
|
10509
|
+
};
|
|
10510
|
+
responses: {
|
|
10511
|
+
/** @description The code was applied. */
|
|
10512
|
+
200: {
|
|
10513
|
+
headers: {
|
|
10514
|
+
[name: string]: unknown;
|
|
10515
|
+
};
|
|
10516
|
+
content: {
|
|
10517
|
+
/** @example {
|
|
10518
|
+
* "success": true,
|
|
10519
|
+
* "data": {
|
|
10520
|
+
* "code": "SUMMER-26",
|
|
10521
|
+
* "user_group": {
|
|
10522
|
+
* "id": "4b1c0a52-7d0e-4f0b-9a55-2f4f3c6a1e10",
|
|
10523
|
+
* "name": "Partners"
|
|
10524
|
+
* },
|
|
10525
|
+
* "redeemed_at": "2026-10-26T13:05:00.000Z"
|
|
10526
|
+
* }
|
|
10527
|
+
* } */
|
|
10528
|
+
"application/json": {
|
|
10529
|
+
/** @example true */
|
|
10530
|
+
success: boolean;
|
|
10531
|
+
data: components["schemas"]["PromoCodeRedemption"];
|
|
10532
|
+
};
|
|
10533
|
+
};
|
|
10534
|
+
};
|
|
10535
|
+
/** @description No `code`, or a code of the wrong format (`VALIDATION_ERROR`). */
|
|
10536
|
+
400: {
|
|
10537
|
+
headers: {
|
|
10538
|
+
[name: string]: unknown;
|
|
10539
|
+
};
|
|
10540
|
+
content: {
|
|
10541
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
10542
|
+
};
|
|
10543
|
+
};
|
|
10544
|
+
401: components["responses"]["UnauthorizedError"];
|
|
10545
|
+
/** @description The tenant has no such promo code, or it was deleted (`PROMO_CODE_NOT_FOUND`). */
|
|
10546
|
+
404: {
|
|
10547
|
+
headers: {
|
|
10548
|
+
[name: string]: unknown;
|
|
10549
|
+
};
|
|
10550
|
+
content: {
|
|
10551
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
10552
|
+
};
|
|
10553
|
+
};
|
|
10554
|
+
/** @description The code cannot be applied:
|
|
10555
|
+
* - `PROMO_CODE_NOT_ACTIVE` — `error.details.reason` says why: `PAUSED` (paused by the operator), `EXPIRED` (past its expiry), `EXHAUSTED` (no uses left), `NO_GROUP` (its user group was deleted);
|
|
10556
|
+
* - `PROMO_CODE_ALREADY_REDEEMED` — the user has applied this code before;
|
|
10557
|
+
* - `PROMO_CODE_GROUP_ALREADY_ASSIGNED` — the user is already in the code's user group (a user without a group of their own is in the tenant's default group);
|
|
10558
|
+
* - `OPERATION_IN_PROGRESS` or `CONFLICT` — another application for the user, or many for the code, ran at the same moment; retry.
|
|
10559
|
+
* */
|
|
10560
|
+
409: {
|
|
10561
|
+
headers: {
|
|
10562
|
+
[name: string]: unknown;
|
|
10563
|
+
};
|
|
10564
|
+
content: {
|
|
10565
|
+
/** @example {
|
|
10566
|
+
* "success": false,
|
|
10567
|
+
* "error": {
|
|
10568
|
+
* "code": "PROMO_CODE_NOT_ACTIVE",
|
|
10569
|
+
* "message": "This promo code has been used up",
|
|
10570
|
+
* "details": {
|
|
10571
|
+
* "reason": "EXHAUSTED"
|
|
10572
|
+
* }
|
|
10573
|
+
* }
|
|
10574
|
+
* } */
|
|
10575
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
10576
|
+
};
|
|
10577
|
+
};
|
|
10578
|
+
/** @description More than 10 failed attempts in an hour (`RATE_LIMIT_EXCEEDED`); a successful redemption does not count. Retry after the window ends. */
|
|
10579
|
+
429: {
|
|
10580
|
+
headers: {
|
|
10581
|
+
[name: string]: unknown;
|
|
10582
|
+
};
|
|
10583
|
+
content: {
|
|
10584
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
10585
|
+
};
|
|
10586
|
+
};
|
|
10587
|
+
};
|
|
10588
|
+
};
|
|
10589
|
+
delete?: never;
|
|
10590
|
+
options?: never;
|
|
10591
|
+
head?: never;
|
|
10592
|
+
patch?: never;
|
|
10593
|
+
trace?: never;
|
|
10594
|
+
};
|
|
10466
10595
|
"/frontend/reference/currencies": {
|
|
10467
10596
|
parameters: {
|
|
10468
10597
|
query?: never;
|
|
@@ -11418,7 +11547,8 @@ export interface paths {
|
|
|
11418
11547
|
*
|
|
11419
11548
|
* The same report (type, format and params) asked again while the first one is
|
|
11420
11549
|
* still being generated returns that first report with 200 instead of starting
|
|
11421
|
-
* another.
|
|
11550
|
+
* another. The order of `card_ids` counts: the same cards in another order are
|
|
11551
|
+
* another report. Up to 3 reports of a wallet are generated at once.
|
|
11422
11552
|
*
|
|
11423
11553
|
*/
|
|
11424
11554
|
post: {
|
|
@@ -15881,11 +16011,17 @@ export interface paths {
|
|
|
15881
16011
|
* @description Puts the wallet on the rail, the way compliance does from the panel: a rail whose vendor CORE onboards
|
|
15882
16012
|
* itself is submitted here, any other goes through the KYC-admin service. A manual rail waits for
|
|
15883
16013
|
* compliance (`WAITING_ON_REVIEW`); a universal rail is approved on the spot. An application the vendor
|
|
15884
|
-
* sent back (`HOLD`, `SOFT_REJECT`) is resubmitted.
|
|
15885
|
-
*
|
|
15886
|
-
*
|
|
15887
|
-
*
|
|
15888
|
-
*
|
|
16014
|
+
* sent back (`HOLD`, `SOFT_REJECT`) is resubmitted.
|
|
16015
|
+
*
|
|
16016
|
+
* Terms: show the rail's `terms_and_conditions` before the submission and send the ids the client ticked as
|
|
16017
|
+
* `accepted_terms`. Every active document of the rail must be among them, or nothing is submitted
|
|
16018
|
+
* (`400 TERMS_NOT_ACCEPTED`). The acceptance is recorded on the application at the time of the submission
|
|
16019
|
+
* (`wallet_rail.terms_confirmed`, the documents in `wallet_rail.terms_and_conditions`), and a vendor that takes
|
|
16020
|
+
* an acceptance date is sent the same time; an account the vendor already holds may keep the date it recorded
|
|
16021
|
+
* first. Without `accepted_terms` (or without a body, or `null`) the submission goes as before and the terms are
|
|
16022
|
+
* accepted later with `POST …/terms-and-conditions` — except on a rail that requires the terms with the
|
|
16023
|
+
* submission (set per rail by the operator): there it is refused (`400 TERMS_NOT_ACCEPTED`). Always send
|
|
16024
|
+
* `accepted_terms` to a rail with terms.
|
|
15889
16025
|
*
|
|
15890
16026
|
* Refused unless the rail has an onboarding implementation (retired rails never do), takes submissions,
|
|
15891
16027
|
* fits the entity type, and the entity's KYC is `APPROVED` — an entity still under review
|
|
@@ -15908,7 +16044,17 @@ export interface paths {
|
|
|
15908
16044
|
};
|
|
15909
16045
|
cookie?: never;
|
|
15910
16046
|
};
|
|
15911
|
-
requestBody?:
|
|
16047
|
+
requestBody?: {
|
|
16048
|
+
content: {
|
|
16049
|
+
"application/json": {
|
|
16050
|
+
/** @description Ids of the rail's `terms_and_conditions` the client accepted with this submission. On a rail with
|
|
16051
|
+
* terms an empty list is a refusal (`400 TERMS_NOT_ACCEPTED`), not an absence of the field; on a
|
|
16052
|
+
* rail that requires the terms, so is the absence.
|
|
16053
|
+
* */
|
|
16054
|
+
accepted_terms?: string[] | null;
|
|
16055
|
+
};
|
|
16056
|
+
};
|
|
16057
|
+
};
|
|
15912
16058
|
responses: {
|
|
15913
16059
|
/** @description The rail after the submission */
|
|
15914
16060
|
200: {
|
|
@@ -15919,14 +16065,17 @@ export interface paths {
|
|
|
15919
16065
|
"application/json": components["schemas"]["WalletKycRailResponse"];
|
|
15920
16066
|
};
|
|
15921
16067
|
};
|
|
15922
|
-
/** @description `VALIDATION_ERROR` — `rail_id` is not a UUID (a message only)
|
|
15923
|
-
*
|
|
15924
|
-
*
|
|
16068
|
+
/** @description `VALIDATION_ERROR` — `rail_id` is not a UUID (a message only), or `accepted_terms` is not an array of uuids
|
|
16069
|
+
* (`details.issues`);
|
|
16070
|
+
* `RAIL_NOT_AVAILABLE` — the rail has no onboarding implementation, or is a universal rail other than the
|
|
16071
|
+
* tenant's default on a tenant without KYC; `RAIL_SUBMIT_UNAVAILABLE` — the rail takes no submissions; `RAIL_TYPE_MISMATCH` — the rail is of
|
|
15925
16072
|
* the other entity type; `RAIL_SUBMISSION_REJECTED` — the onboarding behind the rail refused the
|
|
15926
16073
|
* submission (the vendor's reason is logged, never returned); `RAIL_REQUIREMENTS_INCOMPLETE` — on a
|
|
15927
16074
|
* tenant of the KYC forms flow, the KYC entity misses saved values of required fields of the rail's form
|
|
15928
16075
|
* (a draft does not count): `details.fields` lists their keys, open
|
|
15929
|
-
* `GET /frontend/kyc/entities/{entity_id}/forms?rails={rail_id}` and fill them
|
|
16076
|
+
* `GET /frontend/kyc/entities/{entity_id}/forms?rails={rail_id}` and fill them; `TERMS_NOT_ACCEPTED` —
|
|
16077
|
+
* `accepted_terms` misses an active terms document of the rail, or is absent on a rail that requires the
|
|
16078
|
+
* terms; nothing was submitted
|
|
15930
16079
|
* */
|
|
15931
16080
|
400: {
|
|
15932
16081
|
headers: {
|
|
@@ -16421,7 +16570,7 @@ export interface paths {
|
|
|
16421
16570
|
};
|
|
16422
16571
|
/**
|
|
16423
16572
|
* The form of an entity for a set of purposes
|
|
16424
|
-
* @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
|
|
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.
|
|
16425
16574
|
*/
|
|
16426
16575
|
get: {
|
|
16427
16576
|
parameters: {
|
|
@@ -16430,7 +16579,7 @@ export interface paths {
|
|
|
16430
16579
|
rails?: components["parameters"]["KycFormsRails"];
|
|
16431
16580
|
/** @description `issuing_programs.id` of the tenant the form is for, as a native query array: `programs[]=a&programs[]=b` or `programs=a&programs=b`. One program alone: the form before a card of that program (`scope: card`). Together with `rails` or several at once: the multi form. Only a personal entity has card forms (`400 FORM_TARGET_UNSUPPORTED` on a business entity); `wallet_id` is required whenever programs are named. A program the tenant does not have is `404 NOT_FOUND`. */
|
|
16432
16581
|
programs?: components["parameters"]["KycFormsPrograms"];
|
|
16433
|
-
/** @description The wallet the
|
|
16582
|
+
/** @description The wallet the card is for — required when `programs` are named (`400 INVALID_REQUEST` without it), ignored otherwise. The entity's owner must be an active member of it (any role; the cardholder is theirs), and so must the caller when it is someone else, else `403 ACCESS_DENIED`. The form is built for this wallet, and the draft and the submission carry it. Not a uuid: `400 VALIDATION_ERROR`. */
|
|
16434
16583
|
wallet_id?: components["parameters"]["KycFormsWalletId"];
|
|
16435
16584
|
/** @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. */
|
|
16436
16585
|
locale?: components["parameters"]["KycFormsLocale"];
|
|
@@ -16456,7 +16605,7 @@ export interface paths {
|
|
|
16456
16605
|
"application/json": components["schemas"]["KycFormsFormResponse"];
|
|
16457
16606
|
};
|
|
16458
16607
|
};
|
|
16459
|
-
/** @description `VALIDATION_ERROR` — `entity_id`, `wallet_id` or an id in `rails` / `programs` is not a uuid (a message only); `FORM_TARGET_UNSUPPORTED` — a card program named on a business entity; `INVALID_REQUEST` — `wallet_id` missing for a form over card programs; `
|
|
16608
|
+
/** @description `VALIDATION_ERROR` — `entity_id`, `wallet_id` or an id in `rails` / `programs` is not a uuid (a message only); `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 still runs KYC through the BFF */
|
|
16460
16609
|
400: {
|
|
16461
16610
|
headers: {
|
|
16462
16611
|
[name: string]: unknown;
|
|
@@ -16497,7 +16646,7 @@ export interface paths {
|
|
|
16497
16646
|
get?: never;
|
|
16498
16647
|
/**
|
|
16499
16648
|
* Save the draft of a form
|
|
16500
|
-
* @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
|
|
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.
|
|
16501
16650
|
*/
|
|
16502
16651
|
put: {
|
|
16503
16652
|
parameters: {
|
|
@@ -16506,7 +16655,7 @@ export interface paths {
|
|
|
16506
16655
|
rails?: components["parameters"]["KycFormsRails"];
|
|
16507
16656
|
/** @description `issuing_programs.id` of the tenant the form is for, as a native query array: `programs[]=a&programs[]=b` or `programs=a&programs=b`. One program alone: the form before a card of that program (`scope: card`). Together with `rails` or several at once: the multi form. Only a personal entity has card forms (`400 FORM_TARGET_UNSUPPORTED` on a business entity); `wallet_id` is required whenever programs are named. A program the tenant does not have is `404 NOT_FOUND`. */
|
|
16508
16657
|
programs?: components["parameters"]["KycFormsPrograms"];
|
|
16509
|
-
/** @description The wallet the
|
|
16658
|
+
/** @description The wallet the card is for — required when `programs` are named (`400 INVALID_REQUEST` without it), ignored otherwise. The entity's owner must be an active member of it (any role; the cardholder is theirs), and so must the caller when it is someone else, else `403 ACCESS_DENIED`. The form is built for this wallet, and the draft and the submission carry it. Not a uuid: `400 VALIDATION_ERROR`. */
|
|
16510
16659
|
wallet_id?: components["parameters"]["KycFormsWalletId"];
|
|
16511
16660
|
/** @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. */
|
|
16512
16661
|
locale?: components["parameters"]["KycFormsLocale"];
|
|
@@ -16548,7 +16697,7 @@ export interface paths {
|
|
|
16548
16697
|
"application/json": components["schemas"]["ErrorResponse"];
|
|
16549
16698
|
};
|
|
16550
16699
|
};
|
|
16551
|
-
/** @description `FORM_LOCKED` — the form is read-only by the application status, or its last submission waits on the verification or the review; `FORM_OUTDATED` — `schema_version` is not the one the form has now
|
|
16700
|
+
/** @description `FORM_LOCKED` — the form is read-only by the application status, or its last submission waits on the verification or the review; `FORM_OUTDATED` — `schema_version` is not the one the form has now, reload it (`GET …/forms`) and send again; `KYC_FORM_CONDITIONS_CYCLE` — the tenant's form settings show fields on conditions that read each other in a circle */
|
|
16552
16701
|
409: {
|
|
16553
16702
|
headers: {
|
|
16554
16703
|
[name: string]: unknown;
|
|
@@ -16586,7 +16735,7 @@ export interface paths {
|
|
|
16586
16735
|
rails?: components["parameters"]["KycFormsRails"];
|
|
16587
16736
|
/** @description `issuing_programs.id` of the tenant the form is for, as a native query array: `programs[]=a&programs[]=b` or `programs=a&programs=b`. One program alone: the form before a card of that program (`scope: card`). Together with `rails` or several at once: the multi form. Only a personal entity has card forms (`400 FORM_TARGET_UNSUPPORTED` on a business entity); `wallet_id` is required whenever programs are named. A program the tenant does not have is `404 NOT_FOUND`. */
|
|
16588
16737
|
programs?: components["parameters"]["KycFormsPrograms"];
|
|
16589
|
-
/** @description The wallet the
|
|
16738
|
+
/** @description The wallet the card is for — required when `programs` are named (`400 INVALID_REQUEST` without it), ignored otherwise. The entity's owner must be an active member of it (any role; the cardholder is theirs), and so must the caller when it is someone else, else `403 ACCESS_DENIED`. The form is built for this wallet, and the draft and the submission carry it. Not a uuid: `400 VALIDATION_ERROR`. */
|
|
16590
16739
|
wallet_id?: components["parameters"]["KycFormsWalletId"];
|
|
16591
16740
|
/** @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. */
|
|
16592
16741
|
locale?: components["parameters"]["KycFormsLocale"];
|
|
@@ -16694,7 +16843,7 @@ export interface paths {
|
|
|
16694
16843
|
rails?: components["parameters"]["KycFormsRails"];
|
|
16695
16844
|
/** @description `issuing_programs.id` of the tenant the form is for, as a native query array: `programs[]=a&programs[]=b` or `programs=a&programs=b`. One program alone: the form before a card of that program (`scope: card`). Together with `rails` or several at once: the multi form. Only a personal entity has card forms (`400 FORM_TARGET_UNSUPPORTED` on a business entity); `wallet_id` is required whenever programs are named. A program the tenant does not have is `404 NOT_FOUND`. */
|
|
16696
16845
|
programs?: components["parameters"]["KycFormsPrograms"];
|
|
16697
|
-
/** @description The wallet the
|
|
16846
|
+
/** @description The wallet the card is for — required when `programs` are named (`400 INVALID_REQUEST` without it), ignored otherwise. The entity's owner must be an active member of it (any role; the cardholder is theirs), and so must the caller when it is someone else, else `403 ACCESS_DENIED`. The form is built for this wallet, and the draft and the submission carry it. Not a uuid: `400 VALIDATION_ERROR`. */
|
|
16698
16847
|
wallet_id?: components["parameters"]["KycFormsWalletId"];
|
|
16699
16848
|
};
|
|
16700
16849
|
header?: never;
|
|
@@ -16762,7 +16911,7 @@ export interface paths {
|
|
|
16762
16911
|
put?: never;
|
|
16763
16912
|
/**
|
|
16764
16913
|
* Send a form
|
|
16765
|
-
* @description The form is the one `rails` and `programs` name. The full check of every open field (all errors in one `VALIDATION_ERROR`)
|
|
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.
|
|
16766
16915
|
*/
|
|
16767
16916
|
post: {
|
|
16768
16917
|
parameters: {
|
|
@@ -16771,7 +16920,7 @@ export interface paths {
|
|
|
16771
16920
|
rails?: components["parameters"]["KycFormsRails"];
|
|
16772
16921
|
/** @description `issuing_programs.id` of the tenant the form is for, as a native query array: `programs[]=a&programs[]=b` or `programs=a&programs=b`. One program alone: the form before a card of that program (`scope: card`). Together with `rails` or several at once: the multi form. Only a personal entity has card forms (`400 FORM_TARGET_UNSUPPORTED` on a business entity); `wallet_id` is required whenever programs are named. A program the tenant does not have is `404 NOT_FOUND`. */
|
|
16773
16922
|
programs?: components["parameters"]["KycFormsPrograms"];
|
|
16774
|
-
/** @description The wallet the
|
|
16923
|
+
/** @description The wallet the card is for — required when `programs` are named (`400 INVALID_REQUEST` without it), ignored otherwise. The entity's owner must be an active member of it (any role; the cardholder is theirs), and so must the caller when it is someone else, else `403 ACCESS_DENIED`. The form is built for this wallet, and the draft and the submission carry it. Not a uuid: `400 VALIDATION_ERROR`. */
|
|
16775
16924
|
wallet_id?: components["parameters"]["KycFormsWalletId"];
|
|
16776
16925
|
/** @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. */
|
|
16777
16926
|
locale?: components["parameters"]["KycFormsLocale"];
|
|
@@ -16788,7 +16937,7 @@ export interface paths {
|
|
|
16788
16937
|
};
|
|
16789
16938
|
requestBody: {
|
|
16790
16939
|
content: {
|
|
16791
|
-
"application/json": components["schemas"]["
|
|
16940
|
+
"application/json": components["schemas"]["KycFormsAnswersRequest"];
|
|
16792
16941
|
};
|
|
16793
16942
|
};
|
|
16794
16943
|
responses: {
|
|
@@ -16801,7 +16950,7 @@ export interface paths {
|
|
|
16801
16950
|
"application/json": components["schemas"]["KycFormsFormResponse"];
|
|
16802
16951
|
};
|
|
16803
16952
|
};
|
|
16804
|
-
400: components["responses"]["
|
|
16953
|
+
400: components["responses"]["KycFormsFieldErrors"];
|
|
16805
16954
|
401: components["responses"]["UnauthorizedError"];
|
|
16806
16955
|
403: components["responses"]["KycFormsAccessDenied"];
|
|
16807
16956
|
/** @description `NOT_FOUND` — the entity does not exist or belongs to another tenant, or a rail / program of the query does not exist for the tenant */
|
|
@@ -16813,7 +16962,7 @@ export interface paths {
|
|
|
16813
16962
|
"application/json": components["schemas"]["ErrorResponse"];
|
|
16814
16963
|
};
|
|
16815
16964
|
};
|
|
16816
|
-
/** @description `FORM_LOCKED` — the form is read-only by the application status, or its last submission waits on the verification or the review; `FORM_OUTDATED` — `schema_version` is not the one the form has now
|
|
16965
|
+
/** @description `FORM_LOCKED` — the form is read-only by the application status, or its last submission waits on the verification or the review; `FORM_OUTDATED` — `schema_version` is not the one the form has now, reload it (`GET …/forms`) and send again; `OPERATION_IN_PROGRESS` — a submission of this form is already running; `KYC_FORM_CONDITIONS_CYCLE` — the tenant's form settings show fields on conditions that read each other in a circle */
|
|
16817
16966
|
409: {
|
|
16818
16967
|
headers: {
|
|
16819
16968
|
[name: string]: unknown;
|
|
@@ -19303,7 +19452,7 @@ export interface components {
|
|
|
19303
19452
|
*/
|
|
19304
19453
|
type: "individual" | "business" | "universal";
|
|
19305
19454
|
/**
|
|
19306
|
-
* @description KYC verification status. A refusal is one of three values: `DECLINED`, `REJECT` or `SOFT_REJECT`. Only `APPROVED` (full access) and `HOLD` (read-only) open the wallet. `OFFBOARDED` — final: the work with this company or person is over; `EXPIRED` — the
|
|
19455
|
+
* @description KYC verification status. A refusal is one of three values: `DECLINED`, `REJECT` or `SOFT_REJECT`. Only `APPROVED` (full access) and `HOLD` (read-only) open the wallet. `OFFBOARDED` — final: the work with this company or person is over; `EXPIRED` — no activity on the application for over three months; a check passed on it brings it back.
|
|
19307
19456
|
* @enum {string}
|
|
19308
19457
|
*/
|
|
19309
19458
|
status: "APPROVED" | "DECLINED" | "PENDING" | "PROCESSING" | "HOLD" | "NEEDS_ATTENTION" | "DOUBLE" | "SOFT_REJECT" | "REJECT" | "UNVERIFIED" | "WAITING_ON_UBOS" | "WAITING_ON_REVIEW" | "EXPIRED" | "OFFBOARDED";
|
|
@@ -19315,6 +19464,11 @@ export interface components {
|
|
|
19315
19464
|
};
|
|
19316
19465
|
/** @description A terms-and-conditions document of a KYC rail. */
|
|
19317
19466
|
WalletKycRailTerms: {
|
|
19467
|
+
/**
|
|
19468
|
+
* Format: uuid
|
|
19469
|
+
* @description Send it in `accepted_terms` of `POST /frontend/wallets/{wallet_id}/kyc-rails/{rail_id}` once the client ticked the document.
|
|
19470
|
+
*/
|
|
19471
|
+
id: string;
|
|
19318
19472
|
title: string;
|
|
19319
19473
|
description: string | null;
|
|
19320
19474
|
link: string | null;
|
|
@@ -19949,6 +20103,25 @@ export interface components {
|
|
|
19949
20103
|
category: "TRANSACTIONS" | "COMPLIANCE" | "ANNOUNCEMENTS" | "SYSTEM" | "SECURITY";
|
|
19950
20104
|
enabled: boolean;
|
|
19951
20105
|
};
|
|
20106
|
+
PromoCodeRedemption: {
|
|
20107
|
+
/**
|
|
20108
|
+
* @description The code as stored — upper case.
|
|
20109
|
+
* @example SUMMER-26
|
|
20110
|
+
*/
|
|
20111
|
+
code: string;
|
|
20112
|
+
/** @description The user group (tariff) the user is in now. */
|
|
20113
|
+
user_group: {
|
|
20114
|
+
/** Format: uuid */
|
|
20115
|
+
id: string;
|
|
20116
|
+
/** @example Partners */
|
|
20117
|
+
name: string;
|
|
20118
|
+
};
|
|
20119
|
+
/**
|
|
20120
|
+
* Format: date-time
|
|
20121
|
+
* @description When the code was applied.
|
|
20122
|
+
*/
|
|
20123
|
+
redeemed_at: string;
|
|
20124
|
+
};
|
|
19952
20125
|
ReferralLevelRate: {
|
|
19953
20126
|
/** @example TRANSFER_CARD_SUBACCOUNT */
|
|
19954
20127
|
order_type?: string;
|
|
@@ -20135,7 +20308,7 @@ export interface components {
|
|
|
20135
20308
|
source: "DEBIT_CARD";
|
|
20136
20309
|
from: components["schemas"]["ReportPeriodFrom"];
|
|
20137
20310
|
to: components["schemas"]["ReportPeriodTo"];
|
|
20138
|
-
/** @description Cards of the wallet (the id the card endpoints take), in the order their rows follow one another. A card of another wallet → 404 REPORT_SUBJECT_NOT_FOUND. */
|
|
20311
|
+
/** @description Cards of the wallet (the id the card endpoints take), in the order their rows follow one another; the order is kept as asked and a repeated id is dropped (the first stays). The same cards in another order are another report. A card of another wallet → 404 REPORT_SUBJECT_NOT_FOUND. */
|
|
20139
20312
|
card_ids: string[];
|
|
20140
20313
|
};
|
|
20141
20314
|
/** @description Transaction statement → Account cards — the transactions of a sub-account (card program) of the wallet. Formats CSV, XLSX. Period up to 100 days. */
|
|
@@ -20199,7 +20372,7 @@ export interface components {
|
|
|
20199
20372
|
status?: "PENDING" | "GENERATING" | "READY" | "FAILED";
|
|
20200
20373
|
params?: components["schemas"]["WalletReportParams"];
|
|
20201
20374
|
/**
|
|
20202
|
-
* @description TIMEOUT — the attempt was still generating 30 minutes after it was queued; it is failed on the wallet's next report request.
|
|
20375
|
+
* @description GENERATION_ERROR — the run failed, or the report has nothing to show (e.g. Account details of an account with no deposit details); TIMEOUT — the attempt was still generating 30 minutes after it was queued; it is failed on the wallet's next report request.
|
|
20203
20376
|
* @enum {string|null}
|
|
20204
20377
|
*/
|
|
20205
20378
|
failure_code?: "GENERATION_ERROR" | "QUEUE_ERROR" | "TIMEOUT" | null;
|
|
@@ -20325,21 +20498,27 @@ export interface components {
|
|
|
20325
20498
|
success: boolean;
|
|
20326
20499
|
data: components["schemas"]["WalletKycRail"];
|
|
20327
20500
|
};
|
|
20328
|
-
/** @description The error envelope of a rail submission: `ErrorResponse`, with `details` only on `RAIL_REQUIREMENTS_INCOMPLETE
|
|
20501
|
+
/** @description The error envelope of a rail submission: `ErrorResponse`, with `details` only on `RAIL_REQUIREMENTS_INCOMPLETE` (`fields`) and on a `VALIDATION_ERROR` of `accepted_terms` (`issues`). */
|
|
20329
20502
|
WalletKycRailSubmitErrorResponse: components["schemas"]["ErrorResponse"] & {
|
|
20330
20503
|
error?: {
|
|
20331
|
-
/** @description
|
|
20504
|
+
/** @description Absent on every other code. `RAIL_REQUIREMENTS_INCOMPLETE`: `fields` lists the keys of the required fields of the rail's form with nothing saved in the KYC entity yet, in form order — the `key` of the fields `GET /frontend/kyc/entities/{entity_id}/forms?rails={rail_id}` answers (`address.city`, `document.proof_of_address`, `beneficial_owners`, …). Open that form and highlight them; a draft or a submission still in review does not count until it is applied. `VALIDATION_ERROR` of `accepted_terms`: `issues` names each problem (`field`, e.g. `accepted_terms.0`, and `message`); a bad `rail_id` carries a message only. */
|
|
20332
20505
|
details?: {
|
|
20333
20506
|
/** @example [
|
|
20334
20507
|
* "expected_monthly_volume",
|
|
20335
20508
|
* "document.proof_of_address"
|
|
20336
20509
|
* ] */
|
|
20337
|
-
fields
|
|
20510
|
+
fields?: string[];
|
|
20511
|
+
issues?: {
|
|
20512
|
+
/** @example accepted_terms.0 */
|
|
20513
|
+
field?: string;
|
|
20514
|
+
/** @example accepted_terms must hold terms ids (UUID) */
|
|
20515
|
+
message?: string;
|
|
20516
|
+
}[];
|
|
20338
20517
|
} | null;
|
|
20339
20518
|
};
|
|
20340
20519
|
};
|
|
20341
20520
|
/**
|
|
20342
|
-
* @description Raw application status of the KYC entity (`kyc_entity.status`) — the same value the wallet shows as `kyc_info.status` (`WalletKycInfo`); a rail application (`wallet_rail.status`) has its own status of the same set. Build screens by the overview `stage`, not by this value: a status can be added without a release. `PROCESSING` is not set by the forms flow — a vendor sync of the old flow leaves it on an entity — and the overview answers `stage: unknown` for it, as for any status it does not know. `EXPIRED` (
|
|
20521
|
+
* @description Raw application status of the KYC entity (`kyc_entity.status`) — the same value the wallet shows as `kyc_info.status` (`WalletKycInfo`); a rail application (`wallet_rail.status`) has its own status of the same set. Build screens by the overview `stage`, not by this value: a status can be added without a release. `PROCESSING` is not set by the forms flow — a vendor sync of the old flow leaves it on an entity — and the overview answers `stage: unknown` for it, as for any status it does not know. `EXPIRED` (no activity on the application for over three months) and `OFFBOARDED` (compliance ended the relationship; final) are set in CORE, never by the identity provider. No form moves either, and no provider event moves `OFFBOARDED`. An `EXPIRED` application comes back once its verification is heard from again — a person's when their identity check passes, a business's on any check outcome of the filler or an owner while the filler's own check stands passed — and goes on to its owners (`WAITING_ON_UBOS`) or to compliance (`WAITING_ON_REVIEW`), never approved by itself.
|
|
20343
20522
|
* @enum {string}
|
|
20344
20523
|
*/
|
|
20345
20524
|
KycFormsEntityStatus: "UNVERIFIED" | "PENDING" | "PROCESSING" | "WAITING_ON_REVIEW" | "WAITING_ON_UBOS" | "NEEDS_ATTENTION" | "HOLD" | "APPROVED" | "SOFT_REJECT" | "REJECT" | "DECLINED" | "DOUBLE" | "EXPIRED" | "OFFBOARDED";
|
|
@@ -20594,23 +20773,6 @@ export interface components {
|
|
|
20594
20773
|
add_label: string;
|
|
20595
20774
|
};
|
|
20596
20775
|
};
|
|
20597
|
-
/** @description The terms of one rail of the form: a rail the form names, or the rail of one of its card programs — one group per rail, the programs that go through it listed with it. Draw one checkbox per group that accepts all of its `items`; send their ids in `accepted_terms` of `POST …/forms/submit`. */
|
|
20598
|
-
KycFormsTerms: {
|
|
20599
|
-
/** Format: uuid */
|
|
20600
|
-
rail_id: string;
|
|
20601
|
-
/** @description The card programs of the form that go through this rail; empty when only the rail itself is named. */
|
|
20602
|
-
program_ids: string[];
|
|
20603
|
-
/** @description The rail's active terms documents in display order; empty when the rail has none — nothing to accept. */
|
|
20604
|
-
items: {
|
|
20605
|
-
/** Format: uuid */
|
|
20606
|
-
id: string;
|
|
20607
|
-
/** @example Cardholder Agreement */
|
|
20608
|
-
title: string;
|
|
20609
|
-
description: string | null;
|
|
20610
|
-
/** @example https://example.com/terms.pdf */
|
|
20611
|
-
link: string | null;
|
|
20612
|
-
}[];
|
|
20613
|
-
};
|
|
20614
20776
|
KycFormsForm: {
|
|
20615
20777
|
/**
|
|
20616
20778
|
* @description What the form is for: the base form, a rail, a card program (`card`), or one form over several rails and programs (`multi`).
|
|
@@ -20623,7 +20785,7 @@ export interface components {
|
|
|
20623
20785
|
programs: string[];
|
|
20624
20786
|
/**
|
|
20625
20787
|
* Format: uuid
|
|
20626
|
-
* @description The wallet the form is built for: the `wallet_id` of the query for a form over card programs
|
|
20788
|
+
* @description The wallet the form is built for: the `wallet_id` of the query for a form over card programs; for any other form the entity's first linked wallet (main wallet first), null when the entity is linked to none. The draft and the submission carry it.
|
|
20627
20789
|
*/
|
|
20628
20790
|
wallet_id: string | null;
|
|
20629
20791
|
/** @enum {string} */
|
|
@@ -20634,7 +20796,7 @@ export interface components {
|
|
|
20634
20796
|
*/
|
|
20635
20797
|
locale: string;
|
|
20636
20798
|
/**
|
|
20637
|
-
* @description Hash of the form composition (keys, requiredness, conditions, list item fields
|
|
20799
|
+
* @description Hash of the form composition (keys, requiredness, conditions, list item fields; not the texts); echo it back in the draft and the submission. It can change between the load and the send: `409 FORM_OUTDATED`.
|
|
20638
20800
|
* @example b3f1c2a9
|
|
20639
20801
|
*/
|
|
20640
20802
|
schema_version: string;
|
|
@@ -20663,31 +20825,6 @@ export interface components {
|
|
|
20663
20825
|
description: string | null;
|
|
20664
20826
|
fields: components["schemas"]["KycFormsField"][];
|
|
20665
20827
|
}[];
|
|
20666
|
-
/**
|
|
20667
|
-
* @description The terms the client accepts with the form, one group per rail of the form: the rails named first, then the rail of each card program. Empty for the base form; a program without a rail adds none. The documents are those in force now: a change after the load answers the submission `409 FORM_OUTDATED`.
|
|
20668
|
-
* @example [
|
|
20669
|
-
* {
|
|
20670
|
-
* "rail_id": "a38b9a0c-5d1e-4f2a-8b3c-4d5e6f708192",
|
|
20671
|
-
* "program_ids": [
|
|
20672
|
-
* "d94ef320-1a2b-4c3d-8e4f-5a6b7c8d9e0f"
|
|
20673
|
-
* ],
|
|
20674
|
-
* "items": [
|
|
20675
|
-
* {
|
|
20676
|
-
* "id": "0c1d2e3f-4a5b-4c6d-8e7f-90a1b2c3d4e5",
|
|
20677
|
-
* "title": "Cardholder Agreement",
|
|
20678
|
-
* "description": null,
|
|
20679
|
-
* "link": "https://example.com/terms.pdf"
|
|
20680
|
-
* }
|
|
20681
|
-
* ]
|
|
20682
|
-
* },
|
|
20683
|
-
* {
|
|
20684
|
-
* "rail_id": "c1d7fac1-2b3c-4d5e-9f60-718293a4b5c6",
|
|
20685
|
-
* "program_ids": [],
|
|
20686
|
-
* "items": []
|
|
20687
|
-
* }
|
|
20688
|
-
* ]
|
|
20689
|
-
*/
|
|
20690
|
-
terms: components["schemas"]["KycFormsTerms"][];
|
|
20691
20828
|
};
|
|
20692
20829
|
KycFormsFormResponse: {
|
|
20693
20830
|
/** @example true */
|
|
@@ -20733,16 +20870,6 @@ export interface components {
|
|
|
20733
20870
|
[key: string]: components["schemas"]["KycFormsAnswerValue"];
|
|
20734
20871
|
};
|
|
20735
20872
|
};
|
|
20736
|
-
KycFormsSubmitRequest: components["schemas"]["KycFormsAnswersRequest"] & {
|
|
20737
|
-
/**
|
|
20738
|
-
* @description The ids of every terms document of the form (`form.terms[].items[].id`) — the client ticked the checkbox of each group. Required in full when the form has any: one left out answers `400 KYC_TERMS_NOT_ACCEPTED`, an id that is not a uuid or not of this form `400 VALIDATION_ERROR`. A form without terms documents is sent without it. The terms are checked after the fields: while a field is wrong, only the `VALIDATION_ERROR` comes back.
|
|
20739
|
-
* @default []
|
|
20740
|
-
* @example [
|
|
20741
|
-
* "0c1d2e3f-4a5b-4c6d-8e7f-90a1b2c3d4e5"
|
|
20742
|
-
* ]
|
|
20743
|
-
*/
|
|
20744
|
-
accepted_terms: string[];
|
|
20745
|
-
};
|
|
20746
20873
|
KycFormsDraftSaved: {
|
|
20747
20874
|
/** @example true */
|
|
20748
20875
|
success: boolean;
|
|
@@ -20809,7 +20936,7 @@ export interface components {
|
|
|
20809
20936
|
entity_type: "individual" | "business";
|
|
20810
20937
|
status: components["schemas"]["KycFormsEntityStatus"];
|
|
20811
20938
|
/**
|
|
20812
|
-
* @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` —
|
|
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).
|
|
20813
20940
|
* @enum {string}
|
|
20814
20941
|
*/
|
|
20815
20942
|
stage: "not_required" | "not_started" | "incomplete" | "action_required" | "in_review" | "resubmit" | "on_hold" | "verified" | "expired" | "rejected" | "offboarded" | "unknown";
|
|
@@ -21050,18 +21177,11 @@ export interface components {
|
|
|
21050
21177
|
}[];
|
|
21051
21178
|
};
|
|
21052
21179
|
};
|
|
21053
|
-
/** @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].role`, the list as a whole `beneficial_owners`). `FORM_FIELD_NOT_ALLOWED`, `KYC_FORM_CONDITIONS_CYCLE`: `fields` is a list of keys.
|
|
21180
|
+
/** @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].role`, the list as a whole `beneficial_owners`). `FORM_FIELD_NOT_ALLOWED`, `KYC_FORM_CONDITIONS_CYCLE`: `fields` is a list of keys. */
|
|
21054
21181
|
KycFormsErrorDetails: {
|
|
21055
|
-
fields
|
|
21182
|
+
fields: {
|
|
21056
21183
|
[key: string]: string[];
|
|
21057
21184
|
} | string[];
|
|
21058
|
-
/**
|
|
21059
|
-
* @description The ids of the terms documents of the form left out of `accepted_terms`.
|
|
21060
|
-
* @example [
|
|
21061
|
-
* "0c1d2e3f-4a5b-4c6d-8e7f-90a1b2c3d4e5"
|
|
21062
|
-
* ]
|
|
21063
|
-
*/
|
|
21064
|
-
terms?: string[];
|
|
21065
21185
|
};
|
|
21066
21186
|
/** @description The error envelope of the KYC forms: `ErrorResponse` with the `details` of the field errors spelled out. */
|
|
21067
21187
|
KycFormsErrorResponse: components["schemas"]["ErrorResponse"] & {
|
|
@@ -21148,7 +21268,7 @@ export interface components {
|
|
|
21148
21268
|
"application/json": components["schemas"]["ErrorResponse"];
|
|
21149
21269
|
};
|
|
21150
21270
|
};
|
|
21151
|
-
/** @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; `
|
|
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 */
|
|
21152
21272
|
KycFormsFieldErrors: {
|
|
21153
21273
|
headers: {
|
|
21154
21274
|
[name: string]: unknown;
|
|
@@ -21157,15 +21277,6 @@ export interface components {
|
|
|
21157
21277
|
"application/json": components["schemas"]["KycFormsErrorResponse"];
|
|
21158
21278
|
};
|
|
21159
21279
|
};
|
|
21160
|
-
/** @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, `accepted_terms` not a list of at most 200 uuids), an id in `accepted_terms` that is not a terms document of this form, and a path id that is not a uuid; `KYC_TERMS_NOT_ACCEPTED` — `accepted_terms` leaves out a terms document of the form, `details.terms` lists the ids left out, nothing is written; `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_FORM_WALLET_NOT_LINKED` — `wallet_id` of a form over rails is not a wallet of this entity; `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 */
|
|
21161
|
-
KycFormsSubmitErrors: {
|
|
21162
|
-
headers: {
|
|
21163
|
-
[name: string]: unknown;
|
|
21164
|
-
};
|
|
21165
|
-
content: {
|
|
21166
|
-
"application/json": components["schemas"]["KycFormsErrorResponse"];
|
|
21167
|
-
};
|
|
21168
|
-
};
|
|
21169
21280
|
/** @description `KYC_FORM_CONDITIONS_CYCLE` — the tenant's form settings show fields on conditions that read each other in a circle (`details.fields` lists the keys); nothing the client can fix, report it to support */
|
|
21170
21281
|
KycFormsConditionsCycle: {
|
|
21171
21282
|
headers: {
|
|
@@ -21272,7 +21383,7 @@ export interface components {
|
|
|
21272
21383
|
KycFormsRails: string[];
|
|
21273
21384
|
/** @description `issuing_programs.id` of the tenant the form is for, as a native query array: `programs[]=a&programs[]=b` or `programs=a&programs=b`. One program alone: the form before a card of that program (`scope: card`). Together with `rails` or several at once: the multi form. Only a personal entity has card forms (`400 FORM_TARGET_UNSUPPORTED` on a business entity); `wallet_id` is required whenever programs are named. A program the tenant does not have is `404 NOT_FOUND`. */
|
|
21274
21385
|
KycFormsPrograms: string[];
|
|
21275
|
-
/** @description The wallet the
|
|
21386
|
+
/** @description The wallet the card is for — required when `programs` are named (`400 INVALID_REQUEST` without it), ignored otherwise. The entity's owner must be an active member of it (any role; the cardholder is theirs), and so must the caller when it is someone else, else `403 ACCESS_DENIED`. The form is built for this wallet, and the draft and the submission carry it. Not a uuid: `400 VALIDATION_ERROR`. */
|
|
21276
21387
|
KycFormsWalletId: string;
|
|
21277
21388
|
/** @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`. */
|
|
21278
21389
|
KycFormsTargetsWalletId: string;
|
|
@@ -6930,6 +6930,11 @@ export interface paths {
|
|
|
6930
6930
|
* the same document cannot be registered twice at the vendor, so a fresh cardholder is
|
|
6931
6931
|
* NOT the way to retry. While a review is running, another submit is refused with `409`.
|
|
6932
6932
|
*
|
|
6933
|
+
* A rejection no corrected dossier answers — a forged document, fraud, an attempt to
|
|
6934
|
+
* bypass the liveness check, or a regulatory bar (age, region, a duplicate applicant) —
|
|
6935
|
+
* is final: the submit is refused with `409 CARDHOLDER_REJECTION_FINAL`, and
|
|
6936
|
+
* `error.details.reject_reason` carries the vendor's reason.
|
|
6937
|
+
*
|
|
6933
6938
|
*/
|
|
6934
6939
|
post: {
|
|
6935
6940
|
parameters: {
|
|
@@ -6971,7 +6976,7 @@ export interface paths {
|
|
|
6971
6976
|
};
|
|
6972
6977
|
content?: never;
|
|
6973
6978
|
};
|
|
6974
|
-
/** @description Cardholder is live at the vendor, or its review is still running. On a program that issues under the wallet's company: `WALLET_BUSINESS_NOT_ONBOARDED` (the wallet's business has not been registered with the card issuer) or `WALLET_BUSINESS_NOT_APPROVED` (its review is not approved yet). */
|
|
6979
|
+
/** @description Cardholder is live at the vendor, or its review is still running (`CARDHOLDER_NOT_DRAFT`). Its rejection is final and cannot be answered by a resubmit (`CARDHOLDER_REJECTION_FINAL`, `error.details.reject_reason`). On a program that issues under the wallet's company: `WALLET_BUSINESS_NOT_ONBOARDED` (the wallet's business has not been registered with the card issuer) or `WALLET_BUSINESS_NOT_APPROVED` (its review is not approved yet). */
|
|
6975
6980
|
409: {
|
|
6976
6981
|
headers: {
|
|
6977
6982
|
[name: string]: unknown;
|
|
@@ -1046,6 +1046,7 @@ export interface components {
|
|
|
1046
1046
|
schemas: {
|
|
1047
1047
|
InviteDto: {
|
|
1048
1048
|
invite_code?: string;
|
|
1049
|
+
promo_code?: string;
|
|
1049
1050
|
referrer?: string;
|
|
1050
1051
|
};
|
|
1051
1052
|
UserDataRefEntity: {
|
|
@@ -1126,6 +1127,7 @@ export interface components {
|
|
|
1126
1127
|
};
|
|
1127
1128
|
SignUpByTypeDto: {
|
|
1128
1129
|
invite_code?: string;
|
|
1130
|
+
promo_code?: string;
|
|
1129
1131
|
referrer?: string;
|
|
1130
1132
|
/** @enum {string} */
|
|
1131
1133
|
type: "email" | "phone";
|
|
@@ -1166,6 +1168,7 @@ export interface components {
|
|
|
1166
1168
|
auth_date: string;
|
|
1167
1169
|
hash: string;
|
|
1168
1170
|
invite_code?: string;
|
|
1171
|
+
promo_code?: string;
|
|
1169
1172
|
referrer?: string;
|
|
1170
1173
|
};
|
|
1171
1174
|
TelegramSignInByTgIdDto: {
|
|
@@ -1174,12 +1177,14 @@ export interface components {
|
|
|
1174
1177
|
};
|
|
1175
1178
|
SignInByEmailDto: {
|
|
1176
1179
|
invite_code?: string;
|
|
1180
|
+
promo_code?: string;
|
|
1177
1181
|
referrer?: string;
|
|
1178
1182
|
email: string;
|
|
1179
1183
|
redirect_url?: string;
|
|
1180
1184
|
};
|
|
1181
1185
|
SignInByPhoneDto: {
|
|
1182
1186
|
invite_code?: string;
|
|
1187
|
+
promo_code?: string;
|
|
1183
1188
|
referrer?: string;
|
|
1184
1189
|
phone: string;
|
|
1185
1190
|
};
|
|
@@ -4211,7 +4216,7 @@ export interface operations {
|
|
|
4211
4216
|
"application/json": components["schemas"]["WalletKycRailTypeDto"];
|
|
4212
4217
|
};
|
|
4213
4218
|
};
|
|
4214
|
-
/** @description KYC verification already processed */
|
|
4219
|
+
/** @description KYC verification already processed; or TERMS_NOT_ACCEPTED — the rail requires its terms with the submission (kyc_rails.terms_required), submit it with CORE POST /frontend/wallets/{wallet_id}/kyc-rails/{rail_id} and accepted_terms */
|
|
4215
4220
|
400: {
|
|
4216
4221
|
headers: {
|
|
4217
4222
|
[name: string]: unknown;
|
|
@@ -873,7 +873,7 @@ export declare namespace API {
|
|
|
873
873
|
type Response = RailRoot['get']['responses'][200]['content']['application/json'];
|
|
874
874
|
}
|
|
875
875
|
export namespace Submit {
|
|
876
|
-
type Request = RailRoot['post']['parameters']['path']
|
|
876
|
+
type Request = RailRoot['post']['parameters']['path'] & NonNullable<NonNullable<RailRoot['post']['requestBody']>['content']['application/json']>;
|
|
877
877
|
type Response = RailRoot['post']['responses'][200]['content']['application/json'];
|
|
878
878
|
type ErrorDetails = NonNullable<NonNullable<componentsV1Frontend['schemas']['WalletKycRailSubmitErrorResponse']['error']>['details']>;
|
|
879
879
|
}
|
|
@@ -919,8 +919,6 @@ export declare namespace API {
|
|
|
919
919
|
export type Form = Schemas['KycFormsForm'];
|
|
920
920
|
export type FormScope = Form['scope'];
|
|
921
921
|
export type FormSection = Form['sections'][number];
|
|
922
|
-
export type Terms = Schemas['KycFormsTerms'];
|
|
923
|
-
export type TermsItem = Terms['items'][number];
|
|
924
922
|
export type FormState = Schemas['KycFormsFormState'];
|
|
925
923
|
export type Field = Schemas['KycFormsField'];
|
|
926
924
|
export type FieldType = Field['type'];
|