@fiado/api-invoker 4.7.0 → 4.8.1

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 (285) hide show
  1. package/.claude/settings.json +33 -33
  2. package/README.md +600 -600
  3. package/bin/cognitoBackofficeConnector/api/CognitoBackofficeConnectorApi.d.ts +3 -2
  4. package/bin/cognitoBackofficeConnector/api/CognitoBackofficeConnectorApi.js +5 -1
  5. package/bin/cognitoBackofficeConnector/api/interfaces/ICognitoBackofficeConnectorApi.d.ts +7 -1
  6. package/bin/cognitoConnector/CognitoConnectorApi.d.ts +2 -1
  7. package/bin/cognitoConnector/CognitoConnectorApi.js +3 -2
  8. package/bin/cognitoConnector/interfaces/ICognitoConnectorApi.d.ts +1 -1
  9. package/bin/directories/DirectoriesApi.d.ts +1 -0
  10. package/bin/directories/DirectoriesApi.js +4 -0
  11. package/bin/directories/interfaces/IDirectoriesApi.d.ts +4 -0
  12. package/bin/referral-business/ReferralBusinessApi.d.ts +1 -0
  13. package/bin/referral-business/ReferralBusinessApi.js +4 -0
  14. package/bin/referral-business/interfaces/IReferralBusinessApi.d.ts +6 -0
  15. package/package.json +37 -37
  16. package/src/account-beneficiary/AccountBeneficiaryApi.ts +18 -18
  17. package/src/account-beneficiary/index.ts +2 -2
  18. package/src/account-beneficiary/interfaces/IAccountBeneficiaryApi.ts +7 -7
  19. package/src/account-fiadoinc/AccountFiadoIncApi.ts +126 -126
  20. package/src/account-fiadoinc/index.ts +4 -4
  21. package/src/account-fiadoinc/interfaces/IAccountFiadoIncApi.ts +50 -50
  22. package/src/account-fiadoinc/queue/Publisher.ts +23 -23
  23. package/src/account-fiadoinc/queue/interfaces/IPublisher.ts +4 -4
  24. package/src/account-fiadosa/AccountFiadoSAApi.ts +38 -38
  25. package/src/account-fiadosa/index.ts +1 -1
  26. package/src/account-fiadosa/interfaces/IAccountFiadoSAApi.ts +16 -16
  27. package/src/account-pagoconfiado/AccountPagoConfiadoApi.ts +78 -78
  28. package/src/account-pagoconfiado/index.ts +2 -2
  29. package/src/account-pagoconfiado/interfaces/IAccountPagoConfiadoApi.ts +37 -37
  30. package/src/activity-business/ActivityApi.ts +36 -36
  31. package/src/activity-business/index.ts +5 -5
  32. package/src/activity-business/interfaces/IActivityApi.ts +13 -13
  33. package/src/activity-business/queue/ActivityPublisher.ts +30 -30
  34. package/src/activity-business/queue/IActivityPublisher.ts +4 -4
  35. package/src/address/AddressApi.ts +46 -46
  36. package/src/address/index.ts +3 -3
  37. package/src/address/interfaces/IAddressApi.ts +30 -30
  38. package/src/ai-engine-connector/AiEngineApi.ts +28 -28
  39. package/src/ai-engine-connector/index.ts +2 -2
  40. package/src/ai-engine-connector/interfaces/IAiEngineApi.ts +6 -6
  41. package/src/appselectondata/AppSelectionDataApi.ts +32 -32
  42. package/src/appselectondata/index.ts +2 -2
  43. package/src/appselectondata/interfaces/IAppSelectionDataApi.ts +17 -17
  44. package/src/authentication/AuthenticationApi.ts +29 -29
  45. package/src/authentication/index.ts +4 -4
  46. package/src/authentication/interfaces/IAuthenticationApi.ts +8 -8
  47. package/src/bankAccount/BankAccountApi.ts +34 -34
  48. package/src/bankAccount/index.ts +1 -1
  49. package/src/bankAccount/interfaces/IBankAccountApi.ts +6 -6
  50. package/src/bbvaRst/api/BBVARstApi.ts +16 -16
  51. package/src/bbvaRst/api/interfaces/IBBVARstApi.ts +4 -4
  52. package/src/bbvaRst/index.ts +1 -1
  53. package/src/benefits-marketplace/api/BenefitsMarketplaceApi.ts +35 -35
  54. package/src/benefits-marketplace/api/dtos/BenefitLeafDisplayResponse.ts +21 -21
  55. package/src/benefits-marketplace/api/interfaces/IBenefitsMarketplaceApi.ts +62 -62
  56. package/src/benefits-marketplace/index.ts +3 -3
  57. package/src/blacklist/BlackListApi.ts +19 -19
  58. package/src/blacklist/index.ts +2 -2
  59. package/src/blacklist/interfaces/IBlackListApi.ts +20 -20
  60. package/src/card/CardApi.ts +103 -103
  61. package/src/card/index.ts +3 -3
  62. package/src/card/interfaces/ICardApi.ts +32 -32
  63. package/src/card-business/index.ts +2 -2
  64. package/src/card-business/queue/CardBusinessPublisher.ts +23 -23
  65. package/src/card-business/queue/ICardBusinessPublisher.ts +10 -10
  66. package/src/centralPayments/CentralPaymentsConnectorApi.ts +317 -317
  67. package/src/centralPayments/index.ts +1 -1
  68. package/src/centralPayments/interfaces/ICentralPaymentsConnectorApi.ts +153 -153
  69. package/src/circuloCredito/api/CirculoCreditoApi.ts +21 -21
  70. package/src/circuloCredito/api/interfaces/ICirculoCreditoApi.ts +7 -7
  71. package/src/circuloCredito/index.ts +2 -2
  72. package/src/cnbv-business/CnbvApi.ts +31 -31
  73. package/src/cnbv-business/index.ts +4 -4
  74. package/src/cnbv-business/interfaces/ICnbvApi.ts +19 -19
  75. package/src/cnbv-connector/CnbvConnectorApi.ts +18 -18
  76. package/src/cnbv-connector/index.ts +1 -1
  77. package/src/cnbv-connector/interfaces/ICnbvConnectorApi.ts +6 -6
  78. package/src/cognitoBackofficeConnector/api/CognitoBackofficeConnectorApi.ts +263 -254
  79. package/src/cognitoBackofficeConnector/api/interfaces/ICognitoBackofficeConnectorApi.ts +192 -181
  80. package/src/cognitoBackofficeConnector/index.ts +2 -2
  81. package/src/cognitoConnector/CognitoConnectorApi.ts +112 -110
  82. package/src/cognitoConnector/CognitoConnectorV2.ts +87 -87
  83. package/src/cognitoConnector/index.ts +11 -11
  84. package/src/cognitoConnector/interfaces/ICognitoConnectorApi.ts +16 -16
  85. package/src/cognitoConnector/interfaces/ICognitoV2Api.ts +63 -63
  86. package/src/collector/CollectorApi.ts +97 -97
  87. package/src/collector/index.ts +2 -2
  88. package/src/collector/interfaces/ICollectorApi.ts +47 -47
  89. package/src/commission-business/CommissionBusinessApi.ts +19 -19
  90. package/src/commission-business/index.ts +3 -3
  91. package/src/commission-business/interfaces/ICommissionBusinessApi.ts +15 -15
  92. package/src/contactInformation/ContactInformationApi.ts +20 -20
  93. package/src/contactInformation/index.ts +2 -2
  94. package/src/contactInformation/interface/IContactInformationApi.ts +8 -8
  95. package/src/container.config.ts +289 -289
  96. package/src/contract-business/api/ContractBusinessApi.ts +37 -37
  97. package/src/contract-business/api/interfaces/IContractBusinessApi.ts +32 -32
  98. package/src/contract-business/index.ts +2 -2
  99. package/src/contract-generator/ContractGeneratorApi.ts +18 -18
  100. package/src/contract-generator/index.ts +2 -2
  101. package/src/contract-generator/interfaces/IContractGeneratorApi.ts +16 -16
  102. package/src/countries-business/CountriesBusinessApi.ts +26 -26
  103. package/src/countries-business/index.ts +2 -2
  104. package/src/countries-business/interfaces/ICountriesBusinessApi.ts +22 -22
  105. package/src/credit-engine/CreditEngineApi.ts +54 -54
  106. package/src/credit-engine/index.ts +17 -17
  107. package/src/credit-engine/interfaces/ICreditEngineApi.ts +46 -46
  108. package/src/credit-engine/queue/CreditCollectionPublisher.ts +24 -24
  109. package/src/credit-engine/queue/CreditDelinquencyPublisher.ts +24 -24
  110. package/src/credit-engine/queue/CreditIncomeDetectionPublisher.ts +24 -24
  111. package/src/credit-engine/queue/CreditLienCollectionPublisher.ts +24 -24
  112. package/src/credit-engine/queue/CreditNotificationPublisher.ts +24 -24
  113. package/src/credit-engine/queue/CreditOfferGenerationPublisher.ts +24 -24
  114. package/src/credit-engine/queue/CreditReconciliationPublisher.ts +24 -24
  115. package/src/credit-engine/queue/CreditScoringPublisher.ts +24 -24
  116. package/src/credit-engine/queue/CreditStatementPublisher.ts +24 -24
  117. package/src/credit-engine/queue/CreditTransferPublisher.ts +24 -24
  118. package/src/credit-engine/queue/interfaces/ICreditCollectionPublisher.ts +5 -5
  119. package/src/credit-engine/queue/interfaces/ICreditDelinquencyPublisher.ts +5 -5
  120. package/src/credit-engine/queue/interfaces/ICreditIncomeDetectionPublisher.ts +5 -5
  121. package/src/credit-engine/queue/interfaces/ICreditLienCollectionPublisher.ts +5 -5
  122. package/src/credit-engine/queue/interfaces/ICreditNotificationPublisher.ts +5 -5
  123. package/src/credit-engine/queue/interfaces/ICreditOfferGenerationPublisher.ts +5 -5
  124. package/src/credit-engine/queue/interfaces/ICreditReconciliationPublisher.ts +5 -5
  125. package/src/credit-engine/queue/interfaces/ICreditScoringPublisher.ts +5 -5
  126. package/src/credit-engine/queue/interfaces/ICreditStatementPublisher.ts +5 -5
  127. package/src/credit-engine/queue/interfaces/ICreditTransferPublisher.ts +5 -5
  128. package/src/credit-payment/CreditPaymentApi.ts +73 -73
  129. package/src/credit-payment/index.ts +2 -2
  130. package/src/credit-payment/interfaces/ICreditPaymentApi.ts +52 -52
  131. package/src/credit-statements/api/CreditStatementsApi.ts +25 -25
  132. package/src/credit-statements/api/interfaces/ICreditStatementsApi.ts +30 -30
  133. package/src/credit-statements/index.ts +2 -2
  134. package/src/device/DeviceApi.ts +32 -32
  135. package/src/device/index.ts +2 -2
  136. package/src/device/interfaces/IDeviceApi.ts +41 -41
  137. package/src/directories/DirectoriesApi.ts +68 -63
  138. package/src/directories/index.ts +3 -3
  139. package/src/directories/interfaces/IDirectoriesApi.ts +21 -17
  140. package/src/directory/DirectoryApi.ts +196 -196
  141. package/src/directory/index.ts +3 -3
  142. package/src/directory/interfaces/IDirectoryApi.ts +73 -73
  143. package/src/directorySetting/DirectorySettingApi.ts +42 -42
  144. package/src/directorySetting/index.ts +3 -3
  145. package/src/directorySetting/interfaces/IDirectorySettingApi.ts +56 -56
  146. package/src/disputes/DisputesApi.ts +50 -50
  147. package/src/disputes/index.ts +2 -2
  148. package/src/disputes/interfaces/IDisputesApi.ts +54 -54
  149. package/src/document-generator/DocumentGeneratorApi.ts +51 -51
  150. package/src/document-generator/index.ts +2 -2
  151. package/src/document-generator/interfaces/IDocumentGeneratorApi.ts +34 -34
  152. package/src/document-image-processor/DocumentImageProcessorApi.ts +22 -22
  153. package/src/document-image-processor/index.ts +1 -1
  154. package/src/document-image-processor/interfaces/IDocumentImageProcessorApi.ts +7 -7
  155. package/src/estafeta/api/EstafetaApi.ts +67 -67
  156. package/src/estafeta/api/interfaces/IEstafetaApi.ts +28 -28
  157. package/src/estafeta/index.ts +1 -1
  158. package/src/event-history-business/EventHistoryApi.ts +108 -108
  159. package/src/event-history-business/index.ts +3 -3
  160. package/src/event-history-business/interfaces/IEventHistoryApi.ts +47 -47
  161. package/src/exchangeRates/ExchangeRatesApi.ts +27 -27
  162. package/src/exchangeRates/index.ts +1 -1
  163. package/src/exchangeRates/interfaces/IExchangeRatesApi.ts +8 -8
  164. package/src/fiadoMessages/api/FiadoMessagesApi.ts +20 -20
  165. package/src/fiadoMessages/api/interfaces/IFiadoMessagesApi.ts +2 -2
  166. package/src/fiadoMessages/index.ts +1 -1
  167. package/src/firebase-connector/FirebaseConnectorApi.ts +53 -53
  168. package/src/firebase-connector/index.ts +3 -3
  169. package/src/firebase-connector/interfaces/IFirebaseConnectorApi.ts +6 -6
  170. package/src/fraudPreventionEngine/api/FraudPreventionEngineApi.ts +22 -22
  171. package/src/fraudPreventionEngine/api/interfaces/IFraudPreventionEngineApi.ts +7 -7
  172. package/src/fraudPreventionEngine/index.ts +1 -1
  173. package/src/group/GroupApi.ts +69 -69
  174. package/src/group/index.ts +1 -1
  175. package/src/group/interfaces/IGroupApi.ts +40 -40
  176. package/src/identity/IdentityApi.ts +95 -95
  177. package/src/identity/index.ts +3 -3
  178. package/src/identity/interfaces/IIdentityApi.ts +46 -46
  179. package/src/index.ts +78 -78
  180. package/src/legalDocument/api/LegalDocumentApi.ts +38 -38
  181. package/src/legalDocument/api/interfaces/ILegalDocumentApi.ts +7 -7
  182. package/src/legalDocument/index.ts +3 -3
  183. package/src/milestone-business/api/MilestoneBusinessApi.ts +26 -26
  184. package/src/milestone-business/api/interfaces/IMilestoneBusinessApi.ts +9 -9
  185. package/src/milestone-business/index.ts +2 -2
  186. package/src/multicommServicePayment/api/MulticommServicePaymentApi.ts +94 -94
  187. package/src/multicommServicePayment/api/interfaces/IMulticommServicePaymentApi.ts +44 -44
  188. package/src/multicommServicePayment/index.ts +1 -1
  189. package/src/notificationMessages/index.ts +1 -1
  190. package/src/notificationMessages/queue/NotificationMessagePublisher.ts +42 -42
  191. package/src/notificationMessages/queue/interfaces/INotificationMessagesPublisher.ts +7 -7
  192. package/src/notificationWebsockets/index.ts +1 -1
  193. package/src/notificationWebsockets/queue/NotificationWSMessagePublisher.ts +29 -29
  194. package/src/notificationWebsockets/queue/interfaces/INotificationWSMessagesPublisher.ts +4 -4
  195. package/src/observations/ObservationsApi.ts +23 -23
  196. package/src/observations/index.ts +3 -3
  197. package/src/observations/interfaces/IObservationsApi.ts +9 -9
  198. package/src/onboarding/api/OnboardingApi.ts +23 -23
  199. package/src/onboarding/api/interfaces/IOnboardingApi.ts +3 -3
  200. package/src/onboarding/index.ts +1 -1
  201. package/src/onboarding-business/api/OnboardingBusinessApi.ts +210 -210
  202. package/src/onboarding-business/api/interfaces/IOnboardingBusinessApi.ts +9 -9
  203. package/src/onboarding-business/index.ts +1 -1
  204. package/src/order-collector-business/OrderCollectorApi.ts +20 -20
  205. package/src/order-collector-business/index.ts +3 -3
  206. package/src/order-collector-business/interfaces/IOrderCollectorApi.ts +9 -9
  207. package/src/p2pContact/api/P2pContactApi.ts +19 -19
  208. package/src/p2pContact/api/interfaces/IP2pContactApi.ts +4 -4
  209. package/src/p2pContact/index.ts +1 -1
  210. package/src/payroll-business/PayrollApi.ts +19 -19
  211. package/src/payroll-business/index.ts +1 -1
  212. package/src/payroll-business/interfaces/IPayrollApi.ts +18 -18
  213. package/src/people-business/api/PeopleBusinessApi.ts +32 -32
  214. package/src/people-business/api/interfaces/IPeopleBusinessApi.ts +7 -7
  215. package/src/people-business/index.ts +1 -1
  216. package/src/platform-error-events/index.ts +2 -2
  217. package/src/platform-error-events/queue/PlatformErrorEventsPublisher.ts +24 -24
  218. package/src/platform-error-events/queue/interfaces/IPlatformErrorEventsPublisher.ts +5 -5
  219. package/src/pomelo/api/PomeloApi.ts +109 -109
  220. package/src/pomelo/api/interfaces/IPomeloApi.ts +29 -29
  221. package/src/pomelo/index.ts +1 -1
  222. package/src/pomeloProcessor/api/PomeloProcessorApi.ts +17 -17
  223. package/src/pomeloProcessor/api/interfaces/IPomeloProcessorApi.ts +2 -2
  224. package/src/pomeloProcessor/index.ts +2 -2
  225. package/src/pricelist-business/PriceListApi.ts +45 -45
  226. package/src/pricelist-business/index.ts +1 -1
  227. package/src/pricelist-business/interfaces/IPriceListApi.ts +16 -16
  228. package/src/product-catalog/ProductCatalogApi.ts +17 -17
  229. package/src/product-catalog/index.ts +1 -1
  230. package/src/product-catalog/interfaces/IProductCatalogApi.ts +6 -6
  231. package/src/product-payment/api/ProductPaymentApi.ts +25 -25
  232. package/src/product-payment/api/interfaces/IProductPaymentApi.ts +8 -8
  233. package/src/product-payment/index.ts +1 -1
  234. package/src/referral-business/ReferralBusinessApi.ts +42 -37
  235. package/src/referral-business/index.ts +1 -1
  236. package/src/referral-business/interfaces/IReferralBusinessApi.ts +45 -38
  237. package/src/report-processor-business/api/IReportProcessorBusinessApi.ts +4 -4
  238. package/src/report-processor-business/api/ReportProcessorBusinessApi.ts +17 -17
  239. package/src/report-processor-business/index.ts +5 -5
  240. package/src/riskProfile/api/RiskProfileApi.ts +63 -63
  241. package/src/riskProfile/api/TransactionAlertApi.ts +49 -49
  242. package/src/riskProfile/api/interfaces/IRiskProfileApi.ts +51 -51
  243. package/src/riskProfile/api/interfaces/ITransactionAlertApi.ts +70 -70
  244. package/src/riskProfile/index.ts +7 -7
  245. package/src/riskProfile/queue/TransactionAlarmPublisher.ts +25 -25
  246. package/src/riskProfile/queue/interfaces/ITransactionAlarmPublisher.ts +4 -4
  247. package/src/service-business/ServiceApi.ts +78 -78
  248. package/src/service-business/index.ts +2 -2
  249. package/src/service-business/interfaces/IServiceApi.ts +73 -73
  250. package/src/sessionActivity/index.ts +2 -2
  251. package/src/sessionActivity/queue/SessionActivityPublisher.ts +23 -23
  252. package/src/sessionActivity/queue/interfaces/ISessionActivityPublisher.ts +4 -4
  253. package/src/stp-business/api/STPBusinessApi.ts +32 -32
  254. package/src/stp-business/api/interfaces/ISTPBusinessApi.ts +15 -15
  255. package/src/stp-business/index.ts +1 -1
  256. package/src/stpAccount/api/STPAccountApi.ts +111 -111
  257. package/src/stpAccount/api/interfaces/ISTPAccountApi.ts +7 -7
  258. package/src/stpAccount/index.ts +1 -1
  259. package/src/stpServicePayment/api/StpServicePaymentApi.ts +94 -94
  260. package/src/stpServicePayment/api/interfaces/IStpServicePaymentApi.ts +44 -44
  261. package/src/stpServicePayment/index.ts +1 -1
  262. package/src/stpSpei/api/StpSpeiApi.ts +32 -32
  263. package/src/stpSpei/api/interfaces/IStpSpeiApi.ts +6 -6
  264. package/src/stpSpei/index.ts +1 -1
  265. package/src/teams-connector/index.ts +2 -2
  266. package/src/teams-connector/queue/TeamsNotificationPublisher.ts +24 -24
  267. package/src/teams-connector/queue/interfaces/ITeamsNotificationPublisher.ts +5 -5
  268. package/src/tern/api/TernApi.ts +147 -147
  269. package/src/tern/api/interfaces/ITernApi.ts +54 -54
  270. package/src/tern/index.ts +1 -1
  271. package/src/transaction/api/TransactionApi.ts +157 -157
  272. package/src/transaction/api/interfaces/ITransactionApi.ts +82 -82
  273. package/src/transaction/index.ts +5 -5
  274. package/src/transaction/queue/TransactionPublisher.ts +25 -25
  275. package/src/transaction/queue/interfaces/ITransactionPublisher.ts +4 -4
  276. package/src/transactionProcessor/api/TransactionProcessorApi.ts +57 -57
  277. package/src/transactionProcessor/api/interfaces/ITransactionProcessorApi.ts +28 -28
  278. package/src/transactionProcessor/index.ts +1 -1
  279. package/src/uniteller-connector/api/UnitellerConnectorApi.ts +113 -113
  280. package/src/uniteller-connector/api/interfaces/IUnitellerConnectorApi.ts +85 -85
  281. package/src/uniteller-connector/index.ts +2 -2
  282. package/src/utils/InvokerUtils.ts +18 -18
  283. package/src/zendesk/ZendeskApi.ts +24 -24
  284. package/src/zendesk/index.ts +3 -3
  285. package/src/zendesk/interfaces/IZendeskApi.ts +10 -10
