curl --request GET \
--url https://api.example.com/api/loyalty/config{
"tiers": [
{
"id": "<string>",
"name": "<string>",
"rank": 123,
"color": "<string>",
"icon": "<string>"
}
],
"rules": [
{
"id": "<string>",
"location_id": "<string>",
"tier_id": "<string>",
"min_spend": 123,
"min_visits": 123
}
],
"benefits": [
{
"id": "<string>",
"tier_id": "<string>",
"title": "<string>",
"description": "<string>",
"is_active": true
}
],
"locations": [
{
"id": "<string>",
"name": "<string>"
}
],
"stats": {
"total": 123,
"byTier": {}
}
}Retrieve loyalty program configuration including tiers, rules, and benefits
curl --request GET \
--url https://api.example.com/api/loyalty/config{
"tiers": [
{
"id": "<string>",
"name": "<string>",
"rank": 123,
"color": "<string>",
"icon": "<string>"
}
],
"rules": [
{
"id": "<string>",
"location_id": "<string>",
"tier_id": "<string>",
"min_spend": 123,
"min_visits": 123
}
],
"benefits": [
{
"id": "<string>",
"tier_id": "<string>",
"title": "<string>",
"description": "<string>",
"is_active": true
}
],
"locations": [
{
"id": "<string>",
"name": "<string>"
}
],
"stats": {
"total": 123,
"byTier": {}
}
}GET /api/loyalty/config
curl -X GET https://your-domain.com/api/loyalty/config \
-H "Cookie: your-session-cookie"
{
"tiers": [
{
"id": "tier-bronce-uuid",
"name": "Bronce",
"rank": 1,
"color": "#CD7F32",
"icon": "bronze-medal"
},
{
"id": "tier-plata-uuid",
"name": "Plata",
"rank": 2,
"color": "#C0C0C0",
"icon": "silver-medal"
},
{
"id": "tier-oro-uuid",
"name": "Oro",
"rank": 3,
"color": "#FFD700",
"icon": "gold-medal"
},
{
"id": "tier-vip-uuid",
"name": "VIP",
"rank": 4,
"color": "#9333EA",
"icon": "crown"
}
],
"rules": [
{
"id": "rule-uuid-1",
"location_id": "location-madrid-centro",
"tier_id": "tier-plata-uuid",
"min_spend": 500,
"min_visits": 5
},
{
"id": "rule-uuid-2",
"location_id": "location-madrid-centro",
"tier_id": "tier-oro-uuid",
"min_spend": 1500,
"min_visits": 12
}
],
"benefits": [
{
"id": "benefit-uuid-1",
"tier_id": "tier-vip-uuid",
"title": "10% de descuento",
"description": "En todas las consumiciones",
"is_active": true
}
],
"locations": [
{
"id": "location-madrid-centro",
"name": "La Tasca Madrid · Centro"
},
{
"id": "location-madrid-salamanca",
"name": "La Tasca Madrid · Salamanca"
}
],
"stats": {
"total": 265,
"byTier": {
"bronce": 150,
"plata": 75,
"oro": 30,
"vip": 10
}
}
}
{
"error": "No autorizado"
}
{
"error": "Sin organización"
}
{
"error": "Database error message"
}
organization_id from authenticated userorganization_idimport { createClient } from "@/lib/supabase/server";
export async function GET() {
const supabase = await createClient();
const { data: { user } } = await supabase.auth.getUser();
if (!user) {
return NextResponse.json({ error: "No autorizado" }, { status: 401 });
}
const { data: profile } = await supabase
.from('profiles')
.select('organization_id')
.eq('id', user.id)
.single();
// Fetch tiers, rules, benefits, locations, and stats
// ...
}