اختبار قاعدة
أي من رسائلك الأخيرة كانت هذه القاعدة ستلتقطها. لا تغيّر شيئًا.
ينفّذ الاستدعاء الحقيقي على مساحة عملك، بمفتاحك أنت.
POST /rules/{id}/test
أي من رسائلك الأخيرة كانت هذه القاعدة ستلتقطها. لا تغيّر شيئًا.
مثال
يتطلب rules:read. فالتشغيل التجريبي يقرأ صندوق بريد ولا يكتب شيئًا، فليس عملية rules:write. وdays قيمتها الافتراضية 30 وتصل إلى 365، وlimit قيمته الافتراضية 50 ويصل إلى 200، وthreadIds يختبر سلاسل مسمّاة بدل نافذة زمنية.
curl -X POST "$OE/rules/rul_7f3a1c94e05d3862c1f0a44b/test" -H "$AUTH" \ -H "Content-Type: application/json" \ -d '{ "days": 30, "limit": 50 }'{ "object": "rule_test", "ruleId": "rul_7f3a1c94e05d3862c1f0a44b", "scanned": 50, "matched": 3, "wouldApply": ["label:USER_RECEIPTS", "archive"], "messages": [ { "threadId": "thr_5d31c2a8…", "from": "[email protected]", "subject": "Your receipt", "receivedAt": "2026-08-28T10:00:00.000Z" } ], "warnings": [{ "code": "forward_unverified", "value": "[email protected]" }]}يجيب عن هذا المحرك نفسه الذي يعمل على مسار التسليم. وهو وحدة واحدة، نقية عن قصد (لا قاعدة بيانات ولا شبكة)، فلا يمكن لشاشة الإعدادات والتشغيل التجريبي ومعالج SMTP أن يختلفوا حول تطابق قاعدة. فالمعاينة المكتوبة مرتين هي جوابان لسؤال واحد، والجواب الذي يُعرض على الشخص هو الخطأ.
محدود بحكم البناء: 200 رسالة على الأكثر خلال سنة على الأكثر. فهذا يعمل داخل Worker بميزانية زمن فعلي، والمسح غير المحدود طلب يموت في منتصفه بلا شيء يُعرض.
القاعدة المعطَّلة يمكن اختبارها. وهذا هو المقصد: اكتبها، واختبرها، ثم فعّلها.
warnings هو حيث تظهر القاعدة التي تُحلَّل لكنها لن تتصرف كما ينبغي. وعنوان إعادة توجيه لم يؤكده أحد هو ما ستقابله. والتحذير لا يوقف الاختبار أبدًا: فمقصد التشغيل التجريبي أن يُبلغ بكل ما وجده في تمريرة واحدة لا أن يفشل عند أول شيء.
لا يوجد «شغّل هذا على صندوق بريدي»
لا توجد عمدًا POST /rules/{id}/run، ولن توجد. فتطبيق قاعدة بأثر رجعي على صندوق بريد كامل غير محدود وغير قابل للعكس وبلا تراجع (فإجراء trash على عشر سنوات من البريد نداء واحد بلا فرصة ثانية)، ومسار الكتابة الذي كان سيستخدمه يندمج في السلسلة المخزَّنة، وهو ما كان سيرفع كل رسالة مسّها إلى أعلى صندوق الوارد كأثر جانبي لعملية ترتيب.
هذه النقطة هي النصف الصادق من ذلك الطلب: فهي تجيب عن «ما الذي كان هذا سيفعله»، وهو السؤال، ثم تحفظ أنت الرسائل التي قصدتها فعلًا بـ PATCH /threads/{id}.