package/README.md CHANGED
@@ -1,600 +1,600 @@
1
- <div align="center">
2
-
3
- # 🔗 Fiado API Invoker
4
-
5
- ### Librería de Comunicación Inter-Servicios para Microservicios Lambda
6
-
7
- [![npm](https://img.shields.io/badge/npm-@fiado/api--invoker-CB3837?logo=npm&logoColor=white)](https://www.npmjs.com/)
8
- [![TypeScript](https://img.shields.io/badge/TypeScript-5.x-3178C6?logo=typescript&logoColor=white)](https://www.typescriptlang.org/)
9
- [![AWS Lambda](https://img.shields.io/badge/AWS-Lambda-FF9900?logo=aws-lambda&logoColor=white)](https://aws.amazon.com/lambda/)
10
- [![InversifyJS](https://img.shields.io/badge/InversifyJS-6.x-1E88E5)](https://inversify.io/)
11
-
12
- </div>
13
-
14
- ---
15
-
16
- ## Tabla de Contenidos
17
-
18
- - [Descripción General](#descripción-general)
19
- - [Arquitectura](#arquitectura)
20
- - [Instalación](#instalación)
21
- - [Configuración](#configuración)
22
- - [APIs Disponibles](#apis-disponibles)
23
- - [Publishers (Colas SQS)](#publishers-colas-sqs)
24
- - [Uso en Proyectos](#uso-en-proyectos)
25
- - [Variables de Entorno](#variables-de-entorno)
26
- - [Estructura del Proyecto](#estructura-del-proyecto)
27
- - [Convenciones de Desarrollo](#convenciones-de-desarrollo)
28
- - [Dependencias](#dependencias)
29
-
30
- ---
31
-
32
- ## Descripción General
33
-
34
- `@fiado/api-invoker` es una librería empresarial que actúa como **puente de comunicación entre microservicios Lambda** dentro del ecosistema Fiado. Proporciona:
35
-
36
- - **Clientes HTTP tipados** para invocar APIs privadas de otros Lambdas
37
- - **Publishers SQS** para comunicación asíncrona mediante colas
38
- - **Inyección de dependencias** integrada con InversifyJS
39
- - **Abstracción de complejidad** de configuración y manejo de errores
40
-
41
- ### Propósito
42
-
43
- En una arquitectura de microservicios, cada Lambda expone una API privada accesible únicamente desde la VPC. Esta librería encapsula:
44
-
45
- 1. La construcción de URLs base desde variables de entorno
46
- 2. El manejo de headers y operaciones HTTP
47
- 3. La serialización/deserialización de payloads
48
- 4. La publicación de mensajes a colas SQS
49
-
50
- ---
51
-
52
- ## Arquitectura
53
-
54
- ```
55
- ┌─────────────────────────────────────────────────────────────────────────┐
56
- │ LAMBDA CONSUMIDOR │
57
- │ │
58
- │ ┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐ │
59
- │ │ Manager/ │───▶│ @fiado/ │───▶│ @fiado/ │ │
60
- │ │ Service │ │ api-invoker │ │ http-client │ │
61
- │ └──────────────────┘ └──────────────────┘ └──────────────────┘ │
62
- │ │ │ │
63
- └───────────────────────────────────┼────────────────────────┼────────────┘
64
- │ │
65
- ┌───────────────┴───────────────┐ │
66
- ▼ ▼ ▼
67
- ┌──────────────┐ ┌──────────────────┐
68
- │ AWS SQS │ │ API Gateway │
69
- │ (Queues) │ │ (Private VPC) │
70
- └──────────────┘ └──────────────────┘
71
- │ │
72
- ▼ ▼
73
- ┌──────────────┐ ┌──────────────────┐
74
- │ Lambda │ │ Lambda │
75
- │ Subscriber │ │ Target │
76
- └──────────────┘ └──────────────────┘
77
- ```
78
-
79
- ### Patrones de Comunicación
80
-
81
- | Patrón | Implementación | Uso |
82
- |--------|----------------|-----|
83
- | **Síncrono** | HTTP via API Gateway privado | Consultas, operaciones CRUD |
84
- | **Asíncrono** | SQS Publishers | Eventos, notificaciones, procesos batch |
85
-
86
- ---
87
-
88
- ## Instalación
89
-
90
- ```bash
91
- npm install @fiado/api-invoker @fiado/http-client
92
- ```
93
-
94
- ### Peer Dependencies
95
-
96
- La librería requiere las siguientes dependencias en el proyecto consumidor:
97
-
98
- ```json
99
- {
100
- "@fiado/http-client": "^1.0.7",
101
- "@fiado/logger": "^1.0.3",
102
- "@fiado/type-kit": "^2.1.28",
103
- "inversify": "^6.2.2",
104
- "reflect-metadata": "^0.2.2"
105
- }
106
- ```
107
-
108
- ---
109
-
110
- ## Configuración
111
-
112
- ### Registro en el Contenedor IoC
113
-
114
- La librería exporta un `ContainerModule` de InversifyJS que registra automáticamente todos los clientes API y publishers:
115
-
116
- ```typescript
117
- import { Container } from "inversify";
118
- import { IHttpRequest, AxiosHttpRequest } from "@fiado/http-client";
119
- import { apiInvokerBindings } from "@fiado/api-invoker";
120
-
121
- const container = new Container();
122
-
123
- // 1. Cargar bindings de api-invoker (registra todos los clientes)
124
- container.load(apiInvokerBindings);
125
-
126
- // 2. Registrar el cliente HTTP (requerido por los clientes API)
127
- container.bind<IHttpRequest>("IHttpRequest").to(AxiosHttpRequest);
128
-
129
- export { container };
130
- ```
131
-
132
- ### Importación de Interfaces
133
-
134
- ```typescript
135
- // Importar interfaces específicas
136
- import {
137
- IDirectoryApi,
138
- IIdentityApi,
139
- ITransactionApi,
140
- INotificationMessagesPublisher
141
- } from "@fiado/api-invoker";
142
- ```
143
-
144
- ---
145
-
146
- ## APIs Disponibles
147
-
148
- La librería proporciona clientes para **60+ microservicios** del ecosistema Fiado:
149
-
150
- ### Servicios Core
151
-
152
- | Interface | Descripción | Variable de Entorno |
153
- |-----------|-------------|---------------------|
154
- | `IDirectoryApi` | Gestión de directorios de usuarios | `DIRECTORY_LAMBDA_URL` |
155
- | `IIdentityApi` | Verificación de identidad | `IDENTITY_LAMBDA_URL` |
156
- | `IAuthenticationApi` | Autenticación y tokens | `AUTHENTICATION_LAMBDA_URL` |
157
- | `ITransactionApi` | Procesamiento de transacciones | `TRANSACTION_LAMBDA_URL` |
158
-
159
- ### Servicios de Cuenta
160
-
161
- | Interface | Descripción | Variable de Entorno |
162
- |-----------|-------------|---------------------|
163
- | `IAccountFiadoIncApi` | Cuentas Fiado Inc | `ACCOUNT_FIADOINC_LAMBDA_URL` |
164
- | `IAccountFiadoSAApi` | Cuentas Fiado SA | `ACCOUNT_FIADOSA_LAMBDA_URL` |
165
- | `IAccountPagoConfiadoApi` | Cuentas PagoConfiado | `ACCOUNT_PAGOCONFIADO_LAMBDA_URL` |
166
- | `IAccountBeneficiaryApi` | Beneficiarios de cuentas | `ACCOUNT_BENEFICIARY_LAMBDA_URL` |
167
- | `IBankAccountApi` | Cuentas bancarias | `BANK_ACCOUNT_LAMBDA_URL` |
168
-
169
- ### Servicios de Pago
170
-
171
- | Interface | Descripción | Variable de Entorno |
172
- |-----------|-------------|---------------------|
173
- | `IStpSpeiApi` | Transferencias SPEI | `STP_SPEI_LAMBDA_URL` |
174
- | `IStpServicePaymentApi` | Pagos de servicios STP | `STP_SERVICE_PAYMENT_LAMBDA_URL` |
175
- | `ICentralPaymentsConnectorApi` | Conector de pagos central | `CENTRAL_PAYMENTS_LAMBDA_URL` |
176
- | `ICollectorApi` | Cobranza | `COLLECTOR_LAMBDA_URL` |
177
-
178
- ### Servicios de Tarjeta
179
-
180
- | Interface | Descripción | Variable de Entorno |
181
- |-----------|-------------|---------------------|
182
- | `ICardApi` | Gestión de tarjetas | `CARD_LAMBDA_URL` |
183
- | `IPomeloApi` | Integración Pomelo | `POMELO_LAMBDA_URL` |
184
- | `IPomeloProcessorApi` | Procesador Pomelo | `POMELO_PROCESSOR_LAMBDA_URL` |
185
-
186
- ### Servicios de Riesgo y Fraude
187
-
188
- | Interface | Descripción | Variable de Entorno |
189
- |-----------|-------------|---------------------|
190
- | `IRiskProfileApi` | Perfiles de riesgo | `RISK_PROFILE_LAMBDA_URL` |
191
- | `IFraudPreventionEngineApi` | Motor antifraude | `FRAUD_PREVENTION_LAMBDA_URL` |
192
- | `IBlackListApi` | Listas negras | `BLACKLIST_LAMBDA_URL` |
193
- | `ITransactionAlertApi` | Alertas de transacciones | `RISK_PROFILE_LAMBDA_URL` |
194
-
195
- ### Servicios de Onboarding
196
-
197
- | Interface | Descripción | Variable de Entorno |
198
- |-----------|-------------|---------------------|
199
- | `IOnboardingApi` | Onboarding de usuarios | `ONBOARDING_LAMBDA_URL` |
200
- | `IOnboardingBusinessApi` | Onboarding de negocios | `ONBOARDING_BUSINESS_LAMBDA_URL` |
201
- | `ICnbvApi` | Integración CNBV | `CNBV_BUSINESS_LAMBDA_URL` |
202
-
203
- ### Servicios de Comunicación
204
-
205
- | Interface | Descripción | Variable de Entorno |
206
- |-----------|-------------|---------------------|
207
- | `IFiadoMessagesApi` | Mensajería interna | `FIADO_MESSAGES_LAMBDA_URL` |
208
- | `IFirebaseConnectorApi` | Push notifications | `FIREBASE_CONNECTOR_LAMBDA_URL` |
209
- | `IZendeskApi` | Integración Zendesk | `ZENDESK_LAMBDA_URL` |
210
-
211
- ### Servicios de Negocio
212
-
213
- | Interface | Descripción | Variable de Entorno |
214
- |-----------|-------------|---------------------|
215
- | `IActivityApi` | Actividades de negocio | `ACTIVITY_BUSINESS_LAMBDA_URL` |
216
- | `IServiceApi` | Servicios de negocio | `SERVICE_BUSINESS_LAMBDA_URL` |
217
- | `IPriceListApi` | Listas de precios | `PRICELIST_BUSINESS_LAMBDA_URL` |
218
- | `IPayrollApi` | Nómina | `PAYROLL_BUSINESS_LAMBDA_URL` |
219
- | `IOrderCollectorApi` | Órdenes de cobranza | `ORDER_COLLECTOR_LAMBDA_URL` |
220
-
221
- ### Servicios Auxiliares
222
-
223
- | Interface | Descripción | Variable de Entorno |
224
- |-----------|-------------|---------------------|
225
- | `IAddressApi` | Direcciones | `ADDRESS_LAMBDA_URL` |
226
- | `IContactInformationApi` | Información de contacto | `CONTACT_INFORMATION_LAMBDA_URL` |
227
- | `IDeviceApi` | Dispositivos | `DEVICE_LAMBDA_URL` |
228
- | `IGroupApi` | Grupos | `GROUP_LAMBDA_URL` |
229
- | `IP2pContactApi` | Contactos P2P | `P2P_CONTACT_LAMBDA_URL` |
230
- | `IExchangeRatesApi` | Tipos de cambio | `EXCHANGE_RATES_LAMBDA_URL` |
231
- | `IProductCatalogApi` | Catálogo de productos | `PRODUCT_CATALOG_LAMBDA_URL` |
232
- | `IContractGeneratorApi` | Generador de contratos | `CONTRACT_GENERATOR_LAMBDA_URL` |
233
- | `IDocumentImageProcessorApi` | Procesador de imágenes | `DOCUMENT_IMAGE_PROCESSOR_LAMBDA_URL` |
234
- | `ILegalDocumentApi` | Documentos legales | `LEGAL_DOCUMENT_LAMBDA_URL` |
235
- | `IObservationsApi` | Observaciones | `OBSERVATIONS_LAMBDA_URL` |
236
- | `IDirectoriesApi` | Directorios múltiples | `DIRECTORIES_LAMBDA_URL` |
237
- | `IDirectorySettingApi` | Configuración de directorio | `DIRECTORY_SETTING_LAMBDA_URL` |
238
- | `IAppSelectionDataApi` | Datos de selección de app | `APP_SELECTION_DATA_LAMBDA_URL` |
239
- | `IReferralBusinessApi` | Referidos | `REFERRAL_BUSINESS_LAMBDA_URL` |
240
- | `IEventHistoryApi` | Historial de eventos | `EVENT_HISTORY_LAMBDA_URL` |
241
- | `IReportProcessorBusinessApi` | Procesador de reportes | `REPORT_PROCESSOR_LAMBDA_URL` |
242
- | `IPeopleBusinessApi` | Gestión de personas | `PEOPLE_BUSINESS_LAMBDA_URL` |
243
-
244
- ### Integraciones Externas
245
-
246
- | Interface | Descripción | Variable de Entorno |
247
- |-----------|-------------|---------------------|
248
- | `ITernApi` | Integración Tern | `TERN_LAMBDA_URL` |
249
- | `IBBVARstApi` | Integración BBVA RST | `BBVA_RST_LAMBDA_URL` |
250
- | `IEstafetaApi` | Integración Estafeta | `ESTAFETA_LAMBDA_URL` |
251
- | `ICognitoConnectorApi` | Conector Cognito | `COGNITO_CONNECTOR_LAMBDA_URL` |
252
- | `ICognitoV2Api` | Cognito V2 | `COGNITO_CONNECTOR_LAMBDA_URL` |
253
- | `ISTPAccountApi` | Cuentas STP | `STP_ACCOUNT_LAMBDA_URL` |
254
-
255
- ---
256
-
257
- ## Publishers (Colas SQS)
258
-
259
- Para comunicación asíncrona, la librería provee publishers que envían mensajes a colas SQS:
260
-
261
- | Interface | Descripción | Variable de Entorno (Queue) |
262
- |-----------|-------------|----------------------------|
263
- | `INotificationMessagesPublisher` | Notificaciones push/email/sms | `NOTIFICATION_MESSAGES_QUEUE` |
264
- | `INotificationWSMessagesPublisher` | Notificaciones WebSocket | `NOTIFICATION_WS_QUEUE` |
265
- | `ISessionActivityPublisher` | Actividad de sesión | `SESSION_ACTIVITY_QUEUE` |
266
- | `ITransactionPublisher` | Eventos de transacción | `TRANSACTION_QUEUE` |
267
- | `IActivityPublisher` | Eventos de actividad | `ACTIVITY_QUEUE` |
268
- | `ITransactionAlarmPublisher` | Alarmas de transacción | `TRANSACTION_ALARM_QUEUE` |
269
- | `IPublisher` | Publisher genérico | Configurable |
270
-
271
- ### Ejemplo de Publisher
272
-
273
- ```typescript
274
- import { inject, injectable } from "inversify";
275
- import { INotificationMessagesPublisher } from "@fiado/api-invoker";
276
- import { NotificationQueueMessageRequest } from "@fiado/type-kit";
277
-
278
- @injectable()
279
- export class NotificationService {
280
- constructor(
281
- @inject("INotificationMessagesPublisher")
282
- private notificationPublisher: INotificationMessagesPublisher
283
- ) {}
284
-
285
- async sendPushNotification(userId: string, message: string): Promise<void> {
286
- const notification: NotificationQueueMessageRequest = {
287
- userId,
288
- type: "PUSH",
289
- message,
290
- timestamp: new Date().toISOString()
291
- };
292
-
293
- await this.notificationPublisher.publish(notification);
294
- }
295
- }
296
- ```
297
-
298
- ---
299
-
300
- ## Uso en Proyectos
301
-
302
- ### Ejemplo: Consultar Directorio
303
-
304
- ```typescript
305
- import { inject, injectable } from "inversify";
306
- import { IDirectoryApi } from "@fiado/api-invoker";
307
- import { log } from "@fiado/logger";
308
-
309
- @injectable()
310
- export class UserService {
311
- constructor(
312
- @inject("IDirectoryApi") private directoryApi: IDirectoryApi
313
- ) {}
314
-
315
- async getUsersByIds(directoryIds: string[]): Promise<any[]> {
316
- try {
317
- const response = await this.directoryApi.getByIds(directoryIds);
318
- log.info("Directories fetched successfully", { count: response.length });
319
- return response;
320
- } catch (error) {
321
- log.error("Error fetching directories", error);
322
- throw error;
323
- }
324
- }
325
-
326
- async getUserByPhone(phoneNumber: string): Promise<any> {
327
- return await this.directoryApi.getByPhoneNumber(phoneNumber);
328
- }
329
- }
330
- ```
331
-
332
- ### Ejemplo: Procesar Transacción
333
-
334
- ```typescript
335
- import { inject, injectable } from "inversify";
336
- import { ITransactionApi, ITransactionPublisher } from "@fiado/api-invoker";
337
-
338
- @injectable()
339
- export class PaymentManager {
340
- constructor(
341
- @inject("ITransactionApi") private transactionApi: ITransactionApi,
342
- @inject("ITransactionPublisher") private transactionPublisher: ITransactionPublisher
343
- ) {}
344
-
345
- async processPayment(paymentData: any): Promise<void> {
346
- // 1. Crear transacción via API síncrona
347
- const transaction = await this.transactionApi.create(paymentData);
348
-
349
- // 2. Publicar evento para procesamiento asíncrono
350
- await this.transactionPublisher.publish({
351
- transactionId: transaction.id,
352
- event: "PAYMENT_INITIATED",
353
- timestamp: new Date().toISOString()
354
- });
355
- }
356
- }
357
- ```
358
-
359
- ### Ejemplo: Verificación de Identidad
360
-
361
- ```typescript
362
- import { inject, injectable } from "inversify";
363
- import { IIdentityApi, IRiskProfileApi } from "@fiado/api-invoker";
364
-
365
- @injectable()
366
- export class KYCService {
367
- constructor(
368
- @inject("IIdentityApi") private identityApi: IIdentityApi,
369
- @inject("IRiskProfileApi") private riskProfileApi: IRiskProfileApi
370
- ) {}
371
-
372
- async verifyUser(directoryId: string, documents: any): Promise<boolean> {
373
- // Verificar identidad
374
- const identityResult = await this.identityApi.verify(directoryId, documents);
375
-
376
- // Evaluar perfil de riesgo
377
- const riskProfile = await this.riskProfileApi.evaluate(directoryId);
378
-
379
- return identityResult.verified && riskProfile.score < 0.5;
380
- }
381
- }
382
- ```
383
-
384
- ---
385
-
386
- ## Variables de Entorno
387
-
388
- Cada cliente API requiere una variable de entorno con la URL base del Lambda destino. El formato estándar es:
389
-
390
- ```
391
- {SERVICE_NAME}_LAMBDA_URL=https://{api-id}.execute-api.{region}.amazonaws.com/v1/
392
- ```
393
-
394
- ### Configuración en template.yml
395
-
396
- ```yaml
397
- Environment:
398
- Variables:
399
- DIRECTORY_LAMBDA_URL: !Sub "{{resolve:ssm:fiado-directory-lambda}}"
400
- IDENTITY_LAMBDA_URL: !Sub "{{resolve:ssm:fiado-identity-lambda}}"
401
- TRANSACTION_LAMBDA_URL: !Sub "{{resolve:ssm:fiado-transaction-lambda}}"
402
- # ... otras URLs
403
-
404
- # Colas SQS
405
- NOTIFICATION_MESSAGES_QUEUE: !ImportValue SqsNotificationMessagesQueueUrl
406
- SESSION_ACTIVITY_QUEUE: !ImportValue SqsSessionActivityQueueUrl
407
- ```
408
-
409
- ### Resolución de URLs
410
-
411
- Las URLs se almacenan en **SSM Parameter Store** y se resuelven en tiempo de despliegue. El pipeline de CI/CD registra automáticamente la URL de cada Lambda después del deploy.
412
-
413
- ---
414
-
415
- ## Estructura del Proyecto
416
-
417
- ```
418
- src/
419
- ├── index.ts # Exportaciones públicas
420
- ├── container.config.ts # ContainerModule con todos los bindings
421
- ├── utils/ # Utilidades compartidas
422
- │ └── InvokerUtils.ts
423
-
424
- ├── directory/ # Ejemplo de estructura de módulo
425
- │ ├── index.ts # Re-exportaciones del módulo
426
- │ ├── DirectoryApi.ts # Implementación del cliente
427
- │ └── interfaces/
428
- │ └── IDirectoryApi.ts # Interface del cliente
429
-
430
- ├── transaction/ # Módulo con API y Publisher
431
- │ ├── index.ts
432
- │ ├── api/
433
- │ │ ├── TransactionApi.ts
434
- │ │ └── ITransactionApi.ts
435
- │ └── queue/
436
- │ ├── TransactionPublisher.ts
437
- │ └── ITransactionPublisher.ts
438
-
439
- ├── notificationMessages/ # Módulo solo Publisher
440
- │ ├── index.ts
441
- │ └── queue/
442
- │ ├── NotificationMessagePublisher.ts
443
- │ └── interfaces/
444
- │ └── INotificationMessagesPublisher.ts
445
-
446
- └── [60+ módulos adicionales...]
447
- ```
448
-
449
- ### Estructura de un Módulo API
450
-
451
- ```
452
- {service-name}/
453
- ├── index.ts # export * from './interfaces/I{Service}Api';
454
- │ # export * from './{Service}Api';
455
- ├── {Service}Api.ts # Implementación @injectable()
456
- └── interfaces/
457
- └── I{Service}Api.ts # Interface con JSDoc
458
- ```
459
-
460
- ### Estructura de un Módulo con Queue
461
-
462
- ```
463
- {service-name}/
464
- ├── index.ts
465
- ├── api/
466
- │ ├── {Service}Api.ts
467
- │ └── I{Service}Api.ts
468
- └── queue/
469
- ├── {Service}Publisher.ts
470
- └── interfaces/
471
- └── I{Service}Publisher.ts
472
- ```
473
-
474
- ---
475
-
476
- ## Convenciones de Desarrollo
477
-
478
- ### Nomenclatura
479
-
480
- | Elemento | Patrón | Ejemplo |
481
- |----------|--------|---------|
482
- | **Carpeta de módulo** | `kebab-case` | `account-fiadoinc/` |
483
- | **Interface API** | `I{Service}Api` | `IDirectoryApi` |
484
- | **Implementación API** | `{Service}Api` | `DirectoryApi` |
485
- | **Interface Publisher** | `I{Service}Publisher` | `ITransactionPublisher` |
486
- | **Implementación Publisher** | `{Service}Publisher` | `TransactionPublisher` |
487
-
488
- ### Patrón de Implementación API
489
-
490
- ```typescript
491
- import dotenv from 'dotenv';
492
- import { inject, injectable } from "inversify";
493
- import { IHttpRequest } from "@fiado/http-client";
494
- import { I{Service}Api } from "./interfaces/I{Service}Api";
495
- dotenv.config();
496
-
497
- @injectable()
498
- export class {Service}Api implements I{Service}Api {
499
-
500
- private readonly baseUrl = process.env.{SERVICE}_LAMBDA_URL || "";
501
-
502
- constructor(
503
- @inject("IHttpRequest") private httpRequest: IHttpRequest
504
- ) {}
505
-
506
- public async getById(id: string): Promise<any> {
507
- const url = `${this.baseUrl}?id=${id}`;
508
- const operationName = "getById";
509
-
510
- return await this.httpRequest.get(url, null, {
511
- 'operationName': operationName
512
- });
513
- }
514
- }
515
- ```
516
-
517
- ### Patrón de Implementación Publisher
518
-
519
- ```typescript
520
- import { SendMessageCommand, SQSClient } from "@aws-sdk/client-sqs";
521
- import { inject, injectable } from "inversify";
522
- import { I{Service}Publisher } from "./interfaces/I{Service}Publisher";
523
-
524
- @injectable()
525
- export class {Service}Publisher implements I{Service}Publisher {
526
-
527
- private readonly queueUrl = process.env.{SERVICE}_QUEUE;
528
-
529
- async publish(message: any): Promise<void> {
530
- const client = new SQSClient();
531
- const command = new SendMessageCommand({
532
- QueueUrl: this.queueUrl,
533
- MessageBody: JSON.stringify(message)
534
- });
535
- await client.send(command);
536
- }
537
- }
538
- ```
539
-
540
- ### Header operationName
541
-
542
- Todas las llamadas HTTP incluyen el header `operationName` que permite:
543
- - Trazabilidad en logs
544
- - Métricas por operación
545
- - Debugging en X-Ray
546
-
547
- ---
548
-
549
- ## Dependencias
550
-
551
- ### Runtime
552
-
553
- | Dependencia | Versión | Propósito |
554
- |-------------|---------|-----------|
555
- | `@aws-sdk/client-sqs` | ^3.919.0 | Cliente SQS para publishers |
556
- | `@fiado/gateway-adapter` | ^1.1.50 | Tipos de respuesta API |
557
- | `@fiado/http-client` | ^1.0.7 | Cliente HTTP base |
558
- | `@fiado/logger` | ^1.0.3 | Logging estructurado |
559
- | `@fiado/type-kit` | ^2.1.28 | DTOs y tipos compartidos |
560
- | `inversify` | ^6.2.2 | Inyección de dependencias |
561
- | `reflect-metadata` | ^0.2.2 | Metadatos para decoradores |
562
- | `dotenv` | ^16.4.7 | Variables de entorno |
563
-
564
- ### Desarrollo
565
-
566
- | Dependencia | Versión | Propósito |
567
- |-------------|---------|-----------|
568
- | `@types/node` | ^20.17.24 | Tipos de Node.js |
569
- | `typescript` | (peer) | Compilador TypeScript |
570
-
571
- ---
572
-
573
- ## Compilación y Publicación
574
-
575
- ### Build
576
-
577
- ```bash
578
- npm run build
579
- ```
580
-
581
- Genera archivos `.js` y `.d.ts` en el directorio `bin/`.
582
-
583
- ### Publicación
584
-
585
- ```bash
586
- npm version patch|minor|major
587
- npm publish
588
- ```
589
-
590
- La librería se publica en el registry npm privado de Fiado configurado en `.npmrc`.
591
-
592
- ---
593
-
594
- <div align="center">
595
-
596
- **Fiado Inc.** | @fiado/api-invoker v1.5.34
597
-
598
- </div>
599
-
600
-
1
+ <div align="center">
2
+
3
+ # 🔗 Fiado API Invoker
4
+
5
+ ### Librería de Comunicación Inter-Servicios para Microservicios Lambda
6
+
7
+ [![npm](https://img.shields.io/badge/npm-@fiado/api--invoker-CB3837?logo=npm&logoColor=white)](https://www.npmjs.com/)
8
+ [![TypeScript](https://img.shields.io/badge/TypeScript-5.x-3178C6?logo=typescript&logoColor=white)](https://www.typescriptlang.org/)
9
+ [![AWS Lambda](https://img.shields.io/badge/AWS-Lambda-FF9900?logo=aws-lambda&logoColor=white)](https://aws.amazon.com/lambda/)
10
+ [![InversifyJS](https://img.shields.io/badge/InversifyJS-6.x-1E88E5)](https://inversify.io/)
11
+
12
+ </div>
13
+
14
+ ---
15
+
16
+ ## Tabla de Contenidos
17
+
18
+ - [Descripción General](#descripción-general)
19
+ - [Arquitectura](#arquitectura)
20
+ - [Instalación](#instalación)
21
+ - [Configuración](#configuración)
22
+ - [APIs Disponibles](#apis-disponibles)
23
+ - [Publishers (Colas SQS)](#publishers-colas-sqs)
24
+ - [Uso en Proyectos](#uso-en-proyectos)
25
+ - [Variables de Entorno](#variables-de-entorno)
26
+ - [Estructura del Proyecto](#estructura-del-proyecto)
27
+ - [Convenciones de Desarrollo](#convenciones-de-desarrollo)
28
+ - [Dependencias](#dependencias)
29
+
30
+ ---
31
+
32
+ ## Descripción General
33
+
34
+ `@fiado/api-invoker` es una librería empresarial que actúa como **puente de comunicación entre microservicios Lambda** dentro del ecosistema Fiado. Proporciona:
35
+
36
+ - **Clientes HTTP tipados** para invocar APIs privadas de otros Lambdas
37
+ - **Publishers SQS** para comunicación asíncrona mediante colas
38
+ - **Inyección de dependencias** integrada con InversifyJS
39
+ - **Abstracción de complejidad** de configuración y manejo de errores
40
+
41
+ ### Propósito
42
+
43
+ En una arquitectura de microservicios, cada Lambda expone una API privada accesible únicamente desde la VPC. Esta librería encapsula:
44
+
45
+ 1. La construcción de URLs base desde variables de entorno
46
+ 2. El manejo de headers y operaciones HTTP
47
+ 3. La serialización/deserialización de payloads
48
+ 4. La publicación de mensajes a colas SQS
49
+
50
+ ---
51
+
52
+ ## Arquitectura
53
+
54
+ ```
55
+ ┌─────────────────────────────────────────────────────────────────────────┐
56
+ │ LAMBDA CONSUMIDOR │
57
+ │ │
58
+ │ ┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐ │
59
+ │ │ Manager/ │───▶│ @fiado/ │───▶│ @fiado/ │ │
60
+ │ │ Service │ │ api-invoker │ │ http-client │ │
61
+ │ └──────────────────┘ └──────────────────┘ └──────────────────┘ │
62
+ │ │ │ │
63
+ └───────────────────────────────────┼────────────────────────┼────────────┘
64
+ │ │
65
+ ┌───────────────┴───────────────┐ │
66
+ ▼ ▼ ▼
67
+ ┌──────────────┐ ┌──────────────────┐
68
+ │ AWS SQS │ │ API Gateway │
69
+ │ (Queues) │ │ (Private VPC) │
70
+ └──────────────┘ └──────────────────┘
71
+ │ │
72
+ ▼ ▼
73
+ ┌──────────────┐ ┌──────────────────┐
74
+ │ Lambda │ │ Lambda │
75
+ │ Subscriber │ │ Target │
76
+ └──────────────┘ └──────────────────┘
77
+ ```
78
+
79
+ ### Patrones de Comunicación
80
+
81
+ | Patrón | Implementación | Uso |
82
+ |--------|----------------|-----|
83
+ | **Síncrono** | HTTP via API Gateway privado | Consultas, operaciones CRUD |
84
+ | **Asíncrono** | SQS Publishers | Eventos, notificaciones, procesos batch |
85
+
86
+ ---
87
+
88
+ ## Instalación
89
+
90
+ ```bash
91
+ npm install @fiado/api-invoker @fiado/http-client
92
+ ```
93
+
94
+ ### Peer Dependencies
95
+
96
+ La librería requiere las siguientes dependencias en el proyecto consumidor:
97
+
98
+ ```json
99
+ {
100
+ "@fiado/http-client": "^1.0.7",
101
+ "@fiado/logger": "^1.0.3",
102
+ "@fiado/type-kit": "^2.1.28",
103
+ "inversify": "^6.2.2",
104
+ "reflect-metadata": "^0.2.2"
105
+ }
106
+ ```
107
+
108
+ ---
109
+
110
+ ## Configuración
111
+
112
+ ### Registro en el Contenedor IoC
113
+
114
+ La librería exporta un `ContainerModule` de InversifyJS que registra automáticamente todos los clientes API y publishers:
115
+
116
+ ```typescript
117
+ import { Container } from "inversify";
118
+ import { IHttpRequest, AxiosHttpRequest } from "@fiado/http-client";
119
+ import { apiInvokerBindings } from "@fiado/api-invoker";
120
+
121
+ const container = new Container();
122
+
123
+ // 1. Cargar bindings de api-invoker (registra todos los clientes)
124
+ container.load(apiInvokerBindings);
125
+
126
+ // 2. Registrar el cliente HTTP (requerido por los clientes API)
127
+ container.bind<IHttpRequest>("IHttpRequest").to(AxiosHttpRequest);
128
+
129
+ export { container };
130
+ ```
131
+
132
+ ### Importación de Interfaces
133
+
134
+ ```typescript
135
+ // Importar interfaces específicas
136
+ import {
137
+ IDirectoryApi,
138
+ IIdentityApi,
139
+ ITransactionApi,
140
+ INotificationMessagesPublisher
141
+ } from "@fiado/api-invoker";
142
+ ```
143
+
144
+ ---
145
+
146
+ ## APIs Disponibles
147
+
148
+ La librería proporciona clientes para **60+ microservicios** del ecosistema Fiado:
149
+
150
+ ### Servicios Core
151
+
152
+ | Interface | Descripción | Variable de Entorno |
153
+ |-----------|-------------|---------------------|
154
+ | `IDirectoryApi` | Gestión de directorios de usuarios | `DIRECTORY_LAMBDA_URL` |
155
+ | `IIdentityApi` | Verificación de identidad | `IDENTITY_LAMBDA_URL` |
156
+ | `IAuthenticationApi` | Autenticación y tokens | `AUTHENTICATION_LAMBDA_URL` |
157
+ | `ITransactionApi` | Procesamiento de transacciones | `TRANSACTION_LAMBDA_URL` |
158
+
159
+ ### Servicios de Cuenta
160
+
161
+ | Interface | Descripción | Variable de Entorno |
162
+ |-----------|-------------|---------------------|
163
+ | `IAccountFiadoIncApi` | Cuentas Fiado Inc | `ACCOUNT_FIADOINC_LAMBDA_URL` |
164
+ | `IAccountFiadoSAApi` | Cuentas Fiado SA | `ACCOUNT_FIADOSA_LAMBDA_URL` |
165
+ | `IAccountPagoConfiadoApi` | Cuentas PagoConfiado | `ACCOUNT_PAGOCONFIADO_LAMBDA_URL` |
166
+ | `IAccountBeneficiaryApi` | Beneficiarios de cuentas | `ACCOUNT_BENEFICIARY_LAMBDA_URL` |
167
+ | `IBankAccountApi` | Cuentas bancarias | `BANK_ACCOUNT_LAMBDA_URL` |
168
+
169
+ ### Servicios de Pago
170
+
171
+ | Interface | Descripción | Variable de Entorno |
172
+ |-----------|-------------|---------------------|
173
+ | `IStpSpeiApi` | Transferencias SPEI | `STP_SPEI_LAMBDA_URL` |
174
+ | `IStpServicePaymentApi` | Pagos de servicios STP | `STP_SERVICE_PAYMENT_LAMBDA_URL` |
175
+ | `ICentralPaymentsConnectorApi` | Conector de pagos central | `CENTRAL_PAYMENTS_LAMBDA_URL` |
176
+ | `ICollectorApi` | Cobranza | `COLLECTOR_LAMBDA_URL` |
177
+
178
+ ### Servicios de Tarjeta
179
+
180
+ | Interface | Descripción | Variable de Entorno |
181
+ |-----------|-------------|---------------------|
182
+ | `ICardApi` | Gestión de tarjetas | `CARD_LAMBDA_URL` |
183
+ | `IPomeloApi` | Integración Pomelo | `POMELO_LAMBDA_URL` |
184
+ | `IPomeloProcessorApi` | Procesador Pomelo | `POMELO_PROCESSOR_LAMBDA_URL` |
185
+
186
+ ### Servicios de Riesgo y Fraude
187
+
188
+ | Interface | Descripción | Variable de Entorno |
189
+ |-----------|-------------|---------------------|
190
+ | `IRiskProfileApi` | Perfiles de riesgo | `RISK_PROFILE_LAMBDA_URL` |
191
+ | `IFraudPreventionEngineApi` | Motor antifraude | `FRAUD_PREVENTION_LAMBDA_URL` |
192
+ | `IBlackListApi` | Listas negras | `BLACKLIST_LAMBDA_URL` |
193
+ | `ITransactionAlertApi` | Alertas de transacciones | `RISK_PROFILE_LAMBDA_URL` |
194
+
195
+ ### Servicios de Onboarding
196
+
197
+ | Interface | Descripción | Variable de Entorno |
198
+ |-----------|-------------|---------------------|
199
+ | `IOnboardingApi` | Onboarding de usuarios | `ONBOARDING_LAMBDA_URL` |
200
+ | `IOnboardingBusinessApi` | Onboarding de negocios | `ONBOARDING_BUSINESS_LAMBDA_URL` |
201
+ | `ICnbvApi` | Integración CNBV | `CNBV_BUSINESS_LAMBDA_URL` |
202
+
203
+ ### Servicios de Comunicación
204
+
205
+ | Interface | Descripción | Variable de Entorno |
206
+ |-----------|-------------|---------------------|
207
+ | `IFiadoMessagesApi` | Mensajería interna | `FIADO_MESSAGES_LAMBDA_URL` |
208
+ | `IFirebaseConnectorApi` | Push notifications | `FIREBASE_CONNECTOR_LAMBDA_URL` |
209
+ | `IZendeskApi` | Integración Zendesk | `ZENDESK_LAMBDA_URL` |
210
+
211
+ ### Servicios de Negocio
212
+
213
+ | Interface | Descripción | Variable de Entorno |
214
+ |-----------|-------------|---------------------|
215
+ | `IActivityApi` | Actividades de negocio | `ACTIVITY_BUSINESS_LAMBDA_URL` |
216
+ | `IServiceApi` | Servicios de negocio | `SERVICE_BUSINESS_LAMBDA_URL` |
217
+ | `IPriceListApi` | Listas de precios | `PRICELIST_BUSINESS_LAMBDA_URL` |
218
+ | `IPayrollApi` | Nómina | `PAYROLL_BUSINESS_LAMBDA_URL` |
219
+ | `IOrderCollectorApi` | Órdenes de cobranza | `ORDER_COLLECTOR_LAMBDA_URL` |
220
+
221
+ ### Servicios Auxiliares
222
+
223
+ | Interface | Descripción | Variable de Entorno |
224
+ |-----------|-------------|---------------------|
225
+ | `IAddressApi` | Direcciones | `ADDRESS_LAMBDA_URL` |
226
+ | `IContactInformationApi` | Información de contacto | `CONTACT_INFORMATION_LAMBDA_URL` |
227
+ | `IDeviceApi` | Dispositivos | `DEVICE_LAMBDA_URL` |
228
+ | `IGroupApi` | Grupos | `GROUP_LAMBDA_URL` |
229
+ | `IP2pContactApi` | Contactos P2P | `P2P_CONTACT_LAMBDA_URL` |
230
+ | `IExchangeRatesApi` | Tipos de cambio | `EXCHANGE_RATES_LAMBDA_URL` |
231
+ | `IProductCatalogApi` | Catálogo de productos | `PRODUCT_CATALOG_LAMBDA_URL` |
232
+ | `IContractGeneratorApi` | Generador de contratos | `CONTRACT_GENERATOR_LAMBDA_URL` |
233
+ | `IDocumentImageProcessorApi` | Procesador de imágenes | `DOCUMENT_IMAGE_PROCESSOR_LAMBDA_URL` |
234
+ | `ILegalDocumentApi` | Documentos legales | `LEGAL_DOCUMENT_LAMBDA_URL` |
235
+ | `IObservationsApi` | Observaciones | `OBSERVATIONS_LAMBDA_URL` |
236
+ | `IDirectoriesApi` | Directorios múltiples | `DIRECTORIES_LAMBDA_URL` |
237
+ | `IDirectorySettingApi` | Configuración de directorio | `DIRECTORY_SETTING_LAMBDA_URL` |
238
+ | `IAppSelectionDataApi` | Datos de selección de app | `APP_SELECTION_DATA_LAMBDA_URL` |
239
+ | `IReferralBusinessApi` | Referidos | `REFERRAL_BUSINESS_LAMBDA_URL` |
240
+ | `IEventHistoryApi` | Historial de eventos | `EVENT_HISTORY_LAMBDA_URL` |
241
+ | `IReportProcessorBusinessApi` | Procesador de reportes | `REPORT_PROCESSOR_LAMBDA_URL` |
242
+ | `IPeopleBusinessApi` | Gestión de personas | `PEOPLE_BUSINESS_LAMBDA_URL` |
243
+
244
+ ### Integraciones Externas
245
+
246
+ | Interface | Descripción | Variable de Entorno |
247
+ |-----------|-------------|---------------------|
248
+ | `ITernApi` | Integración Tern | `TERN_LAMBDA_URL` |
249
+ | `IBBVARstApi` | Integración BBVA RST | `BBVA_RST_LAMBDA_URL` |
250
+ | `IEstafetaApi` | Integración Estafeta | `ESTAFETA_LAMBDA_URL` |
251
+ | `ICognitoConnectorApi` | Conector Cognito | `COGNITO_CONNECTOR_LAMBDA_URL` |
252
+ | `ICognitoV2Api` | Cognito V2 | `COGNITO_CONNECTOR_LAMBDA_URL` |
253
+ | `ISTPAccountApi` | Cuentas STP | `STP_ACCOUNT_LAMBDA_URL` |
254
+
255
+ ---
256
+
257
+ ## Publishers (Colas SQS)
258
+
259
+ Para comunicación asíncrona, la librería provee publishers que envían mensajes a colas SQS:
260
+
261
+ | Interface | Descripción | Variable de Entorno (Queue) |
262
+ |-----------|-------------|----------------------------|
263
+ | `INotificationMessagesPublisher` | Notificaciones push/email/sms | `NOTIFICATION_MESSAGES_QUEUE` |
264
+ | `INotificationWSMessagesPublisher` | Notificaciones WebSocket | `NOTIFICATION_WS_QUEUE` |
265
+ | `ISessionActivityPublisher` | Actividad de sesión | `SESSION_ACTIVITY_QUEUE` |
266
+ | `ITransactionPublisher` | Eventos de transacción | `TRANSACTION_QUEUE` |
267
+ | `IActivityPublisher` | Eventos de actividad | `ACTIVITY_QUEUE` |
268
+ | `ITransactionAlarmPublisher` | Alarmas de transacción | `TRANSACTION_ALARM_QUEUE` |
269
+ | `IPublisher` | Publisher genérico | Configurable |
270
+
271
+ ### Ejemplo de Publisher
272
+
273
+ ```typescript
274
+ import { inject, injectable } from "inversify";
275
+ import { INotificationMessagesPublisher } from "@fiado/api-invoker";
276
+ import { NotificationQueueMessageRequest } from "@fiado/type-kit";
277
+
278
+ @injectable()
279
+ export class NotificationService {
280
+ constructor(
281
+ @inject("INotificationMessagesPublisher")
282
+ private notificationPublisher: INotificationMessagesPublisher
283
+ ) {}
284
+
285
+ async sendPushNotification(userId: string, message: string): Promise<void> {
286
+ const notification: NotificationQueueMessageRequest = {
287
+ userId,
288
+ type: "PUSH",
289
+ message,
290
+ timestamp: new Date().toISOString()
291
+ };
292
+
293
+ await this.notificationPublisher.publish(notification);
294
+ }
295
+ }
296
+ ```
297
+
298
+ ---
299
+
300
+ ## Uso en Proyectos
301
+
302
+ ### Ejemplo: Consultar Directorio
303
+
304
+ ```typescript
305
+ import { inject, injectable } from "inversify";
306
+ import { IDirectoryApi } from "@fiado/api-invoker";
307
+ import { log } from "@fiado/logger";
308
+
309
+ @injectable()
310
+ export class UserService {
311
+ constructor(
312
+ @inject("IDirectoryApi") private directoryApi: IDirectoryApi
313
+ ) {}
314
+
315
+ async getUsersByIds(directoryIds: string[]): Promise<any[]> {
316
+ try {
317
+ const response = await this.directoryApi.getByIds(directoryIds);
318
+ log.info("Directories fetched successfully", { count: response.length });
319
+ return response;
320
+ } catch (error) {
321
+ log.error("Error fetching directories", error);
322
+ throw error;
323
+ }
324
+ }
325
+
326
+ async getUserByPhone(phoneNumber: string): Promise<any> {
327
+ return await this.directoryApi.getByPhoneNumber(phoneNumber);
328
+ }
329
+ }
330
+ ```
331
+
332
+ ### Ejemplo: Procesar Transacción
333
+
334
+ ```typescript
335
+ import { inject, injectable } from "inversify";
336
+ import { ITransactionApi, ITransactionPublisher } from "@fiado/api-invoker";
337
+
338
+ @injectable()
339
+ export class PaymentManager {
340
+ constructor(
341
+ @inject("ITransactionApi") private transactionApi: ITransactionApi,
342
+ @inject("ITransactionPublisher") private transactionPublisher: ITransactionPublisher
343
+ ) {}
344
+
345
+ async processPayment(paymentData: any): Promise<void> {
346
+ // 1. Crear transacción via API síncrona
347
+ const transaction = await this.transactionApi.create(paymentData);
348
+
349
+ // 2. Publicar evento para procesamiento asíncrono
350
+ await this.transactionPublisher.publish({
351
+ transactionId: transaction.id,
352
+ event: "PAYMENT_INITIATED",
353
+ timestamp: new Date().toISOString()
354
+ });
355
+ }
356
+ }
357
+ ```
358
+
359
+ ### Ejemplo: Verificación de Identidad
360
+
361
+ ```typescript
362
+ import { inject, injectable } from "inversify";
363
+ import { IIdentityApi, IRiskProfileApi } from "@fiado/api-invoker";
364
+
365
+ @injectable()
366
+ export class KYCService {
367
+ constructor(
368
+ @inject("IIdentityApi") private identityApi: IIdentityApi,
369
+ @inject("IRiskProfileApi") private riskProfileApi: IRiskProfileApi
370
+ ) {}
371
+
372
+ async verifyUser(directoryId: string, documents: any): Promise<boolean> {
373
+ // Verificar identidad
374
+ const identityResult = await this.identityApi.verify(directoryId, documents);
375
+
376
+ // Evaluar perfil de riesgo
377
+ const riskProfile = await this.riskProfileApi.evaluate(directoryId);
378
+
379
+ return identityResult.verified && riskProfile.score < 0.5;
380
+ }
381
+ }
382
+ ```
383
+
384
+ ---
385
+
386
+ ## Variables de Entorno
387
+
388
+ Cada cliente API requiere una variable de entorno con la URL base del Lambda destino. El formato estándar es:
389
+
390
+ ```
391
+ {SERVICE_NAME}_LAMBDA_URL=https://{api-id}.execute-api.{region}.amazonaws.com/v1/
392
+ ```
393
+
394
+ ### Configuración en template.yml
395
+
396
+ ```yaml
397
+ Environment:
398
+ Variables:
399
+ DIRECTORY_LAMBDA_URL: !Sub "{{resolve:ssm:fiado-directory-lambda}}"
400
+ IDENTITY_LAMBDA_URL: !Sub "{{resolve:ssm:fiado-identity-lambda}}"
401
+ TRANSACTION_LAMBDA_URL: !Sub "{{resolve:ssm:fiado-transaction-lambda}}"
402
+ # ... otras URLs
403
+
404
+ # Colas SQS
405
+ NOTIFICATION_MESSAGES_QUEUE: !ImportValue SqsNotificationMessagesQueueUrl
406
+ SESSION_ACTIVITY_QUEUE: !ImportValue SqsSessionActivityQueueUrl
407
+ ```
408
+
409
+ ### Resolución de URLs
410
+
411
+ Las URLs se almacenan en **SSM Parameter Store** y se resuelven en tiempo de despliegue. El pipeline de CI/CD registra automáticamente la URL de cada Lambda después del deploy.
412
+
413
+ ---
414
+
415
+ ## Estructura del Proyecto
416
+
417
+ ```
418
+ src/
419
+ ├── index.ts # Exportaciones públicas
420
+ ├── container.config.ts # ContainerModule con todos los bindings
421
+ ├── utils/ # Utilidades compartidas
422
+ │ └── InvokerUtils.ts
423
+
424
+ ├── directory/ # Ejemplo de estructura de módulo
425
+ │ ├── index.ts # Re-exportaciones del módulo
426
+ │ ├── DirectoryApi.ts # Implementación del cliente
427
+ │ └── interfaces/
428
+ │ └── IDirectoryApi.ts # Interface del cliente
429
+
430
+ ├── transaction/ # Módulo con API y Publisher
431
+ │ ├── index.ts
432
+ │ ├── api/
433
+ │ │ ├── TransactionApi.ts
434
+ │ │ └── ITransactionApi.ts
435
+ │ └── queue/
436
+ │ ├── TransactionPublisher.ts
437
+ │ └── ITransactionPublisher.ts
438
+
439
+ ├── notificationMessages/ # Módulo solo Publisher
440
+ │ ├── index.ts
441
+ │ └── queue/
442
+ │ ├── NotificationMessagePublisher.ts
443
+ │ └── interfaces/
444
+ │ └── INotificationMessagesPublisher.ts
445
+
446
+ └── [60+ módulos adicionales...]
447
+ ```
448
+
449
+ ### Estructura de un Módulo API
450
+
451
+ ```
452
+ {service-name}/
453
+ ├── index.ts # export * from './interfaces/I{Service}Api';
454
+ │ # export * from './{Service}Api';
455
+ ├── {Service}Api.ts # Implementación @injectable()
456
+ └── interfaces/
457
+ └── I{Service}Api.ts # Interface con JSDoc
458
+ ```
459
+
460
+ ### Estructura de un Módulo con Queue
461
+
462
+ ```
463
+ {service-name}/
464
+ ├── index.ts
465
+ ├── api/
466
+ │ ├── {Service}Api.ts
467
+ │ └── I{Service}Api.ts
468
+ └── queue/
469
+ ├── {Service}Publisher.ts
470
+ └── interfaces/
471
+ └── I{Service}Publisher.ts
472
+ ```
473
+
474
+ ---
475
+
476
+ ## Convenciones de Desarrollo
477
+
478
+ ### Nomenclatura
479
+
480
+ | Elemento | Patrón | Ejemplo |
481
+ |----------|--------|---------|
482
+ | **Carpeta de módulo** | `kebab-case` | `account-fiadoinc/` |
483
+ | **Interface API** | `I{Service}Api` | `IDirectoryApi` |
484
+ | **Implementación API** | `{Service}Api` | `DirectoryApi` |
485
+ | **Interface Publisher** | `I{Service}Publisher` | `ITransactionPublisher` |
486
+ | **Implementación Publisher** | `{Service}Publisher` | `TransactionPublisher` |
487
+
488
+ ### Patrón de Implementación API
489
+
490
+ ```typescript
491
+ import dotenv from 'dotenv';
492
+ import { inject, injectable } from "inversify";
493
+ import { IHttpRequest } from "@fiado/http-client";
494
+ import { I{Service}Api } from "./interfaces/I{Service}Api";
495
+ dotenv.config();
496
+
497
+ @injectable()
498
+ export class {Service}Api implements I{Service}Api {
499
+
500
+ private readonly baseUrl = process.env.{SERVICE}_LAMBDA_URL || "";
501
+
502
+ constructor(
503
+ @inject("IHttpRequest") private httpRequest: IHttpRequest
504
+ ) {}
505
+
506
+ public async getById(id: string): Promise<any> {
507
+ const url = `${this.baseUrl}?id=${id}`;
508
+ const operationName = "getById";
509
+
510
+ return await this.httpRequest.get(url, null, {
511
+ 'operationName': operationName
512
+ });
513
+ }
514
+ }
515
+ ```
516
+
517
+ ### Patrón de Implementación Publisher
518
+
519
+ ```typescript
520
+ import { SendMessageCommand, SQSClient } from "@aws-sdk/client-sqs";
521
+ import { inject, injectable } from "inversify";
522
+ import { I{Service}Publisher } from "./interfaces/I{Service}Publisher";
523
+
524
+ @injectable()
525
+ export class {Service}Publisher implements I{Service}Publisher {
526
+
527
+ private readonly queueUrl = process.env.{SERVICE}_QUEUE;
528
+
529
+ async publish(message: any): Promise<void> {
530
+ const client = new SQSClient();
531
+ const command = new SendMessageCommand({
532
+ QueueUrl: this.queueUrl,
533
+ MessageBody: JSON.stringify(message)
534
+ });
535
+ await client.send(command);
536
+ }
537
+ }
538
+ ```
539
+
540
+ ### Header operationName
541
+
542
+ Todas las llamadas HTTP incluyen el header `operationName` que permite:
543
+ - Trazabilidad en logs
544
+ - Métricas por operación
545
+ - Debugging en X-Ray
546
+
547
+ ---
548
+
549
+ ## Dependencias
550
+
551
+ ### Runtime
552
+
553
+ | Dependencia | Versión | Propósito |
554
+ |-------------|---------|-----------|
555
+ | `@aws-sdk/client-sqs` | ^3.919.0 | Cliente SQS para publishers |
556
+ | `@fiado/gateway-adapter` | ^1.1.50 | Tipos de respuesta API |
557
+ | `@fiado/http-client` | ^1.0.7 | Cliente HTTP base |
558
+ | `@fiado/logger` | ^1.0.3 | Logging estructurado |
559
+ | `@fiado/type-kit` | ^2.1.28 | DTOs y tipos compartidos |
560
+ | `inversify` | ^6.2.2 | Inyección de dependencias |
561
+ | `reflect-metadata` | ^0.2.2 | Metadatos para decoradores |
562
+ | `dotenv` | ^16.4.7 | Variables de entorno |
563
+
564
+ ### Desarrollo
565
+
566
+ | Dependencia | Versión | Propósito |
567
+ |-------------|---------|-----------|
568
+ | `@types/node` | ^20.17.24 | Tipos de Node.js |
569
+ | `typescript` | (peer) | Compilador TypeScript |
570
+
571
+ ---
572
+
573
+ ## Compilación y Publicación
574
+
575
+ ### Build
576
+
577
+ ```bash
578
+ npm run build
579
+ ```
580
+
581
+ Genera archivos `.js` y `.d.ts` en el directorio `bin/`.
582
+
583
+ ### Publicación
584
+
585
+ ```bash
586
+ npm version patch|minor|major
587
+ npm publish
588
+ ```
589
+
590
+ La librería se publica en el registry npm privado de Fiado configurado en `.npmrc`.
591
+
592
+ ---
593
+
594
+ <div align="center">
595
+
596
+ **Fiado Inc.** | @fiado/api-invoker v1.5.34
597
+
598
+ </div>
599
+
600
+