Skip to main content
O Midaz emite seus fatos de negócio JSON públicos como CloudEvents 1.0 no modo de conteúdo binário pelo Kafka.

Catálogo JSON público do ledger

O manifesto público do ledger contém as definições verificadas a seguir. Toda definição catalogada tem um caminho de emissão em produção fora de testes.

Envelope do CloudEvents

Todo fato JSON público usa o envelope compartilhado abaixo. Os headers carregam informações de roteamento e schema. O valor do Kafka carrega o objeto JSON data.

Tópicos, manifesto e roteamento

O tópico da aplicação identifica a aplicação produtora, não um evento individual. Roteie um registro por ce-resourcetype e ce-eventtype, e valide ce-schemaversion antes de decodificar seu valor data.
  • Fatos: lerian.streaming.ledger
  • Rota DLQ: lerian.streaming.ledger.dlq
  • Manifesto: GET /v1/streaming/manifest expõe o catálogo JSON público e o mapeamento de tópicos, inclusive enquanto a publicação está desabilitada.

Semântica de entrega e falha

A publicação fica desabilitada até que STREAMING_ENABLED=true e a configuração do broker seja bem-sucedida. Quando habilitado, o Midaz emite depois da mudança de estado de negócio. Ele não usa um outbox transacional.
  • Política: toda definição JSON pública é um fact com entrega direta, tratamento de DLQ por on_routable_failure e fallback_on_circuit_open.
  • Limite real do Midaz: como o Midaz não tem outbox, o fallback de circuito aberto não consegue persistir um evento. Os caminhos de emissão registram em log e engolem os erros de publicação em vez de retorná-los ao comando de negócio.
  • Requisito do consumidor: a entrega do broker é pelo menos uma vez para os registros publicados. Torne os handlers idempotentes e faça deduplicação com (ce-source, ce-id).

Plano legado separado do RabbitMQ

O Midaz também tem exchanges de compatibilidade para notificações selecionadas de overdraft e auditoria. Elas formam um plano legado separado do RabbitMQ e não trazem o catálogo JSON público completo de 54 eventos. Novas integrações devem usar o contrato Kafka desta página.

Contratos data completos

Essas declarações no estilo TypeScript espelham o formato do produtor no wire. Cada nome de campo é o seu nome JSON. ? significa que o campo tem omitempty. | null significa que o campo é anulável e o produtor sempre o inclui. Um comentário de tipo de origem preserva o tipo do inventário exatamente. Valores decimais são strings JSON, nunca números de ponto flutuante binários.

Mapeamentos de tipo de origem compartilhados

