@fiado/type-kit 3.353.0 → 3.355.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.
Files changed (103) hide show
  1. package/_test_/unit/webhookBusiness/WebhookEventEnvelope.test.ts +147 -0
  2. package/_test_/unit/webhookBusiness/webhookEvents.test.ts +197 -0
  3. package/_test_/unit/webhookBusiness/webhookSubscriptionRequests.test.ts +60 -0
  4. package/bin/index.d.ts +1 -0
  5. package/bin/index.js +5 -1
  6. package/bin/productCatalog/enums/ProductSubtypeEnum.d.ts +1 -1
  7. package/bin/productCatalog/enums/ProductSubtypeEnum.js +2 -2
  8. package/bin/productCatalog/enums/ProductTypeEnum.d.ts +4 -4
  9. package/bin/productCatalog/enums/ProductTypeEnum.js +4 -4
  10. package/bin/transactionProcessor/dtos/{AuthorizeWelcomeBonusRequest.d.ts → AuthorizeBonusRequest.d.ts} +3 -3
  11. package/bin/transactionProcessor/dtos/{AuthorizeWelcomeBonusRequest.js → AuthorizeBonusRequest.js} +10 -10
  12. package/bin/transactionProcessor/index.d.ts +1 -1
  13. package/bin/transactionProcessor/index.js +1 -1
  14. package/bin/walletFunding/dtos/CreateFundingReferenceRequest.d.ts +7 -0
  15. package/bin/walletFunding/dtos/CreateFundingReferenceRequest.js +6 -0
  16. package/bin/walletFunding/enums/WalletFundingChannelEnum.d.ts +13 -0
  17. package/bin/walletFunding/enums/WalletFundingChannelEnum.js +17 -0
  18. package/bin/walletFunding/enums/index.d.ts +1 -0
  19. package/bin/walletFunding/enums/index.js +1 -0
  20. package/bin/webhookBusiness/constants/CaseRefPattern.d.ts +8 -0
  21. package/bin/webhookBusiness/constants/CaseRefPattern.js +11 -0
  22. package/bin/webhookBusiness/constants/WebhookFieldLimits.d.ts +6 -0
  23. package/bin/webhookBusiness/constants/WebhookFieldLimits.js +9 -0
  24. package/bin/webhookBusiness/dtos/WebhookDeliveryView.d.ts +28 -0
  25. package/bin/webhookBusiness/dtos/WebhookDeliveryView.js +2 -0
  26. package/bin/webhookBusiness/dtos/WebhookEventEnvelope.d.ts +27 -0
  27. package/bin/webhookBusiness/dtos/WebhookEventEnvelope.js +62 -0
  28. package/bin/webhookBusiness/dtos/WebhookOutboundMessage.d.ts +10 -0
  29. package/bin/webhookBusiness/dtos/WebhookOutboundMessage.js +2 -0
  30. package/bin/webhookBusiness/dtos/WebhookSubscriptionView.d.ts +23 -0
  31. package/bin/webhookBusiness/dtos/WebhookSubscriptionView.js +2 -0
  32. package/bin/webhookBusiness/dtos/requests/DeactivateWebhookSubscriptionRequest.d.ts +11 -0
  33. package/bin/webhookBusiness/dtos/requests/DeactivateWebhookSubscriptionRequest.js +42 -0
  34. package/bin/webhookBusiness/dtos/requests/GetWebhookSubscriptionRequest.d.ts +9 -0
  35. package/bin/webhookBusiness/dtos/requests/GetWebhookSubscriptionRequest.js +35 -0
  36. package/bin/webhookBusiness/dtos/requests/ListWebhookDeliveriesRequest.d.ts +9 -0
  37. package/bin/webhookBusiness/dtos/requests/ListWebhookDeliveriesRequest.js +35 -0
  38. package/bin/webhookBusiness/dtos/requests/RedeliverWebhookEventRequest.d.ts +11 -0
  39. package/bin/webhookBusiness/dtos/requests/RedeliverWebhookEventRequest.js +43 -0
  40. package/bin/webhookBusiness/dtos/requests/UpsertWebhookSubscriptionRequest.d.ts +22 -0
  41. package/bin/webhookBusiness/dtos/requests/UpsertWebhookSubscriptionRequest.js +89 -0
  42. package/bin/webhookBusiness/dtos/responses/DeactivateWebhookSubscriptionResponse.d.ts +5 -0
  43. package/bin/webhookBusiness/dtos/responses/DeactivateWebhookSubscriptionResponse.js +2 -0
  44. package/bin/webhookBusiness/dtos/responses/GetWebhookSubscriptionResponse.d.ts +5 -0
  45. package/bin/webhookBusiness/dtos/responses/GetWebhookSubscriptionResponse.js +2 -0
  46. package/bin/webhookBusiness/dtos/responses/ListWebhookDeliveriesResponse.d.ts +10 -0
  47. package/bin/webhookBusiness/dtos/responses/ListWebhookDeliveriesResponse.js +2 -0
  48. package/bin/webhookBusiness/dtos/responses/ListWebhookSubscriptionsResponse.d.ts +10 -0
  49. package/bin/webhookBusiness/dtos/responses/ListWebhookSubscriptionsResponse.js +2 -0
  50. package/bin/webhookBusiness/dtos/responses/RedeliverWebhookEventResponse.d.ts +11 -0
  51. package/bin/webhookBusiness/dtos/responses/RedeliverWebhookEventResponse.js +2 -0
  52. package/bin/webhookBusiness/dtos/responses/UpsertWebhookSubscriptionResponse.d.ts +7 -0
  53. package/bin/webhookBusiness/dtos/responses/UpsertWebhookSubscriptionResponse.js +2 -0
  54. package/bin/webhookBusiness/enums/ComplianceDecisionEnum.d.ts +11 -0
  55. package/bin/webhookBusiness/enums/ComplianceDecisionEnum.js +15 -0
  56. package/bin/webhookBusiness/enums/DeliveryOutcomeEnum.d.ts +15 -0
  57. package/bin/webhookBusiness/enums/DeliveryOutcomeEnum.js +19 -0
  58. package/bin/webhookBusiness/enums/SubscriptionStatusEnum.d.ts +5 -0
  59. package/bin/webhookBusiness/enums/SubscriptionStatusEnum.js +9 -0
  60. package/bin/webhookBusiness/enums/SubscriptionVisibilityEnum.d.ts +10 -0
  61. package/bin/webhookBusiness/enums/SubscriptionVisibilityEnum.js +14 -0
  62. package/bin/webhookBusiness/enums/WebhookEventType.d.ts +10 -0
  63. package/bin/webhookBusiness/enums/WebhookEventType.js +14 -0
  64. package/bin/webhookBusiness/events/AccountIssuanceCompletedV1.d.ts +19 -0
  65. package/bin/webhookBusiness/events/AccountIssuanceCompletedV1.js +47 -0
  66. package/bin/webhookBusiness/events/ComplianceDecisionV1.d.ts +25 -0
  67. package/bin/webhookBusiness/events/ComplianceDecisionV1.js +51 -0
  68. package/bin/webhookBusiness/index.d.ts +24 -0
  69. package/bin/webhookBusiness/index.js +47 -0
  70. package/package.json +1 -1
  71. package/src/index.ts +4 -0
  72. package/src/productCatalog/enums/ProductSubtypeEnum.ts +2 -2
  73. package/src/productCatalog/enums/ProductTypeEnum.ts +4 -4
  74. package/src/transactionProcessor/dtos/{AuthorizeWelcomeBonusRequest.ts → AuthorizeBonusRequest.ts} +3 -3
  75. package/src/transactionProcessor/index.ts +1 -1
  76. package/src/walletFunding/dtos/CreateFundingReferenceRequest.ts +7 -0
  77. package/src/walletFunding/enums/WalletFundingChannelEnum.ts +13 -0
  78. package/src/walletFunding/enums/index.ts +1 -0
  79. package/src/webhookBusiness/constants/CaseRefPattern.ts +9 -0
  80. package/src/webhookBusiness/constants/WebhookFieldLimits.ts +8 -0
  81. package/src/webhookBusiness/dtos/WebhookDeliveryView.ts +29 -0
  82. package/src/webhookBusiness/dtos/WebhookEventEnvelope.ts +42 -0
  83. package/src/webhookBusiness/dtos/WebhookOutboundMessage.ts +18 -0
  84. package/src/webhookBusiness/dtos/WebhookSubscriptionView.ts +24 -0
  85. package/src/webhookBusiness/dtos/requests/DeactivateWebhookSubscriptionRequest.ts +27 -0
  86. package/src/webhookBusiness/dtos/requests/GetWebhookSubscriptionRequest.ts +20 -0
  87. package/src/webhookBusiness/dtos/requests/ListWebhookDeliveriesRequest.ts +21 -0
  88. package/src/webhookBusiness/dtos/requests/RedeliverWebhookEventRequest.ts +28 -0
  89. package/src/webhookBusiness/dtos/requests/UpsertWebhookSubscriptionRequest.ts +69 -0
  90. package/src/webhookBusiness/dtos/responses/DeactivateWebhookSubscriptionResponse.ts +6 -0
  91. package/src/webhookBusiness/dtos/responses/GetWebhookSubscriptionResponse.ts +6 -0
  92. package/src/webhookBusiness/dtos/responses/ListWebhookDeliveriesResponse.ts +11 -0
  93. package/src/webhookBusiness/dtos/responses/ListWebhookSubscriptionsResponse.ts +11 -0
  94. package/src/webhookBusiness/dtos/responses/RedeliverWebhookEventResponse.ts +12 -0
  95. package/src/webhookBusiness/dtos/responses/UpsertWebhookSubscriptionResponse.ts +8 -0
  96. package/src/webhookBusiness/enums/ComplianceDecisionEnum.ts +11 -0
  97. package/src/webhookBusiness/enums/DeliveryOutcomeEnum.ts +15 -0
  98. package/src/webhookBusiness/enums/SubscriptionStatusEnum.ts +5 -0
  99. package/src/webhookBusiness/enums/SubscriptionVisibilityEnum.ts +10 -0
  100. package/src/webhookBusiness/enums/WebhookEventType.ts +10 -0
  101. package/src/webhookBusiness/events/AccountIssuanceCompletedV1.ts +30 -0
  102. package/src/webhookBusiness/events/ComplianceDecisionV1.ts +36 -0
  103. package/src/webhookBusiness/index.ts +37 -0
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ComplianceDecisionEnum = void 0;
4
+ /**
5
+ * Desenlace del dictamen del oficial de cumplimiento, en los únicos dos términos accionables.
6
+ * Deliberadamente NO existe un valor que insinúe sobre qué se dictaminó: avisar de una coincidencia
7
+ * en listas es delito, y este enum viaja a un externo.
8
+ */
9
+ var ComplianceDecisionEnum;
10
+ (function (ComplianceDecisionEnum) {
11
+ /** Se liberó el caso: el siguiente intento de abrir la cuenta puede pasar. */
12
+ ComplianceDecisionEnum["CLEARED"] = "CLEARED";
13
+ /** Terminal: la cuenta no se abre y la venta no continúa. Nadie lo va a destrabar. */
14
+ ComplianceDecisionEnum["REJECTED"] = "REJECTED";
15
+ })(ComplianceDecisionEnum || (exports.ComplianceDecisionEnum = ComplianceDecisionEnum = {}));
@@ -0,0 +1,15 @@
1
+ /** Desenlace de un evento frente a un destinatario, tal como queda asentado en la bitácora. */
2
+ export declare enum DeliveryOutcomeEnum {
3
+ /** El suscriptor aceptó el evento. */
4
+ DELIVERED = "DELIVERED",
5
+ /** El suscriptor rechazó la entrega o no respondió. El mensaje vuelve a la cola. */
6
+ FAILED = "FAILED",
7
+ /** Se agotaron los intentos que el destino admite. No se vuelve a intentar. */
8
+ EXHAUSTED = "EXHAUSTED",
9
+ /** El directoryId no traía ningún tag `wh:*`: el evento se descarta sin reintento. */
10
+ NO_RECIPIENT = "NO_RECIPIENT",
11
+ /** El tag existe pero nadie declaró un destino para ese eventType. */
12
+ NO_SUBSCRIPTION = "NO_SUBSCRIPTION",
13
+ /** El destino está dado de baja: es un no-op registrado, no un error. */
14
+ SKIPPED_INACTIVE = "SKIPPED_INACTIVE"
15
+ }
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DeliveryOutcomeEnum = void 0;
4
+ /** Desenlace de un evento frente a un destinatario, tal como queda asentado en la bitácora. */
5
+ var DeliveryOutcomeEnum;
6
+ (function (DeliveryOutcomeEnum) {
7
+ /** El suscriptor aceptó el evento. */
8
+ DeliveryOutcomeEnum["DELIVERED"] = "DELIVERED";
9
+ /** El suscriptor rechazó la entrega o no respondió. El mensaje vuelve a la cola. */
10
+ DeliveryOutcomeEnum["FAILED"] = "FAILED";
11
+ /** Se agotaron los intentos que el destino admite. No se vuelve a intentar. */
12
+ DeliveryOutcomeEnum["EXHAUSTED"] = "EXHAUSTED";
13
+ /** El directoryId no traía ningún tag `wh:*`: el evento se descarta sin reintento. */
14
+ DeliveryOutcomeEnum["NO_RECIPIENT"] = "NO_RECIPIENT";
15
+ /** El tag existe pero nadie declaró un destino para ese eventType. */
16
+ DeliveryOutcomeEnum["NO_SUBSCRIPTION"] = "NO_SUBSCRIPTION";
17
+ /** El destino está dado de baja: es un no-op registrado, no un error. */
18
+ DeliveryOutcomeEnum["SKIPPED_INACTIVE"] = "SKIPPED_INACTIVE";
19
+ })(DeliveryOutcomeEnum || (exports.DeliveryOutcomeEnum = DeliveryOutcomeEnum = {}));
@@ -0,0 +1,5 @@
1
+ /** Permite apagar un destino sin borrar su fila del padrón. */
2
+ export declare enum SubscriptionStatusEnum {
3
+ ACTIVE = "ACTIVE",
4
+ INACTIVE = "INACTIVE"
5
+ }
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SubscriptionStatusEnum = void 0;
4
+ /** Permite apagar un destino sin borrar su fila del padrón. */
5
+ var SubscriptionStatusEnum;
6
+ (function (SubscriptionStatusEnum) {
7
+ SubscriptionStatusEnum["ACTIVE"] = "ACTIVE";
8
+ SubscriptionStatusEnum["INACTIVE"] = "INACTIVE";
9
+ })(SubscriptionStatusEnum || (exports.SubscriptionStatusEnum = SubscriptionStatusEnum = {}));
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Qué cliente y qué credenciales lleva la entrega. No es "dentro o fuera de la VPC".
3
+ * Es enum y no un booleano para poder sumar un tercer modo (firma, mTLS, bearer) sin migrar la tabla.
4
+ */
5
+ export declare enum SubscriptionVisibilityEnum {
6
+ /** Receptor dentro de la VPC: la baseUrl se resuelve por destino y se pasa por llamada. */
7
+ PRIVATE = "PRIVATE",
8
+ /** Receptor fuera de la VPC: HTTP plano contra la URL absoluta, sin token ni headers propios. */
9
+ PUBLIC = "PUBLIC"
10
+ }
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SubscriptionVisibilityEnum = void 0;
4
+ /**
5
+ * Qué cliente y qué credenciales lleva la entrega. No es "dentro o fuera de la VPC".
6
+ * Es enum y no un booleano para poder sumar un tercer modo (firma, mTLS, bearer) sin migrar la tabla.
7
+ */
8
+ var SubscriptionVisibilityEnum;
9
+ (function (SubscriptionVisibilityEnum) {
10
+ /** Receptor dentro de la VPC: la baseUrl se resuelve por destino y se pasa por llamada. */
11
+ SubscriptionVisibilityEnum["PRIVATE"] = "PRIVATE";
12
+ /** Receptor fuera de la VPC: HTTP plano contra la URL absoluta, sin token ni headers propios. */
13
+ SubscriptionVisibilityEnum["PUBLIC"] = "PUBLIC";
14
+ })(SubscriptionVisibilityEnum || (exports.SubscriptionVisibilityEnum = SubscriptionVisibilityEnum = {}));
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Catálogo cerrado de eventos que `webhook-business` entrega a suscriptores externos (corte 1).
3
+ * El valor es el nombre versionado del contrato: el receptor rutea por él y no por el shape.
4
+ */
5
+ export declare enum WebhookEventType {
6
+ /** La emisión de la cuenta PCF llegó a su desenlace terminal (abrió o falló). */
7
+ AccountIssuanceCompleted = "AccountIssuanceCompletedV1",
8
+ /** El oficial de cumplimiento dictaminó sobre el caso. */
9
+ ComplianceDecision = "ComplianceDecisionV1"
10
+ }
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WebhookEventType = void 0;
4
+ /**
5
+ * Catálogo cerrado de eventos que `webhook-business` entrega a suscriptores externos (corte 1).
6
+ * El valor es el nombre versionado del contrato: el receptor rutea por él y no por el shape.
7
+ */
8
+ var WebhookEventType;
9
+ (function (WebhookEventType) {
10
+ /** La emisión de la cuenta PCF llegó a su desenlace terminal (abrió o falló). */
11
+ WebhookEventType["AccountIssuanceCompleted"] = "AccountIssuanceCompletedV1";
12
+ /** El oficial de cumplimiento dictaminó sobre el caso. */
13
+ WebhookEventType["ComplianceDecision"] = "ComplianceDecisionV1";
14
+ })(WebhookEventType || (exports.WebhookEventType = WebhookEventType = {}));
@@ -0,0 +1,19 @@
1
+ import { AccountStatusEnum } from '../../retailCustomer/enums/AccountStatusEnum';
2
+ /**
3
+ * Desenlace terminal de la emisión de la cuenta PCF, entregado por webhook a un suscriptor externo.
4
+ * Espeja `RetailCustomer.AccountResultRequest`, el contrato que el receptor ya espera. No lleva CLABE.
5
+ */
6
+ export declare class AccountIssuanceCompletedV1 {
7
+ /** Identidad de la persona en Fiado. El `directoryId` viaja en el sobre, no aquí. */
8
+ peopleId: string;
9
+ /** `OPENING` y `LINKED` no son valores válidos: este evento solo reporta el desenlace. */
10
+ status: AccountStatusEnum;
11
+ /** Nivel de la cuenta PCF. Presente solo con `OPEN`. */
12
+ pcfAccountLevel?: 1 | 2;
13
+ /**
14
+ * Por qué no abrió, para soporte y administración. Presente solo con `FAILED`.
15
+ * Texto libre del core, que puede mencionar cumplimiento: nunca se le muestra al vendedor ni al
16
+ * comprador, misma regla que `WizardBlocked.detail`.
17
+ */
18
+ failReason?: string;
19
+ }
@@ -0,0 +1,47 @@
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.AccountIssuanceCompletedV1 = void 0;
13
+ const class_transformer_1 = require("class-transformer");
14
+ const class_validator_1 = require("class-validator");
15
+ const AccountStatusEnum_1 = require("../../retailCustomer/enums/AccountStatusEnum");
16
+ const WebhookFieldLimits_1 = require("../constants/WebhookFieldLimits");
17
+ /**
18
+ * Desenlace terminal de la emisión de la cuenta PCF, entregado por webhook a un suscriptor externo.
19
+ * Espeja `RetailCustomer.AccountResultRequest`, el contrato que el receptor ya espera. No lleva CLABE.
20
+ */
21
+ class AccountIssuanceCompletedV1 {
22
+ }
23
+ exports.AccountIssuanceCompletedV1 = AccountIssuanceCompletedV1;
24
+ __decorate([
25
+ (0, class_transformer_1.Expose)(),
26
+ (0, class_validator_1.IsString)(),
27
+ (0, class_validator_1.IsNotEmpty)(),
28
+ __metadata("design:type", String)
29
+ ], AccountIssuanceCompletedV1.prototype, "peopleId", void 0);
30
+ __decorate([
31
+ (0, class_transformer_1.Expose)(),
32
+ (0, class_validator_1.IsIn)([AccountStatusEnum_1.AccountStatusEnum.OPEN, AccountStatusEnum_1.AccountStatusEnum.FAILED]),
33
+ __metadata("design:type", String)
34
+ ], AccountIssuanceCompletedV1.prototype, "status", void 0);
35
+ __decorate([
36
+ (0, class_transformer_1.Expose)(),
37
+ (0, class_validator_1.IsOptional)(),
38
+ (0, class_validator_1.IsIn)([1, 2]),
39
+ __metadata("design:type", Number)
40
+ ], AccountIssuanceCompletedV1.prototype, "pcfAccountLevel", void 0);
41
+ __decorate([
42
+ (0, class_transformer_1.Expose)(),
43
+ (0, class_validator_1.IsOptional)(),
44
+ (0, class_validator_1.IsString)(),
45
+ (0, class_validator_1.MaxLength)(WebhookFieldLimits_1.WEBHOOK_FAIL_REASON_MAX_LENGTH),
46
+ __metadata("design:type", String)
47
+ ], AccountIssuanceCompletedV1.prototype, "failReason", void 0);
@@ -0,0 +1,25 @@
1
+ import { ComplianceDecisionEnum } from '../enums/ComplianceDecisionEnum';
2
+ /**
3
+ * Dictamen del oficial de cumplimiento, entregado por webhook a un suscriptor externo.
4
+ * Lleva el desenlace accionable y nada más: el receptor necesita saber qué hacer, no por qué.
5
+ *
6
+ * Restricción legal, no preferencia de diseño. El DTO NO lleva qué lista disparó, ni la
7
+ * justificación del oficial, ni quién firmó, ni el `alertId` de PLD. Avisar de una coincidencia en
8
+ * listas de cumplimiento es delito. Cualquier campo que se agregue aquí tiene que pasar ese filtro.
9
+ */
10
+ export declare class ComplianceDecisionV1 {
11
+ /** Identidad de la persona en Fiado. El `directoryId` viaja en el sobre, no aquí. */
12
+ peopleId: string;
13
+ /**
14
+ * Estado consolidado del caso, no el sello de una lista: `REJECTED` en cuanto una lista rechaza,
15
+ * `CLEARED` sólo cuando ya no queda ninguna trabando.
16
+ */
17
+ decision: ComplianceDecisionEnum;
18
+ /** ISO-8601. Cuándo se estampó el dictamen. */
19
+ decidedAt: string;
20
+ /**
21
+ * Referencia OPACA para soporte, acuñada para el webhook: permite rastrear el caso sin nombrarlo.
22
+ * El formato con prefijo es lo que impide que entre el `alertId` de PLD. Ver `CaseRefPattern`.
23
+ */
24
+ caseRef?: string;
25
+ }
@@ -0,0 +1,51 @@
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.ComplianceDecisionV1 = void 0;
13
+ const class_transformer_1 = require("class-transformer");
14
+ const class_validator_1 = require("class-validator");
15
+ const ComplianceDecisionEnum_1 = require("../enums/ComplianceDecisionEnum");
16
+ const CaseRefPattern_1 = require("../constants/CaseRefPattern");
17
+ /**
18
+ * Dictamen del oficial de cumplimiento, entregado por webhook a un suscriptor externo.
19
+ * Lleva el desenlace accionable y nada más: el receptor necesita saber qué hacer, no por qué.
20
+ *
21
+ * Restricción legal, no preferencia de diseño. El DTO NO lleva qué lista disparó, ni la
22
+ * justificación del oficial, ni quién firmó, ni el `alertId` de PLD. Avisar de una coincidencia en
23
+ * listas de cumplimiento es delito. Cualquier campo que se agregue aquí tiene que pasar ese filtro.
24
+ */
25
+ class ComplianceDecisionV1 {
26
+ }
27
+ exports.ComplianceDecisionV1 = ComplianceDecisionV1;
28
+ __decorate([
29
+ (0, class_transformer_1.Expose)(),
30
+ (0, class_validator_1.IsString)(),
31
+ (0, class_validator_1.IsNotEmpty)(),
32
+ __metadata("design:type", String)
33
+ ], ComplianceDecisionV1.prototype, "peopleId", void 0);
34
+ __decorate([
35
+ (0, class_transformer_1.Expose)(),
36
+ (0, class_validator_1.IsEnum)(ComplianceDecisionEnum_1.ComplianceDecisionEnum),
37
+ __metadata("design:type", String)
38
+ ], ComplianceDecisionV1.prototype, "decision", void 0);
39
+ __decorate([
40
+ (0, class_transformer_1.Expose)(),
41
+ (0, class_validator_1.IsString)(),
42
+ (0, class_validator_1.IsISO8601)(),
43
+ __metadata("design:type", String)
44
+ ], ComplianceDecisionV1.prototype, "decidedAt", void 0);
45
+ __decorate([
46
+ (0, class_transformer_1.Expose)(),
47
+ (0, class_validator_1.IsOptional)(),
48
+ (0, class_validator_1.IsString)(),
49
+ (0, class_validator_1.Matches)(CaseRefPattern_1.WEBHOOK_CASE_REF_PATTERN, { message: CaseRefPattern_1.WEBHOOK_CASE_REF_MESSAGE }),
50
+ __metadata("design:type", String)
51
+ ], ComplianceDecisionV1.prototype, "caseRef", void 0);
@@ -0,0 +1,24 @@
1
+ export * from './enums/WebhookEventType';
2
+ export * from './enums/ComplianceDecisionEnum';
3
+ export * from './enums/SubscriptionVisibilityEnum';
4
+ export * from './enums/SubscriptionStatusEnum';
5
+ export * from './enums/DeliveryOutcomeEnum';
6
+ export * from './constants/CaseRefPattern';
7
+ export * from './constants/WebhookFieldLimits';
8
+ export * from './events/AccountIssuanceCompletedV1';
9
+ export * from './events/ComplianceDecisionV1';
10
+ export * from './dtos/WebhookEventEnvelope';
11
+ export * from './dtos/WebhookOutboundMessage';
12
+ export * from './dtos/WebhookSubscriptionView';
13
+ export * from './dtos/WebhookDeliveryView';
14
+ export * from './dtos/requests/UpsertWebhookSubscriptionRequest';
15
+ export * from './dtos/requests/GetWebhookSubscriptionRequest';
16
+ export * from './dtos/requests/DeactivateWebhookSubscriptionRequest';
17
+ export * from './dtos/requests/ListWebhookDeliveriesRequest';
18
+ export * from './dtos/requests/RedeliverWebhookEventRequest';
19
+ export * from './dtos/responses/UpsertWebhookSubscriptionResponse';
20
+ export * from './dtos/responses/GetWebhookSubscriptionResponse';
21
+ export * from './dtos/responses/ListWebhookSubscriptionsResponse';
22
+ export * from './dtos/responses/DeactivateWebhookSubscriptionResponse';
23
+ export * from './dtos/responses/ListWebhookDeliveriesResponse';
24
+ export * from './dtos/responses/RedeliverWebhookEventResponse';
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ // Enums
18
+ __exportStar(require("./enums/WebhookEventType"), exports);
19
+ __exportStar(require("./enums/ComplianceDecisionEnum"), exports);
20
+ __exportStar(require("./enums/SubscriptionVisibilityEnum"), exports);
21
+ __exportStar(require("./enums/SubscriptionStatusEnum"), exports);
22
+ __exportStar(require("./enums/DeliveryOutcomeEnum"), exports);
23
+ // Formatos y topes compartidos por los contratos
24
+ __exportStar(require("./constants/CaseRefPattern"), exports);
25
+ __exportStar(require("./constants/WebhookFieldLimits"), exports);
26
+ // Contratos de eventos (PascalCase + sufijo V1)
27
+ __exportStar(require("./events/AccountIssuanceCompletedV1"), exports);
28
+ __exportStar(require("./events/ComplianceDecisionV1"), exports);
29
+ // Sobre común + unión cerrada de la cola
30
+ __exportStar(require("./dtos/WebhookEventEnvelope"), exports);
31
+ __exportStar(require("./dtos/WebhookOutboundMessage"), exports);
32
+ // Vistas del padrón y de la bitácora, tal como salen por la API de administración
33
+ __exportStar(require("./dtos/WebhookSubscriptionView"), exports);
34
+ __exportStar(require("./dtos/WebhookDeliveryView"), exports);
35
+ // API privada de administración — requests
36
+ __exportStar(require("./dtos/requests/UpsertWebhookSubscriptionRequest"), exports);
37
+ __exportStar(require("./dtos/requests/GetWebhookSubscriptionRequest"), exports);
38
+ __exportStar(require("./dtos/requests/DeactivateWebhookSubscriptionRequest"), exports);
39
+ __exportStar(require("./dtos/requests/ListWebhookDeliveriesRequest"), exports);
40
+ __exportStar(require("./dtos/requests/RedeliverWebhookEventRequest"), exports);
41
+ // API privada de administración — responses
42
+ __exportStar(require("./dtos/responses/UpsertWebhookSubscriptionResponse"), exports);
43
+ __exportStar(require("./dtos/responses/GetWebhookSubscriptionResponse"), exports);
44
+ __exportStar(require("./dtos/responses/ListWebhookSubscriptionsResponse"), exports);
45
+ __exportStar(require("./dtos/responses/DeactivateWebhookSubscriptionResponse"), exports);
46
+ __exportStar(require("./dtos/responses/ListWebhookDeliveriesResponse"), exports);
47
+ __exportStar(require("./dtos/responses/RedeliverWebhookEventResponse"), exports);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fiado/type-kit",
3
- "version": "3.353.0",
3
+ "version": "3.355.0",
4
4
  "description": "",
