Disponibilidad
Endpoints para consultar horarios disponibles para reservas.
GET
/api/v1/disponibilidad/{peluquero_id}/{fecha}/
Obtiene los slots de tiempo disponibles para un profesional en una fecha específica.
Path parameters
| Parámetro | Tipo | Descripción |
|---|---|---|
peluquero_id |
integer | ID del profesional |
fecha |
string | Fecha en formato YYYY-MM-DD |
Query parameters
| Parámetro | Tipo | Descripción |
|---|---|---|
servicio_id |
integer | ID del servicio (para calcular duración) |
servicios |
string | IDs de servicios separados por coma (para múltiples) |
duracion |
integer | Duración personalizada en minutos |
Ejemplo de petición
cURL
curl -X GET "https://app.salonbookit.com/api/v1/disponibilidad/5/2024-01-20/?servicio_id=15" \
-H "X-API-Key: hh_pub_live_abc123..."
Respuesta (200 OK)
JSON
{
"success": true,
"data": {
"fecha": "2024-01-20",
"profesional": {
"id": 5,
"nombre": "Carlos García"
},
"duracion_solicitada": 30,
"slots": [
{
"hora_inicio": "09:00",
"hora_fin": "09:30",
"disponible": true
},
{
"hora_inicio": "09:30",
"hora_fin": "10:00",
"disponible": true
},
{
"hora_inicio": "10:00",
"hora_fin": "10:30",
"disponible": false,
"motivo": "ocupado"
},
{
"hora_inicio": "10:30",
"hora_fin": "11:00",
"disponible": false,
"motivo": "ocupado"
},
{
"hora_inicio": "11:00",
"hora_fin": "11:30",
"disponible": true
}
// ... resto de slots del día
],
"slots_disponibles_count": 18,
"proximo_disponible": "09:00",
"ultimo_disponible": "19:30"
}
}
Campos de respuesta
| Campo | Tipo | Descripción |
|---|---|---|
fecha |
string | Fecha consultada |
profesional |
object | Info del profesional |
duracion_solicitada |
integer | Duración usada para calcular slots |
slots |
array | Lista de slots de tiempo |
slots[].hora_inicio |
string | Hora de inicio (HH:MM) |
slots[].hora_fin |
string | Hora de fin (HH:MM) |
slots[].disponible |
boolean | Si está disponible para reservar |
slots[].motivo |
string | Razón si no está disponible |
Intervalo de slots
Los slots se generan en intervalos de 15 o 30 minutos según la configuración del negocio.
GET
/api/v1/disponibilidad/dias/
Obtiene los días con disponibilidad en un rango de fechas.
Query parameters
| Parámetro | Tipo | Descripción |
|---|---|---|
peluquero_id |
integer | ID del profesional (opcional) |
servicio_id |
integer | ID del servicio |
desde |
string | Fecha inicio (YYYY-MM-DD). Defecto: hoy |
hasta |
string | Fecha fin (YYYY-MM-DD). Defecto: +30 días |
Ejemplo de petición
cURL
curl -X GET "https://app.salonbookit.com/api/v1/disponibilidad/dias/?peluquero_id=5&servicio_id=15&desde=2024-01-15&hasta=2024-02-15" \
-H "X-API-Key: hh_pub_live_abc123..."
Respuesta (200 OK)
JSON
{
"success": true,
"data": {
"desde": "2024-01-15",
"hasta": "2024-02-15",
"dias": [
{
"fecha": "2024-01-15",
"disponible": true,
"slots_libres": 12,
"primer_slot": "09:00",
"ultimo_slot": "18:30"
},
{
"fecha": "2024-01-16",
"disponible": true,
"slots_libres": 8,
"primer_slot": "11:00",
"ultimo_slot": "19:00"
},
{
"fecha": "2024-01-17",
"disponible": false,
"slots_libres": 0,
"motivo": "completo"
},
{
"fecha": "2024-01-18",
"disponible": false,
"slots_libres": 0,
"motivo": "festivo"
}
// ... resto de días
],
"dias_disponibles_count": 22
}
}
Este endpoint es útil para mostrar un calendario donde los días sin disponibilidad aparezcan deshabilitados.
Errores comunes
| Código | HTTP | Descripción |
|---|---|---|
PROFESSIONAL_NOT_FOUND |
404 | El profesional no existe |
INVALID_DATE |
400 | Formato de fecha inválido (debe ser YYYY-MM-DD) |
DATE_IN_PAST |
400 | La fecha es anterior a hoy |
DATE_TOO_FAR |
400 | La fecha excede el límite de reserva anticipada |
PROFESSIONAL_NOT_WORKING |
200 | El profesional no trabaja ese día (slots vacío) |