Skip to main content
واجهة المواعيد هي واجهة الجدولة بين الأنظمة في HueChat. يستطيع نظام ERP أو CRM أو موقع أو تطبيق أو منصة شريكة ضبط دليل الحجز، والبحث عن الأوقات المتاحة، وإنشاء مواعيد العملاء وإدارة دورتها كاملة. يُحصر كل طلب في الحساب الذي أصدر مفتاح API.

قبل البدء

أنشئ مفتاح API محدود النطاق بأقل الصلاحيات اللازمة:
استخدم معرّف الحساب الذي أصدر المفتاح. يُرفض مفتاح حساب آخر بالرمز 403، ولا تُحل معرّفات الموارد أو الخدمات أو المواعيد أو جهات الاتصال أو الصفقات بين الحسابات. كما تتحقق عمليات الإعداد من أن مالك المفتاح ما زال مديرًا.
يجب أن تكون ميزة المواعيد الأصلية مفعلة في الحساب. يعيد عدم توفر الميزة في الخطة الرمز 402 من دون تجاوز بقية فحوص الصلاحيات.

التغطية الكاملة للواجهة

يتضمن العقد العام 30 عملية. يُسمى نوع الموعد خدمة في حقول API، ويمكن أن يمثل المورد طبيبًا أو موظفًا أو غرفة أو فرعًا أو جهازًا أو أي سعة قابلة للحجز.

القراءة والبحث والحجز

إعدادات المدير

تتطلب كل عملية في هذا الجدول appointments:settings وأن يكون مالك المفتاح مديرًا للحساب. جميع المسارات أعلاه تضاف إلى /api/v2/accounts/{accountId}.

شرح عمليات القراءة واحدةً واحدة

  • GET /appointments: يعيد مواعيد النطاق مع الموارد والخدمات والإعدادات والقواعد والاستثناءات وروابط الخدمة بالموارد. النطاق الافتراضي 14 يومًا، ويمكن إرسال start وend بصيغة RFC3339 حتى 366 يومًا.
  • GET /appointments/{id}: يقبل public_id أو UUID، ويعيد الموعد وسجل تغير الحالة. لا تظهر الصفقة المرتبطة إلا مع deals:read.
  • GET /appointments/external/{externalId}: الأنسب للمطابقة بعد إعادة محاولة أو عندما لا يخزن النظام الخارجي معرّف HueChat.
  • GET /appointments/catalog: يعيد الخدمات النشطة فقط، ومدة كل خدمة وفواصلها والموارد المسموح لها تقديمها؛ وهو أفضل طلب لواجهة حجز خارجية.
  • GET /appointments/settings: يبين المنطقة الزمنية وفاصل الأوقات وأقل مهلة وأقصى مدة للحجز وسياسة التأكيد من دون تغييرها.
  • GET /appointments/resources وGET /appointments/resources/{resourceId}: يعيدان بيانات الأشخاص والغرف والفروع والأجهزة، بما في ذلك النوع والمنطقة الزمنية واللون والترتيب والحالة النشطة.
  • GET /appointments/services وGET /appointments/services/{serviceId}: يعيدان أنواع الموعد مع المدة وفواصل ما قبل/بعد الموعد والسعر والعملة والحالة.
  • GET /appointments/availability: يعيد قواعد الأسبوع كلها والاستثناءات التي تتقاطع مع start وend. المدة القصوى 366 يومًا.
  • GET /appointments/slots: يتطلب date وخدمة بالمعرّف أو الاسم الدقيق، ويقبل موردًا اختياريًا وpreferred_time وlimit حتى 50. يعيد وقت البداية والنهاية بصيغة مطلقة ومحلية لكل مورد متاح.
  • GET /appointments/reports: يعيد إجماليات الحالات والحجوزات المنشأة بالذكاء الاصطناعي وتوزيع النتائج حسب الخدمة. المدة الافتراضية شهر وأقصاها 366 يومًا.

