DHL types

TypeHoldsNotes
IntA signed integerMoney as an integer of minor units (amount_minor)
Decimal, Decimal(scale=2)A fixed-point decimalJSON carries it as a string
RatioA ratio
Booltrue or false
Text, Text(len=200)Text, at most len bytesAlways give a length
EmailAn email address
CurrencyA three-letter currency code ("EUR")Contracts holding money cannot be buffered
TimestampA point in time
DurationA length of time
IdentityA 32-byte identity (a person, organisation, space, agent or record id)Lowercase hex in JSON
GeoPointA latitude and longitude
Enum(a,b,c)One of the listed names
Ref<Aggregate>A reference to a record
SubjectRef<Aggregate>A reference to a record at a revision ({id, seq})Used for delegation evidence and child records
Struct<Name>A struct value
List<T>, List<T>(capacity=16)A listDeclare a capacity for lists carried by commands
Map<K, V>, Map<K, V>(capacity=N)A map
T?OptionalInt?, Timestamp?

In JSON

Integers, timestamps, durations and decimals travel as decimal strings so nothing loses precision in JavaScript. Identities are lowercase hex. A SubjectRef is {"id": "…", "seq": "…"}. Keep these representations in clients.