syntax = "proto3";
package OpenIMServer.conversation;
option go_package = "github.com/OpenIMSDK/Open-IM-Server/pkg/proto/conversation";

message Conversation{
  string ownerUserID = 1;
  string conversationID = 2;
  int32 recvMsgOpt = 3;
  int32 conversationType = 4;
  string userID = 5;
  string groupID = 6;
  int32 unreadCount = 7;
  int64 draftTextTime = 8;
  bool isPinned = 9;
  string attachedInfo = 10;
  bool isPrivateChat = 11;
  int32 groupAtType = 12;
  bool isNotInGroup = 13;
  string ex = 14;
  int64  updateUnreadCountTime = 15;
  int32 burnDuration = 16;

}
message ModifyConversationFieldReq{
  Conversation conversation = 1;
  int32 fieldType = 2;
  repeated string userIDList = 3;
}

message ModifyConversationFieldResp{
}

message SetConversationReq{
  Conversation conversation = 1; 
}

message SetConversationResp{
}

message SetRecvMsgOptReq {
  string ownerUserID = 1;
  string conversationID = 2;
  int32 recvMsgOpt = 3;
}

message SetRecvMsgOptResp {
}

message GetConversationReq{
  string conversationID = 1;
  string ownerUserID = 2;
}

message GetConversationResp{
  Conversation conversation = 2;
}

message GetConversationsReq{
  string ownerUserID = 1;
  repeated string conversationIDs = 2;
}

message GetConversationsResp{
  repeated Conversation conversations = 2;
}

message GetAllConversationsReq{
  string ownerUserID = 1;
}

message GetAllConversationsResp{
  repeated Conversation conversations = 2;
}

message BatchSetConversationsReq{
  repeated Conversation Conversations = 1;
  string ownerUserID = 2;
}

message BatchSetConversationsResp{
  repeated string success = 1;
  repeated string failed = 2;
}

message GetRecvMsgNotNotifyUserIDsReq {
  string groupID = 1;
}

message GetRecvMsgNotNotifyUserIDsResp {
  repeated string userIDs = 1;
}


service conversation {
  rpc ModifyConversationField(ModifyConversationFieldReq)returns(ModifyConversationFieldResp);
  rpc GetConversation(GetConversationReq)returns(GetConversationResp);
  rpc GetAllConversations(GetAllConversationsReq)returns(GetAllConversationsResp);
  rpc GetConversations(GetConversationsReq)returns(GetConversationsResp);
  rpc BatchSetConversations(BatchSetConversationsReq)returns(BatchSetConversationsResp);
  rpc SetConversation(SetConversationReq)returns(SetConversationResp);
  rpc SetRecvMsgOpt(SetRecvMsgOptReq)returns(SetRecvMsgOptResp);
  rpc GetRecvMsgNotNotifyUserIDs(GetRecvMsgNotNotifyUserIDsReq) returns (GetRecvMsgNotNotifyUserIDsResp);
}
