Events
- POST /events/app-events
List application events
Get a list of application events with optional filters and their linked platform events
- Request JSON Object:
action (string)
archived (boolean)
created_at_from (string)
created_at_to (string)
error_message (string)
keyword (string)
level (string)
page (integer)
page_size (integer)
resource_type (string)
resource_uuid (string)
sort_by (string)
sort_order (string)
status (string)
user_id (integer)
username (string)
- Status Codes:
200 OK – Success response
400 Bad Request – Invalid request payload
500 Internal Server Error – Internal server error
- GET /events/app-events/{id}
Get application event by ID
Get a specific application event and its linked platform events
- Parameters:
id (string) – App Event ID
- Status Codes:
200 OK – Success response
400 Bad Request – Invalid request
404 Not Found – Event not found
500 Internal Server Error – Internal server error
- Response JSON Object:
app_event.action (string)
app_event.archived (boolean)
app_event.completed_at (string)
app_event.correlation_id (string) – CorrelationID ties the lifecycle of ONE operation together: a start event (IN_PROGRESS, completed_at NULL) and its terminal transition (SUCCESS/FAILED) share it. NULL for in-process one-shots. Both Postgres and SQLite treat NULLs as distinct in a unique index, so many rows carry no id while any non-null id stays unique — and a guarded upsert on it (advance-only, see persistEvent) makes an out-of-process producer’s replay idempotent AND its start→terminal transition update the same row instead of writing a second.
app_event.created_at (string)
app_event.cs_start_id (integer)
app_event.description (string) – Description is the human sentence shown in the track/timeline (“Configured node 10.60.0.60”, “BIOS update failed for 172.18.100.29: timeout”). Producers set it; persistEvent derives a default from action+uuid+status when it is empty.
app_event.error_message (string)
app_event.id (string)
app_event.level (string)
app_event.progress (integer) – Progress is the 0..100 completion of a long-running operation. Streamed live on every progress tick; the row is checkpointed only on a throttle (see progress.go) so the column is ~current for a cold reader without a per-tick write. 0 for instantaneous events.
app_event.resource_type (string)
app_event.resource_uuid (string)
app_event.status (string)
app_event.tenant_id (string)
app_event.user_id (integer)
app_event.username (string)
sub_events (any)
- POST /events/archive
Archive events
Archive old events for long-term storage
- Status Codes:
201 Created – Success response
400 Bad Request – Invalid request payload
500 Internal Server Error – Internal server error
- POST /events/list
List events
Get a list of all events with optional filters
- Status Codes:
200 OK – Success response
400 Bad Request – Invalid request payload
500 Internal Server Error – Internal server error
- GET /events/sse
SSE Event Stream
Subscribe to real-time VM state change events via Server-Sent Events (SSE)
- Status Codes:
200 OK – SSE stream
- GET /events/types
List event types
Retrieve a list of all available event types
- Status Codes:
200 OK – Success response
400 Bad Request – Invalid request payload
500 Internal Server Error – Internal server error