@fiado/api-invoker 5.80.0 → 5.82.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 { StandardResponse } from "@fiado/gateway-adapter";
3
- import { ConsumePromotionRequest, PromotedSkusResponse, ConsumePromotionResponse, CreditPlanLevelEnum, CreditPlanResponse, FinancierResponse, ReservePromotionBonusRequest, ReservePromotionBonusResponse, ResolveCustomerSegmentsRequest, ResolveCustomerSegmentsResponse, ScopeWidePromotionsResponse, SkuPromotionsResponse, SettlePromotionBonusRequest, PromotionBonusResponse, SimulateCreditPlanRequest, SimulationResultResponse } from "@fiado/type-kit/bin/loanOfferings/index.js";
3
+ import { AmortizationScheduleResponse, ComputeAmortizationScheduleRequest, ConsumePromotionRequest, PromotedSkusResponse, ConsumePromotionResponse, CreditPlanLevelEnum, CreditPlanResponse, FinancierResponse, ReservePromotionBonusRequest, ReservePromotionBonusResponse, ResolveCustomerSegmentsRequest, ResolveCustomerSegmentsResponse, ScopeWidePromotionsResponse, SkuPromotionsResponse, SettlePromotionBonusRequest, PromotionBonusResponse, SimulateCreditPlanRequest, SimulationResultResponse } from "@fiado/type-kit/bin/loanOfferings/index.js";
4
4
  import { SegmentMembersResponse } from "./dtos/SegmentMembers.js";
5
5
  import { ILoanOfferingsBusinessApi } from "./interfaces/ILoanOfferingsBusinessApi.js";
6
6
  /**
@@ -23,6 +23,7 @@ export default class LoanOfferingsBusinessApi implements ILoanOfferingsBusinessA
23
23
  listActivePlansForRetailer(retailerId: string, tenantId: string): Promise<StandardResponse<CreditPlanResponse[]>>;
24
24
  listActiveFinanciers(tenantId: string): Promise<StandardResponse<FinancierResponse[]>>;
25
25
  simulate(planId: string, input: SimulateCreditPlanRequest, tenantId: string): Promise<StandardResponse<SimulationResultResponse>>;
26
+ computeAmortizationSchedule(input: ComputeAmortizationScheduleRequest, tenantId: string): Promise<StandardResponse<AmortizationScheduleResponse>>;
26
27
  consumePromotion(promotionId: string, input: ConsumePromotionRequest, tenantId: string): Promise<StandardResponse<ConsumePromotionResponse>>;
27
28
  listPromotedSkus(storeId: string, tenantId: string, level?: CreditPlanLevelEnum, segmentId?: string): Promise<StandardResponse<PromotedSkusResponse>>;
28
29
  resolveCustomerSegments(input: ResolveCustomerSegmentsRequest, tenantId: string): Promise<StandardResponse<ResolveCustomerSegmentsResponse>>;
@@ -46,6 +46,10 @@ let LoanOfferingsBusinessApi = class LoanOfferingsBusinessApi {
46
46
  const url = `${this.baseUrl}/private/credit-plans/${encodeURIComponent(planId)}/simulate?tenantId=${encodeURIComponent(tenantId)}`;
47
47
  return await this.httpRequest.post(url, input);
48
48
  }
49
+ async computeAmortizationSchedule(input, tenantId) {
50
+ const url = `${this.baseUrl}/private/amortization/schedule?tenantId=${encodeURIComponent(tenantId)}`;
51
+ return await this.httpRequest.post(url, input);
52
+ }
49
53
  async consumePromotion(promotionId, input, tenantId) {
50
54
  const url = `${this.baseUrl}/private/promotions/${encodeURIComponent(promotionId)}/consume?tenantId=${encodeURIComponent(tenantId)}`;
51
55
  return await this.httpRequest.post(url, input);
@@ -1,6 +1,6 @@
1
1
  import { StandardResponse } from "@fiado/gateway-adapter";
2
2
  import { SegmentMembersResponse } from "../dtos/SegmentMembers.js";
3
- import { ConsumePromotionRequest, PromotedSkusResponse, ConsumePromotionResponse, CreditPlanLevelEnum, CreditPlanResponse, FinancierResponse, ReservePromotionBonusRequest, ReservePromotionBonusResponse, ResolveCustomerSegmentsRequest, ResolveCustomerSegmentsResponse, ScopeWidePromotionsResponse, SkuPromotionsResponse, SettlePromotionBonusRequest, PromotionBonusResponse, SimulateCreditPlanRequest, SimulationResultResponse } from "@fiado/type-kit/bin/loanOfferings/index.js";
3
+ import { AmortizationScheduleResponse, ComputeAmortizationScheduleRequest, ConsumePromotionRequest, PromotedSkusResponse, ConsumePromotionResponse, CreditPlanLevelEnum, CreditPlanResponse, FinancierResponse, ReservePromotionBonusRequest, ReservePromotionBonusResponse, ResolveCustomerSegmentsRequest, ResolveCustomerSegmentsResponse, ScopeWidePromotionsResponse, SkuPromotionsResponse, SettlePromotionBonusRequest, PromotionBonusResponse, SimulateCreditPlanRequest, SimulationResultResponse } from "@fiado/type-kit/bin/loanOfferings/index.js";
4
4
  /**
5
5
  * Contrato del publisher HTTP del lambda `loan-offerings-business` (componente 07 SureKeep Fase 1)
6
6
  * para sus endpoints privados service-to-service (VPC-only): LECTURAS del catálogo SOFOM y
@@ -64,6 +64,11 @@ export interface ILoanOfferingsBusinessApi {
64
64
  * (`400 INVALID_PLAN_PARAMETERS`, ej. plazo fuera de `termWeeksOptions`).
65
65
  */
