Appearance
Query language
Several endpoints take a query in the q parameter. A query narrows down the objects returned, trims them to selected fields, sorts and pages them.
For example, this object:
json
{
"mutable": {
"customProperties": {
"foo": "bar"
}
}
}is matched by the query eq(mutable.customProperties.foo,bar).
Operators
Operators apply to properties of the object, with nested properties in dot notation:
| Operator | Description |
|---|---|
sort(<+|->{property}) | Sorts by the given property, ascending with +, descending with - |
select({property},{property},...) | Trims each object down to the given properties. Applies to list and history queries |
in({property},{array-of-values}) | Filters for objects where the property's value is in the provided array |
out({property},{array-of-values}) | Filters for objects where the property's value is not in the provided array |
contains({property},{value | expr}) | Filters for objects where the property is an array containing the value, or a value satisfying the expression |
excludes({property},{value | expr}) | Filters for objects where the property is an array not containing the value, or no value satisfying the expression |
limit({count},{start},{maxCount}) | Returns the given range of the result |
and({query},{query},...) | Applies all the given queries |
or({query},{query},...) | The union of the given queries |
eq({property},{value}) | Filters for objects where the property equals the value |
ne({property},{value}) | Filters for objects where the property does not equal the value |
lt({property},{value}) | Filters for objects where the property is less than the value |
le({property},{value}) | Filters for objects where the property is less than or equal to the value |
gt({property},{value}) | Filters for objects where the property is greater than the value |
ge({property},{value}) | Filters for objects where the property is greater than or equal to the value |
match({property},{value}) | Filters for objects where the property matches the value as a pattern, like SQL LIKE |
Queries can be nested to any depth, for example and(or(eq(foo,3),eq(foo,bar)),lt(price,10)).
Writing a query
- Send the query as written. The
qparameter is read without URL decoding, so parentheses, commas and colons are sent as they are. An encoded query (%28for() is not understood. Values must not contain spaces,&or#. - Combine clauses inside
and(…). Filters,select,sortandlimitare given together in one expression, for exampleand(eq(mutable.customProperties.group,Terminal),select(name,location),sort(-metadata.updatedTime),limit(20)). - Timestamps are compared as ISO 8601 strings in UTC, in the form
2026-10-05T12:00:00.000Z.
