v1 · REST + Webhooks

ڈیولپر دستاویزات

ایک API پر کسٹمر، ڈرائیور، اور مرچنٹ ایپس بنائیں۔ ریستوران، مینوز، آرڈرز، اور ڈرائیورز پڑھیں اور لکھیں؛ دستخط شدہ webhooks کے ذریعے حقیقی وقت کے ایونٹس وصول کریں۔ ہر چیز ٹوکن مالک تک محدود ہے۔

🛍️ کسٹمر ایپ 🛵 ڈرائیور ایپ 🧑‍🍳 مرچنٹ ایپ

مارکیٹ پلیس کے لیے بنا رہے ہیں؟ ایپ ڈویلپر دستاویزات →  ·  تھیم ڈویلپر دستاویزات →

نیا ہمارا Dev MCP سرور کسی بھی MCP اہل AI ٹول کو پلیٹ فارم ماہر بنا دیتا ہے۔ learn_platform اسے تیار کرتا ہے، get_liquid_reference اسے مستند وائٹ لسٹ دیتا ہے، اور validate_theme اس کے آؤٹ پٹ پر مارکیٹ پلیس کی اپنی جانچیں چلاتا ہے — مکمل learn → build → validate لوپ، اپنے ایڈیٹر سے نکلے بغیر۔ ایک کمانڈ میں جوڑیں →

آغاز کریں

اپنے ڈیش بورڈ سے اس کے تحت ایک API ٹوکن بنائیں API ٹوکنز اور Webhooks. منتخب کریں read اور/یا write صلاحیتیں اور ٹوکن کاپی کریں — یہ صرف ایک بار دکھایا جاتا ہے۔

بیس URL: https://mail.menubarcode.com/api/v1

ایک فوری جانچ کہ آپ کا ٹوکن کام کرتا ہے:

curl https://mail.menubarcode.com/api/v1/restaurants \
  -H "Authorization: Bearer YOUR_TOKEN"
روٹ GET https://mail.menubarcode.com/api/v1 دستیاب اینڈ پوائنٹس کا مشین ریڈایبل اشاریہ واپس کرتا ہے (کوئی توثیق درکار نہیں)۔ مشین ریڈایبل OpenAPI 3.1 اسپیک (JSON) — لائیو راؤٹر سے تیار کیا گیا، اس لیے یہ ہمیشہ تعینات کردہ API سے میل کھاتا ہے۔

توثیق

ہر درخواست پر اپنا ٹوکن Bearer ہیڈر کے طور پر بھیجیں:

Authorization: Bearer YOUR_TOKEN

فوری ٹیسٹس کے لیے آپ اس کے بجائے پاس کر سکتے ہیں ?api_token=YOUR_TOKEN بطور query پیرامیٹر، لیکن ہیڈر کو سختی سے ترجیح دی جاتی ہے تاکہ ٹوکنز کبھی لاگز میں لیک نہ ہوں۔

صلاحیتگرانٹس
readتمام GET اینڈ پوائنٹس (ہر وسیلہ)۔
writeتمام ترمیم کرنے والے اینڈ پوائنٹس (اور، سُپر سیٹ ہونے کے ناطے، تمام ریڈز)۔

محدود دائرہ کار والے ٹوکنز

موٹے سے آگے read/write, ایک ٹوکن کو مخصوص وسائل تک محدود کیا جا سکتا ہے resource:action صلاحیتیں۔ وسائل: restaurants, menu, orders, customers, analytics, drivers, webhooks; ایکشنز read, write. ڈیش بورڈ میں ٹوکن بناتے وقت انہیں منتخب کریں۔

مثال ٹوکنکر سکتا ہے
["orders:write"]صرف آرڈرز پڑھیں + لکھیں (ایک POS انضمام)۔
["menu:read"]مینو پڑھیں؛ اور کچھ نہیں۔
["orders:read","analytics:read"]ایک رپورٹنگ ڈیش بورڈ۔

کوریج کے اصول: * سب کچھ دیتا ہے؛ ایک :write دائرہ کار اپنا بھی دیتا ہے :read; موٹا read/write اس طرح برتاؤ کرتے ہیں *:read / *:write. مطلوبہ دائرہ کار سے محروم درخواست واپس کرتی ہے 403. لیگیسی read/write ٹوکنز غیر متاثر رہتے ہیں۔

ٹوکنز آرام کی حالت میں ہیش کیے جاتے ہیں (SHA-256) اور اختیاری انقضا رکھ سکتے ہیں۔ ڈیش بورڈ سے کسی بھی ٹوکن کو فوری منسوخ کریں۔

ریٹ لمٹس

API اجازت دیتا ہے 120 درخواستیں فی منٹ فی ٹوکن۔ اس سے تجاوز کرنے پر واپس کرتا ہے 429 Too Many Requests کے ساتھ Retry-After ہیڈر۔ معیاری ریٹ لِمِٹ ہیڈرز ہر جواب میں شامل ہوتے ہیں:

X-RateLimit-Limit: 120
X-RateLimit-Remaining: 118

خرابیاں

ہر خرابی جو کسی /api/v1 روٹ پر ہوتی ہے روایتی HTTP اسٹیٹس کوڈز اور ایک واحد JSON envelope واپس کرتی ہے — ایک انسانی message, ایک مستحکم مشین code, اور (توثیق پر) فی فیلڈ errors نقشہ

{ "message": "Invalid or expired token.", "code": "unauthenticated" }

{ "message": "The given data was invalid.",
  "code": "validation_failed",
  "errors": { "title": ["The title field is required."] } }
