> ## 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 de Midaz

> Eventos de dominio que emiten el ledger y el CRM de Midaz.

Midaz emite eventos de dominio como mensajes **CloudEvents 1.0** en modo de contenido binario sobre Kafka, publicados mediante `lib-streaming`. Cada evento viaja en el [envoltorio compartido](/es/reference/events/overview): `ce-type` nombra el evento como `studio.lerian.<resource>.<event>`, `ce-subject` lleva el id del agregado, `ce-tenantid` el tenant propietario (ausente en el ámbito de un solo tenant) y `ce-schemaversion` la versión del payload — `1.0.0` para todos los eventos de abajo.

`ce-source` se configura en el despliegue mediante la variable de entorno `STREAMING_CLOUDEVENTS_SOURCE`. El ledger usa por defecto `lerian.midaz.ledger` y la capacidad CRM `lerian.midaz.crm`. Los importes monetarios — saldos, importes de transacciones y operaciones — viajan por el hilo como **cadenas** decimales, nunca como floats.

## Eventos del ledger

Hechos que el ledger emite a medida que cambian organizaciones, cuentas, saldos y transacciones.

### Organización

| Evento (`ce-type`)                   | Tópico                                  | Se dispara cuando                                | Payload principal                                                                              |
| ------------------------------------ | --------------------------------------- | ------------------------------------------------ | ---------------------------------------------------------------------------------------------- |
| `studio.lerian.organization.created` | `lerian.streaming.organization.created` | Se crea una organización.                        | `id`, `legalName`, `doingBusinessAs`, `legalDocument`, `address`, `status`, `createdAt`        |
| `studio.lerian.organization.updated` | `lerian.streaming.organization.updated` | Cambian los campos mutables de una organización. | `id`, `parentOrganizationId`, `legalName`, `doingBusinessAs`, `address`, `status`, `updatedAt` |
| `studio.lerian.organization.deleted` | `lerian.streaming.organization.deleted` | Se elimina una organización.                     | `id`, `deletedAt`                                                                              |

### Ledger

| Evento (`ce-type`)             | Tópico                            | Se dispara cuando                             | Payload principal                                     |
| ------------------------------ | --------------------------------- | --------------------------------------------- | ----------------------------------------------------- |
| `studio.lerian.ledger.created` | `lerian.streaming.ledger.created` | Se crea un ledger dentro de una organización. | `id`, `organizationId`, `name`, `status`, `createdAt` |
| `studio.lerian.ledger.updated` | `lerian.streaming.ledger.updated` | Cambia el nombre o el estado de un ledger.    | `id`, `organizationId`, `name`, `status`, `updatedAt` |
| `studio.lerian.ledger.deleted` | `lerian.streaming.ledger.deleted` | Se elimina un ledger.                         | `id`, `organizationId`, `deletedAt`                   |

### Cuenta

| Evento (`ce-type`)              | Tópico                             | Se dispara cuando                          | Payload principal                                                                                                           |
| ------------------------------- | ---------------------------------- | ------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------- |
| `studio.lerian.account.created` | `lerian.streaming.account.created` | Se abre una cuenta en un ledger.           | `id`, `organizationId`, `ledgerId`, `name`, `assetCode`, `type`, `alias`, `portfolioId`, `segmentId`, `status`, `createdAt` |
| `studio.lerian.account.updated` | `lerian.streaming.account.updated` | Cambian los campos mutables de una cuenta. | `id`, `organizationId`, `ledgerId`, `name`, `segmentId`, `entityId`, `status`, `blocked`, `updatedAt`                       |
| `studio.lerian.account.deleted` | `lerian.streaming.account.deleted` | Se elimina una cuenta.                     | `id`, `organizationId`, `ledgerId`, `portfolioId`, `deletedAt`                                                              |

### Activo

| Evento (`ce-type`)            | Tópico                           | Se dispara cuando                         | Payload principal                                                                 |
| ----------------------------- | -------------------------------- | ----------------------------------------- | --------------------------------------------------------------------------------- |
| `studio.lerian.asset.created` | `lerian.streaming.asset.created` | Se registra un activo en un ledger.       | `id`, `organizationId`, `ledgerId`, `name`, `type`, `code`, `status`, `createdAt` |
| `studio.lerian.asset.updated` | `lerian.streaming.asset.updated` | Cambian los campos mutables de un activo. | `id`, `organizationId`, `ledgerId`, `name`, `type`, `code`, `status`, `updatedAt` |
| `studio.lerian.asset.deleted` | `lerian.streaming.asset.deleted` | Se elimina un activo.                     | `id`, `organizationId`, `ledgerId`, `deletedAt`                                   |

### Portafolio

