@fiado/type-kit 3.344.0 → 3.346.0
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/bin/card/dtos/CardUpdateIssuanceRequest.d.ts +14 -0
- package/bin/card/dtos/CardUpdateIssuanceRequest.js +10 -0
- package/bin/card/enums/issuance/KycStatus.d.ts +7 -1
- package/bin/card/enums/issuance/KycStatus.js +6 -0
- package/bin/retailCustomer/dtos/RetailCustomer.d.ts +0 -1
- package/bin/retailCustomer/dtos/RetailCustomer.js +0 -6
- package/bin/retailCustomer/dtos/requests/AccountResultRequest.d.ts +3 -4
- package/bin/retailCustomer/dtos/requests/AccountResultRequest.js +3 -10
- package/bin/retailCustomer/dtos/requests/UpsertCustomerFromKycRequest.d.ts +0 -1
- package/bin/retailCustomer/dtos/requests/UpsertCustomerFromKycRequest.js +0 -6
- package/bin/retailCustomer/dtos/responses/CustomerResponse.d.ts +0 -1
- package/bin/retailWizard/dtos/responses/AccountStatusResponse.d.ts +0 -2
- package/package.json +1 -1
- package/src/card/dtos/CardUpdateIssuanceRequest.ts +20 -0
- package/src/card/enums/issuance/KycStatus.ts +7 -1
- package/src/retailCustomer/dtos/RetailCustomer.ts +0 -5
- package/src/retailCustomer/dtos/requests/AccountResultRequest.ts +4 -12
- package/src/retailCustomer/dtos/requests/UpsertCustomerFromKycRequest.ts +0 -5
- package/src/retailCustomer/dtos/responses/CustomerResponse.ts +0 -1
- package/src/retailWizard/dtos/responses/AccountStatusResponse.ts +0 -2
|
@@ -10,4 +10,18 @@ export declare class CardUpdateIssuanceRequest {
|
|
|
10
10
|
kycReasons?: KycReason[];
|
|
11
11
|
/** Detalle crudo del vendor de KYC. Solo lo manda la ruta del webhook/connector de CP. */
|
|
12
12
|
kycVendorResults?: KycVendorResultDetail[];
|
|
13
|
+
/**
|
|
14
|
+
* Motivo del rechazo de documento, tal como lo manda IDology en `kyc_reason_codes[0]`.
|
|
15
|
+
*
|
|
16
|
+
* Es texto libre en inglés, con los motivos concatenados por "; " — por ejemplo
|
|
17
|
+
* "Document Too Small; Image Error". Viaja crudo a propósito: el mapeo a `CPStatusEnum.DOC_*`
|
|
18
|
+
* vive junto al resto de las reglas de onboarding, no en el webhook.
|
|
19
|
+
*/
|
|
20
|
+
kycReasonCode?: string;
|
|
21
|
+
/**
|
|
22
|
+
* Link de IDology para volver a escanear el documento
|
|
23
|
+
* (`payload.additional_data.document_scan_url`). Presente en el 100 % de los rechazos
|
|
24
|
+
* observados en producción.
|
|
25
|
+
*/
|
|
26
|
+
documentScanUrl?: string;
|
|
13
27
|
}
|
|
@@ -46,3 +46,13 @@ __decorate([
|
|
|
46
46
|
(0, class_transformer_1.Type)(() => KycVendorResultDetail_1.KycVendorResultDetail),
|
|
47
47
|
__metadata("design:type", Array)
|
|
48
48
|
], CardUpdateIssuanceRequest.prototype, "kycVendorResults", void 0);
|
|
49
|
+
__decorate([
|
|
50
|
+
(0, class_validator_1.IsOptional)(),
|
|
51
|
+
(0, class_validator_1.IsString)(),
|
|
52
|
+
__metadata("design:type", String)
|
|
53
|
+
], CardUpdateIssuanceRequest.prototype, "kycReasonCode", void 0);
|
|
54
|
+
__decorate([
|
|
55
|
+
(0, class_validator_1.IsOptional)(),
|
|
56
|
+
(0, class_validator_1.IsString)(),
|
|
57
|
+
__metadata("design:type", String)
|
|
58
|
+
], CardUpdateIssuanceRequest.prototype, "documentScanUrl", void 0);
|
|
@@ -7,5 +7,11 @@ export declare enum KycStatus {
|
|
|
7
7
|
DOCUMENT_ERROR = "DOCUMENT_ERROR",
|
|
8
8
|
PENDING_OOW_QUESTIONS = "PENDING_OOW_QUESTIONS",
|
|
9
9
|
INCOMPLETE_OOW_ANSWERS = "INCOMPLETE_OOW_ANSWERS",
|
|
10
|
-
OOW_EXPIRED = "OOW_EXPIRED"
|
|
10
|
+
OOW_EXPIRED = "OOW_EXPIRED",
|
|
11
|
+
/**
|
|
12
|
+
* CP rechazó el documento. Es el `kyc_status` del evento `cardholder.kyc.document_rejected`, y
|
|
13
|
+
* es GENÉRICO: el motivo real viaja como texto libre de IDology en `kyc_reason_codes[0]` y se
|
|
14
|
+
* mapea a los `CPStatusEnum.DOC_*` (ver documentRejection en onboarding-business).
|
|
15
|
+
*/
|
|
16
|
+
DOCUMENT_REJECTED = "DOCUMENT_REJECTED"
|
|
11
17
|
}
|
|
@@ -12,4 +12,10 @@ var KycStatus;
|
|
|
12
12
|
KycStatus["PENDING_OOW_QUESTIONS"] = "PENDING_OOW_QUESTIONS";
|
|
13
13
|
KycStatus["INCOMPLETE_OOW_ANSWERS"] = "INCOMPLETE_OOW_ANSWERS";
|
|
14
14
|
KycStatus["OOW_EXPIRED"] = "OOW_EXPIRED";
|
|
15
|
+
/**
|
|
16
|
+
* CP rechazó el documento. Es el `kyc_status` del evento `cardholder.kyc.document_rejected`, y
|
|
17
|
+
* es GENÉRICO: el motivo real viaja como texto libre de IDology en `kyc_reason_codes[0]` y se
|
|
18
|
+
* mapea a los `CPStatusEnum.DOC_*` (ver documentRejection en onboarding-business).
|
|
19
|
+
*/
|
|
20
|
+
KycStatus["DOCUMENT_REJECTED"] = "DOCUMENT_REJECTED";
|
|
15
21
|
})(KycStatus || (exports.KycStatus = KycStatus = {}));
|
|
@@ -36,7 +36,6 @@ export declare class RetailCustomer {
|
|
|
36
36
|
fiadoDirectoryId: string | null;
|
|
37
37
|
fiadoPeopleId: string | null;
|
|
38
38
|
pcfAccountId: string | null;
|
|
39
|
-
pcfClabe: string | null;
|
|
40
39
|
pcfAccountLevel: 1 | 2 | null;
|
|
41
40
|
accountStatus: AccountStatusEnum | null;
|
|
42
41
|
failReason: string | null;
|
|
@@ -125,12 +125,6 @@ __decorate([
|
|
|
125
125
|
(0, class_validator_1.IsString)(),
|
|
126
126
|
__metadata("design:type", String)
|
|
127
127
|
], RetailCustomer.prototype, "pcfAccountId", void 0);
|
|
128
|
-
__decorate([
|
|
129
|
-
(0, class_transformer_1.Expose)(),
|
|
130
|
-
(0, class_validator_1.IsOptional)(),
|
|
131
|
-
(0, class_validator_1.IsString)(),
|
|
132
|
-
__metadata("design:type", String)
|
|
133
|
-
], RetailCustomer.prototype, "pcfClabe", void 0);
|
|
134
128
|
__decorate([
|
|
135
129
|
(0, class_transformer_1.Expose)(),
|
|
136
130
|
(0, class_validator_1.IsOptional)(),
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
import { AccountStatusEnum } from '../../enums/AccountStatusEnum';
|
|
2
2
|
/**
|
|
3
3
|
* Resultado de la apertura de cuenta async (D35) — lo escribe el consumer `account-inbound` al
|
|
4
|
-
* aterrizar el evento `AccountIssuanceCompleted`. OPEN llega con `
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* aterrizar el evento `AccountIssuanceCompleted`. OPEN llega con `pcfAccountLevel`; FAILED llega con
|
|
5
|
+
* `failReason`. El endpoint SOLO acepta el resultado terminal (OPEN/FAILED), nunca el estado
|
|
6
|
+
* intermedio OPENING (ese lo setea el server en el upsert). SureKeep Fase 2 — pista Retail.
|
|
7
7
|
*/
|
|
8
8
|
export declare class AccountResultRequest {
|
|
9
9
|
status: AccountStatusEnum;
|
|
10
|
-
pcfClabe?: string;
|
|
11
10
|
pcfAccountLevel?: 1 | 2;
|
|
12
11
|
failReason?: string;
|
|
13
12
|
}
|
|
@@ -15,9 +15,9 @@ const class_validator_1 = require("class-validator");
|
|
|
15
15
|
const AccountStatusEnum_1 = require("../../enums/AccountStatusEnum");
|
|
16
16
|
/**
|
|
17
17
|
* Resultado de la apertura de cuenta async (D35) — lo escribe el consumer `account-inbound` al
|
|
18
|
-
* aterrizar el evento `AccountIssuanceCompleted`. OPEN llega con `
|
|
19
|
-
*
|
|
20
|
-
*
|
|
18
|
+
* aterrizar el evento `AccountIssuanceCompleted`. OPEN llega con `pcfAccountLevel`; FAILED llega con
|
|
19
|
+
* `failReason`. El endpoint SOLO acepta el resultado terminal (OPEN/FAILED), nunca el estado
|
|
20
|
+
* intermedio OPENING (ese lo setea el server en el upsert). SureKeep Fase 2 — pista Retail.
|
|
21
21
|
*/
|
|
22
22
|
class AccountResultRequest {
|
|
23
23
|
}
|
|
@@ -27,13 +27,6 @@ __decorate([
|
|
|
27
27
|
(0, class_validator_1.IsIn)([AccountStatusEnum_1.AccountStatusEnum.OPEN, AccountStatusEnum_1.AccountStatusEnum.FAILED]),
|
|
28
28
|
__metadata("design:type", String)
|
|
29
29
|
], AccountResultRequest.prototype, "status", void 0);
|
|
30
|
-
__decorate([
|
|
31
|
-
(0, class_transformer_1.Expose)(),
|
|
32
|
-
(0, class_validator_1.ValidateIf)((o) => o.status === AccountStatusEnum_1.AccountStatusEnum.OPEN),
|
|
33
|
-
(0, class_validator_1.IsString)(),
|
|
34
|
-
(0, class_validator_1.IsNotEmpty)({ message: 'pcfClabe es obligatorio cuando status es OPEN' }),
|
|
35
|
-
__metadata("design:type", String)
|
|
36
|
-
], AccountResultRequest.prototype, "pcfClabe", void 0);
|
|
37
30
|
__decorate([
|
|
38
31
|
(0, class_transformer_1.Expose)(),
|
|
39
32
|
(0, class_validator_1.IsOptional)(),
|
|
@@ -38,7 +38,6 @@ export declare class UpsertCustomerFromKycRequest {
|
|
|
38
38
|
fiadoDirectoryId: string;
|
|
39
39
|
fiadoPeopleId: string;
|
|
40
40
|
pcfAccountId?: string;
|
|
41
|
-
pcfClabe?: string;
|
|
42
41
|
pcfAccountLevel?: 1 | 2;
|
|
43
42
|
/**
|
|
44
43
|
* El cliente ya tenía una cuenta PCF ACTIVE en México (rama facematch). Si es `true`, el receptor
|
|
@@ -119,12 +119,6 @@ __decorate([
|
|
|
119
119
|
(0, class_validator_1.IsString)(),
|
|
120
120
|
__metadata("design:type", String)
|
|
121
121
|
], UpsertCustomerFromKycRequest.prototype, "pcfAccountId", void 0);
|
|
122
|
-
__decorate([
|
|
123
|
-
(0, class_transformer_1.Expose)(),
|
|
124
|
-
(0, class_validator_1.IsOptional)(),
|
|
125
|
-
(0, class_validator_1.IsString)(),
|
|
126
|
-
__metadata("design:type", String)
|
|
127
|
-
], UpsertCustomerFromKycRequest.prototype, "pcfClabe", void 0);
|
|
128
122
|
__decorate([
|
|
129
123
|
(0, class_transformer_1.Expose)(),
|
|
130
124
|
(0, class_validator_1.IsOptional)(),
|
|
@@ -35,7 +35,6 @@ export interface CustomerResponse {
|
|
|
35
35
|
fiadoDirectoryId: string | null;
|
|
36
36
|
fiadoPeopleId: string | null;
|
|
37
37
|
pcfAccountId: string | null;
|
|
38
|
-
pcfClabe: string | null;
|
|
39
38
|
pcfAccountLevel: 1 | 2 | null;
|
|
40
39
|
accountStatus: AccountStatusEnum | null;
|
|
41
40
|
failReason: string | null;
|
|
@@ -9,8 +9,6 @@ import { AccountStep } from '../AccountStep';
|
|
|
9
9
|
export interface AccountStatusResponse {
|
|
10
10
|
/** El comprador ya tiene cuenta PCF ACTIVE. Es el unico campo con el que el front destraba. */
|
|
11
11
|
accountReady: boolean;
|
|
12
|
-
/** CLABE de la cuenta. `null` mientras no haya cuenta. */
|
|
13
|
-
clabe: string | null;
|
|
14
12
|
/** Veredicto crudo del expediente, tal como lo publica el lambda de onboarding. */
|
|
15
13
|
verdict: AccountVerdictEnum;
|
|
16
14
|
/** Lectura accionable del veredicto: es lo que el front usa para decidir. */
|
package/package.json
CHANGED
|
@@ -31,4 +31,24 @@ export class CardUpdateIssuanceRequest {
|
|
|
31
31
|
@Type(() => KycVendorResultDetail)
|
|
32
32
|
kycVendorResults?: KycVendorResultDetail[];
|
|
33
33
|
|
|
34
|
+
/**
|
|
35
|
+
* Motivo del rechazo de documento, tal como lo manda IDology en `kyc_reason_codes[0]`.
|
|
36
|
+
*
|
|
37
|
+
* Es texto libre en inglés, con los motivos concatenados por "; " — por ejemplo
|
|
38
|
+
* "Document Too Small; Image Error". Viaja crudo a propósito: el mapeo a `CPStatusEnum.DOC_*`
|
|
39
|
+
* vive junto al resto de las reglas de onboarding, no en el webhook.
|
|
40
|
+
*/
|
|
41
|
+
@IsOptional()
|
|
42
|
+
@IsString()
|
|
43
|
+
kycReasonCode?: string;
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Link de IDology para volver a escanear el documento
|
|
47
|
+
* (`payload.additional_data.document_scan_url`). Presente en el 100 % de los rechazos
|
|
48
|
+
* observados en producción.
|
|
49
|
+
*/
|
|
50
|
+
@IsOptional()
|
|
51
|
+
@IsString()
|
|
52
|
+
documentScanUrl?: string;
|
|
53
|
+
|
|
34
54
|
}
|
|
@@ -10,5 +10,11 @@ export enum KycStatus {
|
|
|
10
10
|
DOCUMENT_ERROR = "DOCUMENT_ERROR",
|
|
11
11
|
PENDING_OOW_QUESTIONS = "PENDING_OOW_QUESTIONS",
|
|
12
12
|
INCOMPLETE_OOW_ANSWERS = "INCOMPLETE_OOW_ANSWERS",
|
|
13
|
-
OOW_EXPIRED = "OOW_EXPIRED"
|
|
13
|
+
OOW_EXPIRED = "OOW_EXPIRED",
|
|
14
|
+
/**
|
|
15
|
+
* CP rechazó el documento. Es el `kyc_status` del evento `cardholder.kyc.document_rejected`, y
|
|
16
|
+
* es GENÉRICO: el motivo real viaja como texto libre de IDology en `kyc_reason_codes[0]` y se
|
|
17
|
+
* mapea a los `CPStatusEnum.DOC_*` (ver documentRejection en onboarding-business).
|
|
18
|
+
*/
|
|
19
|
+
DOCUMENT_REJECTED = "DOCUMENT_REJECTED"
|
|
14
20
|
}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { Expose } from 'class-transformer';
|
|
2
|
-
import { IsIn,
|
|
2
|
+
import { IsIn, IsOptional, IsString } from 'class-validator';
|
|
3
3
|
import { AccountStatusEnum } from '../../enums/AccountStatusEnum';
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* Resultado de la apertura de cuenta async (D35) — lo escribe el consumer `account-inbound` al
|
|
7
|
-
* aterrizar el evento `AccountIssuanceCompleted`. OPEN llega con `
|
|
8
|
-
*
|
|
9
|
-
*
|
|
7
|
+
* aterrizar el evento `AccountIssuanceCompleted`. OPEN llega con `pcfAccountLevel`; FAILED llega con
|
|
8
|
+
* `failReason`. El endpoint SOLO acepta el resultado terminal (OPEN/FAILED), nunca el estado
|
|
9
|
+
* intermedio OPENING (ese lo setea el server en el upsert). SureKeep Fase 2 — pista Retail.
|
|
10
10
|
*/
|
|
11
11
|
export class AccountResultRequest {
|
|
12
12
|
// OPENING NO es un resultado válido del endpoint D35; solo el estado terminal OPEN/FAILED.
|
|
@@ -14,14 +14,6 @@ export class AccountResultRequest {
|
|
|
14
14
|
@IsIn([AccountStatusEnum.OPEN, AccountStatusEnum.FAILED])
|
|
15
15
|
status!: AccountStatusEnum;
|
|
16
16
|
|
|
17
|
-
// OPEN ⇒ pcfClabe obligatorio (la cuenta abierta sin CLABE es inconsistente). Para FAILED se omite
|
|
18
|
-
// (@ValidateIf desactiva los validators cuando status ≠ OPEN → queda opcional).
|
|
19
|
-
@Expose()
|
|
20
|
-
@ValidateIf((o: AccountResultRequest) => o.status === AccountStatusEnum.OPEN)
|
|
21
|
-
@IsString()
|
|
22
|
-
@IsNotEmpty({ message: 'pcfClabe es obligatorio cuando status es OPEN' })
|
|
23
|
-
pcfClabe?: string;
|
|
24
|
-
|
|
25
17
|
@Expose()
|
|
26
18
|
@IsOptional()
|
|
27
19
|
@IsIn([1, 2])
|
|
@@ -36,7 +36,6 @@ export interface CustomerResponse {
|
|
|
36
36
|
fiadoDirectoryId: string | null;
|
|
37
37
|
fiadoPeopleId: string | null;
|
|
38
38
|
pcfAccountId: string | null;
|
|
39
|
-
pcfClabe: string | null;
|
|
40
39
|
pcfAccountLevel: 1 | 2 | null;
|
|
41
40
|
accountStatus: AccountStatusEnum | null;
|
|
42
41
|
failReason: string | null;
|
|
@@ -10,8 +10,6 @@ import { AccountStep } from '../AccountStep';
|
|
|
10
10
|
export interface AccountStatusResponse {
|
|
11
11
|
/** El comprador ya tiene cuenta PCF ACTIVE. Es el unico campo con el que el front destraba. */
|
|
12
12
|
accountReady: boolean;
|
|
13
|
-
/** CLABE de la cuenta. `null` mientras no haya cuenta. */
|
|
14
|
-
clabe: string | null;
|
|
15
13
|
/** Veredicto crudo del expediente, tal como lo publica el lambda de onboarding. */
|
|
16
14
|
verdict: AccountVerdictEnum;
|
|
17
15
|
/** Lectura accionable del veredicto: es lo que el front usa para decidir. */
|