Skip to main content

One battle's machine log

GET 

/admin/battles/:id/events

Every lifecycle event the recorder published for this battle, oldest first: user.started, browser.ready, capture.started, capture.armed, the clicks, spin.started, and how each seat ended.

The per-segment stream (segment.new, playlist.update) is deliberately not stored — it fires several times a second per seat and would bury the lifecycle it sits between. segment.failed is stored, because a failure is rare and is the diagnosis.

Each event carries two clocks. at is the PRODUCER's — for a seat event, the recorder Lambda's — and stored_at is when the row landed here. The gap between them is queue depth plus clock skew, and a seat that looks late in one and on time in the other is a different problem from one late in both.

A battle belonging to another casino is a 404, on the same terms as GET /admin/battles/{id}: an empty log would confirm the id exists.

Permission: battles.read

Request​

Responses​

The battle's events, oldest first