I have a question about Any types in proto3. I'm guessing they aren't quite fully-fleshed out since I haven't found a lot in the way of doc or real support in the Java and Go implementations.
My question: can you use enums or scalar types as values of an Any field? If so, how do they look?
For scalar types, I can understand if the answer is to use the wrapper well-known types instead. But there doesn't appear to be a wrapper for enum values. There is a well-known type named google.protobuf.EnumValue, however it is part of the "schema description" well-known types and doesn't carry enough data for wrapping an enum value (mainly, it's missing a reference to its enum type, e.g. a type URL).
It would be nice if the Any message's type_url field could be a URL that returned an enum description, not just a message description. But the docs state that the contents at that URL are an encoded google.protobuf.Type, which describes a message and does not support enum types. Should it instead have a single one-of field that can be an enum or message description?
Similarly, the type_url field for google.protobuf.Field is in a similar conundrum. The doc states it is "the field type URL, without the scheme, for message or enumeration types", but nothing really talks about enumeration types. The naive assumption is that the URL contents are an enum description (e.g. an encoded google.protobuf.Enum). But if that's the case, I could try to put an enum type into an Any field and indicate that same URL. I then get into trouble because I'd be looking to parse a google.protobuf.Type, in order to understand the Any message contents, but actually get back the bytes for a google.protobuf.Enum.
That doesn't seem sound.