syntax = "proto3"; package hyperlog; service Graph { rpc Get(GetRequest) returns (GetReply); } message UserGraphItem { map items = 1; } message SectionGraphItem { map items = 1; } enum ItemState { UNSPECIFIED = 0; NOT_DONE = 1; DONE = 2; } message ItemGraphItem { string title = 1; string description = 2; ItemState state = 3; } 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 { repeated GraphItem items = 1; }