syntax = "proto3";

package bilibili.main.community.reply.v1;

import "google/protobuf/any.proto";

// 评论区
service Reply {
    // 主评论列表接口
    rpc MainList(MainListReq) returns (MainListReply);
    // 二级评论明细接口
    rpc DetailList(DetailListReq) returns (DetailListReply);
    // 对话评论树接口
    rpc DialogList(DialogListReq) returns (DialogListReply);
    // 评论预览接口
    rpc PreviewList(PreviewListReq) returns (PreviewListReply);
    // 评论搜索item前置发布接口
    rpc SearchItemPreHook(SearchItemPreHookReq) returns (SearchItemPreHookReply);
    // 评论搜索插入项目接口
    rpc SearchItem(SearchItemReq) returns (SearchItemReply);
    // 评论at用户搜索接口
    rpc AtSearch(AtSearchReq) returns (AtSearchReply);
    // 查询单条评论接口
    rpc ReplyInfo(ReplyInfoReq) returns (ReplyInfoReply);
    // 用户回调上报接口
    rpc UserCallback(UserCallbackReq) returns (UserCallbackReply);
    // 评论分享材料接口
    rpc ShareRepliesInfo(ShareRepliesInfoReq) returns (ShareRepliesInfoResp);
    // 评论表情推荐列表接口
    rpc SuggestEmotes(SuggestEmotesReq) returns (SuggestEmotesResp);
}

// 活动
message Activity {
    // 活动id
    int64 activity_id = 1;
    // 活动状态
    // -1:待审 1:上线
    int64 activity_state = 2;
    // 参与活动的输入框文案
    string activity_placeholder = 3;
}

// 文章项目
message ArticleSearchItem {
    // 标题
    string title = 1;
    // UP主昵称
    string up_nickname = 2;
    // 封面
    repeated string covers = 3;
}

// 评论at用户搜索组
message AtGroup {
    // 组类型
    int32 group_type = 1;
    // 组标题
    string group_name = 2;
    // 评论at用户搜索列表
    repeated AtItem items = 3;
}

// 评论at用户搜索条目
message AtItem {
    // 用户mid
    int64 mid = 1;
    // 用户名
    string name = 2;
    // 用户头像url
    string face = 3;
    // 用户是否关注
    int32 fans = 4;
    // 用户认证类型
    int32 official_verify_type = 5;
}

// 评论at用户搜索-响应
message AtSearchReply {
    // 评论at用户搜索组
    repeated AtGroup groups = 1;
}

// 评论at用户搜索-请求
message AtSearchReq {
    //
    int64 mid = 1;
    // 关键字
    string keyword = 2;
}

// 广告
message CM {
    // 广告数据(需要解包)
    google.protobuf.Any source_content = 1;
}

// 评论主体信息
message Content {
    // 评论文本
    string message = 1;
    // 需要渲染的用户转义
    map<string, Member> menber = 2;
    // 需要渲染的表情转义
    map<string, Emote> emote = 3;
    // 需要高亮的话题转义
    map<string, Topic> topic = 4;
    // 需要高亮的超链转义
    map<string, Url> url = 5;
    // 投票信息
    Vote vote = 6;
    // at到的用户mid列表
    map<string, int64> at_name_to_mid = 7;
    // 富文本
    RichText rich_text = 8;
    // 评论图片
    repeated  Picture pictures = 9;
}

// 图片信息
message Picture {
    // 图片URL
    string img_src = 1;
    // 图片宽度
    double img_width = 2;
    // 图片高度
    double img_height = 3;
    // 图片大小，单位KB
    double img_size = 4;
}

// 页面游标回复
message CursorReply {
    // 下页数据
    int64 next = 1;
    // 上页数据
    int64 prev = 2;
    // 是否到顶
    bool isBegin = 3;
    // 是否到底
    bool isEnd = 4;
    // 排序方式
    // 2:时间 3:热度
    Mode mode = 5;
    // 当前排序mode在切换按钮上的展示文案 
    string mode_text = 6;
}

// 页面游标请求
message CursorReq {
    // 下页数据
    int64 next = 1;
    // 上页数据
    int64 prev = 2;
    // 排序方式
    Mode mode = 4;
}