حیثیتcodeمعنی
401unauthenticatedغائب، غلط، یا میعاد ختم شدہ ٹوکن۔
403forbiddenٹوکن میں مطلوبہ صلاحیت/دائرہ کار نہیں ہے۔
404not_foundوسیلہ نہیں ملا یا ٹوکن کی ملکیت نہیں۔
422validation_failedتوثیق ناکام (دیکھیں errors).
429rate_limitedریٹ لِمِٹ سے تجاوز ہو گیا۔
مشین کو پارس کریں code, انسان کو نہیں message — پیغامات دوبارہ لکھے یا لوکلائز کیے جا سکتے ہیں؛ کوڈز مستحکم ہیں۔
ایسا وسیلہ طلب کرنا جس کے آپ مالک نہیں، واپس کرتا ہے 404, نہیں 403 — API کبھی کسی دوسرے مالک کے ڈیٹا کے وجود کی تصدیق نہیں کرتا۔

پیجینیشن

لسٹ اینڈ پوائنٹس Laravel طرز کے صفحہ بند envelopes واپس کرتے ہیں۔ استعمال کریں ?page= صفحات میں چلنے کے لیے query پیرامیٹر۔

{
  "data": [ ... ],
  "current_page": 1,
  "last_page": 3,
  "per_page": 20,
  "total": 47
}

ریستوران اور مینو پڑھیں

GET /restaurants

ٹوکن کی ملکیت والے ریستورانوں کی فہرست، صفحہ بند (20 فی صفحہ)۔

{
  "data": [
    { "id": 12, "title": "Nova Bistro", "slug": "nova-bistro",
      "url": "https://.../nova-bistro", "template": "linen",
      "created_at": "2026-06-01T10:22:00+00:00" }
  ],
  "current_page": 1, "last_page": 1, "total": 1
}
GET /restaurants/{id}

ایک واحد ریستوران اس کے مینو زمروں اور آئٹم شمار کے ساتھ۔

GET /restaurants/{id}/menu

مکمل فعال مینو، زمرے کے لحاظ سے گروپ شدہ۔

[
  { "id": 3, "name": "Starters",
    "items": [
      { "id": 88, "name": "Bruschetta", "price": 6.50,
        "is_sold_out": false, "is_popular": true, "is_vegan": true,
        "is_halal": true, "calories": 210 }
    ]
  }
]

آرڈرز

GET /restaurants/{id}/orders

آرڈرز نئے سے پہلے، صفحہ بند (30/صفحہ)۔ فلٹر کریں ?status=.

GET /restaurants/{id}/orders/{orderId}

مکمل آرڈر تفصیل لائن آئٹمز، اضافی چیزوں، ڈرائیور، اور ڈیلیوری ٹائم لائن کے ساتھ۔

POST /restaurants/{id}/orders لکھیں

آرڈر بنائیں — اسی طرح ایک کسٹمر ایپ کارٹ جمع کراتا ہے (مرچنٹ کا بیک اینڈ ٹوکن رکھتا ہے)۔ ہر آئٹم کی ریستوران کے لائیو مینو کے خلاف توثیق کی جاتی ہے؛ فروخت شدہ یا اجنبی آئٹمز پورے آرڈر کو مسترد کر دیتے ہیں (422)۔ چلاتا ہے order.created اور مکمل آرڈر واپس کرتا ہے بشمول اس کا track_token.

curl -X POST https://mail.menubarcode.com/api/v1/restaurants/12/orders \
  -H "Authorization: Bearer YOUR_TOKEN" -H "Content-Type: application/json" \
  -d '{
    "type": "delivery",
    "customer_name": "A. Idriss",
    "phone": "+15551234567",
    "address": "9 Cedar Road",
    "tip_amount": 3.00,
    "note": "Ring the bell",
    "source": "customer_app",
    "items": [
      { "item_id": 88, "quantity": 2, "variation": 5, "extras": [12], "note": "no onion" },
      { "item_id": 91, "quantity": 1 }
    ]
  }'

آرڈر type میں سے ایک ہے on-table, takeaway, delivery. کے لیے on-table پاس کریں table_number; کے لیے delivery پاس کریں address.

Idempotency۔ ایک بھیجیں Idempotency-Key ہیڈر (یا ایک باڈی client_uuid) کسی بھی order-create کال پر۔ اسی key کے ساتھ دوبارہ کوشش اصل آرڈر واپس کرتی ہے اور کبھی نقل نہیں بناتی — چھوٹے ہوئے جوابات اور آف لائن ری پلے کے لیے محفوظ۔ Keys فی ریستوران محدود ہیں۔

PUT /restaurants/{id}/orders/{orderId}/status لکھیں

کچن اسٹیٹس اپ ڈیٹ کریں (new|preparing|ready|delivered|completed|cancelled). چلاتا ہے order.status_changed.

Storefront API (فی ریستوران ٹوکن)

ایک الگ، عوامی رخ والا API جس کی توثیق ایک فی ریستوران اسٹور فرنٹ ٹوکن بھیجا جاتا ہے بطور X-Storefront-Token (مالک کا Bearer ٹوکن نہیں)۔ انہیں اپنے ڈیش بورڈ سے جاری کریں؛ ہر ٹوکن صرف اپنے ہی ریستوران تک پہنچ سکتا ہے۔ Read دائرہ کار ہے menu:read; آرڈرز دینے کے لیے درکار ہے order:write دائرہ کار

GET /storefront/menu

ٹوکن کے ریستوران کا مکمل مینو (ورائٹنٹس، اضافی چیزیں، گروپس، گیلری)۔

GET /storefront/restaurant

ٹوکن کے ریستوران کے لیے بنیادی ریستوران معلومات۔

POST /storefront/orders order:write

کسی گاہک کی جانب سے کارٹ جمع کرائیں۔ سرور پر قیمت لگائی جاتی ہے اور غیر ادا شدہ (گاہک پہنچنے پر ادائیگی کرتا ہے)؛ takeaway یا on-table صرف۔ ہر آئٹم کی لائیو مینو کے خلاف توثیق کی جاتی ہے — فروخت شدہ یا اجنبی آئٹمز پورے آرڈر کو مسترد کر دیتے ہیں (422)۔ حدیں: 40 آئٹمز/آرڈر، 30 مقدار/لائن۔ اختیاری coupon_code سرور سائیڈ پر مالک کی رعایت لاگو کرتا ہے۔ چلاتا ہے order.created اور واپس کرتا ہے track_token + continue_url.

