syntax = "proto3";

package bilibili.app.view.v1;

option java_multiple_files = true;

import "google/protobuf/any.proto";
import "bilibili/app/archive/middleware/v1/preload.proto";
import "bilibili/app/archive/v1/archive.proto";
import "bilibili/pagination/pagination.proto";
import "bilibili/app/viewunite/common.proto";

service View {
  // 视频页详情页
  rpc View (ViewReq) returns (ViewReply);
  //
  rpc ViewTag(ViewTagReq) returns (ViewTagReply);
  //
  rpc ViewMaterial(ViewMaterialReq) returns (ViewMaterialReply);
  // 视频播放过程中的数据
  rpc ViewProgress (ViewProgressReq) returns (ViewProgressReply);
  // 短视频下载
  rpc ShortFormVideoDownload (ShortFormVideoDownloadReq) returns (ShortFormVideoDownloadReply);
  // 点击播放器卡片事件
  rpc ClickPlayerCard (ClickPlayerCardReq) returns (NoReply);
  // 点击大型活动页预约
  rpc ClickActivitySeason (ClickActivitySeasonReq) returns (NoReply);
  // 合集详情页
  rpc Season (SeasonReq) returns (SeasonReply);
  // 播放器卡片曝光
  rpc ExposePlayerCard (ExposePlayerCardReq) returns (NoReply);
  // 点击签订契约
  rpc AddContract (AddContractReq) returns (NoReply);
  // 资源包
  rpc ChronosPkg(ChronosPkgReq) returns (Chronos);
  //
  rpc CacheView(CacheViewReq) returns (CacheViewReply);
  //
  rpc ContinuousPlay(ContinuousPlayReq) returns (ContinuousPlayReply);
  // 播放页推荐IFS
  rpc RelatesFeed(RelatesFeedReq) returns (RelatesFeedReply);
  //
  rpc PremiereArchive(PremiereArchiveReq) returns (PremiereArchiveReply);
  //
  rpc Reserve(ReserveReq) returns (ReserveReply);
  //
  rpc PlayerRelates(PlayerRelatesReq) returns (PlayerRelatesReply);
  //
  rpc SeasonActivityRecord(SeasonActivityRecordReq) returns (SeasonActivityRecordReply);
  //
  rpc SeasonWidgetExpose(SeasonWidgetExposeReq) returns (SeasonWidgetExposeReply);
  //
  rpc GetArcsPlayer(GetArcsPlayerReq) returns (GetArcsPlayerReply);
}

// 活动页资源包
message ActivityResource {
  // mod资源池名称
  string mod_pool_name = 1;
  // mod资源名称
  string mod_resource_name = 2;
  // 背景色
  string bg_color = 3;
  // 选中背景色
  string selected_bg_color = 4;
  // 文字颜色
  string text_color = 5;
  // 浅字色
  string light_text_color = 6;
  // 深字色
  string dark_text_color = 7;
  // 分割线色
  string divider_color = 8;
}

// 大型活动合集
message ActivitySeason {
  // 稿件信息
  bilibili.app.archive.v1.Arc arc = 1;
  // 分P信息
  repeated ViewPage pages = 2;
  //("OnwerExt"为源码中拼写错误)
  OnwerExt owner_ext = 3;
  // 稿件用户操作状态
  ReqUser req_user = 4;
  // 充电排行
  ElecRank elec_rank = 5;
  // 历史观看进度
  History history = 6;
  // 稿件bvid
  string bvid = 7;
  // 获得荣誉信息
  Honor honor = 8;
  // 联合投稿成员列表
  repeated Staff staff = 9;
  // UGC视频合集信息
  UgcSeason ugc_season = 10;
  // 播放页定制tab
  Tab tab = 11;
  // 排行榜
  Rank rank = 12;
  // 预约模块
  Order order = 13;
  // 是否支持点踩
  bool support_dislike = 14;
  // 相关推荐(运营配置+AI推荐)
  OperationRelate operation_relate = 15;
  // 活动页资源包
  ActivityResource activity_resource = 16;
  // 短链接
  string short_link = 17;
  // 标签
  Label label = 18;
  // 不感兴趣原因
  Dislike dislike = 19;
  // 播放图标动画配置档
  PlayerIcon player_icon = 20;
  // 分享副标题(已观看xxx次)
  string share_subtitle = 21;
  // 广告配置
  CMConfig cm_config = 22;
  // 免流面板定制
  TFPanelCustomized tf_panel_customized = 23;
  // 争议信息
  string argue_msg = 24;
  // 错误码
  // DEFAULT:正常 CODE404:视频被UP主删除
  ECode ecode = 25;
  // 404页信息
  CustomConfig custom_config = 26;
  // 评论样式
  string badge_url = 27;
  // 稿件简介v2
  repeated DescV2 desc_v2 = 28;
  //
  Config config = 29;
  //
  Online online = 30;
  //
  ArcExtra arc_extra = 31;
  //
  ReplyStyle reply_preface = 32;
}

// 点击签订契约-请求
message AddContractReq {
  // 稿件avid
  int64 aid = 1;
  // UP主mid
  int64 up_mid = 2;
  // 当前页面spm
  string spmid = 3;
}

//
message AdInfo {
  //
  int64 creative_id = 1;
  //
  int64 creative_type = 2;
  //
  CreativeContent creative_content = 3;
  //
  string ad_cb = 4;
  //
  int32 card_type = 5;
  //
  bytes extra = 6;
}

//
message ArcExtra {
  //
  string arc_pub_location = 1;
}

//
message ArcsPlayer {
  //
  int64 aid = 1;
  //
  map<int64, string> player_info = 2;
}

//
message Asset {
  //
  int32 paid = 1;
  //
  int64 price = 2;
  //
  AssetMsg msg = 3;
  //
  AssetMsg preview_msg = 4;
}

//
message AssetMsg {
  //
  string desc1 = 1;
  //
  string desc2 = 2;
}

// 关注按钮卡片
message Attention {
  // 开始时间
  int32 start_time = 1;
  // 结束时间
  int32 end_time = 2;
  // 位置x坐标
  double pos_x = 3;
  // 位置y坐标
  double pos_y = 4;
}

// 音频稿件信息
message Audio {
  // 音频标题
  string title = 1;
  // 音频封面url
  string cover_url = 2;
  // 音频auid
  int64 song_id = 3;
  // 音频播放量
  int64 play_count = 4;
  // 音频评论数
  int64 reply_count = 5;
  // 音频作者UID
  int64 upper_id = 6;
  // 进入按钮文案
  string entrance = 7;
  //
  int64 song_attr = 8;
}

//
message BadgeStyle {
  //
  string text = 1;
  //
  string text_color = 2;
  //
  string text_color_night = 3;
  //
  string bg_color = 4;
  //
  string bg_color_night = 5;
  //
  string border_color = 6;
  //
  string border_color_night = 7;
  //
  int32 bg_style = 8;
}

