Appearance
ENVIAR_PRODUTOS_INTERVALO
Envia os produtos criados ou modificados no intervalo para a Maggu. Mantém o catálogo sincronizado de forma incremental, sem precisar re-enviar tudo.
Argumentos: de, ate (datetime ISO 8601 UTC)
Herda de ComandoComIntervaloDeDatas
Payload recebido
json
{
"id": 5006,
"tipo": "ENVIAR_PRODUTOS_INTERVALO",
"argumentos": {
"de": "2026-05-12T00:00:00Z",
"ate": "2026-05-13T23:59:59Z"
},
"criadoEm": "2026-05-13T10:25:00Z"
}Implementação .NET
csharp
public class EnviarProdutosIntervaloComando : ComandoComIntervaloDeDatas
{
protected override async Task ExecutarAsync(CancellationToken ct)
{
// Filtra por data de criação OU data de última modificação
var produtos = await _erp.BuscarProdutosCriadosOuModificadosAsync(
Argumentos.De, Argumentos.Ate, ct);
foreach (var lote in produtos.Chunk(400))
{
var requisicao = new RestRequest("api/v3/produtos/registrar-em-lote", Method.Post);
requisicao.AddJsonBody(new { comandoId = Id, conteudo = lote });
await _provedor.Client.PostAsync(requisicao, ct);
}
}
}Chamada à API Maggu
O endpoint e o payload são idênticos ao ENVIAR_TODOS_PRODUTOS — a diferença está apenas no conjunto de registros enviados (parcial vs. total).
POST /v3/produtos/registrar-em-lote
json
{
"comandoId": 5006,
"conteudo": [
{
"ean": "7891000315507",
"nome": "Paracetamol 750mg 20 comprimidos",
"precoVenda": "9.50",
"precoVendaDesconto": "8.00",
"estoqueUnidades": 120
}
]
}Respostas:
| Código | Significado |
|---|---|
202 Accepted | Lote em processamento |
400 Bad Request | Erro de validação |
403 Forbidden | Token inválido |
Sincronização de preços e estoque
Para atualizações frequentes somente de preço ou estoque (sem re-enviar todos os campos), use PUT /v3/produtos/{ean} com apenas os campos alterados — mais eficiente para lojas com catálogo grande.