curl -X POST https://mail.menubarcode.com/api/v1/storefront/orders \
  -H "X-Storefront-Token: YOUR_STOREFRONT_TOKEN" -H "Content-Type: application/json" \
  -d '{
    "type": "takeaway",
    "customer_name": "A. Idriss",
    "phone": "+15551234567",
    "coupon_code": "WELCOME10",
    "items": [
      { "item_id": 88, "quantity": 2, "variation": 5, "extras": [12] },
      { "item_id": 91, "quantity": 1 }
    ]
  }'

تجزیات اور گاہک

GET /restaurants/{id}/analytics

تاریخ کی رینج پر فروخت کا خلاصہ (?from=YYYY-MM-DD&to=YYYY-MM-DD, ڈیفالٹ آخری 30 دن): اسٹیٹس/قسم کے لحاظ سے آرڈر شمار، مجموعی اور ادا شدہ آمدنی، اوسط آرڈر ویلیو، اور ٹاپ آئٹمز۔

{
  "range": { "from": "2026-06-02", "to": "2026-07-02" },
  "orders": { "total": 214, "paid": 198, "by_status": {...}, "by_type": {...} },
  "revenue": { "gross": 8420.50, "paid": 7990.00, "avg_order_value": 39.35 },
  "top_items": [ { "item_id": 88, "name": "Margherita", "quantity": 143 } ]
}
GET /restaurants/{id}/customers

ریستوران کی گاہک فہرست (CRM)، صفحہ بند۔ فلٹر کریں ?search=.

ڈرائیورز کا نظم کریں لکھیں

ڈرائیورز آپ کے اور (اختیاری طور پر) ایک ریستوران کے ہوتے ہیں۔ ڈرائیور بنانا یا گھمانا ایک خام واپس کرتا ہے ڈرائیور ٹوکن بالکل ایک بار — اسے ڈرائیور کی ایپ کو دیں؛ وہ اس سے توثیق کرتے ہیں (نیچے دیکھیں)۔

GET /drivers
POST /drivers
curl -X POST https://mail.menubarcode.com/api/v1/drivers \
  -H "Authorization: Bearer YOUR_TOKEN" -H "Content-Type: application/json" \
  -d '{"name":"Alex","phone":"+15550001111","restaurant_id":12}'

# → { "id": 7, "name": "Alex", ..., "token": "RAW_DRIVER_TOKEN_SHOWN_ONCE" }
PUT /drivers/{id}
DELETE /drivers/{id}
POST /drivers/{id}/rotate-token

پرانے ٹوکن کو غیر مؤثر کرتا ہے اور ایک تازہ واپس کرتا ہے۔

ڈیلیوری تفویض کریں اور ٹریک کریں

GET /restaurants/{id}/deliveries

ڈیلیوری آرڈرز، جن کو اس سے فلٹر کیا جا سکتا ہے ?delivery_status= اور ?driver_id=.

POST /restaurants/{id}/orders/{orderId}/assign لکھیں

ڈرائیور تفویض کریں {"driver_id": 7}. مقرر کرتا ہے delivery_status=assigned اور چلاتا ہے order.driver_assigned.

PUT /restaurants/{id}/orders/{orderId}/delivery-status لکھیں

ڈیلیوری مرحلے کو اوور رائیڈ کریں: pending | assigned | picked_up | out_for_delivery | delivered | failed.

ڈرائیور ایپ API

ڈرائیور ایپ ایک سے توثیق کرتی ہے ڈرائیور ٹوکن (مالک ٹوکن نہیں) جو اوپر جاری کیا گیا۔ بیس پاتھ https://mail.menubarcode.com/api/v1/driver. ہر جواب اسی ایک ڈرائیور تک محدود ہوتا ہے۔

Authorization: Bearer RAW_DRIVER_TOKEN
GET /driver/me

توثیق شدہ ڈرائیور کی پروفائل۔

GET /driver/deliveries

اس ڈرائیور کو تفویض کردہ آرڈرز۔ شامل کریں ?active=1 ڈیلیور شدہ/ناکام چھپانے کے لیے۔

PUT /driver/deliveries/{orderId}/status

ڈیلیوری آگے بڑھائیں: {"delivery_status":"out_for_delivery"} پھر "delivered" یا "picked_up" / "failed", اختیاری note). مالک اینڈ پوائنٹ جیسے ہی webhooks چلاتا ہے۔

PUT /driver/location

لائیو پوزیشن پش کریں: {"lat":25.2048,"lng":55.2708}. ڈیلیوری کے لیے نکلنے کے دوران گاہک کے ٹریکنگ ویو پر ظاہر ہوتی ہے۔

کسٹمر اکاؤنٹس

A خود مختار کسٹمر ایپ اپنے صارفین کی توثیق فی گاہک ٹوکن سے کرتی ہے (Sanctum طرز: متعدد آلات، انفرادی طور پر قابلِ منسوخی)۔ کوئی مالک ٹوکن شامل نہیں۔ گاہک فی ریستوران محدود ہیں، اس لیے توثیق اس کے تحت ہے /restaurants/{id}/customer/…. پہلے عوامی اینڈ پوائنٹ سے مینو براؤز کریں:

GET /menu/{restaurantId} عوامی

فعال مینو، زمرے کے لحاظ سے گروپ شدہ (فروخت شدہ آئٹمز خارج)۔ کوئی توثیق نہیں۔

رجسٹر / لاگ اِن

POST /restaurants/{id}/customer/register
POST /restaurants/{id}/customer/login
curl -X POST https://mail.menubarcode.com/api/v1/restaurants/12/customer/login \
  -H "Content-Type: application/json" \
  -d '{"email":"sam@example.com","password":"secret123","device":"iPhone 15"}'

# → { "token": "RAW_CUSTOMER_TOKEN", "customer": { "id": 42, "name": "Sam", ... } }

بغیر پاس ورڈ (SMS OTP)

