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