Operações em lote
Como alterar centenas de registros de uma vez com segurança: simular, confirmar, acompanhar a tarefa e desfazer.
Quando você precisa mudar muitos registros de uma vez ("aumentar 10% o preço de uma categoria", "desativar todas as promoções vencidas"), fazer uma chamada por registro é lento e arriscado. As operações em lote resolvem isso com um fluxo de quatro passos: simular, confirmar, acompanhar e, se for preciso, desfazer.
Esta seção documenta o lote genérico (POST /bulk/apply), o acompanhamento das tarefas (/bulk-jobs), o desfazer (/bulk-undo) e o acompanhamento de importações de arquivos (/import-jobs).
Como funciona
- Simular
Chame a rota com o corpo completo e
"simulate": true. Nada é gravado. A resposta traztotal,sample(antes e depois de alguns registros), avisos e oconfirm_token. - Mostrar ao usuário e confirmar
Mostre o total e a amostra a quem decide. Se aprovado, repita o mesmo corpo, sem
simulate, comconfirm_token. - Acompanhar
Com 50 registros ou mais, a resposta é
202com umjob. Leia o andamento emGET /bulk-jobs/{id}ou pelo stream de eventos. - Desfazer, se preciso
O lote devolve um
undo_id.POST /bulk-undo/{id}(também com simulação e confirmação) restaura os valores anteriores.
Estados de uma tarefa
status | Significado |
|---|---|
queued | Na fila: outra tarefa da mesma sessão ainda está rodando. |
running | Em execução. processed e percent avançam. |
done | Terminou. Veja affected e failed. |
failed | Parou por erro. O motivo está em error. |
interrupted | O servidor reiniciou no meio. Os registros já tratados ficam como estão. |
Conceitos-chave
Dinheiro em centavos
Nos filtros e nas mudanças, preços são inteiros em centavos (10000 é R$ 100,00). Um filtro price_max: 100 pega até R$ 1,00.
Resultado parcial não é sucesso
Um lote pode alterar parte dos registros e falhar em outros. A resposta traz affected, failed (lista dos que falharam, com o motivo) e partial_failure: true. Confira sempre failed antes de dar o lote como concluído.
Fila por sessão
Tarefas iniciadas na mesma sessão (a mesma sessão do painel) rodam uma por vez, na ordem de confirmação, para que "aumente o preço" e "zere o estoque" não se atropelem.
Endpoints
| Método e caminho | Para que serve | Autenticação | Página |
|---|---|---|---|
POST /api/v1/admin/bulk/apply | Aplica a rota de um registro a muitos | administrador | Lote genérico |
GET /api/v1/admin/bulk-jobs | Lista tarefas recentes | administrador | Tarefas |
GET /api/v1/admin/bulk-jobs/{id} | Estado de uma tarefa | administrador | Tarefas |
GET /api/v1/admin/bulk-jobs/{id}/stream | Andamento em tempo real | administrador | Tarefas |
GET /api/v1/admin/bulk-undo | Lista lotes que podem ser desfeitos | administrador | Desfazer |
POST /api/v1/admin/bulk-undo/{id} | Desfaz um lote | administrador | Desfazer |
GET /api/v1/admin/import-export/fields/{entity} | Campos de importação de um tipo | administrador | Importações |
GET /api/v1/admin/import-jobs/{id}/progress | Andamento de uma importação | administrador | Importações |
POST /api/v1/admin/import-jobs/{id}/cancel | Cancela uma importação | administrador | Importações |
Erros comuns
- Executar sem simular.
428 simulate_required. Simule primeiro e reenvie com oconfirm_token. - Mudar o corpo entre a simulação e a execução. O token é amarrado ao pedido:
409 confirm_token_invalid. - Filtrar preço em reais. O filtro espera centavos. Simule e leia a amostra antes de confirmar.
- Dar o lote por feito sem ler
failed. Lotes parciais voltam200ou202. - Mandar
GETemroute. O lote só escreve:POST,PUT,PATCHouDELETE. - Esperar desfazer para sempre. Um lote já desfeito responde
409 already undone.