Skip to Content
مرجع APIمركز المساعدة

مركز المساعدة

أدر مقالات مركز المساعدة في المشروع وفئاتها. يتطلّب تفعيل مركز المساعدة للمشروع — فحين يكون مطفأً، تعيد كل نقطة نهاية أدناه 404.

متون المقالات بتنسيق Markdown، لا HTML. وتعرضها البوابة عبر عارض لا يُنفّذ HTML الخام أبدًا، فأي HTML ترسله يُعرض للقرّاء كنص حرفي.

GET/v1/articles

ParameterTypeDescription
statusstringالتصفية حسب الحالة: draft أو published أو archived.
category_idstringالمقالات في هذه الفئة فقط.
limitintegerحجم الصفحة. الافتراضي 25، والحد الأقصى 100.
offsetintegerعدد العناصر المراد تخطّيها. الافتراضي 0.

GET/v1/articles/search

ParameterTypeDescription
qrequiredstringاستعلام البحث. يدعم العبارات بين علامات اقتباس، وOR، والنفي بـ -.
limitintegerعدد النتائج. الافتراضي 25، والحد الأقصى 100.

GET/v1/articles/:id

POST/v1/articles

ParameterTypeDescription
titlerequiredstringحتى 200 حرف.
bodystringMarkdown. حتى 50,000 حرف.
excerptstringملخّص من سطر واحد، حتى 300 حرف. يُشتق من المتن عند حذفه.
slugstringمقطع العنوان، حتى 80 حرفًا. يُشتق من العنوان عند حذفه.
category_idstringالفئة التي يُصنَّف المقال تحتها.

PATCH/v1/articles/:id

ParameterTypeDescription
titlestringعنوان جديد.
bodystringمتن Markdown جديد.
excerptstringملخّص جديد؛ وnull يمسحه.
slugstringمقطع عنوان جديد.
category_idstringفئة جديدة؛ وnull يجعل المقال غير مصنّف.
statusstringdraft أو published أو archived.

DELETE/v1/articles/:id

تُنشأ المقالات دائمًا كـمسودات — والنشر عملية PATCH منفصلة، فلا يصل شيء إلى بوابتك عرضًا. ويتطلّب إنشاء مقال وصول كتابة بخطة مدفوعة، وكذلك كل طريقة تعديل أخرى هنا.

سرد المقالات

curl "https://api.supdesk.app/v1/articles?status=published&limit=10" \ -H "Authorization: Bearer sd_live_..."
{ "data": [ { "id": "8f7a...", "title": "How do I reset my password?", "slug": "how-do-i-reset-my-password", "body": "Open **Settings**, then choose *Reset password*.", "excerpt": "Open Settings, then choose Reset password.", "status": "published", "category_id": "3c2b...", "published_at": "2026-07-01T09:12:00Z", "helpful_count": 12, "not_helpful_count": 1, "created_at": "2026-06-28T14:03:00Z", "updated_at": "2026-07-01T09:12:00Z" } ], "pagination": { "limit": 10, "offset": 0, "has_more": false } }

بلا تصفية، يعيد هذا المسودات والمقالات المؤرشفة أيضًا، بأحدث تحرير أولاً. مرّر status=published للحصول على ما يستطيع العملاء رؤيته فعلاً.

البحث في المقالات

curl "https://api.supdesk.app/v1/articles/search?q=reset+password&limit=5" \ -H "Authorization: Bearer sd_live_..."
{ "data": [ { "id": "8f7a...", "title": "How do I reset my password?", "slug": "how-do-i-reset-my-password", "category_slug": "getting-started", "category_name": "Getting started", "snippet": "Open Settings, then choose Reset password.", "rank": 0.6079 } ] }

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

جلب مقال

curl "https://api.supdesk.app/v1/articles/8f7a..." \ -H "Authorization: Bearer sd_live_..."

يعيد مقالاً واحدًا بالشكل نفسه الذي في القائمة، أو 404 عندما يكون المعرّف غير معروف في مشروعك.

إنشاء مقال