// 二级评论明细-响应
message DetailListReply {
    // 页面游标
    CursorReply cursor = 1;
    // 评论区显示控制字段
    SubjectControl subject_control = 2;
    // 根评论信息(带二级评论)
    ReplyInfo root = 3;
    // 评论区的活动
    Activity activity = 4;
    //
    LikeInfo likes = 5;
}

// 二级评论明细-请求
message DetailListReq {
    // 目标评论区id
    int64 oid = 1;
    // 目标评论区业务type
    int64 type = 2;
    // 根评论rpid
    int64 root = 3;
    // 目标评论rpid
    int64 rpid = 4;
    // 页面游标
    CursorReq cursor = 5;
    // 来源标识
    DetailListScene scene = 6;
}

// 来源标识
enum DetailListScene {
    REPLY    = 0; // 评论区展开
    MSG_FEED = 1; // 回复消息推送
    NOTIFY   = 2; //
}

// 对话评论树-响应
message DialogListReply {
    // 页面游标
    CursorReply cursor = 1;
    // 评论区显示控制字段
    SubjectControl subject_control = 2;
    // 子评论列表
    repeated ReplyInfo replies = 3;
    // 评论区的活动
    Activity activity = 4;
}

// 对话评论树-请求
message DialogListReq {
    // 目标评论区id
    int64 oid = 1;
    // 目标评论区业务type
    int64 type = 2;
    // 根评论rpid
    int64 root = 3;
    // 对话评论rpid
    int64 rpid = 4;
    // 页面游标
    CursorReq cursor = 5;
}

// 特效
message Effects {
    //
    string preloading = 1;
}

// 表情项
message Emote {
    // 表情大小
    // 1:小 2:大
    int64 size = 1;
    // 表情url
    string url = 2;
    //
    string jump_url = 3;
    //
    string jump_title = 4;
    //
    int64 id = 5;
    //
    int64 package_id = 6;
    //
    string gif_url = 7;
    //
    string text = 8;
}

// 商品项目
message GoodsSearchItem {
    // 商品id
    int64 id = 1;
    // 商品名
    string name = 2;
    // 价钱
    string price = 3;
    // 收入
    string income = 4;
    // 图片
    string img = 5;
    // 标签
    string label = 6;
}

//
message LikeInfo {
    //
    message Item {
        //
        Member member = 1;
    }
    //
    repeated Item items = 1;
    //
    string title = 2;
}

// 抽奖
message Lottery {
    // 抽奖id
    int64 lottery_id = 1;
    // 抽奖状态
    // 0:未开奖 1:开奖中 2:已开奖
    int64 lottery_status = 2;
    // 抽奖人mid
    int64 lottery_mid = 3;
    // 开奖时间
    int64 lottery_time = 4;
    //
    int64 oid = 5;
    //
    int64 type = 6;
    // 发送时间
    int64 ctime = 7;
    // 抽奖评论正文
    Content content = 8;
    // 用户信息
    Member member = 9;
    // 评论条目控制字段
    ReplyControl reply_control = 10;
}

// 主评论列表-响应
message MainListReply {
    // 页面游标
    CursorReply cursor = 1;
    // 评论列表
    repeated ReplyInfo replies = 2;
    // 评论区显示控制字段
    SubjectControl subject_control = 3;
    // UP置顶评论
    ReplyInfo up_top = 4;
    // 管理员置顶评论
    ReplyInfo admin_top = 5;
    // 投票置顶评论
    ReplyInfo vote_top = 6;
    // 评论区提示
    Notice notice = 7;
    // 抽奖评论
    Lottery lottery = 8;
    // 活动
    Activity activity = 9;
    // 精选评论区筛选后台信息
    UpSelection up_selection = 10;
    // 广告
    CM cm = 11;
    // 特效
    Effects effects = 12;
    //
    Operation operation = 13;
    //
    repeated ReplyInfo top_replies = 14;
    //
    QoeInfo qoe = 15;
    //
    map<string, int32> callbacks = 16;
}