شرح عمليات الكتابة واحدةً واحدة

  • POST /appointments: ينشئ حجزًا من external_id وبيانات العميل والخدمة والوقت. يقبل UUID أو اسم الخدمة الدقيق، وموردًا اختياريًا بالـUUID أو الاسم، وstarts_at أو date مع time. إعادة الطلب نفسه لا تنشئ نسخة ثانية.
  • PATCH /appointments/{id}: يحدّث بيانات العميل القابلة للتحرير، ويمكنه نقل موعد نشط في العملية نفسها. أرسل المورد والخدمة ووقت البداية وحقول العميل وversion الحالي.
  • PATCH /appointments/{id}/status: يغير الحالة مع reason اختياري ونسخة متوقعة. يحفظ التغيير وسجل الحالة في معاملة واحدة.
  • PATCH /appointments/{id}/schedule: ينقل موعدًا مبدئيًا أو محجوزًا أو مؤكدًا إلى مورد وخدمة ووقت متاح، ويرفض النسخة القديمة أو التعارض.

شرح عمليات الإعداد واحدةً واحدة

  • PUT /appointments/settings: يحفظ الوضع والمنطقة الزمنية وفاصل الأوقات ومهل الحجز والإلغاء وبداية الأسبوع والعرض وسياسة التأكيد كإعداد متماسك.
  • POST /appointments/resources: ينشئ سعة قابلة للحجز باسم ونوع، مع وصف ومنطقة زمنية ولون وترتيب اختياري.
  • PUT /appointments/resources/{resourceId}: يغير الحقول المرسلة فقط، ويمكنه تفعيل المورد أو تعطيله.
  • DELETE /appointments/resources/{resourceId}: أرشفة آمنة؛ تختفي السعة من الحجوزات الجديدة لكن لا يحذف تاريخها.
  • POST /appointments/resources/{resourceId}/restore: يعيد المورد المؤرشف ليصبح متاحًا للإعداد والحجز.
  • POST /appointments/services: ينشئ نوع الموعد باسمه ومدته بين 5 و1440 دقيقة وفواصله وسعره وعملته.
  • PUT /appointments/services/{serviceId}: يغير الحقول المرسلة فقط، بما فيها المدة والسعر والترتيب والحالة النشطة.
  • DELETE /appointments/services/{serviceId}: يؤرشف النوع مع إبقاء المواعيد السابقة قابلة للقراءة.
  • POST /appointments/services/{serviceId}/restore: يعيد نوع الموعد المؤرشف.
  • PUT /appointments/services/{serviceId}/resources: يستبدل جميع تعيينات الخدمة بقائمة UUID المرسلة؛ القائمة الفارغة تعني كل الموارد النشطة.
  • POST /appointments/availability/rules: يستبدل قاعدة مورد/يوم واحدة. يستخدم day_of_week القيم 0–6 والدقائق منذ منتصف الليل.
  • POST /appointments/availability/rules/bulk: يتحقق من جميع القواعد أولًا ثم يحفظها معًا، ولذلك لا يترك جدولًا نصف محدث.
  • POST /appointments/availability/exceptions: ينشئ فترة open أو closed؛ حذف resource_id يجعلها عامة لكل الموارد.
  • DELETE /appointments/availability/exceptions/{exceptionId}: يحذف الاستثناء المحدد داخل الحساب ولا يمس سجل المواعيد.

ضبط نموذج الجدولة

1. حفظ إعدادات الحساب

تُستخدم منطقة IANA الزمنية عند إرسال date وtime محليين.

2. إنشاء مورد ونوع موعد

الخدمة هي نوع الموعد الذي يختاره العميل:
عيّن الخدمة لموارد مختارة. جسم الطلب مصفوفة UUID، والمصفوفة الفارغة تعني أن كل مورد نشط مؤهل:

3. ضبط ساعات الأسبوع والاستثناءات

يستخدم day_of_week القيمة 0 للأحد حتى 6 للسبت. تُقاس البداية والنهاية بالدقائق منذ منتصف الليل؛ 540 تعني 09:00 و1020 تعني 17:00.
استخدم الاستثناء لعطلة أو فتح خاص أو إغلاق مؤقت، واحذف resource_id لتطبيقه على كل الموارد:

إيجاد وقت بالاسم والنوع والتاريخ

يمكن استخدام UUID كمرجع ثابت أو الاسم الدقيق لتدفق سهل للبشر. لا ترسل الشكلين للمنتقي نفسه.
يُبحث service_name وresource_name كاسمين دقيقين ونشطين داخل الحساب. استخدم service_id وresource_id عندما يمكن أن تتغير الأسماء. المورد اختياري؛ حذف منتقي المورد يعيد أوقات كل الموارد المؤهلة.