POST /restaurants/{id}/customer/otp/request
POST /restaurants/{id}/customer/otp/verify

فون نمبر کے لیے کوڈ طلب کریں، پھر اس کی تصدیق کریں۔ تصدیق گاہک کو تلاش یا تخلیق کرتی ہے اور ٹوکن واپس کرتی ہے۔ توثیق اینڈ پوائنٹس ریٹ لِمِٹڈ ہیں (login/register 10/منٹ، OTP درخواست 6/منٹ)۔

کسٹمر ایپ API

کسٹمر ٹوکن سے توثیق کریں۔ بیس پاتھ https://mail.menubarcode.com/api/v1/customer. ہر چیز توثیق شدہ گاہک تک محدود ہے — آرڈر باڈی کبھی کسی دوسرے گاہک کی id جعلی نہیں بنا سکتی۔

Authorization: Bearer RAW_CUSTOMER_TOKEN
GET /customer/me
PUT /customer/me

پروفائل پڑھیں / اپ ڈیٹ کریں (نام، ای میل، فون، سالگرہ، رضامندیاں)۔

POST /customer/orders

اس گاہک کے طور پر آرڈر دیں (مرچنٹ create اینڈ پوائنٹ جیسی ہی آئٹم شکل؛ شناخت ٹوکن سے لی جاتی ہے)۔ آرڈر اس کے ساتھ واپس کرتا ہے track_token.

GET /customer/orders

گاہک کی اپنی آرڈر تاریخ، صفحہ بند۔

GET /customer/addresses
POST /customer/addresses
DELETE /customer/addresses/{id}

محفوظ ڈیلیوری پتے (پہلا ڈیفالٹ بن جاتا ہے؛ معاون ہے lat/lng).

POST /customer/logout

درخواست کے لیے استعمال ہونے والا ٹوکن منسوخ کرتا ہے (صرف وہی آلہ)۔

آرڈر ٹریکنگ عوامی

کوئی توثیق نہیں — رسائی آرڈر کے ناقابلِ اندازہ کے ذریعے محدود ہے track_token (جب آرڈر بنایا جاتا ہے تو واپس کیا جاتا ہے)۔ یہ چلاتا ہے ایک کسٹمر ایپ لائیو ٹریکنگ اسکرین۔

GET /track/{token}
{
  "id": 5501, "status": "preparing", "delivery_status": "out_for_delivery",
  "is_paid": true, "total": 42.00,
  "timeline": { "preparing_at": "...", "out_for_delivery_at": "..." },
  "items": [ { "name": "Margherita", "quantity": 2 } ],
  "driver": { "name": "Alex", "lat": 25.2, "lng": 55.27, "location_updated_at": "..." }
}

ڈرائیور بلاک (لائیو کوآرڈینیٹس کے ساتھ) صرف تب ظاہر ہوتا ہے جب آرڈر اٹھا لیا جائے / ڈیلیوری کے لیے نکل جائے۔

عملہ لاگ اِن

A اسٹاف ایپ (POS / KDS / ویٹر) ہر عملہ رکن کی توثیق فی عملہ ٹوکن سے کرتی ہے۔ دو راستے ڈیش بورڈ کی عکاسی کرتے ہیں: ای میل + پاس ورڈ، یا ایک فوری عددی PIN مشترکہ کچن ٹیبلٹس کے لیے۔ عملہ فی ریستوران محدود ہے۔

POST /restaurants/{id}/staff/login
POST /restaurants/{id}/staff/pin
curl -X POST https://mail.menubarcode.com/api/v1/restaurants/12/staff/pin \
  -H "Content-Type: application/json" -d '{"pin":"4321","device":"Kitchen iPad"}'

# → { "token": "RAW_STAFF_TOKEN",
#     "staff": { "id": 3, "role": "kitchen", "permissions": ["kds"] } }

جواب عملہ رکن کی مؤثر فہرست دیتا ہے اجازتیں — ایک ذیلی مجموعہ orders, menu_edit, coupons, analytics, kds, customers ان کے کردار سے اخذ کردہ (منیجر / کیشیئر / کچن / ویٹر) نیز کوئی بھی فی عملہ اوور رائیڈز۔ اینڈ پوائنٹس اجازت سے محدود ہیں (403 بصورت دیگر)۔

عملہ ایپ API

عملہ ٹوکن سے توثیق کریں۔ بیس پاتھ https://mail.menubarcode.com/api/v1/staff. تمام اعمال عملہ رکن کے ریستوران تک محدود ہیں۔

Authorization: Bearer RAW_STAFF_TOKEN
GET /staff/me

کردار اور اجازت فہرست کے ساتھ پروفائل۔

GET /staff/orders orders
PUT /staff/orders/{orderId}/status orders

آرڈرز کی فہرست دیں اور کچن اسٹیٹس اپ ڈیٹ کریں۔ درکار ہے orders اجازت۔

GET /staff/kds kds

لائیو کچن ٹکٹس، آرڈر کے لحاظ سے گروپ شدہ، عملہ رکن کے اسٹیشن تک فلٹر شدہ (یا ?station_id=). صرف وہ آئٹمز دکھاتا ہے جو ابھی بھی queued|preparing|ready.

PUT /staff/kds/items/{itemId}/bump kds
PUT /staff/kds/items/{itemId}/recall kds

آگے بڑھائیں (queued → preparing → ready → served) یا ایک KDS اسٹیٹس پیچھے جائیں۔ پیرنٹ آرڈر کا اسٹیٹس خود بخود دوبارہ سِنک ہو جاتا ہے۔

POST /staff/menu/items menu_edit
PUT /staff/menu/items/{itemId} menu_edit
DELETE /staff/menu/items/{itemId} menu_edit
PATCH /staff/menu/items/{itemId}/sold-out menu_edit
POST /staff/menu/categories menu_edit

فلور سے مینو میں ترمیم کریں (منیجرز)۔ مرچنٹ مینو اینڈ پوائنٹس جیسے ہی payloads، عملہ رکن کے ریستوران تک محدود۔

