Some fields we want set are either not available for clients to manually set in event data, or are inconvenient to do so:
- client_ip (needed for downstream geocoding)
- user_agent (already sent in HTTP header, annoying to have to duplicate it in event body from client)
- id (uuid, could be computed server side)
- dt (if browser client doesn't support ISOString )
And there might be more.
Doing event augmentation in EventGate isn't great. EventGate is meant to be a dumb validator and router only, not an event transformer/processor. However, since some of this data is only available during the HTTP request to EventGate, EventGate will have to do some processing after all.
Also related:
T240460: Clients need to generate an ISO 8601 formatted timestamp
T240461: Clients may need to generate a UUID for sending events.