الوكلاء

عمليات أداة OpenAPI

قائمة العمليات المخزنة لواجهة API مستوردة، وأوضاع المصادقة لكل عملية، والقيم الثابتة، ومفتاح التفعيل، ومسار الاستدعاء عبر البوابة.

كل عملية في المستند المستورد تصبح سجلاً خاصاً بها. تجد هنا ما يحتويه كل سجل، وكيف تُصادَق العملية، وكيف توقف الوكيل عن استدعاء عملية بعينها، وما الذي تستقبله واجهة API عندما يحدث الاستدعاء. لاستيراد المستند أصلاً، انظر أدوات OpenAPI.

قائمة العمليات

افتح الأداة من تبويب الأدوات في الوكيل، أو من صفحة مكتبة الأدوات، ثم افتح تبويب نقاط النهاية فيها. يحتوي التبويب على شريط من العمليات على اليسار، وعلى عقد العملية المختارة على اليمين.

الشريط قائمة مسطحة عنوانها «نقاط النهاية (N)»، وبجانبها عداد مثل «12 مفعّلة، 3 معطّلة»، وحقل بحث عنوانه «ابحث في نقاط النهاية». يعرض كل صف الطريقة والمسار والوصف ومفتاح التفعيل. وإذا لم تطابق التصفية أي شيء، تظهر الرسالة «لا توجد نقاط نهاية مطابقة للتصفية.» والعملية التي يعلّمها المستند بأنها تغيّر الحالة تعرض شارة مُعدِّلة في جزء العقد.

عند الضغط على صف، تفتح العقد الخاص به. يعرض المعاملات جدولاً بالأعمدة الاسم والموضع والنوع ومطلوب والوصف، ويظهر جسم الطلب تحت عنوان يحمل نوع محتواه، مثل جسم الطلب (application/json). وإذا لم تكن للعملية معاملات ولا حقول موثّقة، تظهر الرسالتان «لا توجد معاملات» و«لا توجد حقول موثّقة».

ما تحمله كل عملية

الحقل المعنى
name المعرّف الذي يستخدمه مسار التفعيل والوكيل عند الاستدعاء
method بأحرف كبيرة
path مع بقاء العناصر النائبة {curly} كما هي
description من المستند، أو البديل الذي أدخلته عند الاستيراد
tags من المستند. تظهر كرقائق في جزء العقد
mutating هل يعلّم المستند العملية بأنها تغيّر الحالة. وهو ما يحدد الشارة
parameters الاسم، والموضع، والإلزام، والنوع، والوصف
requestBody علامة الإلزام، ونوع المحتوى، والحقول على المستوى الأعلى
fieldValues القيم الثابتة ومراجع الأسرار التي تُضبط عند الاستيراد
authMode يُضبط عند الاستيراد. وغيابه يعني الوراثة
authConnectionId يظهر فقط عندما يكون authMode مضبوطاً على connection
enabled مفتاح التفعيل. وغيابه يُقرأ على أنه مُفعّل

تُقرأ العقود على عمق مستوى واحد: يُتبع المرجع المحلي $ref مرة واحدة، ويُفضَّل application/json عندما تعلن العملية عدة أنواع لجسم الطلب، ويُتخطى الجزء الذي لا يمكن قراءته بدلاً من إفشال الاستيراد كله. العملية التي تعذّرت قراءة معاملاتها تُستورد وتعمل، لكن عقدها يظهر فارغاً. والأداة التي استُوردت قبل حفظ العقود تعرض «تفاصيل نقاط النهاية غير مخزّنة لهذه الأداة.»

أوضاع المصادقة

لكل أداة مستوردة اتصال مصادقة واحد لواجهة API كلها، يُختار عند الاستيراد. ويمكن لكل عملية أن تتجاوزه، وinherit هو الافتراضي.

الوضع ما يستخدمه الاستدعاء
inherit اتصال الأداة، أو بدون بيانات اعتماد إذا لم يكن للأداة اتصال
none بدون بيانات اعتماد، حتى لو كان للأداة اتصال
connection الاتصال المسمّى، لهذه العملية وحدها

يكتب العقد نتيجة الوضع على سطر عنوان العملية: auth: <name> لاتصال الأداة، وauth override: <name> لاتصال خاص بالعملية، وno auth عندما لا ينطبق أي منهما. وفي الواجهة العربية تظهر هذه العبارات كـ«المصادقة: <name>» و«تجاوز المصادقة: <name>» و«بدون مصادقة».