GET /staff/analytics analytics

عملہ رکن کے ریستوران کے لیے فروخت کا خلاصہ (مرچنٹ analytics اینڈ پوائنٹ جیسی ہی شکل؛ ?from=&to=).

POST /staff/logout

اس آلے کا ٹوکن منسوخ کرتا ہے۔

Webhooks — سیٹ اپ

ڈیش بورڈ سے اس کے تحت اینڈ پوائنٹس رجسٹر کریں API ٹوکنز اور Webhooks. منتخب کریں کہ ہر اینڈ پوائنٹ کون سے ایونٹس وصول کرتا ہے۔ محفوظ کرنے پر آپ کو فی اینڈ پوائنٹ ملتا ہے سائننگ سیکرٹ; استعمال کریں ٹیسٹ ایک بھیجنے کے لیے بٹن ping. اس کا secret کھوئے بغیر ڈیلیوری روکنے کے لیے اینڈ پوائنٹ کو روکیں۔

آپ کے اینڈ پوائنٹ کو اس کے ساتھ جواب دینا چاہیے 2xx اسٹیٹس تیزی سے (10 سیکنڈ کے اندر)۔ کوئی بھی دوسرا اسٹیٹس — یا ٹائم آؤٹ — ناکامی سمجھا جاتا ہے اور دوبارہ کوشش کی جاتی ہے۔

اینڈ پوائنٹس کا نظم اس طرح بھی کیا جا سکتا ہے پروگرام کے ذریعے (Zapier/Make REST-Hooks کے لیے) ایک کے ساتھ webhooks:write ٹوکن:

GET    /api/v1/webhook-endpoints            # list your endpoints
POST   /api/v1/webhook-endpoints            # {"url":"https://…","events":["order.created"]} → 201 {id, secret, …}
DELETE /api/v1/webhook-endpoints/{id}       # unsubscribe → 204

یہ secret واپس کیا جاتا ہے صرف تخلیق پر — دستخط کی تصدیق کے لیے اسے محفوظ کریں۔ url عوامی HTTPS اینڈ پوائنٹ ہونا ضروری ہے (SSRF محفوظ)؛ events نیچے دی گئی فہرست سے ہونا ضروری ہے (یا *).

Webhook ایونٹس

ایونٹچلتا ہے جب
order.createdایک نیا آرڈر دیا جاتا ہے (ڈیش بورڈ یا API)۔
order.status_changedکسی آرڈر کا کچن اسٹیٹس تبدیل ہوتا ہے (ڈیش بورڈ، POS، یا API)۔
order.paidایک آرڈر مکمل ادا شدہ نشان زد ہوتا ہے (گیٹ وے یا اسپلٹ بل)۔
order.driver_assignedکسی ڈیلیوری کو ایک ڈرائیور تفویض کیا جاتا ہے۔
order.out_for_deliveryڈرائیور گاہک کی طرف روانہ ہے۔
order.deliveredڈیلیوری مکمل ہو گئی۔
order.delivery_failedڈیلیوری مکمل نہیں ہو سکی۔
refund.completedکسی آرڈر کی رقم واپسی مکمل ہو گئی ہے۔
reservation.createdایک ٹیبل ریزرویشن بنا دیا گیا ہے۔
reservation.cancelledایک ٹیبل ریزرویشن منسوخ کر دیا گیا ہے۔
customer.createdایک نیا کسٹمر ریکارڈ بن گیا ہے۔
shift.openedایک کیش ڈراور / POS شفٹ کھول دی گئی ہے۔
shift.closedایک کیش ڈراور / POS شفٹ بند کر دی گئی ہے۔
menu.updatedایک مینو آئٹم یا زمرہ بنایا، اپ ڈیٹ، یا حذف کیا جاتا ہے (کوئی بھی سرفیس)۔ Payload: {restaurant_id, change, entity, id}.
entitlement.changedورک اسپیس کے لیے کوئی فیچر استحقاق دیا یا منسوخ کیا جاتا ہے (پلان تبدیلی، ایڈ آن، ایپ install/uninstall، ایڈمن اوور رائیڈ)۔ Payload: {action, feature_key, source_type, source_id, user_id, occurred_at} جہاں action ہے granted یا revoked.
subscription.*سبسکرپشن لائف سائیکل: subscription.paused, .resumed, .renewed, .expired, .plan_changed, .past_due, .expiring, .trial_ending.
app.uninstalledایک مارکیٹ پلیس ایپ ان انسٹال کی جاتی ہے (ایپ کے اینڈ پوائنٹ پر پہنچائی جاتی ہے)۔
*اوپر دیے گئے ہر ایونٹ کو سبسکرائب کریں۔
pingبھیجا گیا از ٹیسٹ وائرنگ کی تصدیق کے لیے بٹن۔

جب آپ کا اینڈ پوائنٹ بند تھا تو ڈیلیوری ناکام ہوئی؟ استعمال کریں دوبارہ پہنچائیں ڈیش بورڈ کے حالیہ ڈیلیوریز لاگ میں کسی بھی قطار پر تاکہ اسے تازہ کے ساتھ دوبارہ قطار میں لگایا جائے webhook-id.

ویب ہک پے لوڈ

ہر ڈیلیوری ایک ہے POST اس JSON envelope اور ان ہیڈرز کے ساتھ:

POST /your-endpoint HTTP/1.1
Content-Type: application/json
webhook-id: msg_a1b2c3d4e5f6g7h8i9j0k1l2
webhook-timestamp: 1751472240
webhook-signature: v1,K5f...base64...==
X-Webhook-Event: order.created          (legacy)
X-Webhook-Signature: 9a3f...hex...      (legacy, HMAC of body only)

{
  "id": "msg_a1b2c3d4e5f6g7h8i9j0k1l2",
  "event": "order.created",
  "created_at": "2026-07-02T18:04:00+00:00",
  "data": { "order_id": 5501, "total": "42.00" }
}

