Enot (ded) Skelly
336b734a42
feat: add stats api for new clock drift tracking
...
closes : #91
2026-07-24 14:01:12 -07:00
Enot (ded) Skelly
3f2506fc8b
feat: add geojson for iatas
...
closes #66
2026-07-24 12:59:48 -07:00
MrAlders0n
ba0e85c44e
fix(channels): review fixes for channel_iatas
...
Refresh last_heard on duplicate observations too, capped at hourly, so
steady traffic can't age a channel out of the filter while its packets
stay retained (dedup key has no heard_at). Guard the seed join against
the docker /dev/shm cap like the trace one, and drop the unused
last_heard index column so the upserts stay HOT.
2026-07-24 12:07:05 -07:00
MrAlders0n
dff9c6cf00
perf(channels): track channel activity per IATA in its own table
...
The IATA filter ran a correlated EXISTS over packets/observations with
ILIKE, which skipped the iata index and took ~7s live. Keep a small
channel_iatas table at ingest (like node_iatas) and filter against it.
Also honor the iatas= param so multi-site regions stop getting the
global list. Filter now ages out with packet retention rather than
matching any retained packet.
2026-07-24 12:07:05 -07:00
Enot (ded) Skelly
b33ebc007b
feat: add plural value filter params
...
closes #76
2026-07-23 14:26:16 -07:00
Enot (ded) Skelly
b38663d3a1
feat: add stats for top advertiser and talkers
...
closes #75
closes #74
2026-07-23 10:41:16 -07:00
Enot (ded) Skelly
0ca28cc6a8
feat: node prefix search
...
pubkeyPrefix takes any even length prefix string case-insensitive
and returns all matches
2026-07-23 10:14:47 -07:00
MrAlders0n
30772da2c5
perf(packets): drive IATA-filtered list from the observation index
...
Quiet sites probed hundreds of thousands of packets to fill a page.
Walk idx_observations_iata_heard per requested site and dedup instead.
Filtered lists now order by site-local recency; the cursor follows.
2026-07-20 09:07:05 -07:00
Enot (ded) Skelly
4e2ee62bad
feat(nodes): add ?neighbors to list nodes
...
inlcudes neighbor IDs in node details list
2026-07-02 09:12:23 -07:00
Enot (ded) Skelly
89fde4868f
tests(handlers): few more things to cover
2026-06-15 15:08:38 -07:00
Enot (ded) Skelly
e9d4a336ea
tests(handlers): add some happy path tests everywhere
2026-06-15 15:02:17 -07:00
Enot (ded) Skelly
b6e33ca460
docs(routes api): correct list handler cursor docs
2026-06-12 08:31:59 -07:00
Enot (ded) Skelly
b58e5a1edc
feat(api): differentiate traces and pings
2026-06-11 14:52:31 -07:00
Enot (ded) Skelly
205eaafbe9
feat(stats): add node type breakdown
...
/stats/node-types w/ filters for iata/region
closes #55
2026-06-10 13:18:26 -07:00
Enot (ded) Skelly
a0a687b6f8
tests(handlers): add validation tests for stats endpoints
2026-06-10 09:57:54 -07:00
Enot (ded) Skelly
a9b0025b1d
fix(stats): support multiple IATAs and region filtering on all stats endpoints
...
closes : #53 and #54
2026-06-10 09:52:02 -07:00
Enot (ded) Skelly
983ebe126b
fix: make hex query params case-insensitive
2026-06-09 10:49:55 -07:00
Enot (ded) Skelly
9716326d3d
fix(security): incorrect int conversion
...
changes from strconv.Atoi without bounds checks to
strconv.ParseInt
2026-06-09 09:20:54 -07:00
Enot (ded) Skelly
cda4905815
docs: update SPDX license lines
2026-06-08 16:08:39 -07:00
Enot (ded) Skelly
14cb9e6e2d
docs: add APGL3 license
2026-06-08 15:46:01 -07:00
Enot (ded) Skelly
27449e7725
tests(api): add handler validation for nodes, packets, routes & channels
2026-06-08 14:56:23 -07:00
Enot (ded) Skelly
205c82f9a2
test(api): add stub reader and observery tele validation tests
2026-06-08 14:52:13 -07:00
Enot (ded) Skelly
62c05e7ab8
test(api): handler response helpers
2026-06-08 14:49:37 -07:00
Enot (ded) Skelly
04877b2eb2
test(api): add parse iatas test
2026-06-08 13:39:31 -07:00
Enot (ded) Skelly
4147a93e8b
feat(observers): add telemetry bucketing to rest api
...
closes #37
2026-06-08 12:32:22 -07:00
Enot (ded) Skelly
32e6e9939a
feat: cross iata routes
...
adds cross iata route finding
closes #42
2026-06-08 10:30:49 -07:00
Enot (ded) Skelly
7d25b8480f
feat: node neighbors
...
limited to repeaters and room servers
stores high confidence matches from the nodes advert
packet path first hops
2026-06-08 09:36:20 -07:00
Enot (ded) Skelly
c792029d3d
fix: routes pagination cursor
...
closes #41
2026-06-06 11:14:13 -07:00
Enot (ded) Skelly
65cb8c9d61
add routes api
...
any route observer where all hops are high confidence
are now stored and available at /routes
you can also search for a src dest route and it will
return any recored route subset that can link the src
and dest hash
2026-06-05 15:57:08 -07:00
Enot (ded) Skelly
f0c57fde45
add traces endpoint
2026-06-05 15:20:53 -07:00
Enot (ded) Skelly
8b23f8a4a2
change: channel messages descending
...
this changes channel messages fetched over the api to
return newest first so users can fetch back through time
2026-06-05 12:40:47 -07:00
Enot (ded) Skelly
ae14d948d0
add scopes api
2026-06-05 12:31:35 -07:00
Enot (ded) Skelly
588b3705c9
add packet and message backfill api
...
/packets/backfill, /messages/backfill
both take afterId and limit. the id is the message or
packet observation last received to backfill after
2026-06-05 12:05:24 -07:00
Enot (ded) Skelly
a943660778
rename to beacon
2026-06-05 08:10:43 -07:00
Enot (ded) Skelly
ec7cf67a10
add trace route resolution
...
packet details now includes resolved route
2026-06-04 11:58:45 -07:00
Enot (ded) Skelly
594cd7281e
add scope stats api endpoint
2026-06-04 11:17:58 -07:00
Enot (ded) Skelly
1e5ccc6e50
add filter by scope to messages
...
also adds the multi iata filter from other endpoints
for messages now on both routes
2026-06-04 11:07:54 -07:00
Enot (ded) Skelly
fcc7bb1b23
add transport scopes
...
new config for transport scope keys seeded to db
new transport keystore to lookup matching keys and tag
- packets with scope key
- nodes with default scope
- observers with all supported scopes it forwards
allow filtering by region scope key on: packets, nodes, observers
2026-06-04 10:32:03 -07:00
Enot (ded) Skelly
cba1690470
add region filter to observers
2026-06-03 15:07:36 -07:00
Enot (ded) Skelly
67e60de76f
add region filter to nodes
2026-06-03 14:59:26 -07:00
Enot (ded) Skelly
a49c64b4b5
add region filtering to packets
2026-06-03 14:37:18 -07:00
Enot (ded) Skelly
8c71277de8
add radio-presets stats
2026-06-03 13:56:31 -07:00
Enot (ded) Skelly
153a8cb7cc
fix: packet payload filter for request (0)
2026-06-03 09:42:44 -07:00
Enot (ded) Skelly
afb4fe9053
update swag comments
...
fixes issue with generics not being parsed
2026-06-02 08:39:27 -07:00
Enot (ded) Skelly
2b03bff850
fix: typo in node handler
2026-06-01 16:50:13 -07:00
Enot (ded) Skelly
beadf5dc62
feat: allow filter by not supporting multibyte path/trace
...
depends on path resolution so will not return true yet for any nodes
2026-06-01 16:23:56 -07:00
Enot (ded) Skelly
31bcda03b9
add swagger
...
change to named functions in route handlers for swagger docs
2026-05-28 15:11:04 -07:00
Enot (ded) Skelly
71f5cbae3b
add stats api
2026-05-28 13:07:22 -07:00
Enot (ded) Skelly
7097dce92c
remove old node api stub
2026-05-28 12:24:24 -07:00
Enot (ded) Skelly
203c5f1b2f
add packets api
2026-05-28 12:22:49 -07:00