// 视频引用的bgm音频
message Bgm {
  // 音频auid
  int64 sid = 1;
  // 音频作者mid
  int64 mid = 2;
  // 音频标题
  string title = 3;
  // 音频作者昵称
  string author = 4;
  // bgm页面url
  string jumpUrl = 5;
  // 音频封面url
  string cover = 6;
}

// 收藏合集参数
message BizFavSeasonParam {
  // 合集id
  int64 season_id = 1;
}

//
message BizFollowVideoParam {
  //
  int64 season_id = 1;
}

//
message BizJumpLinkParam {
  // 链接
  string url = 1;
}

// 预约活动参数
message BizReserveActivityParam {
  // 活动id
  int64 activity_id = 1;
  // 场景
  string from = 2;
  // 类型
  string type = 3;
  // 资源id
  int64 oid = 4;
  //
  int64 reserve_id = 5;
}

//
message BizReserveGameParam {
  // 游戏id
  int64 game_id = 1;
}

// 业务类型
enum BizType {
  BizTypeNone = 0; //
  BizTypeFollowVideo = 1; // 追番追剧
  BizTypeReserveActivity = 2; // 预约活动
  BizTypeJumpLink = 3; // 跳转链接
  BizTypeFavSeason = 4; // 收藏合集
  BizTypeReserveGame = 5; // 预约游戏
}

//
message Button {
  // 按钮文案
  string title = 1;
  // 跳转uri
  string uri = 2;
  //
  string icon = 3;
}

//
message ButtonStyle {
  //
  string text = 1;
  //
  string text_color = 2;
  //
  string text_color_night = 3;
  //
  string bg_color = 4;
  //
  string bg_color_night = 5;
  //
  string jump_link = 6;
}

//
message BuzzwordConfig {
  //
  string name = 1;
  //
  string schema = 2;
  //
  int32 source = 3;
  //
  int64 start = 4;
  //
  int64 end = 5;
  //
  bool follow_control = 6;
  //
  int64 id = 7;
  //
  int64 buzzword_id = 8;
  //
  int32 schema_type = 9;
  //
  string picture = 10;
}

//
message CacheViewReply {
  //
  bilibili.app.archive.v1.Arc arc = 1;
  //
  repeated ViewPage pages = 2;
  //
  OnwerExt owner_ext = 3;
  //
  ReqUser req_user = 4;
  //
  Season season = 5;
  //
  ElecRank elec_rank = 6;
  //
  History history = 7;
  //
  Dislike dislike = 8;
  //
  PlayerIcon player_icon = 9;
  //
  string bvid = 10;
  //
  string short_link = 11;
  //
  string share_subtitle = 12;
  //
  TFPanelCustomized tf_panel_customized = 13;
  //
  Online online = 14;
}

//
message CacheViewReq {
  //
  int64 aid = 1;
  //
  string bvid = 2;
  //
  string from = 3;
  //
  string trackid = 4;
  //
  string ad_extra = 5;
  //
  string spmid = 6;
  //
  string from_spmid = 7;
}

//
enum Category {
  CategoryUnknown = 0; //
  CategorySeason = 1; //
}

// Chronos灰度管理
message Chronos {
  // 资源包md5
  string md5 = 1;
  // 资源包
  string file = 2;
  //
  string sign = 3;
}

//
message ChronosPkgReq {
  //
  string service_key = 1;
  //
  string engine_version = 2;
  //
  string message_protocol = 3;
}

// 点击大型活动页预约-请求
message ClickActivitySeasonReq {
  // 预约类型
  BizType order_type = 1;
  // 当前页面spm
  string spmid = 2;
  // 业务参数
  oneof order_param {
    // 预约活动参数
    BizReserveActivityParam reserve = 3;
    // 收藏合集参数
    BizFavSeasonParam fav_season = 4;
  }
  // 操作
  // 0:操作 1:取消操作
  int64 action = 5;
}

// 点击播放器卡片-响应
message ClickPlayerCardReply {
  //
  string message = 1;
}

// 点击播放器卡片-请求
message ClickPlayerCardReq {
  // 卡片id
  int64 id = 1;
  // 稿件avid
  int64 aid = 2;
  // 视频cid
  int64 cid = 3;
  //操作
  //0:操作 1:取消操作
  int64 action = 4;
  // 当前页面spm
  string spmid = 5;
}

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

// 广告配置
message CMConfig {
  // 广告配置数据(需要二次解包)
  google.protobuf.Any ads_control = 1;
}

//
message CmIpad {
  //
  CM cm = 1;
  //
  bilibili.app.archive.v1.Author author = 2;
  //
  bilibili.app.archive.v1.Stat stat = 3;
  //
  int64 duration = 4;
  //
  int64 aid = 5;
}

//
message CoinCustom {
  //
  string toast = 1;
}

// 互动弹幕条目信息
message CommandDm {
  // 弹幕id
  int64 id = 1;
  // 对象视频cid
  int64 oid = 2;
  // 发送者mid
  int64 mid = 3;
  // 互动弹幕指令
  string command = 4;
  // 互动弹幕正文
  string content = 5;
  // 出现时间
  int32 progress = 6;
  // 创建时间
  string ctime = 7;
  // 发布时间
  string mtime = 8;
  // 扩展json数据
  string extra = 9;
  // 弹幕id str类型
  string id_str = 10;
}

//
message Config {
  // 下方推荐项标题
  string relates_title = 1;
  //
  int32 relates_style = 2;
  //
  int32 relate_gif_exp = 3;
  //
  int32 end_page_half = 4;
  //
  int32 end_page_full = 5;
  // 退出是否自动小窗
  bool auto_swindow = 6;
  //
  bool popup_info = 7;
  //
  string abtest_small_window = 8;
  //
  int32 rec_three_point_style = 9;
  //
  bool is_absolute_time = 10;
  //
  bool new_swindow = 11;
  //
  bool relates_biserial = 12;
  //
  ListenerConfig listener_conf = 13;
  //
  string relates_feed_style = 14;
  //
  bool relates_feed_popup = 15;
  //
  bool relates_has_next = 16;
  //
  int32 local_play = 17;
  //
  bool play_story = 18;
  //
  bool arc_play_story = 19;
  //
  string story_icon = 20;
  //
  bool landscape_story = 21;
  //
  bool arc_landscape_story = 22;
  //
  string landscape_icon = 23;
  //
  bool show_listen_button = 24;
}

//
message ContinuousPlayReply {
  //
  repeated Relate relates = 1;
}

//
message ContinuousPlayReq {
  //
  int64 aid = 1;
  //
  string from = 2;
  //
  string trackid = 3;
  //
  string spmid = 4;
  //
  string from_spmid = 5;
  //
  int32 autoplay = 6;
  //
  bilibili.app.archive.middleware.v1.PlayerArgs player_args = 7;
  //
  int64 device_type = 8;
  //
  string session_id = 9;
  //
  int64 display_id = 10;
}

