@fiado/api-invoker 5.76.0 → 5.77.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
  type FiadoApiResponse<T> = import('@fiado/type-kit/bin/apiResponse/dtos/FiadoApiResponse.js').default<T>;
3
- import { SendMessageRequest, SendMessageResponse, VerifyOtpRequest, VerifyOtpResponse, OtpValidatedResponse, TemplateMessageCreateRequest, TemplateMessageUpdateRequest, TemplateMessageResponse, TemplateMessageListResponse, TemplateMessageListFiltersRequest, MdmNotifyRequest, MdmNotifyBatchResponse } from '@fiado/type-kit/bin/messagesConnector/index.js';
3
+ import { SendMessageRequest, SendMessageResponse, VerifyOtpRequest, VerifyOtpResponse, OtpValidatedResponse, TemplateMessageCreateRequest, TemplateMessageUpdateRequest, TemplateMessageResponse, TemplateMessageListResponse, TemplateMessageListFiltersRequest } from '@fiado/type-kit/bin/messagesConnector/index.js';
4
4
  import { IMessagesBusinessApi } from './interfaces/IMessagesBusinessApi.js';
5
5
  export declare class MessagesBusinessApi implements IMessagesBusinessApi {
6
6
  private readonly httpRequest;
@@ -9,7 +9,6 @@ export declare class MessagesBusinessApi implements IMessagesBusinessApi {
9
9
  sendMessage(request: SendMessageRequest): Promise<FiadoApiResponse<SendMessageResponse>>;
10
10
  verifyOtp(request: VerifyOtpRequest): Promise<FiadoApiResponse<VerifyOtpResponse>>;
11
11
  getValidatedOtp(directoryId: string, otpCode: string): Promise<FiadoApiResponse<OtpValidatedResponse>>;
12
- notifyMdmDevices(request: MdmNotifyRequest): Promise<FiadoApiResponse<MdmNotifyBatchResponse>>;
13
12
  createTemplate(tenantId: string, request: TemplateMessageCreateRequest): Promise<FiadoApiResponse<TemplateMessageResponse>>;
14
13
  listTemplates(tenantId: string, filters: TemplateMessageListFiltersRequest): Promise<FiadoApiResponse<TemplateMessageListResponse>>;
15
14
  getTemplate(tenantId: string, id: string): Promise<FiadoApiResponse<TemplateMessageResponse>>;
@@ -29,9 +29,6 @@ let MessagesBusinessApi = class MessagesBusinessApi {
29
29
  async getValidatedOtp(directoryId, otpCode) {
30
30
  return await this.httpRequest.get(`${this.baseUrl}messages/otp/validated`, { directoryId, otpCode }, { 'operationName': 'privateGetValidatedOtp' });
31
31
  }
32
- async notifyMdmDevices(request) {
33
- return await this.httpRequest.post(joinUrl(this.baseUrl, 'messages/mdm-notify'), request, { 'operationName': 'privateNotifyMdmDevices' });
34
- }
35
32
  async createTemplate(tenantId, request) {
36
33
  const url = this.withTenantId(joinUrl(this.baseUrl, 'templates'), tenantId);
37
34
  return await this.httpRequest.post(url, request, { 'operationName': 'backofficeCreateTemplate' });
@@ -1,21 +1,9 @@
1
1
  type FiadoApiResponse<T> = import('@fiado/type-kit/bin/apiResponse/dtos/FiadoApiResponse.js').default<T>;
2
- import { SendMessageRequest, SendMessageResponse, VerifyOtpRequest, VerifyOtpResponse, OtpValidatedResponse, TemplateMessageCreateRequest, TemplateMessageUpdateRequest, TemplateMessageResponse, TemplateMessageListResponse, TemplateMessageListFiltersRequest, MdmNotifyRequest, MdmNotifyBatchResponse } from '@fiado/type-kit/bin/messagesConnector/index.js';
2
+ import { SendMessageRequest, SendMessageResponse, VerifyOtpRequest, VerifyOtpResponse, OtpValidatedResponse, TemplateMessageCreateRequest, TemplateMessageUpdateRequest, TemplateMessageResponse, TemplateMessageListResponse, TemplateMessageListFiltersRequest } from '@fiado/type-kit/bin/messagesConnector/index.js';
3
3
  export interface IMessagesBusinessApi {
4
4
  sendMessage(request: SendMessageRequest): Promise<FiadoApiResponse<SendMessageResponse>>;
5
5
  verifyOtp(request: VerifyOtpRequest): Promise<FiadoApiResponse<VerifyOtpResponse>>;
6
6
  getValidatedOtp(directoryId: string, otpCode: string): Promise<FiadoApiResponse<OtpValidatedResponse>>;
7
- /**
8
- * Avisa en la pantalla del equipo financiado. Puerta aparte del lote a proposito: el item
9
- * lleva IMEI y proveedor en vez de destinatario y variables.
10
- *
11
- * Mensajeria resuelve el texto del `noticeType` contra el catalogo, agrupa por proveedor y
12
- * hace UN `notifyDevices()` por grupo. Responde 202 con un resultado por IMEI; el proveedor
13
- * caido llega como ERROR de ese item, nunca como dato invalido.
14
- *
15
- * Los mensajes normales NO entran por aqui ni por HTTP: se encolan con
16
- * `IMessagesBusinessPublisher`, y `referenceMessageId` es su llave de idempotencia.
17
- */
18
- notifyMdmDevices(request: MdmNotifyRequest): Promise<FiadoApiResponse<MdmNotifyBatchResponse>>;
19
7
  /**
20
8
  * CRUD de plantillas. Los cinco viven en la API privada sin authorizer, asi que el `tenantId`
21
9
  * es obligatorio y explicito: el lambda responde 400 TENANT_ID_REQUIRED si no llega.
@@ -1,7 +1,10 @@
1
- import { NotificationQueueMessageRequestV2 } from '@fiado/type-kit/bin/messagesConnector/index.js';
1
+ import { MdmNotifyQueueMessageRequest, NotificationQueueMessageRequestV2 } from '@fiado/type-kit/bin/messagesConnector/index.js';
2
2
  import { IMessagesBusinessPublisher } from './interfaces/IMessagesBusinessPublisher.js';
3
3
  export default class MessagesBusinessPublisher implements IMessagesBusinessPublisher {
4
4
  private readonly queueUrl;
5
5
  private readonly sqsClient;
6
6
  publish(message: NotificationQueueMessageRequestV2): Promise<void>;
7
+ publishMdmNotifyBatch(message: MdmNotifyQueueMessageRequest): Promise<void>;
8
+ /** Encola el mensaje serializado y deja el rastro de la operacion que lo publico. */
9
+ private send;
7
10
  }
@@ -11,13 +11,21 @@ let MessagesBusinessPublisher = class MessagesBusinessPublisher {
11
11
  queueUrl = process.env.MESSAGES_BUSINESS_QUEUE_URL;
12
12
  sqsClient = new SQSClient({ region: process.env.AWS_REGION });
13
13
  async publish(message) {
14
+ await this.send('publish', message);
15
+ }
16
+ // El lote MDM viaja por la misma cola que el mensaje suelto; lo distingue su forma, no el destino.
17
+ async publishMdmNotifyBatch(message) {
18
+ await this.send('publishMdmNotifyBatch', message);
19
+ }
20
+ /** Encola el mensaje serializado y deja el rastro de la operacion que lo publico. */
21
+ async send(operation, message) {
14
22
  const t0 = Date.now();
15
23
  try {
16
24
  const result = await this.sqsClient.send(new SendMessageCommand({
17
25
  QueueUrl: this.queueUrl,
18
26
  MessageBody: JSON.stringify(message),
19
27
  }));
20
- log.info('MessagesBusinessPublisher.publish ok', {
28
+ log.info(`MessagesBusinessPublisher.${operation} ok`, {
21
29
  messageId: result.MessageId,
22
30
  latencyMs: Date.now() - t0,
23
31
  });
@@ -25,7 +33,7 @@ let MessagesBusinessPublisher = class MessagesBusinessPublisher {
25
33
  catch (error) {
26
34
  // Propaga el error crudo del SQSClient (NO envolver en new Error(string) = antipatron).
27
35
  // Log de contexto + re-throw para que el caller decida.
28
- log.error('MessagesBusinessPublisher.publish failed', {
36
+ log.error(`MessagesBusinessPublisher.${operation} failed`, {
29
37
  latencyMs: Date.now() - t0,
30
38
  errorName: error?.name,
31
39
  });
@@ -1,4 +1,9 @@
1
- import { NotificationQueueMessageRequestV2 } from '@fiado/type-kit/bin/messagesConnector/index.js';
1
+ import { MdmNotifyQueueMessageRequest, NotificationQueueMessageRequestV2 } from '@fiado/type-kit/bin/messagesConnector/index.js';
2
2
  export interface IMessagesBusinessPublisher {
3
3
  publish(message: NotificationQueueMessageRequestV2): Promise<void>;
4
+ /**
5
+ * Encola el lote de avisos MDM que se muestran en la pantalla del equipo financiado.
6
+ * Reemplaza al `POST /private/messages/mdm-notify`, que se retira.
7
+ */
8
+ publishMdmNotifyBatch(message: MdmNotifyQueueMessageRequest): Promise<void>;
4
9
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fiado/api-invoker",
3
- "version": "5.76.0",
3
+ "version": "5.77.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",
@@ -7,7 +7,6 @@ import {
7
7
  OtpValidatedResponse,
8
8
  TemplateMessageCreateRequest, TemplateMessageUpdateRequest,
9
9
  TemplateMessageResponse, TemplateMessageListResponse, TemplateMessageListFiltersRequest,
10
- MdmNotifyRequest, MdmNotifyBatchResponse,
11
10
  } from '@fiado/type-kit/bin/messagesConnector/index.js';
12
11
  import { IMessagesBusinessApi } from './interfaces/IMessagesBusinessApi.js';
13
12
  import { joinUrl } from '../../utils/joinUrl.js';
@@ -32,10 +31,6 @@ export class MessagesBusinessApi implements IMessagesBusinessApi {
32
31
  return await this.httpRequest.get(`${this.baseUrl}messages/otp/validated`, { directoryId, otpCode }, { 'operationName': 'privateGetValidatedOtp' });
33
32
  }
34
33
 
35
- async notifyMdmDevices(request: MdmNotifyRequest): Promise<FiadoApiResponse<MdmNotifyBatchResponse>> {
36
- return await this.httpRequest.post(joinUrl(this.baseUrl, 'messages/mdm-notify'), request, { 'operationName': 'privateNotifyMdmDevices' });
37
- }
38
-
39
34
  async createTemplate(tenantId: string, request: TemplateMessageCreateRequest): Promise<FiadoApiResponse<TemplateMessageResponse>> {
40
35
  const url = this.withTenantId(joinUrl(this.baseUrl, 'templates'), tenantId);
41
36
  return await this.httpRequest.post(url, request, { 'operationName': 'backofficeCreateTemplate' });
@@ -5,7 +5,6 @@ import {
5
5
  OtpValidatedResponse,
6
6
  TemplateMessageCreateRequest, TemplateMessageUpdateRequest,
7
7
  TemplateMessageResponse, TemplateMessageListResponse, TemplateMessageListFiltersRequest,
8
- MdmNotifyRequest, MdmNotifyBatchResponse,
9
8
  } from '@fiado/type-kit/bin/messagesConnector/index.js';
10
9
 
11
10
  export interface IMessagesBusinessApi {
@@ -13,19 +12,6 @@ export interface IMessagesBusinessApi {
13
12
  verifyOtp(request: VerifyOtpRequest): Promise<FiadoApiResponse<VerifyOtpResponse>>;
14
13
  getValidatedOtp(directoryId: string, otpCode: string): Promise<FiadoApiResponse<OtpValidatedResponse>>;
15
14
 
16
- /**
17
- * Avisa en la pantalla del equipo financiado. Puerta aparte del lote a proposito: el item
18
- * lleva IMEI y proveedor en vez de destinatario y variables.
19
- *
20
- * Mensajeria resuelve el texto del `noticeType` contra el catalogo, agrupa por proveedor y
21
- * hace UN `notifyDevices()` por grupo. Responde 202 con un resultado por IMEI; el proveedor
22
- * caido llega como ERROR de ese item, nunca como dato invalido.
23
- *
24
- * Los mensajes normales NO entran por aqui ni por HTTP: se encolan con
25
- * `IMessagesBusinessPublisher`, y `referenceMessageId` es su llave de idempotencia.
26
- */
27
- notifyMdmDevices(request: MdmNotifyRequest): Promise<FiadoApiResponse<MdmNotifyBatchResponse>>;
28
-
29
15
  /**
30
16
  * CRUD de plantillas. Los cinco viven en la API privada sin authorizer, asi que el `tenantId`
31
17
  * es obligatorio y explicito: el lambda responde 400 TENANT_ID_REQUIRED si no llega.
@@ -1,29 +1,44 @@
1
1
  import { injectable } from 'inversify';
2
2
  import { SendMessageCommand, SQSClient } from '@aws-sdk/client-sqs';
3
3
  import { log } from '@fiado/logger';
4
- import { NotificationQueueMessageRequestV2 } from '@fiado/type-kit/bin/messagesConnector/index.js';
4
+ import {
5
+ MdmNotifyQueueMessageRequest,
6
+ NotificationQueueMessageRequestV2,
7
+ } from '@fiado/type-kit/bin/messagesConnector/index.js';
5
8
  import { IMessagesBusinessPublisher } from './interfaces/IMessagesBusinessPublisher.js';
6
9
 
10
+ type MessagesBusinessQueueMessage = NotificationQueueMessageRequestV2 | MdmNotifyQueueMessageRequest;
11
+
7
12
  @injectable()
8
13
  export default class MessagesBusinessPublisher implements IMessagesBusinessPublisher {
9
14
  private readonly queueUrl = process.env.MESSAGES_BUSINESS_QUEUE_URL!;
10
15
  private readonly sqsClient = new SQSClient({ region: process.env.AWS_REGION });
11
16
 
12
17
  async publish(message: NotificationQueueMessageRequestV2): Promise<void> {
18
+ await this.send('publish', message);
19
+ }
20
+
21
+ // El lote MDM viaja por la misma cola que el mensaje suelto; lo distingue su forma, no el destino.
22
+ async publishMdmNotifyBatch(message: MdmNotifyQueueMessageRequest): Promise<void> {
23
+ await this.send('publishMdmNotifyBatch', message);
24
+ }
25
+
26
+ /** Encola el mensaje serializado y deja el rastro de la operacion que lo publico. */
27
+ private async send(operation: string, message: MessagesBusinessQueueMessage): Promise<void> {
13
28
  const t0 = Date.now();
14
29
  try {
15
30
  const result = await this.sqsClient.send(new SendMessageCommand({
16
31
  QueueUrl: this.queueUrl,
17
32
  MessageBody: JSON.stringify(message),
18
33
  }));
19
- log.info('MessagesBusinessPublisher.publish ok', {
34
+ log.info(`MessagesBusinessPublisher.${operation} ok`, {
20
35
  messageId: result.MessageId,
21
36
  latencyMs: Date.now() - t0,
22
37
  });
23
38
  } catch (error) {
24
39
  // Propaga el error crudo del SQSClient (NO envolver en new Error(string) = antipatron).
25
40
  // Log de contexto + re-throw para que el caller decida.
26
- log.error('MessagesBusinessPublisher.publish failed', {
41
+ log.error(`MessagesBusinessPublisher.${operation} failed`, {
27
42
  latencyMs: Date.now() - t0,
28
43
  errorName: (error as Error)?.name,
29
44
  });
@@ -1,5 +1,14 @@
1
- import { NotificationQueueMessageRequestV2 } from '@fiado/type-kit/bin/messagesConnector/index.js';
1
+ import {
2
+ MdmNotifyQueueMessageRequest,
3
+ NotificationQueueMessageRequestV2,
4
+ } from '@fiado/type-kit/bin/messagesConnector/index.js';
2
5
 
3
6
  export interface IMessagesBusinessPublisher {
4
7
  publish(message: NotificationQueueMessageRequestV2): Promise<void>;
8
+
9
+ /**
10
+ * Encola el lote de avisos MDM que se muestran en la pantalla del equipo financiado.
11
+ * Reemplaza al `POST /private/messages/mdm-notify`, que se retira.
12
+ */
13
+ publishMdmNotifyBatch(message: MdmNotifyQueueMessageRequest): Promise<void>;
5
14
  }