pending_approval، تعلّق البوابة استدعاء
الأداة وتُخطر نظام موافقاتك الخاص خارج النطاق. ذلك الإخطار هو POST مُوقَّع
عبر HTTP — حمولة firewall webhook — وهذه الصفحة توثّق شكلها الدقيق حتى
تستطيع التحقّق من التوقيع، وتوجيه الحدث، ونشر قرارك راجعاً.
هذا الشقيق غير المتزامن لمسار الموافقة داخل وحدة التحكم الموصوف في صفحة
جدار الحماية. مسار وحدة
التحكم (يضغط مراجِع approve/reject) لا يحتاج webhook إطلاقاً. الـ webhook
لأجل عندما تريد آلة — روبوت التذاكر الخاص بك، أو إجراء Slack، أو وقت
تشغيل وكيل — أن تحلّ التعليق. كلا المسارين بمبدأ أول كاتب يفوز، فيمكنك
تشغيلهما جنباً إلى جنب.
الـ webhook هو إشارة توجيه بأفضل جهد، وليس قناة HITL المرجعية. استطلاع
الوكيل الطويل الخاص على
GET /api/v1/firewall/approvals/:id
هو الشبكة الاحتياطية — إذا سقط إخطار أو كانت نقطة نهايتك معطّلة لوهلة، لا
يزال الاستدعاء المُعلَّق يظهر في وحدة التحكم ويُحَل بشكل طبيعي. الـ webhook
يدع آلة تتفاعل أسرع مما يفعل إنسان فحسب.1. حمولة firewall webhook في لمحة
ينشر OrcaRouter ظرف JSON إلى الـ URL الذي تضبطه، مُوقَّعاً بسرّ مشترك. ها هو تسليم كامل — ترويسات وجسم:X-Orca-Event دون تحليل الجسم.
2. حقول الظرف
event — اسم الحدث
event — اسم الحدث
دائماً
firewall.approval.pending لتعليق موافقة. مُنعكس في ترويسة
X-Orca-Event حتى توجّه قبل تحليل الجسم.workspace_id — مساحة العمل المنشئة
workspace_id — مساحة العمل المنشئة
المعرّف الصحيح لمساحة العمل التي علّقت سياستها الاستدعاء. مفيد عندما
تتلقّى نقطة نهاية واحدة webhooks من عدة مساحات عمل.
occurred_at — متى أُنشئ التعليق
occurred_at — متى أُنشئ التعليق
طابع زمني RFC 3339 / UTC (دقة نانوثانية) لوقت إدراج البوابة للموافقة
في الطابور. قابل للتحليل بأي أدوات أحداث قياسية.
data — حمولة الموافقة
data — حمولة الموافقة
الكتلة التي يحتاجها استدعاؤك الراجع لحل البوابة. الحقول في
§3.
3. حمولة data
تحمل كتلة data كل ما يلزم لتوجيه التعليق وحلّه — بلا وسائط أداة عمداً.
الـ webhook إشارة توجيه؛ وسياق الاستدعاء الكامل (الأداة، الوسائط، القاعدة
التي أُطلقت) يعيش في تبويب Approvals بوحدة التحكم وسجلّ التدقيق، حيث يُتحكَّم
في الوصول إليه.
| الحقل | النوع | المعنى |
|---|---|---|
approval_id | string | المعرّف الذي تنشر قرارك مقابله. |
tool_name | string | الأداة المُعلَّقة، مثل db.export. |
request_id | string | طلب الترحيل الذي أطلق التعليق. |
conversation_id | string | معرّف محادثة / جلسة الوكيل. |
policy_id | int | سياسة جدار الحماية التي طابقت. |
rule_id | int | القاعدة التي أعادت pending_approval. |
4. التحقّق من التوقيع
كل تسليم مُوقَّع حتى ترفض التزييفات. ترويسة التوقيع هي:secret هو سرّ webhook الموافقة الذي تضبطه على مساحة العمل و
raw_body هو البايتات الدقيقة لجسم الطلب. احسب HMAC على البايتات
الخام — إعادة تسلسل JSON المحلَّل ستغيّر المسافات وتكسر المقارنة. تحقّق في
زمن ثابت:
5. ضبط الـ webhook
الـ URL الوجهة والسرّ المشترك إعدادات مساحة عمل — اضبطهما مرة في وحدة التحكم (أو عبر واجهة الإعدادات؛ Developer+). لا تدخّل مشغّل ولا شيء لنشره.اضبط الـ URL والسرّ
في إعدادات جدار الحماية، اضبط نقطة نهايتك HTTPS كـ URL لـ webhook
الموافقة وسرّاً مشتركاً قوياً. يجب أن يكون الـ URL
https:// —
تُرفض الوجهات النصّية — والسرّ للكتابة فقط (لا يُعاد أبداً عند القراءة؛
تبلّغ استجابة الإعدادات فقط عمّا إذا كان واحد مضبوطاً).ألّف قاعدة pending_approval
أضِف قاعدة جدار حماية حكمها
pending_approval (أو استخدم الإعداد
المسبق لـ HITL). انظر قواعد جدار الحماية.استقبِل وتحقّق
تستقبل نقطة نهايتك POST المُوقَّع على الاستدعاء المُعلَّق التالي. تحقّق
من التوقيع (§4)، ثم إمّا حُلّ عبر الاستدعاء
الراجع أو أظهره لإنسان.
الاستدعاء المُعلَّق لا يزال يعمل مع عدم ضبط أي webhook — يظهر فقط في
وحدة التحكم ليحلّه إنسان. وإذا ضبطت URL لكن بلا سرّ، تتخطّى البوابة
الإرسال كلياً، لأن نقطة نهاية الاستدعاء الراجع لا تقبل سوى الطلبات
المُوقَّعة: إخطار لا تستطيع مصادقته راجعاً سيكون عديم الفائدة.
6. الاستدعاء الراجع: حل التعليق
للموافقة أو الرفض بآلة، انشر راجعاً إلى::id الذي تلقّيته كـ approval_id، مُوقَّعاً بنفس السرّ المشترك.
الجسم قرار:
| حقل الجسم | مطلوب | القيم |
|---|---|---|
decision | نعم | approved أو rejected |
reason | لا | ملاحظة نصّية حرّة، مُسجَّلة في سجلّ التدقيق. |
approved يدع محاولة الوكيل التالية تمرّ مرة واحدة — يعيد الوكيل
تقديم الاستدعاء الأصلي بترويسة X-OrcaRouter-Firewall-Approval أحادية
الاستخدام. قرار rejected يبقي الاستدعاء محجوباً.
الحل عديم الأثر التكراري وبمبدأ أول كاتب يفوز. إذا حلّ إنسان التعليق
بالفعل من وحدة التحكم — أو وصل استدعاء راجع مكرّر — تعيد نقطة النهاية
200 بـ already_resolved: true ويبقى القرار الأصلي. آمن لإعادة المحاولة.7. حالات الموافقة
يمرّ استدعاء مُعلَّق عبر هذه الحالات؛ يقود استدعاؤك الراجع الانتقال خارجpending:
| الحالة | المعنى |
|---|---|
pending | بانتظار قرار (الحالة وقت الـ webhook). |
approved | مُحَلّ — قد يمضي الاستدعاء المبوَّب مرة واحدة. |
rejected | مُحَلّ — يبقى الاستدعاء المبوَّب محجوباً. |
expired | انتهت صلاحية التعليق دون قرار. |
8. مراجع ذات صلة
جدار الحماية — مسار HITL
كيف يعلّق
pending_approval استدعاءً ويعيد الوكيل التقديم بترويسة
الموافقة أحادية الاستخدام.رموز الأخطاء
firewall_approval_pending واستجابات HTTP الأخرى لجدار الحماية.مسرد الأحكام
كل حكم لجدار الحماية، بما فيه
pending_approval.Firewall API
مرجع مسارات وحدة التحكم + البوابة الكامل.