Evento: studio.lerian.ledger.account.closedTópico: lerian.streaming.ledgerRota DLQ: lerian.streaming.ledger.dlqSchema: 1.0.0Disparado quando: o encerramento de uma conta. closedAt é o instante do encerramento.Subject: ID da conta (p.ID)
Evento: studio.lerian.ledger.account.createdTópico: lerian.streaming.ledgerRota DLQ: lerian.streaming.ledger.dlqSchema: 1.0.0Disparado quando: a abertura de uma conta em um ledger.Subject: ID da conta (p.ID)
Evento: studio.lerian.ledger.account.deletedTópico: lerian.streaming.ledgerRota DLQ: lerian.streaming.ledger.dlqSchema: 1.0.0Disparado quando: a exclusão de uma conta.Subject: ID da conta (p.ID)
Evento: studio.lerian.ledger.account.updatedTópico: lerian.streaming.ledgerRota DLQ: lerian.streaming.ledger.dlqSchema: 1.0.0Disparado quando: Os campos mutáveis de uma conta mudam.Subject: ID da conta (p.ID)
Evento: studio.lerian.ledger.asset.createdTópico: lerian.streaming.ledgerRota DLQ: lerian.streaming.ledger.dlqSchema: 1.0.0Disparado quando: o registro de um ativo em um ledger.Subject: ID do ativo (p.ID)
Evento: studio.lerian.ledger.asset.deletedTópico: lerian.streaming.ledgerRota DLQ: lerian.streaming.ledger.dlqSchema: 1.0.0Disparado quando: a exclusão de um ativo.Subject: ID do ativo (p.ID)
Evento: studio.lerian.ledger.asset.updatedTópico: lerian.streaming.ledgerRota DLQ: lerian.streaming.ledger.dlqSchema: 1.0.0Disparado quando: Os campos mutáveis de um ativo mudam.Subject: ID do ativo (p.ID)
Evento: studio.lerian.ledger.balance.changedTópico: lerian.streaming.ledgerRota DLQ: lerian.streaming.ledger.dlqSchema: 1.0.0Disparado quando: Uma transação commitada movimenta 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)
Evento: studio.lerian.ledger.balance.config_changedTópico: lerian.streaming.ledgerRota DLQ: lerian.streaming.ledger.dlqSchema: 1.0.0Disparado quando: As configurações de um saldo mudam, ou o overdraft é habilitado (saldo complementar materializado). changeType diferencia settings_updated de overdraft_enabled.Subject: ID do saldo (p.ID)
Evento: studio.lerian.ledger.balance.createdTópico: lerian.streaming.ledgerRota DLQ: lerian.streaming.ledger.dlqSchema: 1.0.0Disparado quando: a criação de um saldo durante a configuração da conta.Subject: ID do saldo (p.ID)
Evento: studio.lerian.ledger.balance.deletedTópico: lerian.streaming.ledgerRota DLQ: lerian.streaming.ledger.dlqSchema: 1.0.0Disparado quando: a exclusão de um saldo.Subject: ID do saldo (p.ID)
Evento: studio.lerian.ledger.balance.overdraft_clearedTópico: lerian.streaming.ledgerRota DLQ: lerian.streaming.ledger.dlqSchema: 1.0.0Disparado quando: O overdraft é totalmente quitado, um sinal terminal (action = cleared).Subject: ID da transação e ID da operação (p.TransactionID + ":" + p.OperationID)
Evento: studio.lerian.ledger.balance.overdraft_drawnTópico: lerian.streaming.ledgerRota DLQ: lerian.streaming.ledger.dlqSchema: 1.0.0Disparado quando: Um débito consome overdraft além dos fundos disponíveis (action = drawn).Subject: ID da transação e ID da operação (p.TransactionID + ":" + p.OperationID)
Evento: studio.lerian.ledger.balance.overdraft_repaidTópico: lerian.streaming.ledgerRota DLQ: lerian.streaming.ledger.dlqSchema: 1.0.0Disparado quando: O uso do overdraft diminui, mas não é totalmente quitado (action = repaid).Subject: ID da transação e ID da operação (p.TransactionID + ":" + p.OperationID)
Evento: studio.lerian.ledger.fee_billing_packages.createdTópico: lerian.streaming.ledgerRota DLQ: lerian.streaming.ledger.dlqSchema: 1.0.0Disparado quando: a criação de um pacote de cobrança.Subject: ID do pacote de cobrança (p.ID)
Evento: studio.lerian.ledger.fee_billing_packages.deletedTópico: lerian.streaming.ledgerRota DLQ: lerian.streaming.ledger.dlqSchema: 1.0.0Disparado quando: a exclusão de um pacote de cobrança.Subject: ID do pacote de cobrança (p.ID)
Evento: studio.lerian.ledger.fee_billing_packages.updatedTópico: lerian.streaming.ledgerRota DLQ: lerian.streaming.ledger.dlqSchema: 1.0.0Disparado quando: Os campos mutáveis de um pacote de cobrança mudam.Subject: ID do pacote de cobrança (p.ID)
Evento: studio.lerian.ledger.fee_charge.appliedTópico: lerian.streaming.ledgerRota DLQ: lerian.streaming.ledger.dlqSchema: 1.0.0Disparado quando: a aplicação de um pacote de tarifas a uma transação commitada.Subject: ID da transação (p.TransactionID)
Evento: studio.lerian.ledger.fee_packages.createdTópico: lerian.streaming.ledgerRota DLQ: lerian.streaming.ledger.dlqSchema: 1.0.0Disparado quando: a criação de um pacote de tarifas.Subject: ID do pacote de tarifas (p.ID)
Evento: studio.lerian.ledger.fee_packages.deletedTópico: lerian.streaming.ledgerRota DLQ: lerian.streaming.ledger.dlqSchema: 1.0.0Disparado quando: a exclusão de um pacote de tarifas.Subject: ID do pacote de tarifas (p.ID)
Evento: studio.lerian.ledger.fee_packages.updatedTópico: lerian.streaming.ledgerRota DLQ: lerian.streaming.ledger.dlqSchema: 1.0.0Disparado quando: Os campos mutáveis de um pacote de tarifas mudam.Subject: ID do pacote de tarifas (p.ID)
Evento: studio.lerian.ledger.holder.createdTópico: lerian.streaming.ledgerRota DLQ: lerian.streaming.ledger.dlqSchema: 1.0.0Disparado quando: a criação de um holder.Subject: ID do holder (p.ID)
Evento: studio.lerian.ledger.holder.deletedTópico: lerian.streaming.ledgerRota DLQ: lerian.streaming.ledger.dlqSchema: 1.0.0Disparado quando: a exclusão de um holder.Subject: ID do holder (p.ID)
Evento: studio.lerian.ledger.holder.updatedTópico: lerian.streaming.ledgerRota DLQ: lerian.streaming.ledger.dlqSchema: 1.0.0Disparado quando: Os campos mutáveis de um holder mudam.Subject: ID do holder (p.ID)
Evento: studio.lerian.ledger.instrument.createdTópico: lerian.streaming.ledgerRota DLQ: lerian.streaming.ledger.dlqSchema: 1.0.0Disparado quando: a criação de um instrumento para um holder e uma conta.Subject: ID do instrumento (p.ID)
Evento: studio.lerian.ledger.instrument.deletedTópico: lerian.streaming.ledgerRota DLQ: lerian.streaming.ledger.dlqSchema: 1.0.0Disparado quando: a exclusão de um instrumento.Subject: ID do instrumento (p.ID)
Evento: studio.lerian.ledger.instrument.updatedTópico: lerian.streaming.ledgerRota DLQ: lerian.streaming.ledger.dlqSchema: 1.0.0Disparado quando: Os campos mutáveis de um instrumento mudam.Subject: ID do instrumento (p.ID)
Evento: studio.lerian.ledger.ledger.createdTópico: lerian.streaming.ledgerRota DLQ: lerian.streaming.ledger.dlqSchema: 1.0.0Disparado quando: a criação de um ledger dentro de uma organização.Subject: ID do ledger (p.ID)
Evento: studio.lerian.ledger.ledger.deletedTópico: lerian.streaming.ledgerRota DLQ: lerian.streaming.ledger.dlqSchema: 1.0.0Disparado quando: a exclusão de um ledger.Subject: ID do ledger (p.ID)
Evento: studio.lerian.ledger.ledger.updatedTópico: lerian.streaming.ledgerRota DLQ: lerian.streaming.ledger.dlqSchema: 1.0.0Disparado quando: O nome ou o status de um ledger muda.Subject: ID do ledger (p.ID)
Evento: studio.lerian.ledger.operation_route.createdTópico: lerian.streaming.ledgerRota DLQ: lerian.streaming.ledger.dlqSchema: 1.1.0Disparado quando: a criação de uma rota de operação.Subject: ID da rota de operação (p.ID)
Evento: studio.lerian.ledger.operation_route.deletedTópico: lerian.streaming.ledgerRota DLQ: lerian.streaming.ledger.dlqSchema: 1.1.0Disparado quando: a exclusão de uma rota de operação.Subject: ID da rota de operação (p.ID)
Evento: studio.lerian.ledger.operation_route.updatedTópico: lerian.streaming.ledgerRota DLQ: lerian.streaming.ledger.dlqSchema: 1.1.0Disparado quando: Os campos mutáveis de uma rota de operação mudam.Subject: ID da rota de operação (p.ID)
Evento: studio.lerian.ledger.organization.createdTópico: lerian.streaming.ledgerRota DLQ: lerian.streaming.ledger.dlqSchema: 1.0.0Disparado quando: a criação de uma organização.Subject: ID da organização (p.ID)
Evento: studio.lerian.ledger.organization.deletedTópico: lerian.streaming.ledgerRota DLQ: lerian.streaming.ledger.dlqSchema: 1.0.0Disparado quando: a exclusão de uma organização.Subject: ID da organização (p.ID)
Evento: studio.lerian.ledger.organization.updatedTópico: lerian.streaming.ledgerRota DLQ: lerian.streaming.ledger.dlqSchema: 1.0.0Disparado quando: Os campos mutáveis de uma organização mudam.Subject: ID da organização (p.ID)
Evento: studio.lerian.ledger.portfolio.createdTópico: lerian.streaming.ledgerRota DLQ: lerian.streaming.ledger.dlqSchema: 1.0.0Disparado quando: a criação de um portfólio.Subject: ID do portfólio (p.ID)
Evento: studio.lerian.ledger.portfolio.deletedTópico: lerian.streaming.ledgerRota DLQ: lerian.streaming.ledger.dlqSchema: 1.0.0Disparado quando: a exclusão de um portfólio.Subject: ID do portfólio (p.ID)
Evento: studio.lerian.ledger.portfolio.updatedTópico: lerian.streaming.ledgerRota DLQ: lerian.streaming.ledger.dlqSchema: 1.0.0Disparado quando: Os campos mutáveis de um portfólio mudam.Subject: ID do portfólio (p.ID)
Evento: studio.lerian.ledger.segment.createdTópico: lerian.streaming.ledgerRota DLQ: lerian.streaming.ledger.dlqSchema: 1.0.0Disparado quando: a criação de um segmento.Subject: ID do segmento (p.ID)
Evento: studio.lerian.ledger.segment.deletedTópico: lerian.streaming.ledgerRota DLQ: lerian.streaming.ledger.dlqSchema: 1.0.0Disparado quando: a exclusão de um segmento.Subject: ID do segmento (p.ID)
Evento: studio.lerian.ledger.segment.updatedTópico: lerian.streaming.ledgerRota DLQ: lerian.streaming.ledger.dlqSchema: 1.0.0Disparado quando: Os campos mutáveis de um segmento mudam.Subject: ID do segmento (p.ID)
Evento: studio.lerian.ledger.transaction.canceledTópico: lerian.streaming.ledgerRota DLQ: lerian.streaming.ledger.dlqSchema: 1.0.0Disparado quando: Uma transação pendente faz a transição de PENDING para CANCELED.Subject: ID da transação (p.ID)
Evento: studio.lerian.ledger.transaction.committedTópico: lerian.streaming.ledgerRota DLQ: lerian.streaming.ledger.dlqSchema: 1.0.0Disparado quando: Uma transação pendente faz a transição de PENDING para APPROVED.Subject: ID da transação (p.ID)
Evento: studio.lerian.ledger.transaction.postedTópico: lerian.streaming.ledgerRota DLQ: lerian.streaming.ledger.dlqSchema: 1.0.0Disparado quando: o commit de uma transação recém-criada no armazenamento, com todas as suas operações persistidas (sem transação pai).Subject: ID da transação (p.ID)
Evento: studio.lerian.ledger.transaction.revertedTópico: lerian.streaming.ledgerRota DLQ: lerian.streaming.ledger.dlqSchema: 1.0.0Disparado quando: Um fluxo de estorno cria uma transação filha. parentTransactionId a correlaciona com a original.Subject: ID da transação (p.ID)
Evento: studio.lerian.ledger.transaction_group.canceledTópico: lerian.streaming.ledgerRota DLQ: lerian.streaming.ledger.dlqSchema: 1.0.0Disparado quando: Um grupo cross-ledger pendente é cancelado.Subject: ID do grupo (p.GroupID)
Evento: studio.lerian.ledger.transaction_group.committedTópico: lerian.streaming.ledgerRota DLQ: lerian.streaming.ledger.dlqSchema: 1.0.0Disparado quando: Um grupo cross-ledger pendente é confirmado.Subject: ID do grupo (p.GroupID)
Evento: studio.lerian.ledger.transaction_group.postedTópico: lerian.streaming.ledgerRota DLQ: lerian.streaming.ledger.dlqSchema: 1.0.0Disparado quando: Uma transação cross-ledger direta é concluída. parts lista as transações do grupo.Subject: ID do grupo (p.GroupID)
Evento: studio.lerian.ledger.transaction_group.revertedTópico: lerian.streaming.ledgerRota DLQ: lerian.streaming.ledger.dlqSchema: 1.0.0Disparado quando: Um grupo cross-ledger é estornado. groupId identifica o novo grupo e revertedGroupId identifica o original.Subject: ID do grupo (p.GroupID)
Evento: studio.lerian.ledger.transaction_route.createdTópico: lerian.streaming.ledgerRota DLQ: lerian.streaming.ledger.dlqSchema: 1.1.0Disparado quando: a criação de uma rota de transação.Subject: ID da rota de transação (p.ID)
Evento: studio.lerian.ledger.transaction_route.deletedTópico: lerian.streaming.ledgerRota DLQ: lerian.streaming.ledger.dlqSchema: 1.1.0Disparado quando: a exclusão de uma rota de transação.Subject: ID da rota de transação (p.ID)
Evento: studio.lerian.ledger.transaction_route.updatedTópico: lerian.streaming.ledgerRota DLQ: lerian.streaming.ledger.dlqSchema: 1.1.0Disparado quando: Os campos mutáveis de uma rota de transação mudam.Subject: ID da rota de transação (p.ID)