> ## 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 Reporter

> Consulta los eventos de dominio que emite Lerian Reporter — ciclo de vida de plantillas, reportes y plazos — con payloads completos, tópicos y semántica de entrega.

Reporter emite eventos de dominio como mensajes **CloudEvents 1.0** en modo de contenido binario. A diferencia de Midaz y de los demás productores Kafka, Reporter publica sobre **RabbitMQ**: cada evento se enruta al exchange nombrado por `RABBITMQ_REPORT_EVENTS_EXCHANGE` con la clave del evento como routing key AMQP (`report.finished` se enruta como `report.finished`). El sobre es idéntico al del resto de la plataforma — consulta el [sobre compartido](/es/reference/events/overview) — y el valor `topic` del manifiesto es un identificador lógico derivado de la fuente, no un destino en el broker.

Cada evento lleva `ce-schemaversion` `1.0.0`. Las claves del payload son `snake_case`. Los campos marcados con `?` son opcionales o anulables. La emisión es post-commit y nunca hace fallar el trabajo subyacente. Los eventos **Critical** están respaldados por outbox — escritos en un outbox durable y retransmitidos durante las caídas del broker; los eventos **Important** publican directo, cayendo al outbox cuando el circuito del broker se abre. Para los conceptos, la operación del manifiesto y la guía del consumidor, lee la [guía de eventos de Reporter](/es/reporter/reporter-events); el catálogo legible por máquina se sirve en [`GET /v1/streaming/events`](/es/reference/reporter/get-streaming-events).

## Eventos de plantilla

Todos Important.

| Evento (`ce-type`)               | Se dispara cuando                                       | Payload principal                                                                                                         |
| -------------------------------- | ------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- |
| `studio.lerian.template.created` | Una plantilla se sube y persiste.                       | `template_id`, `output_format`, `description`, `file_name`, `mapped_datasource_keys`, `mapped_fields_count`, `created_at` |
| `studio.lerian.template.updated` | El archivo o los metadatos de una plantilla cambian.    | `template_id`, `output_format`, `description`, `updated_fields`, `file_replaced`, `updated_at`                            |
| `studio.lerian.template.deleted` | Una plantilla se elimina, con cascada sobre sus plazos. | `template_id`, `hard_delete`, `cascaded_deadlines_deleted`, `deleted_at`                                                  |

## Eventos de reporte

`report.requested` es Important; los tres eventos terminales son Critical.

| Evento (`ce-type`)               | Se dispara cuando                                                                                                                                                                                                                                   | Payload principal                                                                                                                                                                                 |
| -------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `studio.lerian.report.requested` | Una solicitud de reporte se acepta y se encola de forma durable (estado `Processing`), antes de que el worker la tome.                                                                                                                              | `report_id`, `template_id`, `output_format`, `status`, `request_id`, `filter_datasource_count`, `template_description`                                                                            |
| `studio.lerian.report.finished`  | Todas las secciones de datos tuvieron éxito y el artefacto está almacenado.                                                                                                                                                                         | `report_id`, `template_id`, `output_format`, `status`, `artifact_object_key`, `artifact_content_type`, `artifact_ttl`?, `completed_at`, `duration_ms`, `section_count`                            |
| `studio.lerian.report.partial`   | Al menos una sección falló pero existe un artefacto. `section_failures` lleva solo códigos de error canónicos.                                                                                                                                      | `report_id`, `template_id`, `output_format`, `status`, `artifact_object_key`, `artifact_content_type`, `section_failures`, `completed_at`, `duration_ms`, `section_count`, `failed_section_count` |
| `studio.lerian.report.errored`   | El reporte termina en error — el despacho al worker falló o la generación falló. `error_code` es un vocabulario fijo (`report_generation_failed`, `report_generation_timeout`, `report_generation_canceled`); el texto crudo del error nunca viaja. | `report_id`, `template_id`?, `output_format`?, `status`, `error_code`, `error_summary`, `completed_at`, `duration_ms`?                                                                            |

`report.errored` puede originarse en el manager (fallo de despacho) o en el worker (fallo de generación). Ambos comparten el `ce-id` determinista `reporter.report.error.<report_id>`, así que los duplicados colapsan en el consumidor.

## Eventos de plazo

`deadline.delivered` y `deadline.delivery_reverted` son Critical; el resto son Important.

| Evento (`ce-type`)                         | Se dispara cuando                                                                 | Payload principal                                                                                                                                                                   |
| ------------------------------------------ | --------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `studio.lerian.deadline.created`           | Se crea un plazo regulatorio.                                                     | `deadline_id`, `name`, `type`, `template_id`?, `template_name`, `due_date`, `frequency`, `months_of_year`, `active`, `notify_days_before`, `color`, `status_snapshot`, `created_at` |
| `studio.lerian.deadline.updated`           | Un plazo cambia.                                                                  | `deadline_id`, `updated_fields`, `template_id`?, `template_name`, `due_date`, `frequency`, `months_of_year`, `active`, `status_snapshot`, `updated_at`                              |
| `studio.lerian.deadline.deleted`           | Un plazo se elimina (soft delete).                                                | `deadline_id`, `soft_delete`, `deleted_at`                                                                                                                                          |
| `studio.lerian.deadline.delivered`         | Un plazo se marca como entregado. `next_occurrence` es `null` para plazos únicos. | `deadline_id`, `template_id`?, `template_name`, `type`, `due_date`, `delivered_at`?, `status_snapshot`, `frequency`, `next_occurrence`?, `updated_at`                               |
| `studio.lerian.deadline.delivery_reverted` | Una marca de entrega se deshace.                                                  | `deadline_id`, `template_id`?, `template_name`, `type`, `due_date`, `reverted_at`, `previous_delivered_at`?, `status_snapshot`, `frequency`, `updated_at`                           |

## Eventos consumidos

Reporter no consume eventos de la plataforma — este canal es de solo publicación. El tráfico de generación de reportes entre manager y worker corre por una cola de trabajo RabbitMQ interna que no forma parte del contrato público de eventos.
