العملاء

نقاط النهاية لإدارة ملف تعريف العميل المصادق عليه ونقاطه.

GET /api/v1/cliente/perfil/

يحصل على ملف تعريف العميل المصادق عليه.

يتطلب JWT

مثال على الطلب

cURL
curl -X GET "https://app.salonbookit.com/api/v1/cliente/perfil/" \
  -H "X-API-Key: hh_pub_live_abc123..." \
  -H "Authorization: Bearer eyJhbG..."

الاستجابة (200 OK)

JSON
{
    "success": true,
    "data": {
        "id": 456,
        "nombre": "Juan Pérez",
        "email": "juan@email.com",
        "telefono": "+34612345678",
        "fecha_nacimiento": "1990-05-15",
        "genero": "masculino",
        "idioma_preferido": "es",
        "avatar_url": null,
        "direccion": {
            "calle": "Calle Mayor 10",
            "ciudad": "Alicante",
            "codigo_postal": "03001"
        },
        "preferencias": {
            "recordatorios_email": true,
            "recordatorios_sms": true,
            "ofertas_email": true
        },
        "estadisticas": {
            "total_reservas": 15,
            "reservas_completadas": 12,
            "gasto_total": 350.00,
            "puntos_actuales": 250,
            "miembro_desde": "2023-06-01"
        },
        "profesional_favorito": {
            "id": 5,
            "nombre": "Carlos García"
        }
    }
}
PUT /api/v1/cliente/perfil/

يحدث ملف تعريف العميل.

يتطلب JWT

معلمات الجسم

المعامل النوع الوصف
nombre string الاسم الكامل
telefono string الهاتف بالتنسيق الدولي
fecha_nacimiento string التاريخ (YYYY-MM-DD)
genero string ذكر، أنثى، آخر
idioma_preferido string es, en, ar
preferencias object تفضيلات الإشعارات

مثال على الطلب

cURL
curl -X PUT "https://app.salonbookit.com/api/v1/cliente/perfil/" \
  -H "X-API-Key: hh_pub_live_abc123..." \
  -H "Authorization: Bearer eyJhbG..." \
  -H "Content-Type: application/json" \
  -d '{
    "nombre": "Juan Pérez García",
    "telefono": "+34612345678",
    "preferencias": {
      "recordatorios_sms": false
    }
  }'
GET /api/v1/cliente/puntos/

يحصل على رصيد النقاط وحركات العميل.

يتطلب JWT

الاستجابة (200 OK)

JSON
{
    "success": true,
    "data": {
        "saldo_actual": 250,
        "puntos_pendientes": 25,
        "total_ganado": 500,
        "total_canjeado": 250,
        "nivel": {
            "nombre": "Oro",
            "puntos_siguiente_nivel": 500,
            "beneficios": ["10% descuento", "Reserva prioritaria"]
        },
        "movimientos_recientes": [
            {
                "id": 100,
                "tipo": "ganado",
                "puntos": 25,
                "concepto": "Reserva #12345 - Corte Clásico",
                "fecha": "2024-01-20T11:00:00Z"
            },
            {
                "id": 99,
                "tipo": "canjeado",
                "puntos": -100,
                "concepto": "Descuento en reserva #12340",
                "fecha": "2024-01-15T10:00:00Z"
            }
        ],
        "canjeables": [
            {
                "servicio_id": 15,
                "servicio_nombre": "Corte Clásico",
                "puntos_necesarios": 250,
                "puede_canjear": true
            },
            {
                "servicio_id": 16,
                "servicio_nombre": "Afeitado Clásico",
                "puntos_necesarios": 150,
                "puede_canjear": true
            }
        ]
    }
}
GET /api/v1/puntos/paquetes/

يسرد حزم النقاط المتاحة للشراء.

الاستجابة (200 OK)

JSON
{
    "success": true,
    "data": {
        "paquetes": [
            {
                "id": 1,
                "nombre": "Paquete Básico",
                "puntos": 100,
                "precio": 10.00,
                "bonus": 0,
                "descripcion": "100 puntos para empezar"
            },
            {
                "id": 2,
                "nombre": "Paquete Plus",
                "puntos": 250,
                "precio": 20.00,
                "bonus": 25,
                "descripcion": "250 puntos + 25 de bonus"
            },
            {
                "id": 3,
                "nombre": "Paquete Premium",
                "puntos": 500,
                "precio": 35.00,
                "bonus": 75,
                "descripcion": "500 puntos + 75 de bonus"
            }
        ],
        "moneda": "EUR"
    }
}
POST /api/v1/puntos/canjear/

يستبدل النقاط بخدمة أو خصم.

يتطلب JWT

معلمات الجسم

المعامل النوع مطلوب الوصف
reserva_id integer نعم معرف الحجز للتطبيق
servicio_id integer نعم معرف الخدمة للاستبدال

الاستجابة (200 OK)

JSON
{
    "success": true,
    "data": {
        "canje_id": 50,
        "puntos_usados": 250,
        "saldo_restante": 0,
        "servicio_canjeado": "Corte Clásico",
        "aplicado_a_reserva": 12345
    }
}