Maham Expo API

API Documentation

v1.0.0
Health

واجهة معارض محام

إدارة المعارض، المساحات، الإيجارات، الرعاة، والمزيد

إدارة المعارض

معارض، أقسام، مساحات

إيجارات وعقود

طلبات زيارة، إيجار، عقود

رعاة ومدفوعات

رعاة، عقود رعاية، فواتير

Base URL

http://api.mahamexpo.sa/api/v1

ملاحظة مهمة

هذه الخدمة لا تدير المصادقة محلياً — تتم عبر Auth Service.

الهيدرات المطلوبة

الهيدر القيمة مطلوب الوصف
Content-Typeapplication/jsonنوع المحتوى
Acceptapplication/jsonنوع الرد
AuthorizationBearer {token}للمحميةتوكن JWT من Auth Service
Accept-Languagear | enاختياريلغة الردود
X-Platformweb | mobile | apiاختياريمصدر الطلب — web / mobile / api

المصادقة

كيف تعمل المصادقة هنا؟

  1. احصل على توكن JWT من Auth Service
  2. أرسل التوكن في هيدر Authorization لهذه الخدمة
  3. هذه الخدمة تتحقق عبر Auth Service
مثال طلب محمي
curl -X GET http://api.mahamexpo.sa/api/v1/my/dashboard \
  -H "Accept: application/json" \
  -H "Authorization: Bearer YOUR_JWT_TOKEN"

صيغة الردود

