Skip to main content

📌 Endpoint

PUT /stores/:storeId/products/:productId Atualiza os dados de um produto existente.

🔐 Autenticação

  • Rota privada.
  • Requer header Authorization com sua API key e plano ativo.
{
	"Authorization": "SUA_API_KEY_AQUI"
}

🧾 Parâmetros de rota

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

🧍 Body (JSON)

Todos os campos são opcionais, mas devem respeitar as regras abaixo quando enviados:
  • name (3-32)
  • image (string ou null)
  • description (12-256 ou null)
  • categoryIds (array de IDs de categorias da loja)
  • delivery (DIGITAL ou PHYSICAL)
  • price (0.5 a 9999)
  • stock (inteiro 0 a 999)
  • position (inteiro maior ou igual a 1)
  • metadata (objeto)

✅ Exemplo de requisição

curl -X PUT "https://api.cabrapi.com.br/stores/STORE_ID/products/PRODUCT_ID" \
	-H "Authorization: SUA_API_KEY_AQUI" \
	-H "Content-Type: application/json" \
	-d '{
		"name": "Curso Premium Atualizado",
		"price": 59.9,
		"stock": 80
	}'

🧩 Snippet (JavaScript - fetch, só trocar Authorization)

const API_BASE = "https://api.cabrapi.com.br";
const AUTHORIZATION = "SUA_API_KEY_AQUI";

const authHeaders = {
	Authorization: AUTHORIZATION,
	"Content-Type": "application/json"
};

const storesResponse = await fetch(`${API_BASE}/stores`, {
	headers: { Authorization: AUTHORIZATION }
});
const storesData = await storesResponse.json();
const storeId = storesData?.stores?.[0]?.id;

if (!storeId) throw new Error("Nenhuma loja encontrada para essa API key.");

const productsResponse = await fetch(`${API_BASE}/stores/${storeId}/products`);
const productsData = await productsResponse.json();
const productId = productsData?.products?.[0]?.id;

if (!productId) throw new Error("Nenhum produto encontrado para essa loja.");

const response = await fetch(`${API_BASE}/stores/${storeId}/products/${productId}`, {
	method: "PUT",
	headers: authHeaders,
	body: JSON.stringify({
		name: `Produto Atualizado ${Date.now()}`,
		price: 59.9,
		stock: 90
	})
});

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

📦 Resposta de sucesso (200)

{
	"status": true,
	"code": "SUCCESS",
	"product": {
		"id": "PRODUCT_ID",
		"name": "Curso Premium Atualizado",
		"position": 2,
		"price": 59.9,
		"stock": 80,
		"storeId": "STORE_ID"
	}
}

⚠️ Possíveis erros

  • 400 INVALID_DATA → body inválido
  • 400 CATEGORY_NOT_FOUND / 400 RELATION_NOT_FOUND → categoria inválida
  • 400 NAME_ALREADY_EXISTS → nome já utilizado
  • 404 STORE_NOT_FOUND → loja não encontrada
  • 404 PRODUCT_NOT_FOUND → produto não encontrado
  • 500 INTERNAL_SERVER_ERROR → erro interno