Eventos de Dominio
Lana Bank publica eventos de dominio a traves del patron de outbox transaccional. Estos eventos pueden ser consumidos por sistemas externos para integracion, analitica y auditoria.
Todos los eventos se serializan como JSON e incluyen metadatos para trazabilidad y ordenamiento.
Estructura del Evento
Cada evento esta envuelto en un sobre con la siguiente estructura:
{
"id": "uuid",
"event_type": "core.credit.facility-activated",
"payload": { ... },
"recorded_at": "2024-01-15T10:30:00Z",
"trace_id": "trace-uuid"
}
Access Events
Eventos relacionados con la gestion de usuarios y roles.
| Event | Description | Payload Fields |
|---|---|---|
UserCreated | Se creo un nuevo usuario | entity.email, entity.id, entity.role_id |
RoleCreated | Se creo un nuevo rol | entity.id, entity.name |
Accounting Events
Eventos relacionados con el plan de cuentas y las operaciones contables.
| Event | Description | Payload Fields |
|---|---|---|
LedgerAccountCsvExportUploaded | Se cargó una exportación CSV de cuentas del libro mayor | id, ledger_account_id |
ChartNodeCreated | Se creó un nodo del plan de cuentas | entity.account_set_id, entity.chart_id, entity.code, entity.id, entity.name |
Credit Events
Eventos relacionados con el ciclo de vida y operaciones de facilidades de credito.
| Event | Description | Payload Fields |
|---|---|---|
FacilityProposalCreated | Se creo una propuesta de facilidad de credito | entity.amount, entity.created_at, entity.customer_id, entity.id, entity.status, entity.terms |
FacilityProposalConcluded | FacilityProposalConcluded | entity.amount, entity.created_at, entity.customer_id, entity.id, entity.status, entity.terms |
PendingCreditFacilityCollateralizationChanged | Cambio el estado de colateralizacion para facilidad pendiente | entity.amount, entity.collateralization, entity.completed_at, entity.created_at, entity.credit_facility_proposal_id, entity.customer_id, entity.id, entity.status, entity.terms |
PendingCreditFacilityCompleted | PendingCreditFacilityCompleted | entity.amount, entity.collateralization, entity.completed_at, entity.created_at, entity.credit_facility_proposal_id, entity.customer_id, entity.id, entity.status, entity.terms |
FacilityActivated | Se activo una facilidad de credito | entity.account_ids, entity.accrual_spec, entity.activated_at, entity.activation_tx_id, entity.amount, entity.collateral_id, entity.collateralization, entity.completed_at, entity.customer_id, entity.id, entity.liquidation_trigger, entity.pending_credit_facility_id, entity.terms |
FacilityCompleted | Una facilidad de credito fue totalmente pagada y cerrada | entity.account_ids, entity.accrual_spec, entity.activated_at, entity.activation_tx_id, entity.amount, entity.collateral_id, entity.collateralization, entity.completed_at, entity.customer_id, entity.id, entity.liquidation_trigger, entity.pending_credit_facility_id, entity.terms |
FacilityCollateralizationChanged | Cambio el estado de colateralizacion para facilidad activa | entity.account_ids, entity.accrual_spec, entity.activated_at, entity.activation_tx_id, entity.amount, entity.collateral_id, entity.collateralization, entity.completed_at, entity.customer_id, entity.id, entity.liquidation_trigger, entity.pending_credit_facility_id, entity.terms |
DisbursalInitialized | Se inició un desembolso y está pendiente de aprobación | entity.amount, entity.approved, entity.cancelled, entity.credit_facility_id, entity.due_date, entity.id, entity.obligation_id, entity.settlement, entity.status |
DisbursalApprovalConcluded | DisbursalApprovalConcluded | entity.amount, entity.approved, entity.cancelled, entity.credit_facility_id, entity.due_date, entity.id, entity.obligation_id, entity.settlement, entity.status |
DisbursalSettled | Se liquido un desembolso | entity.amount, entity.approved, entity.cancelled, entity.credit_facility_id, entity.due_date, entity.id, entity.obligation_id, entity.settlement, entity.status |
DisbursalCancelled | Se canceló un desembolso | entity.amount, entity.approved, entity.cancelled, entity.credit_facility_id, entity.due_date, entity.id, entity.obligation_id, entity.settlement, entity.status |
AccrualPosted | Se registro el devengamiento de intereses | entity.credit_facility_id, entity.due_at, entity.id, entity.period, entity.posting |
FacilityMatured | No description available | entity.account_ids, entity.accrual_spec, entity.activated_at, entity.activation_tx_id, entity.amount, entity.collateral_id, entity.collateralization, entity.completed_at, entity.customer_id, entity.id, entity.liquidation_trigger, entity.pending_credit_facility_id, entity.terms |
PartialLiquidationInitiated | Se inicio una liquidacion parcial | entity.account_ids, entity.accrual_spec, entity.activated_at, entity.activation_tx_id, entity.amount, entity.collateral_id, entity.collateralization, entity.completed_at, entity.customer_id, entity.id, entity.liquidation_trigger, entity.pending_credit_facility_id, entity.terms |
CreditCollateral Events
CoreCreditCollateralEvent module_description
| Event | Description | Payload Fields |
|---|---|---|
CollateralUpdated | CollateralUpdated | entity.adjustment, entity.amount, entity.id, entity.secured_loan_id |
LiquidationCollateralSentOut | LiquidationCollateralSentOut | amount, effective, ledger_tx_id, liquidation_id, recorded_at, secured_loan_id |
LiquidationProceedsReceived | LiquidationProceedsReceived | amount, collateral_id, effective, ledger_tx_id, liquidation_id, payment_id, recorded_at, secured_loan_id |
LiquidationCompleted | LiquidationCompleted | liquidation_id, secured_loan_id |
CreditCollection Events
CoreCreditCollectionEvent module_description
| Event | Description | Payload Fields |
|---|---|---|
PaymentCreated | PaymentCreated | entity.amount, entity.beneficiary_id, entity.effective, entity.id, entity.recorded_at |
PaymentAllocationCreated | PaymentAllocationCreated | entity.amount, entity.beneficiary_id, entity.effective, entity.id, entity.obligation_id, entity.obligation_type, entity.payment_id, entity.recorded_at |
ObligationCreated | Se creo una nueva obligacion | entity.beneficiary_id, entity.defaulted_at, entity.due_at, entity.effective, entity.id, entity.initial_amount, entity.obligation_type, entity.outstanding_amount, entity.overdue_at, entity.recorded_at |
ObligationDue | Una obligacion vencio | entity.beneficiary_id, entity.defaulted_at, entity.due_at, entity.effective, entity.id, entity.initial_amount, entity.obligation_type, entity.outstanding_amount, entity.overdue_at, entity.recorded_at |
ObligationOverdue | Una obligacion entro en mora | entity.beneficiary_id, entity.defaulted_at, entity.due_at, entity.effective, entity.id, entity.initial_amount, entity.obligation_type, entity.outstanding_amount, entity.overdue_at, entity.recorded_at |
ObligationDefaulted | Una obligacion entro en incumplimiento | entity.beneficiary_id, entity.defaulted_at, entity.due_at, entity.effective, entity.id, entity.initial_amount, entity.obligation_type, entity.outstanding_amount, entity.overdue_at, entity.recorded_at |
ObligationCompleted | Una obligacion fue completamente pagada | entity.beneficiary_id, entity.defaulted_at, entity.due_at, entity.effective, entity.id, entity.initial_amount, entity.obligation_type, entity.outstanding_amount, entity.overdue_at, entity.recorded_at |
Custody Events
Eventos relacionados con custodia de Bitcoin y gestion de billeteras.
| Event | Description | Payload Fields |
|---|---|---|
WalletBalanceUpdated | No description available | entity.address, entity.balance, entity.id, entity.network |
Customer Events
Eventos relacionados con el ciclo de vida del cliente y KYC.
| Event | Description | Payload Fields |
|---|---|---|
CustomerCreated | Se creo un nuevo cliente | entity.id, entity.party_id, entity.status |
CustomerFrozen | Se congelo una cuenta de cliente, bloqueando operaciones financieras | entity.id, entity.party_id, entity.status |
CustomerUnfrozen | Se descongelo una cuenta de cliente previamente congelada, restaurando operaciones normales | entity.id, entity.party_id, entity.status |
CustomerClosed | La cuenta del cliente fue cerrada | entity.id, entity.party_id, entity.status |
PartyCreated | No description available | entity.customer_type, entity.email, entity.id |
PartyEmailUpdated | No description available | entity.customer_type, entity.email, entity.id |
ProspectCreated | Se creó un nuevo prospecto para la incorporación | entity.id, entity.kyc_status, entity.party_id, entity.stage |
ProspectKycStarted | Un prospecto inició la verificación KYC | entity.id, entity.kyc_status, entity.party_id, entity.stage |
ProspectKycPending | La verificación KYC de un prospecto está pendiente de revisión | entity.id, entity.kyc_status, entity.party_id, entity.stage |
ProspectKycDeclined | La verificación KYC de un prospecto fue rechazada | entity.id, entity.kyc_status, entity.party_id, entity.stage |
ProspectConverted | Un prospecto fue convertido en cliente | entity.id, entity.kyc_status, entity.party_id, entity.stage |
ProspectClosed | Un prospecto fue cerrado sin conversión | entity.id, entity.kyc_status, entity.party_id, entity.stage |
Deposit Events
Eventos relacionados con cuentas de deposito y transacciones.
| Event | Description | Payload Fields |
|---|---|---|
DepositAccountCreated | Se creo una cuenta de deposito | entity.account_holder_id, entity.currency, entity.id |
DepositInitialized | Se inicializo un deposito | entity.amount, entity.deposit_account_id, entity.id, entity.reference, entity.status |
DepositReverted | Se revirtio un deposito | entity.amount, entity.deposit_account_id, entity.id, entity.reference, entity.status |
WithdrawalInitialized | Se inició un retiro y está pendiente de aprobación | entity.amount, entity.deposit_account_id, entity.id, entity.reference, entity.status |
WithdrawalApprovalConcluded | Se concluyó el proceso de aprobación de un retiro | entity.amount, entity.deposit_account_id, entity.id, entity.reference, entity.status |
WithdrawalDenied | Se denegó un retiro | entity.amount, entity.deposit_account_id, entity.id, entity.reference, entity.status |
WithdrawalConfirmed | Se confirmo un retiro | entity.amount, entity.deposit_account_id, entity.id, entity.reference, entity.status |
WithdrawalCancelled | Se canceló un retiro | entity.amount, entity.deposit_account_id, entity.id, entity.reference, entity.status |
WithdrawalReverted | Se revirtió un retiro confirmado | entity.amount, entity.deposit_account_id, entity.id, entity.reference, entity.status |
Price Events
Eventos relacionados con actualizaciones de precio BTC/USD.
| Event | Description | Payload Fields |
|---|---|---|
PriceUpdated | Se actualizo el precio BTC/USD | price, timestamp |
ProviderPriceFetched | No description available | price, provider_id, timestamp |
Report Events
Eventos relacionados con generacion de reportes.
| Event | Description | Payload Fields |
|---|---|---|
ReportRunCreated | Se inicio una ejecucion de reporte | entity |
ReportRunStateUpdated | Cambio el estado de ejecucion de reporte | entity |
Governance Events
Eventos relacionados con flujos de aprobacion.
| Event | Description | Payload Fields |
|---|---|---|
ApprovalProcessConcluded | Se concluyo un proceso de aprobacion | entity.id, entity.process_type, entity.status, entity.target_ref |
Time Events
CoreTimeEvent module_description
| Event | Description | Payload Fields |
|---|---|---|
EndOfDay | EndOfDay | closing_time, day, timezone |
Referencia de Tipos de Eventos
Todos los tipos de eventos siguen la convencion de nombres: core.<module>.<event-name>
| Modulo | Prefijo de Tipo de Evento |
|---|---|
| Access | core.access.* |
| Accounting | core.accounting.* |
| Credit | core.credit.* |
| CreditCollateral | core.credit-collateral.* |
| CreditCollection | core.credit-collection.* |
| Custody | core.custody.* |
| Customer | core.customer.* |
| Deposit | core.deposit.* |
| Price | core.price.* |
| Report | core.report.* |
| Governance | governance.* |
| Time | core.time.* |
Consumiendo Eventos
Los eventos se publican a traves del outbox transaccional y se pueden consumir mediante:
- Consulta directa a la base de datos - Consultar la tabla de outbox
- Streaming de eventos - Integracion con colas de mensajes (dependiente de la implementacion)
- Pipelines ETL - Via extraccion de Meltano
Para detalles de integracion, contacte al equipo de plataforma.