Yeah, its not altogether clear form the spec. My reading is that additionalProperties is always implicit, you can always add whatever you want (a JS thing). But if you want to control/limit the options you set up additionalProperties. So it allows any attribute listed, in this case the 'vessel' object only, under any name (which we want). Not sure how we can limit the name (a regex maybe?

I think your version vessels has an attribute called 'vessel', and then same as above?

Probably need to try a sample, and test validate it?