> ## Documentation Index
> Fetch the complete documentation index at: https://docs.lerian.studio/llms.txt
> Use this file to discover all available pages before exploring further.

# Eventos do Midaz

> Eventos de domínio emitidos pelo ledger e pelo CRM do Midaz.

O Midaz emite eventos de domínio como mensagens **CloudEvents 1.0** em modo de conteúdo binário sobre Kafka, publicados através da `lib-streaming`. Todo evento viaja no [envelope compartilhado](/pt/reference/events/overview): `ce-type` nomeia o evento como `studio.lerian.<resource>.<event>`, `ce-subject` carrega o id do agregado, `ce-tenantid` o tenant proprietário (ausente no escopo de tenant único) e `ce-schemaversion` a versão do payload — `1.0.0` para todos os eventos abaixo.

`ce-source` é configurado no deployment pela variável de ambiente `STREAMING_CLOUDEVENTS_SOURCE`. O ledger usa por padrão `lerian.midaz.ledger` e a capacidade de CRM `lerian.midaz.crm`. Os valores monetários — saldos, valores de transações e operações — trafegam no fio como **strings** decimais, nunca floats.

## Eventos do ledger

Fatos que o ledger emite à medida que organizações, contas, saldos e transações mudam.

### Organização

| Evento (`ce-type`)                   | Tópico                                  | Quando dispara                               | Payload principal                                                                              |
| ------------------------------------ | --------------------------------------- | -------------------------------------------- | ---------------------------------------------------------------------------------------------- |
| `studio.lerian.organization.created` | `lerian.streaming.organization.created` | Uma organização é criada.                    | `id`, `legalName`, `doingBusinessAs`, `legalDocument`, `address`, `status`, `createdAt`        |
| `studio.lerian.organization.updated` | `lerian.streaming.organization.updated` | Os campos mutáveis de uma organização mudam. | `id`, `parentOrganizationId`, `legalName`, `doingBusinessAs`, `address`, `status`, `updatedAt` |
| `studio.lerian.organization.deleted` | `lerian.streaming.organization.deleted` | Uma organização é excluída.                  | `id`, `deletedAt`                                                                              |

### Ledger

| Evento (`ce-type`)             | Tópico                            | Quando dispara                                | Payload principal                                     |
| ------------------------------ | --------------------------------- | --------------------------------------------- | ----------------------------------------------------- |
| `studio.lerian.ledger.created` | `lerian.streaming.ledger.created` | Um ledger é criado dentro de uma organização. | `id`, `organizationId`, `name`, `status`, `createdAt` |
| `studio.lerian.ledger.updated` | `lerian.streaming.ledger.updated` | O nome ou o status de um ledger muda.         | `id`, `organizationId`, `name`, `status`, `updatedAt` |
| `studio.lerian.ledger.deleted` | `lerian.streaming.ledger.deleted` | Um ledger é excluído.                         | `id`, `organizationId`, `deletedAt`                   |

### Conta

| Evento (`ce-type`)              | Tópico                             | Quando dispara                         | Payload principal                                                                                                           |
| ------------------------------- | ---------------------------------- | -------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- |
| `studio.lerian.account.created` | `lerian.streaming.account.created` | Uma conta é aberta em um ledger.       | `id`, `organizationId`, `ledgerId`, `name`, `assetCode`, `type`, `alias`, `portfolioId`, `segmentId`, `status`, `createdAt` |
| `studio.lerian.account.updated` | `lerian.streaming.account.updated` | Os campos mutáveis de uma conta mudam. | `id`, `organizationId`, `ledgerId`, `name`, `segmentId`, `entityId`, `status`, `blocked`, `updatedAt`                       |
| `studio.lerian.account.deleted` | `lerian.streaming.account.deleted` | Uma conta é excluída.                  | `id`, `organizationId`, `ledgerId`, `portfolioId`, `deletedAt`                                                              |

### Ativo

| Evento (`ce-type`)            | Tópico                           | Quando dispara                        | Payload principal                                                                 |
| ----------------------------- | -------------------------------- | ------------------------------------- | --------------------------------------------------------------------------------- |
| `studio.lerian.asset.created` | `lerian.streaming.asset.created` | Um ativo é registrado em um ledger.   | `id`, `organizationId`, `ledgerId`, `name`, `type`, `code`, `status`, `createdAt` |
| `studio.lerian.asset.updated` | `lerian.streaming.asset.updated` | Os campos mutáveis de um ativo mudam. | `id`, `organizationId`, `ledgerId`, `name`, `type`, `code`, `status`, `updatedAt` |
| `studio.lerian.asset.deleted` | `lerian.streaming.asset.deleted` | Um ativo é excluído.                  | `id`, `organizationId`, `ledgerId`, `deletedAt`                                   |

### Portfólio

