Queries
List endpoints accept repeated queries[] parameters. Each is a small
function call. Combine filters, ordering, pagination and projection.
Filter operators
Operators
equal("field", [value, ...]) notEqual("field", [value])
lessThan("field", value) lessThanEqual("field", value)
greaterThan("field", value) greaterThanEqual("field", value)
between("field", low, high)
startsWith("field", "x") endsWith("field", "x") contains("field", "x")
isNull("field") isNotNull("field")
search("field", "term") // full-text (see Search)
and([ ... ]) or([ ... ]) // nest filter operators
Ordering, paging, projection
Shaping
orderAsc("field") orderDesc("field")
limit(25) offset(50)
select(["title","done"]) // return only these fields (+ $-metadata)
Example
curl
# open, high-priority notes, newest first, first 10
curl -G "https://base.finiteskills.com/v1/databases/main/collections/notes/documents" \
-H "X-Appwrite-Project: <YOUR_PROJECT_ID>" \
--data-urlencode 'queries[]=equal("done",[false])' \
--data-urlencode 'queries[]=greaterThanEqual("priority",3)' \
--data-urlencode 'queries[]=orderDesc("$createdAt")' \
--data-urlencode 'queries[]=limit(10)'
The response is { total, documents: [...] } where total counts all matches
(not just the page).
Aggregations
GET .../aggregations?attribute=priority returns { count, sum, avg, min, max },
honouring the same queries[] filters.
Atomic batch writes
POST .../documents/batch runs create/update/delete sets in a single transaction —
all-or-nothing:
Batch body
{
"create": [ { "data": { "title": "A" } }, { "data": { "title": "B" } } ],
"update": [ { "documentId": "x", "data": { "done": true } } ],
"delete": [ "y" ]
}