Lingara Lingara لارښود لارښودونه API کتابتونونه اپلیکیشنونه جوړول ویب اپلیکیشن
ژبه: پښتو

د درس پلان ته بیا وصلېدل

د API نسخه 2026-10-affable-towhee

get https://api.getlingara.com/v1/lesson-plans/{id}/stream

د هغه پلان د پرمختګ جریان سره بیا یوځای کېږي چې لا جوړېږي. بشپړ شوی پلان په یوه result ځواب ورکوي. هغه پلان چې لا جوړېږي او د یوځای کېدو لپاره ژوندی جریان نه لري، په یوه pending ځواب ورکوي؛ GET /v1/lesson-plans/{id} تر هغه پورې په تکرار وپوښتئ چې بشپړ شي.

ساحې lesson_plans:read

پیرامیټرونه

Lingara-Versionheaderstringاختیاري
د API هغه نسخه چې دې غوښتنې ته پرې ځواب ورکول کېږي. له دې پرته، لاسرسي ټوکن هغه نسخه ترلاسه کوي چې د هغه کلاینټ ورسره تړل شوی، او بې ټوکنه غوښتنه اوسنۍ نسخه ترلاسه کوي. هغې نسخې ته چې لا هم د پراختیا په حال کې ده یوازې دلته د هغې په نومولو رسېدای شئ. نامعلومې نسخې ته د 400 او کوډ api_version_unknown سره ځواب ورکول کېږي. GET /v1/versions نسخې لېست کوي.
idpathstringاړین

ځوابونه

200 د پلان پاتې پرمختګ، بیا پخپله پلان

د جریان پېښې text/event-stream

هرو 15 ثانیو کې یوه keepalive تبصره لېږي.

started PlanStarted
plan_idstringاړین
phase PlanPhase
phasestringاړین
attemptintegerاړین
result PlanResult جریان پای ته رسوي
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اختیاري
pending PlanPending جریان پای ته رسوي
plan_idstringاړین
statusPlanStatusاړین
error StreamError جریان پای ته رسوي

د 200 ځواب دننه رارسېږي. د حالت کرښه دمخه لېږل شوې ده، نو د جریان له پرانیستو وروسته هره ناکامي د دې پېښې په توګه راپور کېږي.

codestringاړین
messagestringاړین
plan_idstring | nullاختیاري

تېروتنې

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

curl -N "https://api.getlingara.com/v1/lesson-plans/$ID/stream" \
  -H "Authorization: Bearer $LINGARA_TOKEN"

TypeScript

for await (const ev of client.streamLessonPlan({ id: planId })) {
  if (ev.event === "result") console.log("ready:", ev.data.plan.title);
  if (ev.event === "pending") console.log("still", ev.data.status, "- try again later");
}

Rust

use lingara::models::StreamLessonPlanEvent;

let mut stream = client.stream_lesson_plan(&plan_id).await?;
while let Some(event) = stream.next().await {
    match event? {
        StreamLessonPlanEvent::Result(result) => println!("ready: {}", result.plan.title.unwrap_or_default()),
        StreamLessonPlanEvent::Pending(pending) => println!("still {:?} - try again later", pending.status),
        _ => {}
    }
}

Go

// Rejoin a plan still generating, with the plan_id from its started event.
s, err := client.StreamLessonPlan(ctx, "3f1c2a9e-5b7d-4e21-9a0c-6d8e4f2b1a37")
if err != nil {
	return err
}
defer s.Close()
for ev, err := range s.Events() {
	if err != nil {
		return err
	}
	switch e := ev.(type) {
	case lingara.StreamLessonPlanEventResult:
		fmt.Println("ready:", e.Data.Plan.ID)
	case lingara.StreamLessonPlanEventPending:
		fmt.Println("still", e.Data.Status, "- rejoin later")
	}
}

Java

import com.getlingara.client.model.StreamLessonPlanEvent;

try (EventStream<StreamLessonPlanEvent> stream = client.streamLessonPlan(planId)) {
  for (StreamLessonPlanEvent event : stream) {
    if (event instanceof StreamLessonPlanEvent.Result result) {
      System.out.println(result.data().getPlan().getTitle());
    } else if (event instanceof StreamLessonPlanEvent.Pending pending) {
      // Still generating elsewhere: ask again later.
      System.out.println("pending: " + pending.data().getStatus());
    }
  }
}

Kotlin

import com.getlingara.kotlin.LingaraClient
import com.getlingara.kotlin.model.StreamLessonPlanEvent

client.streamLessonPlan(planId).use { stream ->
    stream.collect { event ->
        when (event) {
            is StreamLessonPlanEvent.Result -> println(event.data.plan.title)
            // Still generating elsewhere: ask again later.
            is StreamLessonPlanEvent.Pending -> println("pending: ${event.data.status}")
            else -> Unit
        }
    }
}

Ruby

client.stream_lesson_plan(plan_id) do |event|
  case event
  in Lingara::StreamLessonPlanEventResult => result then puts "ready: #{result.data.plan.title}"
  in Lingara::StreamLessonPlanEventPending => pending then puts "still #{pending.data.status}, try again later"
  else nil
  end
end

PHP

use Lingara\Stream\StreamLessonPlanEvent;

foreach ($client->streamLessonPlan($planId) as $event) {
    if ($event instanceof StreamLessonPlanEvent\Result) {
        echo 'ready: ', $event->data->getPlan()->getTitle(), "\n";
    } elseif ($event instanceof StreamLessonPlanEvent\Pending) {
        echo 'still ', $event->data->getStatus()->value, ", try again later\n";
    }
}

کتابتون غوره بولئ؟ د کتابتونونو برخه وګورئ.

د جریان بېلګه

event: pending
data: {"plan_id":"3f1c2a9e-5b7d-4e21-9a0c-6d8e4f2b1a37","status":"generating"}

که یوه ژباړه له انګلیسي مرجع سره توپیر ولري، انګلیسي مرجع سمه ده.