syntax = "proto3";

package im_types;

option go_package = "./improto";

import "data_type.proto";

enum DEV {
  DEV_NULL = 0;
  ISONLINE = 1;               //在线
  ISNOTONLINE = 2;            //不在线
}

enum PLATFORM {
  PLATFORM_PNULL = 0;
  IOS = 1;      //ios平台
  AND = 2;      //安卓平台
  WIN = 3;      //Windows平台
  MAC = 4;      //Mac平台
  PAD = 5;      //Pad平台
}



// 设备-新增
message AddDeviceReq {
  string addr = 1;          //用户地址
  string mid = 2;           //MachineID
  string content = 3;       //自定义字段，自己管理，自己解析
  string proxyID = 4;       //代理节点ID
  optional PLATFORM platform = 5;    //平台
  int64 version = 6;        //版本号
  string appVersion = 7;    //设备版本号
  string appUdid  = 8;      //登陆设备惟一ID
  string DevName = 9;       //设备备注
}
// 设备-修改
message UpdateDeviceReq {
  string addr = 1;          //用户地址
  string mid = 2;           //MachineID
  string DevName = 3;       //设备备注
}

// 设备-删除
message DeleteDeviceReq {
  string addr = 1;          //用户地址
  string mid = 2;           //MachineID
}

// 设备-下线其它设备
message OutLineOtherDevReq {
  string addr = 1;          //用户地址
  string mid = 2;           //MachineID
}

// 设备信息
message DeviceInfo {
  string addr = 1;          //用户地址
  string mid = 2;           //MachineID
  string content = 3;       //自定义字段，自己管理，自己解析
  int64 cTime = 4;          //创建时间
  int64 lastLoginTime = 5;  //最后登陆时间
  optional DEV isOnline = 7;       //在线状态，1 在线 0 不在线
  optional PLATFORM platform = 8;    //平台
  string DevName = 9;       //设备备注
}

// 设备-查询
message QueryDeviceReq {
  string addr = 1;          //用户地址
}

// 返回设备信息
message QueryDeviceRes{
  repeated DeviceInfo devices = 1;  //设备列表
}

// 设备-上报上线，上报上线后，会触发推送逻辑
message UploadOnlineReq {
  string addr = 1;          //用户地址
  string mid = 2;           //MachineID
  int64 conver = 3;         //连接版本号
  string proxyId = 4;       //代理节点地址
}

// 设备-设置消息通知状态
message UpdateNoticeVoiceConfigReq {
  string addr = 1;          //用户地址
  string mid = 2;           //MachineID
  optional improto.EnumSwitch recvNewMsg = 3;   //接收新消息通知
  optional improto.EnumSwitch recvVoiceMsg = 4; //接收语音和视频通话通知
  optional improto.EnumSwitch vibrateNewMsg = 5; //新消息震动
  optional improto.EnumSwitch soundNewMsg = 6; //新消息声音
  optional improto.EnumSwitch vibrateVoiceMsg = 7; //语音和视频通话震动
  optional improto.EnumSwitch soundVoiceMsg = 8; //语音和视频通话声音
}