// 契约卡
message ContractCard {
  // 需要触发的播放进度百分比
  float display_progress = 1;
  // 触发位置的前后误差(单位ms)
  int64 display_accuracy = 2;
  // 展示持续时间(单位ms)
  int64 display_duration = 3;
  // 弹出模式
  // 0: 原有模式 1: 半屏弹出 2: 全屏、半屏均弹出
  int32 show_mode = 4;
  // 提示页面
  // 0: 原有页面 1: 6.23版本新页面
  int32 page_type = 5;
  // UP主信息
  UpperInfos upper = 6;
  //
  int32 is_follow_display = 7;
  //
  ContractText text = 8;
  //
  int64 follow_display_end_duration = 9;
  //
  int32 is_play_display = 10;
  //
  int32 is_interact_display = 11;
  //
  bool play_display_switch = 12;
}

//
message ContractText {
  //
  string title = 1;
  //
  string subtitle = 2;
  //
  string inline_title = 3;
}

//
message CreativeContent {
  //
  string title = 1;
  //
  string description = 2;
  //
  string button_title = 3;
  //
  int64 video_id = 4;
  //
  string username = 5;
  //
  string image_url = 6;
  //
  string image_md5 = 7;
  //
  string log_url = 8;
  //
  string log_md5 = 9;
  //
  string url = 10;
  //
  string click_url = 11;
  //
  string show_url = 12;
}

// 404页信息
message CustomConfig {
  // 重定向页面url
  string redirect_url = 1;
}

// 枚举-文本类型
enum DescType {
  DescTypeUnknown = 0; // 占位
  DescTypeText = 1; // 文本
  DescTypeAt = 2; // @
}

// 特殊稿件简介
message DescV2 {
  // 文本内容
  string text = 1;
  // 文本类型
  DescType type = 2;
  // 点击跳转链接
  string uri = 3;
  // 资源ID
  int64 rid = 4;
}

// 不喜欢原因
message Dislike {
  // 标题
  string title = 1;
  //
  string subtitle = 2;
  // 原因项列表
  repeated DislikeReasons reasons = 3;
}

// 不喜欢原因项
message DislikeReasons {
  // 类型
  // 1:全部类型 3:TAG 4:UP主
  int64 id = 1;
  // 相关UP主mid
  int64 mid = 2;
  // 相关分区tid
  int32 rid = 3;
  // 相关TAG id
  int64 tag_id = 4;
  // 相关名称
  string name = 5;
}

// 分P弹幕信息
message DM {
  // 分P是否关闭弹幕
  // 0:正常 1:关闭
  bool closed = 1;
  //
  bool real_name = 2;
  // 分P弹幕总数
  int64 count = 3;
}

// 错误代码
enum ECode {
  DEFAULT = 0; // 正常
  CODE404 = 1; // 稿件被UP主删除
}

// 充电排行信息
message ElecRank {
  // 充电排行列表
  repeated ElecRankItem list = 1;
  // 充电用户数
  int64 count = 2;
  //
  string text = 3;
}

// 充电用户信息
message ElecRankItem {
  // 用户头像url
  string avatar = 1;
  // 用户昵称
  string nickname = 2;
  // 充电留言
  string message = 3;
  // 用户mid
  int64 mid = 4;
}

// 视频合集单话信息
message Episode {
  // 合集单话id
  int64 id = 1;
  // 稿件avid
  int64 aid = 2;
  // 视频1P cid
  int64 cid = 3;
  // 稿件标题
  string title = 4;
  // 稿件封面url
  string cover = 5;
  // 投稿时间显示文案
  string coverRightText = 6;
  // 视频分P信息
  bilibili.app.archive.v1.Page page = 7;
  // 视频状态数
  bilibili.app.archive.v1.Stat stat = 8;
  // 稿件bvid
  string bvid = 9;
  // 稿件UP主信息
  bilibili.app.archive.v1.Author author = 10;
  //
  string author_desc = 11;
  //
  BadgeStyle badge_style = 12;
  //
  bool need_pay = 13;
  //
  bool episode_pay = 14;
  //
  bool free_watch = 15;
  //
  string first_frame = 16;
  //
  ArchiveStat stat_v2 = 17;
  //
  repeated bilibili.app.archive.v1.Page pages = 18;
}

//
message ArchiveStat {
  //
  bilibili.app.viewunite.common.StatInfo view_vt = 11;
}

// 播放器卡片曝光-请求
message ExposePlayerCardReq {
  // 卡片类型
  PlayerCardType card_type = 1;
  // 稿件avid
  int64 aid = 2;
  // 视频cid
  int64 cid = 3;
  // 当前页面spm
  string spmid = 4;
}

//
message FeedViewItem {
  //
  ViewReply view = 1;
  //
  string goto = 2;
  //
  string uri = 3;
  //
  string track_id = 4;
}

//
message FeedViewReply {
  //
  repeated FeedViewItem list = 1;
  //
  bool has_next = 2;
}

//
message FeedViewReq {
  //
  int64 aid = 1;
  //
  string bvid = 2;
  //
  string from = 3;
  //
  string spmid = 4;
  //
  string from_spmid = 5;
  //
  bilibili.app.archive.middleware.v1.PlayerArgs player_args = 6;
  //
  int64 display_id = 7;
  //
  string session_id = 8;
  //
  string page_version = 9;
  //
  string from_track_id = 10;
}

//
message GetArcsPlayerReply {
  //
  repeated ArcsPlayer arcs_player = 1;
}

//
message GetArcsPlayerReq {
  //
  repeated PlayAv play_avs = 1;
  //
  bilibili.app.archive.middleware.v1.PlayerArgs player_args = 2;
}

//
message GoodsInfo {
  //
  string goods_id = 1;
  //
  int32 category = 2;
  //
  int64 goods_price = 3;
  //
  PayState pay_state = 4;
  //
  string goods_name = 5;
  //
  string price_fmt = 6;
}

// 稿件观看进度
message History {
  // 播放进度分P cid
  int64 cid = 1;
  // 播放进度时间
  // 0:未观看 -1:已看完 正整数:播放时间进度
  int64 progress = 2;
}

// 稿件获得荣誉信息
message Honor {
  // 荣誉栏图标url
  string icon = 1;
  // 荣誉栏图标url 夜间模式
  string icon_night = 2;
  // 荣誉文案
  string text = 3;
  // 荣誉副文案
  string text_extra = 4;
  // 标题颜色
  string text_color = 5;
  // 标题颜色 夜间模式
  string text_color_night = 6;
  // 背景颜色
  string bg_color = 7;
  // 背景颜色 夜间模式
  string bg_color_night = 8;
  // 跳转uri
  string url = 9;
  // 跳转角标文案
  string url_text = 10;
}

//
message IconData {
  //
  string meta_json = 1;
  //
  string sprits_img = 2;
}

//
message Interaction {
  //
  Node history_node = 1;
  //
  int64 graph_version = 2;
  //
  string msg = 3;
  //
  string evaluation = 4;
  //
  int64 mark = 5;
}