// 主评论列表-请求
message MainListReq {
    // 目标评论区id
    int64 oid = 1;
    // 目标评论区业务type
    int64 type = 2;
    // 页面游标
    CursorReq cursor = 3;
    // 扩展数据json
    string extra = 4;
    // 广告扩展
    string ad_extra = 5;
    // 目标评论rpid
    int64 rpid = 6;
    //
    int64 seek_rpid = 7;
    // 评论区筛选类型 取值可为: ["全部" "粉丝评论" "笔记长评"]
    string filter_tag_name = 8;
}

// 用户信息
message Member {
    // 地区类型
    enum RegionType {
        DEFAULT  = 0; // 默认
        MAINLAND = 1; // 大陆地区
        GAT      = 2; //
    }
    //
    enum ShowStatus {
        SHOWDEFAULT    = 0; // 默认
        ZOOMINMAINLAND = 1; //
        RAW            = 2; //
    }
    // NFT地区
    message Region {
        // 地区类型
        RegionType type = 1;
        // 角标url
        string icon = 2;
        //
        ShowStatus show_status = 3;
    }
    // NFT信息
    message NftInteraction {
        //
        string itype = 1;
        //
        string metadata_url = 2;
        //
        string nft_id = 3;
        // NFT地区
        Region region = 4;
    }
    /**********基础信息**********/
    // 用户mid
    int64 mid = 1;
    // 昵称
    string name = 2;
    // 性别
    string sex = 3;
    // 头像url
    string face = 4;
    // 等级
    int64 level = 5;
    // 认证类型
    int64 official_verify_type = 6;
    /**********VIP相关**********/
    // 会员类型
    // 0:不是大会员 1:月度会员 2:年度大会员
    int64 vip_type = 7;
    // 会员状态
    int64 vip_status = 8;
    // 会员样式
    int64 vip_theme_type = 9;
    // 会员铭牌样式url
    string vip_label_path = 10;
    /**********装扮相关**********/
    // 头像框url
    string garb_pendant_image = 11;
    // 装扮卡url
    string garb_card_image = 12;
    // 有关注按钮时的装扮卡url
    string garb_card_image_with_focus = 13;
    // 专属装扮页面url
    string garb_card_jump_url = 14;
    // 专属装扮id
    string garb_card_number = 15;
    // 专属装扮id显示颜色
    string garb_card_fan_color = 16;
    // 是否为专属装扮卡
    bool garb_card_is_fan = 17;
    /**********粉丝勋章相关**********/
    // 粉丝勋章名
    string fans_medal_name = 18;
    // 粉丝勋章等级
    int64 fans_medal_level = 19;
    // 粉丝勋章显示颜色
    int64 fans_medal_color = 20;
    // 会员昵称颜色
    string vip_nickname_color = 21;
    // 会员角标
    // 0:无角标 1:粉色大会员角标 2:绿色小会员角标
    int32 vip_avatar_subscript = 22;
    // 会员标签文
    string vip_label_text = 23;
    // 会员标颜色
    string vip_label_theme = 24;
    // 粉丝勋章底色
    int64 fans_medal_color_end = 25;
    // 粉丝勋章边框颜色
    int64 fans_medal_color_border = 26;
    // 粉丝勋章名颜色
    int64 fans_medal_color_name = 27;
    // 粉丝勋章等级颜色
    int64 fans_medal_color_level = 28;
    //
    int64 fans_guard_level = 29;
    //
    int32 face_nft = 30;
    // 是否NFT头像
    int32 face_nft_new = 31;
    // 是否为硬核会员
    int32 is_senior_member = 32;
    // NFT信息
    NftInteraction nft_interaction = 33;
    //
    string fans_guard_icon = 34;
    //
    string fans_honor_icon = 35;
}

