Clientes
Endpoints para gestionar el perfil y puntos del cliente autenticado.
GET
/api/v1/cliente/perfil/
Obtiene el perfil del cliente autenticado.
Requiere JWTEjemplo 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 JWTBody 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 JWTRespuesta (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 JWTBody 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
}
}