syntax = "proto3"; package hyperlog; service Graph { rpc Get(GetRequest) returns (GetReply); } message UserGraphItem { map items = 1; } message SectionGraphItem { map items = 1; } message ItemStateNotDone {} message ItemStateDone {} message ItemGraphItem { string title = 1; string description = 2; oneof item_state { ItemStateNotDone not_done = 3; ItemStateDone done = 4; } } message GraphItem { string path = 1; oneof contents { UserGraphItem user = 2; SectionGraphItem section = 3; ItemGraphItem item = 4; } } message GetRequest { string root = 1; repeated string paths = 2; } message GetReply { GraphItem item = 1; }