@fiado/api-invoker 5.25.0 → 5.27.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.
@@ -1,6 +1,6 @@
1
1
  import type { IHttpRequest } from "@fiado/http-client";
2
2
  import type { ApiGatewayResponse } from "@fiado/gateway-adapter";
3
- import type { PrimaryEmailByDirectoryRequest, PrimaryEmailResponse, EmailStartByDirectoryRequest, EmailStartByDirectoryResponse } from "@fiado/type-kit/bin/emailVerification/index.js";
3
+ import type { PrimaryEmailByDirectoryRequest, PrimaryEmailResponse, EmailStartByDirectoryRequest, EmailStartByDirectoryResponse, EmailsByDirectoryRequest, EmailsByDirectoryResponse } from "@fiado/type-kit/bin/emailVerification/index.js";
4
4
  import type { IContactsBusinessApi } from "./interfaces/IContactsBusinessApi.js";
5
5
  export default class ContactsBusinessApi implements IContactsBusinessApi {
6
6
  private httpRequest;
@@ -8,4 +8,5 @@ export default class ContactsBusinessApi implements IContactsBusinessApi {
8
8
  constructor(httpRequest: IHttpRequest);
9
9
  getPrimaryEmail(request: PrimaryEmailByDirectoryRequest): Promise<ApiGatewayResponse<PrimaryEmailResponse>>;
10
10
  startVerification(request: EmailStartByDirectoryRequest): Promise<ApiGatewayResponse<EmailStartByDirectoryResponse>>;
11
+ listEmails(request: EmailsByDirectoryRequest): Promise<ApiGatewayResponse<EmailsByDirectoryResponse>>;
11
12
  }
@@ -25,6 +25,10 @@ let ContactsBusinessApi = class ContactsBusinessApi {
25
25
  const url = `${this.baseUrl}/internal/email/start-verification`;
26
26
  return await this.httpRequest.post(url, request);
27
27
  }
28
+ async listEmails(request) {
29
+ const url = `${this.baseUrl}/internal/email/list`;
30
+ return await this.httpRequest.get(url, { directoryId: request.directoryId });
31
+ }
28
32
  };
