Použití /query v REST API

Využití volání /query v POST requestech

Ota Rádl avatar
Autor: Ota Rádl
Aktualizováno před více než týdnem

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

  1. POST
    https://demo.flexibee.eu/c/demo/faktura-vydana/query.json

  2. 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:

  1. POST
    https://demo.flexibee.eu/c/demo/faktura-vydana/query.json?use-internal-id=true&no-ext-ids=true&authToken=123abc456

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

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

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

Dostali jste odpověď na svou otázku?