Skip to main content
O ExportJob representa uma solicitação de exportação. Ele registra o recurso exportado, o escopo autorizado, as colunas e filtros escolhidos, o status do processamento e o arquivo final gerado em storage.

Campos

CampoTipoDescrição
exportJobIdUUIDIdentificador único
exportScheduledIdUUID?Agendamento que originou o job, quando aplicável
organizationIdUUID?Organização relacionada ao job
companyIdUUID?Empresa relacionada ao job
cooperativeIdUUID?Cooperativa relacionada ao job
requestedByUserIdUUIDUsuário que solicitou a exportação
resourceStringChave do recurso exportado, correspondente a ExportResource
scopeTypeDataTransferScopeTypeEscopo principal da exportação
formatDataTransferFileFormatFormato do arquivo gerado
columnsString[]Colunas solicitadas para o arquivo
filtersJsonFiltros aplicados à consulta
fileKeyString?Chave do arquivo final em storage
fileNameString?Nome sugerido para download
contentTypeString?MIME type do arquivo final
sizeBytesInt?Tamanho do arquivo final em bytes
totalRowsInt?Total de linhas escritas no arquivo
failureReasonString?Motivo de falha quando o job termina em FAILED
statusExportJobStatusStatus da exportação
expiresAtDateTime?Data limite de disponibilidade do arquivo
startedAtDateTime?Data em que o worker iniciou a exportação
finishedAtDateTime?Data em que o job chegou a um status terminal
createdAtDateTimeData de criação
updatedAtDateTimeData da última atualização
deletedAtDateTime?Data de remoção lógica

Relacionamentos

  • Relaciona-se com Organization, quando o escopo exigir organização.
  • Relaciona-se com Company, quando o escopo for COMPANY.
  • Relaciona-se com Cooperative, quando o escopo for COOPERATIVE.
  • Relaciona-se com User por requestedByUserId.
  • Referencia ExportResource por resource.
  • Relaciona-se com ExportScheduled, quando o job foi gerado por agendamento.

Regras de Negócio

  • resource deve existir como catálogo ativo em ExportResource.
  • exportScheduledId deve ser preenchido somente quando o job nasce de um ExportScheduled.
  • scopeType define quais identificadores de escopo são obrigatórios. Por exemplo, COOPERATIVE exige cooperativeId.
  • columns deve ser subconjunto das colunas permitidas no catálogo.
  • filters deve respeitar os campos e operadores permitidos no catálogo.
  • fileKey, fileName, contentType, sizeBytes, totalRows e expiresAt são preenchidos quando o arquivo final é gerado.
  • URLs assinadas para download não devem ser persistidas. Elas são derivadas de fileKey.
  • EXPIRED indica que o arquivo não deve mais ser disponibilizado para download.
  • Remoção lógica preserva histórico do job, mas não substitui a política de retenção do arquivo.

Enums

DataTransferScopeType

ValorDescrição
ORGANIZATIONOperação limitada a uma organização
COMPANYOperação limitada a uma empresa
COOPERATIVEOperação limitada a uma cooperativa
BACKOFFICEOperação administrativa

DataTransferFileFormat

ValorDescrição
CSVArquivo CSV
XLSXPlanilha Excel

ExportJobStatus

ValorDescrição
PENDINGJob criado, ainda sem publicação para processamento
QUEUEDJob publicado para processamento assíncrono
RUNNINGWorker gerando o arquivo
COMPLETEDArquivo gerado e disponível
FAILEDExportação abortada antes da conclusão
EXPIREDArquivo final expirado para download
CANCELEDJob cancelado antes de terminar

Example

{
  "exportJobId": "0197f604-49fe-7b73-bb81-df2e93a7e47d",
  "exportScheduledId": "0197f605-98dd-71e8-9666-0d9f6c719b95",
  "organizationId": "0197a801-1690-7590-b3cf-19599b9be3e4",
  "companyId": "0197a801-6a42-79aa-9e56-d3c85148c0fa",
  "cooperativeId": null,
  "requestedByUserId": "0197a805-0910-7eb2-bae7-90a13df2a9b2",
  "resource": "order",
  "scopeType": "COMPANY",
  "format": "CSV",
  "columns": ["code", "status", "totalAmount", "createdAt"],
  "filters": {
    "createdAt": {
      "operator": "BETWEEN",
      "value": ["2026-07-01", "2026-07-04"]
    }
  },
  "fileKey": "data-transfer/exports/0197f604-49fe-7b73-bb81-df2e93a7e47d/orders.csv",
  "fileName": "pedidos-2026-07-01-2026-07-04.csv",
  "contentType": "text/csv",
  "sizeBytes": 94208,
  "totalRows": 840,
  "failureReason": null,
  "status": "COMPLETED",
  "expiresAt": "2026-07-11T12:20:00.000Z",
  "startedAt": "2026-07-04T12:19:00.000Z",
  "finishedAt": "2026-07-04T12:20:00.000Z",
  "createdAt": "2026-07-04T12:18:45.000Z",
  "updatedAt": "2026-07-04T12:20:00.000Z",
  "deletedAt": null
}