ڈیولپر دستاویزات
ایک API پر کسٹمر، ڈرائیور، اور مرچنٹ ایپس بنائیں۔ ریستوران، مینوز، آرڈرز، اور ڈرائیورز پڑھیں اور لکھیں؛ دستخط شدہ webhooks کے ذریعے حقیقی وقت کے ایونٹس وصول کریں۔ ہر چیز ٹوکن مالک تک محدود ہے۔
🛍️ کسٹمر ایپ 🛵 ڈرائیور ایپ 🧑🍳 مرچنٹ ایپ
مارکیٹ پلیس کے لیے بنا رہے ہیں؟ ایپ ڈویلپر دستاویزات → · تھیم ڈویلپر دستاویزات →
learn_platform اسے تیار کرتا ہے، get_liquid_reference اسے مستند وائٹ لسٹ دیتا ہے، اور
validate_theme اس کے آؤٹ پٹ پر مارکیٹ پلیس کی اپنی جانچیں چلاتا ہے — مکمل learn → build → validate لوپ، اپنے ایڈیٹر سے نکلے بغیر۔ ایک کمانڈ میں جوڑیں →
آغاز کریں
اپنے ڈیش بورڈ سے اس کے تحت ایک API ٹوکن بنائیں API ٹوکنز اور Webhooks. منتخب کریں read اور/یا write صلاحیتیں اور ٹوکن کاپی کریں — یہ صرف ایک بار دکھایا جاتا ہے۔
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 | معنی |
|---|---|---|
401 | unauthenticated | غائب، غلط، یا میعاد ختم شدہ ٹوکن۔ |
403 | forbidden | ٹوکن میں مطلوبہ صلاحیت/دائرہ کار نہیں ہے۔ |
404 | not_found | وسیلہ نہیں ملا یا ٹوکن کی ملکیت نہیں۔ |
422 | validation_failed | توثیق ناکام (دیکھیں errors). |
429 | rate_limited | ریٹ لِمِٹ سے تجاوز ہو گیا۔ |
code, انسان کو نہیں message — پیغامات دوبارہ لکھے یا لوکلائز کیے جا سکتے ہیں؛ کوڈز مستحکم ہیں۔404, نہیں 403 — API کبھی کسی دوسرے مالک کے ڈیٹا کے وجود کی تصدیق نہیں کرتا۔پیجینیشن
لسٹ اینڈ پوائنٹس Laravel طرز کے صفحہ بند envelopes واپس کرتے ہیں۔ استعمال کریں ?page= صفحات میں چلنے کے لیے query پیرامیٹر۔
{
"data": [ ... ],
"current_page": 1,
"last_page": 3,
"per_page": 20,
"total": 47
}
ریستوران اور مینو پڑھیں
ٹوکن کی ملکیت والے ریستورانوں کی فہرست، صفحہ بند (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
}
ایک واحد ریستوران اس کے مینو زمروں اور آئٹم شمار کے ساتھ۔
مکمل فعال مینو، زمرے کے لحاظ سے گروپ شدہ۔
[
{ "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 }
]
}
]
آرڈرز
آرڈرز نئے سے پہلے، صفحہ بند (30/صفحہ)۔ فلٹر کریں ?status=.
مکمل آرڈر تفصیل لائن آئٹمز، اضافی چیزوں، ڈرائیور، اور ڈیلیوری ٹائم لائن کے ساتھ۔
آرڈر بنائیں — اسی طرح ایک کسٹمر ایپ کارٹ جمع کراتا ہے (مرچنٹ کا بیک اینڈ ٹوکن رکھتا ہے)۔ ہر آئٹم کی ریستوران کے لائیو مینو کے خلاف توثیق کی جاتی ہے؛ فروخت شدہ یا اجنبی آئٹمز پورے آرڈر کو مسترد کر دیتے ہیں (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 فی ریستوران محدود ہیں۔
کچن اسٹیٹس اپ ڈیٹ کریں (new|preparing|ready|delivered|completed|cancelled). چلاتا ہے order.status_changed.
Storefront API (فی ریستوران ٹوکن)
ایک الگ، عوامی رخ والا API جس کی توثیق ایک فی ریستوران اسٹور فرنٹ ٹوکن بھیجا جاتا ہے بطور X-Storefront-Token (مالک کا Bearer ٹوکن نہیں)۔ انہیں اپنے ڈیش بورڈ سے جاری کریں؛ ہر ٹوکن صرف اپنے ہی ریستوران تک پہنچ سکتا ہے۔ Read دائرہ کار ہے menu:read; آرڈرز دینے کے لیے درکار ہے 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 }
]
}'
تجزیات اور گاہک
تاریخ کی رینج پر فروخت کا خلاصہ (?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 } ]
}
ریستوران کی گاہک فہرست (CRM)، صفحہ بند۔ فلٹر کریں ?search=.
ڈرائیورز کا نظم کریں لکھیں
ڈرائیورز آپ کے اور (اختیاری طور پر) ایک ریستوران کے ہوتے ہیں۔ ڈرائیور بنانا یا گھمانا ایک خام واپس کرتا ہے ڈرائیور ٹوکن بالکل ایک بار — اسے ڈرائیور کی ایپ کو دیں؛ وہ اس سے توثیق کرتے ہیں (نیچے دیکھیں)۔
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" }
پرانے ٹوکن کو غیر مؤثر کرتا ہے اور ایک تازہ واپس کرتا ہے۔
ڈیلیوری تفویض کریں اور ٹریک کریں
ڈیلیوری آرڈرز، جن کو اس سے فلٹر کیا جا سکتا ہے ?delivery_status= اور ?driver_id=.
ڈرائیور تفویض کریں {"driver_id": 7}. مقرر کرتا ہے delivery_status=assigned اور چلاتا ہے order.driver_assigned.
ڈیلیوری مرحلے کو اوور رائیڈ کریں: pending | assigned | picked_up | out_for_delivery | delivered | failed.
ڈرائیور ایپ API
ڈرائیور ایپ ایک سے توثیق کرتی ہے ڈرائیور ٹوکن (مالک ٹوکن نہیں) جو اوپر جاری کیا گیا۔ بیس پاتھ https://mail.menubarcode.com/api/v1/driver. ہر جواب اسی ایک ڈرائیور تک محدود ہوتا ہے۔
Authorization: Bearer RAW_DRIVER_TOKEN
توثیق شدہ ڈرائیور کی پروفائل۔
اس ڈرائیور کو تفویض کردہ آرڈرز۔ شامل کریں ?active=1 ڈیلیور شدہ/ناکام چھپانے کے لیے۔
ڈیلیوری آگے بڑھائیں: {"delivery_status":"out_for_delivery"} پھر "delivered" یا "picked_up" / "failed", اختیاری note). مالک اینڈ پوائنٹ جیسے ہی webhooks چلاتا ہے۔
لائیو پوزیشن پش کریں: {"lat":25.2048,"lng":55.2708}. ڈیلیوری کے لیے نکلنے کے دوران گاہک کے ٹریکنگ ویو پر ظاہر ہوتی ہے۔
کسٹمر اکاؤنٹس
A خود مختار کسٹمر ایپ اپنے صارفین کی توثیق فی گاہک ٹوکن سے کرتی ہے (Sanctum طرز: متعدد آلات، انفرادی طور پر قابلِ منسوخی)۔ کوئی مالک ٹوکن شامل نہیں۔ گاہک فی ریستوران محدود ہیں، اس لیے توثیق اس کے تحت ہے /restaurants/{id}/customer/…. پہلے عوامی اینڈ پوائنٹ سے مینو براؤز کریں:
فعال مینو، زمرے کے لحاظ سے گروپ شدہ (فروخت شدہ آئٹمز خارج)۔ کوئی توثیق نہیں۔
رجسٹر / لاگ اِن
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)
فون نمبر کے لیے کوڈ طلب کریں، پھر اس کی تصدیق کریں۔ تصدیق گاہک کو تلاش یا تخلیق کرتی ہے اور ٹوکن واپس کرتی ہے۔ توثیق اینڈ پوائنٹس ریٹ لِمِٹڈ ہیں (login/register 10/منٹ، OTP درخواست 6/منٹ)۔
کسٹمر ایپ API
کسٹمر ٹوکن سے توثیق کریں۔ بیس پاتھ https://mail.menubarcode.com/api/v1/customer. ہر چیز توثیق شدہ گاہک تک محدود ہے — آرڈر باڈی کبھی کسی دوسرے گاہک کی id جعلی نہیں بنا سکتی۔
Authorization: Bearer RAW_CUSTOMER_TOKEN
پروفائل پڑھیں / اپ ڈیٹ کریں (نام، ای میل، فون، سالگرہ، رضامندیاں)۔
اس گاہک کے طور پر آرڈر دیں (مرچنٹ create اینڈ پوائنٹ جیسی ہی آئٹم شکل؛ شناخت ٹوکن سے لی جاتی ہے)۔ آرڈر اس کے ساتھ واپس کرتا ہے track_token.
گاہک کی اپنی آرڈر تاریخ، صفحہ بند۔
محفوظ ڈیلیوری پتے (پہلا ڈیفالٹ بن جاتا ہے؛ معاون ہے lat/lng).
درخواست کے لیے استعمال ہونے والا ٹوکن منسوخ کرتا ہے (صرف وہی آلہ)۔
آرڈر ٹریکنگ عوامی
کوئی توثیق نہیں — رسائی آرڈر کے ناقابلِ اندازہ کے ذریعے محدود ہے 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 مشترکہ کچن ٹیبلٹس کے لیے۔ عملہ فی ریستوران محدود ہے۔
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
کردار اور اجازت فہرست کے ساتھ پروفائل۔
آرڈرز کی فہرست دیں اور کچن اسٹیٹس اپ ڈیٹ کریں۔ درکار ہے orders اجازت۔
لائیو کچن ٹکٹس، آرڈر کے لحاظ سے گروپ شدہ، عملہ رکن کے اسٹیشن تک فلٹر شدہ (یا ?station_id=). صرف وہ آئٹمز دکھاتا ہے جو ابھی بھی queued|preparing|ready.
آگے بڑھائیں (queued → preparing → ready → served) یا ایک KDS اسٹیٹس پیچھے جائیں۔ پیرنٹ آرڈر کا اسٹیٹس خود بخود دوبارہ سِنک ہو جاتا ہے۔
فلور سے مینو میں ترمیم کریں (منیجرز)۔ مرچنٹ مینو اینڈ پوائنٹس جیسے ہی payloads، عملہ رکن کے ریستوران تک محدود۔
عملہ رکن کے ریستوران کے لیے فروخت کا خلاصہ (مرچنٹ analytics اینڈ پوائنٹ جیسی ہی شکل؛ ?from=&to=).
اس آلے کا ٹوکن منسوخ کرتا ہے۔
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 سرورز
پانچ Model Context Protocol سرورز AI ایجنٹس (ChatGPT، Claude، Cursor) کو پلیٹ فارم سے جوڑتے ہیں — وہ منتخب کریں جو آپ کے سامعین سے میل کھاتا ہے۔ سب HTTP پر JSON-RPC 2.0 بولتے ہیں اور پروٹوکول ورژنز پر بات چیت کرتے ہیں 2024-11-05 / 2025-03-26 / 2025-06-18.
| سرور | اینڈ پوائنٹ | سامعین | تصدیق | اوزار |
|---|---|---|---|---|
| Admin | https://mail.menubarcode.com/mcp | اسٹور مالکان — اسٹور کا نظم کریں | API ٹوکن (Bearer) | 23 |
| Storefront | https://mail.menubarcode.com/mcp/storefront | ایک گاہک کا ایجنٹ — ایک اسٹور پر خریداری اور آرڈر کریں | اسٹور فرنٹ ٹوکن (ایجنٹ اسکوپ) | 12 |
| Customer | https://mail.menubarcode.com/mcp/customer | ایک سائن اِن گاہک — ان کے اپنے آرڈرز | کسٹمر ٹوکن (OTP لاگ ان) | 5 |
| Catalog | https://mail.menubarcode.com/mcp/catalog | کوئی بھی — پورے پلیٹ فارم پر اسٹورز دریافت کریں | عوامی | 3 |
| Dev | https://mail.menubarcode.com/mcp/dev | AI کوڈنگ ٹولز — تھیمز/انضمامات بنائیں | عوامی | 7 |
کوئیک اسٹارٹ: اس پر جائیں Admin, Catalog, Customer, یا Dev. Storefront سرور Admin connect پیٹرن کو اس کے ساتھ شیئر کرتا ہے X-Storefront-Token ہیڈر بجائے Bearer ٹوکن کے۔
MCP سرور (Admin)
ایک MCP مطابقت پذیر AI کلائنٹ (Claude، ChatGPT، Cursor) انہی API ٹوکنز کا استعمال کرتے ہوئے قدرتی زبان میں آپ کے ریستوران کو چلا سکتا ہے۔ اسے اس پر متعین کریں:
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_restaurants | read | آپ کی ملکیت والے ریستوران۔ |
get_menu | read | ایک ریستوران کے زمرے اور آئٹمز۔ |
list_categories | menu:read | آئٹم شمار کے ساتھ زمرے۔ |
add_category | menu:write | ایک زمرہ بنائیں۔ |
update_category | menu:write | ایک زمرے کا نام تبدیل کریں / دوبارہ ترتیب دیں۔ |
delete_category | menu:write | ایک زمرہ حذف کریں (اگر اس میں آئٹمز ہوں تو انکار کرتا ہے)۔ |
add_menu_item | write | ایک مینو آئٹم بنائیں (پلان کی حد چیک کی گئی)۔ |
update_menu_item | write | کسی آئٹم کا نام/قیمت/تفصیل ترمیم کریں۔ |
delete_menu_item | menu:write | کسی آئٹم کو مستقل طور پر حذف کریں۔ |
set_item_availability | menu:write | ایک آئٹم کو اسٹاک میں/سے باہر نشان زد کریں (86 ٹوگل)۔ |
list_orders | orders:read | آرڈرز نئے سے پہلے؛ اسٹیٹس/تاریخ/تلاش فلٹرز۔ |
get_order | orders:read | مکمل آرڈر تفصیل بشمول لائن آئٹمز۔ |
update_order_status | write | کسی آرڈر کا کچن اسٹیٹس آگے بڑھائیں۔ |
list_customers | customers:read + crm_suite | CRM فہرست؛ نام/فون/ای میل تلاش کریں۔ استحقاق کے بغیر tools/list سے چھپا ہوا۔ |
get_customer | customers:read + crm_suite | ایک گاہک کا مکمل ریکارڈ۔ استحقاق کے بغیر tools/list سے چھپا ہوا۔ |
sales_report | analytics:read | کسی رینج کے لیے آمدنی + آرڈر شمار + ٹاپ آئٹمز۔ |
get_restaurant_settings | restaurants:read | پروفائل + آرڈرنگ سیٹنگز کا سنیپ شاٹ۔ |
update_business_hours | restaurants:write | کاروباری اوقات کا متن مقرر کریں۔ |
list_coupons | orders:read | آپ کے ڈسکاؤنٹ کوپنز۔ |
create_coupon | orders:write | ایک فیصد/مقررہ کوپن بنائیں۔ |
update_coupon | orders:write | کوپن میں ترمیم کریں۔ |
delete_coupon | orders:write | کوپن حذف کریں۔ |
Catalog MCP (ریستوران دریافت کریں)
ایک عوامی، صرف پڑھنے والا MCP سرور جو AI ایجنٹس کو پورے پلیٹ فارم پر ریستوران اور پکوان دریافت کرنے دیتا ہے، پھر آرڈر کرنے کے لیے کسی مخصوص اسٹور میں ڈیپ لنک کرتا ہے۔ کوئی توثیق نہیں، ریٹ لِمِٹڈ۔
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_store | slug یا id کے ذریعے ایک اسٹور کے لیے مکمل عوامی تفصیل۔ |
list_starter_menus | بنڈل کردہ اسٹارٹر مینو پری سیٹس جن سے کوئی نیا اسٹور شروع کر سکتا ہے (کیفے، پیزیریا، برگر، بیکری، لاؤنج)۔ |
صرف فعال، عوامی طور پر درج اسٹورز ظاہر ہوتے ہیں؛ مالکان اپنی اسٹور ترتیبات میں آپٹ آؤٹ کر سکتے ہیں۔ کبھی کوئی مالک رابطہ تفصیلات واپس نہیں کی جاتیں۔ آرڈر دینے کے لیے، اسٹور کا استعمال کریں اسٹور فرنٹ MCP فی اسٹور ایجنٹ ٹوکن کے ساتھ۔
کسٹمر اکاؤنٹ MCP
ایک گاہک کے AI اسسٹنٹ کو پڑھنے، ٹریک کرنے، اور دوبارہ آرڈر کرنے دیتا ہے ان کے اپنے آرڈرز۔ موجودہ OTP لاگ اِن سے فی گاہک ٹوکن کے ذریعے توثیق شدہ؛ گاہک کی شناخت صرف ٹوکن سے آتی ہے — کوئی فون یا گاہک id کبھی دلیل کے طور پر قبول نہیں کی جاتی۔
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 وائٹ لسٹ، اور سرور سائیڈ تھیم توثیق ملتی ہے۔ کسی ٹوکن کی ضرورت نہیں۔
https://mail.menubarcode.com/mcp/dev JSON-RPC 2.0 · publicClaude 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۔
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 اینڈ پوائنٹس۔ |
https://mail.menubarcode.com/api/v1