مهما كان الوضع، يصل الاتصال إلى واجهة API كـ header Authorization. هناك أربعة أنواع: basic، وbearer، وOAuth2 client credentials، وOAuth2 JWT. ويُكتب هذا الـ header في آخر الترتيب، فيحل محل أي header بالاسم نفسه كانت قيمة ثابتة قد ضبطته، ولا تُفرّق المقارنة بين الحروف الكبيرة والصغيرة في الأسماء.

لا تعرض نافذة الاستيراد وضعاً للمصادقة لكل عملية. كل عملية تستخدم اتصال الأداة، إلا إذا ضُبطت بطريقة أخرى عند الاستيراد.

القيم الثابتة للحقول

يمكن تثبيت حقل يعلنه المستند على قيمة لا يراها الوكيل أبداً. وهناك نوعان:

النوع أين يمكن أن يكون ما يُحفظ
ثابتة المسار، أو الاستعلام، أو header، أو cookie، أو حقل في الجسم القيمة الحرفية، حتى 2000 حرف
سر معاملات header فقط مرجع إلى سر في مساحة العمل

يُخرج الحقل المثبَّت من العملية قبل أن يراها الوكيل، فلا يُخبر الوكيل بوجوده، ويُعاد وضعه عند إجراء الاستدعاء. وإذا أرسل الوكيل وسيطاً يطابق اسم حقل مثبَّت، يُتجاهل ذلك الوسيط قبل بناء الطلب. وتُقرأ قيمة السر عند إجراء الاستدعاء، وتوضع في header، ولا تُسجَّل ولا تُعاد.

لا يُضبط أي من النوعين في نافذة الاستيراد. يُضبطان عند الاستيراد، ويُتحقق منهما مقابل العقد الحقيقي للعملية، وهناك ثلاثة رفضات ممكنة:

الرسالة متى تظهر
fieldValues reference "apiKey", which is not a declared header parameter of operation "getOrder" الحقل المثبَّت غير موجود في عقد العملية
Secret values are only allowed on header parameters (operation "getOrder", field "apiKey") وُضع سر في موضع غير header
Referenced secret not found for operation "getOrder" السر غير موجود في مساحة العمل هذه

في جزء العقد تكتسب العملية التي فيها حقول مثبَّتة عموداً اسمه القيمة، ويُعلَّم الصف المرتبط بسر بشريحة سر بدلاً من قيمة.

استدعِ بإحكام

أي شيء يستطيع الوكيل ملأه قد يملؤه بشكل خاطئ. ثبّت القيم التي لا تتغير أبداً، واترك للوكيل الحقول التي يقدّمها المتصل فعلاً فقط.

الموصى به

apiKey     header  pinned to a workspace secret
tenantId   query   pinned constant "acme"
orderId    path    filled by the agent from what the caller said

الأقل فاعلية

apiKey     header  filled by the agent
tenantId   query   filled by the agent
orderId    path    filled by the agent

تفعيل العملية وإيقافها

يحمل كل صف في الشريط مفتاحاً. إيقاف المفتاح يمنع الوكيل من استدعاء تلك العملية، ويُحفظ التغيير فوراً دون زر حفظ.

قد تظهر العملية الموقوفة في البحث، لذلك قد تظهر في اختبار الاسترجاع. أما الاستدعاء نفسه فيُرفض قبل أن يصل شيء إلى واجهة API، ويتلقى الوكيل النتيجة operation_disabled بدلاً من أي نتيجة. ويسري التغيير فوراً، حتى في محادثة جارية. والعملية التي لم تُغيَّر أبداً تُعد مُفعّلة.

ما تستقبله واجهة API

يذهب كل استدعاء إلى الرابط الأساسي الذي ضبطته على الأداة. تُستبدل القيم الثابتة للمسار أولاً، ثم تُملأ العناصر النائبة {curly} من ما أرسله الوكيل بعد ترميزها للرابط؛ والعنصر النائب الذي لا قيمة له يبقى كما هو. ثم تُوضع البقية حسب الطريقة: GET وHEAD وDELETE تضعها في سلسلة الاستعلام، وأي طريقة أخرى تضعها في جسم JSON مع Content-Type: application/json. وتُضاف الثوابت والأسرار بعد ذلك، ويُكتب header Authorization في الآخر.