یہ id فی ڈیلیوری منفرد ہے۔ چونکہ دوبارہ کوششیں وہی دوبارہ استعمال کرتی ہیں id, اسے اپنے handler کو idempotent بنانے کے لیے استعمال کریں۔

دستخط کی تصدیق

یہ webhook-signature ہیڈر ایک HMAC-SHA256 ہے، base64 انکوڈ شدہ، اس پر شمار کیا گیا {id}.{timestamp}.{body} آپ کے اینڈ پوائنٹ کے signing secret کا استعمال کرتے ہوئے۔ id اور timestamp کو دستخط میں باندھنا ہی وہ چیز ہے جو کسی کیپچر شدہ درخواست کو replay کے خلاف محفوظ بناتی ہے۔ کسی بھی ایسی درخواست کو مسترد کریں جس کا webhook-timestamp تقریباً 5 منٹ سے زیادہ پرانا ہے۔

PHP

$secret  = 'whsec_from_dashboard';
$id      = $_SERVER['HTTP_WEBHOOK_ID'];
$ts      = $_SERVER['HTTP_WEBHOOK_TIMESTAMP'];
$body    = file_get_contents('php://input');
$sent    = explode(',', $_SERVER['HTTP_WEBHOOK_SIGNATURE'])[1] ?? '';

if (abs(time() - (int) $ts) > 300) { http_response_code(400); exit; }

$expected = base64_encode(hash_hmac('sha256', "$id.$ts.$body", $secret, true));
if (!hash_equals($expected, $sent)) { http_response_code(401); exit; }

// verified — process $body
http_response_code(200);

Node.js

const crypto = require('crypto');

function verify(req, secret) {
  const id  = req.headers['webhook-id'];
  const ts  = req.headers['webhook-timestamp'];
  const sig = (req.headers['webhook-signature'] || '').split(',')[1];
  if (Math.abs(Date.now() / 1000 - Number(ts)) > 300) return false;

  const expected = crypto
    .createHmac('sha256', secret)
    .update(`${id}.${ts}.${req.rawBody}`)
    .digest('base64');

  return crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(sig || ''));
}
ایک لیگیسی X-Webhook-Signature ہیڈر (باڈی کا سادہ HMAC-SHA256، hex) پسماندہ مطابقت کے لیے بھی بھیجا جاتا ہے۔ نئے انضمامات کو استعمال کرنا چاہیے webhook-signature.

دوبارہ کوششیں اور ڈیلیوری لاگ

ڈیلیوری غیر ہم وقت ہے اور ناکامی پر exponential backoff نیز jitter کے ساتھ دوبارہ کوشش کی جاتی ہے: تقریباً 1m → 5m → 15m → 1h (کل 5 کوششوں تک)۔ ہر کوشش — کامیابی یا ناکامی — آپ کے ڈیش بورڈ پر ڈیلیوری لاگ میں اس کے HTTP اسٹیٹس، کوشش نمبر، اور جواب کے اقتباس کے ساتھ ریکارڈ کی جاتی ہے۔

ڈیلیوری ہے کم از کم ایک بار. اس پر ڈی ڈپلیکیٹ کریں webhook-id کبھی کبھار کی تکرار کو سنبھالنے کے لیے۔

MCP سرورز

نیا ہر کلائنٹ کے لیے ایک صفحے کی کاپی پیسٹ سیٹ اپ گائیڈ یہاں موجود ہے /mcp — فی کلائنٹ انسٹال کمانڈز، ون کلک ڈیپ لنکس، ٹول کیٹلاگ اور نمونہ پرامپٹس۔ یہ صفحہ گہرا حوالہ رہتا ہے۔

پانچ Model Context Protocol سرورز AI ایجنٹس (ChatGPT، Claude، Cursor) کو پلیٹ فارم سے جوڑتے ہیں — وہ منتخب کریں جو آپ کے سامعین سے میل کھاتا ہے۔ سب HTTP پر JSON-RPC 2.0 بولتے ہیں اور پروٹوکول ورژنز پر بات چیت کرتے ہیں 2024-11-05 / 2025-03-26 / 2025-06-18.

سروراینڈ پوائنٹسامعینتصدیقاوزار
Adminhttps://mail.menubarcode.com/mcpاسٹور مالکان — اسٹور کا نظم کریںAPI ٹوکن (Bearer)23
Storefronthttps://mail.menubarcode.com/mcp/storefrontایک گاہک کا ایجنٹ — ایک اسٹور پر خریداری اور آرڈر کریںاسٹور فرنٹ ٹوکن (ایجنٹ اسکوپ)12
Customerhttps://mail.menubarcode.com/mcp/customerایک سائن اِن گاہک — ان کے اپنے آرڈرزکسٹمر ٹوکن (OTP لاگ ان)5
Cataloghttps://mail.menubarcode.com/mcp/catalogکوئی بھی — پورے پلیٹ فارم پر اسٹورز دریافت کریںعوامی3
Devhttps://mail.menubarcode.com/mcp/devAI کوڈنگ ٹولز — تھیمز/انضمامات بنائیںعوامی7

کوئیک اسٹارٹ: اس پر جائیں Admin, Catalog, Customer, یا Dev. Storefront سرور Admin connect پیٹرن کو اس کے ساتھ شیئر کرتا ہے X-Storefront-Token ہیڈر بجائے Bearer ٹوکن کے۔

MCP سرور (Admin)

ایک MCP مطابقت پذیر AI کلائنٹ (Claude، ChatGPT، Cursor) انہی API ٹوکنز کا استعمال کرتے ہوئے قدرتی زبان میں آپ کے ریستوران کو چلا سکتا ہے۔ اسے اس پر متعین کریں:

POST https://mail.menubarcode.com/mcp JSON-RPC 2.0

