Skip to content

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:

OperatorDescription
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 q parameter is read without URL decoding, so parentheses, commas and colons are sent as they are. An encoded query (%28 for () is not understood. Values must not contain spaces, & or #.
  • Combine clauses inside and(…). Filters, select, sort and limit are given together in one expression, for example and(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.