syntax = "proto3"; package hyperlog; 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; } } service Graph { rpc GetAvailableRoots(GetAvailableRootsRequest) returns (GetAvailableRootsResponse); rpc Get(GetRequest) returns (GetReply); rpc CreateSection(CreateSectionRequest) returns (CreateSectionResponse); } message GetAvailableRootsRequest {} message GetAvailableRootsResponse { repeated string roots = 1; } message GetRequest { string root = 1; repeated string paths = 2; } message GetReply { GraphItem item = 1; } message CreateSectionRequest {} message CreateSectionResponse {}