API

REST API + OpenAPI 3.1

A Lectura platform 9 backend-szervize OpenAPI 3.1 sémával dokumentált. Minden szervizhez közvetlen Swagger UI elérés és gépgenerált OpenAPI JSON tartozik.

Szerviz-katalógus

A frontend a Next.js rewrite-okon keresztül éri el a backend-szervizeket — a táblázatban azokat a path-prefixeket sorolom fel, amiket a kliensből hívhatsz. A Swagger UI-t és az OpenAPI specifikációt minden szerviz közvetlen portján is meg lehet nyitni (development environmentben).

identity-svc

port 47081 Swagger UI openapi.json

Autentikáció, felhasználók, tenant-ek, API-kulcsok

  • POST /auth/login /api/identity/auth/loginEmail + jelszó → access + refresh token
  • POST /auth/refresh /api/identity/auth/refreshRefresh-token cseréje új access-tokenre
  • POST /auth/register /api/identity/auth/registerÚj fiók létrehozása (alapból `reader` szerepkör)
  • POST /auth/password-reset/request /api/identity/auth/password-reset/requestReset-link kérése emailre (DEV-ben a logba)
  • POST /auth/password-reset/confirm /api/identity/auth/password-reset/confirmToken + új jelszó
  • GET /users/me /api/identity/users/meA bejelentkezett felhasználó profilja

catalog-svc

port 47082 Swagger UI openapi.json

Publikációk, manifesztációk, kollekciók, dashboard

  • GET /publications /api/catalog/publicationsCursor-paginált lista, filter (status, search, tag, language)
  • GET /publications/{id} /api/catalog/publications/{id}Egy publikáció részletei
  • GET /publications/{id}/manifest.json /api/catalog/publications/{id}/manifest.jsonReadium WebPub Manifest (proxy a manifest-svc-ből)
  • GET /collections /api/catalog/collectionsKollekciók (sorozatok, témakörök)

manifest-svc

port 47086 Swagger UI openapi.json

Readium WebPub Manifest előállítás (NATS-event-vezérelt)

  • GET /manifests/{tenant}/{job_id}/manifest.json /api/manifest/manifests/{tenant}/{job_id}/manifest.jsonEgy konkrét manifest letöltése S3-ról

reader-svc

port 47087 Swagger UI openapi.json

Exploded EPUB asszet streaming (XHTML, CSS, képek)

  • GET /r/{tenant}/{job_id}/{path} /api/content/{tenant}/{job_id}/{path}Aláírt URL-en (HMAC) szolgált forrás
  • GET /sign/{tenant}/{job_id}/{path} /api/reader/sign/{tenant}/{job_id}/{path}Aláírt URL kibocsátása (JWT-vel)

progress-svc

port 47088 Swagger UI openapi.json

Olvasási haladás (CFI + százalék) eszközök közti szinkron

  • GET /me/progress /api/progress/me/progressA felhasználó összes haladás-rekordja
  • GET /me/progress/{id} /api/progress/me/progress/{id}Egy publikáció pozíciója
  • PUT /me/progress/{id} /api/progress/me/progress/{id}Pozíció upsert

annotation-svc

port 47089 Swagger UI openapi.json

Könyvjelzők és W3C Web Annotations

  • GET /me/bookmarks /api/annotation/me/bookmarksAz összes könyvjelző
  • PUT /me/bookmarks/{id} /api/annotation/me/bookmarks/{id}Könyvjelző upsert egy publikációra
  • GET /me/annotations/{id} /api/annotation/me/annotations/{id}Annotációk listája egy publikációra
  • POST /me/annotations/{id} /api/annotation/me/annotations/{id}Új kiemelés / jegyzet

analytics-svc

port 47090 Swagger UI openapi.json

Olvasási események + aggregált statisztika

  • POST /events /api/analytics/eventsOlvasási esemény (page_view, finish)
  • GET /me/stats /api/analytics/me/statsA felhasználó saját statisztikája

ingestion-svc

port 47083 Swagger UI openapi.json

Feltöltés + S3 presigned URL kiosztás

  • POST /uploads /api/ingestion/uploadsÚj feltöltés indítása
  • POST /uploads/{job_id}/complete /api/ingestion/uploads/{job_id}/completeSHA256 digest visszajelzése

integration-svc

port 47091 Swagger UI openapi.json

LMS-Gateway adapter — tanuló átküldés (backchannel + sessionId), eredmény-publish ASB-re, partner-formátumú katalógus

  • POST /launch/init /api/integration/launch/initBackchannel session-init a Gateway felől (X-Api-Key, scope: integration:launch:provision)
  • GET /launch/session/{sid} /api/integration/launch/session/{sid}Reader-web consume — kontextus + Lectura JWT access_token
  • POST /launch/terminate/{sid} /api/integration/launch/terminate/{sid}Szabályos kilépés vagy time-out
  • POST /events/result /api/integration/events/resultBelső eredmény-beíró (ASB outbox-ba; X-Api-Key, scope: integration:result:publish)
  • GET /catalog/epubs /api/integration/catalog/epubsPage-based katalógus (q, catalogId, organizationId, sort, order; X-Api-Key, scope: integration:catalog:read)

Konvenciók

JSON-tartalom, RFC 9457 ProblemDetails hibák, X-Trace-Id propagáció minden válaszban. POST/PUT idempotency-key fejléccel. Cursor-paginálás (?cursor=...&limit=...) ahol értelmes. Részletes konvenciókat a /docs/getting-started adja meg.