syntax = "proto3"; package lrc.v1; option go_package = "github.com/rachel-mp4/lrcproto/gen/go/lrcpb;lrcpb"; message Event { oneof msg { Ping ping = 1; Pong pong = 2; Init init = 3; Pub pub = 4; Insert insert = 5; Delete delete = 6; Mute mute = 7; Unmute unmute = 8; Set set = 9; Get get = 10; Kick kick = 11; Hug hug = 12; Ban ban = 13; Unban unban = 14; EditBatch editbatch = 15; MediaInit mediainit = 17; MediaPub mediapub = 18; } optional uint32 id = 16; } message Ping {} message Pong {} message Init { optional uint32 id = 1; optional string nick = 2; optional string externalID = 3; optional uint32 color = 4; optional bool echoed = 5; optional bytes nonce = 6; } message Pub { optional uint32 id = 1; } message Insert { optional uint32 id = 1; string body = 2; uint32 utf16Index = 3; } message Delete { optional uint32 id = 1; uint32 utf16Start = 2; uint32 utf16End = 3; } message Mute { uint32 id = 1; } message Unmute { uint32 id = 1; } message Set { optional string nick = 1; optional string externalID = 2; optional uint32 color = 3; } message Get { optional string topic = 1; optional uint32 connected = 2; } message Sudo { string externalID = 1; string secret = 2; } message Kick { Sudo privileges = 1; uint32 id = 2; } message Hug { uint32 id = 1; } message Ban { Sudo privileges = 1; uint32 id = 2; } message Unban { Sudo privileges = 1; uint32 id = 2; } message Edit { oneof edit { Insert insert = 1; Delete delete = 2; } } message EditBatch { repeated Edit edits = 1; } message MediaInit { optional uint32 id = 1; optional string nick = 2; optional string externalID = 3; optional uint32 color = 4; optional bool echoed = 5; optional bytes nonce = 6; } message MediaPub { optional uint32 id = 1; optional string contentAddress = 2; optional string alt = 3; }