// 用户信息V2
message MemberV2 {
    // 基本信息
    message Basic {
        // 用户mid
        int64 mid = 1;
        // 昵称
        string name = 2;
        // 性别
        string sex = 3;
        // 头像url
        string face = 4;
        // 等级
        int64 level = 5;
    }
    // 认证
    message Official {
        // 认证类型
        int64 verify_type = 1;
    }
    // 大会员
    message Vip {
        // 会员类型
        // 0:不是大会员 1:月度会员 2:年度大会员
        int64 type = 1;
        // 会员状态
        int64 status = 2;
        // 会员样式
        int64 theme_type = 3;
        // 会员铭牌样式url
        string label_path = 4;
        //
        string nickname_color = 5;
        //
        int32 avatar_subscript = 6;
        //
        string label_text = 7;
        //
        string vip_label_theme = 8;
    }
    // 装扮
    message Garb {
        // 头像框url
        string pendant_image = 1;
        // 装扮卡url
        string card_image = 2;
        // 有关注按钮时的装扮卡url
        string card_image_with_focus = 3;
        // 专属装扮页面url
        string card_jump_url = 4;
        // 专属装扮id
        string card_number = 5;
        // 专属装扮id显示颜色
        string card_fan_color = 6;
        // 是否为专属装扮卡
        bool card_is_fan = 7;
    }
    // 粉丝勋章
    message Medal {
        // 粉丝勋章名
        string name = 1;
        // 粉丝勋章等级
        int64 level = 2;
        // 粉丝勋章显示颜色
        int64 color_start = 3;
        // 粉丝勋章底色
        int64 color_end = 4;
        // 粉丝勋章边框颜色
        int64 color_border = 5;
        // 粉丝勋章名颜色
        int64 color_name = 6;
        // 粉丝勋章等级颜色
        int64 color_level = 7;
        //
        int64 guard_level = 8;
        //
        string first_icon = 9;
        //
        int64 level_bg_color = 11;
    }
    // 地区类型
    enum RegionType {
        DEFAULT  = 0; // 默认
        MAINLAND = 1; // 大陆地区
        GAT      = 2; //
    }
    //
    enum ShowStatus {
        SHOWDEFAULT    = 0; //
        ZOOMINMAINLAND = 1; //
        RAW            = 2; //
    }
    // NFT地区
    message Region {
        // 地区类型
        RegionType type = 1;
        // 角标url
        string icon = 2;
        //
        ShowStatus show_status = 3;
    }
    // NFT信息
    message Interaction {
        //
        string itype = 1;
        //
        string metadata_url = 2;
        //
        string nft_id = 3;
        // NFT地区
        Region region = 4;

    }
    // NFT
    message Nft {
        //
        int32 face = 1;
        //
        Interaction interaction = 2;
    }
    // 硬核会员
    message Senior {
        // 是否为硬核会员
        int32 is_senior_member = 1;
    }
    // 契约
    message Contractor {
        // 是否和up签订契约
        bool is_contractor = 1;
        // 契约显示文案
        string contract_desc = 2;
    }
    // 基本信息
    Basic basic = 1;
    // 认证信息
    Official official = 2;
    // 大会员信息
    Vip vip = 3;
    // 装扮信息
    Garb garb = 4;
    // 粉丝勋章信息
    Medal medal = 5;
    // NFT信息
    Nft nft = 6;
    // 硬核会员信息
    Senior senior = 7;
    // 契约信息
    Contractor contractor = 8;
}

// 排序方式
enum Mode {
    DEFAULT        = 0; //
    UNSPECIFIED    = 1; // 默认排序
    MAIN_LIST_TIME = 2; // 按时间
    MAIN_LIST_HOT  = 3; // 按热度
}

//
message Notice {
    //
    int64 id = 1;
    //
    string content = 2;
    //
    string link = 3;
}

//
message Operation {
    //
    int32 type = 1;
    //
    int64 id = 2;
    //
    OperationTitle title = 3;
    //
    OperationTitle subtitle = 4;
    //
    string link = 5;
    //
    string report_extra = 6;
    //
    string icon = 7;
}

//
message OperationTitle {
    //
    string content = 1;
    //
    bool is_highlight = 2;
}

// PGC视频项目
message PGCVideoSearchItem {
    // 标题
    string title = 1;
    // 类别
    string category = 2;
    // 封面
    string cover = 3;
}

// 评论区预览-回复
message PreviewListReply {
    // 页面游标
    CursorReply cursor = 1;
    // 评论列表
    repeated ReplyInfo replies = 2;
    // 评论区显示控制字段
    SubjectControl subject_control = 3;
    // UP置顶评论
    ReplyInfo upTop = 4;
    // 管理员置顶评论
    ReplyInfo admin_top = 5;
    // 投票置顶评论
    ReplyInfo vote_top = 6;
}