توثیق کریں اس کے ساتھ Authorization: Bearer YOUR_TOKEN. ہر ٹول اس دانہ دار صلاحیت کا اعلان کرتا ہے جس کی اسے ضرورت ہے (resource:action); ایک لیگیسی read ٹوکن ہر ایک کا احاطہ کرتا ہے :read ٹول اور write ہر چیز کا احاطہ کرتا ہے۔ تمام کالز آپ کے ریستورانوں تک محدود اور ریٹ لِمِٹڈ ہیں۔ وہ ٹولز جن کے لیے آپ کے پاس صلاحیت نہیں، ان سے چھپے رہتے ہیں tools/list.

جوڑیں (Claude Code)

claude mcp add --transport http platform-admin https://mail.menubarcode.com/mcp \
  --header "Authorization: Bearer YOUR_TOKEN"

ٹولز کی فہرست دیں

curl -X POST https://mail.menubarcode.com/mcp \
  -H "Authorization: Bearer YOUR_TOKEN" -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

ایک ٹول کال کریں (مثلاً ایک مینو آئٹم شامل کریں)

curl -X POST https://mail.menubarcode.com/mcp \
  -H "Authorization: Bearer YOUR_TOKEN" -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/call",
       "params":{"name":"add_menu_item",
                 "arguments":{"restaurant_id":12,"name":"Latte","price":4.5}}}'

اوزار

ٹولصلاحیتیہ کیا کرتا ہے
list_restaurantsreadآپ کی ملکیت والے ریستوران۔
get_menureadایک ریستوران کے زمرے اور آئٹمز۔
list_categoriesmenu:readآئٹم شمار کے ساتھ زمرے۔
add_categorymenu:writeایک زمرہ بنائیں۔
update_categorymenu:writeایک زمرے کا نام تبدیل کریں / دوبارہ ترتیب دیں۔
delete_categorymenu:writeایک زمرہ حذف کریں (اگر اس میں آئٹمز ہوں تو انکار کرتا ہے)۔
add_menu_itemwriteایک مینو آئٹم بنائیں (پلان کی حد چیک کی گئی)۔
update_menu_itemwriteکسی آئٹم کا نام/قیمت/تفصیل ترمیم کریں۔
delete_menu_itemmenu:writeکسی آئٹم کو مستقل طور پر حذف کریں۔
set_item_availabilitymenu:writeایک آئٹم کو اسٹاک میں/سے باہر نشان زد کریں (86 ٹوگل)۔
list_ordersorders:readآرڈرز نئے سے پہلے؛ اسٹیٹس/تاریخ/تلاش فلٹرز۔
get_orderorders:readمکمل آرڈر تفصیل بشمول لائن آئٹمز۔
update_order_statuswriteکسی آرڈر کا کچن اسٹیٹس آگے بڑھائیں۔
list_customerscustomers:read + crm_suiteCRM فہرست؛ نام/فون/ای میل تلاش کریں۔ استحقاق کے بغیر tools/list سے چھپا ہوا۔
get_customercustomers:read + crm_suiteایک گاہک کا مکمل ریکارڈ۔ استحقاق کے بغیر tools/list سے چھپا ہوا۔
sales_reportanalytics:readکسی رینج کے لیے آمدنی + آرڈر شمار + ٹاپ آئٹمز۔
get_restaurant_settingsrestaurants:readپروفائل + آرڈرنگ سیٹنگز کا سنیپ شاٹ۔
update_business_hoursrestaurants:writeکاروباری اوقات کا متن مقرر کریں۔
list_couponsorders:readآپ کے ڈسکاؤنٹ کوپنز۔
create_couponorders:writeایک فیصد/مقررہ کوپن بنائیں۔
update_couponorders:writeکوپن میں ترمیم کریں۔
delete_couponorders:writeکوپن حذف کریں۔

Catalog MCP (ریستوران دریافت کریں)

ایک عوامی، صرف پڑھنے والا MCP سرور جو AI ایجنٹس کو پورے پلیٹ فارم پر ریستوران اور پکوان دریافت کرنے دیتا ہے، پھر آرڈر کرنے کے لیے کسی مخصوص اسٹور میں ڈیپ لنک کرتا ہے۔ کوئی توثیق نہیں، ریٹ لِمِٹڈ۔

POST https://mail.menubarcode.com/mcp/catalog JSON-RPC 2.0 · public

جوڑیں (Claude Code)

claude mcp add --transport http platform-catalog https://mail.menubarcode.com/mcp/catalog
ٹولیہ کیا کرتا ہے
search_storesکلیدی لفظ/شہر کے لحاظ سے ریستوران تلاش کریں (name، address، menu_url، storefront_mcp اشارہ)۔
search_itemsتمام اسٹورز میں پکوان تلاش کریں (query/dietary/max_price/city)، اسٹور کے لحاظ سے گروپ شدہ۔
get_storeslug یا id کے ذریعے ایک اسٹور کے لیے مکمل عوامی تفصیل۔
list_starter_menusبنڈل کردہ اسٹارٹر مینو پری سیٹس جن سے کوئی نیا اسٹور شروع کر سکتا ہے (کیفے، پیزیریا، برگر، بیکری، لاؤنج)۔

صرف فعال، عوامی طور پر درج اسٹورز ظاہر ہوتے ہیں؛ مالکان اپنی اسٹور ترتیبات میں آپٹ آؤٹ کر سکتے ہیں۔ کبھی کوئی مالک رابطہ تفصیلات واپس نہیں کی جاتیں۔ آرڈر دینے کے لیے، اسٹور کا استعمال کریں اسٹور فرنٹ MCP فی اسٹور ایجنٹ ٹوکن کے ساتھ۔

کسٹمر اکاؤنٹ MCP

ایک گاہک کے AI اسسٹنٹ کو پڑھنے، ٹریک کرنے، اور دوبارہ آرڈر کرنے دیتا ہے ان کے اپنے آرڈرز۔ موجودہ OTP لاگ اِن سے فی گاہک ٹوکن کے ذریعے توثیق شدہ؛ گاہک کی شناخت صرف ٹوکن سے آتی ہے — کوئی فون یا گاہک id کبھی دلیل کے طور پر قبول نہیں کی جاتی۔

POST https://mail.menubarcode.com/mcp/customer JSON-RPC 2.0 · customer token

