Tiles & Streaming (Planned)
Vector tiles, live delta streams, and history/replay.
Status: planned
The endpoints on this page are advertised in the OpenAPI contract but return
404 on the currently deployed system. They are in flight and not yet in the
deployed image. Use the live equivalents in the meantime: whole-collection
GET /layers/{key}, polling against the alerts API, and the gRPC StreamLayer
RPC where Rust→Rust IPC is available.
Vector tiles
| Method | Path | Purpose |
|---|---|---|
GET | /tiles/{layer}/{z}/{x}/{y}.mvt | Mapbox Vector Tile for a layer. |
In-process MVT encoded from the pod's rstar R-tree over hot cache state —
no DB round-trip per tile. Per-tile ETag + Cache-Control for Envoy/CDN
caching; deltas invalidate only the tiles they touch. With ?at=<epoch_ms>
the tile is rendered from recorded history instead of live state.
Designed to replace whole-collection GET /layers/{key} fetches for
high-density layers (ais, adsb, powerTransmission, usSubstations,
webcams) once the deployed image carries it.
Streaming
| Method | Path | Purpose |
|---|---|---|
GET | /stream/{layer} | Server-Sent Events stream of Delta JSON for a layer. |
GET | /ws/{layer} | WebSocket of CBOR/JSON Delta frames for a layer. |
Both consume the Zenoh spine — every delta the ingestor publishes is fanned
out to subscribers without polling. Frame shape follows the Delta schema
in the OpenAPI components.
The gRPC FeedAdapter.StreamLayer RPC is the only streaming surface that
is live today — it emits a full snapshot every 60 s or on change.
History & replay
| Method | Path | Purpose |
|---|---|---|
GET | /layers/{key}/history | Decimated historical slices for a layer. |
GET | /entities/{layer}/{id}/track | One entity's recorded track. |
GET | /replay/{key} | Replay session descriptor for a layer. |
These endpoints are backed by recorded history. Until they land, the live
/alerts?since=… window and the in-process AIS/ADS-B track buffer are the
only history surfaces available.
What works today
| Need | Use instead |
|---|---|
| One frame of a layer | GET /layers/{key} (full FeatureCollection). |
| Live updates | Poll /layers/{key} or /alerts?since=…; use gRPC StreamLayer for Rust IPC. |
| Recent vessel/aircraft track | The track is embedded in feature properties on /layers/ais and /layers/adsb. |
| Historical query | Not available externally yet. |
See the OpenAPI Scalar reference — the planned endpoints carry a 🚧 status banner so consumers don't mistake them for live.