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}