Code Monkey home page Code Monkey logo

e-kreta-api-docs's Introduction

Ez már nem aktuális, frissebb változat: https://github.com/bczsalba/ekreta-docs-v2

e-Kréta API dokumentáció

Krétás API-knak nem hivatalos gyűjteménye

Ezen lekérdezések nagy részét egy SSL Capture nevű Androidos alkalmazással szereztem.

A webes KRÉTA API dokumentációját itt találod. (Xerren09 készítette)

Más, nem hivatalos Krétás projektek:

  • Arisztokréta Nem hivatalos kliensapp a kréta rendszert használó diákoknak.
  • Napló+ Tanári app a krétához.
  • Spongyarend Ingyenes órarend generátor alkalmazás a KRÉTA rendszer állományaiból
  • eFilc Webes Kréta kliens diákoknak, Toldys extrákkal (weboldal)
  • KFGnaplo Android kliens a Krétához, ami értesítéseket küld az új jegyekről, helyettesítésekről (még csak a Karinthy Frigyes Gimnáziumhoz van)
  • Szivacs Naplo Android kliens a Kréta rendszerhez
  • Kréti Bot, ami Krétás értesítéseket küld egy chatbe
  • kfgApp Egy app a Karinthy Gimnáziumhoz, Kréta API-t is használ
  • CardPass Beléptetőkártyás rendszer, ami a Kréta rendszert használja, hogy eldöntse késett -e a tanuló
  • eKreta@thegergo02 Cinnamon asztali környezethez egy desklet, megjeleníti a jegyeidet és a Kréta API-t használja
  • gKréta Az Electron frameworkon alapuló kliens a KRÉTA rendszerhez.
  • eSzivacs-PC Electronon alapuló PC-s kliens.
  • e-kreta-cli Egy asztali, konzolos (terminál) kliens a Krétához.
  • zsírkréta Egy Androidos kliens a Krétához
  • e-Vonalzó Még egy webes Kréta kliens weboldal graphql api
  • gokreta Go implementációja a Kréta API-nak.
  • K Napló Nem hivatalos Kréta webapp. https://naplo.gbr22.me/
  • CursedKreta Konzolos (terminál) kliens a Krétához, go-ban.

Figyelem! Ismert problémák az API-val:

A KRÉTA API-ja nem követi az HTTP standardot:

Ez azért nem célszerű, mert így egyes nyelvekekben (pl.: Swift, Dart), amikben nem lehet kisbetűs Headert beállítani, mert bizonyos lekérdezések (iskolák listája) nem lehetségesek a KRÉTA hivatalos API-jából. Többek között emiatt (és a nem kikapcsolható reklámok miatt) azt a megoldást találtuk ki, hogy az iskolák listáját oránként frissítjuk és saját szerveren hosztoljuk.

Nem célszerű használat és a apiKey/client_id: Megkeresésünkre a Krétások azt írták e-mailbe, hogy visszafejtésből megszerzett kulcsokat nem lenne szabad használni, ami szerintünk azért sem helyes, mert vagy a lekérésekhez mindenki ugyanazt a kulcsot használja, vagy a kulcsot nem csak visszafejtésből lehet megszerezni, hanem konkrétan midnen bejelentkezéskor a KRÉTA által kiadott token tartalmazza a client_id-nek hívott kulcsot.

Kötelező header

Jelenlegi tudásunk szerint a KRÉTA blokkolja azokat a lekérdezéseket, amelyek User-Agent-je egyezik a "szivacs_naplo" szöveggel, akár nagybetűvel, akár kisbetűvel. Ez a blokkolás viszont (még) nem az összes Krétás szerverre vonatkozik, csak a "2-kaffee" nevű, leggyakrabban a "klik"-el kezdődű intézménykódú iskolák által használt szeverrel. Magyarul kb. 80%-a az iskolálnak Szivacs Naplóval blokkolva van. Mindezek ellenéré tudtunkal még nincsen kötelező header.

