Dashboard

Clientes

Endpoints para gestionar el perfil y puntos del cliente autenticado.

GET /api/v1/cliente/perfil/

Obtiene el perfil del cliente autenticado.

Requiere JWT

Ejemplo de peticion

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

Respuesta (200 OK)

JSON
{
    "success": true,
    "data": {
        "id": 456,
        "nombre": "Juan Perez",
        "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 Garcia"
        }
    }
}
PUT /api/v1/cliente/perfil/

Actualiza el perfil del cliente.

Requiere JWT

Body parameters

Parametro Tipo Descripcion
nombre string Nombre completo
telefono string Telefono con formato internacional
fecha_nacimiento string Fecha (YYYY-MM-DD)
genero string masculino, femenino, otro
idioma_preferido string es, en, ar
preferencias object Preferencias de notificacion

Ejemplo de peticion

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

Obtiene el saldo de puntos y movimientos del cliente.

Requiere JWT

Respuesta (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 Clasico",
                "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 Clasico",
                "puntos_necesarios": 250,
                "puede_canjear": true
            },
            {
                "servicio_id": 16,
                "servicio_nombre": "Afeitado Clasico",
                "puntos_necesarios": 150,
                "puede_canjear": true
            }
        ]
    }
}
GET /api/v1/puntos/paquetes/

Lista los paquetes de puntos disponibles para compra.

Respuesta (200 OK)

JSON
{
    "success": true,
    "data": {
        "paquetes": [
            {
                "id": 1,
                "nombre": "Paquete Basico",
                "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/

Canjea puntos por un servicio o descuento.

Requiere JWT

Body parameters

Parametro Tipo Requerido Descripcion
reserva_id integer Si ID de la reserva donde aplicar
servicio_id integer Si ID del servicio a canjear

Respuesta (200 OK)

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