syntax = "proto3";
option go_package = "./sdk_ws;server_api_params";
package server_api_params;//The package name to which the proto file belongs
//option go_package = "./sdk_ws;open_im_sdk";//The generated go pb file is in the current directory, and the package name is open_im_sdk

////////////////////////////////base///////////////////////////////


message GroupInfo{
  string groupID = 1;
  string groupName = 2;
  string notification = 3;
  string introduction = 4;
  string faceURL = 5;
  string ownerUserID = 6;
  uint32 createTime = 7;
  uint32 memberCount = 8;
  string ex = 9;
  int32 status = 10;
  string creatorUserID = 11;
  int32 groupType = 12;
}


message GroupMemberFullInfo {
  string groupID = 1 ;
  string userID = 2 ;
  int32 roleLevel = 3;
  int64 joinTime = 4;
  string nickname = 5;
  string faceURL = 6;
  int32 appMangerLevel = 7; //if >0
  int32 joinSource = 8;
  string operatorUserID = 9;
  string ex = 10;
}

message PublicUserInfo{
  string userID = 1;
  string nickname = 2;
  string faceURL = 3;
  int32 gender = 4;
}

message UserInfo{
  string userID = 1;
  string nickname = 2;
  string faceURL = 3;
  int32 gender = 4;
  string phoneNumber = 5;
  uint32 birth = 6;
  string email = 7;
  string ex = 8;
  uint32 createTime = 9;
  int32 appMangerLevel = 10;
}

message FriendInfo{
  string ownerUserID = 1;
  string remark = 2;
  uint32 createTime = 3;
  UserInfo friendUser = 4;
  int32 addSource = 5;
  string operatorUserID = 6;
  string ex = 7;
}

message BlackInfo{
  string ownerUserID = 1;
  uint32 createTime = 2;
  PublicUserInfo blackUserInfo = 3;
  int32 addSource = 4;
  string operatorUserID = 5;
  string ex = 6;
}

message GroupRequest{
  PublicUserInfo userInfo = 1;
  GroupInfo groupInfo = 2;
  int32 handleResult = 3;
  string reqMsg = 4;
  string  handleMsg = 5;
  uint32 reqTime = 6;
  string handleUserID = 7;
  uint32 handleTime = 8;
  string ex = 9;
}

message FriendRequest{
  string fromUserID = 1;
  string fromNickname = 2;
  string fromFaceURL = 3;
  int32 fromGender = 4;
  string toUserID = 5;
  string toNickname = 6;
  string toFaceURL = 7;
  int32 toGender = 8;
  int32 handleResult = 9;
  string reqMsg = 10;
  uint32 createTime = 11;
  string handlerUserID = 12;
  string handleMsg = 13;
  uint32 handleTime = 14;
  string ex = 15;
}

///////////////////////////////////base end/////////////////////////////////////


message PullMessageBySeqListResp {
  int32 errCode = 1;
  string errMsg = 2;
  repeated MsgData list = 3;
}
message PullMessageBySeqListReq{
  string userID = 1;
  string operationID = 2;
  repeated uint32 seqList = 3;
}
message GetMaxAndMinSeqReq {
}
message GetMaxAndMinSeqResp {
  uint32 maxSeq = 1;
  uint32 minSeq = 2;
}

message UserSendMsgResp {
  string serverMsgID = 1;
  string clientMsgID = 2;
  int64  sendTime = 3;

}
message MsgData {
  string  sendID = 1;
  string  recvID = 2;
  string groupID = 3;
  string clientMsgID = 4;
  string serverMsgID = 5;
  int32 senderPlatformID = 6;
  string  senderNickname = 7;
  string  senderFaceURL = 8;
  int32   sessionType = 9;
  int32 msgFrom = 10;
  int32 contentType = 11;
  bytes content = 12;
  uint32 seq = 14;
  int64 sendTime = 15;
  int64 createTime = 16;
  int32 status = 17;
  map<string, bool> options = 18;
  OfflinePushInfo offlinePushInfo = 19;
}

message OfflinePushInfo{
  string title = 1;
  string desc = 2;
  string ex = 3;
  string iOSPushSound = 4;
  bool iOSBadgeCount = 5;
}









message TipsComm{
  bytes detail = 1;
  string defaultTips = 2;
  string jsonDetail = 3;
}

//////////////////////group/////////////////////


//	OnGroupCreated()
message GroupCreatedTips{
  GroupInfo group = 1;
  GroupMemberFullInfo opUser = 2;
  repeated GroupMemberFullInfo memberList = 3;
  int64 operationTime = 4;
  GroupMemberFullInfo groupOwnerUser = 5;
}

