الحجوزات
نقاط النهاية لإنشاء وإدارة الحجوزات.
POST
/api/v1/reservas/crear/
ينشئ حجزاً جديداً.
المصادقة
يمكن استخدام نقطة النهاية هذه بدون JWT للحجوزات الضيفية، أو مع JWT للعملاء المصادقين.
معلمات الجسم
| المعامل | النوع | مطلوب | الوصف |
|---|---|---|---|
servicio_ids |
array | نعم | مصفوفة معرفات الخدمات |
peluquero_id |
integer | نعم | معرف المحترف |
fecha |
string | نعم | التاريخ (YYYY-MM-DD) |
hora_inicio |
string | نعم | وقت البدء (HH:MM) |
nombre |
string | نعم* | اسم العميل (*إذا لم يكن JWT) |
email |
string | نعم* | بريد العميل (*إذا لم يكن JWT) |
telefono |
string | نعم* | الهاتف (*إذا تم تكوينه كمطلوب) |
notas |
string | لا | ملاحظات إضافية |
usar_puntos |
boolean | لا | الدفع بنقاط الولاء |
مثال على الطلب
cURL
curl -X POST "https://app.salonbookit.com/api/v1/reservas/crear/" \
-H "X-API-Key: hh_pub_live_abc123..." \
-H "Content-Type: application/json" \
-d '{
"servicio_ids": [15],
"peluquero_id": 5,
"fecha": "2024-01-20",
"hora_inicio": "10:30",
"nombre": "Juan Pérez",
"email": "juan@email.com",
"telefono": "+34612345678",
"notas": "Primera visita"
}'
الاستجابة (201 Created)
JSON
{
"success": true,
"data": {
"id": 12345,
"codigo": "ABC123XY",
"fecha": "2024-01-20",
"hora_inicio": "10:30",
"hora_fin": "11:00",
"servicios": [
{
"id": 15,
"nombre": "Corte Clásico",
"precio": 25.00,
"duracion_minutos": 30
}
],
"profesional": {
"id": 5,
"nombre": "Carlos García"
},
"cliente": {
"id": 456,
"nombre": "Juan Pérez",
"email": "juan@email.com",
"telefono": "+34612345678"
},
"subtotal": 25.00,
"descuento": 0.00,
"total": 25.00,
"moneda": "EUR",
"estado": "confirmada",
"pago_requerido": false,
"pago_pendiente": true,
"puntos_ganados": 25,
"created_at": "2024-01-15T14:30:00Z"
}
}
GET
/api/v1/cliente/reservas/
يسرد حجوزات العميل المصادق عليه.
يتطلب JWTمعلمات الاستعلام
| المعامل | النوع | الوصف |
|---|---|---|
estado |
string | تصفية: قيد الانتظار، مؤكد، مكتمل، ملغي |
desde |
string | التاريخ من (YYYY-MM-DD) |
hasta |
string | التاريخ إلى (YYYY-MM-DD) |
الاستجابة (200 OK)
JSON
{
"success": true,
"data": {
"reservas": [
{
"id": 12345,
"codigo": "ABC123XY",
"fecha": "2024-01-20",
"hora_inicio": "10:30",
"hora_fin": "11:00",
"servicios": [...],
"profesional": {...},
"total": 25.00,
"estado": "confirmada",
"puede_cancelar": true
}
],
"proxima_reserva": {
"id": 12345,
"fecha": "2024-01-20",
"hora_inicio": "10:30"
},
"total": 15
}
}
GET
/api/v1/reservas/{id}/
يحصل على تفاصيل الحجز.
معلمات المسار
| المعامل | النوع | الوصف |
|---|---|---|
id |
integer | معرف الحجز |
الاستعلام بالرمز
يمكنك أيضاً الاستعلام باستخدام الرمز: /reservas/codigo/{codigo}/
POST
/api/v1/reservas/{id}/cancelar/
يلغي حجزاً قائماً.
معلمات الجسم
| المعامل | النوع | مطلوب | الوصف |
|---|---|---|---|
motivo |
string | لا | سبب الإلغاء |
مثال على الطلب
cURL
curl -X POST "https://app.salonbookit.com/api/v1/reservas/12345/cancelar/" \
-H "X-API-Key: hh_pub_live_abc123..." \
-H "Authorization: Bearer eyJhbG..." \
-H "Content-Type: application/json" \
-d '{"motivo": "Cambio de planes"}'
الاستجابة (200 OK)
JSON
{
"success": true,
"data": {
"id": 12345,
"estado": "cancelada",
"cancelada_en": "2024-01-15T16:00:00Z",
"reembolso": {
"aplica": true,
"monto": 25.00,
"estado": "pendiente"
}
}
}
الأخطاء
| الرمز | HTTP | الوصف |
|---|---|---|
BOOKING_NOT_FOUND |
404 | الحجز غير موجود |
CANNOT_CANCEL |
400 | لا يمكن إلغاء الحجز (مضى بالفعل أو ملغى بالفعل) |
CANCELLATION_DEADLINE_PASSED |
400 | انتهت مهلة الإلغاء (مثال: 24 ساعة قبل) |
حالات الحجز
| الحالة | الوصف |
|---|---|
pendiente |
حجز تم إنشاؤه، في انتظار التأكيد |
confirmada |
حجز مؤكد من النشاط التجاري |
completada |
تمت الخدمة |
cancelada |
ملغي من العميل أو النشاط التجاري |
no_show |
لم يحضر العميل |