mirror of
https://github.com/Alexander-D-Karpov/concord.git
synced 2026-03-16 22:04:15 +03:00
279 lines
6.1 KiB
Protocol Buffer
279 lines
6.1 KiB
Protocol Buffer
syntax = "proto3";
|
|
|
|
package concord.chat.v1;
|
|
|
|
option go_package = "github.com/Alexander-D-Karpov/concord/api/gen/go/chat/v1;chatv1";
|
|
|
|
import "google/api/annotations.proto";
|
|
import "google/protobuf/timestamp.proto";
|
|
import "common/v1/types.proto";
|
|
|
|
message UploadAttachment {
|
|
string filename = 1;
|
|
string content_type = 2;
|
|
bytes data = 3;
|
|
int32 width = 4;
|
|
int32 height = 5;
|
|
}
|
|
|
|
message SendMessageRequest {
|
|
string room_id = 1;
|
|
string content = 2;
|
|
string reply_to_id = 3;
|
|
repeated string mention_user_ids = 4;
|
|
repeated UploadAttachment attachments = 5;
|
|
}
|
|
|
|
message SendMessageResponse {
|
|
concord.common.v1.Message message = 1;
|
|
}
|
|
|
|
message EditMessageRequest {
|
|
string room_id = 1;
|
|
string message_id = 2;
|
|
string content = 3;
|
|
}
|
|
|
|
message EditMessageResponse {
|
|
concord.common.v1.Message message = 1;
|
|
}
|
|
|
|
message DeleteMessageRequest {
|
|
string room_id = 1;
|
|
string message_id = 2;
|
|
}
|
|
|
|
message ListMessagesRequest {
|
|
string room_id = 1;
|
|
string before = 2;
|
|
string after = 3;
|
|
int32 limit = 4;
|
|
}
|
|
|
|
message ListMessagesResponse {
|
|
repeated concord.common.v1.Message messages = 1;
|
|
bool has_more = 2;
|
|
string last_read_message_id = 3;
|
|
}
|
|
|
|
message GetMessageRequest {
|
|
string room_id = 1;
|
|
string message_id = 2;
|
|
}
|
|
|
|
message GetMessageResponse {
|
|
concord.common.v1.Message message = 1;
|
|
}
|
|
|
|
message AddReactionRequest {
|
|
string room_id = 1;
|
|
string message_id = 2;
|
|
string emoji = 3;
|
|
}
|
|
|
|
message AddReactionResponse {
|
|
concord.common.v1.MessageReaction reaction = 1;
|
|
}
|
|
|
|
message RemoveReactionRequest {
|
|
string room_id = 1;
|
|
string message_id = 2;
|
|
string emoji = 3;
|
|
}
|
|
|
|
message PinMessageRequest {
|
|
string room_id = 1;
|
|
string message_id = 2;
|
|
}
|
|
|
|
message UnpinMessageRequest {
|
|
string room_id = 1;
|
|
string message_id = 2;
|
|
}
|
|
|
|
message ListPinnedMessagesRequest {
|
|
string room_id = 1;
|
|
}
|
|
|
|
message ListPinnedMessagesResponse {
|
|
repeated concord.common.v1.Message messages = 1;
|
|
}
|
|
|
|
message GetThreadRequest {
|
|
string room_id = 1;
|
|
string message_id = 2;
|
|
string before = 3;
|
|
int32 limit = 4;
|
|
}
|
|
|
|
message GetThreadResponse {
|
|
concord.common.v1.Message parent = 1;
|
|
repeated concord.common.v1.Message replies = 2;
|
|
bool has_more = 3;
|
|
}
|
|
|
|
message SearchMessagesRequest {
|
|
string room_id = 1;
|
|
string query = 2;
|
|
string before = 3;
|
|
int32 limit = 4;
|
|
}
|
|
|
|
message SearchMessagesResponse {
|
|
repeated concord.common.v1.Message messages = 1;
|
|
bool has_more = 2;
|
|
}
|
|
|
|
message ListMessagesSinceRequest {
|
|
string room_id = 1;
|
|
string after_message_id = 2;
|
|
int32 limit = 3;
|
|
}
|
|
|
|
message ListMessagesSinceResponse {
|
|
repeated concord.common.v1.Message messages = 1;
|
|
bool has_more = 2;
|
|
}
|
|
|
|
message MarkAsReadRequest {
|
|
string room_id = 1;
|
|
string message_id = 2;
|
|
}
|
|
|
|
message MarkAsReadResponse {
|
|
string last_read_message_id = 1;
|
|
int32 unread_count = 2;
|
|
}
|
|
|
|
message GetUnreadCountsRequest {}
|
|
|
|
message RoomUnreadInfo {
|
|
string room_id = 1;
|
|
int32 unread_count = 2;
|
|
string last_read_message_id = 3;
|
|
string latest_message_id = 4;
|
|
google.protobuf.Timestamp latest_message_at = 5;
|
|
}
|
|
|
|
message GetUnreadCountsResponse {
|
|
repeated RoomUnreadInfo rooms = 1;
|
|
int32 total_unread = 2;
|
|
}
|
|
|
|
message StartTypingRequest {
|
|
string room_id = 1;
|
|
}
|
|
|
|
message StopTypingRequest {
|
|
string room_id = 1;
|
|
}
|
|
|
|
message EmptyResponse {}
|
|
|
|
service ChatService {
|
|
rpc SendMessage(SendMessageRequest) returns (SendMessageResponse) {
|
|
option (google.api.http) = {
|
|
post: "/v1/rooms/{room_id}/messages"
|
|
body: "*"
|
|
};
|
|
}
|
|
|
|
rpc EditMessage(EditMessageRequest) returns (EditMessageResponse) {
|
|
option (google.api.http) = {
|
|
patch: "/v1/rooms/{room_id}/messages/{message_id}"
|
|
body: "*"
|
|
};
|
|
}
|
|
|
|
rpc DeleteMessage(DeleteMessageRequest) returns (EmptyResponse) {
|
|
option (google.api.http) = {
|
|
delete: "/v1/rooms/{room_id}/messages/{message_id}"
|
|
};
|
|
}
|
|
|
|
rpc ListMessages(ListMessagesRequest) returns (ListMessagesResponse) {
|
|
option (google.api.http) = {
|
|
get: "/v1/rooms/{room_id}/messages"
|
|
};
|
|
}
|
|
|
|
rpc GetMessage(GetMessageRequest) returns (GetMessageResponse) {
|
|
option (google.api.http) = {
|
|
get: "/v1/rooms/{room_id}/messages/{message_id}"
|
|
};
|
|
}
|
|
|
|
rpc AddReaction(AddReactionRequest) returns (AddReactionResponse) {
|
|
option (google.api.http) = {
|
|
post: "/v1/rooms/{room_id}/messages/{message_id}/reactions"
|
|
body: "*"
|
|
};
|
|
}
|
|
|
|
rpc RemoveReaction(RemoveReactionRequest) returns (EmptyResponse) {
|
|
option (google.api.http) = {
|
|
delete: "/v1/rooms/{room_id}/messages/{message_id}/reactions/{emoji}"
|
|
};
|
|
}
|
|
|
|
rpc PinMessage(PinMessageRequest) returns (EmptyResponse) {
|
|
option (google.api.http) = {
|
|
post: "/v1/rooms/{room_id}/messages/{message_id}/pin"
|
|
};
|
|
}
|
|
|
|
rpc UnpinMessage(UnpinMessageRequest) returns (EmptyResponse) {
|
|
option (google.api.http) = {
|
|
delete: "/v1/rooms/{room_id}/messages/{message_id}/pin"
|
|
};
|
|
}
|
|
|
|
rpc ListPinnedMessages(ListPinnedMessagesRequest) returns (ListPinnedMessagesResponse) {
|
|
option (google.api.http) = {
|
|
get: "/v1/rooms/{room_id}/pinned"
|
|
};
|
|
}
|
|
|
|
rpc GetThread(GetThreadRequest) returns (GetThreadResponse) {
|
|
option (google.api.http) = {
|
|
get: "/v1/rooms/{room_id}/messages/{message_id}/thread"
|
|
};
|
|
}
|
|
|
|
rpc SearchMessages(SearchMessagesRequest) returns (SearchMessagesResponse) {
|
|
option (google.api.http) = {
|
|
get: "/v1/rooms/{room_id}/messages/search"
|
|
};
|
|
}
|
|
|
|
rpc ListMessagesSince(ListMessagesSinceRequest) returns (ListMessagesSinceResponse) {
|
|
option (google.api.http) = {
|
|
get: "/v1/rooms/{room_id}/messages/since/{after_message_id}"
|
|
};
|
|
}
|
|
|
|
rpc MarkAsRead(MarkAsReadRequest) returns (MarkAsReadResponse) {
|
|
option (google.api.http) = {
|
|
post: "/v1/rooms/{room_id}/read"
|
|
body: "*"
|
|
};
|
|
}
|
|
|
|
rpc GetUnreadCounts(GetUnreadCountsRequest) returns (GetUnreadCountsResponse) {
|
|
option (google.api.http) = {
|
|
get: "/v1/unread"
|
|
};
|
|
}
|
|
|
|
rpc StartTyping(StartTypingRequest) returns (EmptyResponse) {
|
|
option (google.api.http) = {
|
|
post: "/v1/rooms/{room_id}/typing"
|
|
};
|
|
}
|
|
|
|
rpc StopTyping(StopTypingRequest) returns (EmptyResponse) {
|
|
option (google.api.http) = {
|
|
delete: "/v1/rooms/{room_id}/typing"
|
|
};
|
|
}
|
|
} |