@fiado/api-invoker 5.33.1 → 5.34.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,7 +1,7 @@
1
- import { IHttpRequest } from "@fiado/http-client";
1
+ import type { IHttpRequest } from "@fiado/http-client";
2
2
  import { ApiGatewayResponse } from "@fiado/gateway-adapter";
3
3
  import { ConnectorCatalogResponse } from "@fiado/type-kit/bin/benefitCenter/index.js";
4
- import { CreateFundingReferenceRequest, CreateFundingReferenceResponse, ListFundingReferencesResponse, ApplyWalletFundingRequest, ApplyWalletFundingResponse } from "@fiado/type-kit/bin/walletFunding/index.js";
4
+ import { CreateFundingReferenceRequest, CreateFundingReferenceResponse, ListFundingReferencesResponse, ApplyWalletFundingRequest, ApplyWalletFundingResponse, ListFundingStoresRequest, ListFundingStoresResponse, WalletFundingReferenceStatusEnum } from "@fiado/type-kit/bin/walletFunding/index.js";
5
5
  import { ISynergyPayConnectorApi } from "./interfaces/ISynergyPayConnectorApi.js";
6
6
  export default class SynergyPayConnectorApi implements ISynergyPayConnectorApi {
7
7
  private httpRequest;
@@ -14,5 +14,11 @@ export default class SynergyPayConnectorApi implements ISynergyPayConnectorApi {
14
14
  includeDisabled?: boolean;
15
15
  }): Promise<ApiGatewayResponse<ConnectorCatalogResponse>>;
16
16
  applyFunding(request: ApplyWalletFundingRequest): Promise<ApiGatewayResponse<ApplyWalletFundingResponse>>;
17
+ listStores(query: ListFundingStoresRequest): Promise<ApiGatewayResponse<ListFundingStoresResponse>>;
18
+ cancelFundingReference(reference: string, reason?: "USER" | "WALLET_DEACTIVATED" | "OPS"): Promise<ApiGatewayResponse<{
19
+ reference: string;
20
+ status: WalletFundingReferenceStatusEnum;
21
+ cancelled: boolean;
22
+ }>>;
17
23
  getPendingFunding(directoryId: string): Promise<ApiGatewayResponse<any>>;
18
24
  }
@@ -39,6 +39,29 @@ let SynergyPayConnectorApi = class SynergyPayConnectorApi {
39
39
  const url = `${this.baseUrl}/funding/apply`;
40
40
  return await this.httpRequest.post(url, request);
41
41
  }
