Querying

The feed supports these OData system query options. Anything else — $expand, $search, $apply — answers 501 Not Implemented rather than being silently ignored, so a response always means exactly what you asked for.

OptionWhat it doesExample
$filterKeep only the rows matching an expression$filter=visitDate ge 2026-01-01
$orderbySort by one or more properties, asc (default) or desc; empty values come first ascending and last descending, as OData specifies$orderby=visitDate desc
$topPage size, at most 1000 (also the default)$top=500
$skipRows to skip before the page$skip=1000
$counttrue adds @odata.count, the total matching rows$count=true
$selectReturn only these properties (the key is always kept)$select=id,visitDate,quantityTotal

Each set also answers GET /<Set>/$count with the plain number of rows, $filter applied.

Filter expressions

Comparisons eq ne gt ge lt le, combined with and, or, not and parentheses, plus the text functions contains, startswith and endswith (these match case-insensitively).

Literals: 'strings' (double a quote to escape it: 'It''s'), numbers, true/false, null (with eq/ne only), GUIDs quoted or bare, dates (2026-01-01) and timestamps (2026-01-01T10:00:00Z, any offset).

Copy
$filter=visitDate ge 2026-01-01 and visitDate lt 2026-02-01 $filter=quantityTotal gt 2 or origin eq null $filter=contains(email, '@example.dk') and archived eq false $filter=type eq 'ORDER' and amount ge 100 $filter=ticketTypeId eq bd4a0997-39db-41d9-883a-cdfa83e2101f

A filter on a property the set does not have, a type mismatch (quantityTotal eq 'two'), or anything the grammar cannot read is a 400 with an error code — never a silently dropped condition.

Paging

Large results come in pages. When a page is full, the response carries @odata.nextLink: the same query with $skip advanced and every option — filter, order, selection, count — kept. Follow it until it disappears. OData clients (Power BI, Excel) do this on their own; rows are ordered stably, so pages never overlap.

Errors

Errors are OData JSON with a code:

Copy
{ "error": { "code": "UNKNOWN_FILTER_FIELD", "message": "Unknown property visitdate in $filter." } }

401 means no key reached the feed, 403 an invalid key or one without OData access, 400 a request the feed cannot read, 404 an unknown set or entity, 501 an OData option the feed does not implement.

‹ Previous
Overview
Next ›
Power BI & Excel