There's currently no support for this at the schema level, so right now you'd be forced to validate by hand. There's some prior art with specifying a list element type, but that's only for arrays, not objects. We could potentially add support, but that's non-trivial, and I'm not sure it'd be worth it if we're only doing this in a single (private) API.
As a potential workaround, since this is a private API (and thus doesn't have to be all that pretty), you *could* just pass in two arrays (keys and values), and specify each list to be composed of strings. Then the C++ validation is just "keys.length == values.length" rather than needing to parse and verify each object property. It's not as eloquent as passing the key-value dictionary as an object, but it would work with minimal extra code.