Pomocí volání /query lze zaslat všechny parametry a filtry, které se standardně posílají v URL adrese, pomocí těla volání. V této dokumentaci si popíšeme základní funkčnost. V těle volání POST lze zaslat úroveň detailu, stránkování, filtraci apod.
Před použitím query doporučujeme prostudovat standardní sestavování URL případně Jak začít s API Flexi.
Standardní volání JSON
POST
https://demo.flexibee.eu/c/demo/faktura-vydana/query.json
Tělo požadavku
{ "winstrom": { ... filtry, detail, parametry } }
Ostatní informace se uvádějí do těla požadavku. Možná je i kombinace, kdy některé parametry zapíšeme do URL:
POST
https://demo.flexibee.eu/c/demo/faktura-vydana/query.json?use-internal-id=true&no-ext-ids=true&authToken=123abc456
Tělo požadavku
{ "winstrom": { ... filtry, detail, parametry } }
Zápis detailu
Detail se zapisuje výčtem hodnot následovně i v případě vnořených includovaných vlastností:
"detail":"custom:kod,nazFirmy,datVyst,datSplat,zbyvaUhradit,sumCelkem,stavUhrK,sumCelkemMen,mena(kod),stredisko(nazev,kod,id)"
Obdobně zapíšeme jako další element i samotný includes, pomocí výčtu zahrnutých evidencí oddělených čárkou:
"includes":"/faktura-vydana/mena,/faktura-vydana/stredisko"
Čí další parametry detailu a stránkování:
"no-ext-ids":"true","limit":"80","start":"0","@version":"1.0"
Zápis filtru
Filtrace zapisujeme do kulatých závorek stejně tak, jak je tomu standardně při zápisu URL:
"filter":"(datSplat lt now() and ((storno eq false and (stavUhrK is null or (stavUhrK neq \"stavUhr.uhrazeno\")))))"
Filtr obsahuje logické operátory and a or případně další, jak je uvedeno v dokumentaci filtrace. Dále jsou zde escapovány významové uvozovky pomocí zpětných lomítek pro zápis řetězců. Také si můžete všimnou funkce now(), která zajišťuje předání dnešního data. Filtrujeme faktury, kde datum splatnosti je nižší než dnešní datum a zároveň není doklad stornován a uhrazen.
Zápis řazení
Řazení zapisujeme v hranatých závorkách v pořadí, v jakém chceme řazení aplikovat, pokud je řazení více:
"order":["sumCelkem","sumCelkemMen","mena"]
Nejprve se nám tedy výstup seřadí podle celkových částek a poté dle měny. Řazení je možné uvést více. V případě jednoho řazení, zapíšeme:
"order":"kod"
Příklady volání
Nyní si ukážeme kompletní příklady volání s ukázkou v aplikaci Postman.
Vyfiltrujeme 100 vydaných faktur, pro kontrolu přidáme parametr add-row-count. Faktury získáme s vlastním detailem, společně s vnořenou měnou, střediskem a typem dokladu. Ve filtru získáme měnu dle ID, typ dokladu dle kódu. Celý výsledek chceme bez externích ID.
POST
https://demo.flexibee.eu/c/demo/faktura-vydana/query.json?add-row-count=true&limit=100
Tělo požadavku
{ "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
Chceme získat vlastní detail objednávky přijaté včetně informace o emailu a telefonu vnořené evidence firma. Filtrujeme objednávky s datem vystavení od 1. 6. 2021 a typem dokladu OBP. Výsledky řadíme dle celkové částky a kódu dokladu.
POST
https://demo.flexibee.eu:5434/c/demo/objednavka-prijata/query.json
Tělo požadavku
{ "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