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.public_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.public_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.public_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.public_id, entity.settlement, entity.status
DisbursalApprovalConcludedDisbursalApprovalConcludedentity.amount, entity.approved, entity.cancelled, entity.credit_facility_id, entity.due_date, entity.id, entity.obligation_id, entity.public_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.public_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.public_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.public_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.public_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.customer_type, entity.id, entity.kyc_provider_id, entity.partner_id, entity.party_ref, entity.public_id, entity.status
CustomerFrozenSe congelo una cuenta de cliente, bloqueando operaciones financierasentity.customer_type, entity.id, entity.kyc_provider_id, entity.partner_id, entity.party_ref, entity.public_id, entity.status
CustomerUnfrozenSe descongelo una cuenta de cliente previamente congelada, restaurando operaciones normalesentity.customer_type, entity.id, entity.kyc_provider_id, entity.partner_id, entity.party_ref, entity.public_id, entity.status
CustomerClosedLa cuenta del cliente fue cerradaentity.customer_type, entity.id, entity.kyc_provider_id, entity.partner_id, entity.party_ref, entity.public_id, entity.status
ProspectCreatedSe creó un nuevo prospecto para la incorporaciónentity.customer_type, entity.id, entity.kyc_provider_id, entity.kyc_status, entity.partner_id, entity.party_ref, entity.stage
ProspectKycStartedUn prospecto inició la verificación KYCentity.customer_type, entity.id, entity.kyc_provider_id, entity.kyc_status, entity.partner_id, entity.party_ref, entity.stage
ProspectKycPendingLa verificación KYC de un prospecto está pendiente de revisiónentity.customer_type, entity.id, entity.kyc_provider_id, entity.kyc_status, entity.partner_id, entity.party_ref, entity.stage
ProspectKycDeclinedLa verificación KYC de un prospecto fue rechazadaentity.customer_type, entity.id, entity.kyc_provider_id, entity.kyc_status, entity.partner_id, entity.party_ref, entity.stage
ProspectConvertedUn prospecto fue convertido en clienteentity.customer_type, entity.id, entity.kyc_provider_id, entity.kyc_status, entity.partner_id, entity.party_ref, entity.stage
ProspectClosedUn prospecto fue cerrado sin conversiónentity.customer_type, entity.id, entity.kyc_provider_id, entity.kyc_status, entity.partner_id, entity.party_ref, 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, entity.public_id
DepositInitializedSe inicializo un depositoentity.amount, entity.deposit_account_id, entity.id, entity.public_id, entity.reference, entity.status
DepositRevertedSe revirtio un depositoentity.amount, entity.deposit_account_id, entity.id, entity.public_id, entity.reference, entity.status
WithdrawalInitializedSe inició un retiro y está pendiente de aprobaciónentity.amount, entity.deposit_account_id, entity.id, entity.public_id, entity.reference, entity.status
WithdrawalApprovalConcludedSe concluyó el proceso de aprobación de un retiroentity.amount, entity.deposit_account_id, entity.id, entity.public_id, entity.reference, entity.status
WithdrawalDeniedSe denegó un retiroentity.amount, entity.deposit_account_id, entity.id, entity.public_id, entity.reference, entity.status
WithdrawalConfirmedSe confirmo un retiroentity.amount, entity.deposit_account_id, entity.id, entity.public_id, entity.reference, entity.status
WithdrawalCancelledSe canceló un retiroentity.amount, entity.deposit_account_id, entity.id, entity.public_id, entity.reference, entity.status
WithdrawalRevertedSe revirtió un retiro confirmadoentity.amount, entity.deposit_account_id, entity.id, entity.public_id, entity.reference, entity.status

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. Almacén de informes - A través del relé de salida hacia el almacén de datos Postgres

Para detalles de integracion, contacte al equipo de plataforma.