5
5
  "main": "bin/index.js",
6
6
  "types": "bin/index.d.ts",
package/src/index.ts CHANGED
@@ -168,3 +168,7 @@ export * as Collection from './collection';
168
168
  export * as UserConfirmations from './userConfirmations';
169
169
  // PeopleBusiness: contrato de lectura por lote de People_GT + AccountRequirementControl_GT.
170
170
  export * as PeopleBusiness from './peopleBusiness';
171
+ // WebhookBusiness: contrato de la cola del lambda webhook-business — entrega de eventos de Fiado a
172
+ // suscriptores externos. Sobre común `WebhookEventEnvelope<T>` + los dos eventos del corte 1.
173
+ // El evento del oficial de cumplimiento NO dice sobre qué se dictaminó (restricción legal).
174
+ export * as WebhookBusiness from './webhookBusiness';
@@ -72,6 +72,6 @@ export enum ProductSubtypeEnum {
72
72
  // EQ_CASH_SA (Equality/Passport — depósito en efectivo en tiendas afiliadas)
73
73
  EQ_CASH_SA_CASH_IN = "CASH_IN",
74
74
 
75
- //SK_BONUS
76
- SKBONUS_WELCOME = "WELCOME",
75
+ //SUREKEEP
76
+ SUREKEEP_BONUS_MX = "BONUS_MX",
77
77
  }
