Saltar al contenido principal
Version: Siguiente

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.

EventDescriptionPayload Fields
UserCreatedSe creo un nuevo usuarioentity.email, entity.id, entity.role_id
RoleCreatedSe creo un nuevo rolentity.id, entity.name

Accounting Events

Eventos relacionados con el plan de cuentas y las operaciones contables.

EventDescriptionPayload Fields
LedgerAccountCsvExportUploadedSe cargó una exportación CSV de cuentas del libro mayorid, ledger_account_id
ChartNodeCreatedSe creó un nodo del plan de cuentasentity.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.

EventDescriptionPayload Fields
FacilityProposalCreatedSe creo una propuesta de facilidad de creditoentity.amount, entity.created_at, entity.customer_id, entity.id, entity.status, entity.terms
FacilityProposalConcludedFacilityProposalConcludedentity.amount, entity.created_at, entity.customer_id, entity.id, entity.status, entity.terms
PendingCreditFacilityCollateralizationChangedCambio el estado de colateralizacion para facilidad pendienteentity.amount, entity.collateralization, entity.completed_at, entity.created_at, entity.credit_facility_proposal_id, entity.customer_id, entity.id, entity.status, entity.terms
PendingCreditFacilityCompletedPendingCreditFacilityCompletedentity.amount, entity.collateralization, entity.completed_at, entity.created_at, entity.credit_facility_proposal_id, entity.customer_id, entity.id, entity.status, entity.terms
FacilityActivatedSe activo una facilidad de creditoentity.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
FacilityCompletedUna facilidad de credito fue totalmente pagada y cerradaentity.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
FacilityCollateralizationChangedCambio el estado de colateralizacion para facilidad activaentity.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
DisbursalInitializedSe inició un desembolso y está pendiente de aprobaciónentity.amount, entity.approved, entity.cancelled, entity.credit_facility_id, entity.due_date, entity.id, entity.obligation_id, entity.settlement, entity.status
DisbursalApprovalConcludedDisbursalApprovalConcludedentity.amount, entity.approved, entity.cancelled, entity.credit_facility_id, entity.due_date, entity.id, entity.obligation_id, entity.settlement, entity.status
DisbursalSettledSe liquido un desembolsoentity.amount, entity.approved, entity.cancelled, entity.credit_facility_id, entity.due_date, entity.id, entity.obligation_id, entity.settlement, entity.status
DisbursalCancelledSe canceló un desembolsoentity.amount, entity.approved, entity.cancelled, entity.credit_facility_id, entity.due_date, entity.id, entity.obligation_id, entity.settlement, entity.status
AccrualPostedSe registro el devengamiento de interesesentity.credit_facility_id, entity.due_at, entity.id, entity.period, entity.posting
FacilityMaturedNo description availableentity.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
PartialLiquidationInitiatedSe inicio una liquidacion parcialentity.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

EventDescriptionPayload Fields
CollateralUpdatedCollateralUpdatedentity.adjustment, entity.amount, entity.id, entity.secured_loan_id
LiquidationCollateralSentOutLiquidationCollateralSentOutamount, effective, ledger_tx_id, liquidation_id, recorded_at, secured_loan_id
LiquidationProceedsReceivedLiquidationProceedsReceivedamount, collateral_id, effective, ledger_tx_id, liquidation_id, payment_id, recorded_at, secured_loan_id
LiquidationCompletedLiquidationCompletedliquidation_id, secured_loan_id

CreditCollection Events

CoreCreditCollectionEvent module_description

EventDescriptionPayload Fields
PaymentCreatedPaymentCreatedentity.amount, entity.beneficiary_id, entity.effective, entity.id, entity.recorded_at
PaymentAllocationCreatedPaymentAllocationCreatedentity.amount, entity.beneficiary_id, entity.effective, entity.id, entity.obligation_id, entity.obligation_type, entity.payment_id, entity.recorded_at
ObligationCreatedSe creo una nueva obligacionentity.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
ObligationDueUna obligacion vencioentity.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
ObligationOverdueUna obligacion entro en moraentity.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
ObligationDefaultedUna obligacion entro en incumplimientoentity.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
ObligationCompletedUna obligacion fue completamente pagadaentity.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.

EventDescriptionPayload Fields
WalletBalanceUpdatedNo description availableentity.address, entity.balance, entity.id, entity.network

Customer Events

Eventos relacionados con el ciclo de vida del cliente y KYC.

