prop/lib/microwaveprop_web/controllers
Graham McIntire bd731685de
feat(api): ingest endpoint for propmonitor beacon measurements
POST /api/v1/beacon-monitor/measurements accepts one measurement per
integration window from a propmonitor client, authenticated by the
BeaconMonitor token. Records noise floor, signal peak/avg dBFS, SNR,
signal-active-fraction, gain, and frequency for later correlation
against weather and propagation scores.

Beacon UUID must resolve to an approved + on-the-air beacon (404
otherwise — the client drops 404s without retry). Retries with the
same (monitor, beacon, measured_at) are idempotent: a unique index
makes the second insert a 409. Every accepted upload stamps the
monitor's last_seen_at — measurements *are* the heartbeat.

MonitorAuth is a separate plug from the user API-token Auth plug;
monitors are not users. The rate limiter buckets each monitor by id so
retry storms after a 5xx don't burn the shared anon-IP bucket.
2026-05-13 16:07:04 -05:00
..
api/v1 feat(api): ingest endpoint for propmonitor beacon measurements 2026-05-13 16:07:04 -05:00
page_html initial 2026-03-28 11:28:47 -05:00
user_registration_html feat(design): apply NTMS design system tokens 2026-04-17 17:34:15 -05:00
user_reset_password_html feat(auth): self-service password reset 2026-04-18 08:42:35 -05:00
user_session_html feat(auth): self-service password reset 2026-04-18 08:42:35 -05:00
user_settings_html feat(settings): manage /api/v1 tokens from user settings UI 2026-05-09 09:59:56 -05:00
agent_skills_controller.ex feat(agent-discovery): Link/markdown/content-signal/api-catalog/skills 2026-04-17 12:09:05 -05:00
api_catalog_controller.ex feat(agent-discovery): Link/markdown/content-signal/api-catalog/skills 2026-04-17 12:09:05 -05:00
api_docs_controller.ex feat: serve API docs at /docs/api 2026-05-09 09:09:45 -05:00
api_token_controller.ex feat(settings): manage /api/v1 tokens from user settings UI 2026-05-09 09:59:56 -05:00
beacon_monitor_controller.ex Add beacon monitor registration and fix prod SMTP 2026-04-08 11:30:28 -05:00
contact_map_controller.ex Serve /contacts/map payload via HTTP endpoint, parallel hydrate 2026-04-12 13:10:51 -05:00
error_html.ex initial 2026-03-28 11:28:47 -05:00
error_json.ex initial 2026-03-28 11:28:47 -05:00
health_controller.ex fix(probes): stop DB saturation from SIGKILLing every pod 2026-04-21 16:00:04 -05:00
page_controller.ex Rename qsos to contacts throughout codebase, keep DB table name 2026-04-01 11:25:04 -05:00
page_html.ex initial 2026-03-28 11:28:47 -05:00
scores_controller.ex fix(security,perf): address 9 audit findings (access control, DoS, crashes) 2026-05-11 18:53:21 -05:00
user_registration_controller.ex Add password auth with callsign + email confirmation 2026-04-08 10:21:40 -05:00
user_registration_html.ex Add password auth with callsign + email confirmation 2026-04-08 10:21:40 -05:00
user_reset_password_controller.ex fix(dialyzer): clear 125+ warnings under strict flags 2026-04-21 10:30:06 -05:00
user_reset_password_html.ex feat(auth): self-service password reset 2026-04-18 08:42:35 -05:00
user_session_controller.ex Add password auth with callsign + email confirmation 2026-04-08 10:21:40 -05:00
user_session_html.ex Add password auth with callsign + email confirmation 2026-04-08 10:21:40 -05:00
user_settings_controller.ex feat(settings): manage /api/v1 tokens from user settings UI 2026-05-09 09:59:56 -05:00
user_settings_html.ex Add password auth with callsign + email confirmation 2026-04-08 10:21:40 -05:00
weather_tile_controller.ex fix(security,perf): address 9 audit findings (access control, DoS, crashes) 2026-05-11 18:53:21 -05:00