Skip to main content

📌 Endpoint

GET /stores/:storeId/coupons/uuid/:couponId Retorna um cupom específico pelo ID interno.

🔐 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
couponIdstringSimID do cupom

✅ Exemplo de requisição

curl -X GET "https://api.cabrapi.com.br/stores/STORE_ID/coupons/uuid/COUPON_ID" \
	-H "Authorization: SUA_API_KEY_AQUI"

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

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

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 couponsResponse = await fetch(`${API_BASE}/stores/${storeId}/coupons`, {
	headers: { Authorization: AUTHORIZATION }
});
const couponsData = await couponsResponse.json();
let couponId = couponsData?.coupons?.[0]?.id;

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

	if (!productId) {
		const newProductResponse = await fetch(`${API_BASE}/stores/${storeId}/products`, {
			method: "POST",
			headers: {
				Authorization: AUTHORIZATION,
				"Content-Type": "application/json"
			},
			body: JSON.stringify({
				name: `ProdutoCupom ${Date.now()}`,
				description: "Produto base para cupom via script da documentação.",
				delivery: "DIGITAL",
				price: 39.9,
				stock: 50
			})
		});
		const newProductData = await newProductResponse.json();
		productId = newProductData?.product?.id;
	}

	const newCouponResponse = await fetch(`${API_BASE}/stores/${storeId}/coupons`, {
		method: "POST",
		headers: {
			Authorization: AUTHORIZATION,
			"Content-Type": "application/json"
		},
		body: JSON.stringify({
			code: `CUPOM${Date.now()}`,
			discount: 10,
			useLimit: -1,
			productIds: [productId]
		})
	});
	const newCouponData = await newCouponResponse.json();
	couponId = newCouponData?.coupon?.id;
}

if (!couponId) throw new Error("Não foi possível obter couponId.");

const response = await fetch(`${API_BASE}/stores/${storeId}/coupons/uuid/${couponId}`, {
	headers: { Authorization: AUTHORIZATION }
});

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

📦 Resposta de sucesso (200)

{
	"status": true,
	"code": "SUCCESS",
	"coupon": {
		"id": "COUPON_ID",
		"code": "bemvindo10",
		"position": 1,
		"discount": 10,
		"useLimit": -1,
		"expiredAt": null,
		"products": [],
		"categories": []
	}
}

⚠️ Possíveis erros

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