رد ناجح2xx
{
  "success": true,
  "message": "Operation successful",
  "data": { ... }
}
رد مع ترقيم2xx
{
  "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
الرد200
{
  "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": "أريد جناح بواجهة أمامية"
}
الرد201
{
  "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"
}
الرد200
{
  "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}
الرد200
{
  "success": true,
  "message": "Ticket deleted successfully"
}

🌐 نقاط النهاية العامة

لا تحتاج مصادقة

المعارض

MethodEndpointالوصف
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

الفئات

MethodEndpointالوصف
GET/v1/categoriesقائمة الفئات
GET/v1/categories/{category}تفاصيل فئة
⚠️ 404 NOT_FOUND 429 RATE_LIMITED

المدن

MethodEndpointالوصف
GET/v1/citiesقائمة المدن
GET/v1/cities/{city}تفاصيل مدينة
⚠️ 404 NOT_FOUND 429 RATE_LIMITED

الخدمات

MethodEndpointالوصف
GET/v1/servicesقائمة الخدمات
⚠️ 429 RATE_LIMITED

الإحصائيات

MethodEndpointالوصف
GET/v1/statisticsإحصائيات عامة
GET/v1/statistics/eventsإحصائيات المعارض
GET/v1/statistics/spacesإحصائيات المساحات
⚠️ 429 RATE_LIMITED

التقييمات

MethodEndpointالوصف
GET/v1/ratingsقائمة التقييمات
GET/v1/ratings/summaryملخص التقييمات
⚠️ 404 NOT_FOUND 429 RATE_LIMITED

المحتوى العام

MethodEndpointالوصف
الصفحات
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

تسجيل مشاهدة

MethodEndpointالوصفAuth
POST/v1/track/viewتسجيل مشاهدة لعنصراختياري
مثال: 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

تسجيل حدث / إجراء

MethodEndpointالوصفAuth
POST/v1/track/actionتسجيل إجراءاختياري
مثال: 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

👤 خدمة ذاتية

تحتاج تسجيل دخول — بيانات المستخدم فقط

الملف التجاري

MethodEndpointالوصف
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

المفضلة

MethodEndpointالوصف
GET/v1/favoritesقائمة المفضلة
POST/v1/favoritesإضافة للمفضلة
DEL/v1/favorites/{favorite}إزالة من المفضلة
⚠️ 401 UNAUTHENTICATED 404 NOT_FOUND 422 DUPLICATE_ENTRY

الإشعارات

MethodEndpointالوصف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

تقييماتي

MethodEndpointالوصف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

تذاكر الدعم

MethodEndpointالوصف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

فواتيري

MethodEndpointالوصفPermission
GET/v1/invoicesقائمة فواتيريinvoices.view
GET/v1/invoices/{invoice}تفاصيل فاتورةinvoices.view
⚠️ 401 UNAUTHENTICATED 403 PERMISSION_DENIED 404 NOT_FOUND

طلبات الزيارة

MethodEndpointالوصف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

طلبات الإيجار

تنبيه: يتطلب ملف تجاري موثق
MethodEndpointالوصف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

💳 بوابة الدفع

بوابة الدفع: دفع الفواتير ومتابعة حالة المدفوعات
MethodEndpointالوصف
GET/v1/paymentsقائمة مدفوعاتي
GET/v1/payments/{payment}تفاصيل دفعة
POST/v1/payments/pay-invoiceبدء دفع فاتورة
GET/v1/payments/{payment}/statusالتحقق من حالة الدفع
Body — POST /v1/payments/pay-invoice
{
  "invoice_id": "uuid-here",
  "payment_method": "credit_card",
  "return_url": "https://app.mahamexpo.sa/payment/callback"
}
⚠️ 401 UNAUTHENTICATED 404 NOT_FOUND 422 INVALID_INVOICE

📱 الأجهزة

إشعارات Push: تسجيل الجهاز لاستقبال الإشعارات عبر FCM/APNs
MethodEndpointالوصف
GET/v1/devicesقائمة أجهزتي المسجلة
POST/v1/devicesتسجيل جهاز للإشعارات
DEL/v1/devicesإلغاء تسجيل جهاز
Body — POST /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/

بيانات مربوطة بحسابك

لوحة التحكم الموحدة

MethodEndpointالوصف
GET/v1/my/dashboardلوحة تحكم موحدة
⚠️ 401 UNAUTHENTICATED

مساحاتي

MethodEndpointالوصف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

زيارات واردة

MethodEndpointالوصف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

إيجارات واردة

MethodEndpointالوصف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

مدفوعاتي

MethodEndpointالوصف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

عقود الإيجار

MethodEndpointالوصف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

بيانات الرعاية

MethodEndpointالوصف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

نشاطاتي

MethodEndpointالوصف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
Response — Summary
{
  "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

👥 فريق العمل

ملاحظة: نفس البنية لفريق التاجر والمستثمر — يتغير البادئة فقط
MethodEndpointالوصف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

عملاء الرعاية

MethodEndpointالوصفPermission
GET/v1/my/sponsor-leadsقائمة العملاء المحتملينsponsor-leads.view
GET/v1/my/sponsor-leads/{id}تفاصيل عميلsponsor-leads.view

مخرجات الرعاية

MethodEndpointالوصف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 → يتخطى الكل

لوحة التحكم

MethodEndpointالوصفPermission
GET/v1/manage/dashboardلوحة تحكم إداريةreports.view
GET/v1/manage/statisticsإحصائيات مفصلةreports.view
⚠️ 401 UNAUTHENTICATED 403 PERMISSION_DENIED

المعارض

MethodEndpointالوصف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 required
name_ar string required
category_id uuid required
city_id uuid required
address string required
start_date date Y-m-d required
end_date date Y-m-d required
description string nullable
description_ar string nullable
address_ar string nullable
latitude numeric nullable
longitude numeric nullable
opening_time HH:mm nullable
closing_time HH:mm nullable
organizer_name string nullable
organizer_phone string nullable
organizer_email email nullable
website url nullable
status draft|published|ended|cancelled
is_featured boolean default: false
images[] file (image) nullable
images_360[] file (image) nullable

الأقسام والمساحات

MethodEndpointالوصف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 required
location_code string required
area_sqm numeric required
price_total numeric required
name_ar string nullable
description string nullable
description_ar string nullable
section_id uuid nullable
price_per_day numeric nullable
space_type booth|shop|office|hall|outdoor|other
payment_system full|installment|daily|monthly
rental_duration daily|weekly|monthly|full_event
floor_number integer nullable
status available|reserved|rented|unavailable
is_featured boolean default: false
latitude numeric nullable
longitude numeric nullable
address string nullable
address_ar string nullable
services[] array of uuid nullable
images[] file (image) nullable
images_360[] file (image) nullable
amenities[] array string nullable
amenities_ar[] array string nullable

خدمات المعارض

MethodEndpointالوصف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

فئات / مدن / إعدادات

MethodEndpointالوصف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 string
site_name_ar string
contact_email email
contact_phone string
support_email email
maintenance_mode boolean
allow_registration boolean
auto_approve_profiles boolean
max_visit_requests_per_day integer
max_rental_requests_per_merchant integer
default_currency string (SAR)
timezone string (Asia/Riyadh)
visit_fee numeric رسوم الزيارة
payment_enabled boolean
payment_gateway_mode test|live
payment_default_currency string (SAR)
payment_3d_secure boolean
sms_enabled boolean
sms_default_channel sms|whatsapp
sms_max_attempts_per_hour integer
sms_code_length integer
⚠️ 401 UNAUTHENTICATED 403 PERMISSION_DENIED 404 NOT_FOUND 422 VALIDATION_ERROR 422 DUPLICATE_ENTRY

المستخدمين والملفات التجارية

MethodEndpointالوصف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

طلبات الزيارة والإيجار

MethodEndpointالوصف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

عقود الإيجار

MethodEndpointالوصف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

الرعاة

MethodEndpointالوصفPermission
الرعاة — CRUD + approve/activate/suspend
GET/v1/manage/sponsorsListsponsors.view-all
POST/v1/manage/sponsorsCreatesponsors.create
GET/v1/manage/sponsors/{id}Showsponsors.view-all
PUT/v1/manage/sponsors/{id}Updatesponsors.update
DEL/v1/manage/sponsors/{id}Deletesponsors.delete
PUT/v1/manage/sponsors/{id}/approveApprovesponsors.approve
PUT/v1/manage/sponsors/{id}/activateActivatesponsors.approve
PUT/v1/manage/sponsors/{id}/suspendSuspendsponsors.reject
باقات — show/update/delete
GET/v1/manage/sponsor-packages/{id}Showsponsor-packages.view
PUT/v1/manage/sponsor-packages/{id}Updatesponsor-packages.update
DEL/v1/manage/sponsor-packages/{id}Deletesponsor-packages.delete
عقود — CRUD + approve/reject/complete
GET/v1/manage/sponsor-contractsListsponsor-contracts.view-all
POST/v1/manage/sponsor-contractsCreatesponsor-contracts.create
GET/v1/manage/sponsor-contracts/{id}Showsponsor-contracts.view-all
PUT/v1/manage/sponsor-contracts/{id}Updatesponsor-contracts.update
PUT/v1/manage/sponsor-contracts/{id}/approveApprovesponsor-contracts.approve
PUT/v1/manage/sponsor-contracts/{id}/rejectRejectsponsor-contracts.reject
PUT/v1/manage/sponsor-contracts/{id}/completeCompletesponsor-contracts.approve
مدفوعات — CRUD + mark-paid
GET/v1/manage/sponsor-paymentsListsponsor-payments.view-all
POST/v1/manage/sponsor-paymentsCreatesponsor-payments.create
GET/v1/manage/sponsor-payments/{id}Showsponsor-payments.view-all
PUT/v1/manage/sponsor-payments/{id}Updatesponsor-payments.create
PUT/v1/manage/sponsor-payments/{id}/mark-paidMark Paidsponsor-payments.create
مزايا — CRUD + deliver
GET/v1/manage/sponsor-benefitsListsponsor-benefits.view
POST/v1/manage/sponsor-benefitsCreatesponsor-benefits.create
GET/v1/manage/sponsor-benefits/{id}Showsponsor-benefits.view
PUT/v1/manage/sponsor-benefits/{id}Updatesponsor-benefits.update
PUT/v1/manage/sponsor-benefits/{id}/deliverDeliversponsor-benefits.deliver
أصول — view + approve/reject
GET/v1/manage/sponsor-assetsListsponsor-assets.view
GET/v1/manage/sponsor-assets/{id}Showsponsor-assets.view
PUT/v1/manage/sponsor-assets/{id}/approveApprovesponsor-assets.approve
PUT/v1/manage/sponsor-assets/{id}/rejectRejectsponsor-assets.approve
⚠️ 401 UNAUTHENTICATED 403 PERMISSION_DENIED 404 NOT_FOUND 422 VALIDATION_ERROR 422 INVALID_STATUS

التقييمات وتذاكر الدعم

MethodEndpointالوصفPermission
التقييمات
GET/v1/manage/ratingsListratings.view-all
GET/v1/manage/ratings/{id}Showratings.view-all
PUT/v1/manage/ratings/{id}/approveApproveratings.approve
PUT/v1/manage/ratings/{id}/rejectRejectratings.reject
DEL/v1/manage/ratings/{id}Deleteratings.delete
تذاكر الدعم
GET/v1/manage/support-ticketsListsupport-tickets.view-all
GET/v1/manage/support-tickets/{id}Showsupport-tickets.view-all
PUT/v1/manage/support-tickets/{id}/assignAssignsupport-tickets.assign
POST/v1/manage/support-tickets/{id}/replyReplysupport-tickets.reply
PUT/v1/manage/support-tickets/{id}/resolveResolvesupport-tickets.close
PUT/v1/manage/support-tickets/{id}/closeClosesupport-tickets.close
DEL/v1/manage/support-tickets/{id}Deletesupport-tickets.delete
⚠️ 401 UNAUTHENTICATED 403 PERMISSION_DENIED 404 NOT_FOUND 422 INVALID_STATUS

الفواتير

MethodEndpointالوصفPermission
GET/v1/manage/invoicesListinvoices.view-all
POST/v1/manage/invoicesCreateinvoices.create
GET/v1/manage/invoices/{id}Showinvoices.view-all
PUT/v1/manage/invoices/{id}Updateinvoices.update
PUT/v1/manage/invoices/{id}/issueإصدارinvoices.issue
PUT/v1/manage/invoices/{id}/mark-paidMark Paidinvoices.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)

MethodEndpointالوصفPermission
الصفحات — CRUD
GET/v1/manage/pagesListpages.view
POST/v1/manage/pagesCreatepages.create
GET/v1/manage/pages/{page}Showpages.view
PUT/v1/manage/pages/{page}Updatepages.update
DEL/v1/manage/pages/{page}Deletepages.delete
الأسئلة الشائعة — CRUD
GET/v1/manage/faqsListfaqs.view
POST/v1/manage/faqsCreatefaqs.create
GET/v1/manage/faqs/{faq}Showfaqs.view
PUT/v1/manage/faqs/{faq}Updatefaqs.update
DEL/v1/manage/faqs/{faq}Deletefaqs.delete
البانرات — CRUD
GET/v1/manage/bannersListbanners.view
POST/v1/manage/bannersCreatebanners.create
GET/v1/manage/banners/{banner}Showbanners.view
PUT/v1/manage/banners/{banner}Updatebanners.update
DEL/v1/manage/banners/{banner}Deletebanners.delete
⚠️ 401 UNAUTHENTICATED 403 PERMISSION_DENIED 404 NOT_FOUND 422 VALIDATION_ERROR 422 SLUG_ALREADY_EXISTS

📊 التحليلات

MethodEndpointالوصف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
Response — GET /v1/manage/analytics
{
  "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

كيفية الاستخدام

  1. حمّل ملف البيئة واستورده في Postman ← Environments
  2. حمّل المجموعة المطلوبة واستوردها في Postman ← Collections
  3. اختر البيئة من القائمة وابدأ الاختبار

متغيرات البيئة

Production:
auth_url = https://auth-service-api.mahamexpo.sa/api
expo_url = https://expo-service-api.mahamexpo.sa/api
Local:
auth_url = http://localhost:8001/api
expo_url = http://localhost:8002/api

Public API

30 requests

المعارض، المساحات، الفئات، المدن

تحميل المجموعة كاملة

Investor

48 requests

مساحاتي، زيارات واردة، إيجارات، عقود

تحميل المجموعة كاملة

Merchant

49 requests

ملف تجاري، مفضلة، زيارات، إيجارات

تحميل المجموعة كاملة

Sponsor

39 requests

بيانات الراعي، عقود، حزم، أصول

تحميل المجموعة كاملة

Supervisor

45 requests

عرض وموافقة: معارض، مساحات، طلبات

تحميل المجموعة كاملة

SuperAdmin

25 requests

صلاحيات كاملة: إعدادات النظام

تحميل المجموعة كاملة

Dashboard

22 requests

لوحة التحكم، إحصائيات، تقارير

تحميل المجموعة كاملة

Auth Service

51 requests

مصادقة، مستخدمين، أدوار، صلاحيات

تحميل المجموعة كاملة
المجموع: 9 مجموعات • 427 طلب • بيئتين

📚 المرجع

رموز الحالة HTTP

الرمزNameالوصف
200OKتمت بنجاح
201Createdتم الإنشاء
401Unauthorizedغير مصرح
403Forbiddenلا صلاحية
404Not Foundغير موجود
422Unprocessableخطأ تحقق
429Too Manyتجاوز الحد
500Server Errorخطأ خادم

📛 جدول رموز الأخطاء الشامل

كل مورد وأخطاؤه المحتملة

401 — Unauthenticated
{
  "success": false,
  "message": "Unauthenticated.",
  "error_code": "UNAUTHENTICATED"
}
403 — Permission Denied
{
  "success": false,
  "message": "You do not have permission.",
  "error_code": "PERMISSION_DENIED"
}
422 — Validation Error
{
  "success": false,
  "message": "The given data was invalid.",
  "error_code": "VALIDATION_ERROR",
  "errors": {
    "name": ["required"],
    "email": ["taken"]
  }
}
404 — Not Found
{
  "success": false,
  "message": "Resource not found.",
  "error_code": "NOT_FOUND"
}
422 — Business Logic
{
  "success": false,
  "message": "Space is unavailable.",
  "error_code": "SPACE_UNAVAILABLE"
}
429 — Rate Limited
{
  "success": false,
  "message": "Too many requests.",
  "error_code": "RATE_LIMITED"
}
المورد / العمليةHTTPرمز الخطأالوصف
🔒 Global — All Authenticated Endpoints
أي ريكوست محمي401UNAUTHENTICATEDالتوكن مفقود أو منتهي أو غير صالح
أي ريكوست يحتاج صلاحية403PERMISSION_DENIEDليس لديك الصلاحية المطلوبة
أي ريكوست429RATE_LIMITEDتجاوزت حد الطلبات
أي ريكوست500SERVER_ERRORخطأ داخلي
ريكوست يتواصل مع Auth503AUTH_SERVICE_UNAVAILABLEAuth Service غير متاح
📅 Events — المعارض
GET /events/{event}404NOT_FOUNDالمعرض غير موجود
POST /manage/events422VALIDATION_ERRORname, start_date, end_date, city_id مطلوبة
POST /manage/events422DUPLICATE_ENTRYاسم مكرر
📐 Sections & Spaces — الأقسام والمساحات
GET /{section|space}404NOT_FOUNDغير موجود
POST sections|spaces422VALIDATION_ERRORname, event_id, type, price مطلوبة
POST rental-requests422SPACE_UNAVAILABLEمحجوزة أو غير متاحة
👤 Business Profiles — الملفات التجارية
GET /profile404NOT_FOUNDلا يوجد ملف تجاري
POST /profile422VALIDATION_ERRORcompany_name مطلوب
POST /profile422DUPLICATE_ENTRYملف موجود مسبقاً
rental-requests/*403PROFILE_NOT_VERIFIEDملف غير موثق (مطلوب للإيجار)
PUT /manage/profiles/{id}/approve422INVALID_STATUSحالة غير قابلة للقبول
🎫 Visit Requests — طلبات الزيارة
GET /visit-requests/{id}404NOT_FOUNDطلب غير موجود
POST /visit-requests422VALIDATION_ERRORevent_id, visit_date مطلوبة
PUT /approve | /reject422INVALID_STATUSحالة ليست pending
🏪 Rental Requests — طلبات الإيجار
GET /rental-requests/{id}404NOT_FOUNDطلب غير موجود
POST /rental-requests403PROFILE_NOT_VERIFIEDملف غير موثق
POST /rental-requests422VALIDATION_ERRORspace_id, event_id مطلوبة
POST /rental-requests422SPACE_UNAVAILABLEالمساحة محجوزة
PUT /approve | /reject422INVALID_STATUSحالة ليست pending
POST /payment422INVALID_STATUSطلب غير مقبول
📝 Rental Contracts — عقود الإيجار
GET /rental-contracts/{id}404NOT_FOUNDالعقد غير موجود
POST /manage/rental-contracts422VALIDATION_ERRORrental_request_id مطلوب
PUT /sign422CONTRACT_ALREADY_SIGNEDالعقد موقع
PUT /approve|reject|terminate422INVALID_STATUSحالة غير قابلة
⭐ Ratings — التقييمات
GET /ratings/{id}404NOT_FOUNDغير موجود
POST /ratings422VALIDATION_ERRORrateable_id, rating مطلوبة
POST /ratings422DUPLICATE_ENTRYمكرر
PUT /manage/approve|reject422INVALID_STATUSليس pending
🎟️ Support Tickets — تذاكر الدعم
GET /support-tickets/{id}404NOT_FOUNDغير موجودة
POST /support-tickets422VALIDATION_ERRORsubject, message مطلوبة
PUT /close | /reopen | /resolve422INVALID_STATUSحالة لا تسمح
🧾 Invoices — الفواتير
GET /invoices/{id}404NOT_FOUNDغير موجودة
POST /manage/invoices422VALIDATION_ERRORamount, due_date مطلوبة
PUT /issue | /mark-paid | /cancel422INVALID_STATUSحالة لا تسمح
❤️ Favorites — المفضلة
DELETE /favorites/{id}404NOT_FOUNDغير موجود
POST /favorites422DUPLICATE_ENTRYمضاف مسبقاً
🔔 Notifications — الإشعارات
PUT /notifications/{id}/read404NOT_FOUNDغير موجود
PUT /notifications/preferences422VALIDATION_ERRORبيانات غير صالحة
🏅 Sponsors — الرعاة
GET /manage/sponsors/{id}404NOT_FOUNDغير موجود
POST /manage/sponsors422VALIDATION_ERRORuser_id, event_id مطلوبة
PUT /approve|activate|suspend422INVALID_STATUSانتقال غير مسموح
📜 Sponsor Contracts — عقود الرعاية
GET /sponsor-contracts/{id}404NOT_FOUNDغير موجود
POST /manage/sponsor-contracts422VALIDATION_ERRORsponsor_id, package_id مطلوبة
PUT /approve|reject|complete422INVALID_STATUSحالة لا تسمح
💰 Sponsor Payments — مدفوعات الرعاية
GET /sponsor-payments/{id}404NOT_FOUNDغير موجودة
PUT /mark-paid422INVALID_STATUSمدفوعة مسبقاً
🎁 Sponsor Benefits & Assets — المزايا والأصول
GET /sponsor-benefits/{id}404NOT_FOUNDغير موجود
PUT /deliver422INVALID_STATUSمسلّمة مسبقاً
PUT /approve|reject (assets)422INVALID_STATUSليس pending
POST /my/sponsor-assets422VALIDATION_ERRORtype, file مطلوبة
📄 CMS — الصفحات والأسئلة والبانرات
GET /pages/{slug} | /faqs/{id}404NOT_FOUNDغير موجود
POST pages|faqs|banners422VALIDATION_ERRORبيانات ناقصة
POST /manage/pages422DUPLICATE_ENTRYslug مكرر
⚙️ Lookups — فئات / مدن / إعدادات
GET /{id}404NOT_FOUNDغير موجود
POST categories|cities422VALIDATION_ERRORname مطلوب
POST categories|cities422DUPLICATE_ENTRYاسم مكرر

الويب هوك (Webhooks)

نقاط استقبال الإشعارات من بوابات الدفع

MethodEndpointالوصفAuth
POST/v1/webhooks/tapTap Webhooknoauth
يتم التحقق من التوقيع تلقائياً — لا يحتاج توثيق

جدول الصلاحيات

جميع الصلاحيات المستخدمة

الموردالصلاحيات
eventsview create update delete
sectionsview create update delete
spacesview create update delete
expo-servicesview create update delete
categoriesview create update delete
citiesview create update delete
settingsview update
profilesview-all approve reject
visit-requestsview create update delete view-all approve reject
rental-requestsview create update delete view-all approve reject record-payment
rental-contractsview view-all create update approve reject terminate sign
paymentsview
sponsorsview-all create update delete approve reject
sponsor-packagesview create update delete
sponsor-contractsview view-all create update approve reject
sponsor-paymentsview view-all create
sponsor-benefitsview create update deliver
sponsor-assetsview create update delete approve
sponsor-exposureview
ratingscreate update delete view-all approve reject
support-ticketsview create view-all assign reply close delete
invoicesview view-all create update issue mark-paid cancel
notificationsview update
notification-preferencesview update
reportsview
pages / faqs / bannersview create update delete