// 评论区预览-请求
message PreviewListReq {
    // 目标评论区id
    int64 oid = 1;
    // 目标评论区业务type
    int64 type = 2;
    // 页面游标
    CursorReq cursor = 3;
}

//
message QoeInfo {
    //
    int64 id = 1;
    //
    int32 type = 2;
    //
    int32 style = 3;
    //
    string title = 4;
    //
    string feedback_title = 5;
    //
    repeated QoeScoreItem score_items = 6;
    //
    int64 display_rank = 7;
}

//
message QoeScoreItem {
    //
    string title = 1;
    //
    string url = 2;
    //
    float score = 3;
}

// 评论条目标签信息
message ReplyCardLabel {
    // 标签文本
    string text_content = 1;
    // 文本颜色
    string text_color_day = 2;
    // 文本颜色夜间
    string text_color_night = 3;
    // 标签颜色
    string label_color_day = 4;
    // 标签颜色夜间
    string label_color_night = 5;
    //
    string image = 6;
    // 标签类型 0:UP主觉得很赞 1:妙评
    int32 type = 7;
    // 背景url
    string background = 8;
    // 背景宽
    double background_width = 9;
    // 背景高
    double background_height = 10;
    // 点击跳转url
    string jump_url = 11;
    //
    int64 effect = 12;
    //
    int64 effect_start_time = 13;
}

// 评论条目控制字段
message ReplyControl {
    // 操作行为标志
    // 0:无 1:已点赞 2:已点踩
    int64 action = 1;
    // 是否UP觉得很赞
    bool up_like = 2;
    // 是否存在UP回复
    bool up_reply = 3;
    // 是否显示关注按钮
    bool show_follow_btn = 4;
    // 是否协管
    bool is_assist = 5;
    // 是否展示标签
    string label_text = 6;
    // 是否关注
    bool following = 7;
    // 是否粉丝
    bool followed = 8;
    // 是否被自己拉黑
    bool blocked = 9;
    // 是否存在折叠的二级评论
    bool has_folded_reply = 10;
    // 是否折叠
    bool is_folded_reply = 11;
    // 是否UP置顶
    bool is_up_top = 12;
    // 是否管理置顶
    bool is_admin_top = 13;
    // 是否置顶投票评论
    bool is_vote_top = 14;
    // 最大收起显示行数
    int64 max_line = 15;
    // 该条评论可不可见
    bool invisible = 16;
    // 是否和up签订契约
    bool is_contractor = 17;
    // 是否是笔记评论
    bool is_note = 18;
    // 评论条目标签列表
    repeated ReplyCardLabel card_labels = 19;
    // 子评论数文案 "共x条回复"
    string sub_reply_entry_text = 20;
    // 子评论数文案 "相关回复共x条"
    string sub_reply_title_text = 21;
    // 契约显示文案
    string contract_desc = 22;
    // 发布时间文案 "x天前发布"
    string time_desc = 23;
    //
    string biz_scene = 24;
    // IP属地信息 "IP属地：xxx"
    string location = 25;
}

//
message ReplyExtra {
    //
    int64 season_id = 1;
    //
    int64 season_type = 2;
    //
    int64 ep_id = 3;
    //
    bool is_story = 4;
}

// 评论条目信息
message ReplyInfo {
    // 二级评论列表
    repeated ReplyInfo replies = 1;
    // 评论rpid
    int64 id = 2;
    // 评论区对象id
    int64 oid = 3;
    // 评论区类型
    int64 type = 4;
    // 发布者UID
    int64 mid = 5;
    // 根评论rpid
    int64 root = 6;
    // 父评论rpid
    int64 parent = 7;
    // 对话评论rpid
    int64 dialog = 8;
    // 点赞数
    int64 like = 9;
    // 发布时间
    int64 ctime = 10;
    // 回复数
    int64 count = 11;
    // 评论主体信息
    Content content = 12;
    // 发布者信息
    Member member = 13;
    // 评论控制字段
    ReplyControl reply_control = 14;
    // 发布者信息V2
    MemberV2 member_v2 = 15;
}

// 查询单条评论-响应
message ReplyInfoReply {
    // 评论条目信息
    ReplyInfo reply = 1;
}

