Produtos mestres e ofertas
Entende o produto mestre do catálogo e lista as ofertas dos sellers para ele, com preço, estoque e avaliação, para a aba "outros vendedores".
Um produto mestre é uma ficha de catálogo (nome, descrição, imagens, características) que o administrador mantém uma vez. Cada seller (lojista) liga a sua própria versão do produto a essa ficha e define o próprio preço e estoque: essa versão é uma oferta. A vitrine vende as ofertas, nunca a ficha.
Por isso, das três rotas desta página só uma devolve dados: a das ofertas. Use-a na página de um produto que pertence a um mestre, para mostrar "outros vendedores" com a comparação de preço.
/api/v1/storefront/master-productsPúblicaLista de produtos mestres (sempre vazia)
A ficha mestre não é uma superfície de compra, então esta rota sempre devolve uma lista vazia, mesmo com o módulo ligado. Os produtos vendáveis aparecem nas listagens normais de produtos. Os parâmetros page e per_page são apenas devolvidos na resposta.
Parâmetros de consulta
pageintegerpadrão: 1per_pageintegerpadrão: 20Exemplo de requisição (lista)
curl "$BASE_URL/api/v1/storefront/master-products"Resposta (lista)
{ "products": [], "total": 0, "page": 1, "per_page": 20, "total_pages": 0 }/api/v1/storefront/master-products/{id}PúblicaDetalhe de produto mestre (sempre 404)
Pelo mesmo motivo, o detalhe de uma ficha mestre sempre responde 404, para qualquer id. Não construa uma página de detalhe de mestre na vitrine: leve o cliente à página da oferta (use product_slug das ofertas).
Parâmetros de caminho
iduuidobrigatórioResposta (detalhe)
{ "error": "master product not found" }/api/v1/storefront/master-products/{id}/offersPúblicaOfertas dos sellers para um produto mestre
Devolve uma oferta por seller: a melhor oferta ativa de cada um. Entram só ofertas de produtos ativos, de sellers ativos e em estoque (ou sem controle de estoque). Ficam de fora sellers invisíveis para o cliente e, conforme a configuração da loja, sellers que não entregam na região do comprador. A região vem da query, depois dos cabeçalhos X-Buyer-* e, por último, do endereço padrão do cliente logado.
Cabeçalhos
X-Buyer-StatestringX-Buyer-CitystringX-Buyer-DistrictstringX-Buyer-CEPstringParâmetros de caminho
iduuidobrigatórioParâmetros de consulta
pageintegerpadrão: 1per_pageintegerpadrão: 20sortstringdeliver_to_statestringbuyer_state.deliver_to_citystringbuyer_city.deliver_to_districtstringbuyer_district.deliver_to_cepstringbuyer_cep, cep.Exemplo de requisição (ofertas)
curl "$BASE_URL/api/v1/storefront/master-products/6b5806fe-4370-4f12-bc95-a7dbba04918b/offers" \
-H "X-Buyer-CEP: 01310-100"Resposta (ofertas)
{
"offers": [
{
"product_id": "2a6541bf-d5b0-4a2e-ad7b-1183af189d42",
"product_slug": "cafeteira-premium-branca-01426-1426",
"vendor_id": "94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36",
"vendor_name": "Loja Exemplo",
"vendor_slug": "loja-exemplo",
"vendor_logo_url": "/uploads/exemplo/logo.png",
"price": 80990,
"quantity": 2,
"track_inventory": true,
"status": "A",
"rating_avg": 3.8,
"rating_count": 0,
"free_shipping": true,
"sku": "SD-001426",
"image_url": "/uploads/exemplo/cafeteira.png",
"created_at": "2026-05-25T12:05:41Z"
}
],
"total": 1,
"page": 1,
"per_page": 20,
"total_pages": 1
}Campos da resposta
offersarrayoffers[].product_iduuidoffers[].product_slugstringoffers[].vendor_iduuidoffers[].vendor_namestringoffers[].vendor_slugstringoffers[].vendor_logo_urlstringoffers[].priceinteger0 com price_redacted: true para visitante em loja que esconde preço.offers[].list_priceintegeroffers[].price_redactedbooleantrue quando price e list_price foram zerados para o visitante. Ausente caso contrário.offers[].quantityintegeroffers[].track_inventoryboolean!track_inventory || quantity > 0.offers[].statusstringA, ativo).offers[].rating_avgnumberoffers[].rating_countintegeroffers[].free_shippingbooleanoffers[].skustringoffers[].image_urlstringoffers[].created_atstringtotalintegerpageintegerper_pageintegertotal_pagesintegerErros
| Status | Quando | Corpo |
|---|---|---|
| 401 | A loja exige login para navegar e a chamada é anônima. | {"error":"shopping_requires_login","message":"this storefront requires login to browse"} |
| 403 | Módulo master-products desligado. | {"error":"module_disabled","module":"master-products"} |
| 404 | Opção de produtos mestres desligada nas configurações da loja. | {"error":"feature not enabled","detail":"enable master_products via admin settings"} |
| 404 | Produto mestre inexistente, inativo ou com id que não é UUID. | {"error":"master product not found"} |
| 500 | Falha interna. | {"error":"failed to get offers","detail":"..."} |