@@ -19,9 +19,9 @@ export enum ProductTypeEnum {
19
19
  */
20
20
  EQ_CASH_SA = "EQ_CASH_SA",
21
21
  /**
22
- * Bonos que Fiado le acredita a un cliente de SureKeep. La familia agrupa; el motivo va en el
23
- * subtipo. Deliberadamente FUERA del switch de `CreateTransactionManager`: el camino por
24
- * defecto es el que escribe el par de asientos FiadoTx + PagoConFiadoTx.
22
+ * Categoría de las transacciones de SureKeep. Agrupa; el motivo va en el subtipo. Deliberadamente
23
+ * FUERA del switch de `CreateTransactionManager`: el camino por defecto es el que escribe el par
24
+ * de asientos FiadoTx + PagoConFiadoTx.
25
25
  */
26
- SK_BONUS = "SK_BONUS"
26
+ SUREKEEP = "SUREKEEP"
27
27
  }
@@ -1,14 +1,14 @@
1
1
  import { IsNotEmpty, IsNumber, IsPositive, IsString, MaxLength } from "class-validator";
2
2
 
3
3
  /**
4
- * Acreditación de un bono de SureKeep a la wallet PagoConfiado del comprador.
4
+ * Acreditación de un bono a la wallet PagoConfiado de una persona.
5
5
  *
6
6
  * NO lleva `operation`: un bono solo suma, y el servicio hardcodea `ADD`. Con el campo en el
7
7
  * request, un caller equivocado debitaría la wallet con el producto del bono.
8
8
  *
9
9
  * NO lleva `peopleId`: `initialize()` lo resuelve desde el directorio y pisa cualquier valor.
10
10
  */
