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 | email, id, role_id |
RoleCreated | Se creo un nuevo rol | id, name |
Accounting Events
Eventos relacionados con el plan de cuentas y las operaciones contables.
| Event | Description | Payload Fields |
|---|---|---|
ChartNodeCreated | Se creó un nodo del plan de cuentas | account_set_id, chart_id, code, id, name, normal_balance_type, parent |
LedgerAccountCreated | No description available | gl_account_code, gl_account_entity_id, gl_account_entity_type, gl_account_external_id, gl_account_id, gl_account_name, gl_account_normal_balance_type |
LedgerAccountSetMemberCreated | No description available | gl_account_set_id, gl_member_id, gl_member_type |
LedgerAccountSetMemberRemoved | No description available | gl_account_set_id, gl_member_id, gl_member_type |
LedgerTransactionCreated | No description available | gl_journal_id, gl_transaction_created_at, gl_transaction_effective_date, gl_transaction_id, gl_transaction_modified_at, gl_transaction_template_id, is_closing_gl_transaction |
LedgerEntryCreated | No description available | gl_account_id, gl_entry_amount_native, gl_entry_currency, gl_entry_direction, gl_entry_id, gl_entry_layer, gl_entry_type, gl_journal_id, gl_transaction_id |
LedgerTxTemplateCreated | No description available | code, description, entries, id, version |
LedgerEffectiveBalance | No description available | gl_account_id, gl_balance_currency, gl_balance_effective_date, gl_balance_encumbrance_cr, gl_balance_encumbrance_dr, gl_balance_pending_cr, gl_balance_pending_dr, gl_balance_settled_cr, gl_balance_settled_dr, gl_journal_id |
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 | amount, created_at, customer_id, id, partner_id, product_id, status, terms |
FacilityProposalConcluded | FacilityProposalConcluded | amount, created_at, customer_id, id, partner_id, product_id, status, terms |
PendingCreditFacilityCollateralizationChanged | Cambio el estado de colateralizacion para facilidad pendiente | amount, collateralization, completed_at, created_at, credit_facility_proposal_id, customer_id, id, partner_id, product_id, status, terms |
PendingCreditFacilityCompleted | PendingCreditFacilityCompleted | amount, collateralization, completed_at, created_at, credit_facility_proposal_id, customer_id, id, partner_id, product_id, status, terms |
FacilityActivated | Se activo una facilidad de credito | account_ids, accrual_spec, activated_at, activated_on, activation_tx_id, amount, collateral_id, collateralization, completed_at, customer_id, id, liquidation_trigger, maturity_date, partner_id, pending_credit_facility_id, product_id, public_id, terms |
FacilityCompleted | Una facilidad de credito fue totalmente pagada y cerrada | account_ids, accrual_spec, activated_at, activated_on, activation_tx_id, amount, collateral_id, collateralization, completed_at, customer_id, id, liquidation_trigger, maturity_date, partner_id, pending_credit_facility_id, product_id, public_id, terms |
FacilityCollateralizationChanged | Cambio el estado de colateralizacion para facilidad activa | account_ids, accrual_spec, activated_at, activated_on, activation_tx_id, amount, collateral_id, collateralization, completed_at, customer_id, id, liquidation_trigger, maturity_date, partner_id, pending_credit_facility_id, product_id, public_id, terms |
DisbursalInitialized | Se inició un desembolso y está pendiente de aprobación | amount, approved, cancelled, credit_facility_id, customer_id, due_date, id, obligation_id, partner_id, public_id, settlement, status |
DisbursalApprovalConcluded | DisbursalApprovalConcluded | amount, approved, cancelled, credit_facility_id, customer_id, due_date, id, obligation_id, partner_id, public_id, settlement, status |
DisbursalSettled | Se liquido un desembolso | amount, approved, cancelled, credit_facility_id, customer_id, due_date, id, obligation_id, partner_id, public_id, settlement, status |
DisbursalCancelled | Se canceló un desembolso | amount, approved, cancelled, credit_facility_id, customer_id, due_date, id, obligation_id, partner_id, public_id, settlement, status |
AccrualPosted | Se registro el devengamiento de intereses | credit_facility_id, due_at, id, period, posting |
FacilityMatured | No description available | account_ids, accrual_spec, activated_at, activated_on, activation_tx_id, amount, collateral_id, collateralization, completed_at, customer_id, id, liquidation_trigger, maturity_date, partner_id, pending_credit_facility_id, product_id, public_id, terms |
PartialLiquidationInitiated | Se inicio una liquidacion parcial | facility_accounts, facility_accrual_spec, facility_activated_at, facility_activated_on, facility_activation_tx_id, facility_amount, facility_collateral_id, facility_collateralization, facility_completed_at, facility_customer_id, facility_id, facility_liquidation_trigger, facility_maturity_date, facility_partner_id, facility_pending_credit_facility_id, facility_product_id, facility_public_id, facility_terms, id, initially_estimated_to_liquidate, initially_expected_to_receive, trigger_exchange_rate |
CreditCollateral Events
CoreCreditCollateralEvent module_description
| Event | Description | Payload Fields |
|---|---|---|
CollateralUpdated | CollateralUpdated | amount, id, last_posting, secured_loan_id |
LiquidationCollateralSentOut | LiquidationCollateralSentOut | amount, effective, ledger_tx_id, liquidation_id, secured_loan_id |
LiquidationSaleRecorded | Se registró una venta de garantía ejecutada y sus ingresos netos se reconocieron como una cuenta por cobrar | collateral_id, effective, ledger_tx_id, liquidation_id, net_proceeds, payment_id, secured_loan_id |
CreditCollection Events
CoreCreditCollectionEvent module_description
| Event | Description | Payload Fields |
|---|---|---|
PaymentCreated | PaymentCreated | amount, beneficiary_id, created_at, effective, id |
PaymentAllocationCreated | PaymentAllocationCreated | amount, beneficiary_id, created_at, effective, id, obligation_id, obligation_type, payment_id |
ObligationCreated | Se creo una nueva obligacion | beneficiary_id, beneficiary_owner_id, completed_at, completing_payment_allocation_id, created_at, defaulted_at, due_at, effective, id, initial_amount, obligation_type, outstanding_amount, overdue_at |
ObligationDue | Una obligacion vencio | beneficiary_id, beneficiary_owner_id, completed_at, completing_payment_allocation_id, created_at, defaulted_at, due_at, effective, id, initial_amount, obligation_type, outstanding_amount, overdue_at |
ObligationOverdue | Una obligacion entro en mora | beneficiary_id, beneficiary_owner_id, completed_at, completing_payment_allocation_id, created_at, defaulted_at, due_at, effective, id, initial_amount, obligation_type, outstanding_amount, overdue_at |
ObligationDefaulted | Una obligacion entro en incumplimiento | beneficiary_id, beneficiary_owner_id, completed_at, completing_payment_allocation_id, created_at, defaulted_at, due_at, effective, id, initial_amount, obligation_type, outstanding_amount, overdue_at |
ObligationCompleted | Una obligacion fue completamente pagada | beneficiary_id, beneficiary_owner_id, completed_at, completing_payment_allocation_id, created_at, defaulted_at, due_at, effective, id, initial_amount, obligation_type, outstanding_amount, overdue_at |
Custody Events
Eventos relacionados con custodia de Bitcoin y gestion de billeteras.
| Event | Description | Payload Fields |
|---|---|---|
WalletBalanceUpdated | No description available | address, balance, id, network |
Customer Events
Eventos relacionados con el ciclo de vida del cliente y KYC.
| Event | Description | Payload Fields |
|---|---|---|
CustomerCreated | Se creo un nuevo cliente | customer_type, id, partner_id, party_ref_id, party_ref_type, public_id, status_change |
CustomerFrozen | Se congelo una cuenta de cliente, bloqueando operaciones financieras | customer_type, id, partner_id, party_ref_id, party_ref_type, public_id, status_change |
CustomerUnfrozen | Se descongelo una cuenta de cliente previamente congelada, restaurando operaciones normales | customer_type, id, partner_id, party_ref_id, party_ref_type, public_id, status_change |
CustomerClosed | La cuenta del cliente fue cerrada | customer_type, id, partner_id, party_ref_id, party_ref_type, public_id, status_change |
CustomerPiiErasureScheduled | Se programó el borrado de PII para la parte de un cliente cerrado | customer_type, id, partner_id, party_ref_id, party_ref_type, public_id, status_change |
CustomerPiiErasureCancelled | Se canceló un borrado de PII programado para la parte de un cliente antes de su ejecución | customer_type, id, partner_id, party_ref_id, party_ref_type, public_id, status_change |
CustomerPiiErasureCompleted | Se ejecutó el borrado de PII programado para la parte de un cliente | customer_type, id, partner_id, party_ref_id, party_ref_type, public_id, status_change |
CustomerDocumentCreated | Se añadió un documento a un cliente | customer_id, id |
CustomerDocumentArchived | Se archivó un documento de cliente | customer_id, id |
CustomerDocumentDeletionRequested | Se solicitó la eliminación de un documento de cliente | customer_id, id |
CustomerNoteCreated | No description available | customer_id, id |
ProspectCreated | Se creó un nuevo prospecto para la incorporación | customer_type, id, partner_id, party_ref_id, party_ref_type, stage |
ProspectConverted | Un prospecto fue convertido en cliente | customer_type, id, partner_id, party_ref_id, party_ref_type, stage |
ProspectClosed | Un prospecto fue cerrado sin conversión | customer_type, id, partner_id, party_ref_id, party_ref_type, stage |
ProspectPiiErasureScheduled | Se programó el borrado de PII para la parte de un prospecto cerrado | customer_type, id, partner_id, party_ref_id, party_ref_type, stage |
ProspectPiiErasureCancelled | Se canceló un borrado de PII programado para la parte de un prospecto antes de su ejecución | customer_type, id, partner_id, party_ref_id, party_ref_type, stage |
Deposit Events
Eventos relacionados con cuentas de deposito y transacciones.
| Event | Description | Payload Fields |
|---|---|---|
DepositAccountProductCreated | No description available | accounting_integration, currency, customer_type, id, name, partner_id |
DepositAccountCreated | Se creo una cuenta de deposito | account_holder_id, activity, currency, id, product_id, public_id, status |
DepositAccountFrozen | No description available | account_holder_id, activity, currency, id, product_id, public_id, status |
DepositAccountUnfrozen | No description available | account_holder_id, activity, currency, id, product_id, public_id, status |
DepositAccountClosed | No description available | account_holder_id, activity, currency, id, product_id, public_id, status |
DepositAccountActivityUpdated | No description available | account_holder_id, activity, currency, id, product_id, public_id, status |
DepositBooked | Se contabilizó un depósito | account_holder_id, amount, deposit_account_id, id, ledger_tx_id, public_id, reference, status |
DepositReverted | Se revirtio un deposito | account_holder_id, amount, deposit_account_id, id, ledger_tx_id, public_id, reference, status |
WithdrawalInitialized | Se inició un retiro y está pendiente de aprobación | account_holder_id, amount, deposit_account_id, id, ledger_tx_id, payout_id, public_id, reference, status |
WithdrawalApprovalConcluded | Se concluyó el proceso de aprobación de un retiro | account_holder_id, amount, deposit_account_id, id, ledger_tx_id, payout_id, public_id, reference, status |
WithdrawalDenied | Se denegó un retiro | account_holder_id, amount, deposit_account_id, id, ledger_tx_id, payout_id, public_id, reference, status |
WithdrawalConfirmed | Se confirmo un retiro | account_holder_id, amount, deposit_account_id, id, ledger_tx_id, payout_id, public_id, reference, status |
WithdrawalCancelled | Se canceló un retiro | account_holder_id, amount, deposit_account_id, id, ledger_tx_id, payout_id, public_id, reference, status |
WithdrawalReverted | Se revirtió un retiro confirmado | account_holder_id, amount, deposit_account_id, id, ledger_tx_id, payout_id, public_id, reference, status |
Exchange Events
Eventos relacionados con compras de bitcoin ejecutadas para clientes.
| Event | Description | Payload Fields |
|---|---|---|
BitcoinPurchaseExecuted | Se cambió el fiat de un cliente por bitcoin y se liquidaron ambas cuentas de depósito | bitcoin_amount, customer_id, destination_deposit_account_id, fiat_amount, id, ledger_tx_id, public_id, source_deposit_account_id |
Partner Events
Eventos relacionados con el ciclo de vida de socios y usuarios de socios.
| Event | Description | Payload Fields |
|---|---|---|
PartnerUserCreated | Se creó un usuario de socio | email, id, partner_id |
PartnerCreated | Se creó un socio | id, name, status |
PartnerRenamed | Se renombró un socio | id, name, status |
PartnerActivated | Se activó un socio | id, name, status |
PartnerClosed | Se cerró un socio | id, name, status |
Price Events
Eventos de tasas oficiales publicados al final del día y en cada tick horario; las actualizaciones de precios en tiempo de ejecución son efímeras y nunca se persisten.
| Event | Description | Payload Fields |
|---|---|---|
ClosingRateCaptured | Tasa de cierre oficial de un par de monedas para un día hábil, publicada por la fase de EOD capture-closing-rates. Los precios en tiempo de ejecución son efímeros. | closing_time, day, pair, provenance, rate_major, window |
RateSnapshotCaptured | La última tasa saneada del runtime para un par de monedas, republicada como evento persistente en cada tick horario. No se consulta ningún proveedor en el tick: la tasa, la ventana de saneamiento y la procedencia provienen del registro que el pipeline de agregación en tiempo real ya produjo, de modo que los reportes que se actualizan cada hora convierten exactamente a la tasa que el banco estaba usando. | hour, pair, provenance, rate_major, window |
DwPipeline Events
Telemetría de las ejecuciones del pipeline que mantiene actualizado el almacén de datos: las construcciones EOD de dbt y las actualizaciones intradía. El servicio de reportes no publica eventos.
| Event | Description | Payload Fields |
|---|---|---|
PipelineRunInitialized | Se creó una ejecución del pipeline para un día liquidado, en cola para refrescar el almacén de datos | day, id, kind, status |
PipelineRunStarted | La ejecución del pipeline inició dbt contra el almacén de datos | day, id, kind, status |
PipelineRunCompleted | La ejecución del pipeline terminó de refrescar el almacén de datos para el día | day, id, kind, status |
PipelineRunFailed | La ejecución del pipeline falló; el motivo del fallo queda registrado en la entidad | day, id, kind, status |
PipelineRunSkipped | No description available | day, id, kind, status |
Governance Events
Eventos relacionados con flujos de aprobacion.
| Event | Description | Payload Fields |
|---|---|---|
ApprovalProcessConcluded | Se concluyo un proceso de aprobacion | id, process_type, status, target_ref |
Time Events
Eventos relacionados con el procesamiento de fin de día.
| Event | Description | Payload Fields |
|---|---|---|
EndOfDay | El reloj operativo superó la hora de cierre para la zona horaria configurada; la señal básica de cambio de día de la que dependen las reacciones diarias y el proceso de cierre de fin de día | closed_at, day, schedule |
HourTick | El reloj operativo cruzó a una nueva hora; la señal intradía horaria de la que dependen las reacciones periódicas (no EOD). Se publica como máximo una vez por hora, coalesciendo los límites perdidos en un solo tick | hour |
Lifecycle Events
Events related to lifecycle.
| Event | Description | Payload Fields |
|---|---|---|
InitializationCompleted | No description available | completedAt |
Eod Events
Eventos relacionados con el proceso de cierre de fin de día.
| Event | Description | Payload Fields |
|---|---|---|
EodProcessInitialized | Se creó un proceso de cierre de fin de día para un día hábil | day, id, status, timezone |
EodProcessInProgress | Un proceso de cierre de fin de día avanzó: una fase inició, se completó o falló | day, id, status, timezone |
EodProcessCompleted | Un proceso de cierre de fin de día terminó con todas sus fases exitosas: todas las mutaciones del libro mayor del día están registradas y sus saldos capturados, por lo que el día es historia liquidada | day, id, status, timezone |
EodProcessStopped | Un proceso de cierre de fin de día se detuvo, ya sea por el fallo de una fase bloqueante o porque no quedan fases por ejecutar | day, id, status, timezone |
DomainConfig Events
Eventos relacionados con la configuración de dominio en tiempo de ejecución. Solo se reportan las configuraciones definidas como publicadas.
| Event | Description | Payload Fields |
|---|---|---|
Updated | Se escribió una configuración de dominio publicada, con su valor confirmado representado como texto y su tipo de configuración | config_type, id, key, value |
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.* |
| Exchange | core.exchange.* |
| Partner | core.partner.* |
| Price | core.price.* |
| DwPipeline | core.dw-pipeline.* |
| Governance | governance.* |
| Time | core.time.* |
| Lifecycle | core.lifecycle.* |
| Eod | core.eod.* |
| DomainConfig | core.domain-config.* |
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)
- 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.