type Point = record { x:double; y:double; }; type Entry = variant id "canvas:entry@1" { paragraph id "canvas:paragraph" : record { text:string; }; stroke id "canvas:stroke" : record { points:list; }; image id "canvas:image" : record { asset:string; }; }; interface CanvasContent id "canvas" revision "canvas@1" { queryable value entries id "entries" : list { get id "entries:get" execution snapshot targets [browser,server]; edit id "entries:edit" execution transaction targets [browser,server]; } }