EventDescriptionPayload Fields
CustomerCreatedSe creo un nuevo clienteentity.id, entity.party_id, entity.status
CustomerFrozenSe congelo una cuenta de cliente, bloqueando operaciones financierasentity.id, entity.party_id, entity.status
CustomerUnfrozenSe descongelo una cuenta de cliente previamente congelada, restaurando operaciones normalesentity.id, entity.party_id, entity.status
CustomerClosedLa cuenta del cliente fue cerradaentity.id, entity.party_id, entity.status
PartyCreatedNo description availableentity.customer_type, entity.email, entity.id
PartyEmailUpdatedNo description availableentity.customer_type, entity.email, entity.id
ProspectCreatedSe creó un nuevo prospecto para la incorporaciónentity.id, entity.kyc_status, entity.party_id, entity.stage
ProspectKycStartedUn prospecto inició la verificación KYCentity.id, entity.kyc_status, entity.party_id, entity.stage
ProspectKycPendingLa verificación KYC de un prospecto está pendiente de revisiónentity.id, entity.kyc_status, entity.party_id, entity.stage
ProspectKycDeclinedLa verificación KYC de un prospecto fue rechazadaentity.id, entity.kyc_status, entity.party_id, entity.stage
ProspectConvertedUn prospecto fue convertido en clienteentity.id, entity.kyc_status, entity.party_id, entity.stage
ProspectClosedUn prospecto fue cerrado sin conversiónentity.id, entity.kyc_status, entity.party_id, entity.stage

Deposit Events

Eventos relacionados con cuentas de deposito y transacciones.

EventDescriptionPayload Fields
DepositAccountCreatedSe creo una cuenta de depositoentity.account_holder_id, entity.currency, entity.id
DepositInitializedSe inicializo un depositoentity.amount, entity.deposit_account_id, entity.id, entity.reference, entity.status
DepositRevertedSe revirtio un depositoentity.amount, entity.deposit_account_id, entity.id, entity.reference, entity.status
WithdrawalInitializedSe inició un retiro y está pendiente de aprobaciónentity.amount, entity.deposit_account_id, entity.id, entity.reference, entity.status
WithdrawalApprovalConcludedSe concluyó el proceso de aprobación de un retiroentity.amount, entity.deposit_account_id, entity.id, entity.reference, entity.status
WithdrawalDeniedSe denegó un retiroentity.amount, entity.deposit_account_id, entity.id, entity.reference, entity.status
WithdrawalConfirmedSe confirmo un retiroentity.amount, entity.deposit_account_id, entity.id, entity.reference, entity.status
WithdrawalCancelledSe canceló un retiroentity.amount, entity.deposit_account_id, entity.id, entity.reference, entity.status
WithdrawalRevertedSe revirtió un retiro confirmadoentity.amount, entity.deposit_account_id, entity.id, entity.reference, entity.status

Price Events

Eventos relacionados con actualizaciones de precio BTC/USD.

EventDescriptionPayload Fields
PriceUpdatedSe actualizo el precio BTC/USDprice, timestamp
ProviderPriceFetchedNo description availableprice, provider_id, timestamp

Report Events

Eventos relacionados con generacion de reportes.

EventDescriptionPayload Fields
ReportRunCreatedSe inicio una ejecucion de reporteentity
ReportRunStateUpdatedCambio el estado de ejecucion de reporteentity

Governance Events

Eventos relacionados con flujos de aprobacion.

EventDescriptionPayload Fields
ApprovalProcessConcludedSe concluyo un proceso de aprobacionentity.id, entity.process_type, entity.status, entity.target_ref

Time Events

CoreTimeEvent module_description

EventDescriptionPayload Fields
EndOfDayEndOfDayclosing_time, day, timezone

Referencia de Tipos de Eventos

Todos los tipos de eventos siguen la convencion de nombres: core.<module>.<event-name>

ModuloPrefijo de Tipo de Evento
Accesscore.access.*
Accountingcore.accounting.*
Creditcore.credit.*
CreditCollateralcore.credit-collateral.*
CreditCollectioncore.credit-collection.*
Custodycore.custody.*
Customercore.customer.*
Depositcore.deposit.*
Pricecore.price.*
Reportcore.report.*
Governancegovernance.*
Timecore.time.*

Consumiendo Eventos

Los eventos se publican a traves del outbox transaccional y se pueden consumir mediante:

  1. Consulta directa a la base de datos - Consultar la tabla de outbox
  2. Streaming de eventos - Integracion con colas de mensajes (dependiente de la implementacion)
  3. Pipelines ETL - Via extraccion de Meltano

Para detalles de integracion, contacte al equipo de plataforma.