Obecný formát dotazu s filtry
Sestavení requestu s filtrem na řádky i sloupce (obecná syntaxe):
GET http(s)://[adresa API]/[Endpoint]?FILTER_CLAUSE&SELECT_CLAUSE
České znaky
Pokud hodnota (textové) property použitá v podmínce filtru obsahuje české znaky (obecně jakékoli znaky s diakritikou), je nutno takovouto hodnotu enkódovat dle následující tabulky (sloupec v UTF-8).
Operátory
Každý z operátorů je funkční jen pro atributy určitých datových typů – viz následující tabulka (ozn. x).
Operátor | REST API v1.0 | REST API v2.0 | GraphQL | Textová hodnota | Číselná hodnota | Logická hodnota | Datum |
rovná se | Equal | eq | eq | x | x | x | x |
nerovná se | NotEqual | ne | ne | x | x | x | x |
méně než | Less | lt | lt | – | x | – | x |
méně než / rovno | LessEqual | lte | lte | – | x | – | x |
větší než | Greater | gt | gt | – | x | – | x |
větší než / rovno | GreaterEqual | gte | gte | – | x | – | x |
začíná na | StartWith | sw | sw | x | – | – | – |
obsahuje | Contains | ct | ct | x | – | – | – |
končí na | EndWith | ew | ew | x | – | – | – |
Vlastnosti typu enum je možné filtrovat i na základě textové hodnoty,
např.: movementType~eq~Received je ekvivalentní s movementType~eq~1
Třídění
(REST) API v1.0
GET http(s)://[adresa API]/Company?order.OrderProperties[0].PropertyName=ObchNazev&order.OrderProperties[0].Direction=asc
GET https://demo.moneyerp.cz:82/Company?order.OrderProperties[0].PropertyName=ObchNazev&order.OrderProperties[0].Direction=asc
(REST) API v2.0
GET http(s)://[adresa API]/v2.0/Company?order=ObchNazev~asc
Směr třídění
asc vzestupně
desc sestupně
GET https://demo.moneyerp.cz:82/v2.0/Company?order=ObchNazev~asc
Filtrování řádků (WHERE) – FILTER_CLAUSE
(REST) API v1.0
Jednoduchý filtr:
GET http(s)://[adresa API]/ReceivedOrder?filter.PropertyName=SumaCelkemCM&filter.Operation=Equal&filter.ExpectedValue=6037,90
GET https://demo.moneyerp.cz:82/ReceivedOrder?filter.PropertyName=SumaCelkemCM&filter.Operation=Equal&filter.ExpectedValue=6037,90
Kombinovaný filtr (pole jednoduchých filtrů):
GET http(s)://[adresa API]/ReceivedOrder?filter.Filters[0].PropertyName=SumaCelkemCM&filter.Filters[0].Operation=GreaterEqual&filter.Filters[0].ExpectedValue=1000&filter.LogicOperator=AND&filter.Filters[1].PropertyName=SumaCelkemCM&filter.Filters[1].Operation=LessEqual&filter.Filters[1].ExpectedValue=4000
GET https://demo.moneyerp.cz:82/ReceivedOrder?filter.Filters[0].PropertyName=SumaCelkemCM&filter.Filters[0].Operation=GreaterEqual&filter.Filters[0].ExpectedValue=1000&filter.LogicOperator=AND&filter.Filters[1].PropertyName=SumaCelkemCM&filter.Filters[1].Operation=LessEqual&filter.Filters[1].ExpectedValue=4000
Složený filtr (pole jednoduchých a kombinovaných filtrů):
GET http(s)://[adresa API]/ReceivedOrder?filter.Filters[0].PropertyName=Faze&filter.Filters[0].Operation=Equal&filter.Filters[0].ExpectedValue=1&filter.LogicOperator=AND&filter.InnerLogics[0].Filters[0].PropertyName=Zakazka_ID&filter.InnerLogics[0].Filters[0].Operation=Equal&filter.InnerLogics[0].Filters[0].ExpectedValue=af2b8c86-1fce-4816-a93e-2a7201a73df3&filter.InnerLogics[0].Filters[1].PropertyName=Zakazka_ID&filter.InnerLogics[0].Filters[1].Operation=Equal&filter.InnerLogics[0].Filters[1].ExpectedValue=9c06a988-9345-44a2-9e5e-e46a828d3cd7&filter.InnerLogics[0].LogicOperator=OR
GET https://demo.moneyerp.cz:82/ReceivedOrder?filter.Filters[0].PropertyName=Faze&filter.Filters[0].Operation=Equal&filter.Filters[0].ExpectedValue=1&filter.LogicOperator=AND&filter.InnerLogics[0].Filters[0].PropertyName=Zakazka_ID&filter.InnerLogics[0].Filters[0].Operation=Equal&filter.InnerLogics[0].Filters[0].ExpectedValue=af2b8c86-1fce-4816-a93e-2a7201a73df3&filter.InnerLogics[0].Filters[1].PropertyName=Zakazka_ID&filter.InnerLogics[0].Filters[1].Operation=Equal&filter.InnerLogics[0].Filters[1].ExpectedValue=9c06a988-9345-44a2-9e5e-e46a828d3cd7&filter.InnerLogics[0].LogicOperator=OR
(REST) API v2.0
Jednoduchý filtr:
GET http(s)://[adresa API]/v2.0/Company?filter=ID~eq~d86fffe9-b2c6-4089-910c-17aba0952290
GET https://demo.moneyerp.cz:82/v2.0/Company?filter=ID~eq~d86fffe9-b2c6-4089-910c-17aba0952290
Jednoduchý filtr (filtrovaná hodnota obsahuje mezery):
GET http(s)://[adresa API]/v2.0/Company?filter=Nazev~eq~Byznys%20software,%20s.r.o.
GET https://demo.moneyerp.cz:82/v2.0/Company?filter=Nazev~eq~Byznys%20software,%20s.r.o.
Jednoduchý filtr (filtrování dle atributu typu datum):
GET http(s)://[adresa API]/v2.0/JobOrder?filter=DatumPlanovanehoZahajeni~eq~2022-02-22
GET https://demo.moneyerp.cz:82/v2.0/JobOrder?filter=DatumPlanovanehoZahajeni~eq~2022-02-22
Kombinovaný filtr (pole jednoduchých filtrů) [operátor AND]:
GET http(s)://[adresa API]/v2.0/ReceivedOrder?filter=SumaCelkemCM~gte~1000#SumaCelkemCM~lte~4000
GET https://demo.moneyerp.cz:82/v2.0/ReceivedOrder?filter=SumaCelkemCM~gte~1000#SumaCelkemCM~lte~4000
Kombinovaný filtr (pole jednoduchých filtrů) [operátor OR]:
GET http(s)://[adresa API]/v2.0/ReceivedOrder?filter=SumaCelkemCM~lte~1000|SumaCelkemCM~gte~4000
GET http(s)://[adresa API]/v2.0/ReceivedOrder?filter=SumaCelkemCM~lte~1000|SumaCelkemCM~gte~4000
Filtrování sloupců (SELECT) – SELECT_CLAUSE
(REST) API v1.0
Úplná syntaxe:
GET http(s)://[adresa API]/IssuedInvoice?select.Properties[0]=ID&select.Properties[1]=CisloDokladu&select.Properties[2]=Nazev
Zkrácená syntaxe:
GET http(s)://[adresa API]/IssuedInvoice?select.Properties=ID,CisloDokladu,Nazev
GET https://demo.moneyerp.cz:82/IssuedInvoice?select.Properties=ID,CisloDokladu,Nazev
(REST) API v2.0
GET http(s)://[adresa API]/v2.0/IssuedInvoice?select=ID,CisloDokladu,Nazev
GET https://demo.moneyerp.cz:82/v2.0/IssuedInvoice?select=ID,CisloDokladu,Nazev
Filtrování sloupců je funkční i pro metody (endpointy) s omezeným počtem záznamů:
GET http(s)://[adresa API]/v2.0/IssuedInvoice/0/100?select=ID,CisloDokladu,Nazev
GET https://demo.moneyerp.cz:82/v2.0/IssuedInvoice/0/100?select=ID,CisloDokladu,Nazev
Filtrování sloupců není funkční pro metody (endpointy) pro konkrétní záznam (/{id}) => řeší se to zasláním dotazu na obecný endpoint s aplikovaným filtrem na pole ID:
GET http(s)://[adresa API]/v2.0/IssuedInvoice?filter=ID~eq~c47ac22e-38fb-48d8-ae30-47b39290d49e&select=ID,CisloDokladu,Nazev
GET https://demo.moneyerp.cz:82/v2.0/IssuedInvoice?filter=ID~eq~c47ac22e-38fb-48d8-ae30-47b39290d49e&select=ID,CisloDokladu,Nazev
Vrácené záznamy
(REST) API v1.0
Filtr na existující hodnotu dané property
GET http(s)://[adresa API]/Article/0/1000?select.Properties=Nazev,Kod,Katalog,TypArtiklu,Zaruka_Typ,Zaruka_Doba,DodaciLhuta_Typ,DodaciLhuta_Doba,ID&filter.PropertyName=ID&filter.Operation=Equal&filter.ExpectedValue=3466d27d-7381-4464-a97b-d49e1c355465
GET https://demo.moneyerp.cz:82/Article/0/1000?select.Properties=Nazev,Kod,Katalog,TypArtiklu,Zaruka_Typ, Zaruka_Doba,DodaciLhuta_Typ,DodaciLhuta_Doba,ID&filter.PropertyName=ID&filter.Operation=Equal&filter.ExpectedValue=3466d27d-7381-4464-a97b-d49e1c355465
API vrátí pouze daný záznam:
Filtr na neexistující hodnotu dané property
GET http(s)://[adresa API]/Article?select.Properties=Nazev,Kod,Katalog&filter.PropertyName=ID&filter.Operation=Equal&filter.ExpectedValue=efa349d7-bccd-4d2a-8dc8-60d3cba72984
GET https://demo.moneyerp.cz:82/Article?select.Properties=Nazev,Kod,Katalog&filter.PropertyName=ID&filter.Operation=Equal&filter.ExpectedValue=efa349d7-bccd-4d2a-8dc8-60d3cba72984

