f3nris
505c518bf8
feat(harfanglab): count agents by filter without listing them (1.6.0)
...
The agent collection is DRF-paginated, so `count` already carries the
filtered total. endpoint_count asks for limit=1 and reads it, instead of
pulling up to 10000 agent records back through the playbook the way
endpoint_search does — and endpoint_search only filters on hostname.
Filters cover the documented agent query parameters (hostname, network,
os, version, status, isolation_state, tenant), add lastseen/firstseen
bounds over the DRF range lookups, and keep a raw `filters` escape hatch
for anything else the instance accepts.
The API silently drops a query parameter it does not recognise as a
filter, which turns a typo into a plausible-looking fleet-wide total, so
the fleet `total` is returned next to `count` to make that case visible.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-09-21 12:29:53 +00:00
..
2026-06-22 13:50:20 +02:00
2026-07-21 22:18:01 +02:00
2026-07-21 22:18:01 +02:00
2026-07-21 22:18:01 +02:00
2026-07-21 22:18:01 +02:00
2026-06-22 13:50:20 +02:00
2026-06-22 13:50:20 +02:00
2026-07-21 21:57:37 +02:00
2026-06-22 13:50:20 +02:00
2026-06-22 13:50:20 +02:00
2026-07-21 22:09:56 +02:00
2026-07-21 22:01:22 +02:00
2026-06-22 13:50:20 +02:00
2026-07-21 22:01:22 +02:00
2026-07-21 22:01:22 +02:00
2026-07-21 21:52:39 +02:00
2026-09-21 12:29:53 +00:00
2026-06-22 13:50:20 +02:00
2026-07-21 22:14:25 +02:00
2026-06-22 13:50:20 +02:00
2026-06-26 14:15:57 +02:00
2026-07-21 22:14:25 +02:00
2026-06-26 14:15:57 +02:00
2026-06-22 13:50:20 +02:00
2026-06-22 13:50:20 +02:00
2026-06-22 13:50:20 +02:00
2026-06-22 13:50:20 +02:00
2026-07-21 22:09:56 +02:00
2026-06-22 13:50:20 +02:00
2026-06-22 13:50:20 +02:00
2026-06-22 13:50:20 +02:00
2026-06-22 13:50:20 +02:00
2026-06-22 13:50:20 +02:00
2026-06-22 13:50:20 +02:00
2026-06-22 13:50:20 +02:00
2026-06-22 13:50:20 +02:00
2026-07-21 22:09:56 +02:00
2026-06-22 13:50:20 +02:00
2026-06-22 13:50:20 +02:00
2026-06-22 13:50:20 +02:00
2026-06-22 13:50:20 +02:00
2026-06-22 13:50:20 +02:00
2026-06-22 13:50:20 +02:00
2026-06-22 13:50:20 +02:00
2026-06-22 13:50:20 +02:00
2026-06-22 13:50:20 +02:00
2026-07-21 22:09:56 +02:00
2026-06-22 13:50:20 +02:00
2026-06-22 13:50:20 +02:00
2026-06-22 13:50:20 +02:00
2026-06-22 13:50:20 +02:00
2026-06-22 13:50:20 +02:00
2026-06-22 13:50:20 +02:00
2026-07-21 21:52:39 +02:00
2026-07-21 22:04:47 +02:00
2026-07-21 22:04:47 +02:00
2026-07-21 22:04:47 +02:00
2026-06-22 13:50:20 +02:00
2026-06-22 13:50:20 +02:00
2026-06-22 13:50:20 +02:00
2026-06-22 13:50:20 +02:00
2026-06-22 13:50:20 +02:00
2026-06-22 13:50:20 +02:00
2026-06-22 13:50:20 +02:00
2026-06-22 13:50:20 +02:00
2026-06-22 13:50:20 +02:00
2026-06-22 13:50:20 +02:00
2026-06-22 13:50:20 +02:00
2026-06-22 13:50:20 +02:00
2026-06-22 13:50:20 +02:00
2026-06-22 13:50:20 +02:00
2026-06-22 13:50:20 +02:00
2026-06-22 13:50:20 +02:00
2026-06-22 13:50:20 +02:00
2026-06-22 13:50:20 +02:00
2026-06-22 13:50:20 +02:00
2026-06-22 13:50:20 +02:00
2026-06-22 13:50:20 +02:00
2026-06-22 13:50:20 +02:00
2026-06-22 13:50:20 +02:00
2026-06-22 13:50:20 +02:00
2026-06-22 13:50:20 +02:00
2026-06-22 13:50:20 +02:00
2026-06-22 13:50:20 +02:00
2026-06-22 13:50:20 +02:00
2026-06-22 13:50:20 +02:00
2026-06-22 13:50:20 +02:00
2026-06-22 13:50:20 +02:00
2026-06-22 13:50:20 +02:00
2026-06-26 00:00:06 +02:00
2026-07-21 22:20:54 +02:00
2026-07-21 22:20:54 +02:00
2026-07-21 22:20:54 +02:00
2026-07-21 22:20:54 +02:00
2026-07-21 22:20:54 +02:00
2026-07-21 22:04:47 +02:00
2026-07-21 22:09:56 +02:00
2026-06-22 13:50:20 +02:00
2026-06-22 13:50:20 +02:00
2026-06-22 13:50:20 +02:00
2026-06-22 13:50:20 +02:00
2026-07-21 21:57:37 +02:00