إنشاء موعد بالعميل والتاريخ والوقت والنوع

يتطلب الإنشاء بمفتاح API قيمة external_id ثابتة في النظام المتصل. طولها 1–128 محرف ASCII، تبدأ بحرف لاتيني أو رقم، ثم تستخدم الأحرف والأرقام و. و_ و: و- فقط.
يمكن بدلًا من ذلك إرسال service_id وresource_id اختياري وstarts_at بصيغة RFC3339. إذا حُذف المورد يختار HueChat موردًا مؤهلًا ومتاحًا. مدة الخدمة وفواصلها هي المرجع؛ ends_at اختياري ويُستخدم للتحقق ولا يغير مدة الخدمة. contact_id اختياري ويتطلب contacts:read ويجب أن ينتمي للحساب. ويمكن إرسال اسم العميل وهاتفه وبريده مباشرة من دون إنشاء جهة اتصال. استخدم واجهة جهات الاتصال وCustomer CDP عندما يحتاج النظام الخارجي إلى حفظ ملف العميل الموحد. deal_id اختياري ويتطلب deals:write، ويجب أن تكون الصفقة في الحساب وأن يسمح فرعها بالخدمة والمورد. لا تظهر بيانات الصفقة إلا مع deals:read.

إعادة المحاولة من دون حجز مكرر

بعد انقطاع الشبكة، أرسل الطلب نفسه مع external_id نفسه. يعيد HueChat الموعد الموجود والترويسة:
يصلح ذلك أيضًا رابط صفقة اختياري تعطل بعد إنشاء الموعد. يعيد استخدام المعرّف مع بيانات مختلفة 409 Conflict ولا يغير الموعد الأول. يمكن إعادة 503 مؤقتة بالطلب نفسه، وتظهر Retry-After: 0 عندما يبقى ربط الصفقة فقط. تُرفض الحقول المجهولة وأكثر من قيمة JSON والجسم الأكبر من 1 MiB. تتضمن 429 الترويسة Retry-After: 60 وترويسات X-RateLimit-*.

التحديث وتغيير الوقت والإكمال

تتضمن الاستجابات public_id وUUID وversion. استخدم أي معرّف وأرسل أحدث نسخة مع كل تغيير؛ تعيد النسخة القديمة 409.
حالات الإنشاء هي tentative وbooked وconfirmed. وتقبل التغييرات اللاحقة أيضًا completed وcancelled وno_show. يُحفظ تغيير الحالة وسجله معًا.
تحتفظ المواعيد المكتملة والملغاة وعدم الحضور بجدولها الأصلي.

السجل والتقارير

يعيد GET /appointments/{id} الموعد مع سجل الحالة الزمني. ويعيد GET /appointments/reports?start=…&end=… إجماليات كل حالة ونتائج كل خدمة. تستخدم مدد العرض والتوفر والتقرير RFC3339، ويجب أن تكون النهاية بعد البداية وألا تتجاوز 366 يومًا.

الأمان والحدود المقصودة

  • يحتفظ HueChat بالمفتاح كتجزئة أحادية الاتجاه فقط.
  • تُفحص ملكية الحساب والنطاق والانتهاء وقائمة IP الاختيارية والإلغاء وحد المعدل مع كل طلب.
  • تُحل الأسماء والمعرّفات داخل الحساب فقط؛ يفشل الاسم الدقيق المكرر أو المفقود بدل اختيار سجل غير مقصود.
  • لا تمنح نطاقات المواعيد صلاحيات ضمنية لجهات الاتصال أو الصفقات أو وكلاء AI.
  • الأرشفة والاستعادة عمليتا إدارة عامتان لأنهما تحتفظان بالتاريخ. الحذف الدائم للموارد والخدمات ليس ضمن عقد التكامل الموثق.
  • يبقى ربط المورد بوكيل AI تدفق إدارة للذكاء الاصطناعي، وليس عملية تكامل مواعيد.
راجع مرجع API التفاعلي لكل حقل طلب ومخطط استجابة وحالة خطأ.