Filtering
Vigilo Core API uses OData v4 for query options on collection endpoints. This page is a practical reference for the subset commonly used in integrations.
The exact set of operators and fields supported varies per endpoint. Consult the OpenAPI spec at
/api/core/swagger-ui/index.htmlfor what each endpoint accepts.
Query options
| Option | Purpose |
|---|---|
$filter | Predicate expression — narrow the result |
$select | Projection — pick a subset of fields |
$top | Page size |
$skip | Pagination offset |
$orderby | Sort |
$filter operators
| Operator | Meaning |
|---|---|
eq | equals |
ne | not equals |
gt / ge | greater / greater-or-eq |
lt / le | less / less-or-eq |
and / or | logical combine |
not | negation |
String functions commonly available:
| Function | Meaning |
|---|---|
contains(f, 'x') | substring contains |
startswith(f, 'x') | prefix match |
endswith(f, 'x') | suffix match |
Literal values
| Type | Format | Example |
|---|---|---|
| String | single-quoted | 'user-441' |
| Number | bare | 42 |
| Boolean | true / false | true |
| Date-time | ISO 8601 without quotes (per OData) | 2026-04-26T12:00:00Z |
| GUID | OData literal {guid} may be required by some endpoints | see the OpenAPI spec |
Examples
Equality:
$filter=firstName eq 'Neil'Combined:
$filter=lastName eq 'Down' and gender eq 'male'Date comparison:
$filter=createdAt gt 2026-04-26T00:00:00ZSubstring:
$filter=contains(lastName, 'Sjov')Notes
- Default sort is by
id; override with$orderby=…only when there's a concrete reason. - Default page size is enforced by the endpoint; pass
$top=1000for large pages. - Field names follow the resource shape documented per module (Base module, Schedules module, …).