Kunden

Endpoints zur Verwaltung des Profils und der Punkte des authentifizierten Kunden.

GET /api/v1/cliente/perfil/

Ruft das Profil des authentifizierten Kunden ab.

Erfordert JWT

Anfrage-Beispiel

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

Antwort (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/

Aktualisiert das Kundenprofil.

Erfordert JWT

Body-Parameter

Parameter Typ Beschreibung
nombre string Vollständiger Name
telefono string Telefon im internationalen Format
fecha_nacimiento string Datum (JJJJ-MM-TT)
genero string männlich, weiblich, andere
idioma_preferido string es, en, ar
preferencias object Benachrichtigungseinstellungen

Anfrage-Beispiel

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/

Ruft den Punktestand und die Bewegungen des Kunden ab.

Erfordert JWT

Antwort (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/

Listet die zum Kauf verfügbaren Punktepakete auf.

Antwort (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/

Löst Punkte für einen Service oder Rabatt ein.

Erfordert JWT

Body-Parameter

Parameter Typ Erforderlich Beschreibung
reserva_id integer Ja Buchungs-ID zur Anwendung
servicio_id integer Ja Service-ID zum Einlösen

Antwort (200 OK)

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