Categorie: api Bijgewerkt: 2026-04-05 odata rest-api filters query paginering

OData Filter Referentie

De Ultimo REST API ondersteunt OData versie 4 query opties voor het filteren, sorteren, selecteren en pagineren van data. Dit artikel beschrijft alle beschikbare operators, functies en query opties met concrete voorbeelden per use case.

Beschikbaarheid: Professional, Premium, Enterprise


Query opties overzichtbewerken

Optie Beschrijving Voorbeeld
$filter Filter resultaten op voorwaarden $filter=Status eq 2
$select Selecteer specifieke properties $select=Id,Description
$expand Voeg gerelateerde entiteiten toe $expand=Department
$orderby Sorteer resultaten $orderby=Description asc
$top Beperk aantal resultaten $top=10
$skip Sla records over $skip=20
$count Voeg totaal aantal toe aan response $count=true

$filter - Vergelijkingsoperatorenbewerken

Operator Beschrijving Voorbeeld
eq Gelijk aan $filter=Status eq 2
ne Niet gelijk aan $filter=Status ne 0
gt Groter dan $filter=Id gt '100'
ge Groter dan of gelijk aan $filter=Id ge '100'
lt Kleiner dan $filter=Id lt '200'
le Kleiner dan of gelijk aan $filter=Id le '200'
like Patroon match $filter=Description like '%pomp%'
in In een lijst van waarden $filter=Status in (1, 2, 3)

like operatorbewerken

De like operator ondersteunt twee wildcards: - % -- nul of meer willekeurige tekens - _ -- precies een willekeurig teken

$filter=Description like '%pomp%'        # Bevat "pomp"
$filter=Description like 'Koel%'         # Begint met "Koel"
$filter=Description like '%installatie'  # Eindigt met "installatie"
$filter=Id like '000__'                  # Id begint met "000" gevolgd door 2 tekens

in operatorbewerken

Filter op meerdere waarden tegelijk:

$filter=Status in (1, 2, 3)
$filter=Department/Id in ('01', '02', '03')

$filter - Logische operatorenbewerken

Operator Beschrijving Voorbeeld
and Logische EN $filter=Status eq 2 and Context eq 1
or Logische OF $filter=Status eq 2 or Status eq 3
not Logische NIET $filter=not (Status eq 0)
() Groepering $filter=(Status eq 2 or Status eq 3) and Context eq 1

Gecombineerde filtersbewerken

# Actieve equipment van afdeling 01
$filter=Status eq 2 and Department/Id eq '01'

# Jobs met status 1 of 2, van context Technical Service
$filter=(Status eq 1 or Status eq 2) and Context eq 1

# Equipment die NIET inactief is
$filter=not (Status eq 0)

Ondersteunde datatypesbewerken

Datatype Voorbeeld filter
Null $filter=Description eq null
Boolean $filter=IsActive eq true
Integer $filter=Status eq 2
Decimal $filter=Amount gt 100.50
String $filter=Id eq '00001'
Date $filter=InstallDate eq 2022-04-07
DateTimeOffset $filter=ModifiedOn gt 2025-01-01T00:00:00Z
TimeOfDay $filter=StartTime ge 08:00:00

Let op: Stringwaarden moeten tussen enkele aanhalingstekens staan. Numerieke waarden en datums niet.


Filteren op relatiesbewerken

Filter op gerelateerde entiteiten door /Id toe te voegen aan het attribuutpad:

# Equipment van afdeling 01
$filter=Department/Id eq '01'

# Jobs voor een specifiek equipment
$filter=Equipment/Id eq '00001'

# Equipment op een specifieke locatie
$filter=Site/Id eq 'HOOFD'

$select - Properties selecterenbewerken

Beperk de response tot specifieke properties:

GET .../object/Equipment?$select=Id,Description,Status

# Response bevat alleen:
# { "Id": "00001", "Description": "Koelinstallatie", "Status": 2 }

Meerdere properties scheiden met komma's:

$select=Id,Description,Status,InstallDate,Department

$expand - Gerelateerde entiteitenbewerken

Voeg gerelateerde entiteiten toe aan de response. Maximaal 3 niveaus diep.

Basis expandbewerken

GET .../object/Equipment?$expand=Department,CostCenter

Geneste expandbewerken

GET .../object/Equipment?$expand=Department($expand=Site)

Expand met selectbewerken

GET .../object/Equipment?$expand=Department($select=Id,Description)

Expand met filterbewerken

GET .../object/Department('01')?$expand=Jobs($filter=Status eq 1)

$orderby - Sorterenbewerken

