vesant-sdk 1.7.0-dev.a85efc5 → 1.7.0-dev.ab635a0
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/{client-DF7hlMEz.d.ts → client-0NOPDnT0.d.ts} +16 -26
- package/dist/{client-DrjgZoH_.d.mts → client-CvWNRwwg.d.mts} +16 -26
- package/dist/{client-B0qhE2kr.d.mts → client-Dps40EtF.d.mts} +2 -2
- package/dist/{client-DtH2RLuy.d.ts → client-SMxqod4j.d.ts} +2 -2
- package/dist/{client-BolQlL5e.d.mts → client-q9fN8Hhf.d.mts} +103 -1
- package/dist/{client-BolQlL5e.d.ts → client-q9fN8Hhf.d.ts} +103 -1
- package/dist/compliance/index.d.mts +3 -3
- package/dist/compliance/index.d.ts +3 -3
- package/dist/compliance/index.js +133 -19
- package/dist/compliance/index.js.map +1 -1
- package/dist/compliance/index.mjs +133 -19
- package/dist/compliance/index.mjs.map +1 -1
- package/dist/decisions/index.d.mts +1 -1
- package/dist/decisions/index.d.ts +1 -1
- package/dist/decisions/index.js +68 -7
- package/dist/decisions/index.js.map +1 -1
- package/dist/decisions/index.mjs +68 -7
- package/dist/decisions/index.mjs.map +1 -1
- package/dist/geolocation/index.d.mts +59 -4
- package/dist/geolocation/index.d.ts +59 -4
- package/dist/geolocation/index.js +136 -19
- package/dist/geolocation/index.js.map +1 -1
- package/dist/geolocation/index.mjs +134 -20
- package/dist/geolocation/index.mjs.map +1 -1
- package/dist/index-C3zUKydT.d.mts +264 -0
- package/dist/index-DSDgS09k.d.ts +264 -0
- package/dist/index.d.mts +26 -9
- package/dist/index.d.ts +26 -9
- package/dist/index.js +320 -50
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +313 -51
- package/dist/index.mjs.map +1 -1
- package/dist/kyc/core.d.mts +2 -2
- package/dist/kyc/core.d.ts +2 -2
- package/dist/kyc/core.js +90 -15
- package/dist/kyc/core.js.map +1 -1
- package/dist/kyc/core.mjs +90 -15
- package/dist/kyc/core.mjs.map +1 -1
- package/dist/kyc/index.d.mts +56 -8
- package/dist/kyc/index.d.ts +56 -8
- package/dist/kyc/index.js +90 -15
- package/dist/kyc/index.js.map +1 -1
- package/dist/kyc/index.mjs +90 -15
- package/dist/kyc/index.mjs.map +1 -1
- package/dist/react.d.mts +7 -3
- package/dist/react.d.ts +7 -3
- package/dist/react.js +68 -4
- package/dist/react.js.map +1 -1
- package/dist/react.mjs +68 -4
- package/dist/react.mjs.map +1 -1
- package/dist/risk-profile/index.d.mts +1 -1
- package/dist/risk-profile/index.d.ts +1 -1
- package/dist/risk-profile/index.js +68 -7
- package/dist/risk-profile/index.js.map +1 -1
- package/dist/risk-profile/index.mjs +68 -7
- package/dist/risk-profile/index.mjs.map +1 -1
- package/dist/scores/index.d.mts +1 -1
- package/dist/scores/index.d.ts +1 -1
- package/dist/scores/index.js +68 -7
- package/dist/scores/index.js.map +1 -1
- package/dist/scores/index.mjs +68 -7
- package/dist/scores/index.mjs.map +1 -1
- package/dist/tax/index.d.mts +2 -2
- package/dist/tax/index.d.ts +2 -2
- package/dist/tax/index.js +73 -9
- package/dist/tax/index.js.map +1 -1
- package/dist/tax/index.mjs +73 -9
- package/dist/tax/index.mjs.map +1 -1
- package/dist/webhooks/index.d.mts +2 -189
- package/dist/webhooks/index.d.ts +2 -189
- package/dist/webhooks/index.js +85 -21
- package/dist/webhooks/index.js.map +1 -1
- package/dist/webhooks/index.mjs +85 -22
- package/dist/webhooks/index.mjs.map +1 -1
- package/package.json +4 -1
package/dist/kyc/index.d.mts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { P as ProfileFilters, b as ProfileListResponse, C as CustomerProfile, a as CreateProfileRequest } from '../types-BOFaMQxI.mjs';
|
|
2
2
|
import { c as Reason, R as RiskLevel, P as PaginationParams } from '../types-CBQRNL-l.mjs';
|
|
3
|
-
import { B as BaseClient } from '../client-
|
|
3
|
+
import { B as BaseClient, R as RequestOptions } from '../client-q9fN8Hhf.mjs';
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* TypeScript type definitions for Vesant KYC Service API
|
|
@@ -327,6 +327,40 @@ interface RequestKycSubmitLinkRequest {
|
|
|
327
327
|
* Omitted or unknown values default to KYC required with no skip.
|
|
328
328
|
*/
|
|
329
329
|
trigger_event?: string;
|
|
330
|
+
/**
|
|
331
|
+
* Registered customer identity data (optional). Seeds the customer's risk
|
|
332
|
+
* profile so document verification can cross-check the submitted document
|
|
333
|
+
* against trusted reference data (name/DOB match, address verification).
|
|
334
|
+
* Fields never overwrite data already on the profile.
|
|
335
|
+
*/
|
|
336
|
+
customer_data?: KycCustomerData;
|
|
337
|
+
}
|
|
338
|
+
/**
|
|
339
|
+
* Customer identity data supplied by your platform on a submit-link request.
|
|
340
|
+
* Mirrors the geolocation `customer_data` contract. Every field is optional
|
|
341
|
+
* and never overwrites data already on the customer's risk profile.
|
|
342
|
+
*/
|
|
343
|
+
interface KycCustomerData {
|
|
344
|
+
/**
|
|
345
|
+
* Customer's registered full name. Used to match the OCR-extracted name
|
|
346
|
+
* on the submitted document.
|
|
347
|
+
*/
|
|
348
|
+
full_name?: string;
|
|
349
|
+
/**
|
|
350
|
+
* Customer's registered date of birth. ISO 8601 date ("1999-06-02") or an
|
|
351
|
+
* RFC 3339 timestamp ("1986-09-06T18:30:00.000+00:00", as produced by
|
|
352
|
+
* `Date.prototype.toISOString()`) — for timestamps the date portion is
|
|
353
|
+
* used. Used for DOB matching against the submitted document.
|
|
354
|
+
*/
|
|
355
|
+
date_of_birth?: string;
|
|
356
|
+
/** Customer's email address */
|
|
357
|
+
email?: string;
|
|
358
|
+
/** Customer's phone number */
|
|
359
|
+
phone?: string;
|
|
360
|
+
/** Customer's residential address. Used for address verification. */
|
|
361
|
+
address?: string;
|
|
362
|
+
/** Customer's country of residence */
|
|
363
|
+
country?: string;
|
|
330
364
|
}
|
|
331
365
|
/**
|
|
332
366
|
* Trigger events that can request Event-Based Face Verification.
|
|
@@ -686,7 +720,7 @@ interface UseKycPreferencesResult extends BaseHookState {
|
|
|
686
720
|
*/
|
|
687
721
|
declare class KycClient extends BaseClient {
|
|
688
722
|
private userId?;
|
|
689
|
-
private riskProfileBaseURL?;
|
|
723
|
+
private readonly riskProfileBaseURL?;
|
|
690
724
|
constructor(config: KycClientConfig);
|
|
691
725
|
/**
|
|
692
726
|
* Set the user ID for operations requiring user context
|
|
@@ -705,7 +739,13 @@ declare class KycClient extends BaseClient {
|
|
|
705
739
|
*
|
|
706
740
|
* Generates a link that the user can visit to submit their KYC documents.
|
|
707
741
|
*
|
|
708
|
-
*
|
|
742
|
+
* Optionally pass the customer's registered identity data as
|
|
743
|
+
* `customer_data` (same shape as the geolocation `customer_data` block).
|
|
744
|
+
* It seeds the customer's risk profile so document verification can
|
|
745
|
+
* cross-check the submitted document against trusted reference data;
|
|
746
|
+
* fields never overwrite data already on the profile.
|
|
747
|
+
*
|
|
748
|
+
* @param request - Request containing the user ID, optional redirect URL, optional callback URL (receives POST requests), and optional customer identity data
|
|
709
749
|
* @returns Response containing the redirect link and KYC ID
|
|
710
750
|
*
|
|
711
751
|
* @example
|
|
@@ -713,14 +753,22 @@ declare class KycClient extends BaseClient {
|
|
|
713
753
|
* const result = await client.requestKycSubmitLink({
|
|
714
754
|
* user_id: "user_123",
|
|
715
755
|
* redirect_url: "https://merchant.com/kyc-complete", // optional
|
|
716
|
-
* callback_url: "https://merchant.com/api/kyc-webhook" // optional - receives POST requests on status change
|
|
756
|
+
* callback_url: "https://merchant.com/api/kyc-webhook", // optional - receives POST requests on status change
|
|
757
|
+
* customer_data: { // optional - seeds the risk profile for document cross-checks
|
|
758
|
+
* full_name: "John Doe",
|
|
759
|
+
* date_of_birth: "1999-06-02", // ISO 8601
|
|
760
|
+
* email: "john@example.com",
|
|
761
|
+
* phone: "+94771234567",
|
|
762
|
+
* address: "12 Main St, Colombo", // used for address verification
|
|
763
|
+
* country: "LK"
|
|
764
|
+
* }
|
|
717
765
|
* });
|
|
718
766
|
*
|
|
719
767
|
* console.log(`Redirect user to: ${result.link}`);
|
|
720
768
|
* console.log(`KYC ID: ${result.kyc_id}`);
|
|
721
769
|
* ```
|
|
722
770
|
*/
|
|
723
|
-
requestKycSubmitLink(request: RequestKycSubmitLinkRequest): Promise<RequestKycSubmitLinkResponse>;
|
|
771
|
+
requestKycSubmitLink(request: RequestKycSubmitLinkRequest, requestOptions?: RequestOptions): Promise<RequestKycSubmitLinkResponse>;
|
|
724
772
|
/**
|
|
725
773
|
* Create a Event-Based Face Verification session.
|
|
726
774
|
*
|
|
@@ -746,7 +794,7 @@ declare class KycClient extends BaseClient {
|
|
|
746
794
|
*
|
|
747
795
|
* @param request - Token from `createEventBasedFaceVerificationSession`, plus the base64 selfie.
|
|
748
796
|
*/
|
|
749
|
-
submitEventBasedFaceVerificationSession(request: SubmitEventBasedFaceVerificationSessionRequest): Promise<EventBasedFaceVerificationCallback>;
|
|
797
|
+
submitEventBasedFaceVerificationSession(request: SubmitEventBasedFaceVerificationSessionRequest, requestOptions?: RequestOptions): Promise<EventBasedFaceVerificationCallback>;
|
|
750
798
|
/**
|
|
751
799
|
* Look up the current state of a Event-Based Face Verification session by its
|
|
752
800
|
* session token. Useful for desktop pollers waiting on the mobile handoff.
|
|
@@ -835,7 +883,7 @@ declare class KycClient extends BaseClient {
|
|
|
835
883
|
* console.log(`Verification submitted: ${result.reference}`);
|
|
836
884
|
* ```
|
|
837
885
|
*/
|
|
838
|
-
submitVerification(request: DocumentVerificationRequest): Promise<DocumentVerificationResponse>;
|
|
886
|
+
submitVerification(request: DocumentVerificationRequest, requestOptions?: RequestOptions): Promise<DocumentVerificationResponse>;
|
|
839
887
|
/**
|
|
840
888
|
* Get a KYC request by ID
|
|
841
889
|
*
|
|
@@ -1098,4 +1146,4 @@ declare class KycClient extends BaseClient {
|
|
|
1098
1146
|
createCustomerProfile(profile: CreateProfileRequest): Promise<CustomerProfile>;
|
|
1099
1147
|
}
|
|
1100
1148
|
|
|
1101
|
-
export { type CheckKycStatusRequest, type CheckKycStatusResponse, CreateProfileRequest as CreateCustomerProfileRequest, type CreateEventBasedFaceVerificationSessionRequest, type CreateEventBasedFaceVerificationSessionResponse, CustomerProfile, ProfileFilters as CustomerProfileFilters, ProfileListResponse as CustomerProfileListResponse, type DocumentType, type DocumentVerificationRequest, type DocumentVerificationResponse, type EventBasedFaceVerificationCallback, type EventBasedFaceVerificationDeviceType, type EventBasedFaceVerificationEvent, type EventBasedFaceVerificationFrequencyTrigger, type EventBasedFaceVerificationReactionResult, type EventBasedFaceVerificationReactions, type EventBasedFaceVerificationThresholdTrigger, type EventBasedFaceVerificationTriggers, type FaceProof, KYC_DECLINED_DESCRIPTIONS, type KycAlert, type KycAlertFilters, type KycAlertListResponse, type KycAlertStatus, type KycAlertType, KycClient, type KycClientConfig, type KycCustomerProfile, type KycDeclinedCode, type KycHandoffSession, type KycOverview, type KycPagination, type KycPreferences, type KycRequest, type KycRequestFilters, type KycRequestListResponse, type KycStatus, type Name, PaginationParams, type Proof, type ProofDownloadURL, type ProofType, type RequestAdditionalDocumentsRequest, type RequestKycSubmitLinkRequest, type RequestKycSubmitLinkResponse, RiskLevel, type SubmitEventBasedFaceVerificationSessionRequest, type SubmittedDocument, type SupportedDocumentType, type UpdateKycAlertRequest, type UpdateKycPreferencesRequest, type UpdateKycStatusRequest, type UseKycAlertsOptions, type UseKycAlertsResult, type UseKycOverviewOptions, type UseKycOverviewResult, type UseKycPreferencesResult, type UseKycRequestsOptions, type UseKycRequestsResult, type UseKycSubmissionOptions, type UseKycSubmissionResult };
|
|
1149
|
+
export { type CheckKycStatusRequest, type CheckKycStatusResponse, CreateProfileRequest as CreateCustomerProfileRequest, type CreateEventBasedFaceVerificationSessionRequest, type CreateEventBasedFaceVerificationSessionResponse, CustomerProfile, ProfileFilters as CustomerProfileFilters, ProfileListResponse as CustomerProfileListResponse, type DocumentType, type DocumentVerificationRequest, type DocumentVerificationResponse, type EventBasedFaceVerificationCallback, type EventBasedFaceVerificationDeviceType, type EventBasedFaceVerificationEvent, type EventBasedFaceVerificationFrequencyTrigger, type EventBasedFaceVerificationReactionResult, type EventBasedFaceVerificationReactions, type EventBasedFaceVerificationThresholdTrigger, type EventBasedFaceVerificationTriggers, type FaceProof, KYC_DECLINED_DESCRIPTIONS, type KycAlert, type KycAlertFilters, type KycAlertListResponse, type KycAlertStatus, type KycAlertType, KycClient, type KycClientConfig, type KycCustomerData, type KycCustomerProfile, type KycDeclinedCode, type KycHandoffSession, type KycOverview, type KycPagination, type KycPreferences, type KycRequest, type KycRequestFilters, type KycRequestListResponse, type KycStatus, type Name, PaginationParams, type Proof, type ProofDownloadURL, type ProofType, type RequestAdditionalDocumentsRequest, type RequestKycSubmitLinkRequest, type RequestKycSubmitLinkResponse, RiskLevel, type SubmitEventBasedFaceVerificationSessionRequest, type SubmittedDocument, type SupportedDocumentType, type UpdateKycAlertRequest, type UpdateKycPreferencesRequest, type UpdateKycStatusRequest, type UseKycAlertsOptions, type UseKycAlertsResult, type UseKycOverviewOptions, type UseKycOverviewResult, type UseKycPreferencesResult, type UseKycRequestsOptions, type UseKycRequestsResult, type UseKycSubmissionOptions, type UseKycSubmissionResult };
|
package/dist/kyc/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { P as ProfileFilters, b as ProfileListResponse, C as CustomerProfile, a as CreateProfileRequest } from '../types-UGyDl1fd.js';
|
|
2
2
|
import { c as Reason, R as RiskLevel, P as PaginationParams } from '../types-CBQRNL-l.js';
|
|
3
|
-
import { B as BaseClient } from '../client-
|
|
3
|
+
import { B as BaseClient, R as RequestOptions } from '../client-q9fN8Hhf.js';
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* TypeScript type definitions for Vesant KYC Service API
|
|
@@ -327,6 +327,40 @@ interface RequestKycSubmitLinkRequest {
|
|
|
327
327
|
* Omitted or unknown values default to KYC required with no skip.
|
|
328
328
|
*/
|
|
329
329
|
trigger_event?: string;
|
|
330
|
+
/**
|
|
331
|
+
* Registered customer identity data (optional). Seeds the customer's risk
|
|
332
|
+
* profile so document verification can cross-check the submitted document
|
|
333
|
+
* against trusted reference data (name/DOB match, address verification).
|
|
334
|
+
* Fields never overwrite data already on the profile.
|
|
335
|
+
*/
|
|
336
|
+
customer_data?: KycCustomerData;
|
|
337
|
+
}
|
|
338
|
+
/**
|
|
339
|
+
* Customer identity data supplied by your platform on a submit-link request.
|
|
340
|
+
* Mirrors the geolocation `customer_data` contract. Every field is optional
|
|
341
|
+
* and never overwrites data already on the customer's risk profile.
|
|
342
|
+
*/
|
|
343
|
+
interface KycCustomerData {
|
|
344
|
+
/**
|
|
345
|
+
* Customer's registered full name. Used to match the OCR-extracted name
|
|
346
|
+
* on the submitted document.
|
|
347
|
+
*/
|
|
348
|
+
full_name?: string;
|
|
349
|
+
/**
|
|
350
|
+
* Customer's registered date of birth. ISO 8601 date ("1999-06-02") or an
|
|
351
|
+
* RFC 3339 timestamp ("1986-09-06T18:30:00.000+00:00", as produced by
|
|
352
|
+
* `Date.prototype.toISOString()`) — for timestamps the date portion is
|
|
353
|
+
* used. Used for DOB matching against the submitted document.
|
|
354
|
+
*/
|
|
355
|
+
date_of_birth?: string;
|
|
356
|
+
/** Customer's email address */
|
|
357
|
+
email?: string;
|
|
358
|
+
/** Customer's phone number */
|
|
359
|
+
phone?: string;
|
|
360
|
+
/** Customer's residential address. Used for address verification. */
|
|
361
|
+
address?: string;
|
|
362
|
+
/** Customer's country of residence */
|
|
363
|
+
country?: string;
|
|
330
364
|
}
|
|
331
365
|
/**
|
|
332
366
|
* Trigger events that can request Event-Based Face Verification.
|
|
@@ -686,7 +720,7 @@ interface UseKycPreferencesResult extends BaseHookState {
|
|
|
686
720
|
*/
|
|
687
721
|
declare class KycClient extends BaseClient {
|
|
688
722
|
private userId?;
|
|
689
|
-
private riskProfileBaseURL?;
|
|
723
|
+
private readonly riskProfileBaseURL?;
|
|
690
724
|
constructor(config: KycClientConfig);
|
|
691
725
|
/**
|
|
692
726
|
* Set the user ID for operations requiring user context
|
|
@@ -705,7 +739,13 @@ declare class KycClient extends BaseClient {
|
|
|
705
739
|
*
|
|
706
740
|
* Generates a link that the user can visit to submit their KYC documents.
|
|
707
741
|
*
|
|
708
|
-
*
|
|
742
|
+
* Optionally pass the customer's registered identity data as
|
|
743
|
+
* `customer_data` (same shape as the geolocation `customer_data` block).
|
|
744
|
+
* It seeds the customer's risk profile so document verification can
|
|
745
|
+
* cross-check the submitted document against trusted reference data;
|
|
746
|
+
* fields never overwrite data already on the profile.
|
|
747
|
+
*
|
|
748
|
+
* @param request - Request containing the user ID, optional redirect URL, optional callback URL (receives POST requests), and optional customer identity data
|
|
709
749
|
* @returns Response containing the redirect link and KYC ID
|
|
710
750
|
*
|
|
711
751
|
* @example
|
|
@@ -713,14 +753,22 @@ declare class KycClient extends BaseClient {
|
|
|
713
753
|
* const result = await client.requestKycSubmitLink({
|
|
714
754
|
* user_id: "user_123",
|
|
715
755
|
* redirect_url: "https://merchant.com/kyc-complete", // optional
|
|
716
|
-
* callback_url: "https://merchant.com/api/kyc-webhook" // optional - receives POST requests on status change
|
|
756
|
+
* callback_url: "https://merchant.com/api/kyc-webhook", // optional - receives POST requests on status change
|
|
757
|
+
* customer_data: { // optional - seeds the risk profile for document cross-checks
|
|
758
|
+
* full_name: "John Doe",
|
|
759
|
+
* date_of_birth: "1999-06-02", // ISO 8601
|
|
760
|
+
* email: "john@example.com",
|
|
761
|
+
* phone: "+94771234567",
|
|
762
|
+
* address: "12 Main St, Colombo", // used for address verification
|
|
763
|
+
* country: "LK"
|
|
764
|
+
* }
|
|
717
765
|
* });
|
|
718
766
|
*
|
|
719
767
|
* console.log(`Redirect user to: ${result.link}`);
|
|
720
768
|
* console.log(`KYC ID: ${result.kyc_id}`);
|
|
721
769
|
* ```
|
|
722
770
|
*/
|
|
723
|
-
requestKycSubmitLink(request: RequestKycSubmitLinkRequest): Promise<RequestKycSubmitLinkResponse>;
|
|
771
|
+
requestKycSubmitLink(request: RequestKycSubmitLinkRequest, requestOptions?: RequestOptions): Promise<RequestKycSubmitLinkResponse>;
|
|
724
772
|
/**
|
|
725
773
|
* Create a Event-Based Face Verification session.
|
|
726
774
|
*
|
|
@@ -746,7 +794,7 @@ declare class KycClient extends BaseClient {
|
|
|
746
794
|
*
|
|
747
795
|
* @param request - Token from `createEventBasedFaceVerificationSession`, plus the base64 selfie.
|
|
748
796
|
*/
|
|
749
|
-
submitEventBasedFaceVerificationSession(request: SubmitEventBasedFaceVerificationSessionRequest): Promise<EventBasedFaceVerificationCallback>;
|
|
797
|
+
submitEventBasedFaceVerificationSession(request: SubmitEventBasedFaceVerificationSessionRequest, requestOptions?: RequestOptions): Promise<EventBasedFaceVerificationCallback>;
|
|
750
798
|
/**
|
|
751
799
|
* Look up the current state of a Event-Based Face Verification session by its
|
|
752
800
|
* session token. Useful for desktop pollers waiting on the mobile handoff.
|
|
@@ -835,7 +883,7 @@ declare class KycClient extends BaseClient {
|
|
|
835
883
|
* console.log(`Verification submitted: ${result.reference}`);
|
|
836
884
|
* ```
|
|
837
885
|
*/
|
|
838
|
-
submitVerification(request: DocumentVerificationRequest): Promise<DocumentVerificationResponse>;
|
|
886
|
+
submitVerification(request: DocumentVerificationRequest, requestOptions?: RequestOptions): Promise<DocumentVerificationResponse>;
|
|
839
887
|
/**
|
|
840
888
|
* Get a KYC request by ID
|
|
841
889
|
*
|
|
@@ -1098,4 +1146,4 @@ declare class KycClient extends BaseClient {
|
|
|
1098
1146
|
createCustomerProfile(profile: CreateProfileRequest): Promise<CustomerProfile>;
|
|
1099
1147
|
}
|
|
1100
1148
|
|
|
1101
|
-
export { type CheckKycStatusRequest, type CheckKycStatusResponse, CreateProfileRequest as CreateCustomerProfileRequest, type CreateEventBasedFaceVerificationSessionRequest, type CreateEventBasedFaceVerificationSessionResponse, CustomerProfile, ProfileFilters as CustomerProfileFilters, ProfileListResponse as CustomerProfileListResponse, type DocumentType, type DocumentVerificationRequest, type DocumentVerificationResponse, type EventBasedFaceVerificationCallback, type EventBasedFaceVerificationDeviceType, type EventBasedFaceVerificationEvent, type EventBasedFaceVerificationFrequencyTrigger, type EventBasedFaceVerificationReactionResult, type EventBasedFaceVerificationReactions, type EventBasedFaceVerificationThresholdTrigger, type EventBasedFaceVerificationTriggers, type FaceProof, KYC_DECLINED_DESCRIPTIONS, type KycAlert, type KycAlertFilters, type KycAlertListResponse, type KycAlertStatus, type KycAlertType, KycClient, type KycClientConfig, type KycCustomerProfile, type KycDeclinedCode, type KycHandoffSession, type KycOverview, type KycPagination, type KycPreferences, type KycRequest, type KycRequestFilters, type KycRequestListResponse, type KycStatus, type Name, PaginationParams, type Proof, type ProofDownloadURL, type ProofType, type RequestAdditionalDocumentsRequest, type RequestKycSubmitLinkRequest, type RequestKycSubmitLinkResponse, RiskLevel, type SubmitEventBasedFaceVerificationSessionRequest, type SubmittedDocument, type SupportedDocumentType, type UpdateKycAlertRequest, type UpdateKycPreferencesRequest, type UpdateKycStatusRequest, type UseKycAlertsOptions, type UseKycAlertsResult, type UseKycOverviewOptions, type UseKycOverviewResult, type UseKycPreferencesResult, type UseKycRequestsOptions, type UseKycRequestsResult, type UseKycSubmissionOptions, type UseKycSubmissionResult };
|
|
1149
|
+
export { type CheckKycStatusRequest, type CheckKycStatusResponse, CreateProfileRequest as CreateCustomerProfileRequest, type CreateEventBasedFaceVerificationSessionRequest, type CreateEventBasedFaceVerificationSessionResponse, CustomerProfile, ProfileFilters as CustomerProfileFilters, ProfileListResponse as CustomerProfileListResponse, type DocumentType, type DocumentVerificationRequest, type DocumentVerificationResponse, type EventBasedFaceVerificationCallback, type EventBasedFaceVerificationDeviceType, type EventBasedFaceVerificationEvent, type EventBasedFaceVerificationFrequencyTrigger, type EventBasedFaceVerificationReactionResult, type EventBasedFaceVerificationReactions, type EventBasedFaceVerificationThresholdTrigger, type EventBasedFaceVerificationTriggers, type FaceProof, KYC_DECLINED_DESCRIPTIONS, type KycAlert, type KycAlertFilters, type KycAlertListResponse, type KycAlertStatus, type KycAlertType, KycClient, type KycClientConfig, type KycCustomerData, type KycCustomerProfile, type KycDeclinedCode, type KycHandoffSession, type KycOverview, type KycPagination, type KycPreferences, type KycRequest, type KycRequestFilters, type KycRequestListResponse, type KycStatus, type Name, PaginationParams, type Proof, type ProofDownloadURL, type ProofType, type RequestAdditionalDocumentsRequest, type RequestKycSubmitLinkRequest, type RequestKycSubmitLinkResponse, RiskLevel, type SubmitEventBasedFaceVerificationSessionRequest, type SubmittedDocument, type SupportedDocumentType, type UpdateKycAlertRequest, type UpdateKycPreferencesRequest, type UpdateKycStatusRequest, type UseKycAlertsOptions, type UseKycAlertsResult, type UseKycOverviewOptions, type UseKycOverviewResult, type UseKycPreferencesResult, type UseKycRequestsOptions, type UseKycRequestsResult, type UseKycSubmissionOptions, type UseKycSubmissionResult };
|
package/dist/kyc/index.js
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
+
// src/core/auth.ts
|
|
4
|
+
var StaticApiKeyProvider = class {
|
|
5
|
+
constructor(apiKey) {
|
|
6
|
+
this.apiKey = apiKey;
|
|
7
|
+
}
|
|
8
|
+
async getCredential() {
|
|
9
|
+
return this.apiKey ? { scheme: "Bearer", token: this.apiKey } : null;
|
|
10
|
+
}
|
|
11
|
+
canRefresh() {
|
|
12
|
+
return false;
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
|
|
3
16
|
// src/core/errors.ts
|
|
4
17
|
var VesantError = class _VesantError extends Error {
|
|
5
18
|
constructor(message, code, statusCode, details) {
|
|
@@ -241,6 +254,12 @@ var BaseClient = class {
|
|
|
241
254
|
if (!config.tenantId?.trim()) {
|
|
242
255
|
throw new ValidationError("tenantId is required and must be a non-empty string", ["tenantId"]);
|
|
243
256
|
}
|
|
257
|
+
if (typeof fetch === "undefined") {
|
|
258
|
+
throw new VesantError(
|
|
259
|
+
"The Vesant SDK requires a global fetch (Node.js >= 18). Upgrade Node or provide a fetch polyfill.",
|
|
260
|
+
"RUNTIME_UNSUPPORTED"
|
|
261
|
+
);
|
|
262
|
+
}
|
|
244
263
|
this.interceptors = config.interceptors || [];
|
|
245
264
|
this.logger = config.logger || createConsoleLogger();
|
|
246
265
|
let environment = config.environment;
|
|
@@ -259,11 +278,12 @@ var BaseClient = class {
|
|
|
259
278
|
environment,
|
|
260
279
|
headers: config.headers || {},
|
|
261
280
|
timeout: config.timeout || 1e4,
|
|
262
|
-
retries: config.retries
|
|
281
|
+
retries: config.retries ?? 3,
|
|
263
282
|
debug: config.debug || false,
|
|
264
283
|
interceptors: this.interceptors,
|
|
265
284
|
logger: this.logger
|
|
266
285
|
};
|
|
286
|
+
this.authProvider = config.authProvider ?? (apiKey ? new StaticApiKeyProvider(apiKey) : void 0);
|
|
267
287
|
if (config.circuitBreaker) {
|
|
268
288
|
this.circuitBreaker = new CircuitBreaker(config.circuitBreaker);
|
|
269
289
|
}
|
|
@@ -271,6 +291,19 @@ var BaseClient = class {
|
|
|
271
291
|
this.rateLimitTracker = new RateLimitTracker();
|
|
272
292
|
}
|
|
273
293
|
}
|
|
294
|
+
/**
|
|
295
|
+
* Resolve the Idempotency-Key for a request. Mutating methods (POST/PUT/PATCH)
|
|
296
|
+
* get the caller-supplied key or a freshly minted UUID; non-mutating methods get
|
|
297
|
+
* none. requestWithRetry resolves this once and injects it so every retry reuses
|
|
298
|
+
* one key (letting the server dedup replays); a direct request() resolves per call.
|
|
299
|
+
*/
|
|
300
|
+
resolveIdempotencyKey(method, requestOptions) {
|
|
301
|
+
const isMutating = ["POST", "PUT", "PATCH"].includes((method || "GET").toUpperCase());
|
|
302
|
+
if (!isMutating) {
|
|
303
|
+
return void 0;
|
|
304
|
+
}
|
|
305
|
+
return requestOptions?.idempotencyKey ?? generateUUID();
|
|
306
|
+
}
|
|
274
307
|
/**
|
|
275
308
|
* Make an HTTP request with timeout and error handling
|
|
276
309
|
*/
|
|
@@ -296,15 +329,20 @@ var BaseClient = class {
|
|
|
296
329
|
...this.config.headers,
|
|
297
330
|
...options.headers || {}
|
|
298
331
|
};
|
|
299
|
-
|
|
300
|
-
|
|
332
|
+
const credential = await this.authProvider?.getCredential({
|
|
333
|
+
tenantId: this.config.tenantId,
|
|
334
|
+
requestId
|
|
335
|
+
});
|
|
336
|
+
if (credential) {
|
|
337
|
+
headers["Authorization"] = `${credential.scheme ?? "Bearer"} ${credential.token}`;
|
|
301
338
|
}
|
|
302
339
|
if (this.config.environment === "sandbox") {
|
|
303
340
|
headers["X-Sandbox"] = "true";
|
|
304
341
|
}
|
|
305
342
|
const method = (options.method || "GET").toUpperCase();
|
|
306
|
-
|
|
307
|
-
|
|
343
|
+
const idempotencyKey = this.resolveIdempotencyKey(method, requestOptions);
|
|
344
|
+
if (idempotencyKey) {
|
|
345
|
+
headers["Idempotency-Key"] = idempotencyKey;
|
|
308
346
|
}
|
|
309
347
|
const controller = new AbortController();
|
|
310
348
|
const timeoutId = setTimeout(() => controller.abort(), this.config.timeout);
|
|
@@ -325,10 +363,28 @@ var BaseClient = class {
|
|
|
325
363
|
if (this.config.debug) {
|
|
326
364
|
this.logger.debug(`${finalOptions.method || "GET"} ${endpoint}`);
|
|
327
365
|
}
|
|
328
|
-
|
|
366
|
+
let response = await fetch(url, {
|
|
329
367
|
...finalOptions,
|
|
330
368
|
signal: controller.signal
|
|
331
369
|
});
|
|
370
|
+
if (response.status === 401 && this.authProvider?.canRefresh?.()) {
|
|
371
|
+
const refreshed = await this.authProvider.getCredential({
|
|
372
|
+
tenantId: this.config.tenantId,
|
|
373
|
+
requestId,
|
|
374
|
+
forceRefresh: true
|
|
375
|
+
});
|
|
376
|
+
if (refreshed) {
|
|
377
|
+
this.config.onCredentialRotated?.({ reason: "unauthorized" });
|
|
378
|
+
finalOptions = {
|
|
379
|
+
...finalOptions,
|
|
380
|
+
headers: {
|
|
381
|
+
...finalOptions.headers,
|
|
382
|
+
Authorization: `${refreshed.scheme ?? "Bearer"} ${refreshed.token}`
|
|
383
|
+
}
|
|
384
|
+
};
|
|
385
|
+
response = await fetch(url, { ...finalOptions, signal: controller.signal });
|
|
386
|
+
}
|
|
387
|
+
}
|
|
332
388
|
clearTimeout(timeoutId);
|
|
333
389
|
if (this.rateLimitTracker) {
|
|
334
390
|
this.rateLimitTracker.updateFromHeaders(response.headers);
|
|
@@ -417,9 +473,11 @@ var BaseClient = class {
|
|
|
417
473
|
*/
|
|
418
474
|
async requestWithRetry(endpoint, options = {}, serviceURL, retries = this.config.retries, requestOptions) {
|
|
419
475
|
let lastError;
|
|
476
|
+
const idempotencyKey = this.resolveIdempotencyKey(options.method || "GET", requestOptions);
|
|
477
|
+
const attemptOptions = idempotencyKey ? { ...requestOptions, idempotencyKey } : requestOptions;
|
|
420
478
|
for (let attempt = 0; attempt <= retries; attempt++) {
|
|
421
479
|
try {
|
|
422
|
-
return await this.request(endpoint, options, serviceURL,
|
|
480
|
+
return await this.request(endpoint, options, serviceURL, attemptOptions);
|
|
423
481
|
} catch (error) {
|
|
424
482
|
lastError = error instanceof Error ? error : new Error("Unknown error");
|
|
425
483
|
if (requestOptions?.signal?.aborted) {
|
|
@@ -516,6 +574,9 @@ var BaseClient = class {
|
|
|
516
574
|
if (config.interceptors) {
|
|
517
575
|
this.interceptors = config.interceptors;
|
|
518
576
|
}
|
|
577
|
+
if (config.authProvider !== void 0 || config.apiKey !== void 0) {
|
|
578
|
+
this.authProvider = this.config.authProvider ?? (this.config.apiKey ? new StaticApiKeyProvider(this.config.apiKey) : void 0);
|
|
579
|
+
}
|
|
519
580
|
}
|
|
520
581
|
/**
|
|
521
582
|
* Get current configuration (readonly)
|
|
@@ -603,7 +664,13 @@ var KycClient = class extends BaseClient {
|
|
|
603
664
|
*
|
|
604
665
|
* Generates a link that the user can visit to submit their KYC documents.
|
|
605
666
|
*
|
|
606
|
-
*
|
|
667
|
+
* Optionally pass the customer's registered identity data as
|
|
668
|
+
* `customer_data` (same shape as the geolocation `customer_data` block).
|
|
669
|
+
* It seeds the customer's risk profile so document verification can
|
|
670
|
+
* cross-check the submitted document against trusted reference data;
|
|
671
|
+
* fields never overwrite data already on the profile.
|
|
672
|
+
*
|
|
673
|
+
* @param request - Request containing the user ID, optional redirect URL, optional callback URL (receives POST requests), and optional customer identity data
|
|
607
674
|
* @returns Response containing the redirect link and KYC ID
|
|
608
675
|
*
|
|
609
676
|
* @example
|
|
@@ -611,19 +678,27 @@ var KycClient = class extends BaseClient {
|
|
|
611
678
|
* const result = await client.requestKycSubmitLink({
|
|
612
679
|
* user_id: "user_123",
|
|
613
680
|
* redirect_url: "https://merchant.com/kyc-complete", // optional
|
|
614
|
-
* callback_url: "https://merchant.com/api/kyc-webhook" // optional - receives POST requests on status change
|
|
681
|
+
* callback_url: "https://merchant.com/api/kyc-webhook", // optional - receives POST requests on status change
|
|
682
|
+
* customer_data: { // optional - seeds the risk profile for document cross-checks
|
|
683
|
+
* full_name: "John Doe",
|
|
684
|
+
* date_of_birth: "1999-06-02", // ISO 8601
|
|
685
|
+
* email: "john@example.com",
|
|
686
|
+
* phone: "+94771234567",
|
|
687
|
+
* address: "12 Main St, Colombo", // used for address verification
|
|
688
|
+
* country: "LK"
|
|
689
|
+
* }
|
|
615
690
|
* });
|
|
616
691
|
*
|
|
617
692
|
* console.log(`Redirect user to: ${result.link}`);
|
|
618
693
|
* console.log(`KYC ID: ${result.kyc_id}`);
|
|
619
694
|
* ```
|
|
620
695
|
*/
|
|
621
|
-
async requestKycSubmitLink(request) {
|
|
696
|
+
async requestKycSubmitLink(request, requestOptions) {
|
|
622
697
|
return this.requestWithRetry("/api/v1/kyc/request", {
|
|
623
698
|
method: "POST",
|
|
624
699
|
body: JSON.stringify(request),
|
|
625
700
|
headers: this.getUserHeaders()
|
|
626
|
-
});
|
|
701
|
+
}, void 0, void 0, requestOptions);
|
|
627
702
|
}
|
|
628
703
|
/**
|
|
629
704
|
* Create a Event-Based Face Verification session.
|
|
@@ -656,12 +731,12 @@ var KycClient = class extends BaseClient {
|
|
|
656
731
|
*
|
|
657
732
|
* @param request - Token from `createEventBasedFaceVerificationSession`, plus the base64 selfie.
|
|
658
733
|
*/
|
|
659
|
-
async submitEventBasedFaceVerificationSession(request) {
|
|
734
|
+
async submitEventBasedFaceVerificationSession(request, requestOptions) {
|
|
660
735
|
return this.request("/api/v1/kyc/face/submit", {
|
|
661
736
|
method: "POST",
|
|
662
737
|
body: JSON.stringify(request),
|
|
663
738
|
headers: this.getUserHeaders()
|
|
664
|
-
});
|
|
739
|
+
}, void 0, requestOptions);
|
|
665
740
|
}
|
|
666
741
|
/**
|
|
667
742
|
* Look up the current state of a Event-Based Face Verification session by its
|
|
@@ -777,12 +852,12 @@ var KycClient = class extends BaseClient {
|
|
|
777
852
|
* console.log(`Verification submitted: ${result.reference}`);
|
|
778
853
|
* ```
|
|
779
854
|
*/
|
|
780
|
-
async submitVerification(request) {
|
|
855
|
+
async submitVerification(request, requestOptions) {
|
|
781
856
|
return this.requestWithRetry("/api/v1/kyc/submit", {
|
|
782
857
|
method: "POST",
|
|
783
858
|
body: JSON.stringify(request),
|
|
784
859
|
headers: this.getUserHeaders()
|
|
785
|
-
});
|
|
860
|
+
}, void 0, void 0, requestOptions);
|
|
786
861
|
}
|
|
787
862
|
/**
|
|
788
863
|
* Get a KYC request by ID
|