You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Base URL: http://localhost:<port> (default port 5051).
All responses are JSON unless noted otherwise. The server also pushes real-time updates over a WebSocket connection on the same port.
Large payloads are gzipped on demand when the client advertises Accept-Encoding: gzip (browsers always do; bare urllib/curl clients receive plain bytes).
Server
Method
Endpoint
Description
GET
/api/config
Server configuration and capabilities (mode, ET status, source caps, file metadata, filter state, detector geometry)
Post to the electronic logbook. JSON body: {"xml": "<elog XML>", "run_number": N, "auto": <bool>, "request_id": "<id>"}. Saves locally first, then uploads. With auto:true the request_id must match an in-flight capture_request. Server-side dedup absorbs duplicates within auto_report.min_interval_ms
Event Filters
Filters control which events are navigable and accumulated in file mode.
Load from a file (-f filter.json) or at runtime via the API / UI panel.
Method
Endpoint
Description
GET
/api/filter
Current filter state
POST
/api/filter/load
Load filter (JSON body). Rebuilds indices and histograms
Each section has enable: false by default. All other fields optional.
Events pass if ALL enabled filters return true. Loading/unloading clears
accumulated data and rebuilds histograms if the file was preprocessed.
WebSocket Messages
Connect to ws://localhost:<port> for real-time push notifications.
Client → Server
type
Fields
Description
client_hello
capabilities: ["auto_report", …]
Advertise client capabilities. Clients that include "auto_report" become eligible for capture_request dispatch
tagger_subscribe
—
Subscribe to live tagger binary stream
tagger_unsubscribe
—
Unsubscribe from live tagger stream
Server → Client
type
Fields
Description
server_hello
capabilities
Reply to client_hello
status
connected, waiting?, retries?
ET connection status change
new_event
seq
New event available in ring buffer
mode_changed
mode
Mode changed (file, online, idle)
file_loaded
(full config)
File finished loading
load_progress
phase, current, total
File load progress update
hist_cleared
—
Histograms were cleared
hist_config_updated
waveform_filter, waveform_filter_active
Waveform peak filter changed
lms_cleared
—
LMS data was cleared
lms_event
count
New LMS trigger event
epics_cleared
—
EPICS data was cleared
epics_event
count
New EPICS event received
gem_threshold_updated
zs_sigma
GEM zero-suppression threshold changed
control_event
kind (prestart/end), run_number, unix_time
EVIO control event seen on the stream
capture_request
request_id, run, reason
Server asks an auto_report-capable client to take and post an auto-report. Client must reply via POST /api/elog/post with auto:true and the same request_id
auto_capture_done
run, posted, saved_xml
Auto-report capture handshake finished
tagger_subscribed
subscribers
Confirms tagger subscription
tagger_unsubscribed
subscribers
Confirms tagger unsubscription
Tagger binary frames
While subscribed, the server pushes binary WebSocket frames directly to
each tagger subscriber. Each frame begins with a 24-byte header: