AckdbObserveQueryRequest
Body for POST /observe/companies/query (and the /observe/contacts/query, /observe/persons/query twins). All fields optional - an empty body returns the default page of all active rows. The envelope is validated: an unknown top-level key, or a `group` node carrying an unknown key / a non-array `children`, is a 400 rather than a silently unfiltered query.
Properties
filterAckdbObserveFilterGroupsortarray ofcolumnsarray oflimitintegermin 1 · max 1000Page size, default 50. A limit above 1000 is a 400 - it is never clamped, because a clamped page size that the caller then steps `offset` by skips rows invisibly.
offsetintegermin 0idsarray ofOptional explicit id selection (pick specific rows instead of a filter). Each id is the row's grain id - entity_id for companies, contact_id for contacts, person_id for persons. When present, results are restricted to these ids, columns/sort still apply, any filter is ANDed in, and the id set becomes the page (limit/offset ignored). Empty array returns no rows; over 500 ids returns 400.
Example
{
"filter": {
"type": "group",
"op": "and",
"children": [
{
"$ref": "See AckdbObserveFilterGroup"
}
]
},
"sort": [
{
"field": "event_count",
"dir": "asc"
}
],
"columns": [
{
"field": "name",
"frozen": true,
"width": 200
}
],
"limit": 50,
"offset": 0,
"ids": [
"string"
]
}