پرش به محتوای اصلی

مستندات

مستندات

راهنمای اتصال به API نوبت‌دهی و افزودن ویجت رزرو به سایت شما.

نمونه (ماک): آدرس‌ها، کلیدها و پاسخ‌ها واقعی نیستند و فقط ساختار مستندات را نشان می‌دهند.

آدرس پایه
https://api.example.com/v1
نسخه
v1

شروع

معرفی

API نوبت‌دهی به شما اجازه می‌دهد نمایه‌ی ارائه‌دهنده، سرویس‌ها، بازه‌های خالی و رزروها را در برنامه‌ی خودتان بخوانید و بسازید. اگر فقط یک دکمه‌ی رزرو می‌خواهید، به‌جای API از ویجت استفاده کنید.

https://api.example.com/v1

همه‌ی پاسخ‌ها JSON هستند و زمان‌ها به‌صورت ISO 8601 با منطقه‌ی زمانی ارائه‌دهنده برمی‌گردند.

شروع

شروع سریع

در سه قدم اولین رزرو را بسازید: سرویس‌ها را بگیرید، بازه‌ی خالی را پیدا کنید، رزرو را ثبت کنید.

# 1) list services
curl https://api.example.com/v1/providers/ilia-salon/services \
  -H "Authorization: Bearer hg_test_xxxxxxxx"

# 2) find free slots
curl "https://api.example.com/v1/providers/ilia-salon/availability?service=svc_color&date=2026-10-10" \
  -H "Authorization: Bearer hg_test_xxxxxxxx"

# 3) book one
curl -X POST https://api.example.com/v1/bookings \
  -H "Authorization: Bearer hg_test_xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"service":"svc_color","start":"2026-10-10T10:30:00+03:30"}'

شروع

احراز هویت

هر درخواست باید کلید API را در هدر Authorization بفرستد. کلیدهای hg_test فقط روی داده‌ی آزمایشی کار می‌کنند و کلیدهای hg_live روی داده‌ی واقعی.

Authorization: Bearer hg_test_xxxxxxxx

کلید را هرگز در کد سمت مرورگر نگذارید. برای رزرو از سمت مشتری از ویجت یا سرور خودتان استفاده کنید.

API نوبت‌دهی

ارائه‌دهنده‌ها

GET/providers/{slug}

نمایه‌ی عمومی یک ارائه‌دهنده یا کسب‌وکار را برمی‌گرداند.

نامنوعالزامیتوضیح
slugstringبلهشناسه‌ی اختصاصی در لینک نمایه.
200Response
{
  "slug": "ilia-salon",
  "name": "Ilia Salon",
  "kind": "business",
  "timezone": "Asia/Tehran",
  "services": 3
}

API نوبت‌دهی

سرویس‌ها

GET/providers/{slug}/services

فهرست سرویس‌های قابل‌رزرو را می‌دهد؛ مدت هر سرویس ثابت یا متغیر است.

200Response
{
  "data": [
    { "id": "svc_cut", "name": "Haircut", "duration": 45, "fixed": true },
    { "id": "svc_color", "name": "Colour & highlights", "duration": 90, "fixed": true },
    { "id": "svc_skin", "name": "Skin cleansing", "duration": null, "fixed": false }
  ]
}

API نوبت‌دهی

بازه‌های خالی

GET/providers/{slug}/availability

بازه‌های خالیِ یک روز را لحظه‌ای از تقویم ارائه‌دهنده محاسبه می‌کند.

نامنوعالزامیتوضیح
servicestringبلهشناسه‌ی سرویس.
dateYYYY-MM-DDبلهروز مورد نظر.
context"independent" | "business"خیرزمینه‌ی رزرو؛ پیش‌فرض همان زمینه‌ی نمایه است.
GET/providers/ilia-salon/availability?service=svc_color&date=2026-10-10

API نوبت‌دهی

رزروها

POST/bookings

