GET /api/v1/salons/:id/availability
Получить доступные слоты для записи в салон на конкретный день. Публичный эндпоинт.
Query params
| Параметр | Обязательно | Описание |
|---|---|---|
service_id | Да | UUID услуги (определяет длительность слота) |
date | Нет | Дата в формате YYYY-MM-DD (по умолчанию — сегодня) |
master_id | Нет | UUID мастера для фильтрации слотов |
Запрос
GET /api/v1/salons/:id/availability?service_id=uuid&date=2026-04-07&master_id=uuid
Ответ 200
{
"success": true,
"status": "200",
"message": "Availability retrieved successfully",
"errors": null,
"data": [
{
"starts_at": "2026-04-07T09:00:00+03:00",
"ends_at": "2026-04-07T09:30:00+03:00",
"duration_min": 30,
"master_id": "uuid"
},
{
"starts_at": "2026-04-07T09:30:00+03:00",
"ends_at": "2026-04-07T10:00:00+03:00",
"duration_min": 30,
"master_id": "uuid"
}
]
}
Ответ 422 — service_id не передан
{
"success": false,
"status": "422",
"message": "service_id is required",
"errors": null,
"data": null
}
Логика построения слотов
- Берётся расписание салона (или мастера, если
master_idуказан) - Из рабочих часов на
dateвычитаются существующие подтверждённые записи - Генерируются слоты длиной
duration_min(из услуги) - Учитываются
schedule_blocks(отпуска, больничные) - Временны́е зоны — через
salon.timezone(IANA, по умолчаниюEurope/Chisinau)