ابنِ على الواجهة البرمجية التي تعمل بها تطبيقات فكرة.

الاستوديو والمشغّل ولوحة الإدارة تقرأ وتكتب عبر واجهة REST واحدة، وخدمتك تستدعي نقاط النهاية نفسها للمؤسسات والمسارات والوحدات والتقدّم.

zsh · fkra api
{ "statusCode": 200, "data": { "isRevoked": false, … } }
/api/v1200 OK
POST/public/user/login/credentialتسجيل الدخولPOST/shared/user/refreshتدوير الرموزGET/shared/user/profileالمستخدم الحاليGET/user/learning/pathsالمسارات المنشورةGET/public/certificate-verify/:codeالتحقق من شهادة
كل شاشات التطبيق، ونقاط النهاية نفسها

ما يقدر عليه التطبيق تقدر عليه الواجهة

التوثيقللمطوّرينمقدمة

واجهة فكرة البرمجية

واجهة REST واحدة خلف كل شاشة في فكرة. الكائنات ذاتها، والصلاحيات ذاتها، وسجل التدقيق ذاته، سواء جاء الطلب من الاستوديو أو المشغّل أو خدمتك أنت.

العنوان الأساسيhttps://<your-api-host>/api/v1المصادقةx-api-key · Bearerنوع المحتوىapplication/json

ملاحظةيعرض كل مقطع طلبًا والاستجابة التي يعيدها. وتعرض بيئات التشغيل غير الإنتاجية المرجع الكامل بصيغة OpenAPI على /docs.

بداية سريعة

#

ثلاثة طلبات، من تسجيل الدخول إلى المحتوى. سجّل الدخول، واقرأ بيانات المستخدم الحالي، ثم اعرض مسارات التعلّم.

أرسل البريد الإلكتروني وكلمة المرور، فتحصل على رمز وصول ورمز تحديث. ويتطلب الطلب أيضًا رمز CAPTCHA محلولًا. أما الحسابات التي فعّلت التحقق بخطوتين فتتلقى طلب تحقق بدل الرموز.

login.sh
curl -X POST "https://<your-api-host>/api/v1/public/user/login/credential" \  -H "Content-Type: application/json" \  -H "x-api-key: $FKRA_KEY:$FKRA_SECRET" \  -H "x-captcha-token: $CAPTCHA_TOKEN" \  -d '{ "email": "amina@acme.edu", "password": "…", "from": "website" }'
POST/api/v1/public/user/login/credential200 OK
معاملات متن الطلب
الحقلالنوعالوصف
emailمطلوبstringالبريد الإلكتروني للحساب.
passwordمطلوبstringكلمة مرور الحساب.
fromمطلوبenumwebsite أو mobile، بحسب مكان تسجيل الدخول.

المصادقة

#

تحمل الطلبات بعد تسجيل الدخول بيانات اعتماد اثنتين: مفتاح API يعرّف تطبيقك ويُرسل مع كل طلب، ورمز الوصول يعرّف المستخدم ويُرسل مع كل نقطة نهاية تتطلب تسجيل الدخول.

shell
curl "https://<your-api-host>/api/v1/shared/user/session/list" \  -H "x-api-key: $FKRA_KEY:$FKRA_SECRET" \  -H "Authorization: Bearer $ACCESS_TOKEN"
accessTokenرمز JWT موقّع بخوارزمية ES256. أرسله في ترويسة Authorization بصيغة Bearer، ويحدد expiresIn مدة صلاحيته بالثواني.refreshTokenرمز JWT موقّع بخوارزمية ES512، ولا تقبله إلا نقطة نهاية التحديث. كل تحديث يستبدل الرمزين معًا، وتحتفظ الجلسة بموعد انتهائها المحدد عند تسجيل الدخول.

تنبيهلا يظهر السرّ إلا مرة واحدة عند إنشاء المشرف للمفتاح. احفظه على خادمك، وأعد تعيين المفتاح من /admin/system/api-keys.

عرّف أنواع وحداتك

#

يسجّل المشرف نوع الوحدة بمخطّطَي JSON، أحدهما للإعدادات والآخر للمحتوى، ويبني الاستوديو نماذج التحرير منهما.

module-type.json
{  "key": "practice.branching_scenario",  "learnerAction": "Decide",  "configSchema": {    "properties": {      "branches": { "type": "array", "minItems": 2 },      "endings":  { "type": "array", "minItems": 2 },      "scoring":  { "enum": ["rubric", "points"] }    }  },  "bodySchema": {    "properties": { "persona": { "type": "string" } }  }}
كما يظهر في الاستوديو
branching_scenarioعُطل حرج في الثالثة فجرًا
personaon-call-engineerbranches4endings3scoringrubric
fkra/admin/content/module-typeمباشر

المؤسسات والأدوار والصلاحيات

#

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

المستأجرacme-academy.fkra.ai019f6a2e-…
الصلاحية
learningModule · publishنشر الوحدات
apiKey · createإنشاء مفاتيح API وإعادة تعيينها
assessment · updateبدء التقييمات والإجابة عنها وتسليمها
يُخزَّن الأعضاء والمحتوى والنشاط في acme-academy تحت معرّف مؤسستها./admin/system/roles · مباشر

العربية والإنجليزية في صميم المنصة.

#

كل شاشة تصدر بالعربية والإنجليزية بتخطيط من اليمين إلى اليسار: المحتوى ولوحات المتابعة والشهادات.

