@fiado/api-invoker 4.14.0 → 4.16.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 { ApiGatewayResponse } from "@fiado/gateway-adapter";
3
- import { DefineNextChallengeRequest, DefineNextChallengeResponse, PrepareChallengeRequest, PrepareChallengeResponse, VerifyChallengeRequest, VerifyChallengeResponse, AuthorizeRequest, AuthorizeResponse } from "@fiado/type-kit/bin/platformRbac";
3
+ import { DefineNextChallengeRequest, DefineNextChallengeResponse, PrepareChallengeRequest, PrepareChallengeResponse, VerifyChallengeRequest, VerifyChallengeResponse, AuthorizeRequest, AuthorizeResponse, EffectivePermissionsResponse } from "@fiado/type-kit/bin/platformRbac";
4
4
  import { IPlatformRbacBusinessApi } from "./interfaces/IPlatformRbacBusinessApi";
5
5
  /**
6
6
  * Publisher HTTP del lambda `platform-rbac-business` (componente 06 SureKeep Fase 0)
@@ -24,4 +24,5 @@ export default class PlatformRbacBusinessApi implements IPlatformRbacBusinessApi
24
24
  prepareChallenge(input: PrepareChallengeRequest): Promise<ApiGatewayResponse<PrepareChallengeResponse>>;
25
25
  verifyChallenge(input: VerifyChallengeRequest): Promise<ApiGatewayResponse<VerifyChallengeResponse>>;
26
26
  authorize(input: AuthorizeRequest): Promise<ApiGatewayResponse<AuthorizeResponse>>;
27
+ effectivePermissions(cognitoSub: string): Promise<ApiGatewayResponse<EffectivePermissionsResponse>>;
27
28
  }
@@ -49,6 +49,10 @@ let PlatformRbacBusinessApi = class PlatformRbacBusinessApi {
49
49
  const url = `${this.baseUrl}/internal/authorize`;
50
50
  return await this.httpRequest.post(url, input);
51
51
  }
52
+ async effectivePermissions(cognitoSub) {
53
+ const url = `${this.baseUrl}/internal/users/${encodeURIComponent(cognitoSub)}/effective-permissions`;
54
+ return await this.httpRequest.get(url);
55
+ }
52
56
  };
53
57
  PlatformRbacBusinessApi = __decorate([
54
58
  (0, inversify_1.injectable)(),
@@ -1,5 +1,5 @@
1
1
  import { ApiGatewayResponse } from "@fiado/gateway-adapter";
2
- import { DefineNextChallengeRequest, DefineNextChallengeResponse, PrepareChallengeRequest, PrepareChallengeResponse, VerifyChallengeRequest, VerifyChallengeResponse, AuthorizeRequest, AuthorizeResponse } from "@fiado/type-kit/bin/platformRbac";
2
+ import { DefineNextChallengeRequest, DefineNextChallengeResponse, PrepareChallengeRequest, PrepareChallengeResponse, VerifyChallengeRequest, VerifyChallengeResponse, AuthorizeRequest, AuthorizeResponse, EffectivePermissionsResponse } from "@fiado/type-kit/bin/platformRbac";
3
3
  /**
4
4
  * Contrato del publisher HTTP del lambda `platform-rbac-business` (componente 06 SureKeep Fase 0)
5
5
  * para los 3 endpoints internos del Custom Auth Challenge flow (MFA).
@@ -45,4 +45,11 @@ export interface IPlatformRbacBusinessApi {
45
45
  * resuelve permisos efectivos y devuelve `{ allow, reason?, context? }`.
46
46
  */
47
47
  authorize(input: AuthorizeRequest): Promise<ApiGatewayResponse<AuthorizeResponse>>;
48
+ /**
49
+ * GET /internal/users/{cognitoSub}/effective-permissions — resuelve los permisos
50
+ * efectivos (más epoch y role assignments) de un usuario. Invocado por el
51
+ * `jwt-inyector-trigger` al emitir el token para embeber el bitset RBAC.
52
+ * El `cognitoSub` va en el path param (encodeURIComponent en el publisher).
53
+ */
54
+ effectivePermissions(cognitoSub: string): Promise<ApiGatewayResponse<EffectivePermissionsResponse>>;
48
55
  }