| Evento (`ce-type`)                | Tópico                               | Quando dispara                            | Payload principal                                                             |
| --------------------------------- | ------------------------------------ | ----------------------------------------- | ----------------------------------------------------------------------------- |
| `studio.lerian.portfolio.created` | `lerian.streaming.portfolio.created` | Um portfólio é criado.                    | `id`, `organizationId`, `ledgerId`, `name`, `entityId`, `status`, `createdAt` |
| `studio.lerian.portfolio.updated` | `lerian.streaming.portfolio.updated` | Os campos mutáveis de um portfólio mudam. | `id`, `organizationId`, `ledgerId`, `name`, `entityId`, `status`, `updatedAt` |
| `studio.lerian.portfolio.deleted` | `lerian.streaming.portfolio.deleted` | Um portfólio é excluído.                  | `id`, `organizationId`, `ledgerId`, `deletedAt`                               |

### Segmento

| Evento (`ce-type`)              | Tópico                             | Quando dispara                           | Payload principal                                                 |
| ------------------------------- | ---------------------------------- | ---------------------------------------- | ----------------------------------------------------------------- |
| `studio.lerian.segment.created` | `lerian.streaming.segment.created` | Um segmento é criado.                    | `id`, `organizationId`, `ledgerId`, `name`, `status`, `createdAt` |
| `studio.lerian.segment.updated` | `lerian.streaming.segment.updated` | Os campos mutáveis de um segmento mudam. | `id`, `organizationId`, `ledgerId`, `name`, `status`, `updatedAt` |
| `studio.lerian.segment.deleted` | `lerian.streaming.segment.deleted` | Um segmento é excluído.                  | `id`, `organizationId`, `ledgerId`, `deletedAt`                   |

### Rota de operação

| Evento (`ce-type`)                      | Tópico                                     | Quando dispara                                    | Payload principal                                                                                                 |
| --------------------------------------- | ------------------------------------------ | ------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- |
| `studio.lerian.operation-route.created` | `lerian.streaming.operation-route.created` | Uma rota de operação é criada.                    | `id`, `organizationId`, `ledgerId`, `title`, `code`, `operationType`, `account`, `accountingEntries`, `createdAt` |
| `studio.lerian.operation-route.updated` | `lerian.streaming.operation-route.updated` | Os campos mutáveis de uma rota de operação mudam. | `id`, `organizationId`, `ledgerId`, `title`, `code`, `operationType`, `account`, `accountingEntries`, `updatedAt` |
| `studio.lerian.operation-route.deleted` | `lerian.streaming.operation-route.deleted` | Uma rota de operação é excluída.                  | `id`, `organizationId`, `ledgerId`, `deletedAt`                                                                   |

### Rota de transação

| Evento (`ce-type`)                        | Tópico                                       | Quando dispara                                     | Payload principal                                                             |
| ----------------------------------------- | -------------------------------------------- | -------------------------------------------------- | ----------------------------------------------------------------------------- |
| `studio.lerian.transaction-route.created` | `lerian.streaming.transaction-route.created` | Uma rota de transação é criada.                    | `id`, `organizationId`, `ledgerId`, `title`, `operationRouteIds`, `createdAt` |
| `studio.lerian.transaction-route.updated` | `lerian.streaming.transaction-route.updated` | Os campos mutáveis de uma rota de transação mudam. | `id`, `organizationId`, `ledgerId`, `title`, `operationRouteIds`, `updatedAt` |
| `studio.lerian.transaction-route.deleted` | `lerian.streaming.transaction-route.deleted` | Uma rota de transação é excluída.                  | `id`, `organizationId`, `ledgerId`, `deletedAt`                               |

### Saldo

| Evento (`ce-type`)                        | Tópico                                       | Quando dispara                                                                                                                                                                  | Payload principal                                                                                                                                                                    |
| ----------------------------------------- | -------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `studio.lerian.balance.created`           | `lerian.streaming.balance.created`           | Um saldo é criado durante a configuração da conta.                                                                                                                              | `id`, `organizationId`, `ledgerId`, `accountId`, `alias`, `key`, `assetCode`, `accountType`, `available`, `onHold`, `allowSending`, `allowReceiving`, `createdAt`                    |
| `studio.lerian.balance.changed`           | `lerian.streaming.balance.changed`           | 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.                                                | `organizationId`, `ledgerId`, `accountId`, `balanceId`, `assetCode`, `available`, `onHold`, `version`, `reason`, `direction`, `amount`, `transactionId`, `operationId`, `occurredAt` |
| `studio.lerian.balance.config-changed`    | `lerian.streaming.balance.config-changed`    | As configurações de um saldo mudam, ou o cheque especial é habilitado (o saldo acompanhante é materializado). `changeType` distingue `settings_updated` de `overdraft_enabled`. | `id`, `organizationId`, `ledgerId`, `accountId`, `allowSending`, `allowReceiving`, `direction`, `settings`, `changeType`, `updatedAt`                                                |
| `studio.lerian.balance.deleted`           | `lerian.streaming.balance.deleted`           | Um saldo é excluído.                                                                                                                                                            | `id`, `organizationId`, `ledgerId`, `accountId`, `deletedAt`                                                                                                                         |
| `studio.lerian.balance.overdraft-drawn`   | `lerian.streaming.balance.overdraft-drawn`   | Um débito consome cheque especial além dos fundos disponíveis (`action` = `drawn`).                                                                                             | `balanceId`, `accountId`, `organizationId`, `ledgerId`, `assetCode`, `transactionId`, `operationId`, `action`, `amount`, `overdraftBalance`, `overdraftLimit`, `occurredAt`          |
| `studio.lerian.balance.overdraft-repaid`  | `lerian.streaming.balance.overdraft-repaid`  | O uso do cheque especial diminui, mas não é totalmente quitado (`action` = `repaid`).                                                                                           | `balanceId`, `accountId`, `organizationId`, `ledgerId`, `assetCode`, `transactionId`, `operationId`, `action`, `amount`, `overdraftBalance`, `overdraftLimit`, `occurredAt`          |
| `studio.lerian.balance.overdraft-cleared` | `lerian.streaming.balance.overdraft-cleared` | O cheque especial é totalmente quitado — sinal terminal (`action` = `cleared`).                                                                                                 | `balanceId`, `accountId`, `organizationId`, `ledgerId`, `assetCode`, `transactionId`, `operationId`, `action`, `amount`, `overdraftBalance`, `overdraftLimit`, `occurredAt`          |

