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

# AuditLog

> Log de auditoria para rastreabilidade de ações no sistema

## Campos

| Campo            | Tipo            | Descrição                                            |
| ---------------- | --------------- | ---------------------------------------------------- |
| `auditLogId`     | `UUID`          | Identificador único                                  |
| `organizationId` | `UUID?`         | Referência à organização                             |
| `userId`         | `UUID?`         | Referência ao usuário que executou a ação (opcional) |
| `type`           | `AuditLogType`  | Tipo do registro de log                              |
| `domain`         | `AuditDomain`   | Domain do recurso auditado                           |
| `resource`       | `AuditResource` | Entity ou recurso auditado dentro do domain          |
| `resourceId`     | `String`        | ID da instância afetada                              |
| `action`         | `String`        | Nome aberto da ação realizada                        |
| `userAgent`      | `String?`       | User-Agent da requisição                             |
| `ip`             | `String?`       | Endereço IP da requisição                            |
| `oldData`        | `Json?`         | Dados antes da operação (snapshot)                   |
| `newData`        | `Json?`         | Dados após a operação (snapshot)                     |
| `createdBy`      | `UUID?`         | Usuário que criou o registro, quando aplicável       |
| `createdAt`      | `DateTime`      | Data de criação                                      |

## Relacionamentos

* Relaciona-se opcionalmente com [Organization](/data-modelling/tenant/organization).
* `userId` identifica logicamente o [User](/data-modelling/identity/user) associado à ação.

## Regras de Negócio

* Log append-only — registros nunca são editados ou removidos.
* `type` classifica se o registro nasceu de uma ação da aplicação ou de uma rotina do sistema.
* `type = SYSTEM_LOG` pode ter `userId = null` quando não houver ator humano ou usuário de sistema associado.
* Rastreamento via `domain` + `resource` + `resourceId` (ex.: `domain = IDENTITY`, `resource = USER`, `resourceId = uuid`).
* `domain` e `resource` são enums fechados para garantir filtros consistentes.
* `action` é 100% aberto e não possui enum. A aplicação pode registrar combinações de negócio como `USER_BLOCKED`, `ROUTE_APPROVED`, `TICKET_REPRINTED` ou `SESSION_REVOKED`.
* Armazena snapshots de antes (`oldData`) e depois (`newData`) para rastreabilidade completa.
* Captura metadados da requisição (`userAgent`, `ip`) para fins de segurança.
* A consulta pode ser filtrada por organização, usuário, domain, resource, resourceId, action e data.
* Por ser append-only, o registro usa apenas `createdBy` e `createdAt` como auditoria direta.

## Enums

### AuditLogType

| Valor             | Descrição                                                                         |
| ----------------- | --------------------------------------------------------------------------------- |
| `APPLICATION_LOG` | Registro emitido por fluxo da aplicação, caso de uso, API ou ação de usuário      |
| `SYSTEM_LOG`      | Registro emitido por rotina automática, scheduler, integração ou processo interno |

### AuditDomain

| Valor           |
| --------------- |
| `IDENTITY`      |
| `TENANT`        |
| `AUTHORIZATION` |
| `FLEET`         |
| `OPERATIONS`    |
| `SALES`         |
| `BENEFITS`      |
| `CREDIT_GRANT`  |
| `PROMOTION`     |
| `SUPPORT`       |
| `COMMUNICATION` |
| `DATA_TRANSFER` |
| `FINANCIAL`     |
| `WEBHOOKS`      |
| `OBSERVABILITY` |

### AuditResource

| Valor                              |
| ---------------------------------- |
| `USER`                             |
| `USER_SESSION`                     |
| `CUSTOMER`                         |
| `CUSTOMER_ADDRESS`                 |
| `PROFILE`                          |
| `OTP`                              |
| `ORGANIZATION`                     |
| `ORGANIZATION_ADDRESS`             |
| `COOPERATIVE`                      |
| `COMPANY`                          |
| `EMPLOYEE`                         |
| `MEMBERSHIP`                       |
| `INVITE`                           |
| `ROLE`                             |
| `ROLE_PERMISSION`                  |
| `DRIVER`                           |
| `DRIVER_COMPANY`                   |
| `VEHICLE`                          |
| `SEAT`                             |
| `SEAT_TYPE`                        |
| `POINT`                            |
| `ROUTE`                            |
| `ROUTE_APPROVAL`                   |
| `TRIP`                             |
| `TRIP_STOP`                        |
| `TRIP_ITINERARY`                   |
| `TRIP_EVENT`                       |
| `TRIP_SEAT_SEGMENT`                |
| `TRIP_SCHEDULE`                    |
| `TRIP_SCHEDULE_STOP`               |
| `TRIP_SCHEDULE_ITINERARY`          |
| `CHECKOUT`                         |
| `ORDER`                            |
| `PASSENGER`                        |
| `TICKET`                           |
| `TICKET_ACTIVITY`                  |
| `ORDER_REVIEW`                     |
| `FARE_BENEFIT_CATEGORY`            |
| `FARE_BENEFIT_PROGRAM`             |
| `PASSENGER_BENEFIT_REQUEST`        |
| `BENEFIT_DOCUMENT_VALIDATION`      |
| `BENEFIT_USAGE_HISTORY`            |
| `CREDIT_GRANT`                     |
| `CREDIT_LEDGER_ENTRY`              |
| `PROMOTIONAL`                      |
| `PROMOTIONAL_ROUTE_RULE`           |
| `PROMOTIONAL_ROUND_TRIP_RULE`      |
| `PROMOTIONAL_MULTI_TICKET_RULE`    |
| `PROMOTIONAL_LOW_DEMAND_TIME_RULE` |
| `PROMOTIONAL_USAGE_HISTORY`        |
| `SUPPORT_CASE`                     |
| `SUPPORT_CASE_MESSAGE`             |
| `SUPPORT_CASE_ATTACHMENT`          |
| `SUPPORT_CASE_ASSIGNMENT`          |
| `SUPPORT_CASE_CATEGORY`            |
| `SUPPORT_CASE_SATISFACTION_RATING` |
| `NOTIFICATION`                     |
| `NOTIFICATION_RECIPIENT`           |
| `EXPORT_RESOURCE`                  |
| `EXPORT_SCHEDULED`                 |
| `EXPORT_JOB`                       |
| `COMPANY_PAYMENT_SETTINGS`         |
| `PAYMENT`                          |
| `PAYMENT_METHOD`                   |
| `RECEIVABLE`                       |
| `BANK_ACCOUNT`                     |
| `TRANSFER`                         |
| `WEBHOOK`                          |
| `AUDIT_LOG`                        |

## Example

```json theme={null}
{
  "auditLogId": "0197a819-ae6c-7cd6-b872-1f6c898c50d9",
  "organizationId": "0197a7f7-7291-7a43-96db-2c8580b80c5d",
  "userId": "0197a805-0910-7eb2-bae7-90a13df2a9b2",
  "type": "APPLICATION_LOG",
  "domain": "OPERATIONS",
  "resource": "ROUTE",
  "resourceId": "0197a80c-4204-7b77-9005-48cc23677587",
  "action": "ROUTE_APPROVED",
  "userAgent": "DEVMOB-Ops/1.0",
  "ip": "203.0.113.10",
  "oldData": {
    "status": "PENDING_APPROVAL"
  },
  "newData": {
    "status": "ACTIVE"
  },
  "createdBy": "0197a805-0910-7eb2-bae7-90a13df2a9b2",
  "createdAt": "2026-07-03T16:00:00.000Z"
}
```
