@fiado/type-kit 3.121.0 → 3.123.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/transactionProcessor/dtos/PublishFiadoTxRequest.d.ts +30 -0
- package/bin/transactionProcessor/dtos/PublishFiadoTxRequest.js +45 -0
- package/bin/transactionProcessor/dtos/PublishFiadoTxResponse.d.ts +14 -0
- package/bin/transactionProcessor/dtos/PublishFiadoTxResponse.js +2 -0
- package/bin/transactionProcessor/index.d.ts +2 -0
- package/bin/transactionProcessor/index.js +2 -0
- package/bin/walletFunding/dtos/CancelFundingReferenceRequest.d.ts +2 -1
- package/bin/walletFunding/dtos/CancelFundingReferenceRequest.js +1 -1
- package/bin/walletFunding/dtos/CancelFundingReferenceResponse.d.ts +1 -1
- package/bin/walletFunding/dtos/CancelFundingRequest.d.ts +1 -1
- package/bin/walletFunding/dtos/CancelFundingRequest.js +1 -1
- package/bin/walletFunding/dtos/CancelFundingResponse.d.ts +1 -1
- package/bin/walletFunding/dtos/CancelWalletFundingResponse.d.ts +1 -1
- package/bin/walletFunding/dtos/SettleWalletFundingRequest.d.ts +43 -0
- package/bin/walletFunding/dtos/SettleWalletFundingRequest.js +76 -0
- package/bin/walletFunding/dtos/SettleWalletFundingResponse.d.ts +36 -0
- package/bin/walletFunding/dtos/SettleWalletFundingResponse.js +2 -0
- package/bin/walletFunding/dtos/index.d.ts +2 -0
- package/bin/walletFunding/dtos/index.js +2 -0
- package/bin/walletFunding/enums/SettlementErrorCodeEnum.d.ts +25 -0
- package/bin/walletFunding/enums/SettlementErrorCodeEnum.js +29 -0
- package/bin/walletFunding/enums/index.d.ts +1 -0
- package/bin/walletFunding/enums/index.js +1 -0
- package/bin/walletFunding/index.d.ts +1 -0
- package/bin/walletFunding/index.js +1 -0
- package/bin/walletFunding/schemas/AccountPagoConfiadoSchema.d.ts +37 -0
- package/bin/walletFunding/schemas/AccountPagoConfiadoSchema.js +41 -0
- package/bin/walletFunding/schemas/EqualityFundingPaymentSchema.d.ts +42 -0
- package/bin/walletFunding/schemas/EqualityFundingPaymentSchema.js +44 -0
- package/bin/walletFunding/schemas/index.d.ts +2 -0
- package/bin/{rbac → walletFunding/schemas}/index.js +2 -1
- package/package.json +1 -1
- package/src/transactionProcessor/dtos/PublishFiadoTxRequest.ts +34 -0
- package/src/transactionProcessor/dtos/PublishFiadoTxResponse.ts +14 -0
- package/src/transactionProcessor/index.ts +2 -0
- package/src/walletFunding/dtos/SettleWalletFundingRequest.ts +53 -0
- package/src/walletFunding/dtos/SettleWalletFundingResponse.ts +37 -0
- package/src/walletFunding/dtos/index.ts +2 -0
- package/src/walletFunding/enums/SettlementErrorCodeEnum.ts +25 -0
- package/src/walletFunding/enums/index.ts +1 -0
- package/src/walletFunding/index.ts +1 -0
- package/src/walletFunding/schemas/AccountPagoConfiadoSchema.ts +41 -0
- package/src/walletFunding/schemas/EqualityFundingPaymentSchema.ts +44 -0
- package/src/walletFunding/schemas/index.ts +2 -0
- package/bin/cognitoBackofficeConnector/dtos/MfaPoolConfig.d.ts +0 -7
- package/bin/cognitoBackofficeConnector/dtos/MfaPoolConfig.js +0 -36
- package/bin/cognitoBackofficeConnector/dtos/PoolConfigResponse.d.ts +0 -20
- package/bin/cognitoBackofficeConnector/dtos/PoolConfigResponse.js +0 -11
- package/bin/cognitoBackofficeConnector/dtos/PoolsListResponse.d.ts +0 -4
- package/bin/cognitoBackofficeConnector/dtos/PoolsListResponse.js +0 -6
- package/bin/cognitoBackofficeConnector/validators/MfaTypesRequiresOne.d.ts +0 -17
- package/bin/cognitoBackofficeConnector/validators/MfaTypesRequiresOne.js +0 -39
- package/bin/rbac/enums/PoolKind.d.ts +0 -16
- package/bin/rbac/enums/PoolKind.js +0 -20
- package/bin/rbac/index.d.ts +0 -1
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Request del endpoint `POST /wallet-funding/publish` del processor.
|
|
3
|
+
*
|
|
4
|
+
* Publica el evento de FiadoTx (tupla EQ_CASH_SA / CASH_IN del wallet-funding
|
|
5
|
+
* cash-in) al SQS `TRANSACTION_QUEUE` para que `transaction-business` lo
|
|
6
|
+
* consuma y persista en `FiadoTx_GT`.
|
|
7
|
+
*
|
|
8
|
+
* Best-effort: el caller (equality-connector post-settlement, o el cron de
|
|
9
|
+
* gap-reconciliation del mismo connector) debe tratar el error como
|
|
10
|
+
* recuperable — el reconciler T+0 rescata gaps que queden.
|
|
11
|
+
*
|
|
12
|
+
* Ver spec 15 §6.2 (processor mantiene ownership del SQS publish) + §5.1
|
|
13
|
+
* (reconciler en el connector).
|
|
14
|
+
*/
|
|
15
|
+
export declare class PublishFiadoTxRequest {
|
|
16
|
+
/** Identificador idempotente del evento. Sugerido: `${providerName}:${providerTxId}`. */
|
|
17
|
+
idempotencyKey: string;
|
|
18
|
+
/**
|
|
19
|
+
* Spec completo de la tupla FiadoTx a persistir. Shape generado por el
|
|
20
|
+
* processor en `walletFundingValidate()` (campo `fiadoTxSpec` de la response).
|
|
21
|
+
* El caller lo recibe del processor y lo reenvía sin modificar.
|
|
22
|
+
*
|
|
23
|
+
* Es `unknown` aquí (no tipado fuerte) porque el shape interno del processor
|
|
24
|
+
* puede cambiar sin breaking change para los callers — el processor es dueño
|
|
25
|
+
* del shape y de su serialización al SQS.
|
|
26
|
+
*/
|
|
27
|
+
fiadoTxSpec: Record<string, unknown>;
|
|
28
|
+
/** Contexto opcional para logs/auditoría (ej. "post-settlement" | "reconciler-gap"). */
|
|
29
|
+
origin?: string;
|
|
30
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
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.PublishFiadoTxRequest = void 0;
|
|
13
|
+
const class_validator_1 = require("class-validator");
|
|
14
|
+
/**
|
|
15
|
+
* Request del endpoint `POST /wallet-funding/publish` del processor.
|
|
16
|
+
*
|
|
17
|
+
* Publica el evento de FiadoTx (tupla EQ_CASH_SA / CASH_IN del wallet-funding
|
|
18
|
+
* cash-in) al SQS `TRANSACTION_QUEUE` para que `transaction-business` lo
|
|
19
|
+
* consuma y persista en `FiadoTx_GT`.
|
|
20
|
+
*
|
|
21
|
+
* Best-effort: el caller (equality-connector post-settlement, o el cron de
|
|
22
|
+
* gap-reconciliation del mismo connector) debe tratar el error como
|
|
23
|
+
* recuperable — el reconciler T+0 rescata gaps que queden.
|
|
24
|
+
*
|
|
25
|
+
* Ver spec 15 §6.2 (processor mantiene ownership del SQS publish) + §5.1
|
|
26
|
+
* (reconciler en el connector).
|
|
27
|
+
*/
|
|
28
|
+
class PublishFiadoTxRequest {
|
|
29
|
+
}
|
|
30
|
+
exports.PublishFiadoTxRequest = PublishFiadoTxRequest;
|
|
31
|
+
__decorate([
|
|
32
|
+
(0, class_validator_1.IsString)(),
|
|
33
|
+
(0, class_validator_1.MaxLength)(128),
|
|
34
|
+
__metadata("design:type", String)
|
|
35
|
+
], PublishFiadoTxRequest.prototype, "idempotencyKey", void 0);
|
|
36
|
+
__decorate([
|
|
37
|
+
(0, class_validator_1.IsObject)(),
|
|
38
|
+
__metadata("design:type", Object)
|
|
39
|
+
], PublishFiadoTxRequest.prototype, "fiadoTxSpec", void 0);
|
|
40
|
+
__decorate([
|
|
41
|
+
(0, class_validator_1.IsOptional)(),
|
|
42
|
+
(0, class_validator_1.IsString)(),
|
|
43
|
+
(0, class_validator_1.MaxLength)(64),
|
|
44
|
+
__metadata("design:type", String)
|
|
45
|
+
], PublishFiadoTxRequest.prototype, "origin", void 0);
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Response del endpoint `POST /wallet-funding/publish` del processor.
|
|
3
|
+
*
|
|
4
|
+
* Best-effort: status="FAILED" indica que el publish al SQS no se ejecutó
|
|
5
|
+
* (sqs.sendMessage falló). El caller debe loggear y continuar — el
|
|
6
|
+
* reconciler T+0 del connector eventualmente recuperará el gap.
|
|
7
|
+
*
|
|
8
|
+
* Ver spec 15 §6.2.
|
|
9
|
+
*/
|
|
10
|
+
export interface PublishFiadoTxResponse {
|
|
11
|
+
status: "OK" | "FAILED";
|
|
12
|
+
/** Mensaje breve para logs. Vacío en happy path. */
|
|
13
|
+
message?: string;
|
|
14
|
+
}
|
|
@@ -39,6 +39,8 @@ export * from './dtos/ProviderProcessServicePaymentTransactionRequest';
|
|
|
39
39
|
export * from './dtos/ProviderProcessServicePaymentTransactionResponse';
|
|
40
40
|
export * from './dtos/AuthorizeRenewalPreAuthRequest';
|
|
41
41
|
export * from './dtos/AuthorizeRenewalPreAuthResponse';
|
|
42
|
+
export * from './dtos/PublishFiadoTxRequest';
|
|
43
|
+
export * from './dtos/PublishFiadoTxResponse';
|
|
42
44
|
export * from './enums/TransactionProcessorCodesEnum';
|
|
43
45
|
export * from './enums/AsyncTxStatusEnum';
|
|
44
46
|
export * from './enums/AppEnum';
|
|
@@ -55,6 +55,8 @@ __exportStar(require("./dtos/ProviderProcessServicePaymentTransactionRequest"),
|
|
|
55
55
|
__exportStar(require("./dtos/ProviderProcessServicePaymentTransactionResponse"), exports);
|
|
56
56
|
__exportStar(require("./dtos/AuthorizeRenewalPreAuthRequest"), exports);
|
|
57
57
|
__exportStar(require("./dtos/AuthorizeRenewalPreAuthResponse"), exports);
|
|
58
|
+
__exportStar(require("./dtos/PublishFiadoTxRequest"), exports);
|
|
59
|
+
__exportStar(require("./dtos/PublishFiadoTxResponse"), exports);
|
|
58
60
|
__exportStar(require("./enums/TransactionProcessorCodesEnum"), exports);
|
|
59
61
|
__exportStar(require("./enums/AsyncTxStatusEnum"), exports);
|
|
60
62
|
__exportStar(require("./enums/AppEnum"), exports);
|
|
@@ -18,7 +18,7 @@ __decorate([
|
|
|
18
18
|
(0, class_validator_1.IsString)(),
|
|
19
19
|
(0, class_validator_1.MaxLength)(64),
|
|
20
20
|
__metadata("design:type", String)
|
|
21
|
-
], CancelFundingReferenceRequest.prototype, "
|
|
21
|
+
], CancelFundingReferenceRequest.prototype, "reference", void 0);
|
|
22
22
|
__decorate([
|
|
23
23
|
(0, class_validator_1.IsString)(),
|
|
24
24
|
(0, class_validator_1.MaxLength)(64),
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { BenefitPaymentStatusEnum } from "../../benefitCenter/enums/BenefitPaymentStatusEnum";
|
|
2
2
|
import { WalletFundingErrorCodeEnum } from "../enums/WalletFundingErrorCodeEnum";
|
|
3
3
|
export declare class CancelFundingReferenceResponse {
|
|
4
|
-
|
|
4
|
+
reference: string;
|
|
5
5
|
status: BenefitPaymentStatusEnum;
|
|
6
6
|
errorCode?: WalletFundingErrorCodeEnum;
|
|
7
7
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Request del cancel via Centro de Beneficios (spec 13 v2.0).
|
|
3
|
-
* `
|
|
3
|
+
* `reference` viaja en el path, `directoryId` se resuelve del JWT.
|
|
4
4
|
* `providerModuleName` permite al marketplace rutear al publisher correcto
|
|
5
5
|
* sin tener que persistir el mapping (el wallet-app sabe el moduleName
|
|
6
6
|
* porque vino en la respuesta del authorize).
|
|
@@ -13,7 +13,7 @@ exports.CancelFundingRequest = void 0;
|
|
|
13
13
|
const class_validator_1 = require("class-validator");
|
|
14
14
|
/**
|
|
15
15
|
* Request del cancel via Centro de Beneficios (spec 13 v2.0).
|
|
16
|
-
* `
|
|
16
|
+
* `reference` viaja en el path, `directoryId` se resuelve del JWT.
|
|
17
17
|
* `providerModuleName` permite al marketplace rutear al publisher correcto
|
|
18
18
|
* sin tener que persistir el mapping (el wallet-app sabe el moduleName
|
|
19
19
|
* porque vino en la respuesta del authorize).
|
|
@@ -7,7 +7,7 @@ import { WalletFundingErrorCodeEnum } from "../enums/WalletFundingErrorCodeEnum"
|
|
|
7
7
|
* (marketplace ↔ connector). Idempotente: re-cancelar devuelve APPROVED.
|
|
8
8
|
*/
|
|
9
9
|
export declare class CancelFundingResponse {
|
|
10
|
-
|
|
10
|
+
reference: string;
|
|
11
11
|
status: BenefitPaymentStatusEnum;
|
|
12
12
|
errorCode?: WalletFundingErrorCodeEnum;
|
|
13
13
|
message?: string;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Request del endpoint `POST /settlements` del lambda `wallet-funding-settlement`.
|
|
3
|
+
*
|
|
4
|
+
* Ejecuta el WRITE atómico (TransactWriteItems 2 items) que acredita el
|
|
5
|
+
* balance del wallet Y marca el payment del provider como APPLIED, todo
|
|
6
|
+
* en una única transacción ACID DDB single-region.
|
|
7
|
+
*
|
|
8
|
+
* Idempotente por `ConditionExpression: status = CONSULTED` sobre el
|
|
9
|
+
* payment row del provider. Si el reintento llega y el row ya está en
|
|
10
|
+
* APPLIED, el settlement devuelve `alreadySettled=true` con el folio
|
|
11
|
+
* cacheado sin re-creditar.
|
|
12
|
+
*
|
|
13
|
+
* Caller canónico: `equality-connector.WebhookPaymentManager` post
|
|
14
|
+
* `processor.walletFundingValidate()`. Ver spec 15.
|
|
15
|
+
*/
|
|
16
|
+
export declare class SettleWalletFundingRequest {
|
|
17
|
+
/** Nombre canónico del provider cash-in. V1: "equality". Futuros: "openpay", etc. */
|
|
18
|
+
providerName: string;
|
|
19
|
+
/**
|
|
20
|
+
* Identificador de la transacción en el provider. Para Equality es
|
|
21
|
+
* `equalityTransactionNumber` (PK de `EqualityFundingPayment_GT`).
|
|
22
|
+
*/
|
|
23
|
+
providerTxId: string;
|
|
24
|
+
/** Referencia del payment row (ej. la `reference` de Equality). */
|
|
25
|
+
providerReference: string;
|
|
26
|
+
directoryId: string;
|
|
27
|
+
/** PK de la cuenta PCF (AccountPagoConfiado_GT.id) destino del crédito. */
|
|
28
|
+
accountId: string;
|
|
29
|
+
amount: number;
|
|
30
|
+
currencyCode: string;
|
|
31
|
+
/**
|
|
32
|
+
* Folio del processor (campo Alfanumérico según doc Passport). Pre-generado
|
|
33
|
+
* por `processor.walletFundingValidate()` y reenviado al settlement para
|
|
34
|
+
* persistirlo en el payment row como `processorTransactionNumber`.
|
|
35
|
+
*/
|
|
36
|
+
processorTransactionNumber: string;
|
|
37
|
+
/**
|
|
38
|
+
* Snapshot del webhook recibido del provider. Opcional — se persiste en
|
|
39
|
+
* `webhookResponseRaw` del payment row para auditoría. NO load-bearing
|
|
40
|
+
* para la idempotencia ni el flow.
|
|
41
|
+
*/
|
|
42
|
+
webhookEcho?: Record<string, unknown>;
|
|
43
|
+
}
|
|
@@ -0,0 +1,76 @@
|
|
|
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.SettleWalletFundingRequest = void 0;
|
|
13
|
+
const class_validator_1 = require("class-validator");
|
|
14
|
+
/**
|
|
15
|
+
* Request del endpoint `POST /settlements` del lambda `wallet-funding-settlement`.
|
|
16
|
+
*
|
|
17
|
+
* Ejecuta el WRITE atómico (TransactWriteItems 2 items) que acredita el
|
|
18
|
+
* balance del wallet Y marca el payment del provider como APPLIED, todo
|
|
19
|
+
* en una única transacción ACID DDB single-region.
|
|
20
|
+
*
|
|
21
|
+
* Idempotente por `ConditionExpression: status = CONSULTED` sobre el
|
|
22
|
+
* payment row del provider. Si el reintento llega y el row ya está en
|
|
23
|
+
* APPLIED, el settlement devuelve `alreadySettled=true` con el folio
|
|
24
|
+
* cacheado sin re-creditar.
|
|
25
|
+
*
|
|
26
|
+
* Caller canónico: `equality-connector.WebhookPaymentManager` post
|
|
27
|
+
* `processor.walletFundingValidate()`. Ver spec 15.
|
|
28
|
+
*/
|
|
29
|
+
class SettleWalletFundingRequest {
|
|
30
|
+
}
|
|
31
|
+
exports.SettleWalletFundingRequest = SettleWalletFundingRequest;
|
|
32
|
+
__decorate([
|
|
33
|
+
(0, class_validator_1.IsString)(),
|
|
34
|
+
(0, class_validator_1.MaxLength)(32),
|
|
35
|
+
__metadata("design:type", String)
|
|
36
|
+
], SettleWalletFundingRequest.prototype, "providerName", void 0);
|
|
37
|
+
__decorate([
|
|
38
|
+
(0, class_validator_1.IsString)(),
|
|
39
|
+
(0, class_validator_1.MaxLength)(64),
|
|
40
|
+
__metadata("design:type", String)
|
|
41
|
+
], SettleWalletFundingRequest.prototype, "providerTxId", void 0);
|
|
42
|
+
__decorate([
|
|
43
|
+
(0, class_validator_1.IsString)(),
|
|
44
|
+
(0, class_validator_1.MaxLength)(128),
|
|
45
|
+
__metadata("design:type", String)
|
|
46
|
+
], SettleWalletFundingRequest.prototype, "providerReference", void 0);
|
|
47
|
+
__decorate([
|
|
48
|
+
(0, class_validator_1.IsString)(),
|
|
49
|
+
(0, class_validator_1.MaxLength)(64),
|
|
50
|
+
__metadata("design:type", String)
|
|
51
|
+
], SettleWalletFundingRequest.prototype, "directoryId", void 0);
|
|
52
|
+
__decorate([
|
|
53
|
+
(0, class_validator_1.IsString)(),
|
|
54
|
+
(0, class_validator_1.MaxLength)(64),
|
|
55
|
+
__metadata("design:type", String)
|
|
56
|
+
], SettleWalletFundingRequest.prototype, "accountId", void 0);
|
|
57
|
+
__decorate([
|
|
58
|
+
(0, class_validator_1.IsNumber)(),
|
|
59
|
+
(0, class_validator_1.IsPositive)(),
|
|
60
|
+
__metadata("design:type", Number)
|
|
61
|
+
], SettleWalletFundingRequest.prototype, "amount", void 0);
|
|
62
|
+
__decorate([
|
|
63
|
+
(0, class_validator_1.IsString)(),
|
|
64
|
+
(0, class_validator_1.Length)(3, 3),
|
|
65
|
+
__metadata("design:type", String)
|
|
66
|
+
], SettleWalletFundingRequest.prototype, "currencyCode", void 0);
|
|
67
|
+
__decorate([
|
|
68
|
+
(0, class_validator_1.IsString)(),
|
|
69
|
+
(0, class_validator_1.MaxLength)(64),
|
|
70
|
+
__metadata("design:type", String)
|
|
71
|
+
], SettleWalletFundingRequest.prototype, "processorTransactionNumber", void 0);
|
|
72
|
+
__decorate([
|
|
73
|
+
(0, class_validator_1.IsOptional)(),
|
|
74
|
+
(0, class_validator_1.IsObject)(),
|
|
75
|
+
__metadata("design:type", Object)
|
|
76
|
+
], SettleWalletFundingRequest.prototype, "webhookEcho", void 0);
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { BenefitPaymentStatusEnum } from "../../benefitCenter/enums/BenefitPaymentStatusEnum";
|
|
2
|
+
import { SettlementErrorCodeEnum } from "../enums/SettlementErrorCodeEnum";
|
|
3
|
+
/**
|
|
4
|
+
* Response del endpoint `POST /settlements`. Indica si el settlement se
|
|
5
|
+
* ejecutó exitosamente (APPROVED) o fue rechazado (REJECTED) con un
|
|
6
|
+
* `errorCode` específico.
|
|
7
|
+
*
|
|
8
|
+
* Estado APPROVED:
|
|
9
|
+
* - El TransactWriteItems se commiteó atómicamente.
|
|
10
|
+
* - Balance acreditado + status del payment en APPLIED.
|
|
11
|
+
* - `alreadySettled=false` (primera ejecución) o `alreadySettled=true`
|
|
12
|
+
* (reintento idempotent — el row ya estaba en APPLIED).
|
|
13
|
+
*
|
|
14
|
+
* Estado REJECTED:
|
|
15
|
+
* - El TransactWriteItems NO se ejecutó (pre-check falló) o falló
|
|
16
|
+
* irrecuperablemente. Caller debe responder REJECTED al provider y
|
|
17
|
+
* marcar el payment en `QUEUED_FOR_REFUND` para gestión manual.
|
|
18
|
+
*
|
|
19
|
+
* Ver spec 15.
|
|
20
|
+
*/
|
|
21
|
+
export interface SettleWalletFundingResponse {
|
|
22
|
+
status: BenefitPaymentStatusEnum;
|
|
23
|
+
/**
|
|
24
|
+
* `true` si el TransactWriteItems no se ejecutó porque el row ya estaba
|
|
25
|
+
* en APPLIED (idempotent fast path). `false` si fue la primera ejecución
|
|
26
|
+
* que efectivamente movió saldo.
|
|
27
|
+
*/
|
|
28
|
+
alreadySettled: boolean;
|
|
29
|
+
/**
|
|
30
|
+
* Folio del processor devuelto al caller. En idempotent hit es el folio
|
|
31
|
+
* cacheado del row APPLIED previo (NO el del request actual).
|
|
32
|
+
*/
|
|
33
|
+
processorTransactionNumber: string;
|
|
34
|
+
errorCode?: SettlementErrorCodeEnum;
|
|
35
|
+
message?: string;
|
|
36
|
+
}
|
|
@@ -19,3 +19,5 @@ export * from "./ReverseWalletFundingRequest";
|
|
|
19
19
|
export * from "./ReverseWalletFundingResponse";
|
|
20
20
|
export * from "./AuthorizeFundingRequest";
|
|
21
21
|
export * from "./AuthorizeFundingResponse";
|
|
22
|
+
export * from "./SettleWalletFundingRequest";
|
|
23
|
+
export * from "./SettleWalletFundingResponse";
|
|
@@ -35,3 +35,5 @@ __exportStar(require("./ReverseWalletFundingRequest"), exports);
|
|
|
35
35
|
__exportStar(require("./ReverseWalletFundingResponse"), exports);
|
|
36
36
|
__exportStar(require("./AuthorizeFundingRequest"), exports);
|
|
37
37
|
__exportStar(require("./AuthorizeFundingResponse"), exports);
|
|
38
|
+
__exportStar(require("./SettleWalletFundingRequest"), exports);
|
|
39
|
+
__exportStar(require("./SettleWalletFundingResponse"), exports);
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Códigos de error del lambda `wallet-funding-settlement`.
|
|
3
|
+
*
|
|
4
|
+
* Distintos a `WalletFundingErrorCodeEnum` — esos son del flow del processor
|
|
5
|
+
* (validaciones PCF, AML, caps). Estos son específicos del settlement:
|
|
6
|
+
* estado del payment row + integridad del TransactWriteItems.
|
|
7
|
+
*
|
|
8
|
+
* Ver spec 15 §4.5 (flujo interno) + §8 (edge cases).
|
|
9
|
+
*/
|
|
10
|
+
export declare enum SettlementErrorCodeEnum {
|
|
11
|
+
/** El payment row no existe en la tabla del provider. Bug del caller (debió crear CONSULTED antes). */
|
|
12
|
+
PAYMENT_NOT_FOUND = "PAYMENT_NOT_FOUND",
|
|
13
|
+
/** El payment row está en estado terminal (FAILED, QUEUED_FOR_REFUND, REJECTED). No procede acreditar. */
|
|
14
|
+
PAYMENT_IN_TERMINAL_STATE = "PAYMENT_IN_TERMINAL_STATE",
|
|
15
|
+
/** La cuenta PCF no existe o no está accesible. */
|
|
16
|
+
ACCOUNT_NOT_FOUND = "ACCOUNT_NOT_FOUND",
|
|
17
|
+
/** El TransactWriteItems falló por razón no recuperable (no ConditionalCheckFailed esperado). */
|
|
18
|
+
TRANSACT_WRITE_FAILED = "TRANSACT_WRITE_FAILED",
|
|
19
|
+
/** El providerName del request no está registrado en el ProviderRegistry del settlement. */
|
|
20
|
+
PROVIDER_NOT_SUPPORTED = "PROVIDER_NOT_SUPPORTED",
|
|
21
|
+
/** El amount del request difiere del paymentAmount persistido en el row CONSULTED. Posible tampering. */
|
|
22
|
+
AMOUNT_MISMATCH = "AMOUNT_MISMATCH",
|
|
23
|
+
/** Error interno no clasificado. Caller debe loggear + alarmar. */
|
|
24
|
+
INTERNAL_ERROR = "INTERNAL_ERROR"
|
|
25
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SettlementErrorCodeEnum = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Códigos de error del lambda `wallet-funding-settlement`.
|
|
6
|
+
*
|
|
7
|
+
* Distintos a `WalletFundingErrorCodeEnum` — esos son del flow del processor
|
|
8
|
+
* (validaciones PCF, AML, caps). Estos son específicos del settlement:
|
|
9
|
+
* estado del payment row + integridad del TransactWriteItems.
|
|
10
|
+
*
|
|
11
|
+
* Ver spec 15 §4.5 (flujo interno) + §8 (edge cases).
|
|
12
|
+
*/
|
|
13
|
+
var SettlementErrorCodeEnum;
|
|
14
|
+
(function (SettlementErrorCodeEnum) {
|
|
15
|
+
/** El payment row no existe en la tabla del provider. Bug del caller (debió crear CONSULTED antes). */
|
|
16
|
+
SettlementErrorCodeEnum["PAYMENT_NOT_FOUND"] = "PAYMENT_NOT_FOUND";
|
|
17
|
+
/** El payment row está en estado terminal (FAILED, QUEUED_FOR_REFUND, REJECTED). No procede acreditar. */
|
|
18
|
+
SettlementErrorCodeEnum["PAYMENT_IN_TERMINAL_STATE"] = "PAYMENT_IN_TERMINAL_STATE";
|
|
19
|
+
/** La cuenta PCF no existe o no está accesible. */
|
|
20
|
+
SettlementErrorCodeEnum["ACCOUNT_NOT_FOUND"] = "ACCOUNT_NOT_FOUND";
|
|
21
|
+
/** El TransactWriteItems falló por razón no recuperable (no ConditionalCheckFailed esperado). */
|
|
22
|
+
SettlementErrorCodeEnum["TRANSACT_WRITE_FAILED"] = "TRANSACT_WRITE_FAILED";
|
|
23
|
+
/** El providerName del request no está registrado en el ProviderRegistry del settlement. */
|
|
24
|
+
SettlementErrorCodeEnum["PROVIDER_NOT_SUPPORTED"] = "PROVIDER_NOT_SUPPORTED";
|
|
25
|
+
/** El amount del request difiere del paymentAmount persistido en el row CONSULTED. Posible tampering. */
|
|
26
|
+
SettlementErrorCodeEnum["AMOUNT_MISMATCH"] = "AMOUNT_MISMATCH";
|
|
27
|
+
/** Error interno no clasificado. Caller debe loggear + alarmar. */
|
|
28
|
+
SettlementErrorCodeEnum["INTERNAL_ERROR"] = "INTERNAL_ERROR";
|
|
29
|
+
})(SettlementErrorCodeEnum || (exports.SettlementErrorCodeEnum = SettlementErrorCodeEnum = {}));
|
|
@@ -22,3 +22,4 @@ __exportStar(require("./WalletFundingErrorCodeEnum"), exports);
|
|
|
22
22
|
__exportStar(require("./WalletFundingRefundReasonEnum"), exports);
|
|
23
23
|
__exportStar(require("./PaymentCodeTypeEnum"), exports);
|
|
24
24
|
__exportStar(require("./FundingWebhookTypeEnum"), exports);
|
|
25
|
+
__exportStar(require("./SettlementErrorCodeEnum"), exports);
|
|
@@ -16,3 +16,4 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./enums"), exports);
|
|
18
18
|
__exportStar(require("./dtos"), exports);
|
|
19
|
+
__exportStar(require("./schemas"), exports);
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Schema literal de la tabla DDB `AccountPagoConfiado_GT`.
|
|
3
|
+
*
|
|
4
|
+
* Owner declarado: `account-pago-confiado`. Write-shared con
|
|
5
|
+
* `wallet-funding-settlement` SOLO en el path money (campos de balance) bajo
|
|
6
|
+
* excepción documentada (spec 15 §3 + spec 10 §7 pendiente).
|
|
7
|
+
*
|
|
8
|
+
* El settlement escribe ÚNICAMENTE estos campos vía TransactWriteItems:
|
|
9
|
+
* - `availableBalance` (ADD :amt)
|
|
10
|
+
* - `currentBalance` (ADD :amt)
|
|
11
|
+
* - `updatedAt` (SET :now)
|
|
12
|
+
*
|
|
13
|
+
* El resto del shape (status, level, KYC, settings) sigue siendo write-exclusivo
|
|
14
|
+
* del owner. Cualquier campo nuevo de balance que el settlement deba escribir
|
|
15
|
+
* requiere actualizar este schema + el TransactWriteBuilder del settlement.
|
|
16
|
+
*/
|
|
17
|
+
export declare const AccountPagoConfiadoTable: {
|
|
18
|
+
readonly name: "AccountPagoConfiado_GT";
|
|
19
|
+
readonly pk: "id";
|
|
20
|
+
readonly attributes: {
|
|
21
|
+
readonly id: "id";
|
|
22
|
+
readonly directoryId: "directoryId";
|
|
23
|
+
readonly availableBalance: "availableBalance";
|
|
24
|
+
readonly currentBalance: "currentBalance";
|
|
25
|
+
readonly lockedBalance: "lockedBalance";
|
|
26
|
+
readonly unsettledBalance: "unsettledBalance";
|
|
27
|
+
readonly unpaidBalance: "unpaidBalance";
|
|
28
|
+
readonly unallowedBalance: "unallowedBalance";
|
|
29
|
+
readonly updatedAt: "updatedAt";
|
|
30
|
+
readonly status: "status";
|
|
31
|
+
readonly accountLevel: "accountLevel";
|
|
32
|
+
readonly currency: "currency";
|
|
33
|
+
readonly countryId: "countryId";
|
|
34
|
+
readonly createdAt: "createdAt";
|
|
35
|
+
};
|
|
36
|
+
};
|
|
37
|
+
export type AccountPagoConfiadoAttribute = typeof AccountPagoConfiadoTable.attributes[keyof typeof AccountPagoConfiadoTable.attributes];
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AccountPagoConfiadoTable = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Schema literal de la tabla DDB `AccountPagoConfiado_GT`.
|
|
6
|
+
*
|
|
7
|
+
* Owner declarado: `account-pago-confiado`. Write-shared con
|
|
8
|
+
* `wallet-funding-settlement` SOLO en el path money (campos de balance) bajo
|
|
9
|
+
* excepción documentada (spec 15 §3 + spec 10 §7 pendiente).
|
|
10
|
+
*
|
|
11
|
+
* El settlement escribe ÚNICAMENTE estos campos vía TransactWriteItems:
|
|
12
|
+
* - `availableBalance` (ADD :amt)
|
|
13
|
+
* - `currentBalance` (ADD :amt)
|
|
14
|
+
* - `updatedAt` (SET :now)
|
|
15
|
+
*
|
|
16
|
+
* El resto del shape (status, level, KYC, settings) sigue siendo write-exclusivo
|
|
17
|
+
* del owner. Cualquier campo nuevo de balance que el settlement deba escribir
|
|
18
|
+
* requiere actualizar este schema + el TransactWriteBuilder del settlement.
|
|
19
|
+
*/
|
|
20
|
+
exports.AccountPagoConfiadoTable = {
|
|
21
|
+
name: "AccountPagoConfiado_GT",
|
|
22
|
+
pk: "id",
|
|
23
|
+
attributes: {
|
|
24
|
+
id: "id",
|
|
25
|
+
directoryId: "directoryId",
|
|
26
|
+
// Campos write-shared con wallet-funding-settlement (money path):
|
|
27
|
+
availableBalance: "availableBalance",
|
|
28
|
+
currentBalance: "currentBalance",
|
|
29
|
+
lockedBalance: "lockedBalance",
|
|
30
|
+
unsettledBalance: "unsettledBalance",
|
|
31
|
+
unpaidBalance: "unpaidBalance",
|
|
32
|
+
unallowedBalance: "unallowedBalance",
|
|
33
|
+
updatedAt: "updatedAt",
|
|
34
|
+
// Campos write-exclusive del owner (account-pago-confiado):
|
|
35
|
+
status: "status",
|
|
36
|
+
accountLevel: "accountLevel",
|
|
37
|
+
currency: "currency",
|
|
38
|
+
countryId: "countryId",
|
|
39
|
+
createdAt: "createdAt",
|
|
40
|
+
},
|
|
41
|
+
};
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Schema literal de la tabla DDB `EqualityFundingPayment_GT`.
|
|
3
|
+
*
|
|
4
|
+
* Define los nombres exactos de tabla, atributos e índices que el
|
|
5
|
+
* `equality-connector` (owner declarado) y el `wallet-funding-settlement`
|
|
6
|
+
* (write-shared bajo excepción money path, spec 15 §3) consumen.
|
|
7
|
+
*
|
|
8
|
+
* NO es un model de Dynamoose — son solo constantes type-safe. El
|
|
9
|
+
* settlement usa DDB SDK v3 raw para `TransactWriteItems`; el connector
|
|
10
|
+
* sigue usando Dynamoose en su repositorio (su propio model interno).
|
|
11
|
+
*
|
|
12
|
+
* Cuando el schema cambia (nuevo campo, índice nuevo), bump del type-kit
|
|
13
|
+
* fuerza recompile de TODOS los consumers → drift imposible en silence.
|
|
14
|
+
*/
|
|
15
|
+
export declare const EqualityFundingPaymentTable: {
|
|
16
|
+
readonly name: "EqualityFundingPayment_GT";
|
|
17
|
+
readonly pk: "equalityTransactionNumber";
|
|
18
|
+
readonly attributes: {
|
|
19
|
+
readonly equalityTransactionNumber: "equalityTransactionNumber";
|
|
20
|
+
readonly directoryId: "directoryId";
|
|
21
|
+
readonly reference: "reference";
|
|
22
|
+
readonly paymentAmount: "paymentAmount";
|
|
23
|
+
readonly paymentDate: "paymentDate";
|
|
24
|
+
readonly center: "center";
|
|
25
|
+
readonly centerId: "centerId";
|
|
26
|
+
readonly status: "status";
|
|
27
|
+
readonly webhookType: "webhookType";
|
|
28
|
+
readonly webhookRequestRaw: "webhookRequestRaw";
|
|
29
|
+
readonly webhookResponseRaw: "webhookResponseRaw";
|
|
30
|
+
readonly processorTransactionNumber: "processorTransactionNumber";
|
|
31
|
+
readonly rejectionCode: "rejectionCode";
|
|
32
|
+
readonly rejectionReason: "rejectionReason";
|
|
33
|
+
readonly refundReason: "refundReason";
|
|
34
|
+
readonly createdAt: "createdAt";
|
|
35
|
+
readonly updatedAt: "updatedAt";
|
|
36
|
+
};
|
|
37
|
+
readonly indexes: {
|
|
38
|
+
/** GSI por status + createdAt — usado por crons de reconciliation/refund. */
|
|
39
|
+
readonly statusCreatedAt: "status-createdAt-index";
|
|
40
|
+
};
|
|
41
|
+
};
|
|
42
|
+
export type EqualityFundingPaymentAttribute = typeof EqualityFundingPaymentTable.attributes[keyof typeof EqualityFundingPaymentTable.attributes];
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EqualityFundingPaymentTable = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Schema literal de la tabla DDB `EqualityFundingPayment_GT`.
|
|
6
|
+
*
|
|
7
|
+
* Define los nombres exactos de tabla, atributos e índices que el
|
|
8
|
+
* `equality-connector` (owner declarado) y el `wallet-funding-settlement`
|
|
9
|
+
* (write-shared bajo excepción money path, spec 15 §3) consumen.
|
|
10
|
+
*
|
|
11
|
+
* NO es un model de Dynamoose — son solo constantes type-safe. El
|
|
12
|
+
* settlement usa DDB SDK v3 raw para `TransactWriteItems`; el connector
|
|
13
|
+
* sigue usando Dynamoose en su repositorio (su propio model interno).
|
|
14
|
+
*
|
|
15
|
+
* Cuando el schema cambia (nuevo campo, índice nuevo), bump del type-kit
|
|
16
|
+
* fuerza recompile de TODOS los consumers → drift imposible en silence.
|
|
17
|
+
*/
|
|
18
|
+
exports.EqualityFundingPaymentTable = {
|
|
19
|
+
name: "EqualityFundingPayment_GT",
|
|
20
|
+
pk: "equalityTransactionNumber",
|
|
21
|
+
attributes: {
|
|
22
|
+
equalityTransactionNumber: "equalityTransactionNumber",
|
|
23
|
+
directoryId: "directoryId",
|
|
24
|
+
reference: "reference",
|
|
25
|
+
paymentAmount: "paymentAmount",
|
|
26
|
+
paymentDate: "paymentDate",
|
|
27
|
+
center: "center",
|
|
28
|
+
centerId: "centerId",
|
|
29
|
+
status: "status",
|
|
30
|
+
webhookType: "webhookType",
|
|
31
|
+
webhookRequestRaw: "webhookRequestRaw",
|
|
32
|
+
webhookResponseRaw: "webhookResponseRaw",
|
|
33
|
+
processorTransactionNumber: "processorTransactionNumber",
|
|
34
|
+
rejectionCode: "rejectionCode",
|
|
35
|
+
rejectionReason: "rejectionReason",
|
|
36
|
+
refundReason: "refundReason",
|
|
37
|
+
createdAt: "createdAt",
|
|
38
|
+
updatedAt: "updatedAt",
|
|
39
|
+
},
|
|
40
|
+
indexes: {
|
|
41
|
+
/** GSI por status + createdAt — usado por crons de reconciliation/refund. */
|
|
42
|
+
statusCreatedAt: "status-createdAt-index",
|
|
43
|
+
},
|
|
44
|
+
};
|
|
@@ -14,4 +14,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./
|
|
17
|
+
__exportStar(require("./EqualityFundingPaymentSchema"), exports);
|
|
18
|
+
__exportStar(require("./AccountPagoConfiadoSchema"), exports);
|
package/package.json
CHANGED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { IsObject, IsOptional, IsString, MaxLength } from "class-validator";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Request del endpoint `POST /wallet-funding/publish` del processor.
|
|
5
|
+
*
|
|
6
|
+
* Publica el evento de FiadoTx (tupla EQ_CASH_SA / CASH_IN del wallet-funding
|
|
7
|
+
* cash-in) al SQS `TRANSACTION_QUEUE` para que `transaction-business` lo
|
|
8
|
+
* consuma y persista en `FiadoTx_GT`.
|
|
9
|
+
*
|
|
10
|
+
* Best-effort: el caller (equality-connector post-settlement, o el cron de
|
|
11
|
+
* gap-reconciliation del mismo connector) debe tratar el error como
|
|
12
|
+
* recuperable — el reconciler T+0 rescata gaps que queden.
|
|
13
|
+
*
|
|
14
|
+
* Ver spec 15 §6.2 (processor mantiene ownership del SQS publish) + §5.1
|
|
15
|
+
* (reconciler en el connector).
|
|
16
|
+
*/
|
|
17
|
+
export class PublishFiadoTxRequest {
|
|
18
|
+
/** Identificador idempotente del evento. Sugerido: `${providerName}:${providerTxId}`. */
|
|
19
|
+
@IsString() @MaxLength(128) idempotencyKey!: string;
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Spec completo de la tupla FiadoTx a persistir. Shape generado por el
|
|
23
|
+
* processor en `walletFundingValidate()` (campo `fiadoTxSpec` de la response).
|
|
24
|
+
* El caller lo recibe del processor y lo reenvía sin modificar.
|
|
25
|
+
*
|
|
26
|
+
* Es `unknown` aquí (no tipado fuerte) porque el shape interno del processor
|
|
27
|
+
* puede cambiar sin breaking change para los callers — el processor es dueño
|
|
28
|
+
* del shape y de su serialización al SQS.
|
|
29
|
+
*/
|
|
30
|
+
@IsObject() fiadoTxSpec!: Record<string, unknown>;
|
|
31
|
+
|
|
32
|
+
/** Contexto opcional para logs/auditoría (ej. "post-settlement" | "reconciler-gap"). */
|
|
33
|
+
@IsOptional() @IsString() @MaxLength(64) origin?: string;
|
|
34
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Response del endpoint `POST /wallet-funding/publish` del processor.
|
|
3
|
+
*
|
|
4
|
+
* Best-effort: status="FAILED" indica que el publish al SQS no se ejecutó
|
|
5
|
+
* (sqs.sendMessage falló). El caller debe loggear y continuar — el
|
|
6
|
+
* reconciler T+0 del connector eventualmente recuperará el gap.
|
|
7
|
+
*
|
|
8
|
+
* Ver spec 15 §6.2.
|
|
9
|
+
*/
|
|
10
|
+
export interface PublishFiadoTxResponse {
|
|
11
|
+
status: "OK" | "FAILED";
|
|
12
|
+
/** Mensaje breve para logs. Vacío en happy path. */
|
|
13
|
+
message?: string;
|
|
14
|
+
}
|
|
@@ -39,6 +39,8 @@ export * from './dtos/ProviderProcessServicePaymentTransactionRequest';
|
|
|
39
39
|
export * from './dtos/ProviderProcessServicePaymentTransactionResponse';
|
|
40
40
|
export * from './dtos/AuthorizeRenewalPreAuthRequest';
|
|
41
41
|
export * from './dtos/AuthorizeRenewalPreAuthResponse';
|
|
42
|
+
export * from './dtos/PublishFiadoTxRequest';
|
|
43
|
+
export * from './dtos/PublishFiadoTxResponse';
|
|
42
44
|
|
|
43
45
|
export * from './enums/TransactionProcessorCodesEnum';
|
|
44
46
|
export * from './enums/AsyncTxStatusEnum';
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { IsNumber, IsObject, IsOptional, IsPositive, IsString, Length, MaxLength } from "class-validator";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Request del endpoint `POST /settlements` del lambda `wallet-funding-settlement`.
|
|
5
|
+
*
|
|
6
|
+
* Ejecuta el WRITE atómico (TransactWriteItems 2 items) que acredita el
|
|
7
|
+
* balance del wallet Y marca el payment del provider como APPLIED, todo
|
|
8
|
+
* en una única transacción ACID DDB single-region.
|
|
9
|
+
*
|
|
10
|
+
* Idempotente por `ConditionExpression: status = CONSULTED` sobre el
|
|
11
|
+
* payment row del provider. Si el reintento llega y el row ya está en
|
|
12
|
+
* APPLIED, el settlement devuelve `alreadySettled=true` con el folio
|
|
13
|
+
* cacheado sin re-creditar.
|
|
14
|
+
*
|
|
15
|
+
* Caller canónico: `equality-connector.WebhookPaymentManager` post
|
|
16
|
+
* `processor.walletFundingValidate()`. Ver spec 15.
|
|
17
|
+
*/
|
|
18
|
+
export class SettleWalletFundingRequest {
|
|
19
|
+
/** Nombre canónico del provider cash-in. V1: "equality". Futuros: "openpay", etc. */
|
|
20
|
+
@IsString() @MaxLength(32) providerName!: string;
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Identificador de la transacción en el provider. Para Equality es
|
|
24
|
+
* `equalityTransactionNumber` (PK de `EqualityFundingPayment_GT`).
|
|
25
|
+
*/
|
|
26
|
+
@IsString() @MaxLength(64) providerTxId!: string;
|
|
27
|
+
|
|
28
|
+
/** Referencia del payment row (ej. la `reference` de Equality). */
|
|
29
|
+
@IsString() @MaxLength(128) providerReference!: string;
|
|
30
|
+
|
|
31
|
+
@IsString() @MaxLength(64) directoryId!: string;
|
|
32
|
+
|
|
33
|
+
/** PK de la cuenta PCF (AccountPagoConfiado_GT.id) destino del crédito. */
|
|
34
|
+
@IsString() @MaxLength(64) accountId!: string;
|
|
35
|
+
|
|
36
|
+
@IsNumber() @IsPositive() amount!: number;
|
|
37
|
+
|
|
38
|
+
@IsString() @Length(3, 3) currencyCode!: string;
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Folio del processor (campo Alfanumérico según doc Passport). Pre-generado
|
|
42
|
+
* por `processor.walletFundingValidate()` y reenviado al settlement para
|
|
43
|
+
* persistirlo en el payment row como `processorTransactionNumber`.
|
|
44
|
+
*/
|
|
45
|
+
@IsString() @MaxLength(64) processorTransactionNumber!: string;
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Snapshot del webhook recibido del provider. Opcional — se persiste en
|
|
49
|
+
* `webhookResponseRaw` del payment row para auditoría. NO load-bearing
|
|
50
|
+
* para la idempotencia ni el flow.
|
|
51
|
+
*/
|
|
52
|
+
@IsOptional() @IsObject() webhookEcho?: Record<string, unknown>;
|
|
53
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { BenefitPaymentStatusEnum } from "../../benefitCenter/enums/BenefitPaymentStatusEnum";
|
|
2
|
+
import { SettlementErrorCodeEnum } from "../enums/SettlementErrorCodeEnum";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Response del endpoint `POST /settlements`. Indica si el settlement se
|
|
6
|
+
* ejecutó exitosamente (APPROVED) o fue rechazado (REJECTED) con un
|
|
7
|
+
* `errorCode` específico.
|
|
8
|
+
*
|
|
9
|
+
* Estado APPROVED:
|
|
10
|
+
* - El TransactWriteItems se commiteó atómicamente.
|
|
11
|
+
* - Balance acreditado + status del payment en APPLIED.
|
|
12
|
+
* - `alreadySettled=false` (primera ejecución) o `alreadySettled=true`
|
|
13
|
+
* (reintento idempotent — el row ya estaba en APPLIED).
|
|
14
|
+
*
|
|
15
|
+
* Estado REJECTED:
|
|
16
|
+
* - El TransactWriteItems NO se ejecutó (pre-check falló) o falló
|
|
17
|
+
* irrecuperablemente. Caller debe responder REJECTED al provider y
|
|
18
|
+
* marcar el payment en `QUEUED_FOR_REFUND` para gestión manual.
|
|
19
|
+
*
|
|
20
|
+
* Ver spec 15.
|
|
21
|
+
*/
|
|
22
|
+
export interface SettleWalletFundingResponse {
|
|
23
|
+
status: BenefitPaymentStatusEnum;
|
|
24
|
+
/**
|
|
25
|
+
* `true` si el TransactWriteItems no se ejecutó porque el row ya estaba
|
|
26
|
+
* en APPLIED (idempotent fast path). `false` si fue la primera ejecución
|
|
27
|
+
* que efectivamente movió saldo.
|
|
28
|
+
*/
|
|
29
|
+
alreadySettled: boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Folio del processor devuelto al caller. En idempotent hit es el folio
|
|
32
|
+
* cacheado del row APPLIED previo (NO el del request actual).
|
|
33
|
+
*/
|
|
34
|
+
processorTransactionNumber: string;
|
|
35
|
+
errorCode?: SettlementErrorCodeEnum;
|
|
36
|
+
message?: string;
|
|
37
|
+
}
|
|
@@ -19,3 +19,5 @@ export * from "./ReverseWalletFundingRequest";
|
|
|
19
19
|
export * from "./ReverseWalletFundingResponse";
|
|
20
20
|
export * from "./AuthorizeFundingRequest";
|
|
21
21
|
export * from "./AuthorizeFundingResponse";
|
|
22
|
+
export * from "./SettleWalletFundingRequest";
|
|
23
|
+
export * from "./SettleWalletFundingResponse";
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Códigos de error del lambda `wallet-funding-settlement`.
|
|
3
|
+
*
|
|
4
|
+
* Distintos a `WalletFundingErrorCodeEnum` — esos son del flow del processor
|
|
5
|
+
* (validaciones PCF, AML, caps). Estos son específicos del settlement:
|
|
6
|
+
* estado del payment row + integridad del TransactWriteItems.
|
|
7
|
+
*
|
|
8
|
+
* Ver spec 15 §4.5 (flujo interno) + §8 (edge cases).
|
|
9
|
+
*/
|
|
10
|
+
export enum SettlementErrorCodeEnum {
|
|
11
|
+
/** El payment row no existe en la tabla del provider. Bug del caller (debió crear CONSULTED antes). */
|
|
12
|
+
PAYMENT_NOT_FOUND = "PAYMENT_NOT_FOUND",
|
|
13
|
+
/** El payment row está en estado terminal (FAILED, QUEUED_FOR_REFUND, REJECTED). No procede acreditar. */
|
|
14
|
+
PAYMENT_IN_TERMINAL_STATE = "PAYMENT_IN_TERMINAL_STATE",
|
|
15
|
+
/** La cuenta PCF no existe o no está accesible. */
|
|
16
|
+
ACCOUNT_NOT_FOUND = "ACCOUNT_NOT_FOUND",
|
|
17
|
+
/** El TransactWriteItems falló por razón no recuperable (no ConditionalCheckFailed esperado). */
|
|
18
|
+
TRANSACT_WRITE_FAILED = "TRANSACT_WRITE_FAILED",
|
|
19
|
+
/** El providerName del request no está registrado en el ProviderRegistry del settlement. */
|
|
20
|
+
PROVIDER_NOT_SUPPORTED = "PROVIDER_NOT_SUPPORTED",
|
|
21
|
+
/** El amount del request difiere del paymentAmount persistido en el row CONSULTED. Posible tampering. */
|
|
22
|
+
AMOUNT_MISMATCH = "AMOUNT_MISMATCH",
|
|
23
|
+
/** Error interno no clasificado. Caller debe loggear + alarmar. */
|
|
24
|
+
INTERNAL_ERROR = "INTERNAL_ERROR",
|
|
25
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Schema literal de la tabla DDB `AccountPagoConfiado_GT`.
|
|
3
|
+
*
|
|
4
|
+
* Owner declarado: `account-pago-confiado`. Write-shared con
|
|
5
|
+
* `wallet-funding-settlement` SOLO en el path money (campos de balance) bajo
|
|
6
|
+
* excepción documentada (spec 15 §3 + spec 10 §7 pendiente).
|
|
7
|
+
*
|
|
8
|
+
* El settlement escribe ÚNICAMENTE estos campos vía TransactWriteItems:
|
|
9
|
+
* - `availableBalance` (ADD :amt)
|
|
10
|
+
* - `currentBalance` (ADD :amt)
|
|
11
|
+
* - `updatedAt` (SET :now)
|
|
12
|
+
*
|
|
13
|
+
* El resto del shape (status, level, KYC, settings) sigue siendo write-exclusivo
|
|
14
|
+
* del owner. Cualquier campo nuevo de balance que el settlement deba escribir
|
|
15
|
+
* requiere actualizar este schema + el TransactWriteBuilder del settlement.
|
|
16
|
+
*/
|
|
17
|
+
export const AccountPagoConfiadoTable = {
|
|
18
|
+
name: "AccountPagoConfiado_GT",
|
|
19
|
+
pk: "id",
|
|
20
|
+
attributes: {
|
|
21
|
+
id: "id",
|
|
22
|
+
directoryId: "directoryId",
|
|
23
|
+
// Campos write-shared con wallet-funding-settlement (money path):
|
|
24
|
+
availableBalance: "availableBalance",
|
|
25
|
+
currentBalance: "currentBalance",
|
|
26
|
+
lockedBalance: "lockedBalance",
|
|
27
|
+
unsettledBalance: "unsettledBalance",
|
|
28
|
+
unpaidBalance: "unpaidBalance",
|
|
29
|
+
unallowedBalance: "unallowedBalance",
|
|
30
|
+
updatedAt: "updatedAt",
|
|
31
|
+
// Campos write-exclusive del owner (account-pago-confiado):
|
|
32
|
+
status: "status",
|
|
33
|
+
accountLevel: "accountLevel",
|
|
34
|
+
currency: "currency",
|
|
35
|
+
countryId: "countryId",
|
|
36
|
+
createdAt: "createdAt",
|
|
37
|
+
},
|
|
38
|
+
} as const;
|
|
39
|
+
|
|
40
|
+
export type AccountPagoConfiadoAttribute =
|
|
41
|
+
typeof AccountPagoConfiadoTable.attributes[keyof typeof AccountPagoConfiadoTable.attributes];
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Schema literal de la tabla DDB `EqualityFundingPayment_GT`.
|
|
3
|
+
*
|
|
4
|
+
* Define los nombres exactos de tabla, atributos e índices que el
|
|
5
|
+
* `equality-connector` (owner declarado) y el `wallet-funding-settlement`
|
|
6
|
+
* (write-shared bajo excepción money path, spec 15 §3) consumen.
|
|
7
|
+
*
|
|
8
|
+
* NO es un model de Dynamoose — son solo constantes type-safe. El
|
|
9
|
+
* settlement usa DDB SDK v3 raw para `TransactWriteItems`; el connector
|
|
10
|
+
* sigue usando Dynamoose en su repositorio (su propio model interno).
|
|
11
|
+
*
|
|
12
|
+
* Cuando el schema cambia (nuevo campo, índice nuevo), bump del type-kit
|
|
13
|
+
* fuerza recompile de TODOS los consumers → drift imposible en silence.
|
|
14
|
+
*/
|
|
15
|
+
export const EqualityFundingPaymentTable = {
|
|
16
|
+
name: "EqualityFundingPayment_GT",
|
|
17
|
+
pk: "equalityTransactionNumber",
|
|
18
|
+
attributes: {
|
|
19
|
+
equalityTransactionNumber: "equalityTransactionNumber",
|
|
20
|
+
directoryId: "directoryId",
|
|
21
|
+
reference: "reference",
|
|
22
|
+
paymentAmount: "paymentAmount",
|
|
23
|
+
paymentDate: "paymentDate",
|
|
24
|
+
center: "center",
|
|
25
|
+
centerId: "centerId",
|
|
26
|
+
status: "status",
|
|
27
|
+
webhookType: "webhookType",
|
|
28
|
+
webhookRequestRaw: "webhookRequestRaw",
|
|
29
|
+
webhookResponseRaw: "webhookResponseRaw",
|
|
30
|
+
processorTransactionNumber: "processorTransactionNumber",
|
|
31
|
+
rejectionCode: "rejectionCode",
|
|
32
|
+
rejectionReason: "rejectionReason",
|
|
33
|
+
refundReason: "refundReason",
|
|
34
|
+
createdAt: "createdAt",
|
|
35
|
+
updatedAt: "updatedAt",
|
|
36
|
+
},
|
|
37
|
+
indexes: {
|
|
38
|
+
/** GSI por status + createdAt — usado por crons de reconciliation/refund. */
|
|
39
|
+
statusCreatedAt: "status-createdAt-index",
|
|
40
|
+
},
|
|
41
|
+
} as const;
|
|
42
|
+
|
|
43
|
+
export type EqualityFundingPaymentAttribute =
|
|
44
|
+
typeof EqualityFundingPaymentTable.attributes[keyof typeof EqualityFundingPaymentTable.attributes];
|
|
@@ -1,36 +0,0 @@
|
|
|
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.MfaPoolConfig = void 0;
|
|
13
|
-
const class_transformer_1 = require("class-transformer");
|
|
14
|
-
const class_validator_1 = require("class-validator");
|
|
15
|
-
const MfaTypesRequiresOne_1 = require("../validators/MfaTypesRequiresOne");
|
|
16
|
-
// EMAIL_OTP removido (3.41.0): el cognito-backoffice-connector no provisiona
|
|
17
|
-
// EmailMfaConfiguration a nivel pool (requiere infra SES que no está montada
|
|
18
|
-
// y la integración con messages-lambda aún no tiene diseño). Ver TD-020 +
|
|
19
|
-
// DEC-001 en cognito-backoffice-connector/docs/. Si se reintroduce, agregar
|
|
20
|
-
// 'EMAIL_OTP' a este array.
|
|
21
|
-
const ALLOWED_MFA_TYPES = ['SOFTWARE_TOKEN_MFA'];
|
|
22
|
-
class MfaPoolConfig {
|
|
23
|
-
}
|
|
24
|
-
exports.MfaPoolConfig = MfaPoolConfig;
|
|
25
|
-
__decorate([
|
|
26
|
-
(0, class_transformer_1.Expose)(),
|
|
27
|
-
(0, class_validator_1.IsBoolean)(),
|
|
28
|
-
__metadata("design:type", Boolean)
|
|
29
|
-
], MfaPoolConfig.prototype, "requireMfa", void 0);
|
|
30
|
-
__decorate([
|
|
31
|
-
(0, class_transformer_1.Expose)(),
|
|
32
|
-
(0, class_validator_1.IsArray)(),
|
|
33
|
-
(0, class_validator_1.IsIn)(ALLOWED_MFA_TYPES, { each: true }),
|
|
34
|
-
(0, class_validator_1.Validate)(MfaTypesRequiresOne_1.MfaTypesRequiresOne),
|
|
35
|
-
__metadata("design:type", Array)
|
|
36
|
-
], MfaPoolConfig.prototype, "mfaTypes", void 0);
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { PoolKind } from '../../rbac/enums/PoolKind';
|
|
2
|
-
/**
|
|
3
|
-
* Shape del `PoolConfigRow` expuesto al caller (BFF M18 / otros lambdas Fiado).
|
|
4
|
-
* Refleja la configuración de un Cognito User Pool registrado en la tabla
|
|
5
|
-
* `PoolConfigs_GT` del lambda `cognito-backoffice-connector`.
|
|
6
|
-
*/
|
|
7
|
-
export declare class PoolConfigResponse {
|
|
8
|
-
userPoolId: string;
|
|
9
|
-
userPoolArn: string;
|
|
10
|
-
region: string;
|
|
11
|
-
poolKind: PoolKind;
|
|
12
|
-
displayName: string;
|
|
13
|
-
appClients: Record<string, {
|
|
14
|
-
clientId: string;
|
|
15
|
-
clientName: string;
|
|
16
|
-
}>;
|
|
17
|
-
status: 'active' | 'deprecated';
|
|
18
|
-
createdAt: number;
|
|
19
|
-
updatedAt: number;
|
|
20
|
-
}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.PoolConfigResponse = void 0;
|
|
4
|
-
/**
|
|
5
|
-
* Shape del `PoolConfigRow` expuesto al caller (BFF M18 / otros lambdas Fiado).
|
|
6
|
-
* Refleja la configuración de un Cognito User Pool registrado en la tabla
|
|
7
|
-
* `PoolConfigs_GT` del lambda `cognito-backoffice-connector`.
|
|
8
|
-
*/
|
|
9
|
-
class PoolConfigResponse {
|
|
10
|
-
}
|
|
11
|
-
exports.PoolConfigResponse = PoolConfigResponse;
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { ValidatorConstraintInterface, ValidationArguments } from 'class-validator';
|
|
2
|
-
/**
|
|
3
|
-
* Cross-field validator: si `requireMfa: true`, entonces `mfaTypes` debe tener
|
|
4
|
-
* al menos 1 elemento. Si `requireMfa: false`, `mfaTypes` puede ser vacío.
|
|
5
|
-
*
|
|
6
|
-
* Razón: cuando el pool nace con MFA habilitado, el connector llama
|
|
7
|
-
* `SetUserPoolMfaConfigCommand` con la lista de tipos del DTO. Si el array
|
|
8
|
-
* llega vacío con `requireMfa: true`, el SDK rechaza con InvalidParameterException
|
|
9
|
-
* y el pool queda en estado inconsistente (MfaConfiguration:'ON' sin tipos).
|
|
10
|
-
* Mejor rechazar en validación del DTO antes de tocar AWS.
|
|
11
|
-
*
|
|
12
|
-
* Ver pivote v1.4.1 TD-017 cerrado + spec doc §1 R3.
|
|
13
|
-
*/
|
|
14
|
-
export declare class MfaTypesRequiresOne implements ValidatorConstraintInterface {
|
|
15
|
-
validate(mfaTypes: unknown, args: ValidationArguments): boolean;
|
|
16
|
-
defaultMessage(): string;
|
|
17
|
-
}
|
|
@@ -1,39 +0,0 @@
|
|
|
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
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
exports.MfaTypesRequiresOne = void 0;
|
|
10
|
-
const class_validator_1 = require("class-validator");
|
|
11
|
-
/**
|
|
12
|
-
* Cross-field validator: si `requireMfa: true`, entonces `mfaTypes` debe tener
|
|
13
|
-
* al menos 1 elemento. Si `requireMfa: false`, `mfaTypes` puede ser vacío.
|
|
14
|
-
*
|
|
15
|
-
* Razón: cuando el pool nace con MFA habilitado, el connector llama
|
|
16
|
-
* `SetUserPoolMfaConfigCommand` con la lista de tipos del DTO. Si el array
|
|
17
|
-
* llega vacío con `requireMfa: true`, el SDK rechaza con InvalidParameterException
|
|
18
|
-
* y el pool queda en estado inconsistente (MfaConfiguration:'ON' sin tipos).
|
|
19
|
-
* Mejor rechazar en validación del DTO antes de tocar AWS.
|
|
20
|
-
*
|
|
21
|
-
* Ver pivote v1.4.1 TD-017 cerrado + spec doc §1 R3.
|
|
22
|
-
*/
|
|
23
|
-
let MfaTypesRequiresOne = class MfaTypesRequiresOne {
|
|
24
|
-
validate(mfaTypes, args) {
|
|
25
|
-
const obj = args.object;
|
|
26
|
-
if (obj.requireMfa === true) {
|
|
27
|
-
return Array.isArray(mfaTypes) && mfaTypes.length >= 1;
|
|
28
|
-
}
|
|
29
|
-
// requireMfa: false → cualquier mfaTypes pasa.
|
|
30
|
-
return true;
|
|
31
|
-
}
|
|
32
|
-
defaultMessage() {
|
|
33
|
-
return 'mfaTypes requiere al menos un tipo cuando requireMfa=true';
|
|
34
|
-
}
|
|
35
|
-
};
|
|
36
|
-
exports.MfaTypesRequiresOne = MfaTypesRequiresOne;
|
|
37
|
-
exports.MfaTypesRequiresOne = MfaTypesRequiresOne = __decorate([
|
|
38
|
-
(0, class_validator_1.ValidatorConstraint)({ name: 'MfaTypesRequiresOneWhenMfaRequired', async: false })
|
|
39
|
-
], MfaTypesRequiresOne);
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Tipo de User Pool de Cognito desde la perspectiva del modelo RBAC Fiado.
|
|
3
|
-
*
|
|
4
|
-
* Origen: spec del proyecto `cognito-backoffice-connector` (Fase 0, componente 01
|
|
5
|
-
* documento `docs/superpowers/specs/2026-05-26-cognito-connector-decisiones-pendientes-design.md`).
|
|
6
|
-
*
|
|
7
|
-
* Decisión (TD-003): el proyecto converge en estos 2 valores. El documento componente 03
|
|
8
|
-
* lista 3 valores (incluyendo una variante adicional) pero queda como outlier — la
|
|
9
|
-
* decisión vigente en los 6 docs restantes y en el plan de implementación es 2 valores:
|
|
10
|
-
* - BACKOFFICE_PLATFORM — pool del backoffice de plataforma (cross-tenant)
|
|
11
|
-
* - BACKOFFICE_TENANT — pool por tenant (multi-tenant isolation)
|
|
12
|
-
*/
|
|
13
|
-
export declare enum PoolKind {
|
|
14
|
-
BACKOFFICE_PLATFORM = "BACKOFFICE_PLATFORM",
|
|
15
|
-
BACKOFFICE_TENANT = "BACKOFFICE_TENANT"
|
|
16
|
-
}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.PoolKind = void 0;
|
|
4
|
-
/**
|
|
5
|
-
* Tipo de User Pool de Cognito desde la perspectiva del modelo RBAC Fiado.
|
|
6
|
-
*
|
|
7
|
-
* Origen: spec del proyecto `cognito-backoffice-connector` (Fase 0, componente 01
|
|
8
|
-
* documento `docs/superpowers/specs/2026-05-26-cognito-connector-decisiones-pendientes-design.md`).
|
|
9
|
-
*
|
|
10
|
-
* Decisión (TD-003): el proyecto converge en estos 2 valores. El documento componente 03
|
|
11
|
-
* lista 3 valores (incluyendo una variante adicional) pero queda como outlier — la
|
|
12
|
-
* decisión vigente en los 6 docs restantes y en el plan de implementación es 2 valores:
|
|
13
|
-
* - BACKOFFICE_PLATFORM — pool del backoffice de plataforma (cross-tenant)
|
|
14
|
-
* - BACKOFFICE_TENANT — pool por tenant (multi-tenant isolation)
|
|
15
|
-
*/
|
|
16
|
-
var PoolKind;
|
|
17
|
-
(function (PoolKind) {
|
|
18
|
-
PoolKind["BACKOFFICE_PLATFORM"] = "BACKOFFICE_PLATFORM";
|
|
19
|
-
PoolKind["BACKOFFICE_TENANT"] = "BACKOFFICE_TENANT";
|
|
20
|
-
})(PoolKind || (exports.PoolKind = PoolKind = {}));
|
package/bin/rbac/index.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './enums/PoolKind';
|