ترى واجهة API طلباً عادياً. لا يوجد عليه أي توقيع من إيكونوڤا، ولا يحدد أي شيء فيه المحادثة التي جاء منها. خذ عملية GET /orders/{orderId}، ومتصلاً يسأل عن الطلب 4512، وقيمة استعلام ثابتة locale، واتصال bearer للمصادقة:

GET /orders/4512?locale=en HTTP/1.1
Host: api.example.com
Authorization: Bearer <resolved from the auth connection>

يمكنك إعادة إنتاج هذا الطلب على واجهة API الخاصة بك أثناء فحص الاستيراد:

curl "https://api.example.com/orders/4512?locale=en" \
  -H "Authorization: Bearer $MY_API_TOKEN"

يعود ردّ واجهة API إلى الوكيل كحالة، وعلامة ok، وجسم، ويقرؤه الوكيل ويكمل الحديث.

عندما يفشل الاستدعاء

يعود الاستدعاء الفاشل إلى الوكيل كنتيجة أداة، وليس كفشل HTTP، حتى يقرأها الوكيل ويرد. وكل نتيجة تحمل حالة ورسالة خطأ.

الحالة الخطأ متى
404 tool_not_found الأداة لم تعد موجودة في مساحة العمل هذه
403 operation_disabled مفتاح تفعيل العملية مُوقف
502 no_base_url ليس للأداة رابط أساسي، والمسار ليس مطلقاً
502 Target URL must use https الرابط المُجمَّع ليس HTTPS
502 Target URL must be a public host — loopback, private, and link-local addresses are not allowed الرابط المُجمَّع يشير إلى مضيف محجوب
502 auth_resolution_failed تعذّر حل اتصال المصادقة
502 request_failed_or_timed_out واجهة API لم تجب خلال 15 ثانية، أو فشل الاتصال
502 response_too_large أعلنت واجهة API عن رد أكبر من 256 كيلوبايت

لا يظهر في هذا الجدول أي حالة غير ناجحة تأتي من واجهة API نفسها. فهي تمر كما هي، مع جسم ردّها، فيصل 404 من خدمتك إلى الوكيل كـ404.

هناك إعادة محاولة واحدة فقط. عندما ترد واجهة API بـ401 والاستدعاء استخدم اتصال OAuth2، يجلب إيكونوڤا رمزاً جديداً ويرسل الطلب مرة أخرى.

الحدود

الحد القيمة
مهلة الاستدعاء 15 ثانية، وغير قابلة للضبط
حجم الرد 256 كيلوبايت
التحويلات (redirects) لا تُتبع
العمليات التي يصل إليها الوكيل في كل دور 5، بحد درجة 0.5
طول القيمة الثابتة 2000 حرف
الحقول المثبّتة في كل عملية 50
العمليات في كل أداة مستوردة 2000

الأسئلة الشائعة

كيف أوقف الوكيل عن استدعاء عملية واحدة؟

أوقفها من مفتاح الشريط. يسري التغيير فوراً، ويُبلَّغ الوكيل بأن العملية غير متاحة بدلاً من استدعاء واجهة API الخاصة بك.

هل أستطيع منح عملية واحدة بيانات اعتماد مختلفة عن بقية واجهة API؟

ليس من نافذة الاستيراد. كل عملية تستخدم اتصال الأداة إلا إذا ضُبطت بطريقة أخرى عند الاستيراد، وجزء العقد يُظهر أي اتصال يسري: auth: <name> أو auth override: <name> أو no auth.

هل يستطيع الوكيل رؤية مفتاح API مثبَّت؟

لا. يُزال الحقل المثبَّت من العملية قبل أن يراه الوكيل، ويُعاد وضعه عند الاستدعاء، ولا تُعيد أي شاشة أو رد قيمة السر أبداً.

لماذا وصل إلى واجهة API طلب فيه {placeholder} غير مملوء؟

لم يُرسل الوكيل قيمة لمعامل المسار هذا. علّم المعامل بأنه مطلوب في المستند، أو ثبّته على قيمة ثابتة إذا كان لا يتغير أبداً.

هل تعرف واجهة API أي محادثة ينتمي إليها الاستدعاء؟

لا. يحمل الطلب بيانات الاعتماد والقيم التي ضبطتها فقط.