Skip to main content

Saloane

Endpoint-urile publice GET sunt disponibile fără autentificare.
Creare/modificare/ștergere — doar pentru proprietarul salonului (salons.owner_id == current_user.id) sau admin.


Lista saloanelor

GET /api/v1/salons

Căutare și listare saloane.

Parametri de interogare

ParametruDescriere
queryCăutare după nume / adresă
categorySlug-ul categoriei
price_minPreț minim
price_maxPreț maxim
rating_minRating minim

Răspuns 200

{
"success": true,
"status": "200",
"message": "Salons retrieved successfully",
"errors": null,
"data": [
{
"id": "uuid",
"name": "Barber House",
"slug": "barber-house",
"address": "str. Pushkin 12",
"lat": 47.024,
"lng": 28.832,
"phone": "+37369000000",
"status": "active",
"avg_rating": 4.8,
"reviews_count": 12,
"photo_urls": []
}
]
}

Obține salon

GET /api/v1/salons/:id

Informații detaliate despre un salon. Include programul, serviciile și politica de anulare.

Răspuns 200

{
"success": true,
"status": "200",
"message": "Salon retrieved successfully",
"errors": null,
"data": {
"id": "uuid",
"name": "Barber House",
"slug": "barber-house",
"address": "str. Pushkin 12",
"lat": 47.024,
"lng": 28.832,
"phone": "+37369000000",
"status": "active",
"avg_rating": 4.8,
"reviews_count": 12,
"photo_urls": [],
"cancellation_hours_before": 24,
"cancellation_fee_percent": "0.0",
"working_hours": [
{ "day_of_week": 1, "open": "09:00", "close": "18:00" },
{ "day_of_week": 2, "open": "09:00", "close": "18:00" }
],
"services": [
{
"id": "uuid",
"name": "Men's Haircut",
"category": "barbershop",
"duration_min": 30,
"price_from": 150.0
}
]
}
}

Creare salon

POST /api/v1/salons

Crearea unui salon nou. Necesită autentificare (proprietar sau admin).

Cerere

POST /api/v1/salons
Authorization: Bearer <token>
Content-Type: application/json
{
"salon": {
"name": "Barber House",
"address": "str. Pushkin 12",
"phone": "+37369000000",
"lat": 47.024,
"lng": 28.832,
"status": "pending"
}
}

Se pot trimite și photos[] ca multipart.

Răspuns 201

{
"success": true,
"status": "201",
"message": "Salon created successfully",
"errors": null,
"data": {
"id": "uuid",
"name": "Barber House",
"slug": "barber-house",
...
}
}

Actualizare salon

PATCH /api/v1/salons/:id

Actualizarea unui salon. Doar proprietarul (owner_id) sau admin.

Cerere

{
"salon": {
"name": "New Name",
"address": "New Address",
"status": "active"
}
}

Răspuns 200

Același corp ca POST /api/v1/salons cu datele actualizate.


Ștergere salon

DELETE /api/v1/salons/:id

Ștergerea unui salon. Doar proprietarul sau admin.

Răspuns 200

{
"success": true,
"status": "200",
"message": "Salon deleted successfully",
"errors": null,
"data": null
}

Adaugă la favorite

POST /api/v1/salons/:id/favorites

Adaugă salonul la favorite. Necesită autentificare.

Răspuns 201

{
"success": true,
"status": "201",
"message": "...",
"errors": null,
"data": null
}

Elimină din favorite

DELETE /api/v1/salons/:id/favorites

Elimină salonul din favorite. Necesită autentificare.

Răspuns 200

{
"success": true,
"status": "200",
"message": "...",
"errors": null,
"data": null
}