Web API umožňuje čítať z programu ONIX a zapisovať do neho aj z iných aplikácií. Nižšie nájdete kompletnú dokumentáciu a niekoľko jednoduchých príkladov jej využitia:
Dokumentácia umožňuje priamo si vyskúšať funkčnosť jednotlivých endpointov priamo na Vašej DEMO databáze, nachádzajúcej sa na našom DEMO serveri, ktorý je poskytnutý firmou Kros (prístupové údaje sú poskytované firmou Kros v rámci implementačných úkonov). Pre testovanie funkčnosti jednotlivých endpointov WebAPI je potrebné mať autorizačný token pre danú firmu a na daného používateľa. Token je možné vygenerovať v programe ONIX. Taktiež budete potrebovať fyzickú cestu k databáze v rámci nášho DEMO servera.
Dokumentácia je dostupná na adrese: http://195.146.148.139/onix_api/swagger/ui/index#!/
Pre získanie autorizačného tokenu je potrebné sa prihlásiť na DEMO server, kde je Vaša zákaznícka DEMO databáza. Do firmy je nutné sa prihlásiť pod používateľom, ktorý je správcom firmy (má povolenia správcu). Informáciu, či daný používateľ je správcom, nájdete na formulári “Používatelia” (Nastavenia -> Môj program -> Používatelia).
Pokiaľ ste do firmy prihlásený ako správca, na formulári “Používatelia” sa Vám sprístupní možnosť vygenerovať token pre daného používateľa. Token sa vygeneruje pre používateľa, ktorý je označený v zozname používateľov (je zvýraznený). Pod týmto používateľom sa budete následne pripájať do programu ONIX z WebAPI.
Program ONIX Vám vygeneruje token a automaticky Vám ho skopíruje do schránky (CTRL + C).
Fyzickú cestu k Vašej DEMO databáze je možné vidieť pri prihlásení do firmy, v záložke “Informácie o databáze”.
Na stránke dokumentácie je potrebné zadať Váš vygenerovaný autorizačný token pre prístup ku Vašej DEMO databáze. Kliknite na tlačidlo Authorize.
Do zobrazeného okna zadajte Váš token v tvare: „bearer TOKEN“:
Následne je možné vyskúšať funkčnosť jednotlivých endpointov WebAPi priamo nad dátami Vašej DEMO databázy. Pre vyskúšanie jednotlivých endpointov je potrebné najskôr stlačiť tlačidlo Try it out.
Ako parameter je vždy nutné zadať fyzickú cestu k databáze.
Uvedieme si príklad na endpointe pre načítanie všetkých partnerov firmy: Do parametrov zadáte už spomínanú cestu k databáze. Ako ďalší parameter je možnosť zvoliť si, ktoré konkrétne dáta partnera (hlavička partnera sa načíta vždy) chcete načítať. V prípade, že zvolíte možnosť “ALL” načítajú sa všetky dáta. Následne stlačením možnosti “Execute” sa pošle dotaz na WebAPI na DEMO server a tá Vám dotiahne dáta o partneroch.
V zobrazenej odpovedi je možné vidieť použitú URL adresu spolu s použitými parametrami. Taktiež sa tu nachádzajú dotiahnuté dáta vo formáte JSON.
Open API (Swagger) umožňuje vygenerovať klienta k danej API. Postup je nasledovný: kliknite na označený link na stránke dokumentácie:
Zobrazí sa stránka, ktorej obsah skopírujte.
Následne otvorte stránku: https://editor.swagger.io/. Do prázdnej ľavej časti (ak nie je prázdna, je potrebné ju celú zmazať) vložte skopírované dáta (json). Potom zvoľte v menu možnosť Generate Client a vyberte programovací jazyk, v ktorom chcete klienta vytvoriť.
<?php include_once 'Unirest/Unirest.php'; class Example { // Príklad vytiahnutia skladových kariet z ONIX-u function GetData() { $headers = $headers = array('Accept' => 'application/json', 'Content-Type' => 'application/json', // Token vygenerovaný pre používateľa v programe ONIX 'Authorization' => 'Bearer gOUybnWxRJe0K9xWpVInT1NB9HnSOYWfmoJlr_foNOkAKg_jXQAKx33iEL6bDx5zPF4vjQR6b8fe12iQAv7cb2TeHM4wVfR_nJqHkF4JxPTSHmFqF032qPJLszFROiqHRa6qQGebVQsWWmQuUcBv6q9wn9IVZ_uPVO5sMB1FM7_Epi4BX8_Uz6-MnEATWAp4kbHASh-57BUhw-ui_Lpa8Q', // Cesta k databáze ONIX-u 'DatabasePath' => 'C:\ProgramData\ONIX\Data\KROS\KROS.ndb'); $data = array(); $body = Unirest\Request\Body::form($data); //vyžiadanie zoznam skladových kariet $response = Unirest\Request::get("http://localhost:50803/api/v1/stockitems", $headers, $body); //vyžiadanie zoznamu skladových kariet ako zoznam DtoStockItems objektov return json_decode($response->raw_body); } }
<?php include_once 'Unirest/Unirest.php'; class Example { // Priklad odoslania dokladu(Príjemka) do progrmu ONIX function PostData() { $headers = array('Accept' => 'application/json', 'Content-Type' => 'application/json', // Token vygenerovaný pre používateľa v programe ONIX 'Authorization' => 'Bearer gOUybnWxRJe0K9xWpVInT1NB9HnSOYWfmoJlr_foNOkAKg_jXQAKx33iEL6bDx5zPF4vjQR6b8fe12iQAv7cb2TeHM4wVfR_nJqHkF4JxPTSHmFqF032qPJLszFROiqHRa6qQGebVQsWWmQuUcBv6q9wn9IVZ_uPVO5sMB1FM7_Epi4BX8_Uz6-MnEATWAp4kbHASh-57BUhw-ui_Lpa8Q', // Cesta k databáze ONIX-u 'DatabasePath' => 'C:\ProgramData\ONIX\Data\KROS\KROS.ndb'); // naplnenie dokladu (Príjemka) $new_document = new DocumentStruct(); $new_document->RecordExternalIdentificator = '100001'; $new_document->Date_Document = date('Y-m-d\TH:i:s', strtotime('15.06.2018 13:58')); $new_document->Ns_Evid_Code = 'P'; $new_document->Ns_Code = 'P'; $new_document->Partner_Name = 'Kros a.s.'; $new_document->Stock_Name = 'Sklad 1'; // naplnenie 1. polozky dokladu $new_doc_item_1 = new DocumentItemStruct(); $new_doc_item_1->RecordExternalIdentificator = '400001'; $new_doc_item_1->Stock_Item_Code = 'E8548798'; $new_doc_item_1->User_Amount = 15; $new_doc_item_1->Unit_Price_Lc = 14.3; // naplnenie 2. polozky dokladu $new_doc_item_2 = new DocumentItemStruct(); $new_doc_item_2->RecordExternalIdentificator = '400002'; $new_doc_item_2->Stock_Items_Name = 'Notebook L308'; $new_doc_item_2->Serial_Number = '547851212'; $new_doc_item_2->User_Amount = 99; $new_doc_item_2->Unit_Price_Lc = 540.01; // pridanie poloziek na doklad $new_document->Items[0] = $new_doc_item_1; $new_document->Items[1] = $new_doc_item_2; // vlozenie do body requestu $body = Unirest\Request\Body::Json($new_document); // odoslanie doklad do ONIX-u $response = Unirest\Request::post("http://localhost:50803/api/v1/documents/1000022/", $headers, $body); if($response->code==500) { echo "Nepodarilo sa pripojiť: ".$response->body; } // vratenie vysledku spracovania(Result) return $response->body; } } // pomocna struktura obalujuca jeden doklad, ktory sa bude exportovat do Onixu class DocumentStruct { public $Ns_Evid_Code; public $Ns_Code; public $Date_Document; public $Ns_Number_Partner; public $Id_Document_Types; public $Items; public $RecordExternalIdentificator; public $Stock_Transfer_Code; } // pomocna struktura obalujuca jednu polozku dokladu, ktora sa bude exportovat do Onixu class DocumentItemStruct { public $Serial_Number; public $User_Amount; public $Measure_Unit; public $Stock_Code; public $Stock_Item_Code; public $RowIndex; }
/// <summary> /// Vráti zoznam Príjemok na základe dvoch filtrov (Partner_Name a Ns_Code) /// </summary> public async Task<IEnumerable<DtoDocument>> GetDocumentsByFilters() { IEnumerable<DtoDocument> result = null; HttpClient client = new HttpClient(); client.BaseAddress = new Uri("http://localhost:50803/"); // Hlavička requestu client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); // Token vygenerovaný pre používateľa v programe ONIX client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "gOUybnWxRJe0K9xWpVInT1NB9HnSOYWfmoJlr_foNOkAKg_jXQAKx33iEL6bDx5zPF4vjQR6b8fe12iQAv7cb2TeHM4wVfR_nJqHkF4JxPTSHmFqF032qPJLszFROiqHRa6qQGebVQsWWmQuUcBv6q9wn9IVZ_uPVO5sMB1FM7_Epi4BX8_Uz6-MnEATWAp4kbHASh-57BUhw-ui_Lpa8Q"); // Cesta k databáze ONIX-u client.DefaultRequestHeaders.Add("DatabasePath", "C:\ProgramData\ONIX\Data\KROS\KROS.ndb"); // ID typu dokladu (Príjemka) Int64 documentTypeId = 1000022; // Filter na partnera String parnterName = "KROS a.s."; // Filter na kód číselneho radu String nsCode = "P"; //... filtrovanie je možné podľa properties, ktoré sú dostupné na objekte doklad a sú popísané v dokumentácii // Vyžiadam zoznam príjemok z číselného radu "P" a s partnerom "KROS a.s." using (HttpResponseMessage response = await client.GetAsync($"api/v1/documents/{documentTypeId}?Partner_Name={parnterName}&Ns_Code={nsCode}")) { if (response.IsSuccessStatusCode) { var responseString = await response.Content.ReadAsStringAsync(); result = JsonConvert.DeserializeObject<IEnumerable<DtoDocument>>(responseString); } } return result; }