Skip to main content

📌 Endpoint

GET /stores/:storeId/products/:productId Retorna um produto específico da loja.

🔐 Autenticação & Validações

  • Rota pública (sem autenticação obrigatória).
  • ⚠️ Validação de negócio: O dono da loja deve ter um plano ativo.
    • Se o plano está inativo/expirado, retorna 403 NO_ACTIVE_SUBSCRIPTION.
  • Opcionalmente, você pode enviar Authorization para requisições autenticadas (ex: dados privados futuros).
{
	"Authorization": "SUA_API_KEY_AQUI"
}

🧾 Parâmetros de rota

ParâmetroTipoObrigatórioDescrição
storeIdstringSimID da loja
productIdstringSimID do produto

✅ Exemplo de requisição

# Sem Authorization (rota pública)
curl -X GET "https://api.cabrapi.com.br/stores/STORE_ID/products/PRODUCT_ID"

# Com Authorization (opcional)
curl -X GET "https://api.cabrapi.com.br/stores/STORE_ID/products/PRODUCT_ID" \
	-H "Authorization: SUA_API_KEY_AQUI"

🧩 Snippet (JavaScript - fetch)

const API_BASE = "https://api.cabrapi.com.br";
const STORE_ID = "sua-loja-id";
const PRODUCT_ID = "seu-produto-id";

// Rota pública - sem Authorization necessária
const response = await fetch(
  `${API_BASE}/stores/${STORE_ID}/products/${PRODUCT_ID}`
);

if (!response.ok) {
  const error = await response.json();
  console.error("Erro:", error);
  // Possível error.code: NO_ACTIVE_SUBSCRIPTION
  throw new Error(error.message);
}

const data = await response.json();
console.log({ status: response.status, data });

📦 Resposta de sucesso (200)

{
	"status": true,
	"code": "PRODUCT_FETCHED",
	"product": {
		"id": "PRODUCT_ID",
		"name": "Curso Premium",
		"position": 1,
		"description": "Acesso completo ao conteúdo.",
		"price": 49.9,
		"image": null,
		"delivery": "DIGITAL",
		"stock": 100,
		"sold": 12,
		"storeId": "STORE_ID",
		"metadata": {},
		"createdAt": "2026-03-02T20:00:00.000Z",
		"updatedAt": "2026-03-02T20:00:00.000Z",
		"categories": [
			{
				"id": "CATEGORY_ID",
				"name": "Cursos"
			}
		]
	}
}

⚠️ Possíveis erros

  • 400 INVALID_DATA → parâmetros inválidos
  • 404 STORE_NOT_FOUND → loja não encontrada
  • 404 PRODUCT_NOT_FOUND → produto não encontrado
  • 403 NO_ACTIVE_SUBSCRIPTION (ou similar) → plano inativo/expirado
  • 500 INTERNAL_SERVER_ERROR → erro interno