Listar e buscar produtos
Lista o catálogo com categorias, monta prateleiras por regra, busca produtos por texto e resume produtos que exigem uma escolha.
Estas três rotas montam as telas de descoberta da mini-loja: a home e as categorias (/catalog), a busca (/search) e o resumo de produtos que pedem uma escolha antes de ir à sacola (/choose). Todas devolvem produtos já com o preço do cliente do token e com os produtos disponíveis antes dos indisponíveis na mesma página.
Se a loja só permite navegar com login, ou a porta de entrada por documento está fechada, as três respondem 403 (veja os erros no fim de cada seção).
Listar o catálogo
/api/v1/storefront/wa-coex/catalog/{token}PúblicaLista produtos e a árvore de categorias, ou uma prateleira por regra
Tem dois modos. Modo lista (sem filling): produtos paginados, opcionalmente de uma categoria ou com filtros de características, mais a árvore de categorias. Modo prateleira (com filling): uma única prateleira da home, com um número pequeno de produtos escolhidos por regra, sem categorias.
Parâmetros de caminho
tokenstringobrigatórioParâmetros de consulta
categoryuuidpageintegerpadrão: 1per_pageintegerpadrão: 100features[ID]stringID é o id da característica e o valor é uma lista, separada por vírgula, de ids de valores (features[7c1e...]=a1,b2). Vale no máximo 8 características por requisição.features_hashstringfeatures[ID].fillingstringmanualcategorybestsellersnewestmost_popularon_salemanual: os produtos de product_ids. category: os de category_ids. bestsellers: mais vendidos. newest: lançamentos. most_popular: mais populares. on_sale: só com desconto. Qualquer outro valor é 400 invalid_filling.product_idsstringmanual.category_idsstringexclude_product_idsstringcountintegerpadrão: 8min_priceintegermax_priceintegerstock_filterstringin_stockin_stock esconde os indisponíveis.Exemplo de requisição
# lista, 20 por página
curl "$BASE_URL/api/v1/storefront/wa-coex/catalog/$TOKEN?per_page=20&page=1"
# prateleira "em oferta" com 6 produtos
curl "$BASE_URL/api/v1/storefront/wa-coex/catalog/$TOKEN?filling=on_sale&count=6"Resposta
{
"products": [
{
"id": "68836206-cb76-4814-9811-335f02e4e956",
"name": "Air Fryer Eco Branco",
"image_url": "/uploads/.../air-fryer.png",
"slug": "air-fryer-eco-branco-2431",
"url": "/p/air-fryer-eco-branco-2431",
"price_cents": 7992,
"list_price_cents": 9990,
"available": true,
"sale_unit": "un",
"quantity_step": 1,
"min_quantity": 1,
"vendor_name": "Loja Seller Teste",
"stock_amount": 3
}
],
"categories": [
{ "id": "7ebc648d-6091-4511-8ea2-f86f7b3b4dd9", "name": "Informática", "slug": "informatica", "product_count": 642 },
{ "id": "ae6f8f8b-7cbe-4725-84fa-247cce138143", "name": "Notebooks", "slug": "notebooks", "parent_id": "7ebc648d-6091-4511-8ea2-f86f7b3b4dd9", "product_count": 162 }
],
"page": 1,
"products_total": 4976,
"commerce_profile": { "segment": "general", "config": {}, "labels": {}, "capabilities": ["catalog", "cart", "checkout", "campaigns"] },
"copy": {}
}Campos da resposta
productsarraycategoriesarrayÁrvore de categorias, em lista plana com parent_id. Vazia no modo prateleira.
iduuidnamestringslugstringparent_iduuidproduct_countintegerpageintegerproducts_totalintegercommerce_profileobjectsegment, config, labels, capabilities).copyobjectdelivery_blockedobjectdestination (cidade/UF ou CEP).Erros
| Status | Quando | Corpo |
|---|---|---|
| 400 | filling não é um dos valores aceitos. | {"error":"invalid_filling"} |
| 403 | Porta de entrada por documento fechada. | {"error":"entry_required"} |
| 403 | A loja exige login para navegar e o token é de visitante. | {"error":"account_required","message":"Entre ou crie sua conta para ver os produtos e fazer seu pedido."} |
| 500 | Falha ao ler o catálogo, ou category que não é UUID. O corpo traz a mensagem técnica. | {"error":"..."} |
| 503 | Catálogo indisponível. | {"error":"catalog unavailable"} ou {"error":"catalog_unavailable"} |
Buscar produtos
/api/v1/storefront/wa-coex/search/{token}PúblicaBusca produtos por texto, com sugestões quando nada casa
Usa a mesma busca da loja, com os mesmos resultados, ordem e total que o site para esse cliente. Quando nada casa com as palavras, a resposta traz sugestões (suggestions: true, total: 0).
Parâmetros de caminho
tokenstringobrigatórioParâmetros de consulta
qstringidsstringq, abrem exatamente esses produtos, nessa ordem. Com q, só aparecem como sugestões quando a busca não achou nada.pageintegerpadrão: 1per_pageintegerpadrão: 20Exemplo de requisição
curl -G "$BASE_URL/api/v1/storefront/wa-coex/search/$TOKEN" \
--data-urlencode "q=air fryer" \
--data-urlencode "per_page=20"Resposta
{
"products": [{ "id": "68836206-cb76-4814-9811-335f02e4e956", "name": "Air Fryer Eco Branco", "price_cents": 7992, "available": true }],
"total": 71,
"page": 1,
"per_page": 20,
"has_more": true,
"suggestions": false,
"description_only": false
}Campos da resposta
productsarraytotalinteger0 quando são sugestões.pageintegerper_pageintegerhas_morebooleansuggestionsbooleandescription_onlybooleanErros
| Status | Quando | Corpo |
|---|---|---|
| 403 | Porta de entrada fechada, ou login exigido. | {"error":"entry_required"} ou {"error":"account_required","message":"..."} |
| 500 | Falha na busca. | {"error":"..."} |
| 503 | Catálogo indisponível. | {"error":"catalog unavailable"} |
Resumir produtos com opções
/api/v1/storefront/wa-coex/choose/{token}PúblicaResumo de produtos para a escolha de opções obrigatórias
Para uma lista de ids, devolve o essencial de cada produto mais as opções que o cliente precisa escolher (por exemplo, ponto da carne e adicionais). Serve para a tela de "escolha antes de adicionar", quando você já tem os ids e não quer abrir a ficha completa de cada um.
Parâmetros de caminho
tokenstringobrigatórioParâmetros de consulta
idsstring{
"products": [
{
"id": "68836206-cb76-4814-9811-335f02e4e956",
"name": "Air Fryer Eco Branco",
"price_cents": 7992,
"price_redacted": false,
"image_url": "/uploads/.../air-fryer.png",
"available": true,
"options": null
}
]
}Campos da resposta
productsarrayUm item por id encontrado.
iduuidnamestringprice_centsinteger0 se price_redacted.price_redactedbooleantrue quando o preço está escondido até o login.image_urlstringavailablebooleanoptionsarrayid, name, type, required, values, choices, min_select, max_select). null quando o produto não tem opções.Os erros são os mesmos de GET /catalog (403 de porta de entrada ou de login, 503 de catálogo).