2.60.6867
06/11/2017
3.00.7505
25/07/2018

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

 

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#!/

 

Získanie autorizačného tokenu

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).

 

 

Získanie cesty k DEMO databáze

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”.

 

 

Použitie  dokumentácie

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.

 

Postup na vygenerovanie klienta

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ť.

 

 

Príklady použitia Web API

Prečítanie zoznamu skladových kariet a zostatkov na sklade [PHP]


<?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);
        }

        
    }

 

Zapísanie novej príjemky do systému [PHP]


<?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;
    }


Prečítanie zoznamu príjemok v číselnom rade P od partnera KROS a.s. [C#]


/// 


<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;
}



 

Comments are closed.