یک نوبت می‌سازد. اگر بازه پر شده باشد، خطای 409 برمی‌گردد.

نامنوعالزامیتوضیح
servicestringبلهشناسه‌ی سرویس.
startISO 8601بلهشروع نوبت؛ باید یکی از بازه‌های خالی باشد.
customerobjectخیرنام و شماره‌ی تماس؛ اگر نیامد، از مشتری واردشده خوانده می‌شود.
notestringخیریادداشت برای ارائه‌دهنده.
201Response
{
  "id": "bk_8f2a",
  "status": "confirmed",
  "service": "svc_color",
  "start": "2026-10-10T10:30:00+03:30",
  "end": "2026-10-10T12:00:00+03:30"
}

DELETE/bookings/{id}

نوبت را لغو می‌کند و بازه را دوباره آزاد می‌کند.

API نوبت‌دهی

مشتری‌ها

GET/customers/{id}

پروفایل مشتری و تاریخچه‌ی نوبت‌ها را برای ارائه‌دهنده برمی‌گرداند.

200Response
{
  "id": "cus_31c9",
  "bookings": 6,
  "last_visit": "2026-09-21",
  "notes": ["prefers mornings"]
}

API نوبت‌دهی

وب‌هوک‌ها

برای اطلاع از تغییر نوبت‌ها یک آدرس ثبت کنید تا رویدادهایی مثل booking.created و booking.cancelled به آن ارسال شود. هر درخواست با هدر X-Signature امضا می‌شود.

{
  "event": "booking.created",
  "data": { "id": "bk_8f2a", "service": "svc_color", "start": "2026-10-10T10:30:00+03:30" }
}

ویجت رزرو

افزودن ویجت

ویجت رزرو با دو خط به سایت شما اضافه می‌شود؛ بدون سرور و بدون کلید API.

<script src="https://cdn.example.com/booking-widget.js" defer></script>
<div data-booking-widget="ilia-salon"></div>

ویجت رزرو

گزینه‌های ویجت

نامنوعالزامیتوضیح
data-booking-widgetstringبلهشناسه‌ی ارائه‌دهنده.
data-theme"dark" | "light"خیرپوسته‌ی نمایش.
data-lang"fa" | "en"خیرزبان و جهت ویجت.
data-servicestringخیرانتخاب ازپیش سرویس.

ویجت رزرو

رویدادهای ویجت

ویجت رویدادهای مرورگر را روی همان عنصر منتشر می‌کند تا بتوانید مثلاً یک پیام تشکر نشان دهید.

document
  .querySelector("[data-booking-widget]")
  .addEventListener("booking:confirmed", (e) => {
    console.log("confirmed", e.detail.id);
  });

مرجع

خطاها

خطاها با کد وضعیت HTTP و یک بدنه‌ی JSON شامل code و message برمی‌گردند.

نامنوعالزامیتوضیح
400invalid_requestخیرپارامتر نامعتبر یا ناقص.
401unauthorizedخیرکلید موجود نیست یا نامعتبر است.
404not_foundخیرارائه‌دهنده، سرویس یا نوبت پیدا نشد.
409slot_takenخیربازه هم‌اکنون رزرو شده است.
429rate_limitedخیرتعداد درخواست بیش از حد.
409Response
{
  "error": { "code": "slot_taken", "message": "This slot is no longer free." }
}

مرجع

محدودیت نرخ

هر کلید در هر دقیقه تا ۶۰ درخواست مجاز است. هدرهای X-RateLimit-Remaining و Retry-After وضعیت را نشان می‌دهند.

مرجع

تغییرات

نامنوعالزامیتوضیح
v1.22026-10خیرویجت: رویداد booking:confirmed و گزینه‌ی data-service.
v1.12026-09خیروب‌هوک‌ها و امضای X-Signature.
v1.02026-08خیرنخستین نسخه: ارائه‌دهنده‌ها، سرویس‌ها، بازه‌ها و رزروها.

سؤالی ماند؟

با ما حرف بزن