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

# Overview

> Eventos internos que acionam handlers assíncronos

Eventos internos representam fatos já commitados.

Handlers usam esses eventos para executar efeitos assíncronos fora do fluxo síncrono.

## Envelope

| Campo  | Descrição                            |
| ------ | ------------------------------------ |
| `type` | Nome do evento                       |
| `data` | Entidade completa na raiz do payload |

## Padrão das páginas

| Seção               | Regra                                     |
| ------------------- | ----------------------------------------- |
| Detalhes do Evento  | Tipo, origem, publicação e quando emite   |
| Handlers            | Lista de execuções disparadas pelo evento |
| Payload             | Sempre `data` como entidade raiz          |
| Regras dos handlers | Regras curtas de execução assíncrona      |
| Exemplo             | Sempre por último                         |

## Regras

* Evento é publicado após commit.
* Handler não roda na transação do fluxo síncrono.
* Falha em handler não desfaz a entidade.
* Handler deve ser idempotente.
* Um evento pode ter vários handlers.

## Eventos

### Identity

| Evento                                              | Payload |
| --------------------------------------------------- | ------- |
| [`user.created`](/events/identity/user-created)     | `User`  |
| [`user.activated`](/events/identity/user-activated) | `User`  |
| [`otp.created`](/events/identity/otp-created)       | `OTP`   |

### Tenant

| Evento                                              | Payload  |
| --------------------------------------------------- | -------- |
| [`invite.created`](/events/tenant/invite-created)   | `Invite` |
| [`invite.resent`](/events/tenant/invite-resent)     | `Invite` |
| [`invite.accepted`](/events/tenant/invite-accepted) | `Invite` |

### Operations

| Evento                                                                            | Payload        |
| --------------------------------------------------------------------------------- | -------------- |
| [`route.approval_requested`](/events/operations/route-approval-requested)         | `Route`        |
| [`route.approved`](/events/operations/route-approved)                             | `Route`        |
| [`route.rejected`](/events/operations/route-rejected)                             | `Route`        |
| [`trip.created`](/events/operations/trip-created)                                 | `Trip`         |
| [`trip.status_changed`](/events/operations/trip-status-changed)                   | `Trip`         |
| [`trip.event_recorded`](/events/operations/trip-event-recorded)                   | `TripEvent`    |
| [`trip.tracking_updated`](/events/operations/trip-tracking-updated)               | `TripTracking` |
| [`trip.tracking_stale_detected`](/events/operations/trip-tracking-stale-detected) | `Trip`         |

### Fleet

| Evento                                                             | Payload  |
| ------------------------------------------------------------------ | -------- |
| [`driver.license_expiring`](/events/fleet/driver-license-expiring) | `Driver` |
| [`driver.license_expired`](/events/fleet/driver-license-expired)   | `Driver` |

### Sales

| Evento                                               | Payload  |
| ---------------------------------------------------- | -------- |
| [`order.confirmed`](/events/sales/order-confirmed)   | `Order`  |
| [`order.cancelled`](/events/sales/order-cancelled)   | `Order`  |
| [`ticket.issued`](/events/sales/ticket-issued)       | `Ticket` |
| [`ticket.cancelled`](/events/sales/ticket-cancelled) | `Ticket` |
| [`ticket.boarded`](/events/sales/ticket-boarded)     | `Ticket` |

### Billing

| Evento                                                         | Payload       |
| -------------------------------------------------------------- | ------------- |
| [`payment.updated`](/events/billing/payment-updated)           | `Payment`     |
| [`order.updated`](/events/billing/order-updated)               | `Order`       |
| [`receivables.synced`](/events/billing/receivables-synced)     | `Receivable`  |
| [`transfer.updated`](/events/billing/transfer-updated)         | `Transfer`    |
| [`bank_account.updated`](/events/billing/bank-account-updated) | `BankAccount` |
| [`payment.paid`](/events/billing/payment-paid)                 | `Payment`     |
| [`payment.failed`](/events/billing/payment-failed)             | `Payment`     |
| [`payment.overdue`](/events/billing/payment-overdue)           | `Payment`     |
| [`payment.refunded`](/events/billing/payment-refunded)         | `Payment`     |
| [`payment.chargebacked`](/events/billing/payment-chargebacked) | `Payment`     |
| [`transfer.paid`](/events/billing/transfer-paid)               | `Transfer`    |
| [`transfer.failed`](/events/billing/transfer-failed)           | `Transfer`    |

### Credit Grant

| Evento                                                              | Payload       |
| ------------------------------------------------------------------- | ------------- |
| [`credit_grant.created`](/events/credit-grant/credit-grant-created) | `CreditGrant` |
| [`credit_grant.expired`](/events/credit-grant/credit-grant-expired) | `CreditGrant` |

### Benefits

| Evento                                                                  | Payload                   |
| ----------------------------------------------------------------------- | ------------------------- |
| [`benefit_request.approved`](/events/benefits/benefit-request-approved) | `PassengerBenefitRequest` |
| [`benefit_request.rejected`](/events/benefits/benefit-request-rejected) | `PassengerBenefitRequest` |
| [`benefit_request.expired`](/events/benefits/benefit-request-expired)   | `PassengerBenefitRequest` |

### Export

| Evento                                                       | Payload     |
| ------------------------------------------------------------ | ----------- |
| [`export.completed`](/events/data-transfer/export-completed) | `ExportJob` |
| [`export.failed`](/events/data-transfer/export-failed)       | `ExportJob` |

### Support

| Evento                                                                         | Payload              |
| ------------------------------------------------------------------------------ | -------------------- |
| [`support_case.created`](/events/support/support-case-created)                 | `SupportCase`        |
| [`support_case.message_created`](/events/support/support-case-message-created) | `SupportCaseMessage` |
| [`support_case.assigned`](/events/support/support-case-assigned)               | `SupportCase`        |
| [`support_case.status_changed`](/events/support/support-case-status-changed)   | `SupportCase`        |
