*Future work note* Doesn't having the validator parse the message mean we'll be parsing a message twice during a normal flow? I'm sure HAPI's quite efficient for small messages, but for performance, esp. at high workloads, maybe we should look into caching the parsed message at this stage for later use? It's fine for this PR, but maybe something to keep in mind.