أرسل x-custom-lang: ar فتصلك الرسالة بالعربية، ويُضبط metadata.language على القيمة نفسها. أما نقاط نهاية المحتوى التعليمي فتقرأ Accept-Language وتذكر اللغة التي قدّمت بها المحتوى، مع مؤشر عند الرجوع إلى لغة بديلة.

ENReading our codebasev4.2 · approved
01Absorb12 min02Connect09 min03Evaluate06 min04Practice18 min
Readiness72%
ARقراءة قاعدة الكود لديناالإصدار 4.2 · معتمد
01استيعاب12 د02ربط9 د03تقييم6 د04ممارسة18 د
الجاهزية72%

نقاط النهاية

#

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

يتطلبx-api-key · x-captcha-tokenيُعيدUserLoginResponseDto
{ "isTwoFactorEnable": false, "tokens": { "tokenType": "Bearer", "expiresIn": 3600, … } }
بقية نقاط النهاية، بمخطّطات طلباتها واستجاباتها، في مرجع OpenAPI على/docs

الاستجابات وترقيم الصفحات

#

تحمل كل استجابة رمز حالة رقميًا، ورسالة بلغة المستدعي، وبيانات وصفية عن الطلب، ثم البيانات نفسها. وتضيف القوائم المرقّمة حالة الترقيم إلى البيانات الوصفية.

المعاملمثالالنمط
page1offset
perPage20offset · cursor
cursormetadata.nextCursorcursor
searchaminaoffset · cursor
orderBycreatedAt:descoffset · cursor
البيانات الوصفية في صفحة بالمؤشر
"metadata": {  "language": "en",  "path": "/api/v1/shared/user/session/list",  "version": "1",  "type": "cursor",  "perPage": 20,  "hasNext": true,  "hasPrevious": false,  "nextCursor": "eyJ…",  "orderBy": [{ "createdAt": "desc" }],  "availableOrderBy": ["createdAt", "updatedAt"]}

الأخطاء والحدود

#

تصل الأخطاء في الغلاف نفسه. تبيّن حالة HTTP نوع الخطأ، ويبيّن statusCode في المتن رمز فكرة للسبب بدقة. وتضيف أخطاء التحقق مصفوفة errors فيها عنصر لكل حقل.

4015100 · 5102مفتاح API مفقود أو غير سليم أو منتهي الصلاحية، أو سرّه غير مطابق.
4015120 · 5041رمز الوصول مفقود أو منتهي الصلاحية، أو أُلغيت جلسته.
4035101لا يوجد مفتاح API نشط مطابق.
4035063 · 5180دور المستخدم أو صلاحياته لا تشمل نقطة النهاية هذه.
4036104لم يوافق المستخدم على شروط الخدمة وسياسة الخصوصية الحالية.
4225030لم يجتز متن الطلب أو معاملات الاستعلام التحقق.
429429طلبات كثيرة من هذا العميل. انتظر المدة المحددة في Retry-After.
5035000تعذّر التحقق من الرمز حاليًا. أعد إرسال الطلب.
خطأ تحقق
HTTP/1.1 422 Unprocessable Entity {  "statusCode": 5030,  "message": "There are validation errors.",  "metadata": { "language": "en", "version": "1", … },  "errors": [    {      "key": "isNotEmpty",      "property": "password",      "message": "password cannot be empty."    }  ]}

الحدود100 طلب كل 10 ثوانٍ، تُحسب لكل عنوان عميل لا لكل مفتاح. وبعد تجاوزها تردّ الواجهة بالحالة 429 مع ترويسة Retry-After بالثواني. وللتحقق من الشهادات حدّ مستقل قدره 60 طلبًا في الدقيقة.

سجل تدقيق

#

تُسجَّل عمليات الدخول وتعديلات المحتوى وتغييرات الأدوار ومفاتيح API والشهادات الصادرة، مع المستخدم والإجراء وعنوان IP والجهاز. وتُسجَّل المحاولات الفاشلة أيضًا، ويستطيع المشرف تصدير أحداث الأدوار بصيغة CSV.

GET /api/v1/admin/activity-log/listالأحداث: 3
14:02:11learningModuleUpdatedpolicy-v4-2amina@acme.edu14:02:48userLoginCredentialwebsite · 10.4.2.18noor@acme.edu14:07:44adminApiKeyCreatepartner-syncamina@acme.edu

بقية المنصة

#

كلها متاحة في كل مساحة عمل.

التحليلاتالتفاعل والجاهزية والإكمال، لحظيًا لكل فريقالإشعاراتالإنجازات والشهادات تصل لحظة استحقاقهااستكشفواجهة عرض لكل ما تعلّمه مؤسستكالمجتمعاتمجموعات ممارسة وفعاليات واستطلاعات ونقاشات على الوحداتالتلعيبنقاط وشارات وسلاسل أيام وشهادات قابلة للتحققالخط الزمني للوسائطفصول وإشارات وعلامات وملاحظات على كل فيديومسارات التعلّممراحل ومتطلبات ونواتج، مرتبة حسب الصعوبةالتقييماتمعالج تأليف وجلسات موقوتة وتصحيح على الخادم

ابنِ على فكرة

#

تصل رسالتك إلى المؤسسين مباشرة، دون مندوبي مبيعات أو نماذج تأهيل. hello@fkra.ai

استكشف المزيد