Sorteer resultaten oplopend (asc) of aflopend (desc):

# Oplopend op beschrijving (standaard)
$orderby=Description asc

# Aflopend op aanmaakdatum
$orderby=CreatedOn desc

# Meervoudige sortering
$orderby=Department asc,Description asc

$top en $skip - Pagineringbewerken

$top - Beperk resultatenbewerken

# Eerste 10 records
$top=10

$skip - Offsetbewerken

# Sla de eerste 20 records over
$skip=20

Combinatie voor pagineringbewerken

# Pagina 1 (records 1-25)
$top=25&$skip=0

# Pagina 2 (records 26-50)
$top=25&$skip=25

# Pagina 3 (records 51-75)
$top=25&$skip=50

Aanbeveling: Gebruik bij voorkeur de nextPageLink uit de server response in plaats van handmatige paginering met $top en $skip.


$count - Totaal aantalbewerken

Voeg het totaal aantal records toe aan de response:

GET .../object/Equipment?$count=true

# Response bevat:
# { "count": 1542, "items": [...] }

Combineer met filters:

GET .../object/Equipment?$filter=Status eq 2&$count=true

Voorbeelden per use casebewerken

Equipment managementbewerken

# Alle actieve equipment ophalen
GET .../object/Equipment?$filter=Status eq 2&$select=Id,Description,EquipmentType

# Equipment met vervallen onderhoudsdatum
GET .../object/Equipment?$filter=NextPmMaintenanceDate lt 2025-04-01&$orderby=NextPmMaintenanceDate asc

# Equipment zoeken op beschrijving
GET .../object/Equipment?$filter=Description like '%koeling%'

# Equipment per afdeling met type-informatie
GET .../object/Equipment?$filter=Department/Id eq '01'&$expand=EquipmentType($select=Id,Description)

Job managementbewerken

# Open jobs (status 1 = nieuw, 2 = in behandeling)
GET .../object/Job?$filter=Status in (1, 2)&$orderby=CreatedOn desc

# Jobs voor een specifiek equipment
GET .../object/Job?$filter=Equipment/Id eq '00001'&$select=Id,Description,Status

# Jobs aangemaakt in de afgelopen week
GET .../object/Job?$filter=CreatedOn ge 2025-03-28&$top=50

# Afgemelde jobs met equipment details
GET .../object/Job?$filter=Status eq 3&$expand=Equipment($select=Id,Description)

Artikelen en voorraadbewerken

# Alle actieve artikelen
GET .../object/Article?$filter=Status eq 2&$select=Id,Description,StockLevel

# Artikelen met voorraad onder minimum
GET .../object/Article?$filter=StockLevel lt MinimumStockLevel

# Artikelen van een specifieke leverancier
GET .../object/Article?$filter=Vendor/Id eq 'LEV001'

Medewerkers en afdelingenbewerken

# Alle medewerkers van een afdeling
GET .../object/Employee?$filter=Department/Id eq '01'&$select=Id,Name,Email

# Alle afdelingen met hun medewerkers
GET .../object/Department?$expand=Employees($select=Id,Name)

# Zoek medewerker op naam
GET .../object/Employee?$filter=Name like '%Janssen%'

Speciale tekens in filtersbewerken

Aanhalingstekensbewerken

Enkele aanhalingstekens in stringwaarden moeten verdubbeld worden:

$filter=Description eq 'O''Brien'

URL encodingbewerken

Bepaalde tekens vereisen URL encoding:

Teken Encoded
Spatie %20 of +
< %3C
> %3E
% %25
& %26
" %22

Forward slashes in IDsbewerken

Forward slashes werken niet in ID-paden maar wel in filters:

# Werkt NIET:
GET .../object/Building('01/02')

# Werkt WEL:
GET .../object/Building?$filter=Id eq '01/02'

Combinatievoorbeeldenbewerken

Complexe querybewerken

GET .../object/Equipment
  ?$filter=Status eq 2 and Department/Id eq '01' and InstallDate ge 2020-01-01
  &$select=Id,Description,InstallDate,SerialNumber
  &$expand=Department($select=Description)
  &$orderby=InstallDate desc
  &$top=25
  &$count=true

Paginering met filtering en sorteringbewerken

# Eerste pagina
GET .../object/Job?$filter=Status eq 1&$orderby=CreatedOn desc&$top=50&$skip=0&$count=true

# Volgende pagina (gebruik bij voorkeur nextPageLink)
GET .../object/Job?$filter=Status eq 1&$orderby=CreatedOn desc&$top=50&$skip=50

Beperkingenbewerken


Gerelateerde artikelenbewerken