//	OnGroupInfoSet()
message GroupInfoSetTips{
  GroupMemberFullInfo opUser = 1; //who do this
  int64 muteTime = 2;
  GroupInfo group = 3;
}

//	OnJoinGroupApplication()
message JoinGroupApplicationTips{
  GroupInfo group = 1;
  PublicUserInfo applicant = 2;
  string  reqMsg = 3;
}

//	OnQuitGroup()
//Actively leave the group
message MemberQuitTips{
  GroupInfo group = 1;
  GroupMemberFullInfo quitUser = 2;
  int64 operationTime = 3;
}


//	OnApplicationGroupAccepted()
message GroupApplicationAcceptedTips{
  GroupInfo group = 1;
  GroupMemberFullInfo opUser = 2;
  string  handleMsg = 4;
}

//	OnApplicationGroupRejected()
message GroupApplicationRejectedTips{
  GroupInfo group = 1;
  GroupMemberFullInfo opUser = 2;
  string  handleMsg = 4;
}

//	OnTransferGroupOwner()
message GroupOwnerTransferredTips{
  GroupInfo group = 1;
  GroupMemberFullInfo opUser = 2;
  GroupMemberFullInfo newGroupOwner = 3;
  int64 operationTime = 4;
}


//	OnMemberKicked()
message MemberKickedTips{
  GroupInfo group = 1;
  GroupMemberFullInfo opUser = 2;
  repeated GroupMemberFullInfo kickedUserList = 3;
  int64 operationTime = 4;
}

//	OnMemberInvited()
message MemberInvitedTips{
  GroupInfo group = 1;
  GroupMemberFullInfo opUser = 2;
  repeated GroupMemberFullInfo invitedUserList = 3;
  int64 operationTime = 4;
}

//Actively join the group
message MemberEnterTips{
  GroupInfo group = 1;
  GroupMemberFullInfo entrantUser = 2;
  int64 operationTime = 3;
}











//////////////////////friend/////////////////////
//message FriendInfo{
//  UserInfo OwnerUser = 1;
//  string Remark = 2;
//  uint64 CreateTime = 3;
//  UserInfo FriendUser = 4;
//}

message FriendApplication{
  int64 addTime = 1;
  string addSource = 2;
  string addWording = 3;
}

message FromToUserID{
  string fromUserID = 1;
  string toUserID = 2;
}

//FromUserID apply to add ToUserID
message FriendApplicationTips{
  FromToUserID fromToUserID = 1;
}

//FromUserID accept or reject ToUserID
message FriendApplicationApprovedTips{
  FromToUserID fromToUserID = 1;
  string handleMsg = 2;
}

//FromUserID accept or reject ToUserID
message FriendApplicationRejectedTips{
  FromToUserID fromToUserID = 1;
   string handleMsg = 2;
}


// FromUserID  Added a friend ToUserID
message FriendAddedTips{
  FriendInfo friend = 1;
  int64 operationTime = 2;
  PublicUserInfo     opUser = 3;  //who do this

}

// FromUserID  deleted a friend ToUserID
message FriendDeletedTips{
  FromToUserID fromToUserID = 1;
}



message BlackAddedTips{
  FromToUserID fromToUserID = 1;
}

message BlackDeletedTips{
  FromToUserID fromToUserID = 1;
}

message FriendInfoChangedTips{
  FromToUserID fromToUserID = 1;
}
//////////////////////user/////////////////////
message UserInfoUpdatedTips{
  string userID = 1;
}

//////////////////////conversation/////////////////////
message ConversationUpdateTips{
 string UserID = 1;

}

///callback
message CommonCallbackURLReq {
 string CallbackCommand = 1 [json_name = "code"];
 string OpenIMServerID = 2;
 string OperationID = 3;
}

message CommonCallbackURLResp {
 string Code = 1 [json_name = "code"];
 string Msg = 2  [json_name = "msg"];
 string OperationID = 3 [json_name = "operationID"];
}

message CallbackBeforeSendMsgReq {
 commonReq CommonCallbackURLReq = 1;

}

message CallbackBeforeSendMsgResp {
 commonResp CommonCallbackURLResp = 1;
 string FromUserID = 2;
}

message CallbackAfterAddFriendReq {
  commonReq CommonCallbackURLReq = 1;
}

message CallbackAfterAddFriendResp {
 commonResp CommonCallbackURLResp = 1;
}


///cms
message RequestPagination {
  int32 pageNumber = 1;
  int32 showNumber = 2;
}

message ResponsePagination {
  int32 CurrentPage = 5;
  int32 ShowNumber = 6;
}