| Evento (`ce-type`)                | Tópico                               | Se dispara cuando                             | Payload principal                                                             |
| --------------------------------- | ------------------------------------ | --------------------------------------------- | ----------------------------------------------------------------------------- |
| `studio.lerian.portfolio.created` | `lerian.streaming.portfolio.created` | Se crea un portafolio.                        | `id`, `organizationId`, `ledgerId`, `name`, `entityId`, `status`, `createdAt` |
| `studio.lerian.portfolio.updated` | `lerian.streaming.portfolio.updated` | Cambian los campos mutables de un portafolio. | `id`, `organizationId`, `ledgerId`, `name`, `entityId`, `status`, `updatedAt` |
| `studio.lerian.portfolio.deleted` | `lerian.streaming.portfolio.deleted` | Se elimina un portafolio.                     | `id`, `organizationId`, `ledgerId`, `deletedAt`                               |

### Segmento

| Evento (`ce-type`)              | Tópico                             | Se dispara cuando                           | Payload principal                                                 |
| ------------------------------- | ---------------------------------- | ------------------------------------------- | ----------------------------------------------------------------- |
| `studio.lerian.segment.created` | `lerian.streaming.segment.created` | Se crea un segmento.                        | `id`, `organizationId`, `ledgerId`, `name`, `status`, `createdAt` |
| `studio.lerian.segment.updated` | `lerian.streaming.segment.updated` | Cambian los campos mutables de un segmento. | `id`, `organizationId`, `ledgerId`, `name`, `status`, `updatedAt` |
| `studio.lerian.segment.deleted` | `lerian.streaming.segment.deleted` | Se elimina un segmento.                     | `id`, `organizationId`, `ledgerId`, `deletedAt`                   |

### Ruta de operación

| Evento (`ce-type`)                      | Tópico                                     | Se dispara cuando                                     | Payload principal                                                                                                 |
| --------------------------------------- | ------------------------------------------ | ----------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- |
| `studio.lerian.operation-route.created` | `lerian.streaming.operation-route.created` | Se crea una ruta de operación.                        | `id`, `organizationId`, `ledgerId`, `title`, `code`, `operationType`, `account`, `accountingEntries`, `createdAt` |
| `studio.lerian.operation-route.updated` | `lerian.streaming.operation-route.updated` | Cambian los campos mutables de una ruta de operación. | `id`, `organizationId`, `ledgerId`, `title`, `code`, `operationType`, `account`, `accountingEntries`, `updatedAt` |
| `studio.lerian.operation-route.deleted` | `lerian.streaming.operation-route.deleted` | Se elimina una ruta de operación.                     | `id`, `organizationId`, `ledgerId`, `deletedAt`                                                                   |

### Ruta de transacción

| Evento (`ce-type`)                        | Tópico                                       | Se dispara cuando                                       | Payload principal                                                             |
| ----------------------------------------- | -------------------------------------------- | ------------------------------------------------------- | ----------------------------------------------------------------------------- |
| `studio.lerian.transaction-route.created` | `lerian.streaming.transaction-route.created` | Se crea una ruta de transacción.                        | `id`, `organizationId`, `ledgerId`, `title`, `operationRouteIds`, `createdAt` |
| `studio.lerian.transaction-route.updated` | `lerian.streaming.transaction-route.updated` | Cambian los campos mutables de una ruta de transacción. | `id`, `organizationId`, `ledgerId`, `title`, `operationRouteIds`, `updatedAt` |
| `studio.lerian.transaction-route.deleted` | `lerian.streaming.transaction-route.deleted` | Se elimina una ruta de transacción.                     | `id`, `organizationId`, `ledgerId`, `deletedAt`                               |

### Saldo

| Evento (`ce-type`)                        | Tópico                                       | Se dispara cuando                                                                                                                                                    | Payload principal                                                                                                                                                                    |
| ----------------------------------------- | -------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `studio.lerian.balance.created`           | `lerian.streaming.balance.created`           | Se crea un saldo durante la configuración de la cuenta.                                                                                                              | `id`, `organizationId`, `ledgerId`, `accountId`, `alias`, `key`, `assetCode`, `accountType`, `available`, `onHold`, `allowSending`, `allowReceiving`, `createdAt`                    |
| `studio.lerian.balance.changed`           | `lerian.streaming.balance.changed`           | Una transacción confirmada mueve un saldo — un evento por cada operación que afecta al saldo; los valores reflejan el estado posterior a la operación.               | `organizationId`, `ledgerId`, `accountId`, `balanceId`, `assetCode`, `available`, `onHold`, `version`, `reason`, `direction`, `amount`, `transactionId`, `operationId`, `occurredAt` |
| `studio.lerian.balance.config-changed`    | `lerian.streaming.balance.config-changed`    | Cambian los ajustes de un saldo, o se habilita el sobregiro (se materializa el saldo acompañante). `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`           | Se elimina un saldo.                                                                                                                                                 | `id`, `organizationId`, `ledgerId`, `accountId`, `deletedAt`                                                                                                                         |
| `studio.lerian.balance.overdraft-drawn`   | `lerian.streaming.balance.overdraft-drawn`   | Un débito consume sobregiro más allá de los fondos disponibles (`action` = `drawn`).                                                                                 | `balanceId`, `accountId`, `organizationId`, `ledgerId`, `assetCode`, `transactionId`, `operationId`, `action`, `amount`, `overdraftBalance`, `overdraftLimit`, `occurredAt`          |
| `studio.lerian.balance.overdraft-repaid`  | `lerian.streaming.balance.overdraft-repaid`  | El uso del sobregiro disminuye pero no se salda por completo (`action` = `repaid`).                                                                                  | `balanceId`, `accountId`, `organizationId`, `ledgerId`, `assetCode`, `transactionId`, `operationId`, `action`, `amount`, `overdraftBalance`, `overdraftLimit`, `occurredAt`          |
| `studio.lerian.balance.overdraft-cleared` | `lerian.streaming.balance.overdraft-cleared` | El sobregiro se salda por completo — señal terminal (`action` = `cleared`).                                                                                          | `balanceId`, `accountId`, `organizationId`, `ledgerId`, `assetCode`, `transactionId`, `operationId`, `action`, `amount`, `overdraftBalance`, `overdraftLimit`, `occurredAt`          |

