Data model

One canonical layer, many producers and consumers

Data layer live

Asset hierarchy

  • Loading…

Canonical event schema

OperationalEvent
├── id                 string
├── timestamp          ISO-8601
├── plant / area / line / asset
├── shift / team
├── event_type         downtime | quality | maintenance | safety | observation | production
├── category           string
├── severity           low | medium | high | critical
├── description / observation
├── reported_cause / verified_cause
├── action
├── status             open | in_progress | resolved | under_review
├── source             operator | supervisor | mes | scada | cmms | erp | api | import | ai
├── source_record_id   string
├── evidence[]         attachments, audio, photos, external records
└── metadata           free-form key/value
Outbound surface — how other systems consume OptiLog
GET/api/public/events?shift_id=&line_id=&since=Query canonical events
POST/api/public/eventsIngest an event from an external system
GET/api/public/shiftsShift records with production and downtime
GET/api/public/incidents/{id}Incident with timeline and evidence
POST/api/public/webhooks/subscribeSubscribe to event.created / incident.updated
GET/api/public/exports/events.csvScheduled CSV / JSON export