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}