66
66
  simulate(planId: string, input: SimulateCreditPlanRequest, tenantId: string): Promise<StandardResponse<SimulationResultResponse>>;
67
+ /**
68
+ * `POST /private/amortization/schedule` — tabla francesa semanal sin fechas sobre saldo y TNA libres.
69
+ * @throws `400 VALIDATION_ERROR` / `UNKNOWN_TENANT` · `422 AMORTIZATION_INPUT_INVALID`.
70
+ */
71
+ computeAmortizationSchedule(input: ComputeAmortizationScheduleRequest, tenantId: string): Promise<StandardResponse<AmortizationScheduleResponse>>;
67
72
  /**
68
73
  * POST /private/promotions/{promotionId}/consume — cuenta un crédito activado bajo esta
69
74
  * promoción y suma su bono PCF al presupuesto. Al alcanzar el tope la promoción queda `PAUSED`.
@@ -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 } from '@fiado/type-kit/bin/messagesConnector/index.js';
3
+ import { SendMessageRequest, SendMessageResponse, VerifyOtpRequest, VerifyOtpResponse, OtpValidatedResponse, OtpMessagePurposeEnum, 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;
@@ -8,7 +8,7 @@ export declare class MessagesBusinessApi implements IMessagesBusinessApi {
8
8
  constructor(httpRequest: IHttpRequest);
9
9
  sendMessage(request: SendMessageRequest): Promise<FiadoApiResponse<SendMessageResponse>>;
10
10
  verifyOtp(request: VerifyOtpRequest): Promise<FiadoApiResponse<VerifyOtpResponse>>;
11
- getValidatedOtp(directoryId: string, otpCode: string): Promise<FiadoApiResponse<OtpValidatedResponse>>;
11
+ getValidatedOtp(directoryId: string, otpCode: string, purpose?: OtpMessagePurposeEnum): Promise<FiadoApiResponse<OtpValidatedResponse>>;
12
12
  createTemplate(tenantId: string, request: TemplateMessageCreateRequest): Promise<FiadoApiResponse<TemplateMessageResponse>>;
13
13
  listTemplates(tenantId: string, filters: TemplateMessageListFiltersRequest): Promise<FiadoApiResponse<TemplateMessageListResponse>>;
14
14
  getTemplate(tenantId: string, id: string): Promise<FiadoApiResponse<TemplateMessageResponse>>;
@@ -26,8 +26,9 @@ let MessagesBusinessApi = class MessagesBusinessApi {
26
26
  async verifyOtp(request) {
27
27
  return await this.httpRequest.post(`${this.baseUrl}messages/otp/verify`, request, { 'operationName': 'privateVerifyOtp' });
28
28
  }
29
- async getValidatedOtp(directoryId, otpCode) {
30
- return await this.httpRequest.get(`${this.baseUrl}messages/otp/validated`, { directoryId, otpCode }, { 'operationName': 'privateGetValidatedOtp' });
29
+ async getValidatedOtp(directoryId, otpCode, purpose) {
30
+ const params = purpose ? { directoryId, otpCode, purpose } : { directoryId, otpCode };
31
+ return await this.httpRequest.get(`${this.baseUrl}messages/otp/validated`, params, { 'operationName': 'privateGetValidatedOtp' });
31
32
  }
32
33
  async createTemplate(tenantId, request) {
33
34
  const url = this.withTenantId(joinUrl(this.baseUrl, 'templates'), tenantId);
@@ -1,9 +1,10 @@
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 } from '@fiado/type-kit/bin/messagesConnector/index.js';
2
+ import { SendMessageRequest, SendMessageResponse, VerifyOtpRequest, VerifyOtpResponse, OtpValidatedResponse, OtpMessagePurposeEnum, 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
- getValidatedOtp(directoryId: string, otpCode: string): Promise<FiadoApiResponse<OtpValidatedResponse>>;
6
+ /** `purpose` viaja en la query solo si viene; sin él, messages-business aplica SIGNATURE. */
7
+ getValidatedOtp(directoryId: string, otpCode: string, purpose?: OtpMessagePurposeEnum): Promise<FiadoApiResponse<OtpValidatedResponse>>;
7
8
  /**
8
9
  * CRUD de plantillas. Los cinco viven en la API privada sin authorizer, asi que el `tenantId`
9
10
  * es obligatorio y explicito: el lambda responde 400 TENANT_ID_REQUIRED si no llega.
@@ -51,6 +51,7 @@ export default class UnitellerConnectorApi implements IUnitellerConnectorApi {
51
51
  backofficeListUsers(filters?: {
52
52
  status?: string;
53
53
  email?: string;
54
+ directoryId?: string;
54
55
  pageSize?: number;
55
56
  index?: string;
56
57
  }): Promise<ApiGatewayResponse<RemittanceBackofficeUserListResponse>>;
@@ -100,6 +100,7 @@ export interface IUnitellerConnectorApi {
100
100
  backofficeListUsers(filters?: {
101
101
  status?: string;
102
102
  email?: string;
103
+ directoryId?: string;
103
104
  pageSize?: number;
104
105
  index?: string;
105
106
  }): Promise<ApiGatewayResponse<RemittanceBackofficeUserListResponse>>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fiado/api-invoker",
3
- "version": "5.80.0",
3
+ "version": "5.82.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",
@@ -34,7 +34,7 @@
34
34
  "@fiado/gateway-adapter": "^3.9.0",
35
35
  "@fiado/http-client": "^2.0.1",
36
36
  "@fiado/logger": "^1.1.3",
37
- "@fiado/type-kit": "^3.422.0",
37
+ "@fiado/type-kit": "^3.432.0",
38
38
  "dotenv": "^16.4.7"
39
39
  },
40
40
  "peerDependencies": {
@@ -2,6 +2,8 @@ import { inject, injectable } from "inversify";
2
2
  import type { IHttpRequest } from "@fiado/http-client";
3
3
  import { StandardResponse } from "@fiado/gateway-adapter";
4
4
  import {
5
+ AmortizationScheduleResponse,
6
+ ComputeAmortizationScheduleRequest,
5
7
  ConsumePromotionRequest,
6
8
  PromotedSkusResponse,
7
9
  ConsumePromotionResponse,
@@ -73,6 +75,14 @@ export default class LoanOfferingsBusinessApi implements ILoanOfferingsBusinessA
73
75
  return await this.httpRequest.post(url, input);
74
76
  }
75
77
 
78
+ async computeAmortizationSchedule(
79
+ input: ComputeAmortizationScheduleRequest,
80
+ tenantId: string,
81
+ ): Promise<StandardResponse<AmortizationScheduleResponse>> {
82
+ const url = `${this.baseUrl}/private/amortization/schedule?tenantId=${encodeURIComponent(tenantId)}`;
83
+ return await this.httpRequest.post(url, input);
84
+ }
85
+
76
86
  async consumePromotion(
77
87
  promotionId: string,
78
88
  input: ConsumePromotionRequest,
@@ -1,6 +1,8 @@
1
1
  import { StandardResponse } from "@fiado/gateway-adapter";
2
2
  import { SegmentMembersResponse } from "../dtos/SegmentMembers.js";
3
3
  import {
4
+ AmortizationScheduleResponse,
5
+ ComputeAmortizationScheduleRequest,
4
6
  ConsumePromotionRequest,
5
7
  PromotedSkusResponse,
6
8
  ConsumePromotionResponse,
@@ -98,6 +100,15 @@ export interface ILoanOfferingsBusinessApi {
98
100
  tenantId: string,
99
101
  ): Promise<StandardResponse<SimulationResultResponse>>;
100
102
 
103
+ /**
104
+ * `POST /private/amortization/schedule` — tabla francesa semanal sin fechas sobre saldo y TNA libres.
105
+ * @throws `400 VALIDATION_ERROR` / `UNKNOWN_TENANT` · `422 AMORTIZATION_INPUT_INVALID`.
106
+ */
107
+ computeAmortizationSchedule(
108
+ input: ComputeAmortizationScheduleRequest,
109
+ tenantId: string,
110
+ ): Promise<StandardResponse<AmortizationScheduleResponse>>;
111
+
101
112
  /**
102
113
  * POST /private/promotions/{promotionId}/consume — cuenta un crédito activado bajo esta
103
114
  * promoción y suma su bono PCF al presupuesto. Al alcanzar el tope la promoción queda `PAUSED`.
@@ -4,7 +4,7 @@ type FiadoApiResponse<T> = import('@fiado/type-kit/bin/apiResponse/dtos/FiadoApi
4
4
  import {
5
5
  SendMessageRequest, SendMessageResponse,
6
6
  VerifyOtpRequest, VerifyOtpResponse,
7
- OtpValidatedResponse,
7
+ OtpValidatedResponse, OtpMessagePurposeEnum,
8
8
  TemplateMessageCreateRequest, TemplateMessageUpdateRequest,
9
9
  TemplateMessageResponse, TemplateMessageListResponse, TemplateMessageListFiltersRequest,
10
10
  } from '@fiado/type-kit/bin/messagesConnector/index.js';
@@ -27,8 +27,9 @@ export class MessagesBusinessApi implements IMessagesBusinessApi {
27
27
  return await this.httpRequest.post(`${this.baseUrl}messages/otp/verify`, request, { 'operationName': 'privateVerifyOtp' });
28
28
  }
29
29
 
30
- async getValidatedOtp(directoryId: string, otpCode: string): Promise<FiadoApiResponse<OtpValidatedResponse>> {
31
- return await this.httpRequest.get(`${this.baseUrl}messages/otp/validated`, { directoryId, otpCode }, { 'operationName': 'privateGetValidatedOtp' });
30
+ async getValidatedOtp(directoryId: string, otpCode: string, purpose?: OtpMessagePurposeEnum): Promise<FiadoApiResponse<OtpValidatedResponse>> {
31
+ const params = purpose ? { directoryId, otpCode, purpose } : { directoryId, otpCode };
32
+ return await this.httpRequest.get(`${this.baseUrl}messages/otp/validated`, params, { 'operationName': 'privateGetValidatedOtp' });
32
33
  }
33
34
 
34
35
  async createTemplate(tenantId: string, request: TemplateMessageCreateRequest): Promise<FiadoApiResponse<TemplateMessageResponse>> {
@@ -2,7 +2,7 @@ type FiadoApiResponse<T> = import('@fiado/type-kit/bin/apiResponse/dtos/FiadoApi
2
2
  import {
3
3
  SendMessageRequest, SendMessageResponse,
4
4
  VerifyOtpRequest, VerifyOtpResponse,
5
- OtpValidatedResponse,
5
+ OtpValidatedResponse, OtpMessagePurposeEnum,
6
6
  TemplateMessageCreateRequest, TemplateMessageUpdateRequest,
7
7
  TemplateMessageResponse, TemplateMessageListResponse, TemplateMessageListFiltersRequest,
8
8
  } from '@fiado/type-kit/bin/messagesConnector/index.js';
@@ -10,7 +10,8 @@ import {
10
10
  export interface IMessagesBusinessApi {
11
11
  sendMessage(request: SendMessageRequest): Promise<FiadoApiResponse<SendMessageResponse>>;
12
12
  verifyOtp(request: VerifyOtpRequest): Promise<FiadoApiResponse<VerifyOtpResponse>>;
13
- getValidatedOtp(directoryId: string, otpCode: string): Promise<FiadoApiResponse<OtpValidatedResponse>>;
13
+ /** `purpose` viaja en la query solo si viene; sin él, messages-business aplica SIGNATURE. */
14
+ getValidatedOtp(directoryId: string, otpCode: string, purpose?: OtpMessagePurposeEnum): Promise<FiadoApiResponse<OtpValidatedResponse>>;
14
15
 
