Skip to main content

GET /api/v1/salons/:id/availability

Get available booking slots for a salon on a specific day. Public endpoint.

Query params

ParameterRequiredDescription
service_idYesService UUID (determines slot duration)
dateNoDate in YYYY-MM-DD format (default — today)
master_idNoMaster 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

  1. The salon schedule is fetched (or master's schedule if master_id is provided)
  2. Existing confirmed appointments are subtracted from working hours for date
  3. Slots of length duration_min (from the service) are generated
  4. schedule_blocks (vacations, sick leave) are taken into account
  5. Time zones — via salon.timezone (IANA, default Europe/Chisinau)