Server URL: `https://abulafia.fi.muni.cz:9050` = Administrace = `URL + /admin` Funguje GET i POST stejně. Ke všem funkcím se dá přidat parametr ''callback'' s názvem funkce pro JSONP. == seznam přístupných slovníků == === request === action:: dict_list === response === JSON hash, který obsahuje status=OK a čtyři pole dict_a (slovníky, u kterých jsem administrátor), dict_m (slovníky, kde jsem správce), dict_w (slovníky, kam můžu zapisovat), dict_r (slovníky, které můžu číst). Každý slovník je objek, který obsahuje ''name'' (jméno slovníku) a ''code'' (kód slovníku, používá se u dalších funkcí) Akce podle práv: * r/čtení: browse dictionary; export XML * w/zápis: browse+edit dictionary (stejný odkaz jako browse); export XML * m/správce: edit settings; remove dictionary; browse+edit dictionary; export XML; import XML * a/admin: edit settings; remove dictionary; browse+edit dictionary; export XML; import XML == informace o slovníku == === request === action:: dict_info code:: kód slovníku === response === '''chyba''' JSON hash: * ''status'': error * ''text'': řetězec, text chyby '''úspěch''' JSON hash: * ''status'': OK * ''dict_code'': kód slovníku * ''dict_name'': jméno slovníku * ''schema'': nastavení obsahu formuláře (JSON jako string) * ''users'': pole se seznamem uživatelů (každý uživatel je hash s položkami, ''email'', ''login'', ''name'', ''perm'') * ''owner'': uživatel, který slovník založil * ''templates'': pole XSLT templates (každá položka má ''name, code, template'') * ''htemplates'': pole Handlebar templates (každá položka má ''name, code, template'') * ''current_user'': login přihlášeného uživatele * ''current_perm'': právo přihlášeného uživatele ke slovníku == uložení nastavení slovníku == === request === action:: dict_save edit:: prázdné pro nový slovník, 1 pro editaci existujícího dict_code:: kód slovníku (Pokud je nový slovník, doplní se ke kódu login uživatele. Pro existující slovník se posílá kompletní kód včetně loginu) dict_name:: jméno slovníku setting:: JSON string s nastavením slovníku === response === Pro nový slovník se kontroluje, jestli už dict_code není obsazený. Při uložení existujícího se kontroluje, jesti má uživatel právo m. '''chyba''' JSON hash: * ''status'': error * ''text'': řetězec, text chyby '''úspěch''' JSON hash: * ''status'': OK * ''dict_code'': kód slovníku == smazat slovník == === request === action:: dict_del code:: kód slovníku === response === Když uživatel nemá právo smazat slovník, zobrazí se chyba. '''chyba''' JSON hash: * ''status'': error * ''text'': řetězec, text chyby '''úspěch''' JSON hash: * ''status'': OK * ''dict_code'': kód slovníku == najít uživatele == === request === action:: user_search search:: hledaný řetězec, delší než 2 znaky === response === '''chyba''' JSON hash: * ''status'': error * ''text'': řetězec, text chyby '''úspěch''' JSON hash: * ''status'': OK * ''users'': pole objektů s (''name, email, login'') == přidat uživatele ke slovníku == === request === action:: user_add code:: kód slovníku login:: login uživatele perm:: oprávnění, možné hodnoty r (read), w (write), m (manager). Pokud není vyplněno, default hodnota r === response === Kontroluje se, jestli existuje login, a jestli má přihlášený uživatel právo m na slovník. '''chyba''' JSON hash: * ''status'': error * ''text'': řetězec, text chyby '''úspěch''' JSON hash: * ''status'': OK == odebrat uživatele ze slovníku == === request === action:: user_remove code:: kód slovníku login:: login uživatele === response === Kontroluje se, jestli existuje login, a jestli má přihlášený uživatel právo m na slovník. '''chyba''' JSON hash: * ''status'': error * ''text'': řetězec, text chyby '''úspěch''' JSON hash: * ''status'': OK == přidat XSLT template ke slovníku == === request === action:: template_save dict:: kód slovníku code:: kód šablony name:: jméno šablony template:: obsah šablony === response === Kontroluje se, jestli má přihlášený uživatel právo m na slovník. '''chyba''' JSON hash: * ''status'': error * ''text'': řetězec, text chyby '''úspěch''' JSON hash: * ''status'': OK == odebrat XSLT template ke slovníku == === request === action:: template_remove dict:: kód slovníku code:: kód šablony === response === Kontroluje se, jestli má přihlášený uživatel právo m na slovník. '''chyba''' JSON hash: * ''status'': error * ''text'': řetězec, text chyby '''úspěch''' JSON hash: * ''status'': OK == přidat Handlebars template ke slovníku == === request === action:: htemplate_save dict:: kód slovníku code:: kód šablony name:: jméno šablony template:: obsah šablony === response === Kontroluje se, jestli má přihlášený uživatel právo m na slovník. '''chyba''' JSON hash: * ''status'': error * ''text'': řetězec, text chyby '''úspěch''' JSON hash: * ''status'': OK == odebrat Handlebars template ke slovníku == === request === action:: htemplate_remove dict:: kód slovníku code:: kód šablony === response === Kontroluje se, jestli má přihlášený uživatel právo m na slovník. '''chyba''' JSON hash: * ''status'': error * ''text'': řetězec, text chyby '''úspěch''' JSON hash: * ''status'': OK == import XML == === request === action:: import code:: kód slovníku data:: obsah souboru, BASE64, jen samotný obsah bez "data...base64," na začátku delete:: volitelné, true/false, výchozí hodnota false. true=kompletně smaže aktuální obsah db, false=ponechá obsah. overwrite:: volitelné, true/false, výchozí hodnota false. true=přepisuje hesla se stejným ID novými ze souboru, false=nechá původní hesla v db, nové ignoruje === response === '''chyba''' JSON hash: * ''status'': error * ''text'': řetězec, text chyby '''úspěch''' JSON hash: * ''status'': OK * ''logfile'': soubor s logem, postupné zobrazení na `URL+/admin?action=showlog&type=import&log=logfile` == export XML == === request === action:: export code:: kód slovníku format:: xml/json (default json) === response (format=json) === '''chyba''' JSON hash: * ''status'': error * ''text'': řetězec, text chyby '''úspěch''' JSON hash: * ''status'': OK * ''xml'': XML data === response (format=xml) === XML data == zobrazení logu == === request === action:: showlog log:: název log souboru === response === HTML stránka s posledními 20 řádky logu, automatický refresh = Uživatelská část = `URL + /kód slovníku` Funguje GET i POST stejně. Ke všem funkcím se dá přidat parametr ''callback'' s názvem funkce pro JSONP. == seznam hesel + hledání == === request === action:: list search:: hledaný text (nepovinné) === response === '''chyba''' JSON hash: * ''status'': error * ''text'': řetězec, text chyby '''úspěch''' JSON hash: * ''status'': OK * ''entries'': pole objektů (''id, head,'' pro správce navíc'' author, last_edit'') == načtení hesla == === request === action:: get entry_id:: ID hesla format:: xml (default), json, template xslt:: pro format=template kód template === response === '''chyba''' JSON hash: * ''status'': error * ''text'': řetězec, text chyby '''úspěch''' JSON hash: * ''status'': OK * ''result'': obsah hesla podle formatu == náhled hesla == === request === action:: preview entry_id:: ID hesla entry_xml:: heslo v XML (musí být vyplněno buď ID nebo XML) format:: json (default), html xslt:: kód template === response === '''chyba''' JSON hash: * ''status'': error * ''text'': řetězec, text chyby '''úspěch''' JSON hash: * ''status'': OK * ''result'': obsah hesla podle formatu == uložení hesla == === request === action:: save entry_id:: ID hesla (prázdné pro nové heslo) data:: heslo v XML (root element musí být '''', elementy musí mít v atributu ''elem_type'' svůj typ) === response === '''chyba''' JSON hash: * ''status'': error * ''text'': řetězec, text chyby '''úspěch''' JSON hash: * ''status'': OK * ''entry_id'': ID hesla == smazání hesla == === request === action:: delete entry_id:: ID hesla === response === '''chyba''' JSON hash: * ''status'': error * ''text'': řetězec, text chyby '''úspěch''' JSON hash: * ''status'': OK == upload souboru == === request === action:: upload data:: obsah souboru, BASE64, jen samotný obsah bez "data...base64," na začátku type:: MIME typ souboru === response === '''chyba''' JSON hash: * ''status'': error * ''text'': řetězec, text chyby '''úspěch''' JSON hash: * ''status'': OK * ''filename'': jméno souboru na serveru == náhled více hesel najednou == === request === action:: preview_multi entry_id:: ID hesel, spojené čárkou xslt:: kod xslt template === response === '''chyba''' JSON hash: * ''status'': error * ''text'': řetězec, text chyby '''úspěch''' JSON hash: * ''status'': OK * ''result'': obsah hesla podle formatu