dart-torchat/protospec/group.proto

75 lines
1.4 KiB
Protocol Buffer

syntax = "proto3";
package torchat;
import "user.proto";
option java_package = "org.torchat.proto";
option java_multiple_files = true;
message GroupId {
string value = 1;
}
message GroupProfile {
GroupId group_id = 1;
string display_name = 2;
string description = 3;
repeated user.UserId members = 4;
user.UserId creator = 5;
int64 created_at = 6;
string avatar_url = 7;
repeated string tags = 8;
string rules = 9;
}
message GroupMember {
user.UserId user_id = 1;
bool is_admin = 2;
bool is_muted = 3;
int64 joined_at = 4;
}
message GroupMessage {
GroupId group_id = 1;
user.UserId sender = 2;
string content = 3;
int64 timestamp = 4;
string message_id = 5;
}
message CreateGroupRequest {
GroupProfile profile = 1;
}
message CreateGroupReply {
GroupId group_id = 1;
}
message GetGroupRequest {
GroupId group_id = 1;
}
message GetGroupReply {
GroupProfile profile = 1;
repeated GroupMember members = 2;
}
message SendGroupMessageRequest {
GroupMessage message = 1;
}
message SendGroupMessageReply {
bool success = 1;
}
message StreamGroupMessagesRequest {
GroupId group_id = 1;
}
service GroupService {
rpc CreateGroup(CreateGroupRequest) returns (CreateGroupReply);
rpc GetGroup(GetGroupRequest) returns (GetGroupReply);
rpc SendMessage(SendGroupMessageRequest) returns (SendGroupMessageReply);
rpc StreamMessages(StreamGroupMessagesRequest) returns (stream GroupMessage);
}