Iskolák lekérdezése

Az összes iskola ahol be van vezetve az e-Kréta:

curl -H "apiKey: 7856d350-1fda-45f5-822d-e1a2f3f1acf0"  https://kretaglobalmobileapi.ekreta.hu/api/v1/Institute
  • apiKey: kötelező bizonyos lekérdezésekhez, mindenkinek ugyanaz:
    • 7856d350-1fda-45f5-822d-e1a2f3f1acf0 (a Krétások szerint ez a kulcs nem nyilvános, annak ellenéré, hogy mindenki ezt használja)

A szerver válasza:

[
  {
    "InstituteId": 3928,
    "InstituteCode": "appteszt",
    "Name": "PedApp Teszt Intézmény",
    "Url": "https://appteszt.ekreta.hu",
    "City": "Budapest",
    "AdvertisingUrl": "",
    "FeatureToggleSet": {
      "JustificationFeatureEnabled": "false"
    }
  },
  ...
]

Egy iskola adatainak lekérése ID alapján:

curl -H "apiKey: 7856d350-1fda-45f5-822d-e1a2f3f1acf0"  https://kretaglobalmobileapi.ekreta.hu/api/v1/Institute/3928

A szerver válasza:

{
  "InstituteId": 3928,
  "InstituteCode": "appteszt",
  "Name": "PedApp Teszt Intézmény",
  "Url": "https://appteszt.ekreta.hu",
  "City": "Budapest",
  "AdvertisingUrl": "",
  "FeatureToggleSet": {
    "JustificationFeatureEnabled": "false"
  }
}

API linkek lekérdezése

Lekéri a KRÉTA API linkjét:

curl http://kretamobile.blob.core.windows.net/configuration/ConfigurationDescriptor.json
  • igazából egy mezei böngészőből is végrehajtható
  • mire jó: ha az API linkje változna, akkor nem kell frissíteni az appot (rájött: thegergo02)

A szerver válasza:

{
  "GlobalMobileApiUrlDEV": "https://kretaglobalmobileapiuat.ekreta.hu",
  "GlobalMobileApiUrlTEST": "https://kretaglobalmobileapitest.ekreta.hu",
  "GlobalMobileApiUrlUAT": "https://kretaglobalmobileapiuat.ekreta.hu",
  "GlobalMobileApiUrlPROD": "https://kretaglobalmobileapi.ekreta.hu"
}

Bejelentkezés

Lekér egy Bearer kódot amit majd azonosításra fogunk használni később

curl --data "institute_code=xxxxxxxxxxx&userName=xxxxxxxxxxx&password=xxxxxxxxxxx&grant_type=password&client_id=919e0c1c-76a2-4646-a2fb-7085bbbf3c56" https://xxxxxxxxxxx.e-kreta.hu/idp/api/v1/Token -H "Content-Type: application/x-www-form-urlencoded; charset=utf-8"
  • institute_code: az intézmény azonosítója
  • userName: a felhasználó azonosítója
  • password: a felhasználó jelszava
  • grant_type: Az OAuth 2 kötelező paramétere, elvileg lehet:
    • Authorization Code
    • Implicit
    • Password grant_type=password
    • Client Credentials
    • Device Code
    • Refresh Token grant_type=refresh_token Amikor Password-el lekérjük az access_token-t akkor egy refresh_token-t is kapunk, amivel később a jelszó nélkül is frissíthetjük az access_token-ünket.
  • client_id: 919e0c1c-76a2-4646-a2fb-7085bbbf3c56

A Bearer token-ról:

A Bearer tokent a mobil kliensek használják, elméletileg a diákhoz hasonlóan a tanári résznek is hasonlóan kéne működnie. ÚJ! : Igazából a Bearer token egy Base64-es string, amiben csomó más adat is el van rejtve. Ezeket egy művelettel elő lehet varázsolni.

