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 με την οποία απαντάται αυτό το αίτημα. Χωρίς αυτήν, ένα token πρόσβασης παίρνει την έκδοση στην οποία είναι δεσμευμένος ο πελάτης του και ένα αίτημα χωρίς token παίρνει την τρέχουσα έκδοση. Η έκδοση που βρίσκεται ακόμη υπό ανάπτυξη είναι προσβάσιμη μόνο αν την ονομάσετε εδώ. Μια άγνωστη έκδοση απαντάται με 400 και κωδικό api_version_unknown. Το GET /v1/versions παραθέτει τις εκδόσεις.
idpathstringυποχρεωτικό

Αποκρίσεις

200 Η υπόλοιπη πρόοδος του σχεδίου, έπειτα το σχέδιο

Συμβάντα ροής text/event-stream

Στέλνει ένα σχόλιο keepalive κάθε 15 δευτερόλεπτα.

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"}

Αν μια μετάφραση διαφέρει από την αγγλική τεκμηρίωση, ισχύει η αγγλική τεκμηρίωση.