It'd be nice to avoid the indirection of adding this URL into a hash, only to pluck it out again to validate that it is present.

Perhaps this logic might be encapsulated in a new class (`StartAppMessage`?) that knows to ensure its attributes are valid and also how to convert itself into JSON.

Would you mind taking a shot at this?

– Kai (@wsxiaozhang) and Abhi