Produtos obrigatórios
Lista os produtos que acompanham um produto (acessórios, itens complementares), indicando quais são obrigatórios.
Alguns produtos pedem outro junto: uma impressora com o cartucho, um colchão com o protetor. O lojista cadastra essa relação no painel e marca cada item como obrigatório ou sugerido. Esta rota devolve os produtos ligados ao produto que o comprador está vendo, no estado atual da loja.
O catálogo apenas informa a relação. Ele não obriga a compra do item obrigatório: quem adiciona os obrigatórios ao carrinho e valida a escolha é a sua vitrine.
/api/v1/storefront/products/{id}/required-productsPúblicaProdutos que acompanham o produto
Parâmetros de caminho
iduuidobrigatórioId do produto principal.
Exemplo de requisição
bash
curl "$BASE_URL/api/v1/storefront/products/34a3bed9-c40d-4519-801f-5cae027eac2a/required-products"Resposta
200Produtos retornados (exemplo ilustrativo do formato)
json
{
"total": 1,
"required_products": [
{
"product_id": "34a3bed9-c40d-4519-801f-5cae027eac2a",
"required_product_id": "5e833a7f-1a77-402c-835a-32594350d7a7",
"is_mandatory": true,
"created_at": "2026-10-10T14:00:00Z",
"required_product_name": "Cartucho Preto XL",
"required_product_slug": "cartucho-preto-xl",
"required_product_price": 8990,
"required_product_image": "/uploads/cartucho.png",
"required_product_quantity": 40,
"required_product_status": "A"
}
]
}200Produto sem itens ligados (resposta real da loja de testes)
json
{ "required_products": [], "total": 0 }Campos da resposta
required_productsarrayItens ligados, com os obrigatórios primeiro e depois por data de cadastro. Só entram produtos ativos.
totalintegerQuantidade de itens.
required_products[].product_iduuidO produto principal (o do caminho).
required_products[].required_product_iduuidId do produto ligado: use para abri-lo ou adicioná-lo ao carrinho.
required_products[].is_mandatorybooleantrue = o lojista exige que seja comprado junto; false = sugestão.required_products[].required_product_namestringNome do produto ligado.
required_products[].required_product_slugstringSlug do produto ligado, para o link.
required_products[].required_product_priceintegerPreço do produto ligado em centavos. É o preço base, sem preço de grupo nem desconto de catálogo; para o valor final use
/products/prices.required_products[].required_product_imagestringURL da imagem principal. Vazia se não há.
required_products[].required_product_quantityintegerSaldo em estoque, arredondado para baixo. Confira antes de oferecer.
required_products[].required_product_statusstringSempre
A aqui.required_products[].created_atstringQuando a ligação foi cadastrada, RFC 3339 (UTC).
Erros
| Status | Quando | Exemplo de corpo |
|---|---|---|
| 500 | {id} que não é UUID, ou falha ao consultar | {"error":"failed to get required products","detail":"..."} |
Produto inexistente, ou sem itens ligados, responde 200 com lista vazia.