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