Quem comprou também levou
Devolve os produtos que mais aparecem nos mesmos pedidos que um produto, com a força do sinal em cada um.
Use esta rota na página do produto para o carrossel "Quem comprou este produto também levou". A lista vem de pedidos reais da loja: cada produto sugerido tem um score, a quantidade de vezes que ele foi comprado junto com o produto consultado. Quanto maior, mais forte o sinal. A lista é atualizada a cada novo pedido e recalculada periodicamente, então um produto novo, ou sem pedidos, devolve lista vazia.
Produtos sem preço (quando a loja os esconde) não entram na lista.
/api/v1/storefront/products/{id}/recommendationsPúblicaQuem comprou também levou
Parâmetros de caminho
idstringobrigatórioId (UUID) ou slug do produto.
Parâmetros de consulta
limitintegerpadrão: 8Quantidade de produtos. Máximo 50; acima disso vale 50. Zero, negativo ou texto voltam a 8.
Exemplo de requisição
bash
curl "$BASE_URL/api/v1/storefront/products/db033935-75ea-4b6f-abbb-13d0fcd6386d/recommendations?limit=4"Resposta
200Recomendações
json
{
"recommendations": [
{
"product": {
"id": "ea22134e-afb7-491f-b45e-f5459c129d98",
"name": "Kit Skincare Essencial Branco 00078 - ESPECIAL",
"slug": "kit-skincare-essencial-branco-00078-78",
"price": 129990,
"list_price": 153388,
"image_url": "/uploads/dfe2555e-bfd0-41a8-9fa1-9586999f3798/product/ea22134e-afb7-491f-b45e-f5459c129d98/foto.png",
"image_alt": "Kit Skincare Essencial Branco 00078",
"rating_avg": 4.4,
"rating_count": 8,
"quantity": 52,
"vendor_name": "Loja Seller Teste"
},
"score": 2
}
],
"total": 1
}Campos da resposta
recommendationsarrayItens recomendados, do maior para o menor
score. Pode vir null quando o produto não tem nada recomendado: trate como vazio.recommendations[].scoreintegerQuantas vezes os dois produtos foram comprados juntos.
recommendations[].productobjectDados para o card do produto.
recommendations[].product.iduuidId do produto.
recommendations[].product.namestringNome.
recommendations[].product.slugstringTrecho do endereço da página do produto.
recommendations[].product.priceintegerPreço em centavos.
0 com price_redacted: true para visitante em loja que esconde preço.recommendations[].product.list_priceintegerPreço "de" em centavos.
null quando não existe.recommendations[].product.image_urlstringCaminho da imagem principal. Pode ser
null.recommendations[].product.image_altstringTexto alternativo da imagem. Pode ser
null.recommendations[].product.rating_avgnumberNota média.
recommendations[].product.rating_countintegerQuantidade de avaliações.
recommendations[].product.quantityintegerEstoque disponível.
recommendations[].product.vendor_namestringNome do seller. Ausente se não há.
recommendations[].product.catalog_modebooleantrue quando o seller trabalha em modo vitrine (a compra acontece fora da plataforma). Nesse caso não mostre o botão de adicionar ao carrinho: leve o cliente à página do produto.recommendations[].product.price_redactedbooleantrue quando o preço foi escondido do visitante.totalintegerQuantidade de itens devolvidos.
Erros
| Status | Quando | Corpo |
|---|---|---|
| 400 | O caminho não traz id de produto | {"error":"product ID is required"} |
| 401 | A loja exige login para navegar e a chamada não tem token | {"error":"shopping_requires_login","message":"this storefront requires login to browse"} |
| 404 | O valor não é um UUID e nenhum produto tem esse slug | {"error":"product not found"} |
| 500 | Falha ao ler as recomendações | {"error":"failed to get recommendations","detail":"..."} |
Um UUID bem formado que não existe não dá 404: a resposta é 200 com recommendations: null e total: 0.