prop/docs
Graham McIntire c6d2c48264
feat: secure /api/v1 REST API for regular-user actions
Adds bearer-token authenticated REST API at /api/v1 covering every
action a non-admin user can perform on the website: contact + beacon
submission, beacon-monitor management, propagation queries, profile
read/update, and self-service API token issuance/revocation.

Security: SHA-256-hashed bearer tokens (mwp_ prefix, plaintext shown
once at creation), RFC 9457 problem+json error responses, RFC 9651
RateLimit-* headers backed by an ETS bucket (600/min per token,
60/min per anonymous IP, 30/min on /auth/tokens), private-contact
filtering by viewer.

Docs at docs/api/README.md (prose reference) and docs/api/openapi.yaml
(OpenAPI 3.1 spec covering every endpoint, response, and schema).

Tests: 124 new tests across schema, plug, error renderer, rate
limiter, fallback, and every controller. 16/17 API modules at 100%
line coverage; FallbackController at 87.5% (one defmodule line, an
Erlang-cover artifact for action_fallback-only modules).
2026-05-09 08:59:54 -05:00
..
algo-reports test: add Mox deps + SnmpClient poll/3 tests, RoadProximity, Buildings.Loader 2026-05-07 13:36:22 -05:00
api feat: secure /api/v1 REST API for regular-user actions 2026-05-09 08:59:54 -05:00
plans docs(hrdps): record stage progress + dormant scaffolding state 2026-04-29 17:13:08 -05:00
research Phase 3 spike (parked) + Phase 6: temperature anomaly 2026-04-10 08:47:11 -05:00
algo_commercial.md Refactor HRRR fetch to batch points per hour 2026-03-30 17:21:47 -05:00
algo_original.md Refactor HRRR fetch to batch points per hour 2026-03-30 17:21:47 -05:00
algo_updated_with_data.md Refactor HRRR fetch to batch points per hour 2026-03-30 17:21:47 -05:00
analysis_output.txt Normalize ML features to prevent NaN gradient explosion 2026-04-01 09:08:33 -05:00
analysis_output_solar.txt Normalize ML features to prevent NaN gradient explosion 2026-04-01 09:08:33 -05:00
goes-r-research.md HRRR forecast hours (f00-f18) with timeline map UI 2026-03-31 16:44:47 -05:00
RRFS.md Add meteorologist feedback on model choice to RRFS doc 2026-03-31 09:27:23 -05:00
runbook_propagation_pipeline.md perf(prop): cap ScoreCache LRU + drop eager warmers to fix hot-pod OOMs 2026-04-24 18:49:36 -05:00
weather.md perf(weather/scalar_file): single MessagePack format for both Elixir and Rust 2026-04-29 08:26:28 -05:00