lib-streaming.
Catálogo público JSON do ledger
O manifesto público do ledger contém as definições verificadas abaixo. Toda definição catalogada possui um caminho de emissão de produção não relacionado a testes.Envelope CloudEvents
Todo fato JSON público usa o envelope compartilhado abaixo. Os cabeçalhos carregam informações de roteamento e esquema; o valor Kafka carrega o objeto JSONdata.
Tópicos, manifesto e roteamento
O tópico da aplicação identifica a aplicação produtora, não um evento individual. Roteie um registro porce-resourcetype e ce-eventtype e valide ce-schemaversion antes de decodificar seu valor data.
- Fatos:
lerian.streaming.ledger - DLQ da rota:
lerian.streaming.ledger.dlq - Manifesto:
GET /v1/streaming/manifestexpõe o catálogo JSON público e o mapeamento de tópicos, inclusive quando a publicação está desabilitada.
Semântica de entrega e falha
A publicação fica desabilitada até queSTREAMING_ENABLED=true e a configuração de brokers tenha êxito. Quando habilitado, o Midaz emite depois da mudança de estado de negócio. Ele não conecta writer de outbox, repositório de outbox, outbox transacional nem relay de outbox da lib-streaming.
- Política: toda definição JSON pública é um
factcom entrega direta, tratamento de DLQon_routable_failureefallback_on_circuit_openconfigurado pelalib-streamingv3. - Limite real do Midaz: como nenhum writer de outbox está conectado, o fallback de circuito aberto não pode persistir um evento. Os caminhos de emissão registram e engolem erros de publicação em vez de devolvê-los ao comando de negócio.
- Requisito do consumidor: a entrega do broker é pelo menos uma vez para registros publicados. Mantenha handlers idempotentes e deduplique com
(ce-source, ce-id).
Plano legado separado do RabbitMQ
O Midaz também possui exchanges de compatibilidade para notificações selecionadas de transação, overdraft e auditoria. Eles são um plano legado separado do RabbitMQ, não um contrato dalib-streaming nem uma representação completa deste catálogo público de 49 eventos JSON. Novas integrações devem usar o contrato Kafka desta página.
Contratos completos de data
Estas declarações em estilo TypeScript espelham o formato wire do produtor. Todo nome de campo é seu nome JSON. ? significa que o campo tem omitempty; | null significa que o campo é anulável sem ser omitido. Um comentário de tipo de origem preserva exatamente o tipo do inventário. Valores decimais são strings JSON, nunca números binários de ponto flutuante.
Mapeamentos compartilhados de tipos de origem
account.created
account.created
studio.lerian.ledger.account.createdTópico: lerian.streaming.ledgerDLQ da rota: lerian.streaming.ledger.dlqSchema: 1.0.0Emitido quando: Uma conta é aberta em um ledger.Subject: ID da conta (p.ID)account.deleted
account.deleted
studio.lerian.ledger.account.deletedTópico: lerian.streaming.ledgerDLQ da rota: lerian.streaming.ledger.dlqSchema: 1.0.0Emitido quando: Uma conta é excluída.Subject: ID da conta (p.ID)account.updated
account.updated
studio.lerian.ledger.account.updatedTópico: lerian.streaming.ledgerDLQ da rota: lerian.streaming.ledger.dlqSchema: 1.0.0Emitido quando: Os campos mutáveis de uma conta mudam.Subject: ID da conta (p.ID)asset.created
asset.created
studio.lerian.ledger.asset.createdTópico: lerian.streaming.ledgerDLQ da rota: lerian.streaming.ledger.dlqSchema: 1.0.0Emitido quando: Um ativo é registrado em um ledger.Subject: ID do ativo (p.ID)asset.deleted
asset.deleted
studio.lerian.ledger.asset.deletedTópico: lerian.streaming.ledgerDLQ da rota: lerian.streaming.ledger.dlqSchema: 1.0.0Emitido quando: Um ativo é excluído.Subject: ID do ativo (p.ID)asset.updated
asset.updated
studio.lerian.ledger.asset.updatedTópico: lerian.streaming.ledgerDLQ da rota: lerian.streaming.ledger.dlqSchema: 1.0.0Emitido quando: Os campos mutáveis de um ativo mudam.Subject: ID do ativo (p.ID)balance.changed
balance.changed
studio.lerian.ledger.balance.changedTópico: lerian.streaming.ledgerDLQ da rota: lerian.streaming.ledger.dlqSchema: 1.0.0Emitido quando: Uma transação confirmada move um saldo — um evento por operação que afeta o saldo; os valores refletem o estado após a operação.Subject: ID da transação e ID da operação (p.TransactionID + ":" + p.OperationID)balance.config_changed
balance.config_changed
studio.lerian.ledger.balance.config_changedTópico: lerian.streaming.ledgerDLQ da rota: lerian.streaming.ledger.dlqSchema: 1.0.0Emitido quando: As configurações de um saldo mudam, ou o cheque especial é habilitado (o saldo acompanhante é materializado). changeType distingue settings_updated de overdraft_enabled.Subject: ID do saldo (p.ID)balance.created
balance.created
studio.lerian.ledger.balance.createdTópico: lerian.streaming.ledgerDLQ da rota: lerian.streaming.ledger.dlqSchema: 1.0.0Emitido quando: Um saldo é criado durante a configuração da conta.Subject: ID do saldo (p.ID)balance.deleted
balance.deleted
studio.lerian.ledger.balance.deletedTópico: lerian.streaming.ledgerDLQ da rota: lerian.streaming.ledger.dlqSchema: 1.0.0Emitido quando: Um saldo é excluído.Subject: ID do saldo (p.ID)balance.overdraft_cleared
balance.overdraft_cleared
studio.lerian.ledger.balance.overdraft_clearedTópico: lerian.streaming.ledgerDLQ da rota: lerian.streaming.ledger.dlqSchema: 1.0.0Emitido quando: O cheque especial é totalmente quitado — sinal terminal (action = cleared).Subject: ID da transação e ID da operação (p.TransactionID + ":" + p.OperationID)balance.overdraft_drawn
balance.overdraft_drawn
studio.lerian.ledger.balance.overdraft_drawnTópico: lerian.streaming.ledgerDLQ da rota: lerian.streaming.ledger.dlqSchema: 1.0.0Emitido quando: Um débito consome cheque especial além dos fundos disponíveis (action = drawn).Subject: ID da transação e ID da operação (p.TransactionID + ":" + p.OperationID)balance.overdraft_repaid
balance.overdraft_repaid
studio.lerian.ledger.balance.overdraft_repaidTópico: lerian.streaming.ledgerDLQ da rota: lerian.streaming.ledger.dlqSchema: 1.0.0Emitido quando: O uso do cheque especial diminui, mas não é totalmente quitado (action = repaid).Subject: ID da transação e ID da operação (p.TransactionID + ":" + p.OperationID)fee_billing_packages.created
fee_billing_packages.created
studio.lerian.ledger.fee_billing_packages.createdTópico: lerian.streaming.ledgerDLQ da rota: lerian.streaming.ledger.dlqSchema: 1.0.0Emitido quando: Um pacote de cobrança é criado.Subject: ID do pacote de cobrança (p.ID)fee_billing_packages.deleted
fee_billing_packages.deleted
studio.lerian.ledger.fee_billing_packages.deletedTópico: lerian.streaming.ledgerDLQ da rota: lerian.streaming.ledger.dlqSchema: 1.0.0Emitido quando: Um pacote de cobrança é excluído.Subject: ID do pacote de cobrança (p.ID)fee_billing_packages.updated
fee_billing_packages.updated
studio.lerian.ledger.fee_billing_packages.updatedTópico: lerian.streaming.ledgerDLQ da rota: lerian.streaming.ledger.dlqSchema: 1.0.0Emitido quando: Os campos mutáveis de um pacote de cobrança mudam.Subject: ID do pacote de cobrança (p.ID)fee_charge.applied
fee_charge.applied
studio.lerian.ledger.fee_charge.appliedTópico: lerian.streaming.ledgerDLQ da rota: lerian.streaming.ledger.dlqSchema: 1.0.0Emitido quando: Um pacote de tarifas é aplicado a uma transação confirmada.Subject: ID da transação (p.TransactionID)fee_packages.created
fee_packages.created
studio.lerian.ledger.fee_packages.createdTópico: lerian.streaming.ledgerDLQ da rota: lerian.streaming.ledger.dlqSchema: 1.0.0Emitido quando: Um pacote de tarifas é criado.Subject: ID do pacote de tarifas (p.ID)fee_packages.deleted
fee_packages.deleted
studio.lerian.ledger.fee_packages.deletedTópico: lerian.streaming.ledgerDLQ da rota: lerian.streaming.ledger.dlqSchema: 1.0.0Emitido quando: Um pacote de tarifas é excluído.Subject: ID do pacote de tarifas (p.ID)fee_packages.updated
fee_packages.updated
studio.lerian.ledger.fee_packages.updatedTópico: lerian.streaming.ledgerDLQ da rota: lerian.streaming.ledger.dlqSchema: 1.0.0Emitido quando: Os campos mutáveis de um pacote de tarifas mudam.Subject: ID do pacote de tarifas (p.ID)holder.created
holder.created
studio.lerian.ledger.holder.createdTópico: lerian.streaming.ledgerDLQ da rota: lerian.streaming.ledger.dlqSchema: 1.0.0Emitido quando: Um titular é criado.Subject: ID do titular (p.ID)holder.deleted
holder.deleted
studio.lerian.ledger.holder.deletedTópico: lerian.streaming.ledgerDLQ da rota: lerian.streaming.ledger.dlqSchema: 1.0.0Emitido quando: Um titular é excluído.Subject: ID do titular (p.ID)holder.updated
holder.updated
studio.lerian.ledger.holder.updatedTópico: lerian.streaming.ledgerDLQ da rota: lerian.streaming.ledger.dlqSchema: 1.0.0Emitido quando: Os campos mutáveis de um titular mudam.Subject: ID do titular (p.ID)instrument.created
instrument.created
studio.lerian.ledger.instrument.createdTópico: lerian.streaming.ledgerDLQ da rota: lerian.streaming.ledger.dlqSchema: 1.0.0Emitido quando: Um instrumento é criado para um titular e uma conta.Subject: ID do instrumento (p.ID)instrument.deleted
instrument.deleted
studio.lerian.ledger.instrument.deletedTópico: lerian.streaming.ledgerDLQ da rota: lerian.streaming.ledger.dlqSchema: 1.0.0Emitido quando: Um instrumento é excluído.Subject: ID do instrumento (p.ID)instrument.updated
instrument.updated
studio.lerian.ledger.instrument.updatedTópico: lerian.streaming.ledgerDLQ da rota: lerian.streaming.ledger.dlqSchema: 1.0.0Emitido quando: Os campos mutáveis de um instrumento mudam.Subject: ID do instrumento (p.ID)ledger.created
ledger.created
studio.lerian.ledger.ledger.createdTópico: lerian.streaming.ledgerDLQ da rota: lerian.streaming.ledger.dlqSchema: 1.0.0Emitido quando: Um ledger é criado dentro de uma organização.Subject: ID do ledger (p.ID)ledger.deleted
ledger.deleted
studio.lerian.ledger.ledger.deletedTópico: lerian.streaming.ledgerDLQ da rota: lerian.streaming.ledger.dlqSchema: 1.0.0Emitido quando: Um ledger é excluído.Subject: ID do ledger (p.ID)ledger.updated
ledger.updated
studio.lerian.ledger.ledger.updatedTópico: lerian.streaming.ledgerDLQ da rota: lerian.streaming.ledger.dlqSchema: 1.0.0Emitido quando: O nome ou o status de um ledger muda.Subject: ID do ledger (p.ID)operation_route.created
operation_route.created
studio.lerian.ledger.operation_route.createdTópico: lerian.streaming.ledgerDLQ da rota: lerian.streaming.ledger.dlqSchema: 1.0.0Emitido quando: Uma rota de operação é criada.Subject: ID da rota de operação (p.ID)operation_route.deleted
operation_route.deleted
studio.lerian.ledger.operation_route.deletedTópico: lerian.streaming.ledgerDLQ da rota: lerian.streaming.ledger.dlqSchema: 1.0.0Emitido quando: Uma rota de operação é excluída.Subject: ID da rota de operação (p.ID)operation_route.updated
operation_route.updated
studio.lerian.ledger.operation_route.updatedTópico: lerian.streaming.ledgerDLQ da rota: lerian.streaming.ledger.dlqSchema: 1.0.0Emitido quando: Os campos mutáveis de uma rota de operação mudam.Subject: ID da rota de operação (p.ID)organization.created
organization.created
studio.lerian.ledger.organization.createdTópico: lerian.streaming.ledgerDLQ da rota: lerian.streaming.ledger.dlqSchema: 1.0.0Emitido quando: Uma organização é criada.Subject: ID da organização (p.ID)organization.deleted
organization.deleted
studio.lerian.ledger.organization.deletedTópico: lerian.streaming.ledgerDLQ da rota: lerian.streaming.ledger.dlqSchema: 1.0.0Emitido quando: Uma organização é excluída.Subject: ID da organização (p.ID)organization.updated
organization.updated
studio.lerian.ledger.organization.updatedTópico: lerian.streaming.ledgerDLQ da rota: lerian.streaming.ledger.dlqSchema: 1.0.0Emitido quando: Os campos mutáveis de uma organização mudam.Subject: ID da organização (p.ID)portfolio.created
portfolio.created
studio.lerian.ledger.portfolio.createdTópico: lerian.streaming.ledgerDLQ da rota: lerian.streaming.ledger.dlqSchema: 1.0.0Emitido quando: Um portfólio é criado.Subject: ID do portfólio (p.ID)portfolio.deleted
portfolio.deleted
studio.lerian.ledger.portfolio.deletedTópico: lerian.streaming.ledgerDLQ da rota: lerian.streaming.ledger.dlqSchema: 1.0.0Emitido quando: Um portfólio é excluído.Subject: ID do portfólio (p.ID)portfolio.updated
portfolio.updated
studio.lerian.ledger.portfolio.updatedTópico: lerian.streaming.ledgerDLQ da rota: lerian.streaming.ledger.dlqSchema: 1.0.0Emitido quando: Os campos mutáveis de um portfólio mudam.Subject: ID do portfólio (p.ID)segment.created
segment.created
studio.lerian.ledger.segment.createdTópico: lerian.streaming.ledgerDLQ da rota: lerian.streaming.ledger.dlqSchema: 1.0.0Emitido quando: Um segmento é criado.Subject: ID do segmento (p.ID)segment.deleted
segment.deleted
studio.lerian.ledger.segment.deletedTópico: lerian.streaming.ledgerDLQ da rota: lerian.streaming.ledger.dlqSchema: 1.0.0Emitido quando: Um segmento é excluído.Subject: ID do segmento (p.ID)segment.updated
segment.updated
studio.lerian.ledger.segment.updatedTópico: lerian.streaming.ledgerDLQ da rota: lerian.streaming.ledger.dlqSchema: 1.0.0Emitido quando: Os campos mutáveis de um segmento mudam.Subject: ID do segmento (p.ID)transaction.canceled
transaction.canceled
studio.lerian.ledger.transaction.canceledTópico: lerian.streaming.ledgerDLQ da rota: lerian.streaming.ledger.dlqSchema: 1.0.0Emitido quando: Uma transação pendente passa de PENDING para CANCELED.Subject: ID da transação (p.ID)transaction.committed
transaction.committed
studio.lerian.ledger.transaction.committedTópico: lerian.streaming.ledgerDLQ da rota: lerian.streaming.ledger.dlqSchema: 1.0.0Emitido quando: Uma transação pendente passa de PENDING para APPROVED.Subject: ID da transação (p.ID)transaction.posted
transaction.posted
studio.lerian.ledger.transaction.postedTópico: lerian.streaming.ledgerDLQ da rota: lerian.streaming.ledger.dlqSchema: 1.0.0Emitido quando: Uma transação recém-criada é confirmada no armazenamento com todas as suas operações persistidas (sem pai).Subject: ID da transação (p.ID)transaction.reverted
transaction.reverted
studio.lerian.ledger.transaction.revertedTópico: lerian.streaming.ledgerDLQ da rota: lerian.streaming.ledger.dlqSchema: 1.0.0Emitido quando: Um fluxo de reversão cria uma transação filha; parentTransactionId a correlaciona com a original.Subject: ID da transação (p.ID)transaction_route.created
transaction_route.created
studio.lerian.ledger.transaction_route.createdTópico: lerian.streaming.ledgerDLQ da rota: lerian.streaming.ledger.dlqSchema: 1.0.0Emitido quando: Uma rota de transação é criada.Subject: ID da rota de transação (p.ID)transaction_route.deleted
transaction_route.deleted
studio.lerian.ledger.transaction_route.deletedTópico: lerian.streaming.ledgerDLQ da rota: lerian.streaming.ledger.dlqSchema: 1.0.0Emitido quando: Uma rota de transação é excluída.Subject: ID da rota de transação (p.ID)transaction_route.updated
transaction_route.updated
studio.lerian.ledger.transaction_route.updatedTópico: lerian.streaming.ledgerDLQ da rota: lerian.streaming.ledger.dlqSchema: 1.0.0Emitido quando: Os campos mutáveis de uma rota de transação mudam.Subject: ID da rota de transação (p.ID)Evento interno de billing (fora do catálogo público)
billing_recorded é emitido separadamente dos 49 fatos JSON públicos. Ele usa Protobuf com framing Confluent, não o manifesto JSON público, e seu tópico fixo é lerian.streaming.billing.recorded. Não o conte como evento do manifesto nem o decodifique como os contratos JSON data acima.
Ele preserva os cabeçalhos CloudEvents 1.0 com ce-source=ledger, ce-resourcetype=billing, ce-eventtype=recorded e ce-time definido como a data de criação da transação.
Tipo CloudEvents: studio.lerian.ledger.billing.recorded
Tópico: lerian.streaming.billing.recorded
Tipo de conteúdo: application/vnd.confluent.protobuf
Schema: 1.0.0
DLQ da rota: lerian.streaming.ledger.dlq
Tenant: ce-tenantid segue a mesma regra de tenant resolvido ou literal default dos fatos públicos.
Subject: ID da conta
Emitido quando: Uma escrita de ciclo de vida não noop deixa a transação no status APPROVED; o Midaz emite um registro para cada conta não externa única referenciada por suas operações.
metric como active_account; properties.account_id e properties.transaction_id como strings; e subscription_id como o ID do tenant em modo multi-tenant ou o ID da organização da transação nos demais casos.