Filtr na nevalidní hodnotu dané property
GET http(s)://[adresa API]/Article?select.Properties=ID,Nazev,Kod,Katalog&filter.PropertyName=ID&filter.Operation=Equal&filter.ExpectedValue=Autobus
Pozn. očekávanou hodnotu (ExpectedValue) nelze implicitně převést na požadovaný datový typ
API vrátí všechny záznamy, protože požadovaný filtr nelze korektně sestavit, tzn. provede se select dat bez aplikovaného filtru.
GET https://demo.moneyerp.cz:82/Article?select.Properties=ID,Nazev,Kod,Katalog&filter.PropertyName=ID&filter.Operation=Equal&filter.ExpectedValue=Autobus
Filtr na prázdnou (neuvedenou) hodnotu dané property
GET http(s)://[adresa API]/Article?select.Properties=ID,Nazev,Kod,Katalog&filter.PropertyName=ID&filter.Operation=Equal&filter.ExpectedValue=
API vrátí záznamy vyhovující podmínce [PropertyName] IS NULL.
GET https://demo.moneyerp.cz:82/Article?select.Properties=ID,Nazev,Kod,Katalog&filter.PropertyName=ID&filter.Operation=Equal&filter.ExpectedValue=
Filtr na neexistující property
GET http(s)://[adresa API]/Article?select.Properties=ID,Nazev,Kod,Katalog&filter.PropertyName=Akce&filter.Operation=Equal&filter.ExpectedValue=1
Pozn. daný objekt neobsahuje property (PropertyName), přes kterou se provádí filtrování
API vrátí všechny záznamy, protož požadovaný filtr nelze korektně sestavit, tzn. provede se select dat bez aplikovaného filtru.
GET https://demo.moneyerp.cz:82/Article?select.Properties=ID,Nazev,Kod,Katalog&filter.PropertyName=Akce&filter.Operation=Equal&filter.ExpectedValue=1
Omezení délky (složitosti) filtru
Maximální délka URL adresy i maximální délka parametrů dotazu (path) jsou na straně IIS omezeny. Pokud je použitý filtr složený z mnoha podmínek, může se stát, že jeho délka překročí dané omezení a takovýto request skončí chybou, např. 414 URI Too Long.
Toto nastavení lze v IIS upravit: Weby -> [web API] -> Filtrování požadavků -> Upravit nastavení funkcí
Swagger dokumentace z našeho demo serveru je dostupná na https://demo.moneyerp.cz:82/swaggerDoc/. Pro údaje ClientID a ClientSecret si zažádejte pomocí formuláře.