curl -X POST "https://ecommerce.jelou.ai/api/v2/apps/{app_id}/batch/products/upsert_by_sku" \
-H "Authorization: Bearer <API_KEY>" \
-H "Content-Type: application/json" \
-d '{
"resources": [
{
"sku": "TSHIRT-BLU",
"name": "Camiseta Básica Azul",
"description": "Camiseta 100% algodão premium, corte regular",
"price": 29.99,
"has_tax": true,
"status": true,
"stock_type": "limited",
"stock": 150,
"product_url": "https://minha-loja.com/camiseta-basica-azul",
"discount_type": "percentage",
"discount": 10,
"branch": "BRANCH-DOWNTOWN",
"categories": ["Roupas", "Camisetas"],
"images": [
"https://minha-loja.com/images/camiseta-azul-frente.jpg",
"https://minha-loja.com/images/camiseta-azul-costas.jpg"
],
"variations": [
{
"sku": "TSHIRT-BLU-S",
"price": 29.99,
"attributes": [
{ "name": "Tamanho", "value": "S" },
{ "name": "Cor", "value": "Azul" }
]
},
{
"sku": "TSHIRT-BLU-M",
"price": 29.99,
"attributes": [
{ "name": "Tamanho", "value": "M" },
{ "name": "Cor", "value": "Azul" }
]
},
{
"sku": "TSHIRT-BLU-L",
"price": 31.99,
"attributes": [
{ "name": "Tamanho", "value": "L" },
{ "name": "Cor", "value": "Azul" }
],
"images": [
"https://minha-loja.com/images/camiseta-azul-L.jpg"
]
}
]
},
{
"sku": "PANTS-BLK-M",
"name": "Calça Preta",
"price": 49.99,
"branch": "BRANCH-NORTH",
"categories": ["Roupas", "Calças"]
},
{
"sku": "PIZZA-FAMILY",
"name": "Pizza Pepperoni Família",
"description": "Pizza pepperoni tamanho família com massa artesanal",
"price": 18.99,
"stock_type": "unlimited",
"branch": "BRANCH-NORTH",
"categories": ["Pizzas", "Promoções"],
"images": ["https://exemplo.com/pizza-pepperoni.jpg"],
"modifier_groups": [
{
"code": "drinks",
"name": "Escolha sua Bebida",
"min_quantity": 1,
"max_quantity": 1,
"is_required": true,
"options": [
{ "code": "coca-1l", "name": "Coca Cola 1L", "price": 0 },
{ "code": "sprite-1l", "name": "Sprite 1L", "price": 0 },
{ "code": "fanta-1l", "name": "Fanta 1L", "price": 0.50 }
]
},
{
"code": "extras",
"name": "Ingredientes Extras",
"min_quantity": 0,
"max_quantity": 5,
"max_per_option": 2,
"is_required": false,
"options": [
{ "code": "extra-cheese", "name": "Queijo Extra", "price": 1.50 },
{ "code": "ham", "name": "Presunto", "price": 2.00 },
{ "code": "olives", "name": "Azeitonas", "price": 1.00 }
]
}
]
}
]
}'
{
"message": "Batch upsert process initiated successfully",
"count": 3,
"jobs": 3
}
Crie e atualize produtos com suporte para filiais, variações e modificadores.
curl -X POST "https://ecommerce.jelou.ai/api/v2/apps/{app_id}/batch/products/upsert_by_sku" \
-H "Authorization: Bearer <API_KEY>" \
-H "Content-Type: application/json" \
-d '{
"resources": [
{
"sku": "TSHIRT-BLU",
"name": "Camiseta Básica Azul",
"description": "Camiseta 100% algodão premium, corte regular",
"price": 29.99,
"has_tax": true,
"status": true,
"stock_type": "limited",
"stock": 150,
"product_url": "https://minha-loja.com/camiseta-basica-azul",
"discount_type": "percentage",
"discount": 10,
"branch": "BRANCH-DOWNTOWN",
"categories": ["Roupas", "Camisetas"],
"images": [
"https://minha-loja.com/images/camiseta-azul-frente.jpg",
"https://minha-loja.com/images/camiseta-azul-costas.jpg"
],
"variations": [
{
"sku": "TSHIRT-BLU-S",
"price": 29.99,
"attributes": [
{ "name": "Tamanho", "value": "S" },
{ "name": "Cor", "value": "Azul" }
]
},
{
"sku": "TSHIRT-BLU-M",
"price": 29.99,
"attributes": [
{ "name": "Tamanho", "value": "M" },
{ "name": "Cor", "value": "Azul" }
]
},
{
"sku": "TSHIRT-BLU-L",
"price": 31.99,
"attributes": [
{ "name": "Tamanho", "value": "L" },
{ "name": "Cor", "value": "Azul" }
],
"images": [
"https://minha-loja.com/images/camiseta-azul-L.jpg"
]
}
]
},
{
"sku": "PANTS-BLK-M",
"name": "Calça Preta",
"price": 49.99,
"branch": "BRANCH-NORTH",
"categories": ["Roupas", "Calças"]
},
{
"sku": "PIZZA-FAMILY",
"name": "Pizza Pepperoni Família",
"description": "Pizza pepperoni tamanho família com massa artesanal",
"price": 18.99,
"stock_type": "unlimited",
"branch": "BRANCH-NORTH",
"categories": ["Pizzas", "Promoções"],
"images": ["https://exemplo.com/pizza-pepperoni.jpg"],
"modifier_groups": [
{
"code": "drinks",
"name": "Escolha sua Bebida",
"min_quantity": 1,
"max_quantity": 1,
"is_required": true,
"options": [
{ "code": "coca-1l", "name": "Coca Cola 1L", "price": 0 },
{ "code": "sprite-1l", "name": "Sprite 1L", "price": 0 },
{ "code": "fanta-1l", "name": "Fanta 1L", "price": 0.50 }
]
},
{
"code": "extras",
"name": "Ingredientes Extras",
"min_quantity": 0,
"max_quantity": 5,
"max_per_option": 2,
"is_required": false,
"options": [
{ "code": "extra-cheese", "name": "Queijo Extra", "price": 1.50 },
{ "code": "ham", "name": "Presunto", "price": 2.00 },
{ "code": "olives", "name": "Azeitonas", "price": 1.00 }
]
}
]
}
]
}'
{
"message": "Batch upsert process initiated successfully",
"count": 3,
"jobs": 3
}
resources aceita os seguintes campos:
limited ou unlimited.stock_type é limited.value (valor fixo) ou percentage.Mostrar Campos da variação
[], todos os modificadores são excluídos. Se tiver dados, os modificadores são completamente substituídos.Mostrar Campos do grupo de modificadores
Mostrar Campos da opção
linked_product_id (UUID). Se o SKU não for encontrado, armazenado como null.curl -X POST "https://ecommerce.jelou.ai/api/v2/apps/{app_id}/batch/products/upsert_by_sku" \
-H "Authorization: Bearer <API_KEY>" \
-H "Content-Type: application/json" \
-d '{
"resources": [
{
"sku": "TSHIRT-BLU",
"name": "Camiseta Básica Azul",
"description": "Camiseta 100% algodão premium, corte regular",
"price": 29.99,
"has_tax": true,
"status": true,
"stock_type": "limited",
"stock": 150,
"product_url": "https://minha-loja.com/camiseta-basica-azul",
"discount_type": "percentage",
"discount": 10,
"branch": "BRANCH-DOWNTOWN",
"categories": ["Roupas", "Camisetas"],
"images": [
"https://minha-loja.com/images/camiseta-azul-frente.jpg",
"https://minha-loja.com/images/camiseta-azul-costas.jpg"
],
"variations": [
{
"sku": "TSHIRT-BLU-S",
"price": 29.99,
"attributes": [
{ "name": "Tamanho", "value": "S" },
{ "name": "Cor", "value": "Azul" }
]
},
{
"sku": "TSHIRT-BLU-M",
"price": 29.99,
"attributes": [
{ "name": "Tamanho", "value": "M" },
{ "name": "Cor", "value": "Azul" }
]
},
{
"sku": "TSHIRT-BLU-L",
"price": 31.99,
"attributes": [
{ "name": "Tamanho", "value": "L" },
{ "name": "Cor", "value": "Azul" }
],
"images": [
"https://minha-loja.com/images/camiseta-azul-L.jpg"
]
}
]
},
{
"sku": "PANTS-BLK-M",
"name": "Calça Preta",
"price": 49.99,
"branch": "BRANCH-NORTH",
"categories": ["Roupas", "Calças"]
},
{
"sku": "PIZZA-FAMILY",
"name": "Pizza Pepperoni Família",
"description": "Pizza pepperoni tamanho família com massa artesanal",
"price": 18.99,
"stock_type": "unlimited",
"branch": "BRANCH-NORTH",
"categories": ["Pizzas", "Promoções"],
"images": ["https://exemplo.com/pizza-pepperoni.jpg"],
"modifier_groups": [
{
"code": "drinks",
"name": "Escolha sua Bebida",
"min_quantity": 1,
"max_quantity": 1,
"is_required": true,
"options": [
{ "code": "coca-1l", "name": "Coca Cola 1L", "price": 0 },
{ "code": "sprite-1l", "name": "Sprite 1L", "price": 0 },
{ "code": "fanta-1l", "name": "Fanta 1L", "price": 0.50 }
]
},
{
"code": "extras",
"name": "Ingredientes Extras",
"min_quantity": 0,
"max_quantity": 5,
"max_per_option": 2,
"is_required": false,
"options": [
{ "code": "extra-cheese", "name": "Queijo Extra", "price": 1.50 },
{ "code": "ham", "name": "Presunto", "price": 2.00 },
{ "code": "olives", "name": "Azeitonas", "price": 1.00 }
]
}
]
}
]
}'
{
"message": "Batch upsert process initiated successfully",
"count": 3,
"jobs": 3
}
{app_id} pelo ID da sua loja e <API_KEY> pelo token fornecido pelo Jelou.Processamento assíncrono
202 Accepted imediatamente. Os produtos são processados em segundo plano.Filial inexistente
Categorias automáticas
Imagens assíncronas
Variações por SKU
Modificadores
modifier_groups estiver ausente no payload, os modificadores existentes são preservados. Se for um array vazio [], todos os modificadores são excluídos. Se tiver dados, os modificadores são completamente substituídos.422 e detalha os campos com erros.
{
"message": "The resources field is required.",
"errors": {
"resources": ["The resources field is required."]
}
}
Mensagens de erro comuns
| Campo | Mensagem |
|---|---|
resources | Pelo menos um produto é obrigatório. |
resources | Não é possível processar mais de 500 produtos de uma vez. |
resources.*.sku | Cada produto deve ter um SKU. |
resources.*.name | Cada produto deve ter um nome. |
resources.*.price | Cada produto deve ter um preço. / O preço não pode ser negativo. |
resources.*.stock_type | O tipo de estoque deve ser limited ou unlimited. |
resources.*.images.* | Cada imagem deve ser uma URL válida. |
resources.*.modifier_groups.*.code | Cada grupo de modificadores deve ter um código. |
resources.*.modifier_groups.*.name | Cada grupo de modificadores deve ter um nome. |
resources.*.modifier_groups.*.options | Cada grupo de modificadores deve ter pelo menos uma opção. |
resources.*.modifier_groups.*.options.*.code | Cada opção de modificador deve ter um código. |
resources.*.modifier_groups.*.options.*.name | Cada opção de modificador deve ter um nome. |
Esta página foi útil?