//
message Label {
  //
  int32 type = 1;
  //
  string uri = 2;
  //
  string icon = 3;
  //
  string icon_night = 4;
  //
  int64 icon_width = 5;
  //
  int64 icon_height = 6;
  //
  string lottie = 7;
  //
  string lottie_night = 8;
}

//
message LikeAnimation {
  //
  string like_icon = 1;
  //
  string liked_icon = 2;
  //
  string like_animation = 3;
}

//
message LikeCustom {
  //
  bool like_switch = 1;
  //
  int64 full_to_half_progress = 2;
  //
  int64 non_full_progress = 3;
  //
  int64 update_count = 4;
}

//
message ListenerConfig {
  //
  int64 jump_style = 1;
  //
  ListenerGuideBar guide_bar = 2;
}

//
message ListenerGuideBar {
  //
  int64 show_strategy = 1;
  //
  string icon = 2;
  //
  string text = 3;
  //
  string btn_text = 4;
  //
  int64 show_time = 5;
  //
  int64 background_time = 6;
}

// 直播信息
message Live {
  // 主播UID
  int64 mid = 1;
  // 直播间id
  int64 roomid = 2;
  // 直播间url
  string uri = 3;
  //
  string endpage_uri = 4;
}

// 直播预约信息
message LiveOrderInfo {
  // 预约id
  int64 sid = 1;
  // 预约条文案
  string text = 2;
  // 直播开始时间
  int64 live_plan_start_time = 3;
  // 是否预约
  bool is_follow = 4;
}

//
message MaterialLeft {
  //
  string icon = 1;
  //
  string text = 2;
  //
  string url = 3;
  //
  string left_type = 4;
  //
  string param = 5;
  //
  string operational_type = 6;
  //
  string static_icon = 7;
}

//
message MaterialRes {
  //
  int64 id = 1;
  //
  string icon = 2;
  //
  string url = 3;
  //
  MaterialSource type = 4;
  //
  string name = 5;
  //
  string bg_color = 6;
  //
  string bg_pic = 7;
  //
  int32 jump_type = 8;
}

//
enum MaterialSource {
  Default = 0; //
  BiJian = 1; // 必剪
}

//
message Node {
  //
  int64 node_id = 1;
  //
  string title = 2;
  //
  int64 cid = 3;
}

// 空回复
message NoReply {}

//
message Notice {
  //
  string title = 1;
  //
  string desc = 2;
}

// 认证信息
message OfficialVerify {
  // 认证类型
  // 0:个人认证 1:官方认证
  int32 type = 1;
  //认证名称
  string desc = 2;
}

//
message Online {
  //
  bool online_show = 1;
  //
  string player_online_logo = 2;
}

// UP主扩展信息 ("OnwerExt"为源码中拼写错误)
message OnwerExt {
  // 认证信息
  OfficialVerify official_verify = 1;
  // 直播信息
  Live live = 2;
  // 会员信息
  Vip vip = 3;
  //
  repeated int64 assists = 4;
  // 粉丝数
  int64 fans = 5;
  // 总投稿数
  string arc_count = 6;
}

// 老运营卡片
message OperationCard {
  // 开始时间(单位为秒)
  int32 start_time = 1;
  // 结束时间(单位为秒)
  int32 end_time = 2;
  // 图标
  string icon = 3;
  // 标题
  string title = 4;
  // 按钮文案
  string button_text = 5;
  // 跳转链接
  string url = 6;
  // 内容描述
  string content = 7;
}

// 内嵌操作按钮卡片
message OperationCardNew {
  // 卡片id
  int64 id = 1;
  // 开始时间
  int32 from = 2;
  // 结束时间
  int32 to = 3;
  // 用户操作态
  // true已操作 false未操作
  bool status = 4;
  // 卡片类型
  OperationCardType card_type = 5;
  // 卡片渲染
  oneof render {
    // 标准卡
    StandardCard standard = 6;
    // 老运营卡片(原B剪跳转卡)
    OperationCard skip = 7;
  }
  //
  BizType biz_type = 8;
  //
  oneof param {
    // 追番追剧参数
    BizFollowVideoParam follow = 9;
    // 预约活动参数
    BizReserveActivityParam reserve = 10;
    // 跳转参数
    BizJumpLinkParam jump = 11;
    // 预约游戏参数
    BizReserveGameParam game = 12;
  }
}

// 卡片样式
enum OperationCardType {
  CardTypeNone = 0; //
  CardTypeStandard = 1; // 标准卡
  CardTypeSkip = 2; // 原跳转卡
}

//
message OperationCardV2 {
  //
  int64 id = 1;
  //
  int32 from = 2;
  //
  int32 to = 3;
  //
  bool status = 4;
  //
  int32 biz_type = 5;
  //
  OperationCardV2Content content = 6;
  //
  oneof param {
    //
    BizFollowVideoParam BizFollowVideoParam = 7;
    //
    BizReserveActivityParam BizReserveActivityParam = 8;
    //
    BizJumpLinkParam BizJumpLinkParam = 9;
    //
    BizReserveGameParam BizReserveGameParam = 10;
  }
}

//
message OperationCardV2Content {
  //
  string title = 1;
  //
  string subtitle = 2;
  //
  string icon = 3;
  //
  string button_title = 4;
  //
  string button_selected_title = 5;
  //
  bool show_selected = 6;
}

// 相关推荐(运营配置+AI推荐)
message OperationRelate {
  // 模块标题
  string title = 1;
  // 相关推荐模块内容
  repeated RelateItem relate_item = 2;
  // AI相关推荐
  repeated Relate ai_relate_item = 3;
}

// 预约模块
message Order {
  // 用户操作态
  bool status = 1;
  // 模块标题
  string title = 2;
  // 按钮文字 未操作
  string button_title = 3;
  // 按钮文字 已操作
  string button_selected_title = 4;
  // 合集播放数
  int64 season_stat_view = 5;
  // 合集弹幕数
  int64 season_stat_danmaku = 6;
  // 预约类型(点击时透传，直播开始前预约活动，直播开始后收藏合集)
  BizType order_type = 7;
  // 预约业务参数
  oneof order_param {
    // 预约活动参数
    BizReserveActivityParam reserve = 8;
    // 收藏合集参数
    BizFavSeasonParam fav_season = 9;
  }
  // 合集简介
  string intro = 10;
}

// 游戏礼包信息
message PackInfo {
  // 礼包标题
  string title = 1;
  // 礼包页uri
  string uri = 2;
}

//
enum PayState {
  PayStateUnknown = 0; //
  PayStateActive = 1; //
}

//
message PlayAv {
  //
  int64 aid = 1;
  //
  int64 cid = 2;
}

// 卡片类型
enum PlayerCardType {
  PlayerCardTypeNone_VALUE = 0; //
  PlayerCardTypeAttention_VALUE = 1; // 关注卡
  PlayerCardTypeOperation_VALUE = 2; // 运营卡
  PlayerCardTypeContract_VALUE = 3; // 契约卡
}