// 查询单条评论-请求
message ReplyInfoReq {
    // 评论rpid
    int64 rpid = 1;
    //
    int32 scene = 2;
}

// 富文本
message RichText {
    // 富文本类型
    oneof item {
        // 笔记
        RichTextNote note = 1;
    }
}

// 笔记
message RichTextNote {
    // 预览文本
    string summary = 1;
    // 笔记预览图片url列表
    repeated string images = 2;
    // 笔记页面url
    string click_url = 3;
    // 发布日期 YYYY-mm-dd
    string last_mtime_text = 4;
}

// 评论搜索插入项目
message SearchItem {
    //
    string url = 1;
    // 项目
    oneof item {
        // 商品
        GoodsSearchItem goods = 2;
        // 视频
        VideoSearchItem video = 3;
        // 专栏
        ArticleSearchItem article = 4;
    }
}

// 评论搜索插入项目响应游标
message SearchItemCursorReply {
    // 是否有下一页
    bool has_next = 1;
    // 下页
    int64 next = 2;
}

// 评论搜索插入项目请求游标
message SearchItemCursorReq {
    // 下一页
    int64 next = 1;
    // tab类型
    SearchItemType item_type = 2;
}

// 评论搜索item前置发布-响应
message SearchItemPreHookReply {
    // 输入框的文案
    string placeholder_text = 1;
    // 背景空白的时候的文案
    string background_text = 2;
    // 有权限的tab栏的顺序
    repeated SearchItemType ordered_type = 3;
}

// 评论搜索item前置发布-请求
message SearchItemPreHookReq {
    // 目标评论区id
    int64 oid = 1;
    // 目标评论区业务type
    int64 type = 2;
}

// 评论搜索插入项目-回复
message SearchItemReply {
    //
    SearchItemCursorReply cursor = 1;
    // 搜索的结果
    repeated SearchItem items = 2;
    // 附加信息
    SearchItemReplyExtraInfo extra = 3;
}

//
message SearchItemReplyExtraInfo {
    //
    string event_id = 1;
}

// 评论搜索插入项目-请求
message SearchItemReq {
    // 页面游标
    SearchItemCursorReq cursor = 1;
    // 目标评论区id
    int64 oid = 2;
    // 目标评论区业务type
    int64 type = 3;
    // 搜索关键词
    string keyword = 4;
}

//
enum SearchItemType {
    DEFAULT_ITEM_TYPE = 0; //
    GOODS             = 1; //
    VIDEO             = 2; //
    ARTICLE           = 3; //
}

//
enum SearchItemVideoSubType {
    UGC = 0; //
    PGC = 1; //
}

// 评论分享材料-请求
message ShareRepliesInfoReq {
    // 评论rpid列表
    repeated int64 rpids = 1;
    // 目标评论区id
    int64 oid = 2;
    // 目标评论区业务type
    int64 type = 3;
}

// 评论分享材料-响应
message ShareRepliesInfoResp {
    //
    message ShareExtra {
        //
        bool is_pgc = 1;
    }
    // 评论分享条目列表
    repeated ShareReplyInfo infos = 1;
    // 源内容标题
    string from_title = 2;
    // 源内容UP主
    string from_up = 3;
    // 源内容封面url
    string from_pic = 4;
    // 源内容页面url
    string url = 5;
    // logo url
    string slogan_pic = 6;
    // 标语
    string slogan_text = 7;
    //
    ShareReplyTopic topic = 8;
    //
    ShareExtra extra = 9;
}

// 评论分享条目信息
message ShareReplyInfo {
    // 用户信息
    Member member = 1;
    // 评论主体信息
    Content content = 2;
    // 分享标题(评论发布者昵称)
    string title = 3;
    // 分享副标题 "发表了评论"
    string sub_title = 4;
    // 荣誉信息文案 "获得了up主点赞"
    string achievement_text = 5;
    //
    string label_url = 6;
}

//
message ShareReplyTopic {
    //
    Topic topic = 1;
    //
    string origin_text = 2;
}

