// Copyright © 2023 OpenIM. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. syntax = "proto3"; package OpenIMServer.msg; import "sdkws/sdkws.proto"; // import "wrapperspb/wrapperspb.proto"; option go_package = "github.com/OpenIMSDK/Open-IM-Server/pkg/proto/msg"; message MsgDataToMQ{ string token = 1; sdkws.MsgData msgData = 2; } message MsgDataToDB { sdkws.MsgData msgData = 1; } message PushMsgDataToMQ{ sdkws.MsgData msgData = 1; string conversationID = 2; } message MsgDataToMongoByMQ{ int64 lastSeq = 1; string conversationID = 2; repeated sdkws.MsgData msgData = 3; } message GetMaxAndMinSeqReq { string UserID = 1; } message GetMaxAndMinSeqResp { int64 MaxSeq = 1; int64 MinSeq = 2; } message SendMsgReq { sdkws.MsgData msgData = 3; } message SendMsgResp { string serverMsgID = 1; string clientMsgID = 2; int64 sendTime = 3; } message SetSendMsgStatusReq{ int32 status = 1; } message SetSendMsgStatusResp{ } message GetSendMsgStatusReq{ } message GetSendMsgStatusResp{ int32 status = 1; } message MsgDataToModifyByMQ{ repeated sdkws.MsgData messages = 1; string conversationID = 2; } message DelMsgsReq{ } message DelMsgsResp{ } message RevokeMsgReq { string conversationID = 1; int64 seq = 2; string userID = 3; } message RevokeMsgResp { } message MarkMsgsAsReadReq { string conversationID = 1; repeated int64 seqs = 2; string userID = 3; } message MarkMsgsAsReadResp { } message MarkConversationAsReadReq { string conversationID = 1; string userID = 2; int64 hasReadSeq = 3; repeated int64 seqs = 4; } message MarkConversationAsReadResp { } message SetConversationHasReadSeqReq { string conversationID = 1; string userID = 2; int64 hasReadSeq = 3; } message SetConversationHasReadSeqResp { } message DeleteSyncOpt { bool IsSyncSelf = 3; bool IsSyncOther = 4; } message ClearConversationsMsgReq { repeated string conversationIDs = 1; string userID = 2; DeleteSyncOpt deleteSyncOpt = 3; } message ClearConversationsMsgResp { } message UserClearAllMsgReq { string userID = 1; DeleteSyncOpt deleteSyncOpt = 3; } message UserClearAllMsgResp { } message DeleteMsgsReq { string conversationID = 1; repeated int64 seqs = 2; string userID = 3; DeleteSyncOpt deleteSyncOpt = 4; } message DeleteMsgsResp { } message DeleteMsgPhysicalReq { repeated string conversationIDs = 1; int64 timestamp = 2; } message DeleteMsgPhysicalResp { } message DeleteMsgPhysicalBySeqReq { string conversationID = 1; repeated int64 seqs = 2; } message DeleteMsgPhysicalBySeqResp { } message GetConversationMaxSeqReq { string conversationID = 1; } message GetConversationMaxSeqResp { int64 maxSeq = 1; } message GetConversationsHasReadAndMaxSeqReq { string userID = 1; } message Seqs { int64 maxSeq = 1; int64 hasReadSeq = 2; } message GetConversationsHasReadAndMaxSeqResp { map seqs = 1; } message GetActiveUserReq { int64 start = 1; int64 end = 2; bool ase = 3; bool group = 4; sdkws.RequestPagination pagination = 5; } message ActiveUser { sdkws.UserInfo user = 1; int64 count = 2; } message GetActiveUserResp { int64 msgCount = 1; int64 userCount = 2; map dateCount = 3; repeated ActiveUser users = 4; } message GetActiveGroupReq { int64 start = 1; int64 end = 2; bool ase = 3; sdkws.RequestPagination pagination = 4; } message ActiveGroup { sdkws.GroupInfo group = 1; int64 count = 2; } message GetActiveGroupResp { int64 msgCount = 1; int64 groupCount = 2; map dateCount = 3; repeated ActiveGroup groups = 4; } service msg { //获取最小最大seq(包括用户的,以及指定群组的) rpc GetMaxSeq(sdkws.GetMaxSeqReq) returns(sdkws.GetMaxSeqResp); rpc GetConversationMaxSeq(GetConversationMaxSeqReq) returns(GetConversationMaxSeqResp); //拉取历史消息(包括用户的,以及指定群组的) rpc PullMessageBySeqs(sdkws.PullMessageBySeqsReq) returns(sdkws.PullMessageBySeqsResp); //发送消息 rpc SendMsg(SendMsgReq) returns(SendMsgResp); // 全量清空指定会话消息 重置min seq 比最大seq大1 rpc ClearConversationsMsg(ClearConversationsMsgReq) returns(ClearConversationsMsgResp); // 删除用户全部消息 重置min seq 比最大seq大1 rpc UserClearAllMsg(UserClearAllMsgReq) returns(UserClearAllMsgResp); // 用户标记删除部分消息by Seq rpc DeleteMsgs(DeleteMsgsReq) returns(DeleteMsgsResp); // seq物理删除消息 rpc DeleteMsgPhysicalBySeq(DeleteMsgPhysicalBySeqReq) returns(DeleteMsgPhysicalBySeqResp); // 物理删除消息by 时间 rpc DeleteMsgPhysical(DeleteMsgPhysicalReq) returns(DeleteMsgPhysicalResp); //设置消息是否发送成功-针对api发送的消息 rpc SetSendMsgStatus(SetSendMsgStatusReq) returns(SetSendMsgStatusResp); //获取消息发送状态 rpc GetSendMsgStatus(GetSendMsgStatusReq) returns(GetSendMsgStatusResp); rpc RevokeMsg(RevokeMsgReq) returns(RevokeMsgResp); // mark as read rpc MarkMsgsAsRead(MarkMsgsAsReadReq) returns(MarkMsgsAsReadResp); rpc MarkConversationAsRead(MarkConversationAsReadReq) returns(MarkConversationAsReadResp); rpc SetConversationHasReadSeq(SetConversationHasReadSeqReq) returns(SetConversationHasReadSeqResp); rpc GetConversationsHasReadAndMaxSeq(GetConversationsHasReadAndMaxSeqReq) returns(GetConversationsHasReadAndMaxSeqResp); rpc GetActiveUser(GetActiveUserReq) returns(GetActiveUserResp); rpc GetActiveGroup(GetActiveGroupReq) returns(GetActiveGroupResp); }