### Transação

Os quatro eventos do ciclo de vida compartilham um mesmo payload; apenas o tipo de roteamento muda.

| Evento (`ce-type`)                    | Tópico                                   | Quando dispara                                                                                              | Payload principal                                                                                                                             |
| ------------------------------------- | ---------------------------------------- | ----------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
| `studio.lerian.transaction.posted`    | `lerian.streaming.transaction.posted`    | Uma transação recém-criada é confirmada no armazenamento com todas as suas operações persistidas (sem pai). | `id`, `organizationId`, `ledgerId`, `status`, `amount`, `assetCode`, `source`, `destination`, `route`, `operations`, `metadata`, `createdAt`  |
| `studio.lerian.transaction.committed` | `lerian.streaming.transaction.committed` | Uma transação pendente passa de `PENDING` para `APPROVED`.                                                  | `id`, `organizationId`, `ledgerId`, `status`, `amount`, `assetCode`, `source`, `destination`, `operations`, `metadata`                        |
| `studio.lerian.transaction.canceled`  | `lerian.streaming.transaction.canceled`  | Uma transação pendente passa de `PENDING` para `CANCELED`.                                                  | `id`, `organizationId`, `ledgerId`, `status`, `amount`, `assetCode`, `source`, `destination`, `operations`, `metadata`                        |
| `studio.lerian.transaction.reverted`  | `lerian.streaming.transaction.reverted`  | Um fluxo de reversão cria uma transação filha; `parentTransactionId` a correlaciona com a original.         | `id`, `parentTransactionId`, `organizationId`, `ledgerId`, `status`, `amount`, `assetCode`, `source`, `destination`, `operations`, `metadata` |

## Eventos do CRM

A capacidade de CRM do Midaz gerencia os titulares de contas e seus aliases. Esses eventos são emitidos no source do CRM (`lerian.midaz.crm` por padrão), separado do ledger, mas seguem o mesmo envelope e versionamento.

### Titular

| Evento (`ce-type`)             | Tópico                            | Quando dispara                          | Payload principal                                         |
| ------------------------------ | --------------------------------- | --------------------------------------- | --------------------------------------------------------- |
| `studio.lerian.holder.created` | `lerian.streaming.holder.created` | Um titular é criado.                    | `id`, `organizationId`, `type`, `externalId`, `createdAt` |
| `studio.lerian.holder.updated` | `lerian.streaming.holder.updated` | Os campos mutáveis de um titular mudam. | `id`, `organizationId`, `type`, `externalId`, `updatedAt` |
| `studio.lerian.holder.deleted` | `lerian.streaming.holder.deleted` | Um titular é excluído.                  | `id`, `organizationId`, `deletionType`, `deletedAt`       |

### Alias

| Evento (`ce-type`)                          | Tópico                                         | Quando dispara                                 | Payload principal                                                                                  |
| ------------------------------------------- | ---------------------------------------------- | ---------------------------------------------- | -------------------------------------------------------------------------------------------------- |
| `studio.lerian.alias.created`               | `lerian.streaming.alias.created`               | Um alias é criado para um titular e uma conta. | `id`, `holderId`, `organizationId`, `ledgerId`, `accountId`, `type`, `relatedParties`, `createdAt` |
| `studio.lerian.alias.updated`               | `lerian.streaming.alias.updated`               | Os campos mutáveis de um alias mudam.          | `id`, `holderId`, `organizationId`, `ledgerId`, `accountId`, `type`, `relatedParties`, `updatedAt` |
| `studio.lerian.alias.deleted`               | `lerian.streaming.alias.deleted`               | Um alias é excluído.                           | `id`, `holderId`, `organizationId`, `deletionType`, `deletedAt`                                    |
| `studio.lerian.alias.related-party-deleted` | `lerian.streaming.alias.related-party-deleted` | Uma parte relacionada é removida de um alias.  | `aliasId`, `holderId`, `organizationId`, `relatedPartyId`, `deletedAt`                             |