42
+ async listStores(query) {
43
+ const params = new URLSearchParams({
44
+ latitude: String(query.latitude),
45
+ longitude: String(query.longitude),
46
+ });
47
+ // `radius` y `product` ausentes se OMITEN: el connector aplica sus
48
+ // defaults (el radio del proveedor y `cashin`). Mandarlos vacios los
49
+ // convertiria en filtros invalidos.
50
+ if (query.radius !== undefined)
51
+ params.set("radius", String(query.radius));
52
+ if (query.product !== undefined)
53
+ params.set("product", query.product);
54
+ const url = `${this.baseUrl}/stores?${params.toString()}`;
55
+ return await this.httpRequest.get(url);
56
+ }
57
+ async cancelFundingReference(reference, reason) {
58
+ const params = new URLSearchParams();
59
+ if (reason)
60
+ params.set("reason", reason);
61
+ const qs = params.toString();
62
+ const url = `${this.baseUrl}/funding/references/${encodeURIComponent(reference)}${qs ? `?${qs}` : ""}`;
63
+ return await this.httpRequest.delete(url);
64
+ }
42
65
  async getPendingFunding(directoryId) {
43
66
  const url = `${this.baseUrl}/funding/pending?directoryId=${encodeURIComponent(directoryId)}`;
44
67
  return await this.httpRequest.get(url);
@@ -1,6 +1,6 @@
1
1
  import { ApiGatewayResponse } from "@fiado/gateway-adapter";
2
2
  import { ConnectorCatalogResponse } from "@fiado/type-kit/bin/benefitCenter/index.js";
3
- import { CreateFundingReferenceRequest, CreateFundingReferenceResponse, ListFundingReferencesResponse, ApplyWalletFundingRequest, ApplyWalletFundingResponse } from "@fiado/type-kit/bin/walletFunding/index.js";
3
+ import { CreateFundingReferenceRequest, CreateFundingReferenceResponse, ListFundingReferencesResponse, ApplyWalletFundingRequest, ApplyWalletFundingResponse, ListFundingStoresRequest, ListFundingStoresResponse, WalletFundingReferenceStatusEnum } from "@fiado/type-kit/bin/walletFunding/index.js";
4
4
  /**
5
5
  * Cliente del marketplace hacia synergypay-connector (privado, dentro de la VPC).
6
6
  *
@@ -14,6 +14,8 @@ import { CreateFundingReferenceRequest, CreateFundingReferenceResponse, ListFund
14
14
  * - GET /funding/references?directoryId=&status=
15
15
  * - GET /catalog/standard?benefitId=&includeDisabled=
16
16
  * - POST /funding/apply
17
+ * - GET /stores?latitude=&longitude=&radius=&product=
18
+ * - DELETE /funding/references/{reference}?reason=
17
19
  *
18
20
  * NOTA: los endpoints `/passport/*` del BackOffice (SPEC 1.3) NO están incluidos —
19
21
  * el synergypay-connector aún no los expone (F6.1 construyó solo el money-path).
@@ -42,6 +44,35 @@ export interface ISynergyPayConnectorApi {
42
44
  * queda para el cierre SETTLED (conciliación bancaria) — mismo contrato canónico.
43
45
  */
44
46
  applyFunding(request: ApplyWalletFundingRequest): Promise<ApiGatewayResponse<ApplyWalletFundingResponse>>;
47
+ /**
48
+ * Directorio de tiendas cercanas donde el cliente puede presentar su
49
+ * referencia y entregar el efectivo.
50
+ *
51
+ * Va APARTE de la referencia a proposito: una referencia sirve en cualquier
52
+ * tienda afiliada, asi que el directorio cambia —altas, bajas, horarios,
53
+ * comisiones— sin tocar referencias vivas. El connector filtra por
54
+ * `product=cashin` cuando no se especifica: sin ese filtro, buena parte de
55
+ * las tiendas que devuelve el proveedor no aceptan deposito.
56
+ */
57
+ listStores(query: ListFundingStoresRequest): Promise<ApiGatewayResponse<ListFundingStoresResponse>>;
58
+ /**
59
+ * Cancela una referencia en el proveedor Y en la tabla del connector, en ese
60
+ * orden.
61
+ *
62
+ * Es la unica palanca que frena el efectivo ANTES de que entre a la caja:
63
+ * rechazar el webhook no alcanza, porque cuando el proveedor llama el cobro
64
+ * ya ocurrio. NO cancelar por fuera (curl directo al proveedor) — las dos
65
+ * mitades quedan desincronizadas y creeriamos que el cliente puede
66
+ * depositar cuando la caja ya no se lo permite.
67
+ *
68
+ * Idempotente: cancelar algo ya cancelado devuelve `cancelled: false`, no
69
+ * un error.
70
+ */
71
+ cancelFundingReference(reference: string, reason?: "USER" | "WALLET_DEACTIVATED" | "OPS"): Promise<ApiGatewayResponse<{
72
+ reference: string;
73
+ status: WalletFundingReferenceStatusEnum;
74
+ cancelled: boolean;
75
+ }>>;
45
76
  /**
46
77
  * Cash-in AUTORIZADO pero aun no acreditado del cliente, en el mes en curso.
47
78
  *
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fiado/api-invoker",
3
- "version": "5.33.1",
3
+ "version": "5.34.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.319.0",
37
+ "@fiado/type-kit": "^3.327.0",
38
38
  "dotenv": "^16.4.7"
39
39
  },
40
40
  "peerDependencies": {
@@ -1,5 +1,5 @@
1
1
  import { inject, injectable } from "inversify";
2
- import { IHttpRequest } from "@fiado/http-client";
2
+ import type { IHttpRequest } from "@fiado/http-client";
3
3
  import { ApiGatewayResponse } from "@fiado/gateway-adapter";
4
4
  import { ConnectorCatalogResponse } from "@fiado/type-kit/bin/benefitCenter/index.js";
5
5
  import {
@@ -8,6 +8,9 @@ import {
8
8
  ListFundingReferencesResponse,
9
9
  ApplyWalletFundingRequest,
10
10
  ApplyWalletFundingResponse,
11
+ ListFundingStoresRequest,
12
+ ListFundingStoresResponse,
13
+ WalletFundingReferenceStatusEnum,
11
14
  } from "@fiado/type-kit/bin/walletFunding/index.js";
12
15
  import { ISynergyPayConnectorApi } from "./interfaces/ISynergyPayConnectorApi.js";
13
16
 
@@ -50,6 +53,36 @@ export default class SynergyPayConnectorApi implements ISynergyPayConnectorApi {
50
53
  return await this.httpRequest.post(url, request);
51
54
  }
52
55
 
56
+ async listStores(
57
+ query: ListFundingStoresRequest,
58
+ ): Promise<ApiGatewayResponse<ListFundingStoresResponse>> {
59
+ const params = new URLSearchParams({
60
+ latitude: String(query.latitude),
61
+ longitude: String(query.longitude),
62
+ });
63
+ // `radius` y `product` ausentes se OMITEN: el connector aplica sus
64
+ // defaults (el radio del proveedor y `cashin`). Mandarlos vacios los
65
+ // convertiria en filtros invalidos.
66
+ if (query.radius !== undefined) params.set("radius", String(query.radius));
67
+ if (query.product !== undefined) params.set("product", query.product);
68
+ const url = `${this.baseUrl}/stores?${params.toString()}`;
69
+ return await this.httpRequest.get(url);
70
+ }
71
+
72
+ async cancelFundingReference(
73
+ reference: string,
74
+ reason?: "USER" | "WALLET_DEACTIVATED" | "OPS",
75
+ ): Promise<ApiGatewayResponse<{
76
+ reference: string;
77
+ status: WalletFundingReferenceStatusEnum;
78
+ cancelled: boolean;
79
+ }>> {
80
+ const params = new URLSearchParams();
81
+ if (reason) params.set("reason", reason);
82
+ const qs = params.toString();
83
+ const url = `${this.baseUrl}/funding/references/${encodeURIComponent(reference)}${qs ? `?${qs}` : ""}`;
84
+ return await this.httpRequest.delete(url);
85
+ }
53
86
  async getPendingFunding(directoryId: string): Promise<ApiGatewayResponse<any>> {
54
87
  const url = `${this.baseUrl}/funding/pending?directoryId=${encodeURIComponent(directoryId)}`;
55
88
  return await this.httpRequest.get(url);
@@ -6,6 +6,9 @@ import {
6
6
  ListFundingReferencesResponse,
7
7
  ApplyWalletFundingRequest,
8
8
  ApplyWalletFundingResponse,
9
+ ListFundingStoresRequest,
10
+ ListFundingStoresResponse,
11
+ WalletFundingReferenceStatusEnum,
9
12
  } from "@fiado/type-kit/bin/walletFunding/index.js";
10
13
 
11
14
  /**
@@ -21,6 +24,8 @@ import {
21
24
  * - GET /funding/references?directoryId=&status=
22
25
  * - GET /catalog/standard?benefitId=&includeDisabled=
23
26
  * - POST /funding/apply
27
+ * - GET /stores?latitude=&longitude=&radius=&product=
28
+ * - DELETE /funding/references/{reference}?reason=
24
29
  *
25
30
  * NOTA: los endpoints `/passport/*` del BackOffice (SPEC 1.3) NO están incluidos —
26
31
  * el synergypay-connector aún no los expone (F6.1 construyó solo el money-path).
@@ -58,6 +63,39 @@ export interface ISynergyPayConnectorApi {
58
63
  applyFunding(
59
64
  request: ApplyWalletFundingRequest,
60
65
  ): Promise<ApiGatewayResponse<ApplyWalletFundingResponse>>;
66
+
67
+ /**
68
+ * Directorio de tiendas cercanas donde el cliente puede presentar su
69
+ * referencia y entregar el efectivo.
70
+ *
71
+ * Va APARTE de la referencia a proposito: una referencia sirve en cualquier
72
+ * tienda afiliada, asi que el directorio cambia —altas, bajas, horarios,
73
+ * comisiones— sin tocar referencias vivas. El connector filtra por
74
+ * `product=cashin` cuando no se especifica: sin ese filtro, buena parte de
75
+ * las tiendas que devuelve el proveedor no aceptan deposito.
76
+ */
77
+ listStores(query: ListFundingStoresRequest): Promise<ApiGatewayResponse<ListFundingStoresResponse>>;
78
+ /**
79
+ * Cancela una referencia en el proveedor Y en la tabla del connector, en ese
80
+ * orden.
81
+ *
82
+ * Es la unica palanca que frena el efectivo ANTES de que entre a la caja:
83
+ * rechazar el webhook no alcanza, porque cuando el proveedor llama el cobro
84
+ * ya ocurrio. NO cancelar por fuera (curl directo al proveedor) — las dos
85
+ * mitades quedan desincronizadas y creeriamos que el cliente puede
86
+ * depositar cuando la caja ya no se lo permite.
87
+ *
88
+ * Idempotente: cancelar algo ya cancelado devuelve `cancelled: false`, no
89
+ * un error.
90
+ */
91
+ cancelFundingReference(
92
+ reference: string,
93
+ reason?: "USER" | "WALLET_DEACTIVATED" | "OPS",
94
+ ): Promise<ApiGatewayResponse<{
95
+ reference: string;
96
+ status: WalletFundingReferenceStatusEnum;
97
+ cancelled: boolean;
98
+ }>>;
61
99
  /**
62
100
  * Cash-in AUTORIZADO pero aun no acreditado del cliente, en el mes en curso.
63
101
  *