11
- export class AuthorizeWelcomeBonusRequest {
11
+ export class AuthorizeBonusRequest {
12
12
  /** Es el `bonusId` del asiento: única por intento, para que un reintento real vuelva a ejecutar. */
13
13
  @IsString()
14
14
  @IsNotEmpty()
@@ -33,4 +33,4 @@ export class AuthorizeWelcomeBonusRequest {
33
33
  concept: string;
34
34
  }
35
35
 
36
- export default AuthorizeWelcomeBonusRequest;
36
+ export default AuthorizeBonusRequest;
@@ -10,7 +10,7 @@ export * from './dtos/AuthorizeSpeiMexBankTransferInRequest';
10
10
  export * from './dtos/AuthorizeSpeiBankTransferNcRequest';
11
11
  export * from './dtos/AuthorizeCollectorTransactionRequest';
12
12
  export * from './dtos/AuthorizeDisputeTransactionRequest';
13
- export * from './dtos/AuthorizeWelcomeBonusRequest';
13
+ export * from './dtos/AuthorizeBonusRequest';
14
14
  export * from './dtos/CardInfo';
15
15
  export * from './dtos/InstallmentsInfo';
16
16
  export * from './dtos/MerchantInfo';
@@ -3,6 +3,7 @@ import {
3
3
  Length, MaxLength,
4
4
  } from "class-validator";
5
5
  import { WalletFundingModeEnum } from "../enums/WalletFundingModeEnum";
6
+ import { WalletFundingChannelEnum } from "../enums/WalletFundingChannelEnum";
6
7
 
7
8
  export class CreateFundingReferenceRequest {
8
9
  @IsString() @MaxLength(64) directoryId!: string;
@@ -10,6 +11,12 @@ export class CreateFundingReferenceRequest {
10
11
  @IsString() @MaxLength(128) name!: string;
11
12
  @IsEmail() email!: string;
12
13
  @IsEnum(WalletFundingModeEnum) mode!: WalletFundingModeEnum;
14
+ /**
15
+ * Ausente o `NETWORK` reproduce el comportamiento histórico, para que la app
16
+ * anterior siga funcionando sin cambios. Con `OXXO`, `amount` es obligatorio
17
+ * y `mode` debe ser `FIXED`.
18
+ */
19
+ @IsOptional() @IsEnum(WalletFundingChannelEnum) channel?: WalletFundingChannelEnum;
13
20
  /** `0` = OPEN (monto se decide en caja). `>0` = FIXED con monto exacto. */
14
21
  @IsOptional() @IsNumber() @Min(0) amount?: number;
15
22
  @IsString() @Length(3, 3) currencyCode!: string;
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Red por la que se cobra la referencia de fondeo.
3
+ *
4
+ * No son intercambiables: la referencia OXXO sirve SOLO en OXXO, y la de red
5
+ * sirve en las 2.574 tiendas restantes pero no en OXXO. El canal determina a
6
+ * qué endpoint del proveedor se llama y con qué reglas.
7
+ */
8
+ export enum WalletFundingChannelEnum {
9
+ /** Red general. Referencia reutilizable de monto abierto. */
10
+ NETWORK = "NETWORK",
11
+ /** OXXO Pay. Referencia de un solo uso, monto fijo, vence en 1 día. */
12
+ OXXO = "OXXO",
13
+ }
@@ -1,5 +1,6 @@
1
1
  export * from "./FundingMethodEnum";
2
2
  export * from "./WalletFundingModeEnum";
3
+ export * from "./WalletFundingChannelEnum";
3
4
  export * from "./WalletFundingReferenceStatusEnum";
4
5
  export * from "./WalletFundingPaymentStatusEnum";
5
6
  export * from "./WalletFundingErrorCodeEnum";
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Formato de `caseRef`: prefijo `case_` más un ULID de 26 caracteres en Crockford base32, el mismo
3
+ * cuerpo que `CREDIT_ID_PATTERN`. El prefijo obliga a acuñar la referencia para el webhook, así que
4
+ * un `alertId` de PLD (UUID crudo o `stuck-<id>`) no lo satisface y no puede colarse.
5
+ */
6
+ export const WEBHOOK_CASE_REF_PATTERN = /^case_[0-7][0-9A-HJKMNP-TV-Z]{25}$/;
7
+
8
+ /** Mensaje único, para que el productor no tenga que adivinar el formato. */
9
+ export const WEBHOOK_CASE_REF_MESSAGE = 'caseRef debe ser case_ seguido de un ULID de 26 caracteres';
@@ -0,0 +1,8 @@
1
+ /** Tope del `tag` del padrón, común a los tres contratos que lo llevan. */
2
+ export const WEBHOOK_TAG_MAX_LENGTH = 128;
3
+
4
+ /** Tope del `eventId`, común al sobre de la cola y al request de reposición. */
5
+ export const WEBHOOK_EVENT_ID_MAX_LENGTH = 128;
6
+
7
+ /** Tope del `failReason` del core, que sale sin transformar hacia un receptor externo. */
8
+ export const WEBHOOK_FAIL_REASON_MAX_LENGTH = 512;
@@ -0,0 +1,29 @@
1
+ import type { WebhookEventType } from '../enums/WebhookEventType';
2
+ import type { DeliveryOutcomeEnum } from '../enums/DeliveryOutcomeEnum';
3
+ import type { SubscriptionVisibilityEnum } from '../enums/SubscriptionVisibilityEnum';
4
+
5
+ /**
6
+ * Un asiento de la bitácora de entregas: qué evento salió, a quién y cómo terminó.
7
+ * Nunca lleva el payload del evento, sólo identificadores operacionales y el desenlace.
8
+ */
9
+ export interface WebhookDeliveryView {
10
+ eventId: string;
11
+ eventType: WebhookEventType;
12
+ /** Lambda que produjo el evento. */
13
+ source: string;
14
+ directoryId: string;
15
+ occurredAt: string;
16
+ outcome: DeliveryOutcomeEnum;
17
+ tag?: string;
18
+ subscriberName?: string;
19
+ visibility?: SubscriptionVisibilityEnum;
20
+ url?: string;
21
+ attempt?: number;
22
+ /** Status con el que respondió el receptor. Ausente si nunca hubo respuesta. */
23
+ receiverHttpStatus?: number;
24
+ errorCode?: string;
25
+ /** Motivo del fallo, recortado. Nunca la respuesta entera del receptor. */
26
+ failureReason?: string;
27
+ latencyMs?: number;
28
+ createdAt?: number;
29
+ }
@@ -0,0 +1,42 @@
1
+ import { Expose } from 'class-transformer';
2
+ import { IsEnum, IsISO8601, IsNotEmpty, IsNotEmptyObject, IsObject, IsString, MaxLength } from 'class-validator';
3
+ import { WebhookEventType } from '../enums/WebhookEventType';
4
+ import { WEBHOOK_EVENT_ID_MAX_LENGTH } from '../constants/WebhookFieldLimits';
5
+
6
+ /**
7
+ * Sobre común de todo lo que sale por `webhook-business`. El receptor rutea por `eventType` y recién
8
+ * ahí valida el `payload` contra la clase concreta que le corresponde.
9
+ *
10
+ * `TEventType` deja fijar el miembro del catálogo que acompaña a `TPayload`, para que el par
11
+ * `(eventType, payload)` quede amarrado en `WebhookOutboundMessage`.
12
+ */
13
+ export class WebhookEventEnvelope<TPayload, TEventType extends WebhookEventType = WebhookEventType> {
14
+ /** Idempotencia del receptor: reprocesar el mismo `eventId` no debe duplicar efectos. */
15
+ @Expose() @IsString() @IsNotEmpty() @MaxLength(WEBHOOK_EVENT_ID_MAX_LENGTH)
16
+ eventId!: string;
17
+
18
+ @Expose() @IsEnum(WebhookEventType)
19
+ eventType!: TEventType;
20
+
21
+ /** Lambda que lo produjo. Para soporte y para la bitácora de entregas. */
22
+ @Expose() @IsString() @IsNotEmpty()
23
+ source!: string;
24
+
25
+ /**
26
+ * La llave de enrutamiento: con esto `webhook-business` resuelve los tags `wh:*` y decide a
27
+ * quién le toca. Obligatorio en TODO evento — sin él no hay destinatario posible.
28
+ */
29
+ @Expose() @IsString() @IsNotEmpty()
30
+ directoryId!: string;
31
+
32
+ /** ISO-8601. Resuelve el reordenamiento; la cola es estándar y no garantiza orden. */
33
+ @Expose() @IsString() @IsISO8601()
34
+ occurredAt!: string;
35
+
36
+ /**
37
+ * El evento concreto, sin transformar. Se valida como objeto presente y nada más: la clase real
38
+ * la elige el receptor por `eventType`, y un `@Type()` genérico aquí dejaría el payload vacío.
39
+ */
40
+ @Expose() @IsObject() @IsNotEmptyObject()
41
+ payload!: TPayload;
42
+ }
@@ -0,0 +1,18 @@
1
+ import { WebhookEventEnvelope } from './WebhookEventEnvelope';
2
+ import { WebhookEventType } from '../enums/WebhookEventType';
3
+ import { AccountIssuanceCompletedV1 } from '../events/AccountIssuanceCompletedV1';
4
+ import { ComplianceDecisionV1 } from '../events/ComplianceDecisionV1';
5
+
6
+ /**
7
+ * Unión cerrada de todo lo que la cola de `webhook-business` transporta hacia suscriptores externos
8
+ * (corte 1). Cada variante amarra el par `(eventType, payload)`: un sobre que declara un tipo de
9
+ * evento y lleva el payload de otro no compila.
10
+ */
11
+ export type WebhookOutboundMessage =
12
+ | WebhookEventEnvelope<AccountIssuanceCompletedV1, WebhookEventType.AccountIssuanceCompleted>
13
+ | WebhookEventEnvelope<ComplianceDecisionV1, WebhookEventType.ComplianceDecision>;
14
+
15
+ type AssertNever<T extends never> = T;
16
+
17
+ /** Falla la compilación si se agrega un `WebhookEventType` que la unión de arriba no cubre. */
18
+ type UncoveredWebhookEventType = AssertNever<Exclude<WebhookEventType, WebhookOutboundMessage['eventType']>>;
@@ -0,0 +1,24 @@
1
+ import type { WebhookEventType } from '../enums/WebhookEventType';
2
+ import type { SubscriptionStatusEnum } from '../enums/SubscriptionStatusEnum';
3
+ import type { SubscriptionVisibilityEnum } from '../enums/SubscriptionVisibilityEnum';
4
+
5
+ /**
6
+ * Una fila del padrón de suscriptores tal como sale por la API de administración.
7
+ * Expone el par `(tag, eventType)` en vez de las llaves crudas: `TAG#`/`EVT#` son detalle de DynamoDB.
8
+ */
9
+ export interface WebhookSubscriptionView {
10
+ tag: string;
11
+ eventType: WebhookEventType;
12
+ subscriberName: string;
13
+ url: string;
14
+ visibility: SubscriptionVisibilityEnum;
15
+ status: SubscriptionStatusEnum;
16
+ /** Vínculo informativo con el padrón de socios M2M de RBAC. Todavía no gobierna la entrega. */
17
+ integrationId?: string;
18
+ timeoutMs?: number;
19
+ maxRetries?: number;
20
+ createdAt?: number;
21
+ updatedAt?: number;
22
+ createdBy?: string;
23
+ updatedBy?: string;
24
+ }
@@ -0,0 +1,27 @@
1
+ import { Expose } from 'class-transformer';
2
+ import { IsEnum, IsNotEmpty, IsOptional, IsString, MaxLength } from 'class-validator';
3
+ import { WebhookEventType } from '../../enums/WebhookEventType';
4
+ import { WEBHOOK_TAG_MAX_LENGTH } from '../../constants/WebhookFieldLimits';
5
+
6
+ /**
7
+ * Body de `POST /private/webhook-subscriptions/deactivate` — baja lógica del destino.
8
+ * La fila no se borra: la bitácora referencia tags que tienen que seguir siendo explicables.
9
+ */
10
+ export class DeactivateWebhookSubscriptionRequest {
11
+ @Expose()
12
+ @IsString()
13
+ @IsNotEmpty()
14
+ @MaxLength(WEBHOOK_TAG_MAX_LENGTH)
15
+ tag!: string;
16
+
17
+ @Expose()
18
+ @IsEnum(WebhookEventType)
19
+ eventType!: WebhookEventType;
20
+
21
+ /** Quién dispara la baja. Sin él la auditoría queda en `system`. */
22
+ @Expose()
23
+ @IsOptional()
24
+ @IsString()
25
+ @MaxLength(128)
26
+ actor?: string;
27
+ }