29
33
  ContactsBusinessApi = __decorate([
30
34
  injectable(),
@@ -1,5 +1,5 @@
1
1
  import type { ApiGatewayResponse } from "@fiado/gateway-adapter";
2
- import type { PrimaryEmailByDirectoryRequest, PrimaryEmailResponse, EmailStartByDirectoryRequest, EmailStartByDirectoryResponse } from "@fiado/type-kit/bin/emailVerification/index.js";
2
+ import type { PrimaryEmailByDirectoryRequest, PrimaryEmailResponse, EmailStartByDirectoryRequest, EmailStartByDirectoryResponse, EmailsByDirectoryRequest, EmailsByDirectoryResponse } from "@fiado/type-kit/bin/emailVerification/index.js";
3
3
  /**
4
4
  * Cliente del lambda contacts-business (fuente de verdad de correos verificados).
5
5
  * Lo consume benefits-marketplace-business en el gate de onboarding de remesas (F2).
@@ -16,4 +16,9 @@ export interface IContactsBusinessApi {
16
16
  * Backend: POST /internal/email/start-verification (API privada/VPC).
17
17
  */
18
18
  startVerification(request: EmailStartByDirectoryRequest): Promise<ApiGatewayResponse<EmailStartByDirectoryResponse>>;
19
+ /**
20
+ * Todos los correos registrados de un directorio (verificados o no).
21
+ * Backend: GET /internal/email/list?directoryId=<id> (API privada/VPC).
22
+ */
23
+ listEmails(request: EmailsByDirectoryRequest): Promise<ApiGatewayResponse<EmailsByDirectoryResponse>>;
19
24
  }
@@ -14,8 +14,9 @@ let RetailKycInboundPublisher = class RetailKycInboundPublisher {
14
14
  // Cola ESTÁNDAR (no FIFO): sin MessageGroupId/MessageDeduplicationId, y por lo tanto SIN
15
15
  // orden garantizado. La deduplicación la hace el consumidor con la llave de negocio: el
16
16
  // cierre por (directoryId + verificationId + status + result), la estación por
17
- // (verificationId + step) — su escritura ya es idempotente. El reordenamiento lo resuelve
18
- // el `occurredAt` de cada estación, no la cola.
17
+ // (verificationId + step) — su escritura ya es idempotente —, y el comprobante de
18
+ // domicilio por (verificationId): reprocesarlo escribe el mismo status. El reordenamiento
19
+ // lo resuelve el `occurredAt` de cada mensaje, no la cola.
19
20
  const sendMessageRequest = {
20
21
  QueueUrl: this.RETAIL_KYC_INBOUND_QUEUE_URL,
21
22
  MessageBody: JSON.stringify(message),
@@ -1,21 +1,24 @@
1
- import { KycVerificationChangedV1, KycStepCompletedV1 } from "@fiado/type-kit/bin/kyc/index.js";
1
+ import { KycVerificationChangedV1, KycStepCompletedV1, KycProofOfAddressCompletedV1 } from "@fiado/type-kit/bin/kyc/index.js";
2
2
  /**
3
3
  * Todo lo que `RetailKycInboundQueue` transporta:
4
4
  * - `KycVerificationChangedV1` — el CIERRE de la verificación, con el resultado consolidado.
5
5
  * - `KycStepCompletedV1` — el resultado de UNA estación, en cuanto Metamap la cierra.
6
+ * - `KycProofOfAddressCompletedV1` — el resultado del COMPROBANTE DE DOMICILIO, un flow aparte del
7
+ * documento de identidad.
6
8
  *
7
9
  * Es una unión cerrada y no un `unknown` a propósito: el consumidor rutea por `eventType`, así que
8
10
  * agregar un tipo acá obliga a tocar también el consumidor — que es exactamente la conversación que
9
11
  * tiene que pasar antes de meter un mensaje nuevo en una cola compartida.
10
12
  */
11
- export type RetailKycInboundMessage = KycVerificationChangedV1 | KycStepCompletedV1;
13
+ export type RetailKycInboundMessage = KycVerificationChangedV1 | KycStepCompletedV1 | KycProofOfAddressCompletedV1;
12
14
  /**
13
15
  * Publisher del KYC hacia `RetailKycInboundQueue`, que consume `retail-wizard-business` (SureKeep F2).
14
16
  *
15
- * Lo produce `kyc-metamap-webhook`: el cierre cuando la verificación pasa a COMPLETED, y una estación
16
- * por cada `step_completed`. Vive acá —y no como SDK crudo en el webhook— porque la cola es COMPARTIDA
17
- * cross-lambda: el estándar Fiado publica a una cola compartida vía Publisher de `@fiado/api-invoker`
18
- * (mismo patrón que `ITransactionPublisher`).
17
+ * Lo produce `kyc-metamap-webhook`: el cierre cuando la verificación pasa a COMPLETED, una estación
18
+ * por cada `step_completed`, y el comprobante de domicilio cuando termina de procesarlo. Vive acá
19
+ * —y no como SDK crudo en el webhook— porque la cola es COMPARTIDA cross-lambda: el estándar Fiado
20
+ * publica a una cola compartida vía Publisher de `@fiado/api-invoker` (mismo patrón que
21
+ * `ITransactionPublisher`).
19
22
  */
20
23
  export interface IRetailKycInboundPublisher {
21
24
  publish(message: RetailKycInboundMessage): Promise<void>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fiado/api-invoker",
3
- "version": "5.25.0",
3
+ "version": "5.27.0",
4
4
  "description": "Sirve como un puente entre diferentes funciones lambda, facilitando la comunicación entre ellas a través de invocaciones http",
5
5
  "type": "module",
6
6
  "main": "bin/index.js",
@@ -1,7 +1,7 @@
1
1
  import { inject, injectable } from "inversify";
2
2
  import type { IHttpRequest } from "@fiado/http-client";
3
3
  import type { ApiGatewayResponse } from "@fiado/gateway-adapter";
4
- import type { PrimaryEmailByDirectoryRequest, PrimaryEmailResponse, EmailStartByDirectoryRequest, EmailStartByDirectoryResponse } from "@fiado/type-kit/bin/emailVerification/index.js";
4
+ import type { PrimaryEmailByDirectoryRequest, PrimaryEmailResponse, EmailStartByDirectoryRequest, EmailStartByDirectoryResponse, EmailsByDirectoryRequest, EmailsByDirectoryResponse } from "@fiado/type-kit/bin/emailVerification/index.js";
5
5
  import type { IContactsBusinessApi } from "./interfaces/IContactsBusinessApi.js";
6
6
 
7
7
  @injectable()
@@ -19,4 +19,9 @@ export default class ContactsBusinessApi implements IContactsBusinessApi {
19
19
  const url = `${this.baseUrl}/internal/email/start-verification`;
20
20
  return await this.httpRequest.post(url, request);
21
21
  }
22
+
23
+ async listEmails(request: EmailsByDirectoryRequest): Promise<ApiGatewayResponse<EmailsByDirectoryResponse>> {
24
+ const url = `${this.baseUrl}/internal/email/list`;
25
+ return await this.httpRequest.get(url, { directoryId: request.directoryId });
26
+ }
22
27
  }
@@ -1,5 +1,5 @@
1
1
  import type { ApiGatewayResponse } from "@fiado/gateway-adapter";
2
- import type { PrimaryEmailByDirectoryRequest, PrimaryEmailResponse, EmailStartByDirectoryRequest, EmailStartByDirectoryResponse } from "@fiado/type-kit/bin/emailVerification/index.js";
2
+ import type { PrimaryEmailByDirectoryRequest, PrimaryEmailResponse, EmailStartByDirectoryRequest, EmailStartByDirectoryResponse, EmailsByDirectoryRequest, EmailsByDirectoryResponse } from "@fiado/type-kit/bin/emailVerification/index.js";
3
3
 
4
4
  /**
5
5
  * Cliente del lambda contacts-business (fuente de verdad de correos verificados).
@@ -18,4 +18,10 @@ export interface IContactsBusinessApi {
18
18
  * Backend: POST /internal/email/start-verification (API privada/VPC).
19
19
  */
20
20
  startVerification(request: EmailStartByDirectoryRequest): Promise<ApiGatewayResponse<EmailStartByDirectoryResponse>>;
21
+
22
+ /**
23
+ * Todos los correos registrados de un directorio (verificados o no).
24
+ * Backend: GET /internal/email/list?directoryId=<id> (API privada/VPC).
25
+ */
26
+ listEmails(request: EmailsByDirectoryRequest): Promise<ApiGatewayResponse<EmailsByDirectoryResponse>>;
21
27
  }
@@ -12,8 +12,9 @@ export class RetailKycInboundPublisher implements IRetailKycInboundPublisher {
12
12
  // Cola ESTÁNDAR (no FIFO): sin MessageGroupId/MessageDeduplicationId, y por lo tanto SIN
13
13
  // orden garantizado. La deduplicación la hace el consumidor con la llave de negocio: el
14
14
  // cierre por (directoryId + verificationId + status + result), la estación por
15
- // (verificationId + step) — su escritura ya es idempotente. El reordenamiento lo resuelve
16
- // el `occurredAt` de cada estación, no la cola.
15
+ // (verificationId + step) — su escritura ya es idempotente —, y el comprobante de
16
+ // domicilio por (verificationId): reprocesarlo escribe el mismo status. El reordenamiento
17
+ // lo resuelve el `occurredAt` de cada mensaje, no la cola.
17
18
  const sendMessageRequest: SendMessageRequest = {
18
19
  QueueUrl: this.RETAIL_KYC_INBOUND_QUEUE_URL,
19
20
  MessageBody: JSON.stringify(message),
@@ -1,23 +1,26 @@
1
- import { KycVerificationChangedV1, KycStepCompletedV1 } from "@fiado/type-kit/bin/kyc/index.js";
1
+ import { KycVerificationChangedV1, KycStepCompletedV1, KycProofOfAddressCompletedV1 } from "@fiado/type-kit/bin/kyc/index.js";
2
2
 
3
3
  /**
4
4
  * Todo lo que `RetailKycInboundQueue` transporta:
5
5
  * - `KycVerificationChangedV1` — el CIERRE de la verificación, con el resultado consolidado.
6
6
  * - `KycStepCompletedV1` — el resultado de UNA estación, en cuanto Metamap la cierra.
7
+ * - `KycProofOfAddressCompletedV1` — el resultado del COMPROBANTE DE DOMICILIO, un flow aparte del
8
+ * documento de identidad.
7
9
  *
8
10
  * Es una unión cerrada y no un `unknown` a propósito: el consumidor rutea por `eventType`, así que
9
11
  * agregar un tipo acá obliga a tocar también el consumidor — que es exactamente la conversación que
10
12
  * tiene que pasar antes de meter un mensaje nuevo en una cola compartida.
11
13
  */
12
- export type RetailKycInboundMessage = KycVerificationChangedV1 | KycStepCompletedV1;
14
+ export type RetailKycInboundMessage = KycVerificationChangedV1 | KycStepCompletedV1 | KycProofOfAddressCompletedV1;
13
15
 
14
16
  /**
15
17
  * Publisher del KYC hacia `RetailKycInboundQueue`, que consume `retail-wizard-business` (SureKeep F2).
16
18
  *
17
- * Lo produce `kyc-metamap-webhook`: el cierre cuando la verificación pasa a COMPLETED, y una estación
18
- * por cada `step_completed`. Vive acá —y no como SDK crudo en el webhook— porque la cola es COMPARTIDA
19
- * cross-lambda: el estándar Fiado publica a una cola compartida vía Publisher de `@fiado/api-invoker`
20
- * (mismo patrón que `ITransactionPublisher`).
19
+ * Lo produce `kyc-metamap-webhook`: el cierre cuando la verificación pasa a COMPLETED, una estación
20
+ * por cada `step_completed`, y el comprobante de domicilio cuando termina de procesarlo. Vive acá
21
+ * —y no como SDK crudo en el webhook— porque la cola es COMPARTIDA cross-lambda: el estándar Fiado
22
+ * publica a una cola compartida vía Publisher de `@fiado/api-invoker` (mismo patrón que
23
+ * `ITransactionPublisher`).
21
24
  */
22
25
  export interface IRetailKycInboundPublisher {
23
26
  publish(message: RetailKycInboundMessage): Promise<void>;