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}