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

# Exports

> Fluxo de exportação imediata e agendada.

Uma exportação começa no catálogo de recursos exportáveis e termina em um arquivo gerado em storage.

## Fluxo imediato

```mermaid theme={null}
flowchart TD
    USER["Usuário solicita exportação"] --> RESOURCE["Sistema valida ExportResource"]
    RESOURCE --> SCOPE["Sistema valida escopo e permissão"]
    SCOPE --> INPUT["Sistema valida colunas e filtros"]
    INPUT --> JOB["ExportJob é criado"]
    JOB --> WORKER["Worker gera arquivo"]
    WORKER --> DONE["Arquivo fica disponível por fileKey"]
```

## Fluxo agendado

```mermaid theme={null}
flowchart TD
    USER["Usuário agenda exportação"] --> SCHEDULED["ExportScheduled é criado"]
    SCHEDULED --> TIME["Scheduler alcança scheduledAt"]
    TIME --> JOB["ExportJob é criado com o mesmo shape"]
    JOB --> WORKER["Worker gera arquivo"]
    WORKER --> DONE["Arquivo fica disponível por fileKey"]
```

## Etapas

| Etapa                | Ator                          | Momento                                             | Efeito                                                           |
| -------------------- | ----------------------------- | --------------------------------------------------- | ---------------------------------------------------------------- |
| Configurar catálogo  | BackOffice ou plataforma      | Antes de liberar o recurso                          | Define recurso, permissão, formatos, colunas, filtros e limites. |
| Solicitar exportação | Usuário autorizado            | Quando precisa baixar dados                         | Informa recurso, formato, colunas, filtros e escopo.             |
| Validar solicitação  | Sistema                       | Antes de criar job ou agendamento                   | Confere permissão, escopo, colunas e filtros contra o catálogo.  |
| Criar job            | Sistema                       | Exportação imediata ou execução de agendamento      | Cria ExportJob com status inicial.                               |
| Processar            | Worker                        | Quando o job entra na fila                          | Gera arquivo, conta linhas e preenche metadados.                 |
| Baixar               | Usuário solicitante           | Depois de concluído                                 | Recebe URL assinada derivada do `fileKey`.                       |
| Expirar ou cancelar  | Sistema ou usuário autorizado | Quando arquivo ou solicitação não deve seguir ativa | Bloqueia download ou nova execução.                              |

## Regras

* O recurso precisa existir como ExportResource ativo.
* A permissão exigida pelo catálogo precisa estar no escopo do usuário.
* As colunas solicitadas precisam ser subconjunto das colunas permitidas.
* Os filtros precisam usar campos e operadores permitidos.
* Colunas sensíveis exigem tratamento explícito no catálogo.
* URL assinada é derivada no momento do download e não deve ser persistida.
* ExportScheduled precisa ter `scheduledAt` futuro.
* ExportScheduled executado cria um ExportJob com mesmo escopo, recurso, formato, colunas e filtros.
* Jobs e agendamentos cancelados, expirados, concluídos ou removidos logicamente não executam novamente.

## Status

| Modelo          | Status principais                                                            |
| --------------- | ---------------------------------------------------------------------------- |
| ExportJob       | `PENDING`, `QUEUED`, `RUNNING`, `COMPLETED`, `FAILED`, `EXPIRED`, `CANCELED` |
| ExportScheduled | `SCHEDULED`, `COMPLETED`, `FAILED`, `CANCELED`                               |

Veja a modelagem em [ExportJob](/data-modelling/data-transfer/export-job).
