Skip to main content

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

Obține intervalele disponibile pentru rezervare la un salon într-o zi specifică. Endpoint public.

Parametri de interogare

ParametruObligatoriuDescriere
service_idDaUUID-ul serviciului (determină durata intervalului)
dateNuData în format YYYY-MM-DD (implicit — azi)
master_idNuUUID-ul maestrului pentru filtrarea intervalelor

Cerere

GET /api/v1/salons/:id/availability?service_id=uuid&date=2026-04-07&master_id=uuid

Răspuns 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"
}
]
}

Răspuns 422 — service_id lipsește

{
"success": false,
"status": "422",
"message": "service_id is required",
"errors": null,
"data": null
}

Logica generării intervalelor

  1. Se preia programul salonului (sau al maestrului, dacă master_id este specificat)
  2. Din orele de lucru pentru date se scad programările confirmate existente
  3. Se generează intervale de lungime duration_min (din serviciu)
  4. Se iau în considerare schedule_blocks (concedii, concedii medicale)
  5. Fusuri orare — prin salon.timezone (IANA, implicit Europe/Chisinau)