guard null principal
Refactor to make EventData a simple container, add EventDataBuilder to deal with setting up the common bits.
Implement @POST to allow UI to append events.