الحجوزات

نقاط النهاية لإنشاء وإدارة الحجوزات.

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 لم يحضر العميل