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

# ExportResource

> Catálogo de recursos exportáveis, colunas e filtros permitidos

O `ExportResource` representa uma entrada do catálogo de exportação. Ele define qual recurso pode ser exportado, quais colunas podem sair, quais filtros podem ser aplicados, quais formatos são aceitos e qual permission autoriza a operação.

## Campos

| Campo              | Tipo                         | Descrição                                                                        |
| ------------------ | ---------------------------- | -------------------------------------------------------------------------------- |
| `exportResourceId` | `UUID`                       | Identificador único                                                              |
| `resource`         | `String`                     | Chave estável do recurso exportável, como `order`, `ticket`, `vehicle` ou `trip` |
| `label`            | `String`                     | Nome exibido para o usuário no fluxo de exportação                               |
| `description`      | `String?`                    | Descrição curta do recurso exportável                                            |
| `permission`       | `String`                     | Permission necessária para exportar o recurso                                    |
| `formats`          | `DataTransferFileFormat[]`   | Formatos disponíveis para geração                                                |
| `defaultFormat`    | `DataTransferFileFormat`     | Formato pré-selecionado                                                          |
| `defaultColumns`   | `String[]`                   | Colunas selecionadas por padrão                                                  |
| `columns`          | `ExportColumn[]`             | Colunas permitidas para exportação                                               |
| `filters`          | `ExportFilter[]`             | Filtros permitidos para consulta                                                 |
| `maxRows`          | `Int?`                       | Limite máximo de linhas por exportação                                           |
| `status`           | `DataTransferResourceStatus` | Status do catálogo                                                               |
| `createdAt`        | `DateTime`                   | Data de criação                                                                  |
| `updatedAt`        | `DateTime`                   | Data da última atualização                                                       |
| `deletedAt`        | `DateTime?`                  | Data de remoção lógica                                                           |

### ExportColumn

| Campo       | Tipo              | Descrição                                                   |
| ----------- | ----------------- | ----------------------------------------------------------- |
| `field`     | `String`          | Chave da coluna no arquivo                                  |
| `label`     | `String`          | Nome exibido para a coluna                                  |
| `type`      | `ExportValueType` | Tipo do valor usado para formatação                         |
| `values`    | `String[]?`       | Valores possíveis quando `type` for `ENUM`                  |
| `sensitive` | `Boolean?`        | Indica coluna sensível que pode exigir permission adicional |

### ExportFilter

| Campo       | Tipo                     | Descrição                                  |
| ----------- | ------------------------ | ------------------------------------------ |
| `field`     | `String`                 | Campo filtrável                            |
| `label`     | `String`                 | Nome exibido para o filtro                 |
| `type`      | `ExportValueType`        | Tipo do valor esperado no filtro           |
| `operators` | `ExportFilterOperator[]` | Operadores permitidos                      |
| `values`    | `String[]?`              | Valores possíveis quando `type` for `ENUM` |
| `required`  | `Boolean?`               | Indica se o filtro precisa ser informado   |

## Relacionamentos

* É referenciado por [ExportScheduled](/data-modelling/data-transfer/export-scheduled) via `resource`.
* É referenciado por [ExportJob](/data-modelling/data-transfer/export-job) via `resource`.
* Não precisa de FK direta com os recursos exportados. O backend resolve o repositório de leitura pelo mesmo `resource`.

## Regras de Negócio

* Deve existir apenas um catálogo ativo por `resource`.
* `defaultColumns` deve ser subconjunto de `columns`.
* `defaultFormat` deve existir dentro de `formats`.
* Toda coluna solicitada em [ExportJob](/data-modelling/data-transfer/export-job) deve existir em `columns`.
* Todo filtro solicitado em [ExportJob](/data-modelling/data-transfer/export-job) deve existir em `filters` e respeitar os operadores permitidos.
* Colunas sensíveis devem ser protegidas por permission específica ou regra explícita no backend.
* Remover um recurso do catálogo deve ser remoção lógica por `deletedAt`.

## Enums

### DataTransferFileFormat

| Valor  | Descrição      |
| ------ | -------------- |
| `CSV`  | Arquivo CSV    |
| `XLSX` | Planilha Excel |

### ExportValueType

| Valor     | Descrição                         |
| --------- | --------------------------------- |
| `STRING`  | Texto                             |
| `NUMBER`  | Número decimal ou inteiro         |
| `DATE`    | Data                              |
| `BOOLEAN` | Valor booleano                    |
| `ENUM`    | Valor dentro de uma lista fechada |

### ExportFilterOperator

| Valor      | Descrição                      |
| ---------- | ------------------------------ |
| `EQ`       | Igual a um valor               |
| `IN`       | Dentro de uma lista de valores |
| `GTE`      | Maior ou igual                 |
| `LTE`      | Menor ou igual                 |
| `BETWEEN`  | Dentro de intervalo inclusivo  |
| `CONTAINS` | Contém texto                   |

### DataTransferResourceStatus

| Valor      | Descrição                                                   |
| ---------- | ----------------------------------------------------------- |
| `ACTIVE`   | Recurso disponível para novos jobs                          |
| `INACTIVE` | Recurso indisponível para novos jobs, preservando histórico |

## Example

```json theme={null}
{
  "exportResourceId": "0197f603-5c89-750e-aa6b-373d9d8eb621",
  "resource": "order",
  "label": "Pedidos",
  "description": "Exportação de pedidos por período e status",
  "permission": "export:order",
  "formats": ["CSV", "XLSX"],
  "defaultFormat": "CSV",
  "defaultColumns": ["code", "status", "totalAmount", "createdAt"],
  "columns": [
    {
      "field": "code",
      "label": "Código",
      "type": "STRING"
    },
    {
      "field": "totalAmount",
      "label": "Valor total",
      "type": "NUMBER"
    }
  ],
  "filters": [
    {
      "field": "createdAt",
      "label": "Criado em",
      "type": "DATE",
      "operators": ["BETWEEN"],
      "required": true
    }
  ],
  "maxRows": 100000,
  "status": "ACTIVE",
  "createdAt": "2026-07-04T12:10:00.000Z",
  "updatedAt": "2026-07-04T12:10:00.000Z",
  "deletedAt": null
}
```
