PARTNER API V1
ربط «بالملي» بتطبيقات التوصيل
العميل يعطي شركتك BML ID فقط. Backend شركة التوصيل يستخدم API Key ويستلم نقطة المدخل، الوقوف، الصور والخطوات، ومعها رابط وصول مؤقت للمندوب. لا تحتاج الشركة PIN لأن API Key هو اعتماد الشركة.
المصادقة
X-API-Key: bml_live_xxxxxxxxx
لا تضع المفتاح داخل تطبيق Android/iOS. خله في Backend الشركة.
جلب بيانات العنوان + جلسة مندوب
GET /api/v1/partner/destinations/BML-XXXXXXXXXXXX X-API-Key: bml_live_xxxxxxxxx
استجابة 200
{
"destination": {
"code": "BML-XXXXXXXXXXXX",
"label": "البيت",
"entrance": {"lat":29.2571,"lng":48.0573},
"parking": {"lat":29.2572,"lng":48.0570},
"steps": [{"type":"entrance","text":"البوابة اليمنى"}],
"media": [{"kind":"entrance","url":"https://.../media/...?a=..."}]
},
"delivery_access": {
"session_id": "crs_...",
"url": "https://YOUR-DOMAIN/c/SCOPED_TOKEN",
"expires_at": "..."
},
"meta": {"request_id":"req_...","company":"Your Company"}
}
إنشاء رابط مندوب فقط
POST /api/v1/partner/delivery-access
X-API-Key: bml_live_xxxxxxxxx
Content-Type: application/json
{"code":"BML-XXXXXXXXXXXX","hours":8}يرجع رابطًا مؤقتًا. المندوب يفتحه بدون حساب ولا PIN.
نظام الوصول للأفراد
للمندوب العادي غير المرتبط بشركة: يفتح /courier ويدخل BML ID + PIN من 4 أرقام. يتم إنشاء جلسة مؤقتة، والكود وحده لا يكشف العنوان.
حالات الوصول
| الحالة | كيف تتفعل |
|---|---|
| opened | فتح جلسة الوصول. |
| approaching | قراءتان متتاليتان تقريبًا داخل 100م ودقة ≤40م. |
| entrance | 3 قراءات متباعدة داخل 20م ودقة ≤18م. |
| door | تأكيد يدوي من المندوب؛ لا يعتمد على GPS وحده. |
| completed | تأكيد اكتمال التسليم. |
الأخطاء
| HTTP | المعنى |
|---|---|
| 401 | API Key غير صالح. |
| 404 | BML ID غير موجود أو الوصول متوقف. |
| 429 | الحد الشهري. |
الخصوصية
الـAPI لا يرجع بريد المستخدم. روابط المندوب مؤقتة، الصور لا تكون Public في R2، وصاحب العنوان يقدر يغير PIN أو رابط المشاركة فورًا.
Health Check
GET /api/health