@fiado/api-invoker 4.57.0 → 4.59.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.
- package/.claude/settings.json +33 -33
- package/README.md +600 -600
- package/bin/equality-connector/api/EqualityConnectorApi.d.ts +5 -0
- package/bin/equality-connector/api/EqualityConnectorApi.js +42 -0
- package/bin/equality-connector/api/interfaces/IEqualityConnectorApi.d.ts +26 -0
- package/bin/remittance-business/api/RemittanceBusinessApi.d.ts +2 -1
- package/bin/remittance-business/api/RemittanceBusinessApi.js +4 -0
- package/bin/remittance-business/api/interfaces/IRemittanceBusinessApi.d.ts +3 -1
- package/bin/uniteller-connector/api/UnitellerConnectorApi.d.ts +2 -1
- package/bin/uniteller-connector/api/UnitellerConnectorApi.js +4 -0
- package/bin/uniteller-connector/api/interfaces/IUnitellerConnectorApi.d.ts +3 -1
- package/docs/TECH_DEBT.md +16 -16
- package/jest.config.cjs +12 -12
- package/package.json +56 -56
- package/src/account-beneficiary/AccountBeneficiaryApi.ts +18 -18
- package/src/account-beneficiary/index.ts +2 -2
- package/src/account-beneficiary/interfaces/IAccountBeneficiaryApi.ts +7 -7
- package/src/account-fiadoinc/AccountFiadoIncApi.ts +126 -126
- package/src/account-fiadoinc/index.ts +4 -4
- package/src/account-fiadoinc/interfaces/IAccountFiadoIncApi.ts +50 -50
- package/src/account-fiadoinc/queue/Publisher.ts +23 -23
- package/src/account-fiadoinc/queue/interfaces/IPublisher.ts +4 -4
- package/src/account-fiadosa/AccountFiadoSAApi.ts +38 -38
- package/src/account-fiadosa/index.ts +1 -1
- package/src/account-fiadosa/interfaces/IAccountFiadoSAApi.ts +16 -16
- package/src/account-pagoconfiado/AccountPagoConfiadoApi.ts +78 -78
- package/src/account-pagoconfiado/index.ts +2 -2
- package/src/account-pagoconfiado/interfaces/IAccountPagoConfiadoApi.ts +37 -37
- package/src/activity-business/ActivityApi.ts +36 -36
- package/src/activity-business/index.ts +5 -5
- package/src/activity-business/interfaces/IActivityApi.ts +13 -13
- package/src/activity-business/queue/ActivityPublisher.ts +30 -30
- package/src/activity-business/queue/IActivityPublisher.ts +4 -4
- package/src/address/AddressApi.ts +46 -46
- package/src/address/index.ts +3 -3
- package/src/address/interfaces/IAddressApi.ts +30 -30
- package/src/ai-engine-connector/AiEngineApi.ts +28 -28
- package/src/ai-engine-connector/index.ts +2 -2
- package/src/ai-engine-connector/interfaces/IAiEngineApi.ts +6 -6
- package/src/appselectondata/AppSelectionDataApi.ts +32 -32
- package/src/appselectondata/index.ts +2 -2
- package/src/appselectondata/interfaces/IAppSelectionDataApi.ts +17 -17
- package/src/authentication/AuthenticationApi.ts +56 -56
- package/src/authentication/index.ts +2 -2
- package/src/authentication/interfaces/IAuthenticationApi.ts +49 -49
- package/src/authentication/interfaces/LegacyApiResponse.ts +11 -11
- package/src/bankAccount/BankAccountApi.ts +34 -34
- package/src/bankAccount/index.ts +1 -1
- package/src/bankAccount/interfaces/IBankAccountApi.ts +6 -6
- package/src/bbvaRst/api/BBVARstApi.ts +16 -16
- package/src/bbvaRst/api/interfaces/IBBVARstApi.ts +4 -4
- package/src/bbvaRst/index.ts +1 -1
- package/src/benefits-marketplace/api/BenefitsMarketplaceApi.ts +59 -59
- package/src/benefits-marketplace/api/dtos/BenefitLeafDisplayResponse.ts +33 -33
- package/src/benefits-marketplace/api/interfaces/IBenefitsMarketplaceApi.ts +93 -93
- package/src/benefits-marketplace/index.ts +3 -3
- package/src/blacklist/BlackListApi.ts +19 -19
- package/src/blacklist/index.ts +2 -2
- package/src/blacklist/interfaces/IBlackListApi.ts +20 -20
- package/src/card/CardApi.ts +103 -103
- package/src/card/index.ts +3 -3
- package/src/card/interfaces/ICardApi.ts +32 -32
- package/src/card-business/index.ts +2 -2
- package/src/card-business/queue/CardBusinessPublisher.ts +23 -23
- package/src/card-business/queue/ICardBusinessPublisher.ts +10 -10
- package/src/centralPayments/CentralPaymentsConnectorApi.ts +317 -317
- package/src/centralPayments/index.ts +1 -1
- package/src/centralPayments/interfaces/ICentralPaymentsConnectorApi.ts +153 -153
- package/src/circuloCredito/api/CirculoCreditoApi.ts +21 -21
- package/src/circuloCredito/api/interfaces/ICirculoCreditoApi.ts +7 -7
- package/src/circuloCredito/index.ts +2 -2
- package/src/cnbv-business/CnbvApi.ts +31 -31
- package/src/cnbv-business/index.ts +4 -4
- package/src/cnbv-business/interfaces/ICnbvApi.ts +19 -19
- package/src/cnbv-connector/CnbvConnectorApi.ts +18 -18
- package/src/cnbv-connector/index.ts +1 -1
- package/src/cnbv-connector/interfaces/ICnbvConnectorApi.ts +6 -6
- package/src/cognitoBackofficeConnector/api/CognitoBackofficeConnectorApi.ts +281 -281
- package/src/cognitoBackofficeConnector/api/interfaces/ICognitoBackofficeConnectorApi.ts +216 -216
- package/src/cognitoBackofficeConnector/index.ts +2 -2
- package/src/cognitoConnector/CognitoConnectorApi.ts +112 -112
- package/src/cognitoConnector/CognitoConnectorV2.ts +87 -87
- package/src/cognitoConnector/index.ts +11 -11
- package/src/cognitoConnector/interfaces/ICognitoConnectorApi.ts +16 -16
- package/src/cognitoConnector/interfaces/ICognitoV2Api.ts +63 -63
- package/src/collector/CollectorApi.ts +96 -96
- package/src/collector/index.ts +2 -2
- package/src/collector/interfaces/ICollectorApi.ts +47 -47
- package/src/commission-business/CommissionBusinessApi.ts +19 -19
- package/src/commission-business/index.ts +3 -3
- package/src/commission-business/interfaces/ICommissionBusinessApi.ts +15 -15
- package/src/complaint/ComplaintApi.ts +33 -33
- package/src/complaint/index.ts +2 -2
- package/src/complaint/interfaces/IComplaintApi.ts +22 -22
- package/src/contactInformation/ContactInformationApi.ts +20 -20
- package/src/contactInformation/index.ts +2 -2
- package/src/contactInformation/interface/IContactInformationApi.ts +8 -8
- package/src/contacts-business/api/ContactsBusinessApi.ts +17 -17
- package/src/contacts-business/api/interfaces/IContactsBusinessApi.ts +15 -15
- package/src/contacts-business/index.ts +2 -2
- package/src/container.config.ts +328 -328
- package/src/contract-business/api/ContractBusinessApi.ts +37 -37
- package/src/contract-business/api/interfaces/IContractBusinessApi.ts +32 -32
- package/src/contract-business/index.ts +2 -2
- package/src/contract-generator/ContractGeneratorApi.ts +18 -18
- package/src/contract-generator/index.ts +2 -2
- package/src/contract-generator/interfaces/IContractGeneratorApi.ts +16 -16
- package/src/countries-business/CountriesBusinessApi.ts +26 -26
- package/src/countries-business/index.ts +2 -2
- package/src/countries-business/interfaces/ICountriesBusinessApi.ts +22 -22
- package/src/credit-engine/CreditEngineApi.ts +54 -54
- package/src/credit-engine/index.ts +17 -17
- package/src/credit-engine/interfaces/ICreditEngineApi.ts +46 -46
- package/src/credit-engine/queue/CreditCollectionPublisher.ts +24 -24
- package/src/credit-engine/queue/CreditDelinquencyPublisher.ts +24 -24
- package/src/credit-engine/queue/CreditIncomeDetectionPublisher.ts +24 -24
- package/src/credit-engine/queue/CreditLienCollectionPublisher.ts +24 -24
- package/src/credit-engine/queue/CreditNotificationPublisher.ts +24 -24
- package/src/credit-engine/queue/CreditOfferGenerationPublisher.ts +24 -24
- package/src/credit-engine/queue/CreditReconciliationPublisher.ts +24 -24
- package/src/credit-engine/queue/CreditScoringPublisher.ts +24 -24
- package/src/credit-engine/queue/CreditStatementPublisher.ts +24 -24
- package/src/credit-engine/queue/CreditTransferPublisher.ts +24 -24
- package/src/credit-engine/queue/interfaces/ICreditCollectionPublisher.ts +5 -5
- package/src/credit-engine/queue/interfaces/ICreditDelinquencyPublisher.ts +5 -5
- package/src/credit-engine/queue/interfaces/ICreditIncomeDetectionPublisher.ts +5 -5
- package/src/credit-engine/queue/interfaces/ICreditLienCollectionPublisher.ts +5 -5
- package/src/credit-engine/queue/interfaces/ICreditNotificationPublisher.ts +5 -5
- package/src/credit-engine/queue/interfaces/ICreditOfferGenerationPublisher.ts +5 -5
- package/src/credit-engine/queue/interfaces/ICreditReconciliationPublisher.ts +5 -5
- package/src/credit-engine/queue/interfaces/ICreditScoringPublisher.ts +5 -5
- package/src/credit-engine/queue/interfaces/ICreditStatementPublisher.ts +5 -5
- package/src/credit-engine/queue/interfaces/ICreditTransferPublisher.ts +5 -5
- package/src/credit-payment/CreditPaymentApi.ts +73 -73
- package/src/credit-payment/index.ts +2 -2
- package/src/credit-payment/interfaces/ICreditPaymentApi.ts +52 -52
- package/src/credit-statements/api/CreditStatementsApi.ts +25 -25
- package/src/credit-statements/api/interfaces/ICreditStatementsApi.ts +30 -30
- package/src/credit-statements/index.ts +2 -2
- package/src/device/DeviceApi.ts +32 -32
- package/src/device/index.ts +2 -2
- package/src/device/interfaces/IDeviceApi.ts +41 -41
- package/src/directories/DirectoriesApi.ts +68 -68
- package/src/directories/index.ts +3 -3
- package/src/directories/interfaces/IDirectoriesApi.ts +21 -21
- package/src/directory/DirectoryApi.ts +210 -210
- package/src/directory/index.ts +3 -3
- package/src/directory/interfaces/IDirectoryApi.ts +80 -80
- package/src/directorySetting/DirectorySettingApi.ts +42 -42
- package/src/directorySetting/index.ts +3 -3
- package/src/directorySetting/interfaces/IDirectorySettingApi.ts +56 -56
- package/src/disputes/DisputesApi.ts +66 -66
- package/src/disputes/index.ts +2 -2
- package/src/disputes/interfaces/IDisputesApi.ts +79 -79
- package/src/document-generator/DocumentGeneratorApi.ts +51 -51
- package/src/document-generator/index.ts +2 -2
- package/src/document-generator/interfaces/IDocumentGeneratorApi.ts +34 -34
- package/src/document-image-processor/DocumentImageProcessorApi.ts +22 -22
- package/src/document-image-processor/index.ts +1 -1
- package/src/document-image-processor/interfaces/IDocumentImageProcessorApi.ts +7 -7
- package/src/equality-connector/api/EqualityConnectorApi.ts +101 -52
- package/src/equality-connector/api/interfaces/IEqualityConnectorApi.ts +101 -58
- package/src/equality-connector/index.ts +2 -2
- package/src/estafeta/api/EstafetaApi.ts +67 -67
- package/src/estafeta/api/interfaces/IEstafetaApi.ts +28 -28
- package/src/estafeta/index.ts +1 -1
- package/src/event-history-business/EventHistoryApi.ts +108 -108
- package/src/event-history-business/index.ts +3 -3
- package/src/event-history-business/interfaces/IEventHistoryApi.ts +47 -47
- package/src/exchangeRates/ExchangeRatesApi.ts +27 -27
- package/src/exchangeRates/index.ts +1 -1
- package/src/exchangeRates/interfaces/IExchangeRatesApi.ts +8 -8
- package/src/fiadoMessages/api/FiadoMessagesApi.ts +20 -20
- package/src/fiadoMessages/api/interfaces/IFiadoMessagesApi.ts +2 -2
- package/src/fiadoMessages/index.ts +1 -1
- package/src/firebase-connector/FirebaseConnectorApi.ts +53 -53
- package/src/firebase-connector/index.ts +3 -3
- package/src/firebase-connector/interfaces/IFirebaseConnectorApi.ts +6 -6
- package/src/fraudPreventionEngine/api/FraudPreventionEngineApi.ts +22 -22
- package/src/fraudPreventionEngine/api/interfaces/IFraudPreventionEngineApi.ts +7 -7
- package/src/fraudPreventionEngine/index.ts +1 -1
- package/src/group/GroupApi.ts +74 -74
- package/src/group/index.ts +1 -1
- package/src/group/interfaces/IGroupApi.ts +47 -47
- package/src/identity/IdentityApi.ts +153 -153
- package/src/identity/index.ts +4 -4
- package/src/identity/interfaces/IIdentityApi.ts +66 -66
- package/src/identity/interfaces/LegacyApiResponse.ts +11 -11
- package/src/index.ts +87 -87
- package/src/legalDocument/api/LegalDocumentApi.ts +38 -38
- package/src/legalDocument/api/interfaces/ILegalDocumentApi.ts +7 -7
- package/src/legalDocument/index.ts +3 -3
- package/src/messages-business/api/MessagesBusinessApi.ts +50 -50
- package/src/messages-business/api/interfaces/IMessagesBusinessApi.ts +20 -20
- package/src/messages-business/index.ts +4 -4
- package/src/messages-business/queue/MessagesBusinessPublisher.ts +33 -33
- package/src/messages-business/queue/interfaces/IMessagesBusinessPublisher.ts +5 -5
- package/src/milestone-business/api/MilestoneBusinessApi.ts +56 -56
- package/src/milestone-business/api/interfaces/IMilestoneBusinessApi.ts +17 -17
- package/src/milestone-business/index.ts +2 -2
- package/src/multicommServicePayment/api/MulticommServicePaymentApi.ts +119 -119
- package/src/multicommServicePayment/api/interfaces/IMulticommServicePaymentApi.ts +52 -52
- package/src/multicommServicePayment/index.ts +1 -1
- package/src/notificationMessages/index.ts +1 -1
- package/src/notificationMessages/queue/NotificationMessagePublisher.ts +42 -42
- package/src/notificationMessages/queue/interfaces/INotificationMessagesPublisher.ts +7 -7
- package/src/notificationWebsockets/index.ts +1 -1
- package/src/notificationWebsockets/queue/NotificationWSMessagePublisher.ts +29 -29
- package/src/notificationWebsockets/queue/interfaces/INotificationWSMessagesPublisher.ts +4 -4
- package/src/observations/ObservationsApi.ts +23 -23
- package/src/observations/index.ts +3 -3
- package/src/observations/interfaces/IObservationsApi.ts +9 -9
- package/src/onboarding/api/OnboardingApi.ts +29 -29
- package/src/onboarding/api/interfaces/IOnboardingApi.ts +14 -14
- package/src/onboarding/index.ts +1 -1
- package/src/onboarding-business/api/OnboardingBusinessApi.ts +220 -220
- package/src/onboarding-business/api/interfaces/IOnboardingBusinessApi.ts +14 -14
- package/src/onboarding-business/index.ts +1 -1
- package/src/order-collector-business/OrderCollectorApi.ts +20 -20
- package/src/order-collector-business/index.ts +3 -3
- package/src/order-collector-business/interfaces/IOrderCollectorApi.ts +9 -9
- package/src/p2pContact/api/P2pContactApi.ts +19 -19
- package/src/p2pContact/api/interfaces/IP2pContactApi.ts +4 -4
- package/src/p2pContact/index.ts +1 -1
- package/src/payroll-business/PayrollApi.ts +19 -19
- package/src/payroll-business/index.ts +1 -1
- package/src/payroll-business/interfaces/IPayrollApi.ts +18 -18
- package/src/people-business/api/PeopleBusinessApi.ts +32 -32
- package/src/people-business/api/interfaces/IPeopleBusinessApi.ts +7 -7
- package/src/people-business/index.ts +1 -1
- package/src/platform-error-events/index.ts +2 -2
- package/src/platform-error-events/queue/PlatformErrorEventsPublisher.ts +24 -24
- package/src/platform-error-events/queue/interfaces/IPlatformErrorEventsPublisher.ts +5 -5
- package/src/platformRbac/api/PlatformRbacBusinessApi.ts +98 -98
- package/src/platformRbac/api/interfaces/IPlatformRbacBusinessApi.ts +98 -98
- package/src/platformRbac/index.ts +4 -4
- package/src/platformRbac/resolver/ApiInvokerPermissionResolver.ts +59 -59
- package/src/platformRbac/resolver/apiInvokerResolverBindings.ts +23 -23
- package/src/pomelo/api/PomeloApi.ts +109 -109
- package/src/pomelo/api/interfaces/IPomeloApi.ts +29 -29
- package/src/pomelo/index.ts +1 -1
- package/src/pomeloProcessor/api/PomeloProcessorApi.ts +17 -17
- package/src/pomeloProcessor/api/interfaces/IPomeloProcessorApi.ts +2 -2
- package/src/pomeloProcessor/index.ts +2 -2
- package/src/pricelist-business/PriceListApi.ts +45 -45
- package/src/pricelist-business/index.ts +1 -1
- package/src/pricelist-business/interfaces/IPriceListApi.ts +16 -16
- package/src/product-catalog/ProductCatalogApi.ts +17 -17
- package/src/product-catalog/index.ts +1 -1
- package/src/product-catalog/interfaces/IProductCatalogApi.ts +6 -6
- package/src/product-payment/api/ProductPaymentApi.ts +25 -25
- package/src/product-payment/api/interfaces/IProductPaymentApi.ts +8 -8
- package/src/product-payment/index.ts +1 -1
- package/src/referral-business/ReferralBusinessApi.ts +42 -42
- package/src/referral-business/index.ts +1 -1
- package/src/referral-business/interfaces/IReferralBusinessApi.ts +45 -45
- package/src/remittance-business/api/RemittanceBusinessApi.ts +33 -26
- package/src/remittance-business/api/interfaces/IRemittanceBusinessApi.ts +16 -12
- package/src/remittance-business/index.ts +2 -2
- package/src/report-processor-business/api/IReportProcessorBusinessApi.ts +4 -4
- package/src/report-processor-business/api/ReportProcessorBusinessApi.ts +17 -17
- package/src/report-processor-business/index.ts +5 -5
- package/src/riskProfile/api/RiskProfileApi.ts +88 -88
- package/src/riskProfile/api/TransactionAlertApi.ts +49 -49
- package/src/riskProfile/api/interfaces/IRiskProfileApi.ts +69 -69
- package/src/riskProfile/api/interfaces/ITransactionAlertApi.ts +70 -70
- package/src/riskProfile/index.ts +7 -7
- package/src/riskProfile/queue/TransactionAlarmPublisher.ts +25 -25
- package/src/riskProfile/queue/interfaces/ITransactionAlarmPublisher.ts +4 -4
- package/src/service-business/ServiceApi.ts +78 -78
- package/src/service-business/index.ts +2 -2
- package/src/service-business/interfaces/IServiceApi.ts +73 -73
- package/src/sessionActivity/index.ts +2 -2
- package/src/sessionActivity/queue/SessionActivityPublisher.ts +23 -23
- package/src/sessionActivity/queue/interfaces/ISessionActivityPublisher.ts +4 -4
- package/src/sns-ses-connector/api/SnsSesConnectorApi.ts +18 -18
- package/src/sns-ses-connector/api/interfaces/ISnsSesConnectorApi.ts +7 -7
- package/src/sns-ses-connector/index.ts +2 -2
- package/src/stp-business/api/STPBusinessApi.ts +37 -37
- package/src/stp-business/api/interfaces/ISTPBusinessApi.ts +17 -17
- package/src/stp-business/index.ts +1 -1
- package/src/stpAccount/api/STPAccountApi.ts +111 -111
- package/src/stpAccount/api/interfaces/ISTPAccountApi.ts +7 -7
- package/src/stpAccount/index.ts +1 -1
- package/src/stpServicePayment/api/StpServicePaymentApi.ts +119 -119
- package/src/stpServicePayment/api/interfaces/IStpServicePaymentApi.ts +52 -52
- package/src/stpServicePayment/index.ts +1 -1
- package/src/stpSpei/api/StpSpeiApi.ts +32 -32
- package/src/stpSpei/api/interfaces/IStpSpeiApi.ts +6 -6
- package/src/stpSpei/index.ts +1 -1
- package/src/teams-connector/index.ts +2 -2
- package/src/teams-connector/queue/TeamsNotificationPublisher.ts +24 -24
- package/src/teams-connector/queue/interfaces/ITeamsNotificationPublisher.ts +5 -5
- package/src/tern/api/TernApi.ts +147 -147
- package/src/tern/api/interfaces/ITernApi.ts +54 -54
- package/src/tern/index.ts +1 -1
- package/src/totp-security/api/TotpSecurityApi.ts +38 -38
- package/src/totp-security/api/interfaces/ITotpSecurityApi.ts +16 -16
- package/src/totp-security/index.ts +2 -2
- package/src/transaction/api/TransactionApi.ts +177 -177
- package/src/transaction/api/interfaces/ITransactionApi.ts +96 -96
- package/src/transaction/index.ts +5 -5
- package/src/transaction/queue/TransactionPublisher.ts +25 -25
- package/src/transaction/queue/interfaces/ITransactionPublisher.ts +4 -4
- package/src/transactionProcessor/api/TransactionProcessorApi.ts +104 -104
- package/src/transactionProcessor/api/interfaces/ITransactionProcessorApi.ts +86 -86
- package/src/transactionProcessor/index.ts +1 -1
- package/src/twilio-connector/api/TwilioConnectorApi.ts +18 -18
- package/src/twilio-connector/api/interfaces/ITwilioConnectorApi.ts +12 -12
- package/src/twilio-connector/index.ts +2 -2
- package/src/uniteller-connector/api/UnitellerConnectorApi.ts +311 -304
- package/src/uniteller-connector/api/interfaces/IUnitellerConnectorApi.ts +231 -227
- package/src/uniteller-connector/index.ts +2 -2
- package/src/utils/InvokerUtils.ts +18 -18
- package/src/wallet-funding-rules/api/WalletFundingRulesApi.ts +37 -37
- package/src/wallet-funding-rules/api/interfaces/IWalletFundingRulesApi.ts +36 -36
- package/src/wallet-funding-rules/index.ts +2 -2
- package/src/walletFundingSettlement/api/WalletFundingSettlementApi.ts +22 -22
- package/src/walletFundingSettlement/api/interfaces/IWalletFundingSettlementApi.ts +31 -31
- package/src/walletFundingSettlement/index.ts +2 -2
- package/src/zendesk/ZendeskApi.ts +24 -24
- package/src/zendesk/index.ts +3 -3
- package/src/zendesk/interfaces/IZendeskApi.ts +10 -10
|
@@ -1,98 +1,98 @@
|
|
|
1
|
-
import { ApiGatewayResponse, ResolvedPermissions, ResolveInput } from "@fiado/gateway-adapter";
|
|
2
|
-
import {
|
|
3
|
-
DefineNextChallengeRequest,
|
|
4
|
-
DefineNextChallengeResponse,
|
|
5
|
-
PrepareChallengeRequest,
|
|
6
|
-
PrepareChallengeResponse,
|
|
7
|
-
VerifyChallengeRequest,
|
|
8
|
-
VerifyChallengeResponse,
|
|
9
|
-
AuthorizeRequest,
|
|
10
|
-
AuthorizeResponse,
|
|
11
|
-
EffectivePermissionsResponse,
|
|
12
|
-
InjectableUserAttributesResponse,
|
|
13
|
-
} from "@fiado/type-kit/bin/platformRbac/index.js";
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* Contrato del publisher HTTP del lambda `platform-rbac-business` (componente 06 SureKeep Fase 0)
|
|
17
|
-
* para los 3 endpoints internos del Custom Auth Challenge flow (MFA).
|
|
18
|
-
*
|
|
19
|
-
* Consumidores: `cognito-backoffice-connector` desde los Lambda Triggers
|
|
20
|
-
* `defineAuthChallenge`, `createAuthChallenge` y `verifyAuthChallengeResponse`
|
|
21
|
-
* configurados en cada User Pool aprovisionado por la saga `TenantOnboardingManager`.
|
|
22
|
-
*
|
|
23
|
-
* Patrón de retorno: `Promise<ApiGatewayResponse<T>>` sin unwrap (v4 canonical Fiado).
|
|
24
|
-
* El consumer accede `result.body.data` para llegar al payload tipado.
|
|
25
|
-
*
|
|
26
|
-
* Env var requerida en el consumer: `PLATFORM_RBAC_BUSINESS_URL`.
|
|
27
|
-
* El template.yml del consumer la setea con:
|
|
28
|
-
*
|
|
29
|
-
* PLATFORM_RBAC_BUSINESS_URL: '{{resolve:ssm:platform-rbac-business}}'
|
|
30
|
-
*
|
|
31
|
-
* Convención CLAUDE.md global: SSM key = nombre del lambda owner de la URL.
|
|
32
|
-
*/
|
|
33
|
-
export interface IPlatformRbacBusinessApi {
|
|
34
|
-
/**
|
|
35
|
-
* POST /internal/auth/define-next-challenge — decide el próximo challenge MFA
|
|
36
|
-
* según los resultados acumulados en `session`. Invocado por el trigger
|
|
37
|
-
* `defineAuthChallenge` en cada paso del Custom Auth Challenge flow.
|
|
38
|
-
*/
|
|
39
|
-
defineNextChallenge(
|
|
40
|
-
input: DefineNextChallengeRequest,
|
|
41
|
-
): Promise<ApiGatewayResponse<DefineNextChallengeResponse>>;
|
|
42
|
-
|
|
43
|
-
/**
|
|
44
|
-
* POST /internal/auth/prepare-challenge — prepara el challenge (genera y envía
|
|
45
|
-
* código OTP por email/SMS, o computa el `privateChallenge` para TOTP).
|
|
46
|
-
* Invocado por el trigger `createAuthChallenge`.
|
|
47
|
-
*/
|
|
48
|
-
prepareChallenge(
|
|
49
|
-
input: PrepareChallengeRequest,
|
|
50
|
-
): Promise<ApiGatewayResponse<PrepareChallengeResponse>>;
|
|
51
|
-
|
|
52
|
-
/**
|
|
53
|
-
* POST /internal/auth/verify-challenge — verifica la respuesta del usuario
|
|
54
|
-
* contra el `privateChallenge`. Invocado por el trigger
|
|
55
|
-
* `verifyAuthChallengeResponse`.
|
|
56
|
-
*/
|
|
57
|
-
verifyChallenge(
|
|
58
|
-
input: VerifyChallengeRequest,
|
|
59
|
-
): Promise<ApiGatewayResponse<VerifyChallengeResponse>>;
|
|
60
|
-
|
|
61
|
-
/**
|
|
62
|
-
* POST /internal/authorize — decide allow/deny de un permiso (PDP del modelo
|
|
63
|
-
* PEP/PDP de RBAC enforcement). Invocado por el decorador `@RequirePermission`
|
|
64
|
-
* del `@fiado/gateway-adapter` vía la impl `IAuthorizer` de cada lambda consumidor.
|
|
65
|
-
* El rbac descubre el pool por `iss`, valida el token (vía connector introspect),
|
|
66
|
-
* resuelve permisos efectivos y devuelve `{ allow, reason?, context? }`.
|
|
67
|
-
*/
|
|
68
|
-
authorize(
|
|
69
|
-
input: AuthorizeRequest,
|
|
70
|
-
): Promise<ApiGatewayResponse<AuthorizeResponse>>;
|
|
71
|
-
|
|
72
|
-
/**
|
|
73
|
-
* GET /internal/users/{cognitoSub}/effective-permissions — resuelve los permisos
|
|
74
|
-
* efectivos (más epoch y role assignments) de un usuario. Invocado por el
|
|
75
|
-
* `jwt-inyector-trigger` al emitir el token para embeber el bitset RBAC.
|
|
76
|
-
* El `cognitoSub` va en el path param (encodeURIComponent en el publisher).
|
|
77
|
-
* `tenantId` es opcional y va como query param `?tenantId=`: los usuarios de
|
|
78
|
-
* plataforma resuelven sin él, pero los de un tenant LO NECESITAN para que el
|
|
79
|
-
* rbac identifique el silo (sin él, el resolve cae a la rama platform → 404).
|
|
80
|
-
*/
|
|
81
|
-
effectivePermissions(
|
|
82
|
-
cognitoSub: string,
|
|
83
|
-
tenantId?: string,
|
|
84
|
-
): Promise<ApiGatewayResponse<EffectivePermissionsResponse>>;
|
|
85
|
-
|
|
86
|
-
/**
|
|
87
|
-
* GET /internal/users/{cognitoSub}/injectable-attributes?tenantId= — devuelve los campos
|
|
88
|
-
* personalizados del usuario marcados injectToToken (ya filtrados y con valor). Invocado por
|
|
89
|
-
* jwt-inyector-trigger para estampar el claim `customAttributes`. DEC-RBAC-022.
|
|
90
|
-
*/
|
|
91
|
-
getInjectableUserAttributes(
|
|
92
|
-
cognitoSub: string,
|
|
93
|
-
tenantId: string,
|
|
94
|
-
): Promise<ApiGatewayResponse<InjectableUserAttributesResponse>>;
|
|
95
|
-
|
|
96
|
-
/** POST /internal/permissions/resolve — resuelve permisos scope-bound (set completo, paginación interna) para el RBAC enforcement del gateway-adapter. DEC-RBAC-064. */
|
|
97
|
-
resolvePermissions(input: ResolveInput): Promise<ApiGatewayResponse<ResolvedPermissions>>;
|
|
98
|
-
}
|
|
1
|
+
import { ApiGatewayResponse, ResolvedPermissions, ResolveInput } from "@fiado/gateway-adapter";
|
|
2
|
+
import {
|
|
3
|
+
DefineNextChallengeRequest,
|
|
4
|
+
DefineNextChallengeResponse,
|
|
5
|
+
PrepareChallengeRequest,
|
|
6
|
+
PrepareChallengeResponse,
|
|
7
|
+
VerifyChallengeRequest,
|
|
8
|
+
VerifyChallengeResponse,
|
|
9
|
+
AuthorizeRequest,
|
|
10
|
+
AuthorizeResponse,
|
|
11
|
+
EffectivePermissionsResponse,
|
|
12
|
+
InjectableUserAttributesResponse,
|
|
13
|
+
} from "@fiado/type-kit/bin/platformRbac/index.js";
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Contrato del publisher HTTP del lambda `platform-rbac-business` (componente 06 SureKeep Fase 0)
|
|
17
|
+
* para los 3 endpoints internos del Custom Auth Challenge flow (MFA).
|
|
18
|
+
*
|
|
19
|
+
* Consumidores: `cognito-backoffice-connector` desde los Lambda Triggers
|
|
20
|
+
* `defineAuthChallenge`, `createAuthChallenge` y `verifyAuthChallengeResponse`
|
|
21
|
+
* configurados en cada User Pool aprovisionado por la saga `TenantOnboardingManager`.
|
|
22
|
+
*
|
|
23
|
+
* Patrón de retorno: `Promise<ApiGatewayResponse<T>>` sin unwrap (v4 canonical Fiado).
|
|
24
|
+
* El consumer accede `result.body.data` para llegar al payload tipado.
|
|
25
|
+
*
|
|
26
|
+
* Env var requerida en el consumer: `PLATFORM_RBAC_BUSINESS_URL`.
|
|
27
|
+
* El template.yml del consumer la setea con:
|
|
28
|
+
*
|
|
29
|
+
* PLATFORM_RBAC_BUSINESS_URL: '{{resolve:ssm:platform-rbac-business}}'
|
|
30
|
+
*
|
|
31
|
+
* Convención CLAUDE.md global: SSM key = nombre del lambda owner de la URL.
|
|
32
|
+
*/
|
|
33
|
+
export interface IPlatformRbacBusinessApi {
|
|
34
|
+
/**
|
|
35
|
+
* POST /internal/auth/define-next-challenge — decide el próximo challenge MFA
|
|
36
|
+
* según los resultados acumulados en `session`. Invocado por el trigger
|
|
37
|
+
* `defineAuthChallenge` en cada paso del Custom Auth Challenge flow.
|
|
38
|
+
*/
|
|
39
|
+
defineNextChallenge(
|
|
40
|
+
input: DefineNextChallengeRequest,
|
|
41
|
+
): Promise<ApiGatewayResponse<DefineNextChallengeResponse>>;
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* POST /internal/auth/prepare-challenge — prepara el challenge (genera y envía
|
|
45
|
+
* código OTP por email/SMS, o computa el `privateChallenge` para TOTP).
|
|
46
|
+
* Invocado por el trigger `createAuthChallenge`.
|
|
47
|
+
*/
|
|
48
|
+
prepareChallenge(
|
|
49
|
+
input: PrepareChallengeRequest,
|
|
50
|
+
): Promise<ApiGatewayResponse<PrepareChallengeResponse>>;
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* POST /internal/auth/verify-challenge — verifica la respuesta del usuario
|
|
54
|
+
* contra el `privateChallenge`. Invocado por el trigger
|
|
55
|
+
* `verifyAuthChallengeResponse`.
|
|
56
|
+
*/
|
|
57
|
+
verifyChallenge(
|
|
58
|
+
input: VerifyChallengeRequest,
|
|
59
|
+
): Promise<ApiGatewayResponse<VerifyChallengeResponse>>;
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* POST /internal/authorize — decide allow/deny de un permiso (PDP del modelo
|
|
63
|
+
* PEP/PDP de RBAC enforcement). Invocado por el decorador `@RequirePermission`
|
|
64
|
+
* del `@fiado/gateway-adapter` vía la impl `IAuthorizer` de cada lambda consumidor.
|
|
65
|
+
* El rbac descubre el pool por `iss`, valida el token (vía connector introspect),
|
|
66
|
+
* resuelve permisos efectivos y devuelve `{ allow, reason?, context? }`.
|
|
67
|
+
*/
|
|
68
|
+
authorize(
|
|
69
|
+
input: AuthorizeRequest,
|
|
70
|
+
): Promise<ApiGatewayResponse<AuthorizeResponse>>;
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* GET /internal/users/{cognitoSub}/effective-permissions — resuelve los permisos
|
|
74
|
+
* efectivos (más epoch y role assignments) de un usuario. Invocado por el
|
|
75
|
+
* `jwt-inyector-trigger` al emitir el token para embeber el bitset RBAC.
|
|
76
|
+
* El `cognitoSub` va en el path param (encodeURIComponent en el publisher).
|
|
77
|
+
* `tenantId` es opcional y va como query param `?tenantId=`: los usuarios de
|
|
78
|
+
* plataforma resuelven sin él, pero los de un tenant LO NECESITAN para que el
|
|
79
|
+
* rbac identifique el silo (sin él, el resolve cae a la rama platform → 404).
|
|
80
|
+
*/
|
|
81
|
+
effectivePermissions(
|
|
82
|
+
cognitoSub: string,
|
|
83
|
+
tenantId?: string,
|
|
84
|
+
): Promise<ApiGatewayResponse<EffectivePermissionsResponse>>;
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* GET /internal/users/{cognitoSub}/injectable-attributes?tenantId= — devuelve los campos
|
|
88
|
+
* personalizados del usuario marcados injectToToken (ya filtrados y con valor). Invocado por
|
|
89
|
+
* jwt-inyector-trigger para estampar el claim `customAttributes`. DEC-RBAC-022.
|
|
90
|
+
*/
|
|
91
|
+
getInjectableUserAttributes(
|
|
92
|
+
cognitoSub: string,
|
|
93
|
+
tenantId: string,
|
|
94
|
+
): Promise<ApiGatewayResponse<InjectableUserAttributesResponse>>;
|
|
95
|
+
|
|
96
|
+
/** POST /internal/permissions/resolve — resuelve permisos scope-bound (set completo, paginación interna) para el RBAC enforcement del gateway-adapter. DEC-RBAC-064. */
|
|
97
|
+
resolvePermissions(input: ResolveInput): Promise<ApiGatewayResponse<ResolvedPermissions>>;
|
|
98
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export * from "./api/interfaces/IPlatformRbacBusinessApi.js";
|
|
2
|
-
export { default as PlatformRbacBusinessApi } from "./api/PlatformRbacBusinessApi.js";
|
|
3
|
-
export { ApiInvokerPermissionResolver } from "./resolver/ApiInvokerPermissionResolver.js";
|
|
4
|
-
export { apiInvokerResolverBindings } from "./resolver/apiInvokerResolverBindings.js";
|
|
1
|
+
export * from "./api/interfaces/IPlatformRbacBusinessApi.js";
|
|
2
|
+
export { default as PlatformRbacBusinessApi } from "./api/PlatformRbacBusinessApi.js";
|
|
3
|
+
export { ApiInvokerPermissionResolver } from "./resolver/ApiInvokerPermissionResolver.js";
|
|
4
|
+
export { apiInvokerResolverBindings } from "./resolver/apiInvokerResolverBindings.js";
|
|
@@ -1,59 +1,59 @@
|
|
|
1
|
-
import { injectable, inject } from "inversify";
|
|
2
|
-
import type { ResolveInput, ResolvedPermissions } from "@fiado/gateway-adapter";
|
|
3
|
-
import { TtlCache } from "@fiado/gateway-adapter";
|
|
4
|
-
import type { IPlatformRbacBusinessApi } from "../api/interfaces/IPlatformRbacBusinessApi.js";
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* DEC-RBAC-064/066: resuelve permisos invocando el endpoint privado de rbac-business vía el publisher
|
|
8
|
-
* tipado (HTTP sobre VpcEndpoint), reemplazando la lectura directa de DDB. Cachea la rama fallback;
|
|
9
|
-
* la rama token-trust NO se cachea (paridad con DdbPermissionResolver, evita poisoning).
|
|
10
|
-
* Cache key = `${issuer}#${cognitoSub}` (decisión consciente: el cliente no conoce el tenantId antes
|
|
11
|
-
* de invocar; issuer<->tenantId mapean 1:1 vía el pool).
|
|
12
|
-
*
|
|
13
|
-
* NOTA (TD-AI-002): `@fiado/gateway-adapter` NO re-exporta el tipo `IPermissionResolver` desde su
|
|
14
|
-
* barrel (`bin/index.d.ts` solo expone ResolveInput/ResolvedPermissions/ScopedAssignment/PERMISSION_RESOLVER)
|
|
15
|
-
* y su `exports` map bloquea el deep-import del sub-path bajo nodenext. Por eso esta clase implementa
|
|
16
|
-
* el contrato ESTRUCTURALMENTE (`resolve(input): Promise<ResolvedPermissions>`) sin la cláusula
|
|
17
|
-
* `implements IPermissionResolver`. TypeScript es structural-typed: la instancia es asignable al
|
|
18
|
-
* símbolo PERMISSION_RESOLVER en el binding. Ver docs/TECH_DEBT.md.
|
|
19
|
-
*/
|
|
20
|
-
@injectable()
|
|
21
|
-
export class ApiInvokerPermissionResolver {
|
|
22
|
-
private readonly _cache: TtlCache<ResolvedPermissions>;
|
|
23
|
-
constructor(
|
|
24
|
-
@inject("IPlatformRbacBusinessApi") private readonly _api: IPlatformRbacBusinessApi,
|
|
25
|
-
opts: { ttlMs: number; maxEntries: number } = {
|
|
26
|
-
ttlMs: Number(process.env.RBAC_AUTHZ_CACHE_TTL_MS) || 60000,
|
|
27
|
-
maxEntries: 500,
|
|
28
|
-
},
|
|
29
|
-
) {
|
|
30
|
-
this._cache = new TtlCache<ResolvedPermissions>(opts);
|
|
31
|
-
}
|
|
32
|
-
async resolve(input: ResolveInput): Promise<ResolvedPermissions> {
|
|
33
|
-
const cacheable = input.roleAssignmentsFromToken === undefined;
|
|
34
|
-
const key = `${input.issuer ?? ""}#${input.cognitoSub}`;
|
|
35
|
-
if (cacheable) {
|
|
36
|
-
const hit = this._cache.get(key);
|
|
37
|
-
if (hit) return hit;
|
|
38
|
-
}
|
|
39
|
-
// DEC-RBAC-071: fail-closed por propagación. Si el invoke (HTTP/VpcEndpoint) falla, se propaga:
|
|
40
|
-
// en el adapter, enforceRbac mapea solo PermissionDeniedError a 403; este error se re-lanza -> 5xx.
|
|
41
|
-
// Es fail-closed (no concede), NO un 403, y es deliberado: un fallo de red NO debe verse como
|
|
42
|
-
// "usuario sin permisos". NUNCA devolver { assignments: [] } en un catch.
|
|
43
|
-
//
|
|
44
|
-
// SHAPE (TD-AI-003): @fiado/http-client (.post) devuelve `response.data` = el BODY HTTP crudo del
|
|
45
|
-
// ApiResponse de rbac, o sea `{ code, data, msg }` — NO un ApiGatewayResponse `{ statusCode, body }`
|
|
46
|
-
// (el tipo de retorno del publisher es histórico y no refleja el runtime). El ResolvedPermissions
|
|
47
|
-
// viene en `.data`. Leer `.body` daba undefined → crash en enforceRbac. Ver docs/TECH_DEBT.md.
|
|
48
|
-
const resp = (await this._api.resolvePermissions(input)) as unknown as { data?: ResolvedPermissions };
|
|
49
|
-
const resolved = resp?.data;
|
|
50
|
-
// Fail-closed (DEC-RBAC-071): si rbac no devolvió un payload válido (403 de PRIVATE/VPC, ruta
|
|
51
|
-
// inexistente, shape inesperado), NO devolver undefined (rompería enforceRbac con TypeError) →
|
|
52
|
-
// propagar para que el adapter deny. tenantId siempre es string en un ResolvedPermissions ('' = deny).
|
|
53
|
-
if (!resolved || typeof resolved.tenantId !== "string") {
|
|
54
|
-
throw new Error("ApiInvokerPermissionResolver: respuesta de rbac sin ResolvedPermissions válido (resolvePermissions)");
|
|
55
|
-
}
|
|
56
|
-
if (cacheable) this._cache.set(key, resolved);
|
|
57
|
-
return resolved;
|
|
58
|
-
}
|
|
59
|
-
}
|
|
1
|
+
import { injectable, inject } from "inversify";
|
|
2
|
+
import type { ResolveInput, ResolvedPermissions } from "@fiado/gateway-adapter";
|
|
3
|
+
import { TtlCache } from "@fiado/gateway-adapter";
|
|
4
|
+
import type { IPlatformRbacBusinessApi } from "../api/interfaces/IPlatformRbacBusinessApi.js";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* DEC-RBAC-064/066: resuelve permisos invocando el endpoint privado de rbac-business vía el publisher
|
|
8
|
+
* tipado (HTTP sobre VpcEndpoint), reemplazando la lectura directa de DDB. Cachea la rama fallback;
|
|
9
|
+
* la rama token-trust NO se cachea (paridad con DdbPermissionResolver, evita poisoning).
|
|
10
|
+
* Cache key = `${issuer}#${cognitoSub}` (decisión consciente: el cliente no conoce el tenantId antes
|
|
11
|
+
* de invocar; issuer<->tenantId mapean 1:1 vía el pool).
|
|
12
|
+
*
|
|
13
|
+
* NOTA (TD-AI-002): `@fiado/gateway-adapter` NO re-exporta el tipo `IPermissionResolver` desde su
|
|
14
|
+
* barrel (`bin/index.d.ts` solo expone ResolveInput/ResolvedPermissions/ScopedAssignment/PERMISSION_RESOLVER)
|
|
15
|
+
* y su `exports` map bloquea el deep-import del sub-path bajo nodenext. Por eso esta clase implementa
|
|
16
|
+
* el contrato ESTRUCTURALMENTE (`resolve(input): Promise<ResolvedPermissions>`) sin la cláusula
|
|
17
|
+
* `implements IPermissionResolver`. TypeScript es structural-typed: la instancia es asignable al
|
|
18
|
+
* símbolo PERMISSION_RESOLVER en el binding. Ver docs/TECH_DEBT.md.
|
|
19
|
+
*/
|
|
20
|
+
@injectable()
|
|
21
|
+
export class ApiInvokerPermissionResolver {
|
|
22
|
+
private readonly _cache: TtlCache<ResolvedPermissions>;
|
|
23
|
+
constructor(
|
|
24
|
+
@inject("IPlatformRbacBusinessApi") private readonly _api: IPlatformRbacBusinessApi,
|
|
25
|
+
opts: { ttlMs: number; maxEntries: number } = {
|
|
26
|
+
ttlMs: Number(process.env.RBAC_AUTHZ_CACHE_TTL_MS) || 60000,
|
|
27
|
+
maxEntries: 500,
|
|
28
|
+
},
|
|
29
|
+
) {
|
|
30
|
+
this._cache = new TtlCache<ResolvedPermissions>(opts);
|
|
31
|
+
}
|
|
32
|
+
async resolve(input: ResolveInput): Promise<ResolvedPermissions> {
|
|
33
|
+
const cacheable = input.roleAssignmentsFromToken === undefined;
|
|
34
|
+
const key = `${input.issuer ?? ""}#${input.cognitoSub}`;
|
|
35
|
+
if (cacheable) {
|
|
36
|
+
const hit = this._cache.get(key);
|
|
37
|
+
if (hit) return hit;
|
|
38
|
+
}
|
|
39
|
+
// DEC-RBAC-071: fail-closed por propagación. Si el invoke (HTTP/VpcEndpoint) falla, se propaga:
|
|
40
|
+
// en el adapter, enforceRbac mapea solo PermissionDeniedError a 403; este error se re-lanza -> 5xx.
|
|
41
|
+
// Es fail-closed (no concede), NO un 403, y es deliberado: un fallo de red NO debe verse como
|
|
42
|
+
// "usuario sin permisos". NUNCA devolver { assignments: [] } en un catch.
|
|
43
|
+
//
|
|
44
|
+
// SHAPE (TD-AI-003): @fiado/http-client (.post) devuelve `response.data` = el BODY HTTP crudo del
|
|
45
|
+
// ApiResponse de rbac, o sea `{ code, data, msg }` — NO un ApiGatewayResponse `{ statusCode, body }`
|
|
46
|
+
// (el tipo de retorno del publisher es histórico y no refleja el runtime). El ResolvedPermissions
|
|
47
|
+
// viene en `.data`. Leer `.body` daba undefined → crash en enforceRbac. Ver docs/TECH_DEBT.md.
|
|
48
|
+
const resp = (await this._api.resolvePermissions(input)) as unknown as { data?: ResolvedPermissions };
|
|
49
|
+
const resolved = resp?.data;
|
|
50
|
+
// Fail-closed (DEC-RBAC-071): si rbac no devolvió un payload válido (403 de PRIVATE/VPC, ruta
|
|
51
|
+
// inexistente, shape inesperado), NO devolver undefined (rompería enforceRbac con TypeError) →
|
|
52
|
+
// propagar para que el adapter deny. tenantId siempre es string en un ResolvedPermissions ('' = deny).
|
|
53
|
+
if (!resolved || typeof resolved.tenantId !== "string") {
|
|
54
|
+
throw new Error("ApiInvokerPermissionResolver: respuesta de rbac sin ResolvedPermissions válido (resolvePermissions)");
|
|
55
|
+
}
|
|
56
|
+
if (cacheable) this._cache.set(key, resolved);
|
|
57
|
+
return resolved;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
import { ContainerModule } from "inversify";
|
|
2
|
-
import { PERMISSION_RESOLVER } from "@fiado/gateway-adapter";
|
|
3
|
-
import type { ResolvedPermissions, ResolveInput } from "@fiado/gateway-adapter";
|
|
4
|
-
import type { IPlatformRbacBusinessApi } from "../api/interfaces/IPlatformRbacBusinessApi.js";
|
|
5
|
-
import { ApiInvokerPermissionResolver } from "./ApiInvokerPermissionResolver.js";
|
|
6
|
-
|
|
7
|
-
/** Contrato estructural de `IPermissionResolver` del gateway-adapter.
|
|
8
|
-
* El barrel del adapter no re-exporta el tipo `IPermissionResolver` (ver TD-AI-002 en
|
|
9
|
-
* ApiInvokerPermissionResolver.ts), así que se replica el shape mínimo para tipar el binding. */
|
|
10
|
-
type IPermissionResolver = {
|
|
11
|
-
resolve(input: ResolveInput): Promise<ResolvedPermissions>;
|
|
12
|
-
};
|
|
13
|
-
|
|
14
|
-
/** DEC-RBAC-066: bindea ApiInvokerPermissionResolver al símbolo PERMISSION_RESOLVER de gateway-adapter.
|
|
15
|
-
* El lambda consumidor carga este módulo DESPUÉS de gatewayAdapterBindings y de bindear "IPlatformRbacBusinessApi". */
|
|
16
|
-
export const apiInvokerResolverBindings = new ContainerModule(({ bind }) => {
|
|
17
|
-
bind<IPermissionResolver>(PERMISSION_RESOLVER)
|
|
18
|
-
.toDynamicValue((ctx) => {
|
|
19
|
-
const api = ctx.get<IPlatformRbacBusinessApi>("IPlatformRbacBusinessApi");
|
|
20
|
-
return new ApiInvokerPermissionResolver(api);
|
|
21
|
-
})
|
|
22
|
-
.inSingletonScope();
|
|
23
|
-
});
|
|
1
|
+
import { ContainerModule } from "inversify";
|
|
2
|
+
import { PERMISSION_RESOLVER } from "@fiado/gateway-adapter";
|
|
3
|
+
import type { ResolvedPermissions, ResolveInput } from "@fiado/gateway-adapter";
|
|
4
|
+
import type { IPlatformRbacBusinessApi } from "../api/interfaces/IPlatformRbacBusinessApi.js";
|
|
5
|
+
import { ApiInvokerPermissionResolver } from "./ApiInvokerPermissionResolver.js";
|
|
6
|
+
|
|
7
|
+
/** Contrato estructural de `IPermissionResolver` del gateway-adapter.
|
|
8
|
+
* El barrel del adapter no re-exporta el tipo `IPermissionResolver` (ver TD-AI-002 en
|
|
9
|
+
* ApiInvokerPermissionResolver.ts), así que se replica el shape mínimo para tipar el binding. */
|
|
10
|
+
type IPermissionResolver = {
|
|
11
|
+
resolve(input: ResolveInput): Promise<ResolvedPermissions>;
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
/** DEC-RBAC-066: bindea ApiInvokerPermissionResolver al símbolo PERMISSION_RESOLVER de gateway-adapter.
|
|
15
|
+
* El lambda consumidor carga este módulo DESPUÉS de gatewayAdapterBindings y de bindear "IPlatformRbacBusinessApi". */
|
|
16
|
+
export const apiInvokerResolverBindings = new ContainerModule(({ bind }) => {
|
|
17
|
+
bind<IPermissionResolver>(PERMISSION_RESOLVER)
|
|
18
|
+
.toDynamicValue((ctx) => {
|
|
19
|
+
const api = ctx.get<IPlatformRbacBusinessApi>("IPlatformRbacBusinessApi");
|
|
20
|
+
return new ApiInvokerPermissionResolver(api);
|
|
21
|
+
})
|
|
22
|
+
.inSingletonScope();
|
|
23
|
+
});
|
|
@@ -1,109 +1,109 @@
|
|
|
1
|
-
import { IPomeloApi } from "./interfaces/IPomeloApi.js";
|
|
2
|
-
import { inject, injectable } from "inversify";
|
|
3
|
-
import { IHttpRequest } from "@fiado/http-client";
|
|
4
|
-
import { CreateBankAccountRequest, CreateBankAccountUserRequest, UpdateBankAccountUserRequest } from "@fiado/type-kit/bin/account/index.js";
|
|
5
|
-
import { ActivateBankAccountCardRequest, AssignCardRequest, CreateBankAccountCardShippingRequest, GetBankAccountShippingRequest, UpdateBankAccountCardRequest } from "@fiado/type-kit/bin/card/index.js";
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
@injectable()
|
|
9
|
-
export default class PomeloApi implements IPomeloApi {
|
|
10
|
-
|
|
11
|
-
private readonly baseUrl = process.env.POMELO_LAMBDA_URL || "";
|
|
12
|
-
|
|
13
|
-
constructor(@inject("IHttpRequest") private httpRequest: IHttpRequest) {
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
//USER
|
|
17
|
-
async createUser(request: CreateBankAccountUserRequest): Promise<any> {
|
|
18
|
-
const url: string = `${this.baseUrl}users/create`;
|
|
19
|
-
return await this.httpRequest.post(url, request);
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
public async getUserById(externalUserId: string): Promise<any> {
|
|
23
|
-
const url: string = `${this.baseUrl}users/${externalUserId}`;
|
|
24
|
-
return await this.httpRequest.get(url);
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
public async updateUser(object: UpdateBankAccountUserRequest): Promise<any> {
|
|
28
|
-
const url: string = `${this.baseUrl}/users/${object.id}`;
|
|
29
|
-
return await this.httpRequest.put(url, object);
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
// //Card
|
|
33
|
-
public async getCardSensitiveInformation(externalCardId: string, externalUserId?: string): Promise<any> {
|
|
34
|
-
const url: string = `${this.baseUrl}cards/${externalCardId}/sensitive?externalUserId=${externalUserId}`;
|
|
35
|
-
return await this.httpRequest.get(url);
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
public async getCardByIdExternal(externalCardId: string): Promise<any> {
|
|
39
|
-
const url: string = `${this.baseUrl}cards/${externalCardId}/detail`;
|
|
40
|
-
return await this.httpRequest.get(url);
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
public async getCardsById(externalCardId: string): Promise<any> {
|
|
44
|
-
const url: string = `${this.baseUrl}cards?externalCardId=${externalCardId}`;
|
|
45
|
-
return await this.httpRequest.get(url);
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
public async getCardsByUserId(externalUserId: string): Promise<any> {
|
|
49
|
-
const url: string = `${this.baseUrl}cards?externalUserId=${externalUserId}`;
|
|
50
|
-
return await this.httpRequest.get(url);
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
public async createCard(object: CreateBankAccountRequest): Promise<any> {
|
|
54
|
-
const url: string = `${this.baseUrl}cards/create`;
|
|
55
|
-
return await this.httpRequest.post(url, object);
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
public async blockCard(object: UpdateBankAccountCardRequest): Promise<any> {
|
|
59
|
-
const url: string = `${this.baseUrl}cards/${object.cardId}/`;
|
|
60
|
-
return await this.httpRequest.put(url, object);
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
public async changePin(object: UpdateBankAccountCardRequest): Promise<any> {
|
|
64
|
-
const url: string = `${this.baseUrl}cards/${object.cardId}/`;
|
|
65
|
-
return await this.httpRequest.put(url, object);
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
public async updateCard(object: UpdateBankAccountCardRequest): Promise<any> {
|
|
69
|
-
const url: string = `${this.baseUrl}cards/${object.cardId}/`;
|
|
70
|
-
return await this.httpRequest.put(url, object);
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
public async activateCard(object: ActivateBankAccountCardRequest): Promise<any> {
|
|
74
|
-
const url: string = `${this.baseUrl}cards/activate`;
|
|
75
|
-
return await this.httpRequest.post(url, object);
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
public async assignCardToUser(request: AssignCardRequest): Promise<any> {
|
|
79
|
-
const url: string = `${this.baseUrl}cards/activate`;
|
|
80
|
-
return await this.httpRequest.post(url, request);
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
public async getUserToken(externalUserId:string): Promise<any> {
|
|
84
|
-
const url: string = `${this.baseUrl}user/token/${externalUserId}`;
|
|
85
|
-
return await this.httpRequest.get(url);
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
// //Shipping
|
|
90
|
-
|
|
91
|
-
public async createShipment(object: CreateBankAccountCardShippingRequest): Promise<any> {
|
|
92
|
-
const url: string = `${this.baseUrl}shipment/create`;
|
|
93
|
-
return await this.httpRequest.post(url, object);
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
public async getShipment(object: GetBankAccountShippingRequest): Promise<any> {
|
|
97
|
-
const url: string = `${this.baseUrl}shipment/${object.externalShippingId}`;
|
|
98
|
-
return await this.httpRequest.get(url);
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
// public async replaceCardByExternalId(object: ExternalReplaceCardRequest): Promise<any> {
|
|
102
|
-
// const url: string = `${this.baseUrl}cards/${object.externalCardId}/replace`;
|
|
103
|
-
// return await this.httpRequest.put(url, object);
|
|
104
|
-
// }
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
}
|
|
1
|
+
import { IPomeloApi } from "./interfaces/IPomeloApi.js";
|
|
2
|
+
import { inject, injectable } from "inversify";
|
|
3
|
+
import { IHttpRequest } from "@fiado/http-client";
|
|
4
|
+
import { CreateBankAccountRequest, CreateBankAccountUserRequest, UpdateBankAccountUserRequest } from "@fiado/type-kit/bin/account/index.js";
|
|
5
|
+
import { ActivateBankAccountCardRequest, AssignCardRequest, CreateBankAccountCardShippingRequest, GetBankAccountShippingRequest, UpdateBankAccountCardRequest } from "@fiado/type-kit/bin/card/index.js";
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
@injectable()
|
|
9
|
+
export default class PomeloApi implements IPomeloApi {
|
|
10
|
+
|
|
11
|
+
private readonly baseUrl = process.env.POMELO_LAMBDA_URL || "";
|
|
12
|
+
|
|
13
|
+
constructor(@inject("IHttpRequest") private httpRequest: IHttpRequest) {
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
//USER
|
|
17
|
+
async createUser(request: CreateBankAccountUserRequest): Promise<any> {
|
|
18
|
+
const url: string = `${this.baseUrl}users/create`;
|
|
19
|
+
return await this.httpRequest.post(url, request);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
public async getUserById(externalUserId: string): Promise<any> {
|
|
23
|
+
const url: string = `${this.baseUrl}users/${externalUserId}`;
|
|
24
|
+
return await this.httpRequest.get(url);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
public async updateUser(object: UpdateBankAccountUserRequest): Promise<any> {
|
|
28
|
+
const url: string = `${this.baseUrl}/users/${object.id}`;
|
|
29
|
+
return await this.httpRequest.put(url, object);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
// //Card
|
|
33
|
+
public async getCardSensitiveInformation(externalCardId: string, externalUserId?: string): Promise<any> {
|
|
34
|
+
const url: string = `${this.baseUrl}cards/${externalCardId}/sensitive?externalUserId=${externalUserId}`;
|
|
35
|
+
return await this.httpRequest.get(url);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
public async getCardByIdExternal(externalCardId: string): Promise<any> {
|
|
39
|
+
const url: string = `${this.baseUrl}cards/${externalCardId}/detail`;
|
|
40
|
+
return await this.httpRequest.get(url);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
public async getCardsById(externalCardId: string): Promise<any> {
|
|
44
|
+
const url: string = `${this.baseUrl}cards?externalCardId=${externalCardId}`;
|
|
45
|
+
return await this.httpRequest.get(url);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
public async getCardsByUserId(externalUserId: string): Promise<any> {
|
|
49
|
+
const url: string = `${this.baseUrl}cards?externalUserId=${externalUserId}`;
|
|
50
|
+
return await this.httpRequest.get(url);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
public async createCard(object: CreateBankAccountRequest): Promise<any> {
|
|
54
|
+
const url: string = `${this.baseUrl}cards/create`;
|
|
55
|
+
return await this.httpRequest.post(url, object);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
public async blockCard(object: UpdateBankAccountCardRequest): Promise<any> {
|
|
59
|
+
const url: string = `${this.baseUrl}cards/${object.cardId}/`;
|
|
60
|
+
return await this.httpRequest.put(url, object);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
public async changePin(object: UpdateBankAccountCardRequest): Promise<any> {
|
|
64
|
+
const url: string = `${this.baseUrl}cards/${object.cardId}/`;
|
|
65
|
+
return await this.httpRequest.put(url, object);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
public async updateCard(object: UpdateBankAccountCardRequest): Promise<any> {
|
|
69
|
+
const url: string = `${this.baseUrl}cards/${object.cardId}/`;
|
|
70
|
+
return await this.httpRequest.put(url, object);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
public async activateCard(object: ActivateBankAccountCardRequest): Promise<any> {
|
|
74
|
+
const url: string = `${this.baseUrl}cards/activate`;
|
|
75
|
+
return await this.httpRequest.post(url, object);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
public async assignCardToUser(request: AssignCardRequest): Promise<any> {
|
|
79
|
+
const url: string = `${this.baseUrl}cards/activate`;
|
|
80
|
+
return await this.httpRequest.post(url, request);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
public async getUserToken(externalUserId:string): Promise<any> {
|
|
84
|
+
const url: string = `${this.baseUrl}user/token/${externalUserId}`;
|
|
85
|
+
return await this.httpRequest.get(url);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
// //Shipping
|
|
90
|
+
|
|
91
|
+
public async createShipment(object: CreateBankAccountCardShippingRequest): Promise<any> {
|
|
92
|
+
const url: string = `${this.baseUrl}shipment/create`;
|
|
93
|
+
return await this.httpRequest.post(url, object);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
public async getShipment(object: GetBankAccountShippingRequest): Promise<any> {
|
|
97
|
+
const url: string = `${this.baseUrl}shipment/${object.externalShippingId}`;
|
|
98
|
+
return await this.httpRequest.get(url);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
// public async replaceCardByExternalId(object: ExternalReplaceCardRequest): Promise<any> {
|
|
102
|
+
// const url: string = `${this.baseUrl}cards/${object.externalCardId}/replace`;
|
|
103
|
+
// return await this.httpRequest.put(url, object);
|
|
104
|
+
// }
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
}
|