// 评论区控制字段
message SubjectControl {
    // 评论区筛选类型
    message FilterTag {
        // 类型名
        string name = 1;
        //
        string event_id = 2;
    }
    // UP主mid
    int64 up_mid = 1;
    // 自己是否为协管
    bool is_assist = 2;
    // 是否只读
    bool read_only = 3;
    // 是否有发起投票权限
    bool has_vote_access = 4;
    // 是否有发起抽奖权限
    bool has_lottery_access = 5;
    // 是否有被折叠评论
    bool has_folded_reply = 6;
    // 空评论区背景文案
    string bg_text = 7;
    // 是否被UP拉黑
    bool up_blocked = 8;
    // 是否有发起活动权限
    bool has_activity_access = 9;
    // 标题展示控制
    bool show_title = 10;
    // 是否显示UP主操作标志
    bool show_up_action = 11;
    // 是否显示评论区排序切换按钮
    int64 switcher_type = 12;
    // 是否禁止输入框
    bool input_disable = 13;
    // 根评论输入框背景文案
    string root_text = 14;
    // 子评论输入框背景文案
    string child_text = 15;
    // 评论总数
    int64 count = 16;
    // 评论区标题
    string title = 17;
    // 离开态输入框的文案
    string giveup_text = 18;
    // 是否允许笔记
    bool has_note_access = 19;
    //
    bool disable_jump_emote = 20;
    //
    string empty_background_text_plain = 21;
    //
    string empty_background_text_highlight = 22;
    //
    string empty_background_uri = 23;
    // 评论区筛选类型列表
    repeated FilterTag support_filter_tags = 24;
}

// 评论表情推荐列表-请求
message SuggestEmotesReq {
    // 目标评论区id
    int64 oid = 1;
    // 目标评论区业务type
    int64 type = 2;
}

// 评论表情推荐列表-响应
message SuggestEmotesResp {
    // 表情推荐列表
    repeated Emote emotes = 1;
}

// 话题项
message Topic {
    // 跳转url
    string link = 1;
    // 话题id
    int64 id = 2;
}

// UGC视频项目
message UGCVideoSearchItem {
    // 标题
    string title = 1;
    // UP主昵称
    string up_nickname = 2;
    // 时长(单位为秒)
    int64 duration = 3;
    // 封面
    string cover = 4;
}

// 精选评论
message UpSelection {
    // 待审评论数
    int64 pending_count = 1;
    // 忽略评论数
    int64 ignore_count = 2;
}

// 超链项
message Url {
    // 扩展字段
    message Extra {
        //
        int64 goods_item_id = 1;
        //
        string goods_prefetched_cache = 2;
        //
        int32 goods_show_type = 3;
        // 热词搜索
        bool is_word_search = 4;
        //
        int64 goods_cm_control = 5;
    }
    // 标题
    string title = 1;
    //
    int64 state = 2;
    // 图标url
    string prefix_icon = 3;
    // 客户端内跳转uri
    string app_url_schema = 4;
    //
    string app_name = 5;
    //
    string app_package_name = 6;
    // 点击上报数据
    string click_report = 7;
    // 是否半屏打开
    bool is_half_screen = 8;
    // 展现上报数据
    string exposure_report = 9;
    // 扩展字段
    Extra extra = 10;
    // 是否下划线
    bool underline = 11;
    //
    bool match_once = 12;
    // 网页url
    string pc_url = 13;
    //
    int32 icon_position = 14;
}

//
enum UserCallbackAction {
    Dismiss = 0; //
}

// 用户回调上报-响应
message UserCallbackReply {}

// 用户回调上报-请求
message UserCallbackReq {
    // 用户mid
    int64 mid = 1;
    //
    UserCallbackScene scene = 2;
    //
    UserCallbackAction action = 3;
    // 目标评论区id
    int64 oid = 4;
    // 目标评论区业务type
    int64 type = 5;
}

//
enum UserCallbackScene {
    Insert = 0; //
}

// 视频项目
message VideoSearchItem {
    //
    SearchItemVideoSubType type = 1;
    //
    oneof video_item {
        // UGC视频
        UGCVideoSearchItem ugc = 2;
        // PGC视频
        PGCVideoSearchItem pgc = 3;
    }
}

// 投票信息
message Vote {
    // 投票id
    int64 id = 1;
    // 投票标题
    string title = 2;
    // 参与人数
    int64 count = 3;
}
