# Haladás végpontjai

> A tanuló haladásának lekérése és mentése: GET /progress, GET /progress/course/{id} és POST /progress, példákkal.

A példák WordPress-alkalmazásjelszót használnak (`-u "felhasználó:jelszó"`). A `tanulo:…` a tanuló saját fiókja, az `admin:…` egy adminisztrátoré.

Mindhárom végpont bejelentkezett felhasználót kér, és mindig a saját haladását adja vagy írja.

## Haladás lekérése

Hitelesítés nélkül:

```bash title="Terminál"
curl "https://pelda.hu/wp-json/lms/v1/progress"
```

```json title="Válasz"
{ "code": "unauthorized", "message": "Hitelesítés szükséges.", "data": { "status": 401 } }
```

Egy kurzus haladása a tanuló fiókjával:

```bash title="Terminál"
curl -u "tanulo:xxxx xxxx xxxx xxxx xxxx xxxx" "https://pelda.hu/wp-json/lms/v1/progress/course/35"
```

```json title="Válasz"
{ "data": [], "course_progress": { "completed_lessons": 0, "total_lessons": 3, "percentage": 0 } }
```

A `data` egy eleme: `{ "user_id", "course_id", "lesson_id", "status", "completed_at", "created_at", "updated_at" }`. A `GET /progress` ugyanilyen sorokat ad az összes kurzusra: `{ "data": [ … ] }`.

## Lecke elvégzettnek jelölése: `POST /progress`

Mindhárom mező kötelező: `course_id`, `lesson_id` és `status`. A `status` lehet `not_started`, `in_progress` vagy `completed`. A tanulónak hozzá kell férnie a leckéhez.

```bash title="Terminál"
curl -u "tanulo:xxxx xxxx xxxx xxxx xxxx xxxx" -X POST -H "Content-Type: application/json" \
  -d '{"course_id":35,"lesson_id":37,"status":"completed"}' \
  "https://pelda.hu/wp-json/lms/v1/progress"
```

```json title="Válasz (alak)"
{ "success": true,
  "data": { "user_id": 2, "course_id": 35, "lesson_id": 37, "status": "completed", "completed_at": "…", "created_at": "…", "updated_at": "…" },
  "course_progress": { "completed_lessons": 1, "total_lessons": 3, "percentage": 33 } }
```

| Hiba | Ok |
|---|---|
| `400 invalid_request` „A lecke nem tartozik a megadott kurzushoz.” | A `course_id` nem a lecke saját kurzusa. |
| `403` „A lecke elvégzéséhez teljesítsd a lecke kvízét.” | Be van kapcsolva **A lecke elvégzéséhez sikeres kvíz kell** ([Kvízek](https://hub.hellowp.io/hu/docs/lw-plugins/lw-lms/beallitasok/kvizek/)), és a tanulónak még nincs sikeres kvíze. |
| `403 lesson_locked` | A lecke ütemezés miatt zárolva van. |

Amikor egy kurzus eléri a 100%-ot, egyszer lefut a `lw_lms_course_completed` akció. Erre köthetsz például tanúsítványt ([Fejlesztőknek](https://hub.hellowp.io/hu/docs/lw-plugins/lw-lms/fejlesztoknek/#akciók)).
