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 39 definiciones. Lender emite 37 de ellas: 35 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.risk_retention indica el régimen de retención bajo el que se registró la cesión. El campo retained_fraction es la parte de la pérdida esperada que la institución conserva después de la venta.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. El campo promoted_by contiene el sujeto autenticado tal cual llegó. 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_idadmitted_borrower_kinds siempre está presente. Un arreglo vacío significa que la versión no admite ningún prestatario.loan_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.written_off
returned_payment_receivable.opened / returned_payment_receivable.collected / returned_payment_receivable.written_off
returned_payment_receivable.opened, returned_payment_receivable.collected, returned_payment_receivable.written_offTema: lerian.streaming.lenderEsquema: 1.0.0Asunto: receivable_idLos tres hechos proyectan el mismo agregado por una única proyección compartida, de modo que dos hechos sobre la misma deuda no pueden describirla de formas distintas. Todo campo está siempre presente. Un campo que todavía no aplica contiene una cadena vacía. Nunca está ausente y nunca es null. Lee status para distinguir los estados, no la vacuidad de un campo.Los campos stage y provision_amount traen el envejecimiento de la deuda. Los campos provision_consumed y loss dividen el castigo. El 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_idloan_account.problem_asset_assessed
loan_account.problem_asset_assessed
loan_account.problem_asset_assessedTema: lerian.streaming.lenderEsquema: 1.0.0Asunto: loan_account_idLender lo emite en los dos veredictos. Una declaración con characterizes_problem_asset en false es la única forma de retirar una caracterización anterior.loan_account.problem_asset_reassessment_overdue
loan_account.problem_asset_reassessment_overdue
loan_account.problem_asset_reassessment_overdueTema: lerian.streaming.lenderEsquema: 1.0.0Asunto: loan_account_idEste hecho es un llamado a revisión. No cambia nada en el contrato: la etapa, la provisión y la decisión de reconocimiento de ingresos quedan como estaban. Lender lo emite una vez por contrato por fecha de negocio, y una declaración de cualquiera de los dos veredictos lo cierra.consignado.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 dos 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 eventos. 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.