// 进度条动画配置
message PlayerIcon {
  // 拖动动画配置档url
  string url1 = 1;
  // 拖动动画配置档hash
  string hash1 = 2;
  // 松手动画配置档url
  string url2 = 3;
  // 松手动画配置档hash
  string hash2 = 4;
  //
  string drag_left_png = 5;
  //
  string middle_png = 6;
  //
  string drag_right_png = 7;
  //
  IconData drag_data = 8;
  //
  IconData nodrag_data = 9;
}

//
message PlayerRelatesReply {
  //
  repeated Relate list = 1;
}

//
message PlayerRelatesReq {
  //
  int64 aid = 1;
  //
  string bvid = 2;
  //
  string from = 3;
  //
  string spmid = 4;
  //
  string from_spmid = 5;
  //
  bilibili.app.archive.middleware.v1.PlayerArgs player_args = 6;
  //
  string session_id = 7;
  //
  string from_track_id = 8;
}

//
message PointMaterial {
  //
  string url = 1;
  //
  int32 material_source = 2;
}

//
message PowerIconStyle {
  //
  string icon_url = 1;
  //
  string icon_night_url = 2;
  //
  int64 icon_width = 3;
  //
  int64 icon_height = 4;
}

//
message Premiere {
  //
  PremiereState premiere_state = 1;
  //
  int64 start_time = 2;
  //
  int64 service_time = 3;
  //
  int64 room_id = 4;
}

//
message PremiereArchiveReply {
  //
  Premiere premiere = 1;
  //
  bool risk_status = 2;
  //
  string risk_reason = 3;
}

//
message PremiereArchiveReq {
  //
  int64 aid = 1;
}

//
message PremiereReserve {
  //
  int64 reserve_id = 1;
  //
  int64 count = 2;
  //
  bool is_follow = 3;
}

//
message PremiereResource {
  //
  Premiere premiere = 1;
  //
  PremiereReserve reserve = 2;
  //
  PremiereText text = 3;
}

//
enum PremiereState {
  premiere_none = 0; //
  premiere_before = 1; //
  premiere_in = 2; //
  premiere_after = 3; //
}

//
message PremiereText {
  //
  string title = 1;
  //
  string subtitle = 2;
  //
  string online_text = 3;
  //
  string online_icon = 4;
  //
  string online_icon_dark = 5;
  //
  string intro_title = 6;
  //
  string intro_icon = 7;
  //
  string guidance_pulldown = 8;
  //
  string guidance_entry = 9;
  //
  string intro_icon_night = 10;
}

//
message PullClientAction {
  //
  string type = 1;
  //
  bool pull_action = 2;
  //
  string params = 3;
}

// 排行榜
message Rank {
  // 排行榜icon
  string icon = 1;
  // 排行榜icon 夜间模式
  string icon_night = 2;
  // 排行榜文案
  string text = 3;
}

//
message RankInfo {
  //
  string icon_url_night = 1;
  //
  string icon_url_day = 2;
  //
  string bkg_night_color = 3;
  //
  string bkg_day_color = 4;
  //
  string font_night_color = 5;
  //
  string font_day_color = 6;
  //
  string rank_content = 7;
  //
  string rank_link = 8;
}

// 推荐理由样式
message ReasonStyle {
  //
  string text = 1;
  // 日间模式文字
  string text_color = 2;
  //
  string bg_color = 3;
  //
  string border_color = 4;
  // 夜间模式文字
  string text_color_night = 5;
  //
  string bg_color_night = 6;
  //
  string border_color_night = 7;
  // 1:填充 2:描边 3:填充 + 描边 4:背景不填充 + 背景不描边
  int32 bg_style = 8;
  //
  int32 selected = 9;
}

//
message RecDislike {
  //
  string title = 1;
  //
  string sub_title = 2;
  //
  string closed_sub_title = 3;
  //
  string paste_text = 4;
  //
  string closed_paste_text = 5;
  //
  repeated DislikeReasons dislike_reason = 6;
  //
  string toast = 7;
  //
  string closed_toast = 8;
}

//
message RecThreePoint {
  //
  RecDislike dislike = 1;
  //
  RecDislike feedback = 2;
  //
  bool watch_later = 3;
}

//
message RefreshPage {
  //
  int32 refreshable = 1;
  //
  int32 refresh_icon = 2;
  //
  string refresh_text = 3;
  //
  float refresh_show = 4;
}

// 相关推荐项
message Relate {
  //
  int64 aid = 1;
  // 封面url
  string pic = 2;
  // 标题
  string title = 3;
  // UP主信息
  bilibili.app.archive.v1.Author author = 4;
  // 稿件状态数
  bilibili.app.archive.v1.Stat stat = 5;
  // 时长
  int64 duration = 6;
  // 跳转类型
  // special:pgc视频 av:稿件视频 cm:广告 game:游戏
  string goto = 7;
  // 参数（如av号等）
  string param = 8;
  // 跳转uri
  string uri = 9;
  //
  string jump_url = 10;
  // 评分
  double rating = 11;
  //
  string reserve = 12;
  // 来源标识
  // operation:管理员添加
  string from = 13;
  // 备注
  string desc = 14;
  //
  string rcmd_reason = 15;
  // 标志文字
  string badge = 16;
  // 1P cid
  int64 cid = 17;
  //
  int32 season_type = 18;
  //
  int32 rating_count = 19;
  // 标签文案
  string tag_name = 20;
  // 游戏礼包信息
  PackInfo pack_info = 21;
  //
  Notice notice = 22;
  // 按钮信息
  Button button = 23;
  // spm追踪id
  string trackid = 24;
  // 游戏卡片新样式
  int32 new_card = 25;
  // 推荐理由样式
  ReasonStyle rcmd_reason_style = 26;
  //
  string cover_gif = 27;
  // 广告
  CM cm = 28;
  // 游戏卡字段
  // 0:下载 1:预约(跳过详情) 2:预约 3:测试 4:测试+预约 5:跳过详情页
  int64 reserve_status = 29;
  //
  string rcmd_reason_extra = 30;
  //
  RecThreePoint rec_three_point = 31;
  //
  string unique_id = 32;
  //
  int64 material_id = 33;
  //
  int64 from_source_type = 34;
  //
  string from_source_id = 35;
  //
  bilibili.app.archive.v1.Dimension dimension = 36;
  //
  string cover = 37;
  //
  ReasonStyle badge_style = 38;
  //
  PowerIconStyle power_icon_style = 39;
  //
  string reserve_status_text = 40;
  //
  string dislike_report_data = 41;
  //
  RankInfo rank_info_game = 42;
  //
  string first_frame = 43;
}

// 相关推荐内容
message RelateItem {
  // 跳链
  string url = 1;
  // 封面
  string cover = 2;
}

// 播放页推荐IFS-响应
message RelatesFeedReply {
  //
  repeated Relate list = 1;
  //
  bool has_next = 2;
  //
  bilibili.pagination.PaginationReply pagination = 3;
}

