أريد كتابة وصف للمسار العملي باستخدام واجهة برمجة التطبيقات n8n، لكنني لا أعرف كيفية القيام بذلك، حاولت كتابة متغير وصف بنفسي في كائن meta في المسار العملي، لكن الأمر ببساطة لم ينجح. إذن سؤالي هو: كيف يمكنني كتابة وصفي باستخدام واجهة برمجة التطبيقات n8n؟
شكراً مقدماً لمن يجيب، أي مساعدة مقدرة.
ما رسالة الخطأ (إن وجدت)؟
يرجى مشاركة المسار العملي الخاص بك
(حدد العقد الموجودة على لوحتك واستخدم اختصارات لوحة المفاتيح CMD+C/CTRL+C و CMD+V/CTRL+V لنسخ ولصق المسار العملي.)
السبب في فشل محاولتك السابقة هو أن الوصف يجب أن يكون في المستوى الأعلى جداً من بيانات طلبك. كنت تحاول وضعه داخل كائن “meta”، لكن n8n لا يبحث عنه هناك؛ فهو يتوقع أن يكون الوصف حقلاً منفصلاً خاصاً به في نص الرسالة الرئيسي.
عليك أيضاً التأكد من أن برنامج n8n الخاص بك محدّث. في الإصدارات الأقدم، كان هناك خطأ كان يمنع الـ API فعلياً من قبول الأوصاف على الإطلاق، مما كان يسبب في إرسال النظام رسالة خطأ. تم إصلاح هذا في الإصدار 2.16.0، لذا طالما كنت تستخدم إصدارة أحدث، سوف ينجح.
لإصلاح هذا، ما عليك سوى إرسال طلب “PATCH” إلى نقطة نهاية سير العمل وتضمين الوصف كخاصية رئيسية. بدلاً من إدراجه داخل كائن، فقط اكتب "description": "نصك هنا" في جذر كود JSON الخاص بك، وسيقوم النظام بتحديث وصف سير العمل بشكل صحيح.
رسالة الخطأ Bad request - please check your parameters request/body/settings must NOT have additional properties
تعني أنك تُرسل في جسم طلبك، وتحديداً داخل كائن settings في سير العمل، مفتاحاً واحداً أو أكثر غير مسموح به بواسطة مخطط API الخاص بـ n8n.
وفقاً لتوثيق API، يقبل settings مجموعة محددة فقط من الحقول. يبدو مثال مختصر كما يلي:
إذا كان كائن settings الخاص بك يحتوي على أي مفاتيح إضافية أو مخصصة (على سبيل المثال myCustomSetting، أو حقول تمت إضافتها بواسطة إصدارات أقدم / بيانات واجهة المستخدم وليست جزءاً من المخطط الحالي)، ستستجيب API بالضبط:
request/body/settings must NOT have additional properties
كيفية إصلاحه:
تحقق من JSON الذي تُرسله (سواء من خلال عقدة n8n، أو عقدة HTTP Request، أو عميل خارجي).
داخل "settings": { ... }، احذف أي مفاتيح غير موجودة في توثيق API.
أرسل الطلب مرة أخرى مع كائن settings “نظيف”.
إذا كنت تأخذ JSON من GET /workflows/{id} ثم تستخدمه في PUT/التحديث، تأكد من أن:
على مستوى الجذر، احتفظ فقط بالحقول الصالحة مثل name و nodes و connections و settings و staticData و tags و description، وما إلى ذلك.
داخل settings، احتفظ فقط بالحقول المعرّفة في مخطط API الحالي، وإلا ستستمر في مواجهة خطأ “must NOT have additional properties”.
أنت قريب جداً، بمجرد إزالة تلك المفاتيح غير المدعومة من settings، يجب أن يبدأ الطلب نفسه في العمل كما هو متوقع. إذا كنت تريد لصق JSON الحالي لديك، يسعدني أن أشير إلى الخصائص التي تسبب المشكلة بالضبط.
لا، لم أرسل أي شيء مخصص في حقل الإعدادات الخاص بـ JSON، كما قلت، لقد قمت فقط بتعيين حقل الوصف الخاص بـ JSON على مستوى الجذر، هل أنا أفتقد شيئاً ما، أم أنني لا أفعل ذلك بشكل صحيح؟
الوصف ليس جزءاً من meta — بل هو حقل خاص به في جذر كائن سير العمل، يقف جنباً إلى جنب مع name وnodes وconnections وsettings. إذاً: GET سير العمل من /api/v1/workflows/{id}، أضف “description”: “نصك” على المستوى الأعلى (وليس داخل meta، وليس داخل settings)، ثم أرسل الكائن بأكمله مرة أخرى باستخدام PUT إلى نفس الـ Endpoint.
هناك شيئان أربكاني عندما فعلت هذا: الـ API العام صارم ويريد كائن سير العمل الكامل في المقابل، لذلك قد يفشل PATCH مع { “description”: “…” } فقط في التحقق من صحة المخطط — GET → أضف الحقل → PUT الشيء بأكمله. وإذا كانت نقطة النهاية /api/v1 العامة لا تزال لن تقبله، فإن نقطة النهاية الداخلية التي يستخدمها المحرر نفسه (/rest/workflows/{id}) تقبل الوصف بدون تذمر. يجب أن يؤدي ذلك إلى حفظه.
شكراً على حلك، حاولت تطبيقه، أعتقد أنك كنت تقصد سير العمل الذي قدمه @kjooleng، أنا آسف جداً، لكنني لم أفهمه، حاولت سير عمل @kjooleng وتم تنفيذه بنجاح لكنه لم يحدّث وصف سير العمل، هل كنت تقصد حلاً آخر أم أنك اقترحت تغييرات على سير العمل؟