Áttekintés
Három szerverrel dolgozol. Mindegyik HTTPS-en, JSON-t ad vissza.
| Szerver | Mire való |
|---|---|
https://idp.e-kreta.hu | Bejelentkezés (OpenID Connect): authorize, token, revocation |
https://{intezmeny}.e-kreta.hu | Az iskola saját szervere. Az ellenőrző végpontjai az /ellenorzo/V3/Sajat/ alatt vannak. |
https://eugyintezes.e-kreta.hu | Üzenetek, címzettek, csatolmányok (/api/v1/) |
Minden végpont mellett jelöljük, mennyire biztos: működik a Radír app napi szinten használja, tesztekkel; működik · kreta-tui egy friss nyílt forrású kliens (kreta-tui, 2026. október) használja, mi nem teszteltük; nem ellenőrzött régebbi kliensekből ismert; elavult már nem működik.
Az {intezmeny} az iskola intézménykódja, például klik012345001. A bejelentkezés után az access tokenből olvasható ki (lásd lent).
Iskola keresése
https://idp.e-kreta.hu/logininstituteselector?searchValue={keresés}Ugyanaz a kereső, ami a KRÉTA bejelentkező oldalán az iskolaválasztó mezőt tölti ki. Legalább 3 karakter kell: OM-azonosító, névrészlet vagy intézménykód. Nem JSON-t ad, hanem HTML-részletet; minden találat egy link, a data-val attribútumban az intézménykóddal:
<a … data-val="klik012345001">Petőfi Sándor Gimnázium (Budapest)</a>
Böngészős user agenttel kérd le. A régi, JSON-os intézménylista (kretaglobalmobileapi2.ekreta.hu/api/v3/Institute) már 404-et ad, lásd az elavult módszereknél.
Bejelentkezés (OAuth + PKCE)
A mobilapp ugyanazt a folyamatot használja, mint egy böngészős OAuth bejelentkezés. A felhasználó a KRÉTA saját oldalán adja meg a jelszavát, a kliens csak egy egyszer használható kódot kap vissza. Jelszót a kliensnek soha nem kell látnia.
1. A PKCE kulcspár
Minden bejelentkezéshez új code_verifier kell: egy véletlen, base64url kódolású érték (32 bájt). A code_challenge ennek SHA-256 hashe, szintén base64url, kiegészítő = nélkül (RFC 7636, S256).
2. A bejelentkező oldal megnyitása
https://idp.e-kreta.hu/connect/authorize| Paraméter | Érték |
|---|---|
client_id | kreta-ellenorzo-student-mobile-ios |
redirect_uri | https://mobil.e-kreta.hu/ellenorzo-student/prod/oauthredirect |
response_type | code |
scope | openid email offline_access kreta-ellenorzo-webapi.public kreta-eugyintezes-webapi.public kreta-fileservice-webapi.public kreta-mobile-global-webapi.public kreta-dkt-webapi.public kreta-ier-webapi.public |
code_challenge | az 1. lépés challenge-e |
code_challenge_method | S256 |
state, nonce | véletlen értékek; a state-et a visszatéréskor ellenőrizd |
prompt | login (mindig kérje a belépést) |
Nyisd meg ezt az URL-t egy webnézetben. Sikeres belépés után a KRÉTA átirányít a redirect_uri-ra, ?code=…&state=… paraméterekkel. Az átirányítást a webnézetben kell elkapni: ellenőrizd, hogy a host és az útvonal pontosan a redirect_uri-é, és hogy a state egyezik.
Webnézet nélkül működik · kreta-tui
Ha nincs böngésződ (például parancssori kliensnél), a bejelentkező űrlapot el lehet küldeni közvetlenül is. Mobilappban ne így csináld: ekkor a jelszó a te kódodon megy át.
- Kérd le az authorize URL-t (sütikkel, átirányításokat követve). A bejelentkező oldal HTML-jéből olvasd ki a
__RequestVerificationTokenés aReturnUrlrejtett mezőt. POST https://idp.e-kreta.hu/account/loginform-kódolva,Referer(a bejelentkező oldal) ésOrigin: https://idp.e-kreta.hufejléccel. Mezők:ReturnUrl,IsTemporaryLogin=False,UserName,Password,InstituteCode,loginType=InstituteLogin,ClientId(üres),__RequestVerificationToken.- Kövesd az átirányításokat a
redirect_uri-ig, és vedd ki acode-ot. Néha a válasz egy/connect/authorize/callback?…linket tartalmaz átirányítás helyett; ezt kell megnyitni. - Ha az oldalon captcha (
g-recaptcha) van, ez az út nem működik, a böngészős belépés kell.
3. A kód cseréje tokenre
https://idp.e-kreta.hu/connect/tokenContent-Type: application/x-www-form-urlencoded; charset=UTF-8, és a token végpont a hivatalos app user agentjét várja:
User-Agent: eKretaStudent/264745 CFNetwork/1494.0.7 Darwin/23.4.0
| Mező | Érték |
|---|---|
grant_type | authorization_code |
code | az átirányításból kapott kód |
code_verifier | az 1. lépés verifiere |
redirect_uri, client_id | ugyanaz, mint fent |
curl -X POST https://idp.e-kreta.hu/connect/token \
-H 'Content-Type: application/x-www-form-urlencoded; charset=UTF-8' \
-H 'User-Agent: eKretaStudent/264745 CFNetwork/1494.0.7 Darwin/23.4.0' \
--data-urlencode 'grant_type=authorization_code' \
--data-urlencode 'client_id=kreta-ellenorzo-student-mobile-ios' \
--data-urlencode 'redirect_uri=https://mobil.e-kreta.hu/ellenorzo-student/prod/oauthredirect' \
--data-urlencode 'code=KOD' \
--data-urlencode 'code_verifier=VERIFIER'Válasz:
{
"access_token": "eyJ…",
"refresh_token": "…",
"expires_in": 1800,
"token_type": "Bearer"
}
Mi van az access tokenben?
Az access token egy JWT. A payloadból (a második, base64url részből) ezek kellenek:
| Claim | Jelentés |
|---|---|
kreta:institute_code | intézménykód, ez kerül a szerver címébe |
kreta:user_name | felhasználónév (oktatási azonosító) |
role | Tanulo vagy Gondviselo |
name | a felhasználó neve (nem mindig van benne) |
Token frissítés és visszavonás
https://idp.e-kreta.hu/connect/tokenUgyanaz a végpont és user agent, mint a kódcserénél, más mezőkkel:
| Mező | Érték |
|---|---|
grant_type | refresh_token |
refresh_token | az utolsó kapott refresh token |
institute_code | intézménykód |
client_id | kreta-ellenorzo-student-mobile-ios |
refresh_user_data | false |
A válasz új access és új refresh tokent ad, a régi refresh token ezután érvénytelen. Ha a kérésre 400 jön {"error": "invalid_grant"} törzzsel, a refresh token lejárt vagy visszavonták: újra be kell jelentkezni.
Kijelentkezés
https://idp.e-kreta.hu/connect/revocationMezők: token (a refresh token), token_type_hint=refresh_token, client_id. A hibát nyugodtan elnyelheted, a helyi tokeneket úgyis törölni kell.
Hitelesített kérések
Minden további kéréshez két fejléc kell:
Authorization: Bearer ACCESS_TOKEN
User-Agent: hu.ekreta.student/{appverzió}/{platform}/0
Például hu.ekreta.student/1.0.5/Android/0/0 vagy hu.ekreta.student/5.0.0/iOS/0. A szerver ezt a mintát várja. Ismeretlen user agentnél előfordult, hogy lassított vagy elutasított.
- Az access token kb. 30 percig él. Érdemes lejárat előtt (pl. 30 mp ráhagyással) frissíteni, és
401-re is frissíteni, majd egyszer újrapróbálni. - Ha egyszerre több kérés indul, csak egy frissítés fusson. Két párhuzamos refresh közül a második már érvénytelen refresh tokennel menne.
- A dátumok ISO 8601-ben jönnek, UTC-ben (
2026-11-12T08:55:00Z), néha tört másodperccel. A lekérdezési paramétereknél elég a nap:2026-11-09.
Ellenőrző végpontok
Mindegyik GET, az alapcím https://{intezmeny}.e-kreta.hu/ellenorzo/V3/Sajat/. A válasz egy JSON tömb vagy objektum, a mezők nagybetűvel kezdődnek. Az azonosítók (Uid) szövegek. A hivatkozott objektumok (Tantargy, Tipus…) általában Uid + Nev (+ Leiras) mezőket tartalmaznak.
Tanuló adatlap
/ellenorzo/V3/Sajat/TanuloAdatlap| Mező | Jelentés |
|---|---|
Uid, Nev | azonosító, név |
SzuletesiNev, SzuletesiDatum, AnyjaNeve | személyes adatok |
Cimek, Gondviselok | címek, gondviselők listája |
IntezmenyAzonosito, IntezmenyNev | az iskola |
Intezmeny.TestreszabasBeallitasok.ErtekelesekMegjelenitesenekKesleltetesenekMerteke | hány percig rejtett egy új jegy a beírás után |
Értékelések (jegyek)
/ellenorzo/V3/Sajat/Ertekelesek| Mező | Jelentés |
|---|---|
Uid | azonosító |
Tantargy | Uid, Nev, Kategoria.Nev |
SzamErtek | a jegy számként (1–5), szöveges értékelésnél 0 |
SzovegesErtek, SzovegesErtekelesRovidNev | pl. Jeles(5), illetve rövid alak |
SulySzazalekErteke | súly százalékban (100, 200…) |
Tipus.Nev | lásd lent: évközi, félévi, év végi… |
Mod.Leiras | az értékelés módja, pl. Írásbeli témazáró dolgozat |
ErtekFajta | az értékelés fajtája (osztályzat, szöveges…) |
Tema | téma |
KeszitesDatuma, RogzitesDatuma | a jegy dátuma, illetve a beírás ideje |
ErtekeloTanarNeve | a tanár |
Opcionálisan szűrhető: ?datumTol=2026-09-01&datumIg=2026-12-31. Ugyanez működik a Mulasztasok és a BejelentettSzamonkeresek végponton is; szűrés nélkül az egész tanévet adja.
Tipus.Nev értékei: evkozi_jegy_ertekeles, I_ne_jegy_ertekeles, II_ne_jegy_ertekeles, felevi_jegy_ertekeles, III_ne_jegy_ertekeles, IV_ne_jegy_ertekeles, evvegi_jegy_ertekeles, osztalyozo_vizsga. Az év végi bizonyítvány jegyei evvegi_jegy_ertekeles típusúak.
Átlagok
Az osztályátlaghoz előbb kell az osztály oktatási-nevelési feladatának azonosítója:
/ellenorzo/V3/Sajat/OsztalyCsoportokA lista első elemének OktatasNevelesiFeladat.Uid mezője kell. Ezzel:
/ellenorzo/V3/Sajat/Ertekelesek/Atlagok/OsztalyAtlagok?oktatasiNevelesiFeladatUid={Uid}Elemenként Tantargy.Uid és OsztalyCsoportAtlag (az osztály átlaga az adott tantárgyból).
/ellenorzo/V3/Sajat/Ertekelesek/Atlagok/TantargyiAtlagok?oktatasiNevelesiFeladatUid={Uid}A csoport összes tantárgya, azok is, amelyekből még nincs jegy. Jó arra, hogy az üres tantárgyak is megjelenjenek.
Órarend
/ellenorzo/V3/Sajat/OrarendElemek?datumTol=2026-11-09&datumIg=2026-11-13| Mező | Jelentés |
|---|---|
Uid, Datum | azonosító, a nap |
KezdetIdopont, VegIdopont | az óra kezdete és vége |
Oraszam, OraEvesSorszama | hányadik óra a napon, illetve az évben |
Nev, Tantargy | az óra neve, a tantárgy |
TeremNeve, TanarNeve | terem, tanár |
HelyettesTanarNeve | ha nem üres, az óra helyettesítés |
Allapot.Nev | Elmaradt, ha az óra elmarad |
Tema, TanuloJelenlet | az óra témája, a jelenlét |
HaziFeladatUid, BejelentettSzamonkeresUid | kapcsolt házi feladat és számonkérés |
OsztalyCsoport.Nev, IsDigitalisOra | csoport, digitális óra-e |
Egy héten belül kérj (hétfőtől péntekig vagy vasárnapig). A szünetek nincsenek benne, azokat a szomszédos órák idejéből lehet kiszámolni.
Mulasztások
/ellenorzo/V3/Sajat/Mulasztasok| Mező | Jelentés |
|---|---|
Uid, Datum | azonosító, a nap |
Tipus.Nev | hiányzás vagy késés |
KesesPercben | késésnél a percek |
IgazolasAllapota | Igazolt, Igazolando vagy igazolatlan |
IgazolasTipusa | az igazolás fajtája |
Ora | KezdoDatum, VegDatum, Oraszam |
Tantargy, RogzitoTanarNeve, KeszitesDatuma | tantárgy, ki és mikor írta be |
Bejelentett számonkérések
/ellenorzo/V3/Sajat/BejelentettSzamonkeresekMezők: Uid, Datum (a dolgozat napja), BejelentesDatuma, OrarendiOraOraszama, Tantargy, Temaja, Modja (pl. írásbeli témazáró), RogzitoTanarNeve.
Házi feladatok
/ellenorzo/V3/Sajat/HaziFeladatok?datumTol=2026-11-01/ellenorzo/V3/Sajat/HaziFeladatok/{Uid}Mezők: Uid, Tantargy, Szoveg (HTML), FeladasDatuma, HataridoDatuma, RogzitoTanarNeve, IsTanarRogzitette, Csatolmanyok. A lista rövidített lehet; a teljes szöveghez kérd le az elemet külön.
Feljegyzések
/ellenorzo/V3/Sajat/FeljegyzesekDicséretek, figyelmeztetések, üzenőfüzet-bejegyzések. Mezők: Uid, Cim, Tartalom, Tipus, Datum, KeszitesDatuma, KeszitoTanarNeve.
Faliújság
/ellenorzo/V3/Sajat/FaliujsagElemekIskolai hirdetmények. Mezők: Uid, Cim, Tartalom (HTML), ErvenyessegKezdete, ErvenyessegVege. Csak az érvényességi időn belüli elemeket érdemes mutatni.
További végpontok nem ellenőrzött
Ezeket a reFilc forráskódja ismeri, a Radír nem használja, ezért nem teszteltük:
GET /ellenorzo/V3/Sajat/Intezmenyek: az iskola adataiGET /ellenorzo/V3/Sajat/Csatolmany/{Uid}: házi feladat csatolmánya/ellenorzo/V3/Sajat/HaziFeladatok/Megoldva: házi feladat megoldottnak jelölése
Üzenetek (eÜgyintézés)
Alapcím: https://eugyintezes.e-kreta.hu/api/v1/. Ugyanaz az access token és user agent kell, de itt a mezők kisbetűsek.
/api/v1/kommunikacio/postaladaelemek/{mappa}A {mappa} értéke beerkezett, elkuldott vagy torolt. Elemenként: azonosito (szám), isElolvasva, uzenetFeladoNev, uzenetTargy, uzenetKuldesDatum, hasCsatolmany. A szöveg itt még nincs benne.
/api/v1/kommunikacio/postaladaelemek/{azonosito}Egy üzenet részletei; a KRÉTA ilyenkor olvasottnak jelöli. A uzenet objektumban: kuldesDatum, feladoNev, targy, szoveg (HTML), cimzettLista[].nev, csatolmanyok[] (azonosito, fajlNev).
/api/v1/dokumentumok/uzenetek/{csatolmanyAzonosito}A csatolmány bináris tartalma.
Címzettek
/api/v1/adatszotarak/cimzetttipusok/api/v1/kreta/alkalmazottak/tanar/api/v1/kreta/alkalmazottak/igazgatosagA címzetttípusok közül diákként a TANAR és az IGAZGATOSAG kódú címezhető (azonosito, kod, leiras, nev, rovidNev). Az alkalmazottak listájában kretaAzonosito és nev van.
Üzenet küldése
/api/v1/kommunikacio/uzenetekJSON törzs, Content-Type: application/json és X-Uzenet-Lokalizacio: hu-HU fejléccel:
{
"cimzettLista": [{
"kretaAzonosito": 12345,
"nev": "Tanár Neve",
"tipus": { "azonosito": 1, "kod": "TANAR", "leiras": "…", "nev": "…", "rovidNev": "…" }
}],
"csatolmanyok": [],
"azonosito": 12345,
"feladoNev": "Diák Neve",
"feladoTitulus": "Diák",
"kuldesDatum": "2026-11-13T10:00:00Z",
"targy": "Tárgy",
"szoveg": "Az üzenet szövege"
}
Ha az iskola nem engedi a diákoknak az üzenetküldést, a válaszban "hibakod": "UzenetKuldesEngedelyRule" jön. Gondviselőnél a feladoTitulus Szülő.
Nem ellenőrzött (reFilc): postaladaelemek/kuka és postaladaelemek/torles (kukába tétel, végleges törlés), cimezhetotipusok.
DKT: beadandó feladatok működik · kreta-tui
A Digitális Kollaborációs Tér (DKT) a házi és órai feladatok beadására való, saját API-val. Ugyanaz az access token kell hozzá. Forrás: kreta-tui (2026); a Radír nem használja.
Az iskola DKT-címe
https://kretadktapi-kk.e-kreta.hu/dktapi/intezmenyek/bff/urlEgy JSON szöveget ad vissza: az iskola saját DKT alapcímét (a továbbiakban {dkt}). Utána:
{dkt}/intezmenyek/felhasznalo/tanuloEbből kell az intezmenyId és a tanevId. Minden további DKT-kéréshez fejlécként is el kell küldeni őket:
IntezmenyId: {intezmenyId}
TanevId: {tanevId}
Feladatok és beadás
A {fajta} értéke hazifeladatok vagy oraifeladatok.
| Kérés | Mire való |
|---|---|
GET /intezmenyek/tanulok/{fajta} | a feladatok listája |
GET /intezmenyek/tanulok/{fajta}/{feladat}/fajlok | a tanár által csatolt fájlok |
GET /intezmenyek/tanulok/{fajta}/{feladat}/beadas | a saját beadásod. Az első hívás létre is hozza („Megnyitotta” állapot), mint a weben a megnyitás. |
PUT /intezmenyek/tanulok/{fajta}/beadasok/{beadas} | válaszszöveg mentése beadás nélkül: {"szoveg": "<p>…</p>"} (HTML) |
GET /intezmenyek/tanulok/{fajta}/beadasok/{beadas}/beadas | beadja a feladatot. Igen, GET kéréssel. |
GET /intezmenyek/tanulok/{fajta}/beadasok/{beadas}/fajlok | a beadáshoz csatolt saját fájlok |
DELETE /intezmenyek/tanulok/{fajta}/beadasok/{beadas}/fajlok/{fajl} | csatolt fájl törlése |
Fájl feltöltése
- POST
{dkt}/intezmenyek/fajlok/feltoltes/ideiglenes/proxy, multipart:fajl(a fájl) ésUtvonal=DKT/{intezmenyId}/{tanevId}/{fajta}/{feladat}. Fejlécek:X-version: 3.0és böngészős user agent; az app user agentjére a fájlszolgáltatás üres500-at ad. A válaszban:fajlId,fajlMeretByteLength. - POST
/intezmenyek/tanulok/{fajta}/beadasok/{beadas}/fajlok/veglegesites:{"fajlId": …, "teljesFajlNev": "valasz.pdf", "meretInBytes": …}
Fájl letöltése
Egy fájl API-útvonala után /url-t írva (például …/fajlok/{fajl}/url) egy egyszer használható letöltési linket kapsz. Azt token nélkül, böngészős user agenttel kell megnyitni, mert a files.e-kreta.hu az app user agentjét elutasítja.
Elavult módszerek
A neten található KRÉTA API leírások nagy része ezeket mutatja. Ha valami „nem működik” egy régi doksi alapján, általában ez az oka.
| Régi módszer | Mi van helyette |
|---|---|
elavult Jelszavas tokenkérés: grant_type=password, client_id=kreta-ellenorzo-mobile-android, X-AuthorizationPolicy-Key/-Nonce fejlécek a /nonce végpontról | Böngészős OAuth + PKCE (lásd fent); a hivatalos app is így lép be. A régi módszerre jellemzően invalid_request/invalid_grant jön. |
elavult Intézménylista: GET https://kretaglobalmobileapi2.ekreta.hu/api/v3/Institute apiKey fejléccel | 404 (2026. november 13-án kipróbálva). Helyette: iskola keresése. |
elavult v1/v2 API: https://{intezmeny}.e-kreta.hu/idp/api/v1/Token, /mapi/api/v1/… | Az IdP és az /ellenorzo/V3/Sajat/ végpontok. |
Elírás régi doksikban: …/api/v1/kommunkacio/… | Helyesen kommunikacio. |
Buktatók
- A
+jel a tokenkérésben. Form-kódolásban a+szóközt jelent, ezért a refresh tokenben lévő+-t%2B-ként kell küldeni, különbeninvalid_grantjön. - User agent. A token végpont a hivatalos app user agentjét várja; mással előfordulhat, hogy elutasítja.
- Rejtett új jegyek. Az iskola beállíthatja, hogy egy új jegy csak néhány perc múlva látsszon (
ErtekelesekMegjelenitesenekKesleltetesenekMerteke). - Időzóna. A dátumok UTC-ben jönnek; az órarendet Europe/Budapest szerint kell megjeleníteni.
- HTML a szövegekben. A házik, a faliújság és az üzenetek szövege HTML,
\rsortörésekkel. - Nincs push. A KRÉTA nem küld értesítést a változásokról; időnként újra le kell kérni az adatokat. Kíméld a szervert, ne pollozz percenként.
Források
Ezt az oldalt több nem hivatalos forrás összevetéséből állítottuk össze. Ahol eltértek, a ma is működő változat került ide.
- Radír (
RadirKit, AGPL-3.0): az működik jelölésű végpontok, tesztekkel. - aronkv/kreta-tui (Rust, 2026): fej nélküli belépés, iskolakereső, DKT.
- bczsalba/ekreta-docs-v3 (2022): a V3 végpontok első összefoglalója; a bejelentkezési része elavult.
- boapps/e-kreta-api-docs: a régi v1 API leírása, ma már csak történeti érdekesség.
- KRÉTA Ellenőrző (Postman): régi Postman-gyűjtemény.
- manen/gokreta: Go kliens végpontlistája.
- A Filc, a reFilc és a Firka nyílt forrású kliensei, amelyekre a Radír épül.
Hibát találtál, vagy változott valami a KRÉTA-ban? Írd meg, és frissítjük.