Jobs de exportação
Define qual conjunto de dados exportar para um destino, em que formato e com que frequência.
Um job liga um destino a um conjunto de dados. Cada job guarda a sua marca d'água e o horário da última execução, e roda sozinho conforme a frequência: hourly (se a última execução tem mais de 1 hora) ou daily (mais de 24 horas). O agendador confere a cada 15 minutos.
Listar jobs
/api/v1/admin/warehouse/jobsAdminLista os jobs de exportação
Exige o privilégio manage_settings (também para ler). Do mais novo para o mais antigo.
Exemplo de requisição
curl "$BASE_URL/api/v1/admin/warehouse/jobs" \
-H "Authorization: Bearer $TOKEN"Resposta
[
{
"id": "a5e3e4c8-4e2c-4923-a53c-d2a917a7259a",
"destination_id": "e7c0b063-711d-4109-aea0-36fcbd40fa3b",
"dataset": "orders",
"format": "parquet",
"csv_style": "international",
"schedule": "hourly",
"watermark": "1970-01-01T00:00:00Z",
"is_active": true,
"last_run_at": "2026-10-11T22:00:03.800000Z"
}
]A resposta é um vetor JSON direto.
Campos da resposta
[].iduuid[].destination_iduuid[].datasetstringordersorder_itemscustomersproductsinventorycommissions[].formatstringparquetcsv[].csv_stylestringinternationalbrazilian[].schedulestringhourlydaily[].watermarkstring1970-01-01T00:00:00Z = nada exportado ainda.[].is_activebooleanfalse depois de 3 falhas seguidas.[].last_run_atstringCriar um job
A combinação destino, conjunto e formato é única: criar de novo devolve 400. O job nasce ativo e com a marca d'água zerada, então a primeira execução exporta o histórico inteiro.
/api/v1/admin/warehouse/jobsAdminCria um job de exportação
Exige o privilégio manage_settings (também para ler).
Corpo da requisição
destination_iduuidobrigatóriodatasetstringobrigatórioordersorder_itemscustomersproductsinventorycommissionsformatstringpadrão: parquetparquetcsvcsv_stylestringpadrão: internationalinternationalbrazilianschedulestringpadrão: hourlyhourlydailyExemplo de requisição
curl -X POST "$BASE_URL/api/v1/admin/warehouse/jobs" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"destination_id": "e7c0b063-711d-4109-aea0-36fcbd40fa3b",
"dataset": "orders",
"format": "parquet",
"schedule": "daily"
}'Resposta
{
"id": "a5e3e4c8-4e2c-4923-a53c-d2a917a7259a",
"destination_id": "e7c0b063-711d-4109-aea0-36fcbd40fa3b",
"dataset": "orders",
"format": "parquet",
"csv_style": "international",
"schedule": "daily",
"watermark": "0001-01-01T00:00:00Z",
"is_active": false
}A criação responde 200 e devolve is_active: false e watermark zerado como valores de preenchimento; o job de fato nasce ativo e com marca d'água em 1970-01-01. Releia pela listagem.
Alterar um job
Regrava format, csv_style, schedule e is_active com o que você enviar. Envie os quatro: um campo omitido vira vazio (ou false) e a gravação é recusada com 500, ou pior, desativa o job. Não é possível trocar destination_id nem dataset. Responde 204.
/api/v1/admin/warehouse/jobs/{id}AdminAltera um job de exportação
Exige o privilégio manage_settings (também para ler).
Parâmetros de caminho
iduuidobrigatórioCorpo da requisição
formatstringobrigatórioparquetcsvcsv_stylestringobrigatóriointernationalbrazilianschedulestringobrigatóriohourlydailyis_activebooleanobrigatórioExemplo de requisição
curl -X PUT "$BASE_URL/api/v1/admin/warehouse/jobs/$JOB_ID" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"format": "parquet",
"csv_style": "international",
"schedule": "hourly",
"is_active": false
}'Resposta
Status 204 No Content, sem corpo.
Apagar um job
Exclusão definitiva do job e do histórico de execuções dele. Os arquivos já gravados no seu bucket não são tocados. Responde 204.
/api/v1/admin/warehouse/jobs/{id}AdminApaga um job de exportação
Exige o privilégio manage_settings (também para ler).
Parâmetros de caminho
iduuidobrigatórioExemplo de requisição
curl -X DELETE "$BASE_URL/api/v1/admin/warehouse/jobs/$JOB_ID" \
-H "Authorization: Bearer $TOKEN"Resposta
Status 204 No Content, sem corpo.
Erros
| Status | Quando | Corpo |
|---|---|---|
| 401 | Sem token, token inválido ou expirado | {"error":"invalid or expired token"} |
| 403 | Sem o privilégio manage_settings | {"error":"insufficient privileges","privilege_required_any":["manage_settings"]} |
| 503 | Exportação indisponível nesta instalação | {"error":"warehouse export unavailable"} |
| 400 | Corpo que não é JSON; dataset desconhecido; job repetido (mesmo destino, conjunto e formato); destination_id inexistente | {"error":"failed to create job","detail":"warehouse: unknown dataset \"zz\""} |
| 500 | Alterar com format, csv_style ou schedule vazio ou fora dos valores aceitos; id que não é UUID | {"error":"failed to update job","detail":"o valor enviado está fora da faixa permitida (campo relacionado a \"export_jobs_csv_style\")..."} |