Preskoči na glavno vsebino

Použitie /query v REST API

Využitie volania /query v POST requestoch

Avtor: Petr Pech

Pomocou volania /query možno zaslať všetky parametre a filtre, ktoré sa štandardne posielajú v URL adrese, pomocou tela volania. V tejto dokumentácii si opíšeme základnú funkčnosť. V tele volania POST možno zaslať úroveň detailu, stránkovanie, filtráciu a pod.

Pred použitím query odporúčame preštudovať štandardné zostavovanie URL prípadne Ako začať s API Flexi.

Štandardné volanie JSON

  1. Telo požiadavky
    { "winstrom": { ... filtry, detail, parametry } }

Ostatné informácie sa uvádzajú do tela požiadavky. Možná je aj kombinácia, keď niektoré parametre zapíšeme do URL:

Zápis detailu

Detail sa zapisuje výpočtom hodnôt nasledovne aj v prípade vnorených includovaných vlastností:

"detail":"custom:kod,nazFirmy,datVyst,datSplat,zbyvaUhradit,sumCelkem,stavUhrK,sumCelkemMen,mena(kod),stredisko(nazev,kod,id)"

Obdobne zapíšeme ako ďalší element aj samotný includes, pomocou výpočtu zahrnutých evidencií oddelených čiarkou:

"includes":"/faktura-vydana/mena,/faktura-vydana/stredisko"

Či ďalšie parametre detailu a stránkovanie:

"no-ext-ids":"true","limit":"80","start":"0","@version":"1.0"

Zápis filtra

Filtráciu zapisujeme do okrúhlych zátvork rovnako tak, ako je tomu štandardne pri zápise URL:

"filter":"(datSplat lt now() and ((storno eq false and (stavUhrK is null or (stavUhrK neq \"stavUhr.uhrazeno\")))))"

Filter obsahuje logické operátory and a or prípadne ďalšie, ako je uvedené v dokumentácii filtrácie. Ďalej sú tu escapované významové úvodzovky pomocou spätných lomítok pre zápis reťazcov. Taktiež si môžete všimnúť funkciu now(), ktorá zabezpečuje odovzdanie dnešného dátumu. Filtrujeme faktúry, kde dátum splatnosti je nižší ako dnešný dátum a zároveň doklad nie je stornovaný ani uhradený.

Zápis zoradenia

Zoradenie zapisujeme v hranatých zátvorkách v poradí, v akom chceme zoradenie aplikovať, ak je zoradení viac:

"order":["sumCelkem","sumCelkemMen","mena"]

Najprv sa nám teda výstup zoradí podľa celkových súm a potom podľa meny. Zoradení možno uviesť viac. V prípade jedného zoradenia zapíšeme:

"order":"kod"

Príklady volaní

Teraz si ukážeme kompletné príklady volaní s ukážkou v aplikácii Postman.

  1. Vyfiltrujeme 100 vydaných faktúr, pre kontrolu pridáme parameter add-row-count. Faktúry získame s vlastným detailom, spoločne s vnorenou menou, strediskom a typom dokladu. Vo filtri získame menu podľa ID, typ dokladu podľa kódu. Celý výsledok chceme bez externých ID.

    POST

    Telo požiadavky

    { "winstrom": { "detail":"custom:kod,nazFirmy,datVyst,datSplat,zbyvaUhradit,storno,juhSum,sumCelkem,stavUhrK,sumCelkemMen,mena(kod),stredisko(nazev,kod,id),typDokl(typDoklK)",
    "includes":"/faktura-vydana/mena,/faktura-vydana/stredisko,/faktura-vydana/typDokl",
    "filter":"(kod like \"2021\" and mena eq \"31\" and typDokl eq \"code:FAKTURA\")",
    "no-ext-ids":"true",
    "@version":"1.0"
    }}

    Zápis v Postman

  2. Chceme získať vlastný detail prijatej objednávky vrátane informácie o e-maile a telefóne vnorenej evidencie firma. Filtrujeme objednávky s dátumom vystavenia od 1. 6. 2021 a typom dokladu OBP. Výsledky zoraďujeme podľa celkovej sumy a kódu dokladu.

    POST

    Telo požiadavky

    { "winstrom": { "detail":"custom:kod,sumCelkem,varSym,typDokl,firma(email,tel)", 
    "limit":"0",
    "filter" : "(datVyst > 2021-06-01) and typDokl = \"code:OBP\" ",
    "includes":"/objednavka-prijata/firma",
    "order":["sumCelkem","kod"],
    "@version":"1.0"
    }}

    Zápis v Postman

Ste s tem dobili odgovor na svoje vprašanje?