@fiado/type-kit 3.591.0 → 3.594.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/_test_/unit/card/WalletProvisioningRequest.test.ts +45 -0
- package/_test_/unit/retailIntegration/reconciliationContracts.test.ts +18 -0
- package/bin/card/dtos/Internal/PomeloThreeDSChallengeAnswerRequest.d.ts +5 -0
- package/bin/card/dtos/Internal/PomeloThreeDSChallengeAnswerRequest.js +8 -0
- package/bin/card/dtos/Internal/PomeloWalletProvisioningRequest.d.ts +8 -0
- package/bin/card/dtos/Internal/PomeloWalletProvisioningRequest.js +7 -0
- package/bin/card/dtos/ThreeDSChallengeAnswerRequest.d.ts +4 -0
- package/bin/card/dtos/ThreeDSChallengeAnswerRequest.js +21 -0
- package/bin/card/dtos/WalletProvisioningRequest.d.ts +14 -0
- package/bin/card/dtos/WalletProvisioningRequest.js +65 -0
- package/bin/card/enums/ThreeDSChallengeResult.d.ts +4 -0
- package/bin/card/enums/ThreeDSChallengeResult.js +8 -0
- package/bin/card/enums/WalletProvider.d.ts +4 -0
- package/bin/card/enums/WalletProvider.js +8 -0
- package/bin/card/index.d.ts +6 -0
- package/bin/card/index.js +6 -0
- package/bin/directory/dtos/AccountCreatedEventDetail.d.ts +16 -0
- package/bin/directory/dtos/AccountCreatedEventDetail.js +14 -0
- package/bin/directory/dtos/DirectoryUserScopeUpdateRequest.d.ts +5 -0
- package/bin/directory/dtos/DirectoryUserScopeUpdateRequest.js +34 -0
- package/bin/directory/index.d.ts +2 -0
- package/bin/directory/index.js +2 -0
- package/bin/retailIntegration/dtos/GetReconciliationResponses.d.ts +4 -0
- package/package.json +1 -1
- package/src/card/dtos/Internal/PomeloThreeDSChallengeAnswerRequest.ts +8 -0
- package/src/card/dtos/Internal/PomeloWalletProvisioningRequest.ts +10 -0
- package/src/card/dtos/ThreeDSChallengeAnswerRequest.ts +7 -0
- package/src/card/dtos/WalletProvisioningRequest.ts +43 -0
- package/src/card/enums/ThreeDSChallengeResult.ts +4 -0
- package/src/card/enums/WalletProvider.ts +4 -0
- package/src/card/index.ts +6 -0
- package/src/directory/dtos/AccountCreatedEventDetail.ts +21 -0
- package/src/directory/dtos/DirectoryUserScopeUpdateRequest.ts +19 -0
- package/src/directory/index.ts +2 -0
- package/src/retailIntegration/dtos/GetReconciliationResponses.ts +4 -0
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import 'reflect-metadata';
|
|
2
|
+
import { plainToInstance } from 'class-transformer';
|
|
3
|
+
import { validate } from 'class-validator';
|
|
4
|
+
import { WalletProvisioningRequest } from '../../../src/card/dtos/WalletProvisioningRequest';
|
|
5
|
+
import { ThreeDSChallengeAnswerRequest } from '../../../src/card/dtos/ThreeDSChallengeAnswerRequest';
|
|
6
|
+
|
|
7
|
+
const errorsOf = (cls: any, body: unknown) => validate(plainToInstance(cls, body) as object);
|
|
8
|
+
|
|
9
|
+
describe('WalletProvisioningRequest', () => {
|
|
10
|
+
it('Apple con certificates, nonce y nonceSignature es válido', async () => {
|
|
11
|
+
const body = { wallet: 'APPLE_PAY', apple: { certificates: ['c1', 'c2'], nonce: 'bm9uY2U=', nonceSignature: 'c2ln' } };
|
|
12
|
+
expect(await errorsOf(WalletProvisioningRequest, body)).toHaveLength(0);
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
it('Apple sin el bloque apple es inválido', async () => {
|
|
16
|
+
expect((await errorsOf(WalletProvisioningRequest, { wallet: 'APPLE_PAY' })).length).toBeGreaterThan(0);
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
it('Apple con certificates vacío es inválido', async () => {
|
|
20
|
+
const body = { wallet: 'APPLE_PAY', apple: { certificates: [], nonce: 'n', nonceSignature: 's' } };
|
|
21
|
+
expect((await errorsOf(WalletProvisioningRequest, body)).length).toBeGreaterThan(0);
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
it('Google con serverSessionId es válido', async () => {
|
|
25
|
+
expect(await errorsOf(WalletProvisioningRequest, { wallet: 'GOOGLE_PAY', google: { serverSessionId: 'ssid' } })).toHaveLength(0);
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
it('Google sin serverSessionId es inválido', async () => {
|
|
29
|
+
expect((await errorsOf(WalletProvisioningRequest, { wallet: 'GOOGLE_PAY', google: {} })).length).toBeGreaterThan(0);
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
it('wallet desconocida es inválida', async () => {
|
|
33
|
+
expect((await errorsOf(WalletProvisioningRequest, { wallet: 'SAMSUNG_PAY' })).length).toBeGreaterThan(0);
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
describe('ThreeDSChallengeAnswerRequest', () => {
|
|
38
|
+
it('ACCEPTED es válido', async () => {
|
|
39
|
+
expect(await errorsOf(ThreeDSChallengeAnswerRequest, { result: 'ACCEPTED' })).toHaveLength(0);
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
it('un valor fuera del enum es inválido', async () => {
|
|
43
|
+
expect((await errorsOf(ThreeDSChallengeAnswerRequest, { result: 'MAYBE' })).length).toBeGreaterThan(0);
|
|
44
|
+
});
|
|
45
|
+
});
|
|
@@ -134,6 +134,24 @@ describe('respuestas de la revisión', () => {
|
|
|
134
134
|
};
|
|
135
135
|
expect(movements.movementsTo).toBe('2026-10-25T00:00:00.000Z');
|
|
136
136
|
});
|
|
137
|
+
|
|
138
|
+
it('GetCatalogReconciliationResponse separa tiendas abortadas de las inexistentes', () => {
|
|
139
|
+
const inventory: GetCatalogReconciliationResponse = {
|
|
140
|
+
runId: 'run-i',
|
|
141
|
+
retailerId: 'r-1',
|
|
142
|
+
entity: ReconciliationEntityEnum.INVENTORY,
|
|
143
|
+
status: ReconciliationRunStatusEnum.COMPLETE,
|
|
144
|
+
trigger: ReconciliationTriggerEnum.MANUAL,
|
|
145
|
+
startedAt: '2026-10-25T10:00:00.000Z',
|
|
146
|
+
pagesProcessed: 3,
|
|
147
|
+
storesPending: 0,
|
|
148
|
+
storesAborted: 2,
|
|
149
|
+
storesNotFound: 1,
|
|
150
|
+
counts: { seen: 0, created: 0, updated: 0, deactivated: 0, reactivated: 0, skipped: 0 },
|
|
151
|
+
};
|
|
152
|
+
expect(inventory.storesAborted).toBe(2);
|
|
153
|
+
expect(inventory.storesNotFound).toBe(1);
|
|
154
|
+
});
|
|
137
155
|
});
|
|
138
156
|
|
|
139
157
|
describe('revisión con excludeExtraneousValues', () => {
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PomeloThreeDSChallengeAnswerRequest = void 0;
|
|
4
|
+
// Body card-business → fiado-pomelo-v2-lambda (POST /threeds/challenges/{id}/answer).
|
|
5
|
+
// allowedCardIds: tarjetas Pomelo (crd-…) del usuario; pomelo-v2 rechaza si el challenge no es de una de ellas.
|
|
6
|
+
class PomeloThreeDSChallengeAnswerRequest {
|
|
7
|
+
}
|
|
8
|
+
exports.PomeloThreeDSChallengeAnswerRequest = PomeloThreeDSChallengeAnswerRequest;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { WalletProvider } from '../../enums/WalletProvider';
|
|
2
|
+
import { AppleWalletProvisioningData, GoogleWalletProvisioningData } from '../WalletProvisioningRequest';
|
|
3
|
+
export declare class PomeloWalletProvisioningRequest {
|
|
4
|
+
cardId: string;
|
|
5
|
+
wallet: WalletProvider;
|
|
6
|
+
apple?: AppleWalletProvisioningData;
|
|
7
|
+
google?: GoogleWalletProvisioningData;
|
|
8
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PomeloWalletProvisioningRequest = void 0;
|
|
4
|
+
// Body card-business → fiado-pomelo-v2-lambda (POST /tokenization/provisioning).
|
|
5
|
+
class PomeloWalletProvisioningRequest {
|
|
6
|
+
}
|
|
7
|
+
exports.PomeloWalletProvisioningRequest = PomeloWalletProvisioningRequest;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.ThreeDSChallengeAnswerRequest = void 0;
|
|
13
|
+
const class_validator_1 = require("class-validator");
|
|
14
|
+
const ThreeDSChallengeResult_1 = require("../enums/ThreeDSChallengeResult");
|
|
15
|
+
class ThreeDSChallengeAnswerRequest {
|
|
16
|
+
}
|
|
17
|
+
exports.ThreeDSChallengeAnswerRequest = ThreeDSChallengeAnswerRequest;
|
|
18
|
+
__decorate([
|
|
19
|
+
(0, class_validator_1.IsEnum)(ThreeDSChallengeResult_1.ThreeDSChallengeResult),
|
|
20
|
+
__metadata("design:type", String)
|
|
21
|
+
], ThreeDSChallengeAnswerRequest.prototype, "result", void 0);
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { WalletProvider } from '../enums/WalletProvider';
|
|
2
|
+
export declare class AppleWalletProvisioningData {
|
|
3
|
+
certificates: string[];
|
|
4
|
+
nonce: string;
|
|
5
|
+
nonceSignature: string;
|
|
6
|
+
}
|
|
7
|
+
export declare class GoogleWalletProvisioningData {
|
|
8
|
+
serverSessionId: string;
|
|
9
|
+
}
|
|
10
|
+
export declare class WalletProvisioningRequest {
|
|
11
|
+
wallet: WalletProvider;
|
|
12
|
+
apple?: AppleWalletProvisioningData;
|
|
13
|
+
google?: GoogleWalletProvisioningData;
|
|
14
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.WalletProvisioningRequest = exports.GoogleWalletProvisioningData = exports.AppleWalletProvisioningData = void 0;
|
|
13
|
+
const class_transformer_1 = require("class-transformer");
|
|
14
|
+
const class_validator_1 = require("class-validator");
|
|
15
|
+
const WalletProvider_1 = require("../enums/WalletProvider");
|
|
16
|
+
// Datos que entrega Apple (PKAddPaymentPassViewController) a la app. Se reenvían tal cual a Pomelo.
|
|
17
|
+
class AppleWalletProvisioningData {
|
|
18
|
+
}
|
|
19
|
+
exports.AppleWalletProvisioningData = AppleWalletProvisioningData;
|
|
20
|
+
__decorate([
|
|
21
|
+
(0, class_validator_1.IsArray)(),
|
|
22
|
+
(0, class_validator_1.ArrayNotEmpty)(),
|
|
23
|
+
(0, class_validator_1.IsString)({ each: true }),
|
|
24
|
+
__metadata("design:type", Array)
|
|
25
|
+
], AppleWalletProvisioningData.prototype, "certificates", void 0);
|
|
26
|
+
__decorate([
|
|
27
|
+
(0, class_validator_1.IsString)(),
|
|
28
|
+
(0, class_validator_1.IsNotEmpty)(),
|
|
29
|
+
__metadata("design:type", String)
|
|
30
|
+
], AppleWalletProvisioningData.prototype, "nonce", void 0);
|
|
31
|
+
__decorate([
|
|
32
|
+
(0, class_validator_1.IsString)(),
|
|
33
|
+
(0, class_validator_1.IsNotEmpty)(),
|
|
34
|
+
__metadata("design:type", String)
|
|
35
|
+
], AppleWalletProvisioningData.prototype, "nonceSignature", void 0);
|
|
36
|
+
// Dato que entrega el SDK TapAndPay de Google a la app.
|
|
37
|
+
class GoogleWalletProvisioningData {
|
|
38
|
+
}
|
|
39
|
+
exports.GoogleWalletProvisioningData = GoogleWalletProvisioningData;
|
|
40
|
+
__decorate([
|
|
41
|
+
(0, class_validator_1.IsString)(),
|
|
42
|
+
(0, class_validator_1.IsNotEmpty)(),
|
|
43
|
+
__metadata("design:type", String)
|
|
44
|
+
], GoogleWalletProvisioningData.prototype, "serverSessionId", void 0);
|
|
45
|
+
class WalletProvisioningRequest {
|
|
46
|
+
}
|
|
47
|
+
exports.WalletProvisioningRequest = WalletProvisioningRequest;
|
|
48
|
+
__decorate([
|
|
49
|
+
(0, class_validator_1.IsEnum)(WalletProvider_1.WalletProvider),
|
|
50
|
+
__metadata("design:type", String)
|
|
51
|
+
], WalletProvisioningRequest.prototype, "wallet", void 0);
|
|
52
|
+
__decorate([
|
|
53
|
+
(0, class_validator_1.ValidateIf)(o => o.wallet === WalletProvider_1.WalletProvider.APPLE_PAY),
|
|
54
|
+
(0, class_validator_1.IsDefined)(),
|
|
55
|
+
(0, class_validator_1.ValidateNested)(),
|
|
56
|
+
(0, class_transformer_1.Type)(() => AppleWalletProvisioningData),
|
|
57
|
+
__metadata("design:type", AppleWalletProvisioningData)
|
|
58
|
+
], WalletProvisioningRequest.prototype, "apple", void 0);
|
|
59
|
+
__decorate([
|
|
60
|
+
(0, class_validator_1.ValidateIf)(o => o.wallet === WalletProvider_1.WalletProvider.GOOGLE_PAY),
|
|
61
|
+
(0, class_validator_1.IsDefined)(),
|
|
62
|
+
(0, class_validator_1.ValidateNested)(),
|
|
63
|
+
(0, class_transformer_1.Type)(() => GoogleWalletProvisioningData),
|
|
64
|
+
__metadata("design:type", GoogleWalletProvisioningData)
|
|
65
|
+
], WalletProvisioningRequest.prototype, "google", void 0);
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ThreeDSChallengeResult = void 0;
|
|
4
|
+
var ThreeDSChallengeResult;
|
|
5
|
+
(function (ThreeDSChallengeResult) {
|
|
6
|
+
ThreeDSChallengeResult["ACCEPTED"] = "ACCEPTED";
|
|
7
|
+
ThreeDSChallengeResult["REJECTED"] = "REJECTED";
|
|
8
|
+
})(ThreeDSChallengeResult || (exports.ThreeDSChallengeResult = ThreeDSChallengeResult = {}));
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WalletProvider = void 0;
|
|
4
|
+
var WalletProvider;
|
|
5
|
+
(function (WalletProvider) {
|
|
6
|
+
WalletProvider["APPLE_PAY"] = "APPLE_PAY";
|
|
7
|
+
WalletProvider["GOOGLE_PAY"] = "GOOGLE_PAY";
|
|
8
|
+
})(WalletProvider || (exports.WalletProvider = WalletProvider = {}));
|
package/bin/card/index.d.ts
CHANGED
|
@@ -74,3 +74,9 @@ export * from './enums/PinChangedStatus';
|
|
|
74
74
|
export * from './constants/LevelOneAutoIssuanceTags';
|
|
75
75
|
export * from './enums/CardAuditActorType';
|
|
76
76
|
export * from './dtos/CardAuditInfo';
|
|
77
|
+
export * from './enums/WalletProvider';
|
|
78
|
+
export * from './enums/ThreeDSChallengeResult';
|
|
79
|
+
export * from './dtos/WalletProvisioningRequest';
|
|
80
|
+
export * from './dtos/ThreeDSChallengeAnswerRequest';
|
|
81
|
+
export * from './dtos/Internal/PomeloWalletProvisioningRequest';
|
|
82
|
+
export * from './dtos/Internal/PomeloThreeDSChallengeAnswerRequest';
|
package/bin/card/index.js
CHANGED
|
@@ -93,3 +93,9 @@ __exportStar(require("./enums/PinChangedStatus"), exports);
|
|
|
93
93
|
__exportStar(require("./constants/LevelOneAutoIssuanceTags"), exports);
|
|
94
94
|
__exportStar(require("./enums/CardAuditActorType"), exports);
|
|
95
95
|
__exportStar(require("./dtos/CardAuditInfo"), exports);
|
|
96
|
+
__exportStar(require("./enums/WalletProvider"), exports);
|
|
97
|
+
__exportStar(require("./enums/ThreeDSChallengeResult"), exports);
|
|
98
|
+
__exportStar(require("./dtos/WalletProvisioningRequest"), exports);
|
|
99
|
+
__exportStar(require("./dtos/ThreeDSChallengeAnswerRequest"), exports);
|
|
100
|
+
__exportStar(require("./dtos/Internal/PomeloWalletProvisioningRequest"), exports);
|
|
101
|
+
__exportStar(require("./dtos/Internal/PomeloThreeDSChallengeAnswerRequest"), exports);
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { CountryId } from "../../country/enums/CountryId";
|
|
2
|
+
export declare const DIRECTORY_EVENTS_SOURCE = "fiado.directory";
|
|
3
|
+
export declare enum DirectoryEventDetailTypeEnum {
|
|
4
|
+
/** Alta real del scope de un país (fiado.mx o fiado.us) en el directorio: la cuenta de ese lado quedó abierta. */
|
|
5
|
+
ACCOUNT_CREATED = "AccountCreated"
|
|
6
|
+
}
|
|
7
|
+
export declare class AccountCreatedEventDetail {
|
|
8
|
+
/** Fijo por directorio y país (`<countryId>#<directoryId>`): un reenvío llega con el mismo id y el consumidor lo descarta. */
|
|
9
|
+
eventId: string;
|
|
10
|
+
directoryId: string;
|
|
11
|
+
peopleId: string;
|
|
12
|
+
/** CountryId.MEX (484) o CountryId.USA (840). */
|
|
13
|
+
countryId: CountryId;
|
|
14
|
+
/** ISO 8601 del momento en que se guardó el scope. */
|
|
15
|
+
occurredAt: string;
|
|
16
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AccountCreatedEventDetail = exports.DirectoryEventDetailTypeEnum = exports.DIRECTORY_EVENTS_SOURCE = void 0;
|
|
4
|
+
// Origen de los eventos de EventBridge que publica directory-business.
|
|
5
|
+
exports.DIRECTORY_EVENTS_SOURCE = "fiado.directory";
|
|
6
|
+
var DirectoryEventDetailTypeEnum;
|
|
7
|
+
(function (DirectoryEventDetailTypeEnum) {
|
|
8
|
+
/** Alta real del scope de un país (fiado.mx o fiado.us) en el directorio: la cuenta de ese lado quedó abierta. */
|
|
9
|
+
DirectoryEventDetailTypeEnum["ACCOUNT_CREATED"] = "AccountCreated";
|
|
10
|
+
})(DirectoryEventDetailTypeEnum || (exports.DirectoryEventDetailTypeEnum = DirectoryEventDetailTypeEnum = {}));
|
|
11
|
+
// `detail` del evento AccountCreated. Sale uno por país dado de alta.
|
|
12
|
+
class AccountCreatedEventDetail {
|
|
13
|
+
}
|
|
14
|
+
exports.AccountCreatedEventDetail = AccountCreatedEventDetail;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.DirectoryUserScopeUpdateRequest = void 0;
|
|
13
|
+
const class_validator_1 = require("class-validator");
|
|
14
|
+
// Body de POST /directories/users/scope (directory-business), sucesor de updateScope de fiado-directory-lambda.
|
|
15
|
+
// `scope` es el arreglo COMPLETO que queda guardado, no un delta. Se valida como string y no contra el enum
|
|
16
|
+
// Scope porque los llamadores reenvían el arreglo que ya tenía el directorio, como en v1.
|
|
17
|
+
class DirectoryUserScopeUpdateRequest {
|
|
18
|
+
}
|
|
19
|
+
exports.DirectoryUserScopeUpdateRequest = DirectoryUserScopeUpdateRequest;
|
|
20
|
+
__decorate([
|
|
21
|
+
(0, class_validator_1.IsString)(),
|
|
22
|
+
(0, class_validator_1.IsNotEmpty)(),
|
|
23
|
+
__metadata("design:type", String)
|
|
24
|
+
], DirectoryUserScopeUpdateRequest.prototype, "directoryId", void 0);
|
|
25
|
+
__decorate([
|
|
26
|
+
(0, class_validator_1.IsArray)(),
|
|
27
|
+
(0, class_validator_1.IsString)({ each: true }),
|
|
28
|
+
__metadata("design:type", Array)
|
|
29
|
+
], DirectoryUserScopeUpdateRequest.prototype, "scope", void 0);
|
|
30
|
+
__decorate([
|
|
31
|
+
(0, class_validator_1.IsOptional)(),
|
|
32
|
+
(0, class_validator_1.IsString)(),
|
|
33
|
+
__metadata("design:type", String)
|
|
34
|
+
], DirectoryUserScopeUpdateRequest.prototype, "app", void 0);
|
package/bin/directory/index.d.ts
CHANGED
|
@@ -8,6 +8,8 @@ export * from './dtos/CreateDirectoryUserEventResponse';
|
|
|
8
8
|
export * from './dtos/DeleteByDirectoryResponse';
|
|
9
9
|
export * from './dtos/DirectoryAgentsBySponsorRequest';
|
|
10
10
|
export * from './dtos/DirectoryAgentsBySponsorResponse';
|
|
11
|
+
export * from './dtos/DirectoryUserScopeUpdateRequest';
|
|
12
|
+
export * from './dtos/AccountCreatedEventDetail';
|
|
11
13
|
export * from './dtos/External';
|
|
12
14
|
export * from './enums/TypeOfDirectoryId';
|
|
13
15
|
export * from './enums/DirectoryBackofficeStatusEnum';
|
package/bin/directory/index.js
CHANGED
|
@@ -25,6 +25,8 @@ __exportStar(require("./dtos/CreateDirectoryUserEventResponse"), exports);
|
|
|
25
25
|
__exportStar(require("./dtos/DeleteByDirectoryResponse"), exports);
|
|
26
26
|
__exportStar(require("./dtos/DirectoryAgentsBySponsorRequest"), exports);
|
|
27
27
|
__exportStar(require("./dtos/DirectoryAgentsBySponsorResponse"), exports);
|
|
28
|
+
__exportStar(require("./dtos/DirectoryUserScopeUpdateRequest"), exports);
|
|
29
|
+
__exportStar(require("./dtos/AccountCreatedEventDetail"), exports);
|
|
28
30
|
__exportStar(require("./dtos/External"), exports);
|
|
29
31
|
//enums
|
|
30
32
|
__exportStar(require("./enums/TypeOfDirectoryId"), exports);
|
|
@@ -31,6 +31,10 @@ export interface GetCatalogReconciliationResponse {
|
|
|
31
31
|
storeId?: string;
|
|
32
32
|
/** Tiendas de inventario que faltan por cerrar. */
|
|
33
33
|
storesPending?: number;
|
|
34
|
+
/** Tiendas de inventario cerradas como ABORTED (reintentos agotados, renglón sin id, etc.). */
|
|
35
|
+
storesAborted?: number;
|
|
36
|
+
/** Tiendas cerradas porque no existen en el retailer (404 STORE_NOT_FOUND); no cuentan en storesAborted. */
|
|
37
|
+
storesNotFound?: number;
|
|
34
38
|
/** Inicio ISO de la ventana revisada en movimientos. */
|
|
35
39
|
movementsFrom?: string;
|
|
36
40
|
/** Fin ISO de la ventana revisada en movimientos. */
|
package/package.json
CHANGED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ThreeDSChallengeResult } from '../../enums/ThreeDSChallengeResult';
|
|
2
|
+
|
|
3
|
+
// Body card-business → fiado-pomelo-v2-lambda (POST /threeds/challenges/{id}/answer).
|
|
4
|
+
// allowedCardIds: tarjetas Pomelo (crd-…) del usuario; pomelo-v2 rechaza si el challenge no es de una de ellas.
|
|
5
|
+
export class PomeloThreeDSChallengeAnswerRequest {
|
|
6
|
+
result: ThreeDSChallengeResult;
|
|
7
|
+
allowedCardIds: string[];
|
|
8
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { WalletProvider } from '../../enums/WalletProvider';
|
|
2
|
+
import { AppleWalletProvisioningData, GoogleWalletProvisioningData } from '../WalletProvisioningRequest';
|
|
3
|
+
|
|
4
|
+
// Body card-business → fiado-pomelo-v2-lambda (POST /tokenization/provisioning).
|
|
5
|
+
export class PomeloWalletProvisioningRequest {
|
|
6
|
+
cardId: string; // id de la tarjeta en Pomelo (crd-…)
|
|
7
|
+
wallet: WalletProvider;
|
|
8
|
+
apple?: AppleWalletProvisioningData;
|
|
9
|
+
google?: GoogleWalletProvisioningData;
|
|
10
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { Type } from 'class-transformer';
|
|
2
|
+
import { ArrayNotEmpty, IsArray, IsDefined, IsEnum, IsNotEmpty, IsString, ValidateIf, ValidateNested } from 'class-validator';
|
|
3
|
+
import { WalletProvider } from '../enums/WalletProvider';
|
|
4
|
+
|
|
5
|
+
// Datos que entrega Apple (PKAddPaymentPassViewController) a la app. Se reenvían tal cual a Pomelo.
|
|
6
|
+
export class AppleWalletProvisioningData {
|
|
7
|
+
@IsArray()
|
|
8
|
+
@ArrayNotEmpty()
|
|
9
|
+
@IsString({ each: true })
|
|
10
|
+
certificates: string[];
|
|
11
|
+
|
|
12
|
+
@IsString()
|
|
13
|
+
@IsNotEmpty()
|
|
14
|
+
nonce: string;
|
|
15
|
+
|
|
16
|
+
@IsString()
|
|
17
|
+
@IsNotEmpty()
|
|
18
|
+
nonceSignature: string;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
// Dato que entrega el SDK TapAndPay de Google a la app.
|
|
22
|
+
export class GoogleWalletProvisioningData {
|
|
23
|
+
@IsString()
|
|
24
|
+
@IsNotEmpty()
|
|
25
|
+
serverSessionId: string;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export class WalletProvisioningRequest {
|
|
29
|
+
@IsEnum(WalletProvider)
|
|
30
|
+
wallet: WalletProvider;
|
|
31
|
+
|
|
32
|
+
@ValidateIf(o => o.wallet === WalletProvider.APPLE_PAY)
|
|
33
|
+
@IsDefined()
|
|
34
|
+
@ValidateNested()
|
|
35
|
+
@Type(() => AppleWalletProvisioningData)
|
|
36
|
+
apple?: AppleWalletProvisioningData;
|
|
37
|
+
|
|
38
|
+
@ValidateIf(o => o.wallet === WalletProvider.GOOGLE_PAY)
|
|
39
|
+
@IsDefined()
|
|
40
|
+
@ValidateNested()
|
|
41
|
+
@Type(() => GoogleWalletProvisioningData)
|
|
42
|
+
google?: GoogleWalletProvisioningData;
|
|
43
|
+
}
|
package/src/card/index.ts
CHANGED
|
@@ -80,3 +80,9 @@ export * from './enums/PinChangedStatus'
|
|
|
80
80
|
export * from './constants/LevelOneAutoIssuanceTags';
|
|
81
81
|
export * from './enums/CardAuditActorType';
|
|
82
82
|
export * from './dtos/CardAuditInfo';
|
|
83
|
+
export * from './enums/WalletProvider';
|
|
84
|
+
export * from './enums/ThreeDSChallengeResult';
|
|
85
|
+
export * from './dtos/WalletProvisioningRequest';
|
|
86
|
+
export * from './dtos/ThreeDSChallengeAnswerRequest';
|
|
87
|
+
export * from './dtos/Internal/PomeloWalletProvisioningRequest';
|
|
88
|
+
export * from './dtos/Internal/PomeloThreeDSChallengeAnswerRequest';
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { CountryId } from "../../country/enums/CountryId";
|
|
2
|
+
|
|
3
|
+
// Origen de los eventos de EventBridge que publica directory-business.
|
|
4
|
+
export const DIRECTORY_EVENTS_SOURCE = "fiado.directory";
|
|
5
|
+
|
|
6
|
+
export enum DirectoryEventDetailTypeEnum {
|
|
7
|
+
/** Alta real del scope de un país (fiado.mx o fiado.us) en el directorio: la cuenta de ese lado quedó abierta. */
|
|
8
|
+
ACCOUNT_CREATED = "AccountCreated",
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
// `detail` del evento AccountCreated. Sale uno por país dado de alta.
|
|
12
|
+
export class AccountCreatedEventDetail {
|
|
13
|
+
/** Fijo por directorio y país (`<countryId>#<directoryId>`): un reenvío llega con el mismo id y el consumidor lo descarta. */
|
|
14
|
+
eventId!: string;
|
|
15
|
+
directoryId!: string;
|
|
16
|
+
peopleId!: string;
|
|
17
|
+
/** CountryId.MEX (484) o CountryId.USA (840). */
|
|
18
|
+
countryId!: CountryId;
|
|
19
|
+
/** ISO 8601 del momento en que se guardó el scope. */
|
|
20
|
+
occurredAt!: string;
|
|
21
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { IsArray, IsNotEmpty, IsOptional, IsString } from "class-validator";
|
|
2
|
+
|
|
3
|
+
// Body de POST /directories/users/scope (directory-business), sucesor de updateScope de fiado-directory-lambda.
|
|
4
|
+
// `scope` es el arreglo COMPLETO que queda guardado, no un delta. Se valida como string y no contra el enum
|
|
5
|
+
// Scope porque los llamadores reenvían el arreglo que ya tenía el directorio, como en v1.
|
|
6
|
+
export class DirectoryUserScopeUpdateRequest {
|
|
7
|
+
@IsString()
|
|
8
|
+
@IsNotEmpty()
|
|
9
|
+
directoryId!: string;
|
|
10
|
+
|
|
11
|
+
@IsArray()
|
|
12
|
+
@IsString({ each: true })
|
|
13
|
+
scope!: string[];
|
|
14
|
+
|
|
15
|
+
// App de origen tomada del token por quien llama; decide si se puede pedir el lado americano.
|
|
16
|
+
@IsOptional()
|
|
17
|
+
@IsString()
|
|
18
|
+
app?: string | null;
|
|
19
|
+
}
|
package/src/directory/index.ts
CHANGED
|
@@ -10,6 +10,8 @@ export * from './dtos/CreateDirectoryUserEventResponse';
|
|
|
10
10
|
export * from './dtos/DeleteByDirectoryResponse';
|
|
11
11
|
export * from './dtos/DirectoryAgentsBySponsorRequest';
|
|
12
12
|
export * from './dtos/DirectoryAgentsBySponsorResponse';
|
|
13
|
+
export * from './dtos/DirectoryUserScopeUpdateRequest';
|
|
14
|
+
export * from './dtos/AccountCreatedEventDetail';
|
|
13
15
|
|
|
14
16
|
export * from './dtos/External';
|
|
15
17
|
|
|
@@ -33,6 +33,10 @@ export interface GetCatalogReconciliationResponse {
|
|
|
33
33
|
storeId?: string;
|
|
34
34
|
/** Tiendas de inventario que faltan por cerrar. */
|
|
35
35
|
storesPending?: number;
|
|
36
|
+
/** Tiendas de inventario cerradas como ABORTED (reintentos agotados, renglón sin id, etc.). */
|
|
37
|
+
storesAborted?: number;
|
|
38
|
+
/** Tiendas cerradas porque no existen en el retailer (404 STORE_NOT_FOUND); no cuentan en storesAborted. */
|
|
39
|
+
storesNotFound?: number;
|
|
36
40
|
/** Inicio ISO de la ventana revisada en movimientos. */
|
|
37
41
|
movementsFrom?: string;
|
|
38
42
|
/** Fin ISO de la ventana revisada en movimientos. */
|