gw_api.proto

syntax = "proto3";

package bilibili.gaia.gw;

import "google/protobuf/empty.proto";

// 应用列表上报
service Gaia {
    // 应用列表上报
    rpc ExUploadAppList(GaiaEncryptMsgReq) returns (UploadAppListReply);
    // 拉取rsa公钥
    rpc ExFetchPublicKey(.google.protobuf.Empty) returns (FetchPublicKeyReply);
}

//
message FetchPublicKeyReply {
    // 版本号
    string version = 1;     
    // RSA公钥
    string public_key = 2;  
    // 公钥过期时间
    int64 deadline = 3;     
}

message GaiaDeviceBasicInfo {
    //平台&应用信息
    string platform = 1;        //android/ios/web/h5;
    string device = 2;          //运行设备, 用于区分不同的app, 见客户端传入的对应参数。对于苹果系统,device有效值为phone, pad;安卓无法区分phone和pad,留空即可。
    string mobi_app = 3;        //包类型,用于区分不同的app, 见客户端传入的对应参数(mobi_app );对于web端请求,请传空
    string origin =4;           //客户端appkey, 用以区分不同的客户端,对应客户端请求参数中的appkey,如果无法获取可传空“”
    string app_id = 5;          //app产品编号 //产品编号,由数据平台分配,粉=1,白=2,蓝=3,直播姬=4,HD=5,海外=6,OTT=7,漫画=8,TV野版=9,小视频=10,网易漫画=11,网易漫画lite=12,网易漫画HD=13,国际版=14

    //应用的版本信息
    string sdkver = 6;            // SDK版本号   "sdkver": "2.6.6"
    string app_version = 7;       // app版本  "app_version":"5.36.0"
    string app_version_code = 8;  // app版本号 "app_version_code":"5360000"
    string build = 9;             // app版本号,见客户端传入的对应参数;对于web端请求,请传空

    //渠道信息
    string channel = 10;   //渠道标识,见客户端传入的对应参数;对于web端请求,请传空;对应chid

    //机器硬件信息
    string brand =11;   //手机品牌,见客户端传入的对应参数;
    string model=12;    //手机型号,见客户端传入的对应参数
    string osver =13;   //系统版本,见客户端传入的对应参数
    string user_agent=14;

    //设备标识信息
    string buvid_local = 15;  //本地设备唯一标识
    string buvid = 16;        //设备唯一标识

    //登陆用户信息
    string mid = 17;         //最后一次登陆用户的mid,如果无登陆信息,传0即可

    //本次启动信息
    int64  fts = 18; // app首次启动时间 "fts":1530447775661
    int32  first = 19; // 是否首次启动 是:0 否:1

    //网络相关的信息
    string network = 20; // 网络连接方式, WIFI/CELLULAR/OFFLINE/OTHERNET/ETHERNET "network":"WIFI", ESS_NETWORK_STATE、ACCESS_WIFI_STATE
    //string ip = 20;
}

//待加密的pb对象
message DeviceAppList {
    // 上报类型
    // first_installation:首次安装上报 first_open:每日启动上报
    string source = 1;
    // 安装的系统程序列表
    repeated string system_app_list = 2;
    //安装的用户程序列表
    repeated string user_app_list = 3;
}

// 加密方式
enum EncryptType{
    // 非法值
    INVALID_ENCRYPT_TYPE = 0;
    // 同客户端人工约定AES加密私钥,存储在客户端
    CLIENT_AES = 1;
    // 客户端随机生成一个用于AES加密的私钥,并用服务端下发的RSA公钥来加密
    SERVER_RSA_AES = 2;
}

// 负载类型
enum PayloadType {
    //非法值
    INVALID_PAYLOAD = 0;
    //设备app列表,对应DeviceAppList
    DEVICE_APP_LIST = 1;
}

// 风控通用消息头
message GaiaMsgHeader {
    //加密类型
    EncryptType encode_type = 1;
    //类型
    PayloadType payload_type = 2;
    //RAS加密后的aes_key
    bytes encoded_aes_key = 3;
    //当前时间戳(ms)
    int64 ts = 4;
}

// 应用列表上报-请求
message GaiaEncryptMsgReq {
    // 上报头部
    GaiaMsgHeader header = 1;
    // 加密数据
    bytes encrypt_payload = 2;
}

// 应用列表上报-响应
message UploadAppListReply {
    // 上报响应id
    string trace_id = 1;
}