إرسال حدث
إصدار API 2026-10-affable-towhee
يُخبر Lingara بما حدث في لعبتك، مثل دخول المتعلّم إلى مكان جديد. يُسجَّل الحدث مرة واحدة ويُجاب عنه بـ 202. ومع generate: true يبدأ Lingara أيضًا خطة درس، تتطلب lesson_plans:write وتخضع للحدود والفوترة نفسها التي يخضع لها POST /v1/lesson-plans: يُسمّي reaction الخطة، ثم يتبعها lesson_plan.ready أو lesson_plan.failed. صِف العالم، ولا تُرسل أبدًا اسم لاعب أو محادثته.
النطاقات events:write
المعاملات
Lingara-Versionheaderstringاختياري- إصدار API الذي يُجاب عن هذا الطلب به. بدونه، يحصل رمز الوصول على الإصدار الذي رُبط به عميله، ويحصل الطلب الذي لا رمز مميز فيه على الإصدار الحالي. لا يمكن الوصول إلى الإصدار الذي لا يزال قيد التطوير إلا بذكره هنا. الإصدار غير المعروف يُجاب عنه بـ
400مع الرمزapi_version_unknown. يسردGET /v1/versionsالإصدارات. Idempotency-Keyheaderstringمطلوب- قيمة تختارها لكل حدث وتعيد استخدامها عند إعادة المحاولة: من 1 إلى 255 حرف ASCII مرئيًا، مثل UUID. تحصل إعادة المحاولة بالمفتاح نفسه على الإجابة الأولى ولا تُفوتَر مرة أخرى، حتى لو اختلف محتواها. وبدون مفتاح صالح يُجاب الطلب بـ
400مع الرمزidempotency_key_required.
متن الطلب application/json
typestringمطلوبdataWorldPracticeRequestedمطلوبtopicstringمطلوبsource_langstringمطلوبtarget_langstringمطلوبlevelintegerمطلوبtagsarray of stringاختياريgenerateboolean | nullاختياري
الاستجابات
202 تم تسجيل الحدث
idstringمطلوبtypestringمطلوبcreated_atstringمطلوبreactionReactionReport | nullاختياريstatusReactionStatusمطلوبplan_idstring | nullاختياريplan_statusPlanStatus | nullاختياريحالة الخطة عند قبول الحدث. وحدها
generatingتَعِد بأنlesson_plan.readyأوlesson_plan.failedسيتبع. وأي قيمة أخرى تعني خطة مقدَّمة من المكتبة، يمكنك قراءتها الآن عبرGET /v1/lesson-plans/{id}.codestring | nullاختياريerrorstring | 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مطلوب
مثال
curl -X POST "https://api.getlingara.com/v1/events" \
-H "Authorization: Bearer $LINGARA_TOKEN" \
-H "Idempotency-Key: $IDEMPOTENCY_KEY" \
-H "Content-Type: application/json" \
-d '{"type":"world.context_changed","data":{"scene":"A night market in Taipei, just after rain","npc":{"name":"Auntie Lin","persona":"a street-food vendor who likes to haggle"},"source_lang":"en","target_lang":"zh","level":3,"tags":["market","food","chapter-2"],"generate":true}}'إذا اختلفت ترجمةٌ عن المرجع الإنجليزي، فالمرجع الإنجليزي هو الصحيح.