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" ]
}