واجهة معارض محام
إدارة المعارض، المساحات، الإيجارات، الرعاة، والمزيد
إدارة المعارض
معارض، أقسام، مساحات
إيجارات وعقود
طلبات زيارة، إيجار، عقود
رعاة ومدفوعات
رعاة، عقود رعاية، فواتير
Base URL
http://api.mahamexpo.sa/api/v1
ملاحظة مهمة
هذه الخدمة لا تدير المصادقة محلياً — تتم عبر Auth Service.
الهيدرات المطلوبة
| الهيدر | القيمة | مطلوب | الوصف |
|---|---|---|---|
Content-Type | application/json | ✓ | نوع المحتوى |
Accept | application/json | ✓ | نوع الرد |
Authorization | Bearer {token} | للمحمية | توكن JWT من Auth Service |
Accept-Language | ar | en | اختياري | لغة الردود |
X-Platform | web | mobile | api | اختياري | مصدر الطلب — web / mobile / api |
المصادقة
كيف تعمل المصادقة هنا؟
- احصل على توكن JWT من Auth Service
- أرسل التوكن في هيدر Authorization لهذه الخدمة
- هذه الخدمة تتحقق عبر Auth Service
curl -X GET http://api.mahamexpo.sa/api/v1/my/dashboard \
-H "Accept: application/json" \
-H "Authorization: Bearer YOUR_JWT_TOKEN"
صيغة الردود
{
"success": true,
"message": "Operation successful",
"data": { ... }
}
{
"success": true,
"data": [ ... ],
"meta": {
"current_page": 1,
"last_page": 5,
"per_page": 15,
"total": 73
}
}
📋 أمثلة عملية
أمثلة حقيقية لطلبات API مع الردود المتوقعة
GET جلب المعارض العامة
GET /api/v1/events?page=1&per_page=5
Headers:
Accept: application/json
{
"success": true,
"data": [
{
"id": 1,
"name": "معرض الرياض التجاري",
"status": "active",
"start_date": "2025-03-01",
"end_date": "2025-03-05",
"city": { "id": 1, "name": "الرياض" }
}
],
"meta": { "current_page": 1, "last_page": 3, "total": 12 }
}
POST إنشاء طلب إيجار
POST /api/v1/rental-requests
Headers:
Accept: application/json
Authorization: Bearer {token}
Content-Type: application/json
Body:
{
"space_id": 5,
"event_id": 1,
"notes": "أريد جناح بواجهة أمامية"
}
{
"success": true,
"message": "Rental request created",
"data": {
"id": 42,
"space_id": 5,
"status": "pending",
"notes": "أريد جناح بواجهة أمامية",
"created_at": "2025-02-15T10:30:00Z"
}
}
PUT تعديل معرض
PUT /api/v1/events/1
Headers:
Accept: application/json
Authorization: Bearer {token}
Content-Type: application/json
Body:
{
"name": "معرض الرياض الدولي 2025",
"status": "active",
"end_date": "2025-03-10"
}
{
"success": true,
"message": "Event updated successfully",
"data": {
"id": 1,
"name": "معرض الرياض الدولي 2025",
"status": "active",
"end_date": "2025-03-10",
"updated_at": "2025-02-15T11:00:00Z"
}
}
DELETE حذف تذكرة دعم
DELETE /api/v1/support-tickets/7
Headers:
Accept: application/json
Authorization: Bearer {token}
{
"success": true,
"message": "Ticket deleted successfully"
}
🌐 نقاط النهاية العامة
لا تحتاج مصادقة
المعارض
| Method | Endpoint | الوصف |
|---|---|---|
| GET | /v1/events | قائمة المعارض |
| GET | /v1/events/featured | المعارض المميزة |
| GET | /v1/events/{event} | تفاصيل معرض |
| GET | /v1/events/{event}/spaces | مساحات المعرض |
| GET | /v1/events/{event}/sections | أقسام المعرض |
| GET | /v1/events/{event}/sponsors | رعاة المعرض |
| GET | /v1/events/{event}/sponsor-packages | باقات الرعاية |
| GET | /v1/spaces/{space} | تفاصيل مساحة |
404 NOT_FOUND
429 RATE_LIMITED
الفئات
| Method | Endpoint | الوصف |
|---|---|---|
| GET | /v1/categories | قائمة الفئات |
| GET | /v1/categories/{category} | تفاصيل فئة |
404 NOT_FOUND
429 RATE_LIMITED
المدن
| Method | Endpoint | الوصف |
|---|---|---|
| GET | /v1/cities | قائمة المدن |
| GET | /v1/cities/{city} | تفاصيل مدينة |
404 NOT_FOUND
429 RATE_LIMITED
الخدمات
| Method | Endpoint | الوصف |
|---|---|---|
| GET | /v1/services | قائمة الخدمات |
429 RATE_LIMITED
الإحصائيات
| Method | Endpoint | الوصف |
|---|---|---|
| GET | /v1/statistics | إحصائيات عامة |
| GET | /v1/statistics/events | إحصائيات المعارض |
| GET | /v1/statistics/spaces | إحصائيات المساحات |
429 RATE_LIMITED
التقييمات
| Method | Endpoint | الوصف |
|---|---|---|
| GET | /v1/ratings | قائمة التقييمات |
| GET | /v1/ratings/summary | ملخص التقييمات |
404 NOT_FOUND
429 RATE_LIMITED
المحتوى العام
| Method | Endpoint | الوصف |
|---|---|---|
| الصفحات | ||
| GET | /v1/pages | قائمة الصفحات |
| GET | /v1/pages/{slug} | صفحة بالرابط |
| الأسئلة الشائعة | ||
| GET | /v1/faqs | قائمة الأسئلة |
| GET | /v1/faqs/categories | فئات الأسئلة |
| GET | /v1/faqs/{faq} | تفاصيل سؤال |
| POST | /v1/faqs/{faq}/helpful | تقييم الفائدة |
| البانرات | ||
| GET | /v1/banners | قائمة البانرات |
| POST | /v1/banners/{banner}/click | تسجيل نقرة |
| أنشطة تجارية | ||
| GET | /v1/business-activity-types | أنواع الأنشطة التجارية |
| GET | /v1/business-activity-types/{id} | تفاصيل نوع نشاط |
| إعدادات | ||
| GET | /v1/auth-mode | وضع تسجيل الدخول |
404 NOT_FOUND
429 RATE_LIMITED
📊 التتبع والتحليل
تسجيل المشاهدات والأحداث — يعمل بدون أو مع تسجيل دخول
هيدر المنصة X-Platform
أرسل هيدر X-Platform مع كل طلب لتحديد مصدر الطلب:
X-Platform: web
X-Platform: mobile
X-Platform: api
تسجيل مشاهدة
| Method | Endpoint | الوصف | Auth |
|---|---|---|---|
| POST | /v1/track/view | تسجيل مشاهدة لعنصر | اختياري |
{
"resource_type": "event", // event | space | section | sponsor | page | banner | faq | service
"resource_id": "uuid-here",
"session_id": "sess_abc123", // optional — لربط الأحداث بجلسة
"metadata": { // optional
"source_page": "home"
}
}
422 VALIDATION_ERROR
400 INVALID_INPUT
429 RATE_LIMIT
تسجيل حدث / إجراء
| Method | Endpoint | الوصف | Auth |
|---|---|---|---|
| POST | /v1/track/action | تسجيل إجراء | اختياري |
{
"action": "search", // view | search | click | share | filter | download | favorite | unfavorite | apply | submit | page_enter | page_exit
"resource_type": "event", // optional
"resource_id": "uuid-here", // required if resource_type sent
"session_id": "sess_abc123",
"metadata": {
"search_query": "معرض الرياض",
"filter_params": { "city_id": "uuid", "category_id": "uuid" },
"source_page": "events_list"
}
}
422 VALIDATION_ERROR
400 INVALID_INPUT
429 RATE_LIMIT
👤 خدمة ذاتية
تحتاج تسجيل دخول — بيانات المستخدم فقط
الملف التجاري
| Method | Endpoint | الوصف |
|---|---|---|
| GET | /v1/profile | عرض ملفي التجاري |
| POST | /v1/profile | إنشاء ملف تجاري |
| PUT | /v1/profile | تحديث ملفي التجاري |
| POST | /v1/profile/kyc-step | حفظ خطوة توثيق KYC |
401 UNAUTHENTICATED
404 NOT_FOUND
422 VALIDATION_ERROR
422 DUPLICATE_ENTRY
المفضلة
| Method | Endpoint | الوصف |
|---|---|---|
| GET | /v1/favorites | قائمة المفضلة |
| POST | /v1/favorites | إضافة للمفضلة |
| DEL | /v1/favorites/{favorite} | إزالة من المفضلة |
401 UNAUTHENTICATED
404 NOT_FOUND
422 DUPLICATE_ENTRY
الإشعارات
| Method | Endpoint | الوصف | Permission |
|---|---|---|---|
| GET | /v1/notifications | قائمة الإشعارات | notifications.view |
| GET | /v1/notifications/unread-count | عدد غير المقروءة | notifications.view |
| PUT | /v1/notifications/{id}/read | تعليم كمقروء | notifications.update |
| PUT | /v1/notifications/read-all | تعليم الكل كمقروء | notifications.update |
| GET | /v1/notifications/preferences | تفضيلات الإشعارات | notification-preferences.view |
| PUT | /v1/notifications/preferences | تحديث التفضيلات | notification-preferences.update |
401 UNAUTHENTICATED
403 PERMISSION_DENIED
404 NOT_FOUND
422 VALIDATION_ERROR
تقييماتي
| Method | Endpoint | الوصف | Permission |
|---|---|---|---|
| POST | /v1/ratings | إضافة تقييم | ratings.create |
| PUT | /v1/ratings/{rating} | تعديل تقييمي | ratings.update |
| DEL | /v1/ratings/{rating} | حذف تقييمي | ratings.delete |
401 UNAUTHENTICATED
403 PERMISSION_DENIED
422 VALIDATION_ERROR
422 DUPLICATE_ENTRY
تذاكر الدعم
| Method | Endpoint | الوصف | Permission |
|---|---|---|---|
| GET | /v1/support-tickets | قائمة تذاكري | support-tickets.view |
| POST | /v1/support-tickets | إنشاء تذكرة | support-tickets.create |
| GET | /v1/support-tickets/{id} | تفاصيل تذكرة | support-tickets.view |
| POST | /v1/support-tickets/{id}/reply | رد على تذكرة | support-tickets.reply |
| PUT | /v1/support-tickets/{id}/close | إغلاق تذكرتي | support-tickets.close |
| PUT | /v1/support-tickets/{id}/reopen | إعادة فتح تذكرة | support-tickets.create |
401 UNAUTHENTICATED
403 PERMISSION_DENIED
404 NOT_FOUND
422 VALIDATION_ERROR
422 INVALID_STATUS
فواتيري
| Method | Endpoint | الوصف | Permission |
|---|---|---|---|
| GET | /v1/invoices | قائمة فواتيري | invoices.view |
| GET | /v1/invoices/{invoice} | تفاصيل فاتورة | invoices.view |
401 UNAUTHENTICATED
403 PERMISSION_DENIED
404 NOT_FOUND
طلبات الزيارة
| Method | Endpoint | الوصف | Permission |
|---|---|---|---|
| GET | /v1/visit-requests | قائمة طلباتي | visit-requests.view |
| POST | /v1/visit-requests | إنشاء طلب زيارة | visit-requests.create |
| GET | /v1/visit-requests/{id} | تفاصيل طلب | visit-requests.view |
| PUT | /v1/visit-requests/{id} | تعديل طلب | visit-requests.update |
| DEL | /v1/visit-requests/{id} | حذف طلب | visit-requests.delete |
401 UNAUTHENTICATED
403 PERMISSION_DENIED
404 NOT_FOUND
422 VALIDATION_ERROR
طلبات الإيجار
| Method | Endpoint | الوصف | Permission |
|---|---|---|---|
| GET | /v1/rental-requests | قائمة طلباتي | rental-requests.view |
| POST | /v1/rental-requests | إنشاء طلب إيجار | rental-requests.create |
| GET | /v1/rental-requests/{id} | تفاصيل طلب | rental-requests.view |
| PUT | /v1/rental-requests/{id} | تعديل طلب | rental-requests.update |
| DEL | /v1/rental-requests/{id} | حذف طلب | rental-requests.delete |
401 UNAUTHENTICATED
403 PROFILE_NOT_VERIFIED
404 NOT_FOUND
422 VALIDATION_ERROR
422 SPACE_UNAVAILABLE
💳 بوابة الدفع
| Method | Endpoint | الوصف |
|---|---|---|
| GET | /v1/payments | قائمة مدفوعاتي |
| GET | /v1/payments/{payment} | تفاصيل دفعة |
| POST | /v1/payments/pay-invoice | بدء دفع فاتورة |
| GET | /v1/payments/{payment}/status | التحقق من حالة الدفع |
{
"invoice_id": "uuid-here",
"payment_method": "credit_card",
"return_url": "https://app.mahamexpo.sa/payment/callback"
}
401 UNAUTHENTICATED
404 NOT_FOUND
422 INVALID_INVOICE
📱 الأجهزة
| Method | Endpoint | الوصف |
|---|---|---|
| GET | /v1/devices | قائمة أجهزتي المسجلة |
| POST | /v1/devices | تسجيل جهاز للإشعارات |
| DEL | /v1/devices | إلغاء تسجيل جهاز |
{
"device_token": "fcm_token_or_apns_token_here",
"device_type": "android", // android | ios
"device_name": "Samsung Galaxy S24"
}
401 UNAUTHENTICATED
422 VALIDATION_ERROR
🏠 بياناتي — /v1/my/
بيانات مربوطة بحسابك
لوحة التحكم الموحدة
| Method | Endpoint | الوصف |
|---|---|---|
| GET | /v1/my/dashboard | لوحة تحكم موحدة |
401 UNAUTHENTICATED
مساحاتي
| Method | Endpoint | الوصف | Permission |
|---|---|---|---|
| GET | /v1/my/spaces | قائمة مساحاتي | spaces.view |
| POST | /v1/my/spaces | إنشاء مساحة | spaces.create |
| GET | /v1/my/spaces/{space} | تفاصيل مساحة | spaces.view |
| PUT | /v1/my/spaces/{space} | تحديث مساحة | spaces.update |
| DEL | /v1/my/spaces/{space} | حذف مساحة | spaces.delete |
| POST | /v1/my/spaces/{space}/services | إضافة خدمات | spaces.update |
| DEL | /v1/my/spaces/{space}/services | إزالة خدمات | spaces.update |
401 UNAUTHENTICATED
403 PERMISSION_DENIED
404 NOT_FOUND
422 VALIDATION_ERROR
زيارات واردة
| Method | Endpoint | الوصف | Permission |
|---|---|---|---|
| GET | /v1/my/received-visit-requests | القائمة | visit-requests.approve |
| GET | /v1/my/received-visit-requests/pending-count | عدد المعلقة | visit-requests.approve |
| GET | /v1/my/received-visit-requests/{id} | التفاصيل | visit-requests.approve |
| PUT | /v1/my/received-visit-requests/{id}/approve | قبول | visit-requests.approve |
| PUT | /v1/my/received-visit-requests/{id}/reject | رفض | visit-requests.reject |
401 UNAUTHENTICATED
403 PERMISSION_DENIED
404 NOT_FOUND
422 INVALID_STATUS
إيجارات واردة
| Method | Endpoint | الوصف | Permission |
|---|---|---|---|
| GET | /v1/my/received-rental-requests | القائمة | rental-requests.approve |
| GET | /v1/my/received-rental-requests/pending-count | عدد المعلقة | rental-requests.approve |
| GET | /v1/my/received-rental-requests/{id} | التفاصيل | rental-requests.approve |
| PUT | /v1/my/received-rental-requests/{id}/approve | قبول | rental-requests.approve |
| PUT | /v1/my/received-rental-requests/{id}/reject | رفض | rental-requests.reject |
401 UNAUTHENTICATED
403 PERMISSION_DENIED
404 NOT_FOUND
422 INVALID_STATUS
مدفوعاتي
| Method | Endpoint | الوصف | Permission |
|---|---|---|---|
| GET | /v1/my/payments | قائمة المدفوعات | payments.view |
| GET | /v1/my/payments/summary | ملخص المدفوعات | payments.view |
| GET | /v1/my/payments/{rentalRequest} | تفاصيل دفعة | payments.view |
401 UNAUTHENTICATED
403 PERMISSION_DENIED
404 NOT_FOUND
عقود الإيجار
| Method | Endpoint | الوصف | Permission |
|---|---|---|---|
| GET | /v1/my/rental-contracts | قائمة عقودي | rental-contracts.view |
| GET | /v1/my/rental-contracts/{id} | تفاصيل عقد | rental-contracts.view |
| PUT | /v1/my/rental-contracts/{id}/sign | توقيع العقد | rental-contracts.sign |
401 UNAUTHENTICATED
403 PERMISSION_DENIED
404 NOT_FOUND
422 CONTRACT_ALREADY_SIGNED
بيانات الرعاية
| Method | Endpoint | الوصف | Permission |
|---|---|---|---|
| عقود الرعاية | |||
| GET | /v1/my/sponsor-contracts | القائمة | sponsor-contracts.view |
| GET | /v1/my/sponsor-contracts/{id} | التفاصيل | sponsor-contracts.view |
| مدفوعات الرعاية | |||
| GET | /v1/my/sponsor-payments | القائمة | sponsor-payments.view |
| GET | /v1/my/sponsor-payments/{id} | التفاصيل | sponsor-payments.view |
| أصول الرعاية (CRUD) | |||
| GET | /v1/my/sponsor-assets | القائمة | sponsor-assets.view |
| POST | /v1/my/sponsor-assets | إنشاء | sponsor-assets.create |
| GET | /v1/my/sponsor-assets/{id} | التفاصيل | sponsor-assets.view |
| PUT | /v1/my/sponsor-assets/{id} | تحديث | sponsor-assets.update |
| DEL | /v1/my/sponsor-assets/{id} | حذف | sponsor-assets.delete |
| تعرض الرعاية (ROI) | |||
| GET | /v1/my/sponsor-exposure | بيانات التعرض | sponsor-exposure.view |
| GET | /v1/my/sponsor-exposure/summary | ملخص التعرض | sponsor-exposure.view |
401 UNAUTHENTICATED
403 PERMISSION_DENIED
404 NOT_FOUND
422 VALIDATION_ERROR
نشاطاتي
| Method | Endpoint | الوصف | Permission |
|---|---|---|---|
| GET | /v1/my/activity | سجل نشاطاتي | Auth |
| GET | /v1/my/activity/summary | ملخص النشاط | Auth |
فلاتر الاستعلام — GET /v1/my/activity
?action=view
?platform=web
?resource_type=event
?from=2024-01-01
?to=2024-12-31
?per_page=20
فلتر الفترة — GET /v1/my/activity/summary
?period=7d
?period=30d
?period=90d
?period=all
{
"success": true,
"data": {
"period": "30d",
"total_activities": 142,
"actions": { "view": 85, "search": 32, "click": 25 },
"platforms": { "web": 90, "mobile": 52 },
"top_viewed": [{ "resource_type": "event", "count": 15 }],
"recent_searches": ["معرض الرياض", "أثاث"]
}
}
401 UNAUTHENTICATED
👥 فريق العمل
| Method | Endpoint | الوصف | Permission |
|---|---|---|---|
| فريق التاجر — /v1/my/merchant-team | |||
| GET | /v1/my/merchant-team/member-types | أنواع الأعضاء | team-members.view |
| GET | /v1/my/merchant-team | قائمة الفريق | team-members.view |
| POST | /v1/my/merchant-team | إضافة عضو | team-members.create |
| GET | /v1/my/merchant-team/{id} | تفاصيل عضو | team-members.view |
| PUT | /v1/my/merchant-team/{id} | تحديث عضو | team-members.update |
| DEL | /v1/my/merchant-team/{id} | حذف عضو | team-members.delete |
| فريق المستثمر — /v1/my/investor-team | |||
| GET | /v1/my/investor-team/member-types | أنواع الأعضاء | team-members.view |
| GET | /v1/my/investor-team | قائمة الفريق | team-members.view |
| POST | /v1/my/investor-team | إضافة عضو | team-members.create |
| GET | /v1/my/investor-team/{id} | تفاصيل عضو | team-members.view |
| PUT | /v1/my/investor-team/{id} | تحديث عضو | team-members.update |
| DEL | /v1/my/investor-team/{id} | حذف عضو | team-members.delete |
401 UNAUTHENTICATED
403 PERMISSION_DENIED
404 NOT_FOUND
422 VALIDATION_ERROR
عملاء الرعاية
| Method | Endpoint | الوصف | Permission |
|---|---|---|---|
| GET | /v1/my/sponsor-leads | قائمة العملاء المحتملين | sponsor-leads.view |
| GET | /v1/my/sponsor-leads/{id} | تفاصيل عميل | sponsor-leads.view |
مخرجات الرعاية
| Method | Endpoint | الوصف | Permission |
|---|---|---|---|
| GET | /v1/my/sponsor-deliverables | قائمة المخرجات | sponsor-deliverables.view |
| GET | /v1/my/sponsor-deliverables/{id} | تفاصيل مخرج | sponsor-deliverables.view |
| POST | /v1/my/sponsor-deliverables/{id}/upload | رفع ملف المخرج | sponsor-deliverables.upload |
401 UNAUTHENTICATED
403 PERMISSION_DENIED
⚙️ الإدارة — /v1/manage/
عمليات إدارية — التحكم عبر الصلاحيات
admin → CRUD كاملة | supervisor → عرض + موافقة | super-admin → يتخطى الكل
لوحة التحكم
| Method | Endpoint | الوصف | Permission |
|---|---|---|---|
| GET | /v1/manage/dashboard | لوحة تحكم إدارية | reports.view |
| GET | /v1/manage/statistics | إحصائيات مفصلة | reports.view |
401 UNAUTHENTICATED
403 PERMISSION_DENIED
المعارض
| Method | Endpoint | الوصف | Permission |
|---|---|---|---|
| GET | /v1/manage/events | قائمة المعارض | events.view |
| POST | /v1/manage/events | إنشاء معرض | events.create |
| GET | /v1/manage/events/{event} | تفاصيل معرض | events.view |
| PUT | /v1/manage/events/{event} | تحديث معرض | events.update |
| DEL | /v1/manage/events/{event} | حذف معرض | events.delete |
| موارد فرعية | |||
| GET | /v1/manage/events/{event}/sections | أقسام المعرض | sections.view |
| POST | /v1/manage/events/{event}/sections | إنشاء قسم | sections.create |
| GET | /v1/manage/events/{event}/spaces | مساحات المعرض | spaces.view |
| POST | /v1/manage/events/{event}/spaces | إنشاء مساحة | spaces.create |
| GET | /v1/manage/events/{event}/sponsor-packages | باقات الرعاية | sponsor-packages.view |
| POST | /v1/manage/events/{event}/sponsor-packages | إنشاء باقة | sponsor-packages.create |
401 UNAUTHENTICATED
403 PERMISSION_DENIED
404 NOT_FOUND
422 VALIDATION_ERROR
422 DUPLICATE_ENTRY
حقول إنشاء/تحديث معرض
name string requiredname_ar string requiredcategory_id uuid requiredcity_id uuid requiredaddress string requiredstart_date date Y-m-d requiredend_date date Y-m-d requireddescription string nullabledescription_ar string nullableaddress_ar string nullablelatitude numeric nullablelongitude numeric nullableopening_time HH:mm nullableclosing_time HH:mm nullableorganizer_name string nullableorganizer_phone string nullableorganizer_email email nullablewebsite url nullablestatus draft|published|ended|cancelledis_featured boolean default: falseimages[] file (image) nullableimages_360[] file (image) nullableالأقسام والمساحات
| Method | Endpoint | الوصف | Permission |
|---|---|---|---|
| الأقسام | |||
| GET | /v1/manage/sections/{section} | تفاصيل | sections.view |
| PUT | /v1/manage/sections/{section} | تحديث | sections.update |
| DEL | /v1/manage/sections/{section} | حذف | sections.delete |
| المساحات | |||
| GET | /v1/manage/spaces/{space} | تفاصيل | spaces.view |
| PUT | /v1/manage/spaces/{space} | تحديث | spaces.update |
| DEL | /v1/manage/spaces/{space} | حذف | spaces.delete |
401 UNAUTHENTICATED
403 PERMISSION_DENIED
404 NOT_FOUND
422 VALIDATION_ERROR
حقول إنشاء/تحديث مساحة
name string requiredlocation_code string requiredarea_sqm numeric requiredprice_total numeric requiredname_ar string nullabledescription string nullabledescription_ar string nullablesection_id uuid nullableprice_per_day numeric nullablespace_type booth|shop|office|hall|outdoor|otherpayment_system full|installment|daily|monthlyrental_duration daily|weekly|monthly|full_eventfloor_number integer nullablestatus available|reserved|rented|unavailableis_featured boolean default: falselatitude numeric nullablelongitude numeric nullableaddress string nullableaddress_ar string nullableservices[] array of uuid nullableimages[] file (image) nullableimages_360[] file (image) nullableamenities[] array string nullableamenities_ar[] array string nullableخدمات المعارض
| Method | Endpoint | الوصف | Permission |
|---|---|---|---|
| GET | /v1/manage/services | القائمة | expo-services.view |
| POST | /v1/manage/services | إنشاء | expo-services.create |
| GET | /v1/manage/services/{service} | التفاصيل | expo-services.view |
| PUT | /v1/manage/services/{service} | تحديث | expo-services.update |
| DEL | /v1/manage/services/{service} | حذف | expo-services.delete |
401 UNAUTHENTICATED
403 PERMISSION_DENIED
404 NOT_FOUND
422 VALIDATION_ERROR
فئات / مدن / إعدادات
| Method | Endpoint | الوصف | Permission |
|---|---|---|---|
| الفئات — CRUD | |||
| GET | /v1/manage/categories | القائمة | categories.view |
| POST | /v1/manage/categories | إنشاء | categories.create |
| GET | /v1/manage/categories/{category} | التفاصيل | categories.view |
| PUT | /v1/manage/categories/{category} | تحديث | categories.update |
| DEL | /v1/manage/categories/{category} | حذف | categories.delete |
| المدن — CRUD | |||
| GET | /v1/manage/cities | القائمة | cities.view |
| POST | /v1/manage/cities | إنشاء | cities.create |
| GET | /v1/manage/cities/{city} | التفاصيل | cities.view |
| PUT | /v1/manage/cities/{city} | تحديث | cities.update |
| DEL | /v1/manage/cities/{city} | حذف | cities.delete |
| إعدادات النظام | |||
| GET | /v1/manage/settings | جميع الإعدادات | settings.view |
| GET | /v1/manage/settings/{key} | إعداد واحد | settings.view |
| PUT | /v1/manage/settings | تحديث | settings.update |
مفاتيح الإعدادات (PUT — صيغة مسطحة)
أرسل فقط المفاتيح التي تريد تحديثها
site_name stringsite_name_ar stringcontact_email emailcontact_phone stringsupport_email emailmaintenance_mode booleanallow_registration booleanauto_approve_profiles booleanmax_visit_requests_per_day integermax_rental_requests_per_merchant integerdefault_currency string (SAR)timezone string (Asia/Riyadh)visit_fee numeric رسوم الزيارةpayment_enabled booleanpayment_gateway_mode test|livepayment_default_currency string (SAR)payment_3d_secure booleansms_enabled booleansms_default_channel sms|whatsappsms_max_attempts_per_hour integersms_code_length integer401 UNAUTHENTICATED
403 PERMISSION_DENIED
404 NOT_FOUND
422 VALIDATION_ERROR
422 DUPLICATE_ENTRY
المستخدمين والملفات التجارية
| Method | Endpoint | الوصف | Permission |
|---|---|---|---|
| المستخدمين | |||
| GET | /v1/manage/users | القائمة | profiles.view-all |
| GET | /v1/manage/users/{profile} | التفاصيل | profiles.view-all |
| PUT | /v1/manage/users/{profile}/approve | قبول | profiles.approve |
| PUT | /v1/manage/users/{profile}/reject | رفض | profiles.reject |
| PUT | /v1/manage/users/{profile}/suspend | إيقاف | profiles.reject |
| الملفات التجارية | |||
| GET | /v1/manage/profiles | القائمة | profiles.view-all |
| GET | /v1/manage/profiles/{profile} | التفاصيل | profiles.view-all |
| PUT | /v1/manage/profiles/{profile}/approve | قبول | profiles.approve |
| PUT | /v1/manage/profiles/{profile}/reject | رفض | profiles.reject |
401 UNAUTHENTICATED
403 PERMISSION_DENIED
404 NOT_FOUND
422 INVALID_STATUS
طلبات الزيارة والإيجار
| Method | Endpoint | الوصف | Permission |
|---|---|---|---|
| طلبات الزيارة | |||
| GET | /v1/manage/visit-requests | جميع الطلبات | visit-requests.view-all |
| GET | /v1/manage/visit-requests/{id} | التفاصيل | visit-requests.view-all |
| PUT | /v1/manage/visit-requests/{id}/approve | قبول | visit-requests.approve |
| PUT | /v1/manage/visit-requests/{id}/reject | رفض | visit-requests.reject |
| طلبات الإيجار | |||
| GET | /v1/manage/rental-requests | جميع الطلبات | rental-requests.view-all |
| GET | /v1/manage/rental-requests/{id} | التفاصيل | rental-requests.view-all |
| PUT | /v1/manage/rental-requests/{id}/approve | قبول | rental-requests.approve |
| PUT | /v1/manage/rental-requests/{id}/reject | رفض | rental-requests.reject |
| POST | /v1/manage/rental-requests/{id}/payment | تسجيل دفعة | rental-requests.record-payment |
401 UNAUTHENTICATED
403 PERMISSION_DENIED
404 NOT_FOUND
422 INVALID_STATUS
422 SPACE_UNAVAILABLE
عقود الإيجار
| Method | Endpoint | الوصف | Permission |
|---|---|---|---|
| GET | /v1/manage/rental-contracts | جميع العقود | rental-contracts.view-all |
| POST | /v1/manage/rental-contracts | إنشاء عقد | rental-contracts.create |
| GET | /v1/manage/rental-contracts/{id} | التفاصيل | rental-contracts.view-all |
| PUT | /v1/manage/rental-contracts/{id} | تحديث | rental-contracts.update |
| PUT | /v1/manage/rental-contracts/{id}/approve | قبول | rental-contracts.approve |
| PUT | /v1/manage/rental-contracts/{id}/reject | رفض | rental-contracts.reject |
| PUT | /v1/manage/rental-contracts/{id}/terminate | إنهاء | rental-contracts.terminate |
401 UNAUTHENTICATED
403 PERMISSION_DENIED
404 NOT_FOUND
422 VALIDATION_ERROR
422 INVALID_STATUS
422 CONTRACT_ALREADY_SIGNED
الرعاة
| Method | Endpoint | الوصف | Permission |
|---|---|---|---|
| الرعاة — CRUD + approve/activate/suspend | |||
| GET | /v1/manage/sponsors | List | sponsors.view-all |
| POST | /v1/manage/sponsors | Create | sponsors.create |
| GET | /v1/manage/sponsors/{id} | Show | sponsors.view-all |
| PUT | /v1/manage/sponsors/{id} | Update | sponsors.update |
| DEL | /v1/manage/sponsors/{id} | Delete | sponsors.delete |
| PUT | /v1/manage/sponsors/{id}/approve | Approve | sponsors.approve |
| PUT | /v1/manage/sponsors/{id}/activate | Activate | sponsors.approve |
| PUT | /v1/manage/sponsors/{id}/suspend | Suspend | sponsors.reject |
| باقات — show/update/delete | |||
| GET | /v1/manage/sponsor-packages/{id} | Show | sponsor-packages.view |
| PUT | /v1/manage/sponsor-packages/{id} | Update | sponsor-packages.update |
| DEL | /v1/manage/sponsor-packages/{id} | Delete | sponsor-packages.delete |
| عقود — CRUD + approve/reject/complete | |||
| GET | /v1/manage/sponsor-contracts | List | sponsor-contracts.view-all |
| POST | /v1/manage/sponsor-contracts | Create | sponsor-contracts.create |
| GET | /v1/manage/sponsor-contracts/{id} | Show | sponsor-contracts.view-all |
| PUT | /v1/manage/sponsor-contracts/{id} | Update | sponsor-contracts.update |
| PUT | /v1/manage/sponsor-contracts/{id}/approve | Approve | sponsor-contracts.approve |
| PUT | /v1/manage/sponsor-contracts/{id}/reject | Reject | sponsor-contracts.reject |
| PUT | /v1/manage/sponsor-contracts/{id}/complete | Complete | sponsor-contracts.approve |
| مدفوعات — CRUD + mark-paid | |||
| GET | /v1/manage/sponsor-payments | List | sponsor-payments.view-all |
| POST | /v1/manage/sponsor-payments | Create | sponsor-payments.create |
| GET | /v1/manage/sponsor-payments/{id} | Show | sponsor-payments.view-all |
| PUT | /v1/manage/sponsor-payments/{id} | Update | sponsor-payments.create |
| PUT | /v1/manage/sponsor-payments/{id}/mark-paid | Mark Paid | sponsor-payments.create |
| مزايا — CRUD + deliver | |||
| GET | /v1/manage/sponsor-benefits | List | sponsor-benefits.view |
| POST | /v1/manage/sponsor-benefits | Create | sponsor-benefits.create |
| GET | /v1/manage/sponsor-benefits/{id} | Show | sponsor-benefits.view |
| PUT | /v1/manage/sponsor-benefits/{id} | Update | sponsor-benefits.update |
| PUT | /v1/manage/sponsor-benefits/{id}/deliver | Deliver | sponsor-benefits.deliver |
| أصول — view + approve/reject | |||
| GET | /v1/manage/sponsor-assets | List | sponsor-assets.view |
| GET | /v1/manage/sponsor-assets/{id} | Show | sponsor-assets.view |
| PUT | /v1/manage/sponsor-assets/{id}/approve | Approve | sponsor-assets.approve |
| PUT | /v1/manage/sponsor-assets/{id}/reject | Reject | sponsor-assets.approve |
401 UNAUTHENTICATED
403 PERMISSION_DENIED
404 NOT_FOUND
422 VALIDATION_ERROR
422 INVALID_STATUS
التقييمات وتذاكر الدعم
| Method | Endpoint | الوصف | Permission |
|---|---|---|---|
| التقييمات | |||
| GET | /v1/manage/ratings | List | ratings.view-all |
| GET | /v1/manage/ratings/{id} | Show | ratings.view-all |
| PUT | /v1/manage/ratings/{id}/approve | Approve | ratings.approve |
| PUT | /v1/manage/ratings/{id}/reject | Reject | ratings.reject |
| DEL | /v1/manage/ratings/{id} | Delete | ratings.delete |
| تذاكر الدعم | |||
| GET | /v1/manage/support-tickets | List | support-tickets.view-all |
| GET | /v1/manage/support-tickets/{id} | Show | support-tickets.view-all |
| PUT | /v1/manage/support-tickets/{id}/assign | Assign | support-tickets.assign |
| POST | /v1/manage/support-tickets/{id}/reply | Reply | support-tickets.reply |
| PUT | /v1/manage/support-tickets/{id}/resolve | Resolve | support-tickets.close |
| PUT | /v1/manage/support-tickets/{id}/close | Close | support-tickets.close |
| DEL | /v1/manage/support-tickets/{id} | Delete | support-tickets.delete |
401 UNAUTHENTICATED
403 PERMISSION_DENIED
404 NOT_FOUND
422 INVALID_STATUS
الفواتير
| Method | Endpoint | الوصف | Permission |
|---|---|---|---|
| GET | /v1/manage/invoices | List | invoices.view-all |
| POST | /v1/manage/invoices | Create | invoices.create |
| GET | /v1/manage/invoices/{id} | Show | invoices.view-all |
| PUT | /v1/manage/invoices/{id} | Update | invoices.update |
| PUT | /v1/manage/invoices/{id}/issue | إصدار | invoices.issue |
| PUT | /v1/manage/invoices/{id}/mark-paid | Mark Paid | invoices.mark-paid |
| PUT | /v1/manage/invoices/{id}/cancel | إلغاء | invoices.cancel |
401 UNAUTHENTICATED
403 PERMISSION_DENIED
404 NOT_FOUND
422 VALIDATION_ERROR
422 INVALID_STATUS
المحتوى (CMS)
| Method | Endpoint | الوصف | Permission |
|---|---|---|---|
| الصفحات — CRUD | |||
| GET | /v1/manage/pages | List | pages.view |
| POST | /v1/manage/pages | Create | pages.create |
| GET | /v1/manage/pages/{page} | Show | pages.view |
| PUT | /v1/manage/pages/{page} | Update | pages.update |
| DEL | /v1/manage/pages/{page} | Delete | pages.delete |
| الأسئلة الشائعة — CRUD | |||
| GET | /v1/manage/faqs | List | faqs.view |
| POST | /v1/manage/faqs | Create | faqs.create |
| GET | /v1/manage/faqs/{faq} | Show | faqs.view |
| PUT | /v1/manage/faqs/{faq} | Update | faqs.update |
| DEL | /v1/manage/faqs/{faq} | Delete | faqs.delete |
| البانرات — CRUD | |||
| GET | /v1/manage/banners | List | banners.view |
| POST | /v1/manage/banners | Create | banners.create |
| GET | /v1/manage/banners/{banner} | Show | banners.view |
| PUT | /v1/manage/banners/{banner} | Update | banners.update |
| DEL | /v1/manage/banners/{banner} | Delete | banners.delete |
401 UNAUTHENTICATED
403 PERMISSION_DENIED
404 NOT_FOUND
422 VALIDATION_ERROR
422 SLUG_ALREADY_EXISTS
📊 التحليلات
| Method | Endpoint | الوصف | Permission |
|---|---|---|---|
| GET | /v1/manage/analytics | نظرة عامة | reports.view |
| GET | /v1/manage/analytics/views | تحليل المشاهدات | reports.view |
| GET | /v1/manage/analytics/actions | سجل النشاطات | reports.view |
| GET | /v1/manage/analytics/users | تحليل المستخدمين | reports.view |
فلاتر مشتركة
?days=30
?platform=web
?action=view
?resource_type=event
?user_id={uuid}
?per_page=20
{
"success": true,
"data": {
"total_activities": 12450,
"total_views": 8200,
"unique_users": 340,
"unique_ips": 520,
"actions": { "view": 8200, "search": 2100, "click": 1800 },
"platforms": { "web": 7000, "mobile": 5000, "api": 450 },
"daily_trend": [{ "date": "2024-03-15", "count": 420 }]
}
}
401 UNAUTHENTICATED
403 PERMISSION_DENIED
📦 مجموعات Postman
حمّل المجموعات مباشرة واستوردها في Postman
كيفية الاستخدام
- حمّل ملف البيئة واستورده في Postman ← Environments
- حمّل المجموعة المطلوبة واستوردها في Postman ← Collections
- اختر البيئة من القائمة وابدأ الاختبار
متغيرات البيئة
auth_url = https://auth-service-api.mahamexpo.sa/apiexpo_url = https://expo-service-api.mahamexpo.sa/api
auth_url = http://localhost:8001/apiexpo_url = http://localhost:8002/api
Admin
118 requestsإدارة كاملة: معارض، مساحات، مستخدمين
📚 المرجع
رموز الحالة HTTP
| الرمز | Name | الوصف |
|---|---|---|
| 200 | OK | تمت بنجاح |
| 201 | Created | تم الإنشاء |
| 401 | Unauthorized | غير مصرح |
| 403 | Forbidden | لا صلاحية |
| 404 | Not Found | غير موجود |
| 422 | Unprocessable | خطأ تحقق |
| 429 | Too Many | تجاوز الحد |
| 500 | Server Error | خطأ خادم |
📛 جدول رموز الأخطاء الشامل
كل مورد وأخطاؤه المحتملة
{
"success": false,
"message": "Unauthenticated.",
"error_code": "UNAUTHENTICATED"
}
{
"success": false,
"message": "You do not have permission.",
"error_code": "PERMISSION_DENIED"
}
{
"success": false,
"message": "The given data was invalid.",
"error_code": "VALIDATION_ERROR",
"errors": {
"name": ["required"],
"email": ["taken"]
}
}
{
"success": false,
"message": "Resource not found.",
"error_code": "NOT_FOUND"
}
{
"success": false,
"message": "Space is unavailable.",
"error_code": "SPACE_UNAVAILABLE"
}
{
"success": false,
"message": "Too many requests.",
"error_code": "RATE_LIMITED"
}
| المورد / العملية | HTTP | رمز الخطأ | الوصف |
|---|---|---|---|
| 🔒 Global — All Authenticated Endpoints | |||
| أي ريكوست محمي | 401 | UNAUTHENTICATED | التوكن مفقود أو منتهي أو غير صالح |
| أي ريكوست يحتاج صلاحية | 403 | PERMISSION_DENIED | ليس لديك الصلاحية المطلوبة |
| أي ريكوست | 429 | RATE_LIMITED | تجاوزت حد الطلبات |
| أي ريكوست | 500 | SERVER_ERROR | خطأ داخلي |
| ريكوست يتواصل مع Auth | 503 | AUTH_SERVICE_UNAVAILABLE | Auth Service غير متاح |
| 📅 Events — المعارض | |||
| GET /events/{event} | 404 | NOT_FOUND | المعرض غير موجود |
| POST /manage/events | 422 | VALIDATION_ERROR | name, start_date, end_date, city_id مطلوبة |
| POST /manage/events | 422 | DUPLICATE_ENTRY | اسم مكرر |
| 📐 Sections & Spaces — الأقسام والمساحات | |||
| GET /{section|space} | 404 | NOT_FOUND | غير موجود |
| POST sections|spaces | 422 | VALIDATION_ERROR | name, event_id, type, price مطلوبة |
| POST rental-requests | 422 | SPACE_UNAVAILABLE | محجوزة أو غير متاحة |
| 👤 Business Profiles — الملفات التجارية | |||
| GET /profile | 404 | NOT_FOUND | لا يوجد ملف تجاري |
| POST /profile | 422 | VALIDATION_ERROR | company_name مطلوب |
| POST /profile | 422 | DUPLICATE_ENTRY | ملف موجود مسبقاً |
| rental-requests/* | 403 | PROFILE_NOT_VERIFIED | ملف غير موثق (مطلوب للإيجار) |
| PUT /manage/profiles/{id}/approve | 422 | INVALID_STATUS | حالة غير قابلة للقبول |
| 🎫 Visit Requests — طلبات الزيارة | |||
| GET /visit-requests/{id} | 404 | NOT_FOUND | طلب غير موجود |
| POST /visit-requests | 422 | VALIDATION_ERROR | event_id, visit_date مطلوبة |
| PUT /approve | /reject | 422 | INVALID_STATUS | حالة ليست pending |
| 🏪 Rental Requests — طلبات الإيجار | |||
| GET /rental-requests/{id} | 404 | NOT_FOUND | طلب غير موجود |
| POST /rental-requests | 403 | PROFILE_NOT_VERIFIED | ملف غير موثق |
| POST /rental-requests | 422 | VALIDATION_ERROR | space_id, event_id مطلوبة |
| POST /rental-requests | 422 | SPACE_UNAVAILABLE | المساحة محجوزة |
| PUT /approve | /reject | 422 | INVALID_STATUS | حالة ليست pending |
| POST /payment | 422 | INVALID_STATUS | طلب غير مقبول |
| 📝 Rental Contracts — عقود الإيجار | |||
| GET /rental-contracts/{id} | 404 | NOT_FOUND | العقد غير موجود |
| POST /manage/rental-contracts | 422 | VALIDATION_ERROR | rental_request_id مطلوب |
| PUT /sign | 422 | CONTRACT_ALREADY_SIGNED | العقد موقع |
| PUT /approve|reject|terminate | 422 | INVALID_STATUS | حالة غير قابلة |
| ⭐ Ratings — التقييمات | |||
| GET /ratings/{id} | 404 | NOT_FOUND | غير موجود |
| POST /ratings | 422 | VALIDATION_ERROR | rateable_id, rating مطلوبة |
| POST /ratings | 422 | DUPLICATE_ENTRY | مكرر |
| PUT /manage/approve|reject | 422 | INVALID_STATUS | ليس pending |
| 🎟️ Support Tickets — تذاكر الدعم | |||
| GET /support-tickets/{id} | 404 | NOT_FOUND | غير موجودة |
| POST /support-tickets | 422 | VALIDATION_ERROR | subject, message مطلوبة |
| PUT /close | /reopen | /resolve | 422 | INVALID_STATUS | حالة لا تسمح |
| 🧾 Invoices — الفواتير | |||
| GET /invoices/{id} | 404 | NOT_FOUND | غير موجودة |
| POST /manage/invoices | 422 | VALIDATION_ERROR | amount, due_date مطلوبة |
| PUT /issue | /mark-paid | /cancel | 422 | INVALID_STATUS | حالة لا تسمح |
| ❤️ Favorites — المفضلة | |||
| DELETE /favorites/{id} | 404 | NOT_FOUND | غير موجود |
| POST /favorites | 422 | DUPLICATE_ENTRY | مضاف مسبقاً |
| 🔔 Notifications — الإشعارات | |||
| PUT /notifications/{id}/read | 404 | NOT_FOUND | غير موجود |
| PUT /notifications/preferences | 422 | VALIDATION_ERROR | بيانات غير صالحة |
| 🏅 Sponsors — الرعاة | |||
| GET /manage/sponsors/{id} | 404 | NOT_FOUND | غير موجود |
| POST /manage/sponsors | 422 | VALIDATION_ERROR | user_id, event_id مطلوبة |
| PUT /approve|activate|suspend | 422 | INVALID_STATUS | انتقال غير مسموح |
| 📜 Sponsor Contracts — عقود الرعاية | |||
| GET /sponsor-contracts/{id} | 404 | NOT_FOUND | غير موجود |
| POST /manage/sponsor-contracts | 422 | VALIDATION_ERROR | sponsor_id, package_id مطلوبة |
| PUT /approve|reject|complete | 422 | INVALID_STATUS | حالة لا تسمح |
| 💰 Sponsor Payments — مدفوعات الرعاية | |||
| GET /sponsor-payments/{id} | 404 | NOT_FOUND | غير موجودة |
| PUT /mark-paid | 422 | INVALID_STATUS | مدفوعة مسبقاً |
| 🎁 Sponsor Benefits & Assets — المزايا والأصول | |||
| GET /sponsor-benefits/{id} | 404 | NOT_FOUND | غير موجود |
| PUT /deliver | 422 | INVALID_STATUS | مسلّمة مسبقاً |
| PUT /approve|reject (assets) | 422 | INVALID_STATUS | ليس pending |
| POST /my/sponsor-assets | 422 | VALIDATION_ERROR | type, file مطلوبة |
| 📄 CMS — الصفحات والأسئلة والبانرات | |||
| GET /pages/{slug} | /faqs/{id} | 404 | NOT_FOUND | غير موجود |
| POST pages|faqs|banners | 422 | VALIDATION_ERROR | بيانات ناقصة |
| POST /manage/pages | 422 | DUPLICATE_ENTRY | slug مكرر |
| ⚙️ Lookups — فئات / مدن / إعدادات | |||
| GET /{id} | 404 | NOT_FOUND | غير موجود |
| POST categories|cities | 422 | VALIDATION_ERROR | name مطلوب |
| POST categories|cities | 422 | DUPLICATE_ENTRY | اسم مكرر |
الويب هوك (Webhooks)
نقاط استقبال الإشعارات من بوابات الدفع
| Method | Endpoint | الوصف | Auth |
|---|---|---|---|
| POST | /v1/webhooks/tap | Tap Webhook | noauth |
جدول الصلاحيات
جميع الصلاحيات المستخدمة
| المورد | الصلاحيات |
|---|---|
| events | view create update delete |
| sections | view create update delete |
| spaces | view create update delete |
| expo-services | view create update delete |
| categories | view create update delete |
| cities | view create update delete |
| settings | view update |
| profiles | view-all approve reject |
| visit-requests | view create update delete view-all approve reject |
| rental-requests | view create update delete view-all approve reject record-payment |
| rental-contracts | view view-all create update approve reject terminate sign |
| payments | view |
| sponsors | view-all create update delete approve reject |
| sponsor-packages | view create update delete |
| sponsor-contracts | view view-all create update approve reject |
| sponsor-payments | view view-all create |
| sponsor-benefits | view create update deliver |
| sponsor-assets | view create update delete approve |
| sponsor-exposure | view |
| ratings | create update delete view-all approve reject |
| support-tickets | view create view-all assign reply close delete |
| invoices | view view-all create update issue mark-paid cancel |
| notifications | view update |
| notification-preferences | view update |
| reports | view |
| pages / faqs / banners | view create update delete |