Introduce thrift format for ingest

Definitely some questions around this - opening it up for discussion
This feels like it might be overkill. I could just have a version int, or an enum, but this seems like the most future proof (even though it's just internal errors)