// 播放页推荐IFS-请求
message RelatesFeedReq {
  //
  int64 aid = 1;
  //
  string bvid = 2;
  //
  string from = 3;
  //
  string spmid = 4;
  //
  string from_spmid = 5;
  //
  bilibili.app.archive.middleware.v1.PlayerArgs player_args = 6;
  //
  int64 relates_page = 7;
  //
  string session_id = 8;
  //
  int32 autoplay = 9;
  //
  string from_track_id = 10;
  //
  string biz_extra = 11;
  //
  int64 device_type = 12;
  //
  string ad_extra = 13;
  //
  bilibili.pagination.Pagination pagination = 14;
  //
  int32 refresh_num = 15;
}

//
message RelateTab {
  //
  string id = 1;
  //
  string title = 2;
}

//
message ReplyStyle {
  //
  string badge_url = 1;
  //
  string badge_text = 2;
  //
  int64 badge_type = 3;
}

// 用户操作状态
message ReqUser {
  // 用户是否关注UP
  int32 attention = 1;
  // UP是否关注用户
  int32 guest_attention = 2;
  // 是否收藏
  int32 favorite = 3;
  // 是否点赞
  int32 like = 4;
  // 是否点踩
  int32 dislike = 5;
  // 是否投币
  int32 coin = 6;
  // 关注等级
  int32 attention_level = 7;
  // 是否收藏合集
  int32 fav_season = 8;
  //
  Button elec_plus_btn = 9;
}

//
message ReserveReply {
  //
  int64 reserve_id = 1;
}

//
message ReserveReq {
  //
  int64 reserve_id = 1;
  //
  int64 reserve_action = 2;
  //
  int64 up_id = 3;
}

//
message Restriction {
  //
  bool is_teenagers = 1;
  //
  bool is_lessons = 2;
  //
  bool is_review = 3;
  //
  bool disable_rcmd = 4;
}

// 剧集信息
message Season {
  //
  string allow_download = 1;
  // 剧集ssid
  int64 season_id = 2;
  // 是否重定向跳转
  int32 is_jump = 3;
  // 剧集标题
  string title = 4;
  // 剧集封面url
  string cover = 5;
  // 剧集是否完结
  int32 is_finish = 6;
  // 最新一话epid
  int64 newest_ep_id = 7;
  // 最新一话标题
  string newest_ep_index = 8;
  // 总集数
  int64 total_count = 9;
  // 更新星期日
  int32 weekday = 10;
  // 用户追番标志
  UserSeason user_season = 11;
  //
  SeasonPlayer player = 12;
  // 单集页面url
  string ogv_playurl = 13;
}

//
message SeasonActivityRecordReply {
  //
  UgcSeasonActivity activity = 1;
}

//
message SeasonActivityRecordReq {
  //
  int64 season_id = 1;
  //
  int64 activity_id = 2;
  //
  int32 action = 3;
  //
  int64 aid = 4;
  //
  int64 cid = 5;
  //
  int64 scene = 6;
  //
  string spmid = 7;
}

//
message SeasonPlayer {
  //
  int64 aid = 1;
  //
  string vid = 2;
  //
  int64 cid = 3;
  //
  string from = 4;
}

// 合集详情页-响应
message SeasonReply {
  // 合集信息
  UgcSeason season = 1;
}

// 合集详情页-请求
message SeasonReq {
  // 合集id
  int64 season_id = 1;
}

//
message SeasonShow {
  //
  string button_text = 1;
  //
  string join_text = 2;
  //
  string rule_text = 3;
  //
  string checkin_text = 4;
  //
  string checkin_prompt = 5;
}

//
enum SeasonType {
  Unknown = 0; //
  Base = 1; //
  Good = 2; //
}

//
message SeasonWidgetExposeReply {
  //
  int64 season_id = 1;
  //
  int64 activity_id = 2;
}

//
message SeasonWidgetExposeReq {
  //
  int64 mid = 1;
  //
  int32 type = 2;
  //
  int64 season_id = 3;
  //
  int64 activity_id = 4;
  //
  int64 aid = 5;
  //
  int64 cid = 6;
  //
  int64 scene = 7;
}

// 视频合集小节信息
message Section {
  // 小节id
  int64 id = 1;
  // 小节标题
  string title = 2;
  // 小节类型
  // 0:其他 1:正片
  int64 type = 3;
  // 单话列表
  repeated Episode episodes = 4;
}

// 短视频下载-响应
message ShortFormVideoDownloadReply {
  // 是否有下载分享按钮
  bool has_download_url = 1;
  // 下载url
  string download_url = 2;
  // 文件md5
  string md5 = 3;
  // 文件大小(单位为Byte)
  int64 size = 4;
  //
  string backup_download_url = 5;
}

// 短视频下载-请求
message ShortFormVideoDownloadReq {
  // 稿件avid
  int64 aid = 1;
  // 视频cid
  int64 cid = 2;
  // 用户mid
  int64 mid = 3;
  // 设备buvid
  string buvid = 4;
  // 移动端包类型
  string mobi_app = 5;
  // 移动端版本号
  int64 build = 6;
  // 运行设备
  string device = 7;
  // 平台
  string platform = 8;
  // 当前页面spm
  string spmid = 9;
  //
  Restriction restriction = 10;
  //
  string tf_isp = 11;
}

//
message SpecialCell {
  //
  string icon = 1;
  //
  string icon_night = 2;
  //
  string text = 3;
  //
  string text_color = 4;
  //
  string text_color_night = 5;
  //
  string jump_url = 6;
  //
  string cell_type = 7;
  //
  string cell_bgcolor = 8;
  //
  string cell_bgcolor_night = 9;
  //
  string param = 10;
  //
  string page_title = 11;
  //
  string jump_type = 12;
  //
  string end_icon = 13;
  //
  string end_icon_night = 14;
  //
  int64 notes_count = 15;
}

// 合作成员信息
message Staff {
  // 成员mid
  int64 mid = 1;
  // 成员角色
  string title = 2;
  // 成员头像url
  string face = 3;
  // 成员昵称
  string name = 4;
  // 成员官方信息
  OfficialVerify official_verify = 5;
  // 成员会员信息
  Vip vip = 6;
  // 是否关注该成员
  int32 attention = 7;
  //
  int32 label_style = 8;
}

// 标准卡
message StandardCard {
  // 卡片文案
  string title = 1;
  // 按钮文字 未操作
  string button_title = 2;
  // 按钮文字 已操作
  string button_selected_title = 3;
  // 已操作态是否显示
  bool show_selected = 4;
}

// 免流子面板定制化配置
message subTFPanel {
  // 右侧按钮素材
  string right_btn_img = 1;
  // 右侧按钮文案
  string right_btn_text = 2;
  // 右侧按钮字体颜色
  string right_btn_text_color = 3;
  // 右侧按钮跳转链接
  string right_btn_link = 4;
  // 中心主文案内容
  string main_label = 5;
  // 运营商
  string operator = 6;
}