@@ -1,7 +1,7 @@
1
1
  import type { IHttpRequest } from "@fiado/http-client";
2
2
  import { ApiGatewayResponse } from "@fiado/gateway-adapter";
3
3
  import { ConnectorCatalogItem } from "@fiado/type-kit/bin/benefitCenter";
4
- import { RemittanceAddBeneficiaryRequest, RemittanceBeneficiary, RemittanceCancelRequest, RemittanceCancelResponse, RemittanceHomeResponse, RemittanceListBeneficiariesResponse, RemittanceOnboardRequest, RemittanceOnboardResponse, RemittancePayRequest, RemittancePayResponse, RemittancePayerAdditionalFieldDto, RemittancePayerBranchDto, RemittancePayerDto, RemittanceQuoteRequest, RemittanceQuoteResponse, RemittanceSecurityQuestionsResponse, RemittanceSendPreviewRequest, RemittanceSendPreviewResponse, RemittanceSmsRequest, RemittanceStateDto, RemittanceTransactionDetail, RemittanceTransactionReceipt, RemittanceTransactionsListRequest, RemittanceTransactionsListResponse, RemittanceUpdateBeneficiaryRequest } from "@fiado/type-kit/bin/remittance";
4
+ import { RemittanceAddBeneficiaryRequest, RemittanceBackofficeDashboardSummary, RemittanceBackofficeStats, RemittanceBackofficeStatsPeriod, RemittanceBackofficeTransaction, RemittanceBackofficeTxListResponse, RemittanceBackofficeUserDetail, RemittanceBackofficeUserListResponse, RemittanceBeneficiary, RemittanceCancelRequest, RemittanceCancelResponse, RemittanceHomeResponse, RemittanceListBeneficiariesResponse, RemittanceOnboardRequest, RemittanceOnboardResponse, RemittancePayRequest, RemittancePayResponse, RemittancePayerAdditionalFieldDto, RemittancePayerBranchDto, RemittancePayerDto, RemittanceQuoteRequest, RemittanceQuoteResponse, RemittanceSecurityQuestionsResponse, RemittanceSendPreviewRequest, RemittanceSendPreviewResponse, RemittanceSmsRequest, RemittanceStateDto, RemittanceTransactionDetail, RemittanceTransactionReceipt, RemittanceTransactionsListRequest, RemittanceTransactionsListResponse, RemittanceUpdateBeneficiaryRequest } from "@fiado/type-kit/bin/remittance";
5
5
  import { IUnitellerConnectorApi } from "./interfaces/IUnitellerConnectorApi";
