69 Commits
Author SHA1 Message Date
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