15
16
  /**
16
17
  * CRUD de plantillas. Los cinco viven en la API privada sin authorizer, asi que el `tenantId`
@@ -210,7 +210,7 @@ export default class UnitellerConnectorApi implements IUnitellerConnectorApi {
210
210
  return await this.httpRequest.get(url);
211
211
  }
212
212
 
213
- async backofficeListUsers(filters?: { status?: string; email?: string; pageSize?: number; index?: string }): Promise<ApiGatewayResponse<RemittanceBackofficeUserListResponse>> {
213
+ async backofficeListUsers(filters?: { status?: string; email?: string; directoryId?: string; pageSize?: number; index?: string }): Promise<ApiGatewayResponse<RemittanceBackofficeUserListResponse>> {
214
214
  const url = `${this.baseUrl}/backoffice/users`;
215
215
  return await this.httpRequest.get(url, dropUndefined(filters));
216
216
  }
@@ -186,7 +186,7 @@ export interface IUnitellerConnectorApi {
186
186
 
187
187
  backofficeDashboard(): Promise<ApiGatewayResponse<RemittanceBackofficeDashboardSummary>>;
188
188
  /** Filtros: status (default ACTIVE en el connector) | email (lookup exacto); pageSize 1-100; index cursor opaco. */
189
- backofficeListUsers(filters?: { status?: string; email?: string; pageSize?: number; index?: string }): Promise<ApiGatewayResponse<RemittanceBackofficeUserListResponse>>;
189
+ backofficeListUsers(filters?: { status?: string; email?: string; directoryId?: string; pageSize?: number; index?: string }): Promise<ApiGatewayResponse<RemittanceBackofficeUserListResponse>>;
190
190
  backofficeUserDetail(directoryId: string): Promise<ApiGatewayResponse<RemittanceBackofficeUserDetail>>;
191
191
  /** Requiere al menos uno de txNumber | directoryId | status (el connector responde 400 si no). */
192
192
  backofficeListTransactions(filters?: { txNumber?: string; directoryId?: string; status?: string; countryISO?: string; from?: string; to?: string; pageSize?: number; index?: string }): Promise<ApiGatewayResponse<RemittanceBackofficeTxListResponse>>;