type Content = record { text: string; tags: list; }; type Edit = record { change: change; resolved: bool; }; interface NoteData id "compound:data" revision "compound:data@1" { operation batch id "compound:batch" : record { edits: list; } -> unit { call id "compound:batch:call" execution transaction targets [browser, server]; } operation update id "compound:update" : Edit -> unit { call id "compound:update:call" execution transaction targets [browser, server]; } queryable value content id "compound:content" : Content { get id "compound:content:get" execution snapshot targets [browser, server]; edit id "compound:content:edit" execution transaction targets [browser, server]; } queryable value resolved id "compound:resolved" : bool { get id "compound:resolved:get" execution snapshot targets [browser, server]; } queryable value title id "compound:title" : string { get id "compound:title:get" execution snapshot targets [browser, server]; set id "compound:title:set" execution transaction targets [browser, server]; } }