// TAB
message Tab {
  // 背景图片
  string background = 1;
  // 跳转类型
  TabOtype otype = 2;
  // 类型id
  int64 oid = 3;
  // 跳转url
  string uri = 4;
  // 样式
  TabStyle style = 5;
  // 文字
  string text = 6;
  // 未选中态字色
  string text_color = 7;
  // 选中态字色
  string text_color_selected = 8;
  // 图片
  string pic = 9;
  // 后台配置自增
  int64 id = 10;
  //
  google.protobuf.Any ad_tab_info = 11;
}

// TAB跳转类型
enum TabOtype {
  UnknownOtype = 0; // 未知类型
  URL = 1; // url链接
  TopicNA = 2; // native话题活动
  CmURI = 3; // 广告url
}

// TAB样式
enum TabStyle {
  UnknownStyle = 0; // 未知样式
  Text = 1; // 文字样式
  Pic = 2; // 图片样式
}

// TAG信息
message Tag {
  // TAD id
  int64 id = 1;
  // TAG名
  string name = 2;
  //
  int64 likes = 3;
  //
  int64 hates = 4;
  //
  int32 liked = 5;
  //
  int32 hated = 6;
  // TAG页面uri
  string uri = 7;
  // TAG类型
  // common:普通 new:话题 act:活动
  string tag_type = 8;
}

// 免流面板定制
message TFPanelCustomized {
  // 右侧按钮素材
  string right_btn_img = 1;
  // 右侧按钮文案
  string right_btn_text = 2;
  // 右侧按钮字体颜色
  string right_btn_text_color = 3;
  // 右侧按钮跳转链接
  string right_btn_link = 4;
  // 中心主文案内容
  string main_label = 5;
  // 运营商(cm ct cu)
  string operator = 6;
  // 子面板定制化配置
  map<string, subTFPanel> sub_panel = 7;
}

// TAG图标信息
message TIcon {
  // TAG图标url
  string icon = 1;
}

// UGC视频合集信息
message UgcSeason {
  // 合集id
  int64 id = 1;
  // 合集标题
  string title = 2;
  // 合集封面url
  string cover = 3;
  // 合集简介
  string intro = 4;
  // 小节列表
  repeated Section sections = 5;
  // 合集状态数
  UgcSeasonStat stat = 6;
  // 标签字色
  string label_text = 7;
  // 标签背景色
  string label_text_color = 8;
  // 标签夜间字色
  string label_bg_color = 9;
  // 标签夜间背景色
  string label_text_night_color = 10;
  // 右侧描述文案
  string label_bg_night_color = 11;
  // 按钮文案
  string descRight = 12;
  // 分集总数
  int64 ep_count = 13;
  // 合集类型
  SeasonType season_type = 14;
  //
  bool show_continual_button = 15;
  //
  int64 ep_num = 16;
  //
  bool season_pay = 17;
  //
  GoodsInfo goods_info = 18;
  //
  ButtonStyle pay_button = 19;
  //
  string label_text_new = 20;
  //
  UgcSeasonActivity activity = 21;
  //
  repeated string season_ability = 22;
}

//
message UgcSeasonActivity {
  //
  int32 type = 1;
  //
  int64 oid = 2;
  //
  int64 activity_id = 3;
  //
  string title = 4;
  //
  string intro = 5;
  //
  int32 day_count = 6;
  //
  int32 user_count = 7;
  //
  int64 join_deadline = 8;
  //
  int64 activity_deadline = 9;
  //
  int32 checkin_view_time = 10;
  //
  bool new_activity = 11;
  //
  UserActivity user_activity = 12;
  //
  SeasonShow season_show = 13;
}

// ugc视频合集状态数
message UgcSeasonStat {
  // 合集id
  int64 season_id = 1;
  // 观看数
  int32 view = 2;
  // 弹幕数
  int32 danmaku = 3;
  // 评论数
  int32 reply = 4;
  // 收藏数
  int32 fav = 5;
  // 投币数
  int32 coin = 6;
  // 分享数
  int32 share = 7;
  // 当前排名
  int32 now_rank = 8;
  // 历史最高排名
  int32 his_rank = 9;
  // 总计点赞
  int32 like = 10;
}

//
message UpAct {
  //
  int64 sid = 1;
  //
  int64 mid = 2;
  //
  string title = 3;
  //
  string statement = 4;
  //
  string image = 5;
  //
  string url = 6;
  //
  string button = 7;
}

//
message UpLikeImg {
  //
  string pre_img = 1;
  //
  string suc_img = 2;
  //
  string content = 3;
  //
  int64 type = 4;
}

// UP主信息
message UpperInfos {
  // 粉丝数
  int64 fans_count = 1;
  // 近半年投稿数
  int64 arc_count_last_half_year = 2;
  // 成为UP主时间
  int64 first_up_dates = 3;
  // 总播放量
  int64 total_play_count = 4;
}

//
message UserActivity {
  //
  int32 user_state = 1;
  //
  int64 last_checkin_date = 2;
  //
  int32 checkin_today = 3;
  //
  int32 user_day_count = 4;
  //
  int32 user_view_time = 5;
  //
  string portrait = 6;
}

// 用户装扮信息
message UserGarb {
  // 点赞动画url
  string url_image_ani_cut = 1;
  //
  string like_toast = 2;
}

// 用户追番标志
message UserSeason {
  // 关注状态
  // 0:未关注 1:已关注
  string attention = 1;
}

// 视频引导信息
message VideoGuide {
  // 关注按钮卡片
  repeated Attention attention = 1;
  // 互动弹幕
  repeated CommandDm commandDms = 2;
  // 运营卡片
  repeated OperationCard operation_card = 3;
  // 运营卡片新版
  repeated OperationCardNew operation_card_new = 4;
  // 契约卡
  ContractCard contract_card = 5;
  //
  repeated OperationCardV2 cards_second = 6;
}

//
message VideoPoint {
  //
  int32 type = 1;
  //
  int64 from = 2;
  //
  int64 to = 3;
  //
  string content = 4;
  //
  string cover = 5;
  //
  string logo_url = 6;
}

//
message VideoShot {
  //
  string pv_data = 1;
  //
  int32 img_x_len = 2;
  //
  int32 img_y_len = 3;
  //
  int32 img_x_size = 4;
  //
  int32 img_y_size = 5;
  //
  repeated string image = 6;
}

//
message ViewMaterial {
  //
  int64 oid = 1;
  //
  int64 mid = 2;
  //
  string title = 3;
  //
  string author = 4;
  //
  string jump_url = 5;
}

//
message ViewMaterialReply {
  //
  repeated MaterialRes material_res = 1;
  //
  MaterialLeft material_left = 2;
}

//
message ViewMaterialReq {
  //
  int64 aid = 1;
  //
  string bvid = 2;
  //
  int64 cid = 3;
}

