type PrivKey data type PublicKey data[128] type Time str # ISO 8601 type Department enum { ACCOUNTING ADMINISTRATION CUSTOMER_SERVICE DEVELOPMENT # Reserved for the CEO JSMITH = 99 } type Address list[4] # street, city, state, country type Customer struct { name: str email: str address: Address orders: list metadata: map } type Employee struct { name: str email: str address: Address department: Department hireDate: Time publicKey: optional metadata: map } type TerminatedEmployee void type Person union {Customer | Employee | TerminatedEmployee}