syntax = "proto3";
import "Open_IM/pkg/proto/sdk_ws/ws.proto";
option go_package = "./office;office";
package office;

message CommonResp{
  int32  errCode = 1;
  string errMsg = 2;
}

message TagUser {
  string userID = 1;
  string userName = 2;
}

message Tag {
  string tagID = 1;
  string tagName = 2;
  repeated TagUser userList = 3;
}

message GetUserTagsReq{
  string userID = 1;
  string operationID = 2;
}

message GetUserTagsResp{
  CommonResp commonResp = 1;
  repeated Tag tags = 2;
}

message CreateTagReq {
  string tagName = 1;
  string userID = 2;
  repeated string userIDList = 3;
  string operationID = 4;
}

message CreateTagResp {
  CommonResp commonResp = 1;
}

message DeleteTagReq {
  string userID = 1;
  string tagID = 2;
  string operationID = 3;
}

message DeleteTagResp {
  CommonResp commonResp = 1;
}

message SetTagReq {
 string userID = 1;
 string tagID = 2;
 string newName = 3;
 repeated string increaseUserIDList = 4;
 repeated string reduceUserIDList = 5;
 string operationID = 6;
}

message SetTagResp {
  CommonResp commonResp = 1;
}

message SendMsg2TagReq {
  repeated string tagList = 1;
  repeated string UserList = 2;
  repeated string GroupList = 3;
  string sendID = 4;
  int32 senderPlatformID = 5;
  string content = 6;
  string operationID = 7;
}

message SendMsg2TagResp {
  CommonResp commonResp = 1;
}

message GetTagSendLogsReq {
  server_api_params.RequestPagination Pagination = 1;
  string userID = 2;
  string operationID = 3;
}

message TagSendLog {
  repeated TagUser userList = 1;
  string content = 2;
  int64 sendTime = 3;
}

message GetTagSendLogsResp {
  CommonResp commonResp = 1;
  server_api_params.ResponsePagination Pagination = 2;
  repeated TagSendLog tagSendLogs = 3;
}

message GetUserTagByIDReq {
  string userID = 1;
  string tagID = 2;
  string operationID = 3;
}

message GetUserTagByIDResp {
  CommonResp commonResp = 1;
  Tag tag = 2;
}

service OfficeService {
  rpc GetUserTags(GetUserTagsReq) returns(GetUserTagsResp);
  rpc CreateTag(CreateTagReq) returns(CreateTagResp);
  rpc DeleteTag(DeleteTagReq) returns(DeleteTagResp);
  rpc SetTag(SetTagReq) returns(SetTagResp);
  rpc SendMsg2Tag(SendMsg2TagReq) returns(SendMsg2TagResp);
  rpc GetTagSendLogs(GetTagSendLogsReq) returns(GetTagSendLogsResp);
  rpc GetUserTagByID(GetUserTagByIDReq) returns(GetUserTagByIDResp);
}