Busca ao vivo
Devolve, em uma única chamada, produtos, categorias, marcas e sellers que casam com o texto que o cliente está digitando.
Use esta rota para o menu suspenso que abre sob o campo de busca enquanto o cliente digita. Uma chamada devolve quatro grupos (produtos, categorias, marcas e sellers) mais os produtos agrupados por categoria, tudo compacto, sem paginação e sem facetas. Para a página completa de resultados use Buscar produtos.
O lojista decide, no painel, quais grupos aparecem, quantos itens cada um tem (padrão: 8 produtos e 5 de cada outro grupo), o mínimo de caracteres (padrão 2) e se preço e imagem são mostrados. Se o lojista desligou a busca ao vivo, a rota responde 200 com tudo vazio. A vitrine pode ler essas escolhas em GET /api/v1/storefront/settings/search e pular a chamada quando a busca ao vivo está desligada.
/api/v1/storefront/live-searchPúblicaBusca ao vivo (typeahead)
Cabeçalhos
Authorizationstringprice mostra o preço da faixa do grupo dele (quando menor que o preço base) e sellers restritos a um grupo aparecem só para quem pertence a ele.Cookiestringvenddor_language (por exemplo en) escolhe o idioma dos nomes de produtos e categorias, quando a loja tem mais de um idioma habilitado.Parâmetros de consulta
qstringExemplo de requisição
curl "$BASE_URL/api/v1/storefront/live-search?q=camiseta"Resposta
{
"query": "camiseta",
"products": [
{
"id": "db033935-75ea-4b6f-abbb-13d0fcd6386d",
"name": "Camiseta Lite Verde 00146",
"slug": "camiseta-lite-verde-00146-146",
"price": 39990,
"image_url": "/uploads/dfe2555e-bfd0-41a8-9fa1-9586999f3798/product/db033935-75ea-4b6f-abbb-13d0fcd6386d/foto.png",
"category_id": "8fcaf422-1631-4282-b503-85cc57380649",
"category_name": "Camisetas",
"out_of_stock_action": "N",
"zero_price_action": "P",
"quantity_step": 1
}
],
"categories": [
{
"id": "8fcaf422-1631-4282-b503-85cc57380649",
"name": "Camisetas",
"slug": "camisetas",
"product_count": 159,
"parent_name": "Roupas"
}
],
"brands": [],
"vendors": [],
"products_by_category": [],
"products_total": 158,
"search_event_id": "a74eabe4-b08f-4b67-8145-254b1f7fe174"
}Campos da resposta
querystringproductsarrayproducts[].iduuidproducts[].namestringproducts[].slugstringproducts[].priceinteger0 com price_redacted: true para visitante em loja que esconde preço.products[].list_priceintegerproducts[].price_redactedbooleantrue quando o preço foi escondido do visitante.products[].image_urlstringproducts[].category_iduuidproducts[].category_namestringproducts[].is_out_of_stockbooleantrue quando está sem estoque. Ausente quando há estoque.products[].out_of_stock_actionstringproducts[].zero_price_actionstringproducts[].quantity_stepnumberproducts[].min_quantitynumberproducts[].sell_unitstringcategoriesarrayid, name, slug, product_count e parent_name (categoria pai, quando há).brandsarrayid, name e product_count.vendorsarrayid, name, slug e logo_url.products_by_categoryarray{category_id, category_name, products[]} com alguns produtos de cada categoria encontrada.products_totalintegertotal para o mesmo texto. Use para o link "ver todos os N resultados".search_event_iduuidredirect_urlstringsemantic_fallbackbooleantrue quando nada casou com o texto e products são sugestões por semelhança de sentido (por exemplo "chapéu" sugerindo "boné"). Rotule como "talvez você goste". Nesse caso products_total é 0.Os grupos sem resultado podem vir como [] ou como null (por exemplo quando o texto é curto demais). Trate os dois como vazio.
Erros
| Status | Quando | Corpo |
|---|---|---|
| 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"} |
| 500 | Falha ao consultar o catálogo | {"error":"live search failed","detail":"..."} |