GET /api/v1/salons/:id/availability
Get available booking slots for a salon on a specific day. Public endpoint.
Query params
| Parameter | Required | Description |
|---|---|---|
service_id | Yes | Service UUID (determines slot duration) |
date | No | Date in YYYY-MM-DD format (default — today) |
master_id | No | Master UUID to filter slots |
Request
GET /api/v1/salons/:id/availability?service_id=uuid&date=2026-04-07&master_id=uuid
Response 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"
}
]
}
Response 422 — service_id not provided
{
"success": false,
"status": "422",
"message": "service_id is required",
"errors": null,
"data": null
}
Slot Generation Logic
- The salon schedule is fetched (or master's schedule if
master_idis provided) - Existing confirmed appointments are subtracted from working hours for
date - Slots of length
duration_min(from the service) are generated schedule_blocks(vacations, sick leave) are taken into account- Time zones — via
salon.timezone(IANA, defaultEurope/Chisinau)