REST API
REST API
پیشوند تمام endpoint ها: /wp-json/pronobat/v1/
احراز هویت
- مسیرهای عمومی: بدون احراز هویت (با محدودیت نرخ)
- مسیرهای مدیریتی: نیاز به هدر
X-WP-Nonceدارند
X-WP-Nonce: {nonce از wp_create_nonce('wp_rest')}
محدودیت نرخ
مسیرهای عمومی از RateLimiter استفاده میکنند:
| مسیر | محدودیت |
|---|---|
GET /public/services · GET /public/staff | ۳۰ درخواست/دقیقه/IP |
GET /public/slots · GET /public/slots/calendar | ۱۰ درخواست/دقیقه/IP |
POST /public/appointments | ۳ درخواست/دقیقه/IP |
POST /public/cancel/{token} · POST /public/reschedule/{token} | ۳ درخواست/دقیقه/IP |
GET,POST /public/payment/verify | ۶۰ درخواست/دقیقه/IP |
مسیرهای عمومی
تمام مسیرهای عمومی زیر pronobat/v1/public/ قرار دارند.
دریافت بازههای زمانی خالی
GET /pronobat/v1/public/slots
پارامترها:
| پارامتر | نوع | الزامی | توضیح |
|---|---|---|---|
service_id | int | ✓ | شناسه سرویس |
staff_id | int | ✗ | فیلتر بر اساس کارمند |
date | string | ✓ | تاریخ میلادی YYYY-MM-DD |
پاسخ ۲۰۰:
{
"slots": [
{ "start": "09:00", "end": "10:00", "available": true },
{ "start": "10:00", "end": "11:00", "available": false }
]
}ثبت نوبت
POST /pronobat/v1/public/appointments
بدنه درخواست:
{
"service_id": 1,
"staff_id": 2,
"date": "2024-07-15",
"time": "09:00",
"customer_name": "علی رضایی",
"customer_phone": "09121234567",
"customer_email": "ali@example.com",
"notes": "درخواست خاص"
}پاسخ ۲۰۱:
{
"appointment_id": 42,
"status": "pending",
"payment_url": "https://..."
}مسیرهای مدیریتی
مسیرهای مدیریتی پیشوند /admin/ ندارند؛ هر کنترلر زیر pronobat/v1/ با نام منبع خود ثبت میشود (مثلاً appointments, customers, payments). همه به هدر X-WP-Nonce نیاز دارند.
دریافت لیست نوبتها
GET /pronobat/v1/appointments
پارامترها: status (آرایه)، date_from، date_to، service_id، staff_id، customer_id، payment_status، search، page، per_page، orderby، order
دسترسی مورد نیاز: pronobat_manage یا pronobat_staff_self (کارمند فقط نوبتهای خود را میبیند)
تغییر وضعیت نوبت
تغییر وضعیت از طریق بهروزرسانی خود نوبت انجام میشود (فیلد status در بدنه):
PUT,PATCH /pronobat/v1/appointments/{id}
{ "status": "confirmed" }وضعیتهای مجاز: pending، pending_payment، confirmed، cancelled، completed، no_show
دسترسی: pronobat_manage
برای عملیات خاص، مسیرهای اختصاصی هم وجود دارد:
POST /pronobat/v1/appointments/{id}/cancel
POST /pronobat/v1/appointments/{id}/reschedule
POST /pronobat/v1/appointments/{id}/mark_attended
POST /pronobat/v1/appointments/{id}/make_recurring
درخواست استرداد وجه
استرداد از طریق کنترلر پرداختها انجام میشود (نه نوبتها):
POST /pronobat/v1/payments/{id}/refund
دسترسی: pronobat_manage_payments
مسیرهای بازارگاه و قابلیتهای جدید
با گسترش پرونوبت به فرمساز و بازارگاه، مسیرهای عمومی زیر هم اضافه شدهاند (همگی زیر pronobat/v1/public/):
GET /public/directory # فهرست ارائهدهندگان (با فیلترها)
GET /public/providers/{id}/reviews # نظرهای تأییدشدهی یک متخصص
GET /public/locations # استانها و شهرها
POST /public/reviews # ثبت نظر (نیازمند نوبتِ گذشتهی معتبر)
POST /public/provider-application # ثبتنام ارائهدهنده
POST /public/waitlist # ثبتنام در لیست انتظار
POST /public/track # رویداد تحلیل قیف (ناشناس)
GET /public/my-appointments # داشبورد مشتری (با کوکی)
POST /public/my-profile # ویرایش پروفایل مشتری
مسیرهای مدیریتی جدید:
GET /pronobat/v1/reviews # صف تأیید نظرات
POST /pronobat/v1/reviews/{id}/(approve|reject)
GET /pronobat/v1/waitlist # لیست انتظار
DELETE /pronobat/v1/waitlist/{id}
GET /pronobat/v1/analytics/funnel?days=30 # گزارش قیف رزرو
GET /pronobat/v1/forms · /pronobat/v1/flows # فرمساز و جریان رزرو
کدهای خطا
| کد | معنی |
|---|---|
pronobat_forbidden | دسترسی رد شد |
pronobat_slot_taken | بازه زمانی رزرو شده |
pronobat_rate_limited | درخواستهای بیش از حد |
pronobat_payment_failed | خطا در پرداخت |
pronobat_invalid_phone | فرمت شماره تلفن نادرست |
پرونوبت را همین الان امتحان کنید
یک نمونه کامل و زنده از افزونه با دادههای واقعی — بدون نیاز به نصب.