Used to represent commands and events with strict schemas. Events are strict (all fields required) so missing information fails immediately; commands use schema type so unchanged fields can be empty.