// 分P信息
message ViewPage {
  // 分P基本信息
  bilibili.app.archive.v1.Page page = 1;
  // 分P对应的音频稿件
  Audio audio = 2;
  // 分P弹幕信息
  DM dm = 3;
  // 下载文案
  string download_title = 4;
  // 分P完整标题(视频标题+分P标题)
  string download_subtitle = 5;
}

// 稿件播放中数据-回复
message ViewProgressReply {
  // 视频引导信息
  VideoGuide video_guide = 1;
  // Chronos灰度管理
  Chronos chronos = 2;
  // 视频快照
  VideoShot arc_shot = 3;
  //
  repeated VideoPoint points = 4;
  //
  PointMaterial point_material = 5;
  //
  bool point_permanent = 6;
  // 名词解释列表
  repeated BuzzwordConfig buzzword_periods = 7;
}

// 稿件播放中数据-请求
message ViewProgressReq {
  // 稿件avid
  int64 aid = 1;
  // 视频cid
  int64 cid = 2;
  // UP主mid
  int64 up_mid = 3;
  //
  string engine_version = 4;
  //
  string message_protocol = 5;
  //
  string service_key = 6;
}

// 视频页信息-响应
message ViewReply {
  // 稿件信息
  bilibili.app.archive.v1.Arc arc = 1;
  // 分P信息
  repeated ViewPage pages = 2;
  // UP主扩展信息 ("OnwerExt"为源码中拼写错误)
  OnwerExt owner_ext = 3;
  // 稿件用户操作状态
  ReqUser req_user = 4;
  // 稿件TAG
  repeated Tag tag = 5;
  // TAG对应的图标
  map<string, TIcon> t_icon = 6;
  // 稿件映射的PGC剧集信息
  Season season = 7;
  // 充电排行
  ElecRank elec_rank = 8;
  // 历史观看进度
  History history = 9;
  // 视频相关推荐列表
  repeated Relate relates = 10;
  // 不感兴趣原因
  Dislike dislike = 11;
  // 播放图标动画配置档
  PlayerIcon player_icon = 12;
  //
  string vip_active = 13;
  // 稿件bvid
  string bvid = 14;
  // 获得荣誉信息
  Honor honor = 15;
  // 相关推荐顶部tab
  repeated RelateTab relate_tab = 16;
  // 参与的活动页面url
  string activity_url = 17;
  // 稿件引用bgm列表
  repeated Bgm bgm = 18;
  // 联合投稿成员列表
  repeated Staff staff = 19;
  // 争议信息
  string argue_msg = 20;
  // 短链接
  string short_link = 21;
  // 播放实验
  // 1:相关推荐自动播放
  int32 play_param = 22;
  // 标签
  Label label = 23;
  // UGC视频合集信息
  UgcSeason ugc_season = 24;
  // 配置信息
  Config config = 25;
  // 分享副标题(已观看xxx次)
  string share_subtitle = 26;
  // 互动视频信息
  Interaction interaction = 27;
  // 错误码
  // DEFAULT:正常 CODE404:视频被UP主删除
  ECode ecode = 28;
  // 404页信息
  CustomConfig custom_config = 29;
  // 广告
  repeated CM cms = 30;
  // 广告配置
  CMConfig cm_config = 31;
  // 播放页定制tab
  Tab tab = 32;
  // 排行榜
  Rank rank = 33;
  // 免流面板定制
  TFPanelCustomized tf_panel_customized = 34;
  // UP主发起活动
  UpAct up_act = 35;
  // 用户装扮
  UserGarb user_garb = 36;
  // 大型活动合集
  ActivitySeason activity_season = 37;
  // 评论样式
  string badge_url = 38;
  // 直播预约信息
  LiveOrderInfo live_order_info = 39;
  // 稿件简介v2
  repeated DescV2 desc_v2 = 40;
  //
  CmIpad cm_ipad = 41;
  //
  repeated ViewMaterial sticker = 42;
  //
  UpLikeImg up_like_img = 43;
  //
  LikeCustom like_custom = 44;
  //
  repeated Tag desc_tag = 45;
  //
  SpecialCell special_cell = 46;
  //
  Online online = 47;
  //
  google.protobuf.Any cm_under_player = 48;
  //
  repeated ViewMaterial video_source = 49;
  //
  repeated SpecialCell special_cell_new = 50;
  //
  PremiereResource premiere = 51;
  //
  bool refresh_special_cell = 52;
  //
  MaterialLeft material_left = 53;
  //
  int64 notes_count = 54;
  //
  PullClientAction pull_action = 55;
  //
  ArcExtra arc_extra = 56;
  //
  bilibili.pagination.PaginationReply pagination = 57;
  //
  LikeAnimation like_animation = 58;
  //
  ReplyStyle reply_preface = 59;
  //
  RefreshPage refresh_page = 60;
  //
  CoinCustom coin_custom = 61;
}

// 视频页详情页-请求
message ViewReq {
  // 稿件avid(av/bv任选其一)
  int64 aid = 1;
  // 稿件bvid(av/bv任选其一)
  string bvid = 2;
  // 来源
  string from = 3;
  // AI trackid
  string trackid = 4;
  // 广告扩展数据
  string ad_extra = 5;
  // 清晰度(旧版)
  int32 qn = 6;
  // 流版本(旧版)
  int32 fnver = 7;
  // 流类型(旧版)
  int32 fnval = 8;
  // 是否强制使用域名(旧版)
  int32 force_host = 9;
  // 是否允许4K(旧版)
  int32 fourk = 10;
  // 当前页面spm
  string spmid = 11;
  // 上一页面spm
  string from_spmid = 12;
  //
  int32 autoplay = 13;
  // 视频秒开参数
  bilibili.app.archive.middleware.v1.PlayerArgs player_args = 14;
  //
  string page_version = 15;
  //
  string biz_extra = 16;
  //
  int64 device_type = 17;
  //
  int64 relates_page = 18;
  //
  string session_id = 19;
  //
  int32 in_feed_play = 20;
  //
  string play_mode = 21;
  //
  bilibili.pagination.Pagination pagination = 22;
  //
  int32 refresh = 23;
  //
  int32 refresh_num = 24;
}

//
message ViewTagReply {
  //
  repeated SpecialCell special_cell_new = 1;
  //
  MaterialLeft material_left = 2;
}

//
message ViewTagReq {
  //
  int64 aid = 1;
  //
  string bvid = 2;
  //
  int64 cid = 3;
  //
  string spmid = 4;
}

// 会员信息
message Vip {
  //会员类型
  int32 type = 1;
  //到期时间
  int64 due_date = 2;
  //
  string due_remark = 3;
  //
  int32 access_status = 4;
  //会员状态
  int32 vip_status = 5;
  //
  string vip_status_warn = 6;
  //
  int32 theme_type = 7;
  //
  VipLabel label = 8;
}

// 会员类型标签
message VipLabel {
  //
  string path = 1;
  //
  string text = 2;
  //
  string label_theme = 3;
}