### Transacción

Los cuatro eventos del ciclo de vida comparten un mismo payload; solo cambia el tipo de enrutamiento.

| Evento (`ce-type`)                    | Tópico                                   | Se dispara cuando                                                                                                 | Payload principal                                                                                                                             |
| ------------------------------------- | ---------------------------------------- | ----------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
| `studio.lerian.transaction.posted`    | `lerian.streaming.transaction.posted`    | Una transacción recién creada se confirma en el almacenamiento con todas sus operaciones persistidas (sin padre). | `id`, `organizationId`, `ledgerId`, `status`, `amount`, `assetCode`, `source`, `destination`, `route`, `operations`, `metadata`, `createdAt`  |
| `studio.lerian.transaction.committed` | `lerian.streaming.transaction.committed` | Una transacción pendiente pasa de `PENDING` a `APPROVED`.                                                         | `id`, `organizationId`, `ledgerId`, `status`, `amount`, `assetCode`, `source`, `destination`, `operations`, `metadata`                        |
| `studio.lerian.transaction.canceled`  | `lerian.streaming.transaction.canceled`  | Una transacción pendiente pasa de `PENDING` a `CANCELED`.                                                         | `id`, `organizationId`, `ledgerId`, `status`, `amount`, `assetCode`, `source`, `destination`, `operations`, `metadata`                        |
| `studio.lerian.transaction.reverted`  | `lerian.streaming.transaction.reverted`  | Un flujo de reversión crea una transacción hija; `parentTransactionId` la correlaciona con la original.           | `id`, `parentTransactionId`, `organizationId`, `ledgerId`, `status`, `amount`, `assetCode`, `source`, `destination`, `operations`, `metadata` |

## Eventos del CRM

La capacidad CRM de Midaz gestiona los titulares de cuentas y sus alias. Estos eventos se emiten en el source del CRM (`lerian.midaz.crm` por defecto), separado del ledger, pero siguen el mismo envoltorio y versionado.

### Titular

| Evento (`ce-type`)             | Tópico                            | Se dispara cuando                          | Payload principal                                         |
| ------------------------------ | --------------------------------- | ------------------------------------------ | --------------------------------------------------------- |
| `studio.lerian.holder.created` | `lerian.streaming.holder.created` | Se crea un titular.                        | `id`, `organizationId`, `type`, `externalId`, `createdAt` |
| `studio.lerian.holder.updated` | `lerian.streaming.holder.updated` | Cambian los campos mutables de un titular. | `id`, `organizationId`, `type`, `externalId`, `updatedAt` |
| `studio.lerian.holder.deleted` | `lerian.streaming.holder.deleted` | Se elimina un titular.                     | `id`, `organizationId`, `deletionType`, `deletedAt`       |

### Alias

| Evento (`ce-type`)                          | Tópico                                         | Se dispara cuando                              | Payload principal                                                                                  |
| ------------------------------------------- | ---------------------------------------------- | ---------------------------------------------- | -------------------------------------------------------------------------------------------------- |
| `studio.lerian.alias.created`               | `lerian.streaming.alias.created`               | Se crea un alias para un titular y una cuenta. | `id`, `holderId`, `organizationId`, `ledgerId`, `accountId`, `type`, `relatedParties`, `createdAt` |
| `studio.lerian.alias.updated`               | `lerian.streaming.alias.updated`               | Cambian los campos mutables de un alias.       | `id`, `holderId`, `organizationId`, `ledgerId`, `accountId`, `type`, `relatedParties`, `updatedAt` |
| `studio.lerian.alias.deleted`               | `lerian.streaming.alias.deleted`               | Se elimina un alias.                           | `id`, `holderId`, `organizationId`, `deletionType`, `deletedAt`                                    |
| `studio.lerian.alias.related-party-deleted` | `lerian.streaming.alias.related-party-deleted` | Se elimina una parte relacionada de un alias.  | `aliasId`, `holderId`, `organizationId`, `relatedPartyId`, `deletedAt`                             |
