How to Build URL Query Strings

By diamond@localstreets.com Last updated 30/04/26 05:25
dlo, api

This syntax guide defines how to construct query parameters for filtering, searching, sorting, and paginating records across objects.

The same rules apply consistently across any object that accepts a query string paramter including Data List Objects (DLO) and API calls.

Quick summary:

  • Queries are passed as standard key=value pairs, combined using & (e.g. key=value&key=value).
  • All normal URL query string rules apply, including URL encoding where required.
  • This system adds a small set of extensions where operators are placed directly after the = (for example !, *, ^, >, <, and NULL) to control filtering and search behaviour.

Once you understand the extensions below, the rest behaves like a standard key=value query string.

Basic query format

?{table}.{field}={value}

Selects records where a field equals the supplied value.

?items.status=active

Filtering syntax

Operation Syntax Example Description
Equals ?{table}.{field}={value} ?items.status=active Selects records where the field equals the supplied value.
Not equals ?{table}.{field}=!{value} ?items.status=!inactive Selects records where the field does not equal the supplied value.
Empty ?{table}.{field}= ?items.description= Selects records where the field is empty.
Null ?{table}.{field}=NULL ?items.description=NULL Selects records where the field is null.
Greater than or equal ?{table}.{field}=>={value} ?items.price=>=100 Selects records where the field is greater than or equal to the supplied value.
Less than or equal ?{table}.{field}=<={value} ?items.price=<=500 Selects records where the field is less than or equal to the supplied value.

Text matching syntax

Operation Syntax Example Description
Contains ?{table}.{field}=*{value} ?items.name=*phone For string fields configured with full-text indexing. Matches values that contain the supplied value.
Starts with ?{table}.{field}=^{value} ?items.name=^pro For string fields configured with auto-complete indexing. Matches values that start with the supplied value.

Full-text search

Full-text search parameters affect relevance scoring and result ordering. They do not filter records directly.

Search type Syntax Example Description
Search all indexed fields ?{table}.q={value} ?items.q=wireless charger Searches across all full-text indexed fields in the table and applies relevance scoring.
Search one indexed field ?{table}.{field}.q={value} ?items.name.q=charger Searches a specific full-text indexed field for relevance scoring and ordering.

Combining multiple parameters

Multiple query parameters can be combined using &.

?items.status=active&items.price=>=100&items.name=*pro

Sorting

Use the sort parameter to control result ordering.

?sort={field} ASC
?sort=price DESC

Use ASC for ascending order or DESC for descending order.

Sorting by multiple fields

You can sort by multiple fields by separating each rule with a comma.

?sort=price ASC,name DESC

This sorts by price ascending, then by name descending when values are equal.

Pagination

Use pageNumber and pageSize to control which records are returned.

?pageNumber=1&pageSize=25

Query Syntax and Interpretation Rules

Object, Table, and Field Resolution

Query parameters follow one of the formats below:

?{table}.{field}={value}
?{object}.{table}.{field}={value}

When an object is provided, the query is resolved only against that object. The specified table must belong to the object, and the field must exist within that table.

If no object is provided, the query applies to all objects on the current page that use the specified table.

Use the object-qualified format when:

  • Multiple objects on the page reference the same table
  • You need to target a specific object without affecting others

Case Sensitivity

Table and field names are case sensitive and must match exactly.

Values are not case sensitive.

?items.status=active
?items.status=ACTIVE
?items.status=Active

Reserved Operators

The following values are reserved because they are used as query operators:

! , ^ , * , < , <= , > , >= , NULL

If a value begins with a reserved character, wrap it in quotes so it is treated as a literal value.

?items.name="!Special"

Complete example

/api/data-list/example-list?items.status=active&items.price=>=100&items.name=*pro&sort=price ASC,name DESC&pageNumber=1&pageSize=25

This filters active items, restricts results to price ≥ 100, matches names containing "pro", sorts by price then name, and returns the first page of results.