// a telefonos kliens valahogy így csinálja:
// fontos: a base64-elt json mögött van még hmac
private static string decodeToken(string str) {
	switch (str.Length % 4) {
	    case 2:
	        str += "==";
	        break;
	    case 3:
	        str += "=";
	        break;
}
return Convert.FromBase64String(str);

És ezt kapjuk:

{
    "alg": "http://www.w3.org/2001/04/xmldsig-more#hmac-sha256",
    "typ": "JWT"
} {
    "idp:user_id": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXX",
    "kreta:institute_code": "XXXXXXXX",
    "kreta:institute_user_id": "00000",
    "kreta:tutelary_id": "",
    "kreta:school_year_id": "00",
    "role": "Student",
    "exp": 00000,
    "iss": "kreta.identityprovider",
    "aud": "919e0c1c-76a2-4646-a2fb-7085bbbf3c56"
}

Ahol az "aud" egyezik a client_id-vel. Érdekes, nem csak visszafejtéssel lehet megkapni, hanem közvetlen a Kréta mondja meg. :O

A szerver válasza:

{
 "access_token":"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
 "refresh_token": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
 ...
 }

access_token frissítése

curl --data "institute_code=xxxxxxxxxxx&refresh_token=xxxxxxxxxxx&grant_type=refresh_token&client_id=919e0c1c-76a2-4646-a2fb-7085bbbf3c56" https://xxxxxxxxxxx.e-kreta.hu/idp/api/v1/Token -H "Content-Type: application/x-www-form-urlencoded; charset=utf-8"
  • ugyanúgy működik, mint a Bearer kód lekérdezése
  • itt is kapunk egy refresh_token-t amit újra fel tudunk használni a következő frissítéshez

E-ügyintézéses üzenetek lekérése

  • a mobil alkalmazás használja
  • kell hozzá a Bearer azonosító (lásd: bejelentkezés)
curl https://eugyintezes.e-kreta.hu/integration-kretamobile-api/v1/kommunikacio/postaladaelemek/sajat -H "Authorization: Bearer XXXXXXXXXXXXXXX"
  • Ha nincs még üzeneted, akkor egy 500-as hibakóddal egy An error has occured! üzenetet kapsz, ez itt "normális"

A szerver válasza:

[
    {
        "azonosito": 0000,
        "isElolvasva": false,
        "isToroltElem": false,
        "tipus": {
            "azonosito": 1,
            "kod": "BEERKEZETT",
            "rovidNev": "Be\u00e9rkezett \u00fczenet",
            "nev": "Be\u00e9rkezett \u00fczenet",
            "leiras": "Be\u00e9rkezett \u00fczenet"
        },
        "uzenet": {
            "azonosito": 00000,
            "kuldesDatum": "0000-00-00T00:00:00",
            "feladoNev": "XXXXX XXXXXX",
            "feladoTitulus": "tan\u00e1r",
            "szoveg": "xxxxx",
            "targy": "xxxxxxxxx",
            "cimzettLista": [
                {
                    "azonosito": 0000000,
                    "kretaAzonosito": 0000000,
                    "nev": "XXXXXX",
                    "tipus": {
                        "azonosito": 4,
                        "kod": "OSZTALY_TANULO",
                        "rovidNev": "Oszt\u00e1ly - Tanul\u00f3",
                        "nev": "Oszt\u00e1ly - Tanul\u00f3",
                        "leiras": "Oszt\u00e1ly - Tanul\u00f3"
                    }
                }
		...
            ],
            "csatolmanyok": [
                {
                    "azonosito": 000000,
                    "fajlNev": "xxxxxxx.xxx"
                }
		...
	    ]
        }
    },
    ...
]
  • Az "uzenet" nek a "szoveg"-e maximum 100 karakter hosszú lehet, ha a teljes szöveget akarjuk, akkor egy másik lekérdezés kell:
curl https://eugyintezes.e-kreta.hu/integration-kretamobile-api/v1/kommunikacio/postaladaelemek/0000 -H "Authorization: Bearer XXXXXXXXXXXXXXX"
  • itt a 0000 a legkülső "azonosito"-t jelöli

A szerver válasza:

    {
        "azonosito": 0000,
        "isElolvasva": true,
        "isToroltElem": false,
        "tipus": {
            "azonosito": 1,
            "kod": "BEERKEZETT",
            "rovidNev": "Be\u00e9rkezett \u00fczenet",
            "nev": "Be\u00e9rkezett \u00fczenet",
            "leiras": "Be\u00e9rkezett \u00fczenet"
        },
        "uzenet": {
            "azonosito": 00000,
            "kuldesDatum": "0000-00-00T00:00:00",
            "feladoNev": "XXXXX XXXXXX",
            "feladoTitulus": "tan\u00e1r",
            "szoveg": "xxxxx",
            "targy": "xxxxxxxxx",
            "cimzettLista": [
                {
                    "azonosito": 0000000,
                    "kretaAzonosito": 0000000,
                    "nev": "XXXXXX",
                    "tipus": {
                        "azonosito": 4,
                        "kod": "OSZTALY_TANULO",
                        "rovidNev": "Oszt\u00e1ly - Tanul\u00f3",
                        "nev": "Oszt\u00e1ly - Tanul\u00f3",
                        "leiras": "Oszt\u00e1ly - Tanul\u00f3"
                    }
                }
		...
            ],
            "csatolmanyok": [
                {
                    "azonosito": 000000,
                    "fajlNev": "xxxxxxx.xxx"
                }
		...
	    ]
        }
    }

E-ügyintézéses üzenetek olvasottnak jelölése

  • ettől az "isElolvasva" true lesz
curl https://eugyintezes.e-kreta.hu//integration-kretamobile-api/v1/kommunikacio/uzenetek/olvasott -H "Authorization: Bearer XXXXXXXXXXXXXXX" --data "{"isOlvasott":true,"uzenetAzonositoLista":[0000]}"

Bejelentett számonkérések lekérése

curl https://xxxxxxxxxx.e-kreta.hu/mapi/api/v1/BejelentettSzamonkeres?DatumTol=null&DatumIg=null -H "Authorization: Bearer XXXXXXXXXXXXXXX"

A szerver válasza:

[
  {
    "Uid": "0000",
    "Id": 0000,
    "Datum": "0000-00-00T00:00:00Z",
    "HetNapja": "Kedd",
    "Oraszam": 0,
    "Tantargy": "kémia",
    "Tanar": "Xxxxxx Xxxxxx",
    "SzamonkeresMegnevezese": "xxxxxxxxx",
    "SzamonkeresModja": "Írásbeli röpdolgozat",
    "BejelentesDatuma": "0000-00-00T00:00:00Z"
  }
  ...
]
  • Uid: az id csak stringként (pl.: 2 -> "2")
  • Hogy miért kell itt (és sehol máshol) a dátumon kívül egy HetNapja is, fogalmam sincs!
  • az óraszámm (szerintem) azt mutatja, hogy hányadik órában lesz a dolgozat

Felhasználó adatainak lekérdezése

Jegyek, hiányzások, faliújság, szülő és osztályfőnök adatainak lekérdezése

  • a mobil alkalmazás használja
  • kell hozzá a Bearer azonosító (lásd: bejelentkezés)
curl -H "Authorization: Bearer XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" https://xxxxxxxxxxx.e-kreta.hu/mapi/api/v1/Student?fromDate=xx-xx-xx&toDate=xx-xx-xx
  • fromDate: ettől a dátumtól kezdődően mutasson jegyeket, hiányzást és feljegyzést (a "Date" legyen nagyobb vagy egyenlő ennél)
  • toDate: eddig a dátumig bezárólag mutasson jegyeket, hiányzást és feljegyzést (a "Date" legyen kissebb vagy egyenlő ennél)

Ha nem szeretnénk dátumhoz kötni, lehet az xx-xx-xx helyére null-t is írni vagy az egészet le lehet hagyni.

curl -H "Authorization: Bearer XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" https://xxxxxxxxxxx.e-kreta.hu/mapi/api/v1/Student?fromDate=null&toDate=null
curl -H "Authorization: Bearer XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" https://xxxxxxxxxxx.e-kreta.hu/mapi/api/v1/Student

A szerver válasza:

{
  "StudentId": 0000000,
  "SchoolYearId": 0000000,
  "Name": "Xxxxx Xxxxx",
  "NameOfBirth": "Xxxxx Xxxxx",
  "PlaceOfBirth": "Xxxxx Xxxxx",
  "MothersName": "Xxxxx Xxxxx",
  "AddressDataList": [
    "Xxxxx Xxxxx, Xxxxx Xxxxx xxxx    "
  ],
  "DateOfBirthUtc": "0000-00-00T22:00:00Z",
  "InstituteName": "Xxxxx Xxxxx Xxxxx Xxxxx Xxxxx Xxxxx",
  "InstituteCode": "xxxxxxxxxxx",
  "Evaluations": [
    {
      "EvaluationId": 12345678,
      "Form": "Mark",
      "FormName": "Elégtelen (1) és Jeles (5) között az öt alapértelmezett érték",
      "Type": "MidYear",
      "TypeName": "Évközi jegy/értékelés",
      "Subject": "Xxxxxxxx",
      "SubjectCategory": null,
      "SubjectCategoryName": "Xxxxxxxx",
      "Theme": "xxxxxxx",
      "IsAtlagbaBeleszamit": true,
      "Mode": "Gyakorlati feladat",
      "Weight": "100%",
      "Value": "Jeles(5)",
      "NumberValue": 5,
      "SeenByTutelaryUTC": null,
      "Teacher": "Xxxxxxxx Xxxxxxxx",
      "Date": "2019-06-07T00:00:00",
      "CreatingTime": "2019-06-07T08:00:00.000",
      "Jelleg": {
        "Id": 1,
        "Nev": "Ertekeles",
        "Leiras": "Értékelés"
      },
      "JellegNev": "Ertekeles",
      "ErtekFajta": {
        "Id": 1,
        "Nev": "Osztalyzat",
        "Leiras": "Osztályzat"
      }
    },
    ...
  ],
  "SubjectAverages": [
    {
      "Subject": "Xxxxxxxx",
      "SubjectCategory": null,
      "SubjectCategoryName": "Xxxxxxxx xx Xxxxxxxx",
      "Value": 0.0,
      "ClassValue": 0.00,
      "Difference": -0.00
    },
    ...
  ],
  "Absences": [
    {
      "AbsenceId": 0000000,
      "Type": "Absence",
      "TypeName": "Hiányzás",
      "Mode": "Lesson",
      "ModeName": "Tanórai mulasztás",
      "Subject": "Xxxxxx xxxxx",
      "SubjectCategory": null,
      "SubjectCategoryName": "Xxxxxxxx xx Xxxxxxxx",
      "DelayTimeMinutes": 0,
      "Teacher": "Xxxxxxxx Xxxxxxxx",
      "LessonStartTime": "0000-00-00T00:00:00",
      "NumberOfLessons": 0,
      "CreatingTime": "0000-00-00T00:00:00.000",
      "JustificationState": "BeJustified",
      "JustificationStateName": "Igazolandó mulasztás",
      "JustificationType": "UnJustified",
      "JustificationTypeName": "Igazolatlan",
      "SeenByTutelaryUTC": null
    },
    ...
      ],
  "Notes": [
    {
      "NoteId": 0000000,
      "Type": "Elektronikus üzenet",
      "Title": "Xxxxxxxx",
      "Content": "Xxxxxx xxxxxx x xxxxxx xxxxxx xxx xxxxxx.",
      "SeenByTutelaryUTC": null,
      "Teacher": "Xxxxxx Xxxxxx",
      "Date": "0000-00-00T00:00:00",
      "CreatingTime": "0000-00-00T00:00:00.000"
    },
    ...
      ],
  "Lessons": null,
  "Events": null,
  "FormTeacher": {
    "TeacherId": 0000000,
    "Name": "Xxxxxxx Xxxxxxx",
    "Email": null,
    "PhoneNumber": null
  },
  "Tutelaries": [
    {
      "TutelaryId": 0000,
      "Name": "Xxxxxx Xxxxxxx",
      "Email": "",
      "PhoneNumber": "000000000"
    }
  ]
}

Jegyek:

  • Type: lehet "HalfYear": félévi; "MidYear": évközi; "EndYear": év végi
  • Form: lehet "Mark": sima jegy; "Text": szöveges értékelés
  • Fejlesztőknek figyelem: az EvaluationId-t NEM SZABAD egyedi azonosítóként kezelni, az összetartozó (de nyilván különböző) magatartás és szorgalom jegyek ugyanazt az "id"-t kapják. Tehát két jegy néha ugyanazt az id-t kapja. Megoldás lehet az EvaluationId végére illeszteni (concatenatelni stringként) a Jelleg-nek az Id-jét.

Bejelentett számonkérések lekérdezése

Lekéri a tanárok által bejelentett dolgozatokat

  • a mobil alkalmazás használja
  • kell hozzá a Bearer azonosító (lásd: bejelentkezés)
curl -H "Authorization: Bearer XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" https://xxxxxxxxxxx.e-kreta.hu/mapi/api/v1/BejelentettSzamonkeres

A szerver válasza nekem: semmi, mert nálunk egy tanár sem használja nálunk ezt a funkciót

Órarend lekérése

Lekéri két adott időpont között megtartott (vagy elmaradt) tanórákat

  • a mobil alkalmazás használja
  • kell hozzá a Bearer azonosító (lásd: bejelentkezés)
  • fromDate: a vizsgált időintervallum kezdete (ÉÉÉÉ-HH-NN)
  • toDate: a vizsgált időintervallum vége (ÉÉÉÉ-HH-NN)
curl -H "Authorization: Bearer XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" https://xxxxxxxxxxx.e-kreta.hu/mapi/api/v1/Lesson?fromDate=2018-09-03&toDate=2018-09-09

A szerver válasza:

[
  {
    "LessonId": 0000000,
    "CalendarOraType": "TanitasiOra",
    "Count": 1,
    "Date": "0000-00-00T00:00:00",
    "StartTime": "0000-00-00T00:00:00",
    "EndTime": "0000-00-00T00:00:00",
    "Subject": "XXXXXXXXXXX",
    "SubjectCategory": null,
    "SubjectCategoryName": "XXXXXXXX",
    "ClassRoom": "XXXXX",
    "ClassGroup": "00.x",
    "Teacher": "Xxxxxxx Xxxxx",
    "DeputyTeacher": "",
    "State": "Registered",
    "StateName": "Naplózott tanóra",
    "PresenceType": "Present",
    "PresenceTypeName": "A tanuló részt vett a tanórán",
    "TeacherHomeworkId": null,
    "IsTanuloHaziFeladatEnabled": true,
    "Theme": "Xxxxxxx",
    "Homework": null
  },
  ...
]

Token frissítés

Lekér egy új Bearer kódot amit majd azonosításra fogunk használni később

curl --data "refresh_token=XXXXXXXXXXX&grant_type=refresh_token&client_id=919e0c1c-76a2-4646-a2fb-7085bbbf3c56" https://xxxxxxxxxxx.e-kreta.hu/idp/api/v1/Token
  • a mobil alkalmazás használja
  • refresh_token: A refresh_token amit kaptál amikor beléptél
  • grant_type: refresh_token
  • client_id: 919e0c1c-76a2-4646-a2fb-7085bbbf3c56

A szerver válasza:

{
 "access_token":"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
 "refresh_token": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
 ...
 }

Tanulói házi feladat lekérése

  • Lekéri egy tanuló által felírt házit egy ID alapján
  • Az ID-t csak abból az órából lehet lekérni, amiben felírtak házit, tehát végig kell vizsgálni az összes órát például 1 héten, hogy lekérjük az aheti házikat
  • Ha tanár töltötte fel a házit, amihez az ID tartozik, akkor a válasz üres
curl -H "Authorization: Bearer XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"  https://xxxxxxxxxxx.e-kreta.hu/mapi/api/v1/HaziFeladat/TanuloHaziFeladatLista/HAZIFELADATID
  • HAZIFELADATID: egy ID, amit az órarendből kérhetünk le (TeacherHomeworkId)

Válasz:

[
  {
    "Uid": "0000",
    "Id": 0000,
    "TanuloNev": "Xxxxxx Xxxxxx",
    "FeladasDatuma": "2019-00-00T00:00:00.000",
    "FeladatSzovege": "XXXXXXXX",
    "RogzitoId": 000000,
    "TanuloAltalTorolt": false,
    "TanarAltalTorolt": false
  },
  ...
]

Tanulói házi felírása

  • Tanuló fel tud írni házi feladatot, amit aztán a többi diák (és gondolom a tanár is) lát
  • Lehet, hogy néhány iskolában le van tiltva
curl -X POST -H "Authorization:Bearer XXXXXXXXXXXXXXXXX" -H "Content-Type:application/json; charset=utf-8" -H "Host:klik00000000.e-kreta.hu" -d '{"OraId":"00000000","OraDate":"0000. 00. 00. 00:00:00","OraType":"TanitasiOra","HataridoUtc":"0000. 00. 00. 22:00:00","FeladatSzovege":"XXXXXXXX"}' "https://klik0000000.e-kreta.hu/mapi/api/v1/HaziFeladat/CreateTanuloHaziFeladat"

Válasz:

{
  "TanarHaziFeladatId": 00000,
  "HozzaadottTanuloHaziFeladatId": 0000,
  "HozzaadottTanuloHaziBejelentesDatuma": "0000-00-00T00:00:00.00000+00:00"
}
  • Azt nem értem, hogy miért "TanarHaziFeladatId"-nek hívják, amikor a tanuló teszi fel, de itt vannak ilyen furcsaságok

Házi törlése

  • igazából nem törli a házit a rendszerből, csak átírja a "TanuloAltalTorolt" értékét true-ra, ezt a hivatalos kréta azzal jelöli, hogy áthúzza a szöveget
curl -X DELETE -H "Authorization:Bearer XXXXXXXXXXXXXXXXX" -H "Content-Type:application/json; charset=utf-8" -H "Host:klik00000000.e-kreta.hu" -d '{"id":"000"}' "https://klik0000000.e-kreta.hu/mapi/api/v1/HaziFeladat/DeleteTanuloHaziFeladat/000"

e-kreta-api-docs's People

Contributors

boapps avatar bru02 avatar gbr22 avatar palmarci avatar pepyta avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

e-kreta-api-docs's Issues

A grant_type-ról bővebben

Kicsit utána olvastam a grant_typenak (a dokumentációban ez egy mystery 😄)
A hitelesítés igazából OAuth 2.0-es "hitelesítési keretrendszer" (fogalmam sincs, hogy ez-e a helyes fordítása az authorization frameworknek) segítségével történik, ami igazából egy protocol (ahogy olvastam).

Több féle grant_type létezik az OAuth 2.0-ban:

  • Authorization Code
  • Implicit
  • Password
  • Client Credentials
  • Device Code
  • Refresh Token

(a grant_type egyébként egy kötelező paraméter)
És most a lényeg (amiről fogalmam sincs, hogy hogy lehetne helyesen lefordítani értelmes magyarra)
An authorization grant is a credential representing the resource owner's authorization (to access its protected resources) used by the client to obtain an access token.

A grant_type=password azt jelenti, hogy felhasználónevet + jelszót küldünk el a /Token "végpontnak".

Bővebben itt lehet erről az egészről olvasni: https://tools.ietf.org/html/rfc6749

Néhány észrevétel a dokumentációhoz

  • Az apiKey mindenkinek ugyanaz, kötelező a lekérdezéshez, gondolom hardcode-olva van mindenbe

  • Content-Type, Host, Accept, stb hasonló értelmetlen headerek nem kötelezőek

  • Lehet a normál tokent felh.név-jelszó nélkül is frissíteni az eredeti bejelentkezésnél kapott refresh_tokennel
    institute_code=XXXXXXXXXXXX&client_id=919e0c1c-76a2-4646-a2fb-7085bbbf3c56&refresh_token=XXXXXXXXXXXX&grant_type=refresh_token

  • ugyanitt értelemszerűen a grant_type= password vagy refresh_token lehet

  • a client_id pedig mindenkinél ugyanaz és kötelező, gondolom hardcode-olva van ez is

  • A választ tömörített formában is kérhetjük az "Accept-Encoding: gzip" headerrel. Adatforgalom spóroláshoz és sebességnöveléshez jó.

  • A kréta alkalmazás elküldi a telefonunk típusát, meg még dolgokat User-Agent formájában. Nem szép dolog.

Kitartást!

Bearer api (client_id) kód?

Üdv!

Viszonylag érhető a krétások blokkolásos dolga számomra, viszont azt nem igazán értem, hogy amikor a bearer-t kérjük le, akkor miért használunk egységes api kódot, és ez egyáltalán engedélyezett-e jelenleg?

Ugye itt van az api kód a lekérésben:
curl --data "institute_code=xxxxxxxxxxx&userName=xxxxxxxxxxx&password=xxxxxxxxxxx&grant_type=password&client_id=919e0c1c-76a2-4646-a2fb-7085bbbf3c56" https://xxxxxxxxxxx.e-kreta.hu/idp/api/v1/Token -H "Content-Type: application/x-www-form-urlencoded; charset=utf-8"
Ezt lehet használni, ezzel nincs semmi probléma?

És ezt nem lehet használni ilyen formában: -H "User-Agent:Kreta.Ellenorzo", ha jól értelmeztem, akkor a Kreta.Ellenorzo-t kell kicserélni valami másra, ugye? Meg szintén nem lehet iskola listát és intézmény információt lekérni "legálisan"?

Barátságos emlékezetető: A commit előzményeidet nem törölted, aki akarja még vissza tudja keresni a "tiltott" api kulcsukat.
https://stackoverflow.com/questions/13716658/how-to-delete-all-commit-history-in-github

Refresh token használata

A dokumentáció nem ad egyértelmű választ arra, hogy mikor szükséges az access_token frissítése: amikor amiatt, mert lejárt visszautasítja vagy ezt folyamatosan kell frissíteni?

Tanári házifeladat

A tanári házifeladat lekérése hogyan történik?
(Mivel a tanulói házifeladat lekérésével egyértelműen nem megyek semmire)

Értesítések

Értesítések csatornája

Szerintem nem érdemes vele foglalkozni (poll-olással jobban járunk), de ezt is iderakom mint potenciális TODO-t.

Segítség a leckék lekérdezéséhez

Ha jól veszem észre, a lecke adatai benne vannak az órarend lekérdezésben. Elég gyanúsak a
"TeacherHomeworkId": null, "IsTanuloHaziFeladatEnabled": true, "Homework": null
változók. Nekem nem írják be ide a leckéket, szóval nem tudom mit tárolnak ezek.

User-Agent header probléma

Terveztem átírni a librarym, de perfektül megkaptam a számonkéréseket ma a header nélkül. A felhasználó adatokat mondjuk még nem teszteltem, de a számonkérések nem mentek tegnap.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.