Pagination
page— one-based; the first page is1(default1).page=0is invalid and returns an error.pageSize— results per page (default50)- Response includes
hasMore: boolean
Sorting
Select specific fields
A comma-separated value in a singleselect parameter is not supported and is silently ignored. Repeat the parameter instead:
POST /project/query, pass select as a JSON array in the body:
Full-text search
:column1,column2 to limit search to specific columns.
Filtering
Simple equality:
Complex AND/OR:
Joining related data
?join:<table>:<fields>=<condition>
- Multiple joins: pass several
join:params in one request to join several tables. - Chained joins: a condition may reference another join’s alias (not only the base table), so you can hop across joined tables — e.g. join
deliverable as d, thendeliverable as oono.id eq d.rootParentId. Declare a join before any join that references it. Conditions support JSONB paths (d.data.stageId) and id-fields are cast automatically. See the timesheet attribution example.