6
6
  export default class UnitellerConnectorApi implements IUnitellerConnectorApi {
7
7
  private httpRequest;
@@ -44,4 +44,24 @@ export default class UnitellerConnectorApi implements IUnitellerConnectorApi {
44
44
  smsTransactionAlert(directoryId: string, txNumber: string, request: RemittanceSmsRequest): Promise<ApiGatewayResponse<{
45
45
  sent: boolean;
46
46
  }>>;
47
+ backofficeDashboard(): Promise<ApiGatewayResponse<RemittanceBackofficeDashboardSummary>>;
48
+ backofficeListUsers(filters?: {
49
+ status?: string;
50
+ email?: string;
51
+ pageSize?: number;
52
+ index?: string;
53
+ }): Promise<ApiGatewayResponse<RemittanceBackofficeUserListResponse>>;
54
+ backofficeUserDetail(directoryId: string): Promise<ApiGatewayResponse<RemittanceBackofficeUserDetail>>;
55
+ backofficeListTransactions(filters?: {
56
+ txNumber?: string;
57
+ directoryId?: string;
58
+ status?: string;
59
+ countryISO?: string;
60
+ from?: string;
61
+ to?: string;
62
+ pageSize?: number;
63
+ index?: string;
64
+ }): Promise<ApiGatewayResponse<RemittanceBackofficeTxListResponse>>;
65
+ backofficeTransactionDetail(txNumber: string): Promise<ApiGatewayResponse<RemittanceBackofficeTransaction>>;
66
+ backofficeStats(period: RemittanceBackofficeStatsPeriod): Promise<ApiGatewayResponse<RemittanceBackofficeStats>>;
47
67
  }
@@ -115,6 +115,30 @@ let UnitellerConnectorApi = class UnitellerConnectorApi {
115
115
  const url = `${this.baseUrl}/transactions/${encodeURIComponent(txNumber)}/sms`;
116
116
  return await this.httpRequest.post(url, { directoryId, ...request });
117
117
  }
118
+ async backofficeDashboard() {
119
+ const url = `${this.baseUrl}/backoffice/dashboard`;
120
+ return await this.httpRequest.get(url);
121
+ }
122
+ async backofficeListUsers(filters) {
123
+ const url = `${this.baseUrl}/backoffice/users`;
124
+ return await this.httpRequest.get(url, dropUndefined(filters));
125
+ }
126
+ async backofficeUserDetail(directoryId) {
127
+ const url = `${this.baseUrl}/backoffice/users/${encodeURIComponent(directoryId)}`;
128
+ return await this.httpRequest.get(url);
129
+ }
130
+ async backofficeListTransactions(filters) {
131
+ const url = `${this.baseUrl}/backoffice/transactions`;
132
+ return await this.httpRequest.get(url, dropUndefined(filters));
133
+ }
134
+ async backofficeTransactionDetail(txNumber) {
135
+ const url = `${this.baseUrl}/backoffice/transactions/${encodeURIComponent(txNumber)}`;
136
+ return await this.httpRequest.get(url);
137
+ }
138
+ async backofficeStats(period) {
139
+ const url = `${this.baseUrl}/backoffice/stats`;
140
+ return await this.httpRequest.get(url, { period });
141
+ }
118
142
  };
