Jobs de importação
Consulta o andamento de uma importação em segundo plano, pede o cancelamento e baixa o relatório de erros por linha.
Uma importação grande não termina dentro da requisição. A plataforma devolve um job (um trabalho em segundo plano) e continua gravando. Estas quatro rotas servem para saber em que ponto o job está, para parar um job que você começou por engano e para descobrir quais linhas falharam e por quê.
O job_id vem das respostas de Importar produtos, de preços por quantidade e do assistente de importação. Todas as rotas abaixo exigem manage_catalog.
Ciclo de vida do job
| Status | Significado |
|---|---|
pending | O arquivo foi recebido e preparado, mas a gravação ainda não começou. |
processing | A gravação está em andamento. |
completed | Terminou. Isso não quer dizer que todas as linhas entraram: veja skipped_count e os erros. |
failed | Parou por erro geral ou foi cancelado pelo usuário. As linhas gravadas antes da parada continuam gravadas. |
/api/v1/admin/import/jobs/{id}AdminConsulta um job de importação
Devolve o estado completo do job, com as contagens finais e a lista de erros.
Parâmetros de caminho
iduuidobrigatóriojob_id)./api/v1/admin/import/jobs/{id}/progressAdminAndamento resumido do job
Versão leve para uma barra de progresso: só contadores e porcentagem, sem a lista de erros. Consulte a cada dois segundos; não há ganho em consultar mais rápido.
Parâmetros de caminho
iduuidobrigatório/api/v1/admin/import/jobs/{id}/cancelAdminPede o cancelamento do job
Marca o job para parar. A gravação confere o pedido a cada 25 linhas e então para; o job termina como failed, com o erro cancelled by user. O que já foi gravado não é desfeito. Só funciona em job que ainda não terminou; em job concluído a resposta é 404.
Parâmetros de caminho
iduuidobrigatório/api/v1/admin/import/jobs/{id}/errors.csvAdminBaixa os erros por linha em CSV
Devolve um CSV (UTF-8 com BOM, anexo import-errors-<id>.csv) com as colunas row, field e message, uma linha por problema. row é o número da linha na planilha enviada (o cabeçalho é a linha 1). Funciona com o job em andamento ou terminado. Sem erros, o arquivo só tem o cabeçalho.
Parâmetros de caminho
iduuidobrigatórioExemplo de requisição
JOB=7aa94252-0df6-4293-8404-c0ffc2a96fbc
curl "$BASE_URL/api/v1/admin/import/jobs/$JOB/progress" -H "Authorization: Bearer $TOKEN"
curl -X POST "$BASE_URL/api/v1/admin/import/jobs/$JOB/cancel" -H "Authorization: Bearer $TOKEN"
curl "$BASE_URL/api/v1/admin/import/jobs/$JOB/errors.csv" -H "Authorization: Bearer $TOKEN" -o erros.csvResposta
{
"job_id": "7aa94252-0df6-4293-8404-c0ffc2a96fbc",
"status": "completed",
"total_rows": 2,
"processed_rows": 2,
"created_count": 1,
"updated_count": 0,
"skipped_count": 1,
"moderation_count": 0,
"errors": [
{ "row": 3, "field": "vendor_id,name", "message": "produto novo exige vendor_id, name — selecione o \"Vendedor padrão\" antes de importar, ou mapeie uma coluna para vendor_id" }
],
"image_stored_count": 0,
"image_skipped_count": 0,
"image_failed_count": 0
}{
"job_id": "7aa94252-0df6-4293-8404-c0ffc2a96fbc",
"status": "processing",
"total": 12840,
"processed": 3200,
"percent": 24.9,
"current_chunk": 64,
"created_count": 2900,
"updated_count": 280,
"skipped_count": 20,
"error_count": 20
}{
"job_id": "7aa94252-0df6-4293-8404-c0ffc2a96fbc",
"status": "cancelling",
"message": "cancel requested; the import loop will stop at the next 25-row checkpoint"
}Campos da resposta (job)
statusstringpendingprocessingcompletedfailedtotal_rowsintegerprocessed_rowsintegercreated_countintegerupdated_countintegerskipped_countintegermoderation_countintegererrorsarrayrow, field, message). Pode faltar quando não há erro.image_stored_countintegerimage_skipped_countintegerimage_failed_countintegerCampos da resposta (andamento)
totalintegerprocessedintegerpercentnumbercurrent_chunkintegererror_countintegerskipped_count).Erros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 401 | Token ausente ou expirado | {"error":"invalid or expired token"} |
| 403 | Falta manage_catalog | {"error":"insufficient privileges","required":"manage_catalog"} |
| 404 | Job não existe | {"error":"import job not found","detail":"import job not found: <id>"} |
| 404 | Cancelar um job que já terminou | {"error":"cancel failed","detail":"import job <id> not found or already finished"} |
| 404 | Andamento de job que não existe | {"error":"progress lookup failed","detail":"..."} |