channel.proto

  1syntax = "proto3";
  2package zed.messages;
  3
  4import "core.proto";
  5import "buffer.proto";
  6
  7message Channel {
  8    uint64 id = 1;
  9    string name = 2;
 10    ChannelVisibility visibility = 3;
 11    int32 channel_order = 4;
 12    repeated uint64 parent_path = 5;
 13}
 14
 15enum ChannelVisibility {
 16    Public = 0;
 17    Members = 1;
 18}
 19
 20message UpdateChannels {
 21    repeated Channel channels = 1;
 22    repeated uint64 delete_channels = 4;
 23    repeated Channel channel_invitations = 5;
 24    repeated uint64 remove_channel_invitations = 6;
 25    repeated ChannelParticipants channel_participants = 7;
 26    repeated ChannelBufferVersion latest_channel_buffer_versions = 9;
 27
 28    reserved 8;
 29    reserved 10 to 15;
 30}
 31
 32message UpdateUserChannels {
 33    repeated ChannelBufferVersion observed_channel_buffer_version = 2;
 34    repeated ChannelMembership channel_memberships = 3;
 35
 36    reserved 1;
 37}
 38
 39message ChannelMembership {
 40    uint64 channel_id = 1;
 41    ChannelRole role = 2;
 42}
 43
 44message ChannelMessageId {
 45    uint64 channel_id = 1;
 46    uint64 message_id = 2;
 47}
 48
 49message ChannelPermission {
 50    uint64 channel_id = 1;
 51    ChannelRole role = 3;
 52}
 53
 54message ChannelParticipants {
 55    uint64 channel_id = 1;
 56    repeated uint64 participant_user_ids = 2;
 57}
 58
 59message JoinChannel {
 60    uint64 channel_id = 1;
 61}
 62
 63message DeleteChannel {
 64    uint64 channel_id = 1;
 65}
 66
 67message GetChannelMembers {
 68    uint64 channel_id = 1;
 69    string query = 2;
 70    uint64 limit = 3;
 71}
 72
 73message GetChannelMembersResponse {
 74    repeated ChannelMember members = 1;
 75    repeated User users = 2;
 76}
 77
 78message ChannelMember {
 79    uint64 user_id = 1;
 80    Kind kind = 3;
 81    ChannelRole role = 4;
 82
 83    enum Kind {
 84        Member = 0;
 85        Invitee = 1;
 86    }
 87}
 88
 89message SubscribeToChannels {}
 90
 91message CreateChannel {
 92    string name = 1;
 93    optional uint64 parent_id = 2;
 94}
 95
 96message CreateChannelResponse {
 97    Channel channel = 1;
 98    optional uint64 parent_id = 2;
 99}
100
101message InviteChannelMember {
102    uint64 channel_id = 1;
103    uint64 user_id = 2;
104    ChannelRole role = 4;
105}
106
107message RemoveChannelMember {
108    uint64 channel_id = 1;
109    uint64 user_id = 2;
110}
111
112enum ChannelRole {
113    Admin = 0;
114    Member = 1;
115    Guest = 2;
116    Banned = 3;
117    Talker = 4;
118}
119
120message SetChannelMemberRole {
121    uint64 channel_id = 1;
122    uint64 user_id = 2;
123    ChannelRole role = 3;
124}
125
126message SetChannelVisibility {
127    uint64 channel_id = 1;
128    ChannelVisibility visibility = 2;
129}
130
131message RenameChannel {
132    uint64 channel_id = 1;
133    string name = 2;
134}
135
136message RenameChannelResponse {
137    Channel channel = 1;
138}
139
140message JoinChannelChat {
141    uint64 channel_id = 1;
142}
143
144message JoinChannelChatResponse {
145    repeated ChannelMessage messages = 1;
146    bool done = 2;
147}
148
149message LeaveChannelChat {
150    uint64 channel_id = 1;
151}
152
153message SendChannelMessage {
154    uint64 channel_id = 1;
155    string body = 2;
156    Nonce nonce = 3;
157    repeated ChatMention mentions = 4;
158    optional uint64 reply_to_message_id = 5;
159}
160
161message RemoveChannelMessage {
162    uint64 channel_id = 1;
163    uint64 message_id = 2;
164}
165
166message UpdateChannelMessage {
167    uint64 channel_id = 1;
168    uint64 message_id = 2;
169    Nonce nonce = 4;
170    string body = 5;
171    repeated ChatMention mentions = 6;
172}
173
174message AckChannelMessage {
175    uint64 channel_id = 1;
176    uint64 message_id = 2;
177}
178
179message SendChannelMessageResponse {
180    ChannelMessage message = 1;
181}
182
183message ChannelMessageSent {
184    uint64 channel_id = 1;
185    ChannelMessage message = 2;
186}
187
188message ChannelMessageUpdate {
189    uint64 channel_id = 1;
190    ChannelMessage message = 2;
191}
192
193message GetChannelMessages {
194    uint64 channel_id = 1;
195    uint64 before_message_id = 2;
196}
197
198message GetChannelMessagesResponse {
199    repeated ChannelMessage messages = 1;
200    bool done = 2;
201}
202
203message GetChannelMessagesById {
204    repeated uint64 message_ids = 1;
205}
206
207message MoveChannel {
208    uint64 channel_id = 1;
209    uint64 to = 2;
210}
211
212message ReorderChannel {
213    uint64 channel_id = 1;
214    enum Direction {
215        Up = 0;
216        Down = 1;
217    }
218    Direction direction = 2;
219}
220
221message JoinChannelBuffer {
222    uint64 channel_id = 1;
223}
224
225message ChannelBufferVersion {
226    uint64 channel_id = 1;
227    repeated VectorClockEntry version = 2;
228    uint64 epoch = 3;
229}
230
231message UpdateChannelBufferCollaborators {
232    uint64 channel_id = 1;
233    repeated Collaborator collaborators = 2;
234}
235
236message UpdateChannelBuffer {
237    uint64 channel_id = 1;
238    repeated Operation operations = 2;
239}
240
241message ChannelMessage {
242    uint64 id = 1;
243    string body = 2;
244    uint64 timestamp = 3;
245    uint64 sender_id = 4;
246    Nonce nonce = 5;
247    repeated ChatMention mentions = 6;
248    optional uint64 reply_to_message_id = 7;
249    optional uint64 edited_at = 8;
250}
251
252message ChatMention {
253    Range range = 1;
254    uint64 user_id = 2;
255}
256
257message RejoinChannelBuffers {
258    repeated ChannelBufferVersion buffers = 1;
259}
260
261message RejoinChannelBuffersResponse {
262    repeated RejoinedChannelBuffer buffers = 1;
263}
264
265message AckBufferOperation {
266    uint64 buffer_id = 1;
267    uint64 epoch = 2;
268    repeated VectorClockEntry version = 3;
269}
270
271message JoinChannelBufferResponse {
272    uint64 buffer_id = 1;
273    uint32 replica_id = 2;
274    string base_text = 3;
275    repeated Operation operations = 4;
276    repeated Collaborator collaborators = 5;
277    uint64 epoch = 6;
278}
279
280message RejoinedChannelBuffer {
281    uint64 channel_id = 1;
282    repeated VectorClockEntry version = 2;
283    repeated Operation operations = 3;
284    repeated Collaborator collaborators = 4;
285}
286
287message LeaveChannelBuffer {
288    uint64 channel_id = 1;
289}
290
291message RespondToChannelInvite {
292    uint64 channel_id = 1;
293    bool accept = 2;
294}