119
143
  UnitellerConnectorApi = __decorate([
120
144
  (0, inversify_1.injectable)(),
@@ -122,3 +146,10 @@ UnitellerConnectorApi = __decorate([
122
146
  __metadata("design:paramtypes", [Object])
123
147
  ], UnitellerConnectorApi);
124
148
  exports.default = UnitellerConnectorApi;
149
+ /** Quita las keys undefined para no mandar query params vacíos. */
150
+ function dropUndefined(params) {
151
+ if (!params)
152
+ return undefined;
153
+ const clean = Object.fromEntries(Object.entries(params).filter(([, value]) => value !== undefined));
154
+ return Object.keys(clean).length > 0 ? clean : undefined;
155
+ }
@@ -1,6 +1,6 @@
1
1
  import { ApiGatewayResponse } from "@fiado/gateway-adapter";
2
2
  import { ConnectorCatalogItem } from "@fiado/type-kit/bin/benefitCenter";
3
- import { RemittanceAddBeneficiaryRequest, RemittanceBeneficiary, RemittanceCancelRequest, RemittanceCancelResponse, RemittanceHomeResponse, RemittanceListBeneficiariesResponse, RemittanceOnboardRequest, RemittanceOnboardResponse, RemittancePayRequest, RemittancePayResponse, RemittancePayerAdditionalFieldDto, RemittancePayerBranchDto, RemittancePayerDto, RemittanceQuoteRequest, RemittanceQuoteResponse, RemittanceSecurityQuestionsResponse, RemittanceSendPreviewRequest, RemittanceSendPreviewResponse, RemittanceSmsRequest, RemittanceStateDto, RemittanceTransactionDetail, RemittanceTransactionReceipt, RemittanceTransactionsListRequest, RemittanceTransactionsListResponse, RemittanceUpdateBeneficiaryRequest } from "@fiado/type-kit/bin/remittance";
3
+ import { RemittanceAddBeneficiaryRequest, RemittanceBackofficeDashboardSummary, RemittanceBackofficeStats, RemittanceBackofficeStatsPeriod, RemittanceBackofficeTransaction, RemittanceBackofficeTxListResponse, RemittanceBackofficeUserDetail, RemittanceBackofficeUserListResponse, RemittanceBeneficiary, RemittanceCancelRequest, RemittanceCancelResponse, RemittanceHomeResponse, RemittanceListBeneficiariesResponse, RemittanceOnboardRequest, RemittanceOnboardResponse, RemittancePayRequest, RemittancePayResponse, RemittancePayerAdditionalFieldDto, RemittancePayerBranchDto, RemittancePayerDto, RemittanceQuoteRequest, RemittanceQuoteResponse, RemittanceSecurityQuestionsResponse, RemittanceSendPreviewRequest, RemittanceSendPreviewResponse, RemittanceSmsRequest, RemittanceStateDto, RemittanceTransactionDetail, RemittanceTransactionReceipt, RemittanceTransactionsListRequest, RemittanceTransactionsListResponse, RemittanceUpdateBeneficiaryRequest } from "@fiado/type-kit/bin/remittance";
4
4
  export interface IUnitellerConnectorApi {
5
5
  /** Estado del módulo remesas para un directoryId. */
6
6
  getHome(directoryId: string): Promise<ApiGatewayResponse<RemittanceHomeResponse>>;
@@ -81,4 +81,26 @@ export interface IUnitellerConnectorApi {
81
81
  smsTransactionAlert(directoryId: string, txNumber: string, request: RemittanceSmsRequest): Promise<ApiGatewayResponse<{
82
82
  sent: boolean;
83
83
  }>>;
84
+ backofficeDashboard(): Promise<ApiGatewayResponse<RemittanceBackofficeDashboardSummary>>;
85
+ /** Filtros: status (default ACTIVE en el connector) | email (lookup exacto); pageSize 1-100; index cursor opaco. */
86
+ backofficeListUsers(filters?: {
87
+ status?: string;
88
+ email?: string;
89
+ pageSize?: number;
90
+ index?: string;
91
+ }): Promise<ApiGatewayResponse<RemittanceBackofficeUserListResponse>>;
92
+ backofficeUserDetail(directoryId: string): Promise<ApiGatewayResponse<RemittanceBackofficeUserDetail>>;
93
+ /** Requiere al menos uno de txNumber | directoryId | status (el connector responde 400 si no). */
94
+ backofficeListTransactions(filters?: {
95
+ txNumber?: string;
96
+ directoryId?: string;
97
+ status?: string;
98
+ countryISO?: string;
99
+ from?: string;
100
+ to?: string;
101
+ pageSize?: number;
102
+ index?: string;
103
+ }): Promise<ApiGatewayResponse<RemittanceBackofficeTxListResponse>>;
104
+ backofficeTransactionDetail(txNumber: string): Promise<ApiGatewayResponse<RemittanceBackofficeTransaction>>;
105
+ backofficeStats(period: RemittanceBackofficeStatsPeriod): Promise<ApiGatewayResponse<RemittanceBackofficeStats>>;
84
106
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fiado/api-invoker",
3
- "version": "4.14.0",
3
+ "version": "4.16.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
  "main": "bin/index.js",
6
6
  "types": "bin/index.d.ts",
@@ -17,7 +17,7 @@
17
17
  "@fiado/gateway-adapter": "^2.0.0",
18
18
  "@fiado/http-client": "^2.0.0",
19
19
  "@fiado/logger": "^1.0.3",
20
- "@fiado/type-kit": "^3.67.0",
20
+ "@fiado/type-kit": "^3.71.0",
21
21
  "dotenv": "^16.4.7"
22
22
  },
23
23
  "peerDependencies": {
@@ -11,6 +11,7 @@ import {
11
11
  VerifyChallengeResponse,
12
12
  AuthorizeRequest,
13
13
  AuthorizeResponse,
14
+ EffectivePermissionsResponse,
14
15
  } from "@fiado/type-kit/bin/platformRbac";
15
16
  import { IPlatformRbacBusinessApi } from "./interfaces/IPlatformRbacBusinessApi";
16
17
 
@@ -61,4 +62,11 @@ export default class PlatformRbacBusinessApi implements IPlatformRbacBusinessApi
61
62
  const url = `${this.baseUrl}/internal/authorize`;
62
63
  return await this.httpRequest.post(url, input);
63
64
  }
65
+
66
+ async effectivePermissions(
67
+ cognitoSub: string,
68
+ ): Promise<ApiGatewayResponse<EffectivePermissionsResponse>> {
69
+ const url = `${this.baseUrl}/internal/users/${encodeURIComponent(cognitoSub)}/effective-permissions`;
70
+ return await this.httpRequest.get(url);
71
+ }
64
72
  }
@@ -8,6 +8,7 @@ import {
8
8
  VerifyChallengeResponse,
9
9
  AuthorizeRequest,
10
10
  AuthorizeResponse,
11
+ EffectivePermissionsResponse,
11
12
  } from "@fiado/type-kit/bin/platformRbac";
12
13
 
13
14
  /**
@@ -66,4 +67,14 @@ export interface IPlatformRbacBusinessApi {
66
67
  authorize(
67
68
  input: AuthorizeRequest,
68
69
  ): Promise<ApiGatewayResponse<AuthorizeResponse>>;
70
+
71
+ /**
72
+ * GET /internal/users/{cognitoSub}/effective-permissions — resuelve los permisos
73
+ * efectivos (más epoch y role assignments) de un usuario. Invocado por el
74
+ * `jwt-inyector-trigger` al emitir el token para embeber el bitset RBAC.
75
+ * El `cognitoSub` va en el path param (encodeURIComponent en el publisher).
76
+ */
77
+ effectivePermissions(
78
+ cognitoSub: string,
79
+ ): Promise<ApiGatewayResponse<EffectivePermissionsResponse>>;
69
80
  }
@@ -4,6 +4,13 @@ import { ApiGatewayResponse } from "@fiado/gateway-adapter";
4
4
  import { ConnectorCatalogItem } from "@fiado/type-kit/bin/benefitCenter";
5
5
  import {
6
6
  RemittanceAddBeneficiaryRequest,
7
+ RemittanceBackofficeDashboardSummary,
8
+ RemittanceBackofficeStats,
9
+ RemittanceBackofficeStatsPeriod,
10
+ RemittanceBackofficeTransaction,
11
+ RemittanceBackofficeTxListResponse,
12
+ RemittanceBackofficeUserDetail,
13
+ RemittanceBackofficeUserListResponse,
7
14
  RemittanceBeneficiary,
8
15
  RemittanceCancelRequest,
9
16
  RemittanceCancelResponse,
@@ -154,4 +161,43 @@ export default class UnitellerConnectorApi implements IUnitellerConnectorApi {
154
161
  const url = `${this.baseUrl}/transactions/${encodeURIComponent(txNumber)}/sms`;
155
162
  return await this.httpRequest.post(url, { directoryId, ...request });
156
163
  }
164
+
165
+ async backofficeDashboard(): Promise<ApiGatewayResponse<RemittanceBackofficeDashboardSummary>> {
166
+ const url = `${this.baseUrl}/backoffice/dashboard`;
167
+ return await this.httpRequest.get(url);
168
+ }
169
+
170
+ async backofficeListUsers(filters?: { status?: string; email?: string; pageSize?: number; index?: string }): Promise<ApiGatewayResponse<RemittanceBackofficeUserListResponse>> {
171
+ const url = `${this.baseUrl}/backoffice/users`;
172
+ return await this.httpRequest.get(url, dropUndefined(filters));
173
+ }
174
+
175
+ async backofficeUserDetail(directoryId: string): Promise<ApiGatewayResponse<RemittanceBackofficeUserDetail>> {
176
+ const url = `${this.baseUrl}/backoffice/users/${encodeURIComponent(directoryId)}`;
177
+ return await this.httpRequest.get(url);
178
+ }
179
+
180
+ async backofficeListTransactions(filters?: { txNumber?: string; directoryId?: string; status?: string; countryISO?: string; from?: string; to?: string; pageSize?: number; index?: string }): Promise<ApiGatewayResponse<RemittanceBackofficeTxListResponse>> {
181
+ const url = `${this.baseUrl}/backoffice/transactions`;
182
+ return await this.httpRequest.get(url, dropUndefined(filters));
183
+ }
184
+
185
+ async backofficeTransactionDetail(txNumber: string): Promise<ApiGatewayResponse<RemittanceBackofficeTransaction>> {
186
+ const url = `${this.baseUrl}/backoffice/transactions/${encodeURIComponent(txNumber)}`;
187
+ return await this.httpRequest.get(url);
188
+ }
189
+
190
+ async backofficeStats(period: RemittanceBackofficeStatsPeriod): Promise<ApiGatewayResponse<RemittanceBackofficeStats>> {
191
+ const url = `${this.baseUrl}/backoffice/stats`;
192
+ return await this.httpRequest.get(url, { period });
193
+ }
194
+ }
195
+
196
+ /** Quita las keys undefined para no mandar query params vacíos. */
197
+ function dropUndefined(params?: Record<string, string | number | undefined>): Record<string, string | number> | undefined {
198
+ if (!params) return undefined;
199
+ const clean = Object.fromEntries(
200
+ Object.entries(params).filter(([, value]) => value !== undefined),
201
+ ) as Record<string, string | number>;
202
+ return Object.keys(clean).length > 0 ? clean : undefined;
157
203
  }
@@ -2,6 +2,13 @@ import { ApiGatewayResponse } from "@fiado/gateway-adapter";
2
2
  import { ConnectorCatalogItem } from "@fiado/type-kit/bin/benefitCenter";
3
3
  import {
4
4
  RemittanceAddBeneficiaryRequest,
5
+ RemittanceBackofficeDashboardSummary,
6
+ RemittanceBackofficeStats,
7
+ RemittanceBackofficeStatsPeriod,
8
+ RemittanceBackofficeTransaction,
9
+ RemittanceBackofficeTxListResponse,
10
+ RemittanceBackofficeUserDetail,
11
+ RemittanceBackofficeUserListResponse,
5
12
  RemittanceBeneficiary,
6
13
  RemittanceCancelRequest,
7
14
  RemittanceCancelResponse,
@@ -130,4 +137,15 @@ export interface IUnitellerConnectorApi {
130
137
 
131
138
  /** SMS de UNIR al beneficiario de la tx (max 3 por tx). ⚠ gated por smoke. */
132
139
  smsTransactionAlert(directoryId: string, txNumber: string, request: RemittanceSmsRequest): Promise<ApiGatewayResponse<{ sent: boolean }>>;
140
+
141
+ // ─── Backoffice (F9, read-only — D2: el backoffice frontend entra por benefits) ─
142
+
143
+ backofficeDashboard(): Promise<ApiGatewayResponse<RemittanceBackofficeDashboardSummary>>;
144
+ /** Filtros: status (default ACTIVE en el connector) | email (lookup exacto); pageSize 1-100; index cursor opaco. */
145
+ backofficeListUsers(filters?: { status?: string; email?: string; pageSize?: number; index?: string }): Promise<ApiGatewayResponse<RemittanceBackofficeUserListResponse>>;
146
+ backofficeUserDetail(directoryId: string): Promise<ApiGatewayResponse<RemittanceBackofficeUserDetail>>;
147
+ /** Requiere al menos uno de txNumber | directoryId | status (el connector responde 400 si no). */
148
+ backofficeListTransactions(filters?: { txNumber?: string; directoryId?: string; status?: string; countryISO?: string; from?: string; to?: string; pageSize?: number; index?: string }): Promise<ApiGatewayResponse<RemittanceBackofficeTxListResponse>>;
149
+ backofficeTransactionDetail(txNumber: string): Promise<ApiGatewayResponse<RemittanceBackofficeTransaction>>;
150
+ backofficeStats(period: RemittanceBackofficeStatsPeriod): Promise<ApiGatewayResponse<RemittanceBackofficeStats>>;
133
151
  }