ٹوکن حاصل کریں (OTP فلو)

# 1) request a one-time code (sent to the customer's phone)
curl -X POST https://mail.menubarcode.com/api/v1/restaurants/12/customer/otp/request \
  -H "Content-Type: application/json" -d '{"phone":"+15551234567"}'

# 2) verify the code → returns a customer bearer token
curl -X POST https://mail.menubarcode.com/api/v1/restaurants/12/customer/otp/verify \
  -H "Content-Type: application/json" -d '{"phone":"+15551234567","code":"123456"}'

جوڑیں (Claude Code)

claude mcp add --transport http my-orders https://mail.menubarcode.com/mcp/customer \
  --header "Authorization: Bearer CUSTOMER_TOKEN"
ٹولیہ کیا کرتا ہے
my_ordersآپ کے حالیہ آرڈرز (سب سے حالیہ پہلے)۔
order_detailآپ کے کسی ایک آرڈر کے لیے مکمل تفصیل + لائن آئٹمز۔
track_orderآرڈر id یا track ٹوکن کے ذریعے لائیو اسٹیٹس۔
reorderکسی ماضی کے آرڈر کو کارٹ مسودے کے طور پر دوبارہ بنائیں (فروخت شدہ آئٹمز کو چھوڑ دیتا ہے)۔
my_profileآپ کا نام، فون، اور آرڈر شمار۔
my_bookingsاس مقام پر آپ کی اپنی ہوٹل روم بکنگز (کوڈ، حیثیت، تاریخیں، کمرے کی قسم، مجموعہ)۔
curl -X POST https://mail.menubarcode.com/mcp/customer \
  -H "Authorization: Bearer CUSTOMER_TOKEN" -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call",
       "params":{"name":"my_orders","arguments":{"limit":5}}}'

اپنا AI ایڈیٹر جوڑیں

Claude Code، Cursor، یا VS Code کے ساتھ کوئی تھیم یا انضمام بنا رہے ہیں؟ اسے عوامی پر متعین کریں Dev MCP سرور — آپ کے AI ٹول کو لائیو پلیٹ فارم دستاویزات، تیار کردہ Liquid وائٹ لسٹ، اور سرور سائیڈ تھیم توثیق ملتی ہے۔ کسی ٹوکن کی ضرورت نہیں۔

POST https://mail.menubarcode.com/mcp/dev JSON-RPC 2.0 · public

Claude Code

claude mcp add --transport http platform-dev https://mail.menubarcode.com/mcp/dev

Cursor.cursor/mcp.json

{ "mcpServers": { "platform-dev": { "url": "https://mail.menubarcode.com/mcp/dev" } } }

VS Code.vscode/mcp.json

{ "servers": { "platform-dev": { "type": "http", "url": "https://mail.menubarcode.com/mcp/dev" } } }

اوزار learn_platform (یہاں سے شروع کریں), search_docs / fetch_full_doc, get_liquid_reference, get_section_schema, validate_theme, list_webhook_events. تجویز کردہ ایجنٹ ورک فلو: learn → build → validate → deliver۔

اوپر توثیق شدہ MCP سرور (https://mail.menubarcode.com/mcp) آپ کے ریستوران ڈیٹا کو چلاتا ہے؛ یہ دستاویزات اور توثیق پیش کرتا ہے اور عوامی طور پر شیئر کرنا محفوظ ہے۔

تبدیلیوں کی فہرست

تاریختبدیل کریں
2026-08-20ہوٹل PMS + نمو ریلیز: refund.completed, reservation.created, reservation.cancelled, customer.created, shift.opened, shift.closed ویب ہک ایونٹس؛ عملہ پش-ڈیوائس رجسٹریشن + 2fa اینڈ پوائنٹس؛ نئے MCP ٹولز hotel_availability, my_bookings, list_starter_menus, list_webhook_events.
2026-07-28راؤٹر سے تیار کردہ ڈسکوری اشاریہ + OpenAPI 3.1 اسپیک (ہمیشہ تعینات کردہ API کے ساتھ برابری میں)؛ Idempotency-Key order-create پر؛ فی ٹوکن API ریٹ لِمِٹس؛ subscription.* + app.uninstalled webhook ایونٹس + ڈیلیوری دوبارہ پہنچائیں.
2026-07-07عوامی Dev MCP سرور AI کوڈنگ ٹولز کے لیے: لائیو دستاویزات تلاش، تیار کردہ Liquid حوالہ، سرور سائیڈ تھیم توثیق۔
2026-07-02دانہ دار ٹوکن دائرہ کار (resource:action); عملہ مینو ترمیم + analytics اینڈ پوائنٹس۔
2026-07-02عملہ ایپ: فی عملہ ٹوکن توثیق (پاس ورڈ + PIN)، کردار-اجازت گیٹنگ، آرڈر اسٹیٹس، KDS bump/recall۔
2026-07-02خود مختار کسٹمر ایپ: فی گاہک ٹوکن توثیق (register/login/OTP)، پروفائل، آرڈر دینا + تاریخ، محفوظ پتے، عوامی مینو براؤز۔
2026-07-02مکمل مینجمنٹ API: مینو CRUD، آرڈر تخلیق، ڈرائیورز + ڈیلیوری لائف سائیکل، ڈرائیور ایپ ٹوکن API، عوامی آرڈر ٹریکنگ، فروخت تجزیات، گاہک۔ نئے ڈیلیوری webhook ایونٹس۔
2026-07-02دوبارہ کوششوں کے ساتھ قطار بند webhook ڈیلیوری؛ Standard-Webhooks دستخط (webhook-id/timestamp/signature); order.paid ایونٹ؛ عوامی دستاویزات۔
2026-06-26ابتدائی v1 REST API، ٹوکنز، اور webhook اینڈ پوائنٹس۔

واپس Menubarcode

Menubarcode API v1 · بیس URL https://mail.menubarcode.com/api/v1

ہم سے رابطہ کریں

ہمیں فالو کریں