Contrato de stream de aplicación
ce-source:lender- Hechos:
lerian.streaming.lender - Comandos:
lerian.streaming.lender.commands - Ruta de dead letters:
lerian.streaming.lender.dlq ce-type:studio.lerian.lender.<resource>.<event>- Clave de despacho:
<resource>.<event>a partir dece-resourcetypeyce-eventtype
GET /api/v1/streaming/manifest.
Eventos emitidos
El catálogo declara 37 definiciones. Lender tiene llamadores de producción para 34 de ellas: 32 hechos y 2 comandos. La tabla separa las claves de catálogo del tipo de enrutamiento de CloudEvent.Contratos de payload emitidos
Los contratos siguientes reflejan las etiquetas JSONdata de CloudEvent en el contrato publicado de Lender. ? significa que el campo puede estar ausente. Los structs de wire en Go no declaran campos de puntero anulables. unknown es JSON sin procesar y puede llevar cualquier valor JSON, incluido null. Los valores decimales son strings JSON, las marcas de tiempo son strings RFC 3339 en UTC, y YYYYMM es una competência de seis dígitos.
accounting_profile.configured
accounting_profile.configured
accounting_profile.configuredTema: lerian.streaming.lenderEsquema: 1.1.0Asunto: profile_ideffective_from es el día civil en que el plan de cuentas que describe empieza a regir. Sin ese campo, dos eventos sobre la misma versión de producto describen dos planes distintos y nada en el cable dice cuál rige en cada mes.assignment_set.approved / assignment_set.accepted
assignment_set.approved / assignment_set.accepted
assignment_set.approved, assignment_set.acceptedTema: lerian.streaming.lenderEsquema: 1.0.0Asunto: assignment_set_idUna composición de cesión queda aprobada de forma duradera. El evento identifica la aprobación inmutable que determina el archivo de oferta.collection.payment.*
collection.payment.*
collection.payment.applied, collection.payment.unapplied, collection.payment.reapplied, collection.payment.refundedTema: lerian.streaming.lenderEsquema: 1.0.0Asunto: application_idloan_application.submitted
loan_application.submitted
loan_application.submittedTema: lerian.streaming.lenderEsquema: 2.0.0Asunto: loan_application_idloan_application.approved
loan_application.approved
loan_application.approvedTema: lerian.streaming.lenderEsquema: 2.0.0Asunto: loan_application_idloan_application.rejected
loan_application.rejected
loan_application.rejectedTema: lerian.streaming.lenderEsquema: 2.0.0Asunto: loan_application_idloan_application.withdrawn
loan_application.withdrawn
loan_application.withdrawnTema: lerian.streaming.lenderEsquema: 2.0.0Asunto: loan_application_idloan_application.disbursed
loan_application.disbursed
loan_application.disbursedTema: lerian.streaming.lenderEsquema: 2.0.0Asunto: loan_application_idloan_charge.applied
loan_charge.applied
loan_charge.appliedTema: lerian.streaming.lenderEsquema: 1.0.0Asunto: loan_account_idloan_product.created
loan_product.created
loan_product.createdTema: lerian.streaming.lenderEsquema: 1.0.0Asunto: loan_product_idloan_product.activated
loan_product.activated
loan_product.activatedTema: lerian.streaming.lenderEsquema: 1.0.0Asunto: loan_product_idloan_product.current_version_promoted
loan_product.current_version_promoted
loan_product.current_version_promotedTema: lerian.streaming.lenderEsquema: 1.0.0Asunto: loan_product_idEl producto es el agregado después del reapuntado, así que current_version_id es el nuevo anclaje. Los contratos ya escritos se quedan en la versión en que nacieron; solo las nuevas solicitudes se originan en la versión promovida. promoted_by es el sujeto autenticado tal cual llegó, y queda vacío cuando ninguna persona pidió la promoción.loan_product_version.created
loan_product_version.created
loan_product_version.createdTema: lerian.streaming.lenderEsquema: 1.0.0Asunto: loan_product_version_idloan_schedule.prepayment_applied
loan_schedule.prepayment_applied
loan_schedule.prepayment_appliedTema: lerian.streaming.lenderEsquema: 1.0.0Asunto: schedule_version_idloan_schedule.rescheduled
loan_schedule.rescheduled
loan_schedule.rescheduledTema: lerian.streaming.lenderEsquema: 1.0.0Asunto: schedule_version_idrepayment.recorded
repayment.recorded
repayment.recordedTema: lerian.streaming.lenderEsquema: 1.0.0Asunto: transaction_idreturned_payment_receivable.opened / returned_payment_receivable.collected
returned_payment_receivable.opened / returned_payment_receivable.collected
returned_payment_receivable.opened, returned_payment_receivable.collectedTema: lerian.streaming.lenderEsquema: 1.0.0Asunto: receivable_idLos dos hechos proyectan el mismo agregado por una única proyección compartida, de modo que los dos hechos sobre la misma deuda no pueden describirla de formas distintas. Todo campo está siempre presente: en .opened, los tres campos de cobro son cadenas vacías, nunca ausentes y nunca null. Lee status para distinguir los dos estados, no la vacuidad de un campo. reversal_transaction_id es único por cuenta por cobrar y es el ancla a la que resuelve una reentrega de la misma reversión.repayment_reversal.recorded
repayment_reversal.recorded
repayment_reversal.recordedTema: lerian.streaming.lenderEsquema: 1.0.0Asunto: transaction_idloan_account.pdd_stage_transitioned
loan_account.pdd_stage_transitioned
loan_account.pdd_stage_transitionedTema: lerian.streaming.lenderEsquema: 1.0.0Asunto: loan_account_idprepayment_quote.created
prepayment_quote.created
prepayment_quote.createdTema: lerian.streaming.lenderEsquema: 1.0.0Asunto: quote_idprepayment_settlement.recorded
prepayment_settlement.recorded
prepayment_settlement.recordedTema: lerian.streaming.lenderEsquema: 1.0.0Asunto: settlement_idloan_account.debt_balance_changed
loan_account.debt_balance_changed
loan_account.debt_balance_changedTema: lerian.streaming.lenderEsquema: 2.0.0Asunto: loan_account_idloan_account.payment_overdue
loan_account.payment_overdue
loan_account.payment_overdueTema: lerian.streaming.lenderEsquema: 1.0.0Asunto: loan_account_idconsignado.exclusao.requested
consignado.exclusao.requested
consignado.exclusao.requestedTema: lerian.streaming.lender.commandsEsquema: 1.0.0Asunto: request_refconsignado.redirecionamento.requested
consignado.redirecionamento.requested
consignado.redirecionamento.requestedTema: lerian.streaming.lender.commandsEsquema: 1.0.0Asunto: request_refpayroll_deduction.refund_required
payroll_deduction.refund_required
payroll_deduction.refund_requiredTema: lerian.streaming.lenderEsquema: 1.0.0Asunto: receipt_idpayroll_overdeduction.refund_required
payroll_overdeduction.refund_required
payroll_overdeduction.refund_requiredTema: lerian.streaming.lenderEsquema: 1.0.0Asunto: refund_case_idcollection.instruction.issued
collection.instruction.issued
collection.instruction.issuedTema: lerian.streaming.lenderEsquema: 1.0.0Asunto: instrument_idguarantee_recovery.cash_allocated
guarantee_recovery.cash_allocated
guarantee_recovery.cash_allocatedTema: lerian.streaming.lenderEsquema: 1.0.0Asunto: receipt_idCatalogados pero no emitidos
Estas tres definiciones están presentes en el manifest, pero no tienen ningún llamador de emisión de Lender que no sea de prueba. No trates sus formas con origen enlender como integraciones operativas.
Eventos consumidos
Lender conecta 15 claves de hechos del gateway desdelerian.streaming.consignado-gw y un hecho de Matcher desde lerian.streaming.matcher. Cada consumidor está controlado por configuración y registrado en el bootstrap.
consignado.proposal.accepted. Esa clave no es una entrada de contabilización para Lender.
Planos internos de eventos
Lender también escribe tipos de eventos de outbox internos para intenciones de ledger, trabajo de cobranza y traspasos firmados al hub. Son contratos de coordinación locales al proceso, no entradas del catálogo de CloudEvents de lib-streaming. Este inventario público los omite a propósito.Reglas de entrega y compatibilidad
- Deduplica por
(ce-source, ce-id)y haz que los handlers sean idempotentes. - Lee
ce-schemaversionantes de decodificar. La versión es un header de CloudEvents, nunca un sufijo de tema. - El dinero y las tasas son strings decimales. Las marcas de tiempo son RFC 3339 en UTC.
- Los consumidores de hechos conectados filtran claves exactas. Omiten y confirman los hechos no coincidentes en los temas de aplicación compartidos. Los registros manejados con formato incorrecto siguen la política de DLQ del consumidor.
- La ausencia de un identificador de negocio requerido impide la emisión o la ejecución del comando. Lender nunca lo sintetiza.

