REST API
REST API
Hašovanie hesla
Heslo pri registrácii výrazne odporúčam odosielať už zahašované, aby ste predišli odosielaniu raw hesla, ktoré by mohlo byť odchytené.
Pri prihlasovaní sa porovnáva odoslané heslo 1:1 s heslom v databáze, ktoré bolo prijaté z registrácie.
Resetovanie zabudnuteho hesla
Pri resetovani zabudnuteho hesla (pozn. server a appka nepouzivaju rovnake hashovanie hesla), je potrebne si poznacit v appke, ze pouzivatel si vyziadal zmenu hesla.
Pri dalsom prihlaseni odoslat naprv plain text heslo a nasledne vyzvat pouzivatela hned zmenit (appka ho posle uz zahashovane). Pri dalsich prihlasovaniach sa pouziva uz zahashovane heslo.
Prihlasovanie sa heslom na appke spoluziaka
Ak vy a spoluziak nepouzivate rovnake hashovanie hesla, tak sa nebudete moct prihlasit svojim heslom v jeho appke do vasho uctu, aj ked zadavate spravne heslo ( lebo spoluziak ho inak zakoduje a odosle na server)
Webservisové endpointy
Vo všetkých requestoch je nutné použiť v hlavičke atribút "x-apikey" s hodnotou API kľúču, ktorý vám príde do správy.
V geofence/* a niektorych user requestoch je potrebné používať O-Auth autorizáciu v hlavičke. Teda atribút "Authorization" s hodnotou "Bearer token", kde token je access token.
Access token má časovú platnosť, po ktorej expiruje. Potom musíte získať nový pomocou refresh tokenu.
Exspiracia access tokenu bola zmenena na dobu 5 minut, aby ste si vedeli jednoduchsie otestovat aj ci sa vam uspesne obnovuje access token. Nasledne neskor bude nastavena na dlhsiu dobu, cize nespoliehajte sa v kode na presnu dobu exspiracie.
Ziadat o resetovanie zabudnutého hesla je mozne 1x za 5 minut. Kod pre resetovanie hesla v emaile exspiruje po 10 minutach.
### Nahratie profilovej fotky - !!!!!!! POZOR - upload.mcomputing.eu a nie zadanie.mpage.sk ako pri inych requestoch !! ### odosielate fotku JPG alebo JPEG ako form data, kde je jedna hodnota "image" s profilovou fotkou. POST https://upload.mcomputing.eu/user/photo.php Authorization: Bearer ... x-apikey: ... Content-Type: multipart/form-data; boundary=WebAppBoundary --WebAppBoundary Content-Disposition: form-data; name="image"; filename="photo.jpg" Content-Type: image/jpg < ./mojafotka.jpg --WebAppBoundary-- ### Ocakavana odpoved {"id":5,"name":"a","photo":"photos/u-5.jpeg"} ### Odstranenie profilovej fotky DELETE https://upload.mcomputing.eu/user/photo.php Authorization: Bearer ... x-apikey: ... ### Ocakavana odpoved {"id":5,"name":"a","photo":""} ### Registracia, ak uz zadany username existuje odpoved je {"uid":-1,"access":"","refresh":""}, ### ak email existuje {"uid":-2,"access":"","refresh":""}. Vtedy treba upozornit pouzivatela, ze si ma vybrat ine pouzivatelske meno/email. ### Po registracii, treba kliknut na link v emaile, ktory pride na danu adresu. -- Bude dorobene, zatial bez overenia. POST https://zadanie.mpage.sk/user/create.php Accept: application/json Cache-Control: no-cache Content-Type: application/json x-apikey: ... { "name": "username", "password": "heslo", "email": "email" } ### Ocakavana odpoved {"uid":"id pouzivatela","access":"access token","refresh":"refresh token"} ### Prihlasenie, ak zadane meno neexistuje alebo heslo nie je spravne vrati {"uid":-1,"access":"","refresh":""} . ### Treba upozornit pouzivatela, ze meno alebo heslo je nespravne. Ako hodnotu "name" je mozne pouzit name aj email z registracie. POST https://zadanie.mpage.sk/user/login.php Accept: application/json Cache-Control: no-cache Content-Type: application/json x-apikey: ... { "name": "username", "password": "heslo" } ### Ocakavana odpoved {"uid":"id pouzivatela","access":"access token","refresh":"refresh token"} ### Ziskanie profilu pouzivatela GET https://zadanie.mpage.sk/user/get.php?id=[id pouzivatela] Accept: application/json Cache-Control: no-cache Content-Type: application/json Authorization: Bearer .... x-apikey: ... ### Ocakavana odpoved {"id":"id pouzivatela","name":"name","photo": "photo path without prefix, i.e. photo/1.jpeg prefix is https://upload.mcomputing.eu/"} ### Obnovenie zabudnuteho hesla - po uspesnom odoslani, by mal prist email na dany email s odkazom, ktory pouzivatel otvori a zmeni si heslo v prehliadaci. POST https://zadanie.mpage.sk/user/reset.php x-apikey: ... { "email": "email pouzivatela pri registracii" } ### Ocakavana odpoved HTTP CODE 200: {"status":"success"} - uspesna, email bol odoslany HTTP CODE 500: {"status":"failure", "message":"text hlasky"} - neuspesne, popis chyby moze byt v hlaske ### Zmena hesla - ak je pouzivatel prihlaseny a vie svoje heslo POST https://zadanie.mpage.sk/user/password.php x-apikey: ... Authorization: Bearer .. { "old_password": "aktualne heslo", "new_password": "nove heslo" } ### Ocakavana odpoved {"status":"success"} ### Obnovenie access tokenu, pomocou refresh tokenu POST https://zadanie.mpage.sk/user/refresh.php Accept: application/json Cache-Control: no-cache Content-Type: application/json x-apikey: ... x-user: moje_id_pouzivatela { "refresh": "" } ### Ocakavana odpoved {"uid":"id pouzivatela","access":"access token","refresh":"refresh token"} ### Ziskanie okruhov pouzivatelov GET https://zadanie.mpage.sk/geofence/list.php Accept: application/json Cache-Control: no-cache Content-Type: application/json Authorization: Bearer .... x-apikey: ... ### Ocakavana odpoved ak mam zapnute zdielanie, tzn. aktivny geofence { "me": {"uid":"5","lat":"48.1555486000","lon":"17.0513821000","radius":"100"}, "list":[ {"uid":"5","radius":"100", "updated":"2023-10-28 16:24:34","name":"username","photo":"photo path without prefix, i.e. photo/1.jpeg prefix is https://upload.mcomputing.eu/"} ] } ### Ocakavana odpoved ak nemam zapnute zdielanie, tzn. vypnuty geofence { "list":[] } ### Ziskanie okruhov pouzivatelov - predchadzajuca alternativa GET https://zadanie.mpage.sk/geofence/olist.php Accept: application/json Cache-Control: no-cache Content-Type: application/json Authorization: Bearer .... x-apikey: ... ### Ocakavana odpoved ak mam zapnute zdielanie, tzn. aktivny geofence [ {"uid":"5","radius":"100", "updated":"2023-10-28 16:24:34","name":"username","photo":"photo path without prefix, i.e. photo/1.jpeg prefix is https://upload.mcomputing.eu/"} ] ### Ocakavana odpoved ak nemam zapnute zdielanie, tzn. vypnuty geofence [] ### Zapisanie svojho okruhu, lat,lon su suradnice stredu okruhu v desatinnom formate, a radius je polomer v metroch. POST https://zadanie.mpage.sk/geofence/update.php Accept: application/json Cache-Control: no-cache Content-Type: application/json Authorization: Bearer .... x-apikey: ... { "lat": 3.3, "lon": 33.3 "radius": 100 } ### Ocakavana odpoved {"success":true} ### Odstranenie svojej polohy, po vypnuti geofencu DELETE https://zadanie.mpage.sk/geofence/update.php Accept: application/json Cache-Control: no-cache Content-Type: application/json Authorization: Bearer .... x-apikey: ... ### Ocakavana odpoved {"success":true}
Mozne status kody z webservisu: 500 - databazova chyba 400 - nespravny request, chyba niektory atributy v hlavicke alebo v json tele. x-apikey nie je to iste ako X-ApiKey, atributy su case-sensitive. Povolene len Authorization/authorization a x-apikey 401 - neautorizovany request, mate zly alebo uz neplatny access token. 404 - endpoint neexistuje 200 - uspesna odpoved, v niektorych requestoch je prazdne telo (nic request nevracia)