curl -X POST https://api.supdesk.app/v1/articles \ -H "Authorization: Bearer sd_live_..." \ -H "Content-Type: application/json" \ -d '{ "title": "How do I reset my password?", "body": "Open **Settings**, then choose *Reset password*.", "category_id": "3c2b..." }'
{ "data": { "id": "8f7a...", "title": "How do I reset my password?", "slug": "how-do-i-reset-my-password", "body": "Open **Settings**, then choose *Reset password*.", "excerpt": "Open Settings, then choose Reset password.", "status": "draft", "category_id": "3c2b...", "published_at": null, "helpful_count": 0, "not_helpful_count": 0, "created_at": "2026-07-01T09:12:00Z", "updated_at": "2026-07-01T09:12:00Z" } }

يعيد 201. وحذف slug يشتق واحدًا من العنوان، مع لاحقة -2 أو -3… إن كان ذلك العنوان مأخوذًا. وحذف excerpt يشتق واحدًا من المتن.

تحدّ خطتك عدد المقالات التي يمكن للمشروع الاحتفاظ بها — Free 5، وPro 50، وTeam بلا حدود. وبعد السقف يعيد هذا limit_reached (429). والمقالات المؤرشفة لا تُحتسب، فأرشفة واحد تحرّر مكانًا.

تحديث مقال

curl -X PATCH https://api.supdesk.app/v1/articles/8f7a... \ -H "Authorization: Bearer sd_live_..." \ -H "Content-Type: application/json" \ -d '{ "status": "published" }'

تُكتب الحقول التي ترسلها وحدها، فـ PATCH لا يفرّغ أبدًا شيئًا تركته. وضبط status على published يختم published_at أول مرة ويحافظ عليه بعدها — فتصحيح خطأ إملائي لا يجعل مقالاً قديمًا يبدو جديدًا. وضبطه على archived يُخرج المقال من الخدمة دون حذفه.

وإخراج مقال من الأرشيف يعيد فحص سقف الخطة، وقد يعيد limit_reached.

حذف مقال

curl -X DELETE https://api.supdesk.app/v1/articles/8f7a... \ -H "Authorization: Bearer sd_live_..."

يحذف المقال وملاحظات قرّائه نهائيًا، ويعيد 204. ولإخراج مقال من الخدمة مع الاحتفاظ به، اضبط حالته على archived بدلاً من ذلك.

الفئات

GET/v1/article-categories

ParameterTypeDescription
limitintegerحجم الصفحة. الافتراضي 25، والحد الأقصى 100.
offsetintegerعدد العناصر المراد تخطّيها. الافتراضي 0.

GET/v1/article-categories/:id

POST/v1/article-categories

ParameterTypeDescription
namerequiredstringحتى 80 حرفًا.
descriptionstringيظهر في البوابة، حتى 300 حرف.
sort_orderintegerموضع العرض. الافتراضي 0.

PATCH/v1/article-categories/:id

ParameterTypeDescription
namestringاسم جديد.
descriptionstringوصف جديد؛ وnull يمسحه.
sort_orderintegerموضع عرض جديد.

DELETE/v1/article-categories/:id

curl -X POST https://api.supdesk.app/v1/article-categories \ -H "Authorization: Bearer sd_live_..." \ -H "Content-Type: application/json" \ -d '{ "name": "Getting started", "sort_order": 1 }'
{ "data": { "id": "3c2b...", "name": "Getting started", "slug": "getting-started", "description": null, "sort_order": 1, "created_at": "2026-07-01T09:12:00Z" } }

تُسرد الفئات حسب sort_order، ثم حسب الاسم. وتُشتق الـ slugs من الاسم بالطريقة نفسها التي تُشتق بها slugs المقالات من العنوان.

حذف فئة يعيد 204 ولا يحذف مقالاتها — فتصبح غير مصنّفة وتبقى متاحة عبر البحث ومن الصفحة الأولى لمركز المساعدة.

الأخطاء

إلى جانب الرموز القياسية:

الرمزالحالةمتى
not_found404معرّف غير معروف — أو أن مركز المساعدة مطفأ لهذا المشروع.
forbidden403كتابة على خطة بلا وصول كتابة إلى API.
limit_reached429نفدت حصة مقالات الخطة.
Last updated on