Looking at the docs it would seem like TagType is what is used for data types. I find it rather confusing though, for built in types it says there’s versioned and unversioned, which I would think is more metadata than data type. It says custom tags can be defined. Are they purely application level, so that it is up to the application to interpret the type that it refers to? For example I might add a type Customer that serializes data about a customer in json format and would deserialize it to a customer object if it saw a TagType with the id refering to the customer type.
What if I want to specify that the customer is versioned or unversioned? If I added a TagType for customer, can I also add one for versioned?