إنشاء خطة درس
إصدار API 2026-10-affable-towhee
يبدأ إنشاء خطة درس ويبثّ تقدّمها. يحدّد started الخطة فور وجودها، بحيث يمكن للاتصال المنقطع أن يعيد الاتصال عبر GET /v1/lesson-plans/{id}/stream. ينتهي البث بـ result أو error. أما الخطة المقدَّمة من المكتبة فتصل على هيئة result منفرد.
النطاقات lesson_plans:write
المعاملات
Lingara-Versionheaderstringاختياري- إصدار API الذي يُجاب عن هذا الطلب به. بدونه، يحصل رمز الوصول على الإصدار الذي رُبط به عميله، ويحصل الطلب الذي لا رمز مميز فيه على الإصدار الحالي. لا يمكن الوصول إلى الإصدار الذي لا يزال قيد التطوير إلا بذكره هنا. الإصدار غير المعروف يُجاب عنه بـ
400مع الرمزapi_version_unknown. يسردGET /v1/versionsالإصدارات.
متن الطلب application/json
contextstringمطلوبsource_langstringمطلوبtarget_langstringمطلوبlevelintegerمطلوب
الاستجابات
200 تقدّم الخطة، ثم الخطة
أحداث البث text/event-stream
يرسل تعليق إبقاء الاتصال (keepalive) كل 15 ثانية.
-
startedPlanStarted -
plan_idstringمطلوب
-
phasePlanPhase -
phasestringمطلوبattemptintegerمطلوب
-
resultPlanResult ينهي البث -
planLessonPlanمطلوبidstringمطلوبstatusPlanStatusمطلوبtitlestring | nullاختياريsource_langstringمطلوبtarget_langstringمطلوبlevelintegerمطلوبcreated_atstringمطلوبcompleted_atstring | nullاختياريai_generatedbooleanمطلوبcontentLessonPlanContent | nullاختياريintroductionstring | nullاختياريlearning_objectivesarray of stringمطلوبvocabularyarray of PlanWordمطلوبwordstringمطلوبpronunciationstring | nullاختياريtranslationstringمطلوب
setsarray of PlanSetمطلوبnumberintegerمطلوبcontextstring | nullاختياريquestionsarray of PlanQuestionمطلوبtypestringمطلوبpromptstringمطلوبoptionsarray of string | nullاختياريanswerstringمطلوبexplanationstringمطلوبhintstring | nullاختياري
-
errorStreamError ينهي البث -
يصل داخل استجابة 200. سطر الحالة أُرسل بالفعل، لذا يُبلَّغ عن أي فشل بعد فتح البث على أنه هذا الحدث.
codestringمطلوبmessagestringمطلوبplan_idstring | nullاختياري
الأخطاء
402application/json- رُفض استدعاء عميل يُفوتَر بحسب الاستهلاك قبل أن يُنفق أي شيء.
spend_cap_reached: بلغ العميل أو حسابه حدّ الإنفاق الشهري؛ ارفع الحد في صفحة عمليات التكامل.metered_billing_inactive: الفوترة بحسب الاستهلاك غير مفعّلة لهذا الحساب؛ فعّلها أو حدّث طريقة الدفع في صفحة عمليات التكامل. 410application/json- تم إيقاف إصدار API الذي يُجاب عن هذا الطلب به. أرسل إصدارًا مدعومًا في
Lingara-Version، أو اربط العميل بإصدار آخر. 4XXapplication/json- رُفض الطلب. يوضّح
codeالسبب، ويشرحهerrorبالكلمات. 503application/json · text/plain- الخدمة غير متاحة مؤقتًا؛ أعد المحاولة بعد عدد الثواني المذكور في
Retry-After. أثناء الصيانة يكون المتن نصًا عاديًا بدلًا من غلاف الخطأ. 5XXapplication/json- رُفض الطلب. يوضّح
codeالسبب، ويشرحهerrorبالكلمات.
codestringمطلوبسبب رفض الطلب، في صورة رمز ثابت يمكن التفرّع بناءً عليه: مثل
insufficient_scope(403) وrate_limited(429)، ولعميل يُفوتَر بحسب الاستهلاكspend_cap_reached(402) وmetered_billing_inactive(402).errorstringمطلوب
مثال
تفضّل مكتبة؟ راجع قسم المكتبات.
مثال على البث
event: started
data: {"plan_id":"3f1c2a9e-5b7d-4e21-9a0c-6d8e4f2b1a37"}
event: phase
data: {"phase":"selecting_vocabulary","attempt":1}
event: result
data: {"plan":{"id":"3f1c2a9e-5b7d-4e21-9a0c-6d8e4f2b1a37","status":"complete","title":"At the night market","source_lang":"en","target_lang":"zh","level":2,"created_at":"2026-09-23T10:00:00Z","completed_at":"2026-09-23T10:00:41Z","ai_generated":true,"content":{"introduction":"Order food and ask prices at a night market.","learning_objectives":["Ask how much something costs"],"vocabulary":[{"word":"多少钱","pronunciation":"duōshao qián","translation":"how much"}],"sets":[{"number":1,"questions":[{"type":"multiple_choice_word","prompt":"Which word asks for a price?","options":["多少钱","谢谢"],"answer":"多少钱","explanation":"多少钱 means how much money."}]}]}}}إذا اختلفت ترجمةٌ عن المرجع الإنجليزي، فالمرجع الإنجليزي هو الصحيح.