syntax = "proto3"; package bilibili.app.viewunite.common; import "bilibili/dagw/component/avatar/v1/avatar.proto"; import "bilibili/pagination/pagination.proto"; import "google/protobuf/any.proto"; // message Activity { // int32 id = 1; // string title = 2; // string link = 3; // string cover = 4; // int32 type = 5; // string ab = 6; // string show_name = 7; // string picurl = 8; // string picurl_selected = 9; // string h5_link = 10; // string jump_mode = 11; // repeated Item items = 12; } // message ActivityEntrance { // string activity_cover = 1; // string activity_title = 2; // string word_tag = 3; // string activity_subtitle = 4; // string activity_link = 5; // int32 activity_type = 6; // int32 reserve_id = 7; // int32 status = 8; // repeated User upper_list = 9; // map report = 10; } // message ActivityEntranceModule { // repeated ActivityEntrance activity_entrance = 1; } // message ActivityReserve { // string title = 1; // StatInfo vt = 2; // StatInfo danmaku = 3; // ReserveButton button = 4; } // message ActivityResource { // string mod_pool_name = 1; // string mod_resource_name = 2; } // message ActivityTab { // int32 id = 1; // string title = 2; // int32 type = 3; // string show_name = 4; // string picurl = 5; // string picurl_selected = 6; // string h5_link = 7; // string link = 8; // int32 link_type = 9; // int64 biz_key = 10; // string desc = 11; // string act_ext = 12; // map report = 13; } // message AggEpCard { // string title = 1; // string cover = 2; // string icon = 3; // int32 num = 4; // string jump_url = 5; } // message AggEps { // repeated AggEpCard agg_ep_cards = 1; // int32 place_index = 2; } // message AttentionRecommend {} // enum AttentionRelationStatus { // ARS_NONE = 0; // ARS_N0RELATION = 1; // ARS_FOLLOWHIM = 2; // ARS_FOLLOWME = 3; // ARS_BUDDY = 4; // ARS_SPECIAL = 5; // ARS_CANCELBLOCK = 6; } // message Audio { // map audio_info = 1; } // message AudioInfo { // string title = 1; // string cover_url = 2; // int64 song_id = 3; // int64 play_count = 4; // int64 reply_count = 5; // int64 upper_id = 6; // string entrance = 7; // int64 song_attr = 8; } // message BadgeInfo { // 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; // string img = 9; // int32 type = 10; } // message Banner { // string title = 1; // repeated RelateItem relate_item = 2; } // message BizFavParam { // int64 season_id = 1; } // message BizReserveActivityParam { // int64 activity_id = 1; // string from = 2; // string type = 3; // int64 oid = 4; // int64 reserve_id = 5; } // message Button { // string title = 1; // string left_strikethrough_text = 2; // string type = 3; // string link = 4; // BadgeInfo badge_info = 5; // string sub_title = 6; } // message CardBasicInfo { // string title = 1; // string desc = 2; // string cover = 3; // string uri = 4; // string track_id = 5; // string unique_id = 6; // int64 from_source_type = 7; // string from_source_id = 8; // int64 material_id = 9; // string cover_gif = 10; // Owner author = 11; // int64 id = 12; // string from = 13; // string from_spmid_suffix = 14; // string report_flow_data = 15; } // message CardStyle { // int32 id = 1; // string name = 2; } // message Celebrity { // int32 id = 1; // string name = 2; // string role = 3; // string avatar = 4; // string short_desc = 5; // string desc = 6; // string character_avatar = 7; // string link = 8; // int64 mid = 9; // int32 is_follow = 10; // string occupation_name = 11; // int32 occupation_type = 12; // int32 relate_attr = 13; // string small_avatar = 14; // map report = 15; } // message CharacterGroup { // string title = 1; // repeated Celebrity characters = 2; } // message Characters { // repeated CharacterGroup groups = 1; } // message CoinExtend { // string coin_app_zip_icon = 1; // string coin_app_icon_1 = 2; // string coin_app_icon_2 = 3; // string coin_app_icon_3 = 4; // string coin_app_icon_4 = 5; } // message CombinationEp { // int32 id = 1; // int32 section_id = 2; // string title = 3; // int32 can_ord_desc = 4; // string more = 5; // repeated int32 episode_ids = 6; // repeated ViewEpisode episodes = 7; // string split_text = 8; // Style module_style = 9; // repeated SerialSeason serial_season = 10; // SectionData section_data = 11; } // message Covenanter {} // message DeliveryData { // string title = 1; // Style module_style = 2; // string more = 3; // oneof data { // Activity activity = 4; // Characters characters = 5; // TheatreHotTopic theatre_hot_topic = 6; // AggEps agg_eps = 7; } // int32 id = 8; // map report = 9; } // message Desc { // string info = 1; // string title = 2; } enum DescType { // DescTypeUnknown = 0; // DescTypeText = 1; // DescTypeAt = 2; } // message DescV2 { // string text = 1; // int32 type = 2; // string uri = 3; // int64 rid = 4; } // message Dimension { // int64 width = 1; // int64 height = 2; // int64 rotate = 3; } // message DislikeReasons { // int64 id = 1; // int64 mid = 2; // int32 rid = 3; // int64 tag_id = 4; // string name = 5; } // message FollowLayer { // Staff staff = 1; // Desc desc = 2; // map report = 3; } // message Headline { // Label label = 1; // string content = 2; } // message HistoryNode { // int64 node_id = 1; // string title = 2; // int64 cid = 3; } // 荣誉 Banner message Honor { // string icon = 1; // 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; // string url = 9; // string url_text = 10; // HonorType type = 11; // HonorJumpType honor_jump_type = 12; // map report = 13; } // 荣誉 Banner 跳转类型 enum HonorJumpType { // HONOR_JUMP_TYPE_UNKNOWN = 0; // HONOR_OPEN_URL = 1; // HONOR_HALF_SCREEN = 2; } // 荣誉类型 enum HonorType { // HONOR_NONE = 0; // PLAYLET = 1; // 视频存在争议 ARGUE = 2; // NOTICE = 3; // GUIDANCE = 4; // 哔哩哔哩榜 HONOR_BILI_RANK = 5; // 周榜 HONOR_WEEKLY_RANK = 6; // 日榜 HONOR_DAILY_RANK = 7; // HONOR_CHANNEL = 8; // 音乐榜? HONOR_MUSIC = 9; // HONOR_REPLY = 10; } // message IconFont { // string name = 1; // string text = 2; } // message Interaction { // int64 ep_id = 1; // HistoryNode history_node = 2; // int64 graph_version = 3; // string msg = 4; // bool is_interaction = 5; } // message Item { // string link = 1; // string cover = 2; } // message KingPos { // bool disable = 1; // string icon = 2; // KingPositionType type = 3; // string disable_toast = 4; // string checked_post = 5; // oneof extend { // LikeExtend like = 6; // CoinExtend coin = 7; } } // message KingPosition { // repeated KingPos king_pos = 1; // repeated KingPos extenf = 2; } // enum KingPositionType { // KING_POS_UNSPECIFIED = 0; // LIKE = 1; // DISLIKE = 2; // COIN = 3; // FAV = 4; // SHARE = 5; // CACHE = 6; // DANMAKU = 7; } // 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 LikeComment { // string reply = 1; // string title = 2; } // message LikeExtend { // UpLikeImg triple_like = 1; // string like_animation = 2; // PlayerAnimation player_animation = 3; // ActivityResource resource = 4; } // message Live { // int64 mid = 1; // int64 room_id = 2; // string uri = 3; // string endpage_uri = 4; } // 直播预约信息 message LiveOrder { // int64 sid = 1; // string text = 2; // int64 live_plan_start_time = 3; // bool is_follow = 4; // int64 follow_count = 5; } // message Mine { // double amount = 1; // int32 rank = 2; // string msg = 3; } // message Module { // ModuleType type = 1; // oneof data { // OgvIntroduction ogv_introduction = 2; // UgcIntroduction ugc_introduction = 3; // KingPosition king_position = 4; // Headline head_line = 5; // OgvTitle ogv_title = 6; // Honor honor = 7; // UserList list = 8; // Staffs staffs = 9; // ActivityReserve activity_reserve = 10; // LiveOrder live_order = 11; // SectionData section_data = 12; // DeliveryData delivery_data = 13; // FollowLayer follow_layer = 14; // OgvSeasons ogv_seasons = 15; // UgcSeasons ugc_season = 16; // OgvLiveReserve ogv_live_reserve = 17; // CombinationEp combination_ep = 18; // Sponsor sponsor = 19; // ActivityEntranceModule activity_entrance_module = 20; // SerialSeason serial_season = 21; // Relates relates = 22; // Banner banner = 23; // Audio audio = 24; // LikeComment like_comment = 25; // AttentionRecommend attention_recommend = 26; // Covenanter covenanter = 27; } } enum ModuleType { // UNKNOWN = 0; // OGV_INTRODUCTION = 1; // OGV_TITLE = 2; // UGC_HEADLINE = 3; // UGC_INTRODUCTION = 4; // KING_POSITION = 5; // MASTER_USER_LIST = 6; // STAFFS = 7; // HONOR = 8; // OWNER = 9; // PAGE = 10; // ACTIVITY_RESERVE = 11; // LIVE_ORDER = 12; // POSITIVE = 13; // SECTION = 14; // RELATE = 15; // PUGV = 16; // COLLECTION_CARD = 17; // ACTIVITY = 18; // CHARACTER = 19; // FOLLOW_LAYER = 20; // OGV_SEASONS = 21; // UGC_SEASON = 22; // OGV_LIVE_RESERVE = 23; // COMBINATION_EPISODE = 24; // SPONSOR = 25; // ACTIVITY_ENTRANCE = 26; // THEATRE_HOT_TOPIC = 27; // RELATED_RECOMMEND = 28; // PAY_BAR = 29; // BANNER = 30; // AUDIO = 31; // AGG_CARD = 32; // SINGLE_EP = 33; // LIKE_COMMENT = 34; // ATTENTION_RECOMMEND = 35; // COVENANTER = 36; } // message MultiViewEp { // int64 ep_id =1; } // message NewEp { // int32 id = 1; // string title = 2; // string desc = 3; // int32 is_new = 4; // string more = 5; // string cover = 6; // string index_show = 7; } // enum OccupationType { // STAFF = 0; // CAST = 1; } // message OfficialVerify { // int32 type = 1; // string desc = 2; } // message OgvIntroduction { // string followers = 1; // string score = 2; // StatInfo play_data = 3; } // message OgvLiveReserve { // int64 reserve_id = 1; // string title = 2; // string icon = 3; // string night_icon = 4; // string click_button = 5; // string link = 6; // int32 follow_video_is_reserve_live = 7; // string bg_color = 8; // string night_bg_color = 9; // string text_color = 10; // string night_text_color = 11; // string bt_bg_color = 12; // string bt_frame_color = 13; // string night_bt_bg_color = 14; // string night_bt_frame_color = 15; // int32 active_type = 16; // int32 reserve_status = 17; // string bt_text_color = 18; // string night_bt_text_color = 19; // map report = 20; } // message OgvSeasons { // string title = 1; // repeated SerialSeason serial_season = 2; // SerialSeasonCoverStyle style = 3; } // message OgvTitle { // string title = 1; // BadgeInfo badge_info = 2; // int32 is_show_btn_animation = 3; // int32 follow_video_is_reserve_live = 4; // int64 reserve_id = 5; // TitleDeliveryButton title_delivery_button = 6; } // message Owner { bilibili.dagw.component.avatar.v1.AvatarItem avatar = 1; // string url = 2; // string title = 3; // string fans = 4; // string arc_count = 5; // int32 attention = 6; // int32 attention_relation = 7; // string pub_location = 8; // Vip vip = 9; // string title_url = 10; // string face = 11; // int64 mid = 12; // OfficialVerify official_verify = 13; // Live live = 14; // int64 fans_num = 15; // repeated int64 assists = 16; } // message Page { // int64 cid = 1; // string part = 2; // int64 duration = 3; // string desc = 4; // Dimension dimension = 5; // string dl_title = 6; // string dl_subtitle = 7; } // message Pendant { // int32 pid = 1; // string name = 2; // string image = 3; } // message PlayerAnimation { // string player_icon = 1; // string player_triple_icon = 2; } // message PointActivity { // string tip = 1; // string content = 2; // string link = 3; } // message PowerIconStyle { // string icon_url = 1; // string icon_night_url = 2; // int64 icon_width = 3; // int64 icon_height = 4; } // message Rank { // string icon = 1; // 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 Rating { // string score = 1; // int32 count = 2; } // 视频详情下方推荐卡子类型: 普通视频 message RelateAVCard { // int64 duration = 1; // int64 cid = 2; // Dimension dimension = 3; // Stat stat = 4; // string jump_url = 5; // bool show_up_name = 6; // BadgeInfo rcmd_reason = 7; } // 视频详情下方推荐卡子类型: 番剧(小卡?) message RelateBangumiAvCard { // BadgeInfo badge = 1; // Stat stat = 2; // Rating rating = 3; } // 视频详情下方推荐卡子类型: 番剧(大卡?) message RelateBangumiCard { // int32 season_id = 1; // int32 season_type = 2; // NewEp new_ep = 3; // Stat stat = 4; // Rating rating = 5; // string rcmd_reason = 6; // BadgeInfo badge_info = 7; // string goto_type = 8; // map report = 9; } // 视频详情下方推荐卡子类型: 番剧集? message RelateBangumiResourceCard { // int32 type = 1; // string scover = 2; // int32 re_type = 3; // string re_value = 4; // string corner = 5; // int32 card = 6; // string siz = 7; // int32 position = 8; // string rcmd_reason = 9; // string label = 10; // map report = 11; // string goto_type = 12; } // 视频详情下方推荐卡子类型: UGC 番剧? message RelateBangumiUgcCard { // BadgeInfo badge = 1; // Stat stat = 2; // Rating rating = 3; } // 视频详情下方推荐卡 message RelateCard { // RelateCardType relate_card_type = 1; // oneof card { // RelateAVCard av = 2; // RelateBangumiCard bangumi = 3; // RelateBangumiResourceCard resource = 4; // RelateGameCard game = 5; // RelateCMCard cm = 6; // RelateLiveCard live = 7; // RelateBangumiAvCard bangumi_av = 8; // RelatedAICard ai_card = 9; // RelateBangumiUgcCard bangumi_ugc = 13; // RelateSpecial special = 14; } // RelateThreePoint three_point = 10; // google.protobuf.Any cm_stock = 11; // CardBasicInfo basic_info = 12; } // 视频详情下方推荐卡子类型 enum RelateCardType { // CARD_TYPE_UNKNOWN = 0; // AV = 1; // BANGUMI = 2; // RESOURCE = 3; // GAME = 4; // CM = 5; // LIVE = 6; // AI_RECOMMEND = 7; // BANGUMI_AV = 8; // BANGUMI_UGC = 9; // SPECIAL = 10; } // 视频详情下方推荐卡子类型: 广告推广 message RelateCMCard { // int64 aid = 1; // google.protobuf.Any source_content = 2; // int64 duration = 3; // Stat stat = 4; } // 视频详情下方推荐配置 message RelateConfig { // int64 valid_show_m = 1; // int64 valid_show_n = 2; // bilibili.pagination.Pagination pagination = 3; // bool can_load_more = 4; } // 视频详情下方推荐卡子类型: AI 推荐? message RelatedAICard { // int64 aid = 1; // int64 duration = 2; // Staff up_info = 3; // Stat stat = 4; // map report = 5; // string goto_type = 6; } // 视频详情下方推荐卡子类型: 点击不喜欢后占位卡片 message RelateDislike { // 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 RelateGameCard { // int64 reserve_status = 1; // string reserve_status_text = 2; // string reserve = 3; // float rating = 4; // string tag_name = 5; // RankInfo rank_info = 6; // Button pack_info = 7; // Button notice = 8; // PowerIconStyle power_icon_style = 9; // string game_rcmd_reason = 10; // WikiInfo wiki_info = 11; // BadgeInfo badge = 12; } // message RelateItem { // string url = 1; // string cover = 2; // bool use_default_browser = 3; } // 视频详情下方推荐卡子类型: 直播 message RelateLiveCard { // int64 icon_type = 1; // string area_name = 2; // int64 watched_show = 3; // int64 live_status = 4; } // 视频下方推荐区 message Relates { // repeated RelateCard cards = 1; // RelateConfig config = 2; } // 视频详情下方推荐卡子类型: 其他特殊 message RelateSpecial { // BadgeInfo badge = 1; // BadgeInfo rcmd_reason = 2; } // 视频详情下方推荐卡右上角三点的内容 message RelateThreePoint { // RelateDislike dislike = 1; // RelateDislike feedback = 2; // bool watch_later = 3; // string dislike_report_data = 4; } // enum ReserveBizType { // BizTypeNone = 0; // BizTypeReserveActivity = 1; // BizTypeFavSeason = 2; } // message ReserveButton { // bool status = 1; // string text = 3; // string selected_text = 4; // ReserveBizType order_type = 7; // oneof order_param { // BizReserveActivityParam reserve = 8; // BizFavParam fav = 9; } } // message Rights { // int32 allow_download = 1; // int32 allow_review = 2; // int32 can_watch = 3; // string resource = 4; // int32 allow_dm = 5; // int32 allow_demand = 6; // 区域限制 int32 area_limit = 7; } // message SeasonHead { // string title = 1; // string intro = 2; // StatInfo vt = 3; // StatInfo danmaku = 4; } // 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 SectionData { // int32 id = 1; // int32 section_id = 2; // string title = 3; // int32 can_ord_desc = 4; // string more = 5; // repeated int32 episode_ids = 6; // repeated ViewEpisode episodes = 7; // string split_text = 8; // Style module_style = 9; // string more_bottom_desc = 10; // repeated SerialSeason seasons = 11; // Button more_left = 12; // int32 type = 13; // map report = 14; } // message SerialSeason { // int32 season_id = 1; // string title = 2; // string season_title = 3; // int32 is_new = 4; // string cover = 5; // string badge = 6; // int32 badge_type = 7; // BadgeInfo badge_info = 8; // string link = 9; // string resource = 10; // NewEp new_ep = 11; } enum SerialSeasonCoverStyle { // TITLE = 0; // PICTURE = 1; } // message SkipRange { // int32 start = 1; // int32 end = 2; } // message Sponsor { // int64 total = 1; // int64 week = 2; // repeated SponsorRank rank_list = 3; // Mine mine = 4; // PointActivity point_activity = 5; // repeated Pendant pendants = 6; // repeated Threshold threshold = 7; } // message SponsorRank { // int64 uid = 1; // string msg = 2; // string uname = 3; // string face = 4; // Vip vip = 5; } // message Staff { // int64 mid = 1; // int32 attention = 2; // string title = 3; // string name = 4; // string face = 5; // OfficialVerify official = 6; // Vip vip = 7; // int32 label_style = 8; // string fans = 9; } // message Staffs { // repeated Staff staff = 1; // string title = 2; } // message Stat { // 视频观看时长 StatInfo vt = 1; // 弹幕 StatInfo danmaku = 2; // 回复数 int64 reply = 3; // 收藏数 int64 fav = 4; // 硬币数 int64 coin = 5; // 分享数 int64 share = 6; // 点赞数 int64 like = 7; // 关注数 int64 follow = 8; } // message StatInfo { // int64 value = 1; // string text = 2; // string pure_text = 3; // string icon = 4; } // message Style { // int32 line = 1; // int32 hidden = 2; // repeated string show_pages = 3; } // message Tag { // int64 tag_id = 1; // string name = 2; // string uri = 3; // string tag_type = 4; } // message TheatreHotTopic { // int64 theatre_id = 1; // int64 theatre_set_id = 2; // string theatre_title = 3; // string background_image_url = 4; // string theatre_url = 5; // int64 hot_topic_id = 6; // Original one is hottopicsetid, here renamed int64 hot_topic_set_id = 7; // Original one is hottopictitle, here renamed string hot_topic_title = 8; // string hot_topic_url = 9; // int32 is_subscribe = 10; // map report = 11; } // message Threshold { // int32 bp = 1; // int32 days = 2; // string days_text = 3; } // message TitleDeliveryButton { // string icon = 1; // string title = 2; // string link = 3; // map report = 4; } // message UgcEpisode { // int64 id = 1; // int64 aid = 2; // int64 cid = 3; // string title = 4; // string cover = 5; // string cover_right_text = 6; // Page page = 7; // StatInfo vt = 8; // StatInfo danmaku = 9; } // message UgcIntroduction { // repeated Tag tags = 1; // Rating rating = 2; // Rank rank = 3; // repeated ViewMaterial bgm = 4; // repeated ViewMaterial sticker = 5; // repeated ViewMaterial video_source = 6; // int64 pubdate = 7; // repeated DescV2 desc = 8; } // 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; } // message UgcSeasons { // int64 id = 1; // string title = 2; // string cover = 3; // string supernatant_title = 4; // repeated UgcSection section = 5; // string union_title = 6; // SeasonHead head = 7; // int64 ep_count = 8; // int32 season_type = 9; // UgcSeasonActivity activity = 10; // repeated string season_ability = 11; // string season_title = 12; } // message UgcSection { // int64 id = 1; // string title = 2; // int64 type = 3; // repeated UgcEpisode episodes = 4; } // message UpLikeImg { // string pre_img = 1; // string suc_img = 2; // string content = 3; // int64 type = 4; } // message User { // int64 mid = 1; // string name = 2; // string face = 3; // int64 follower = 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 UserList { // repeated User list = 1; // string title = 2; } // message UserStatus { // int32 show = 1; // int32 follow = 2; } // message ViewEpisode { // int64 ep_id = 1; // string badge = 2; // int32 badge_type = 3; // BadgeInfo badge_info = 4; // int32 duration = 5; // int32 status = 6; // string cover = 7; // int64 aid = 8; // string title = 9; // string movie_title = 10; // string subtitle = 11; // string long_title = 12; // string toast_title = 13; // int64 cid = 14; // string from = 15; // string share_url = 16; // string share_copy = 17; // string short_link = 18; // string vid = 19; // string release_date = 20; // Dimension dimension = 21; // Rights rights = 22; // Interaction interaction = 23; // string bvid = 24; // int32 archive_attr = 25; // string link = 26; // string link_type = 27; // string bmid = 28; // int64 pub_time = 29; // int32 pv = 30; // int32 ep_index = 31; // int32 section_index = 32; // repeated Staff up_infos = 33; // Staff up_info = 34; // string dialog_type = 35; // string toast_type = 36; // repeated MultiViewEp multi_view_eps = 37; // bool is_sub_view = 38; // bool is_view_hide = 39; // string jump_link = 40; // Stat stat_for_unity = 41; // map report = 42; } // message ViewMaterial { // int64 oid = 1; // int64 mid = 2; // string title = 3; // string author = 4; // string jump_url = 5; } // message Vip { // int32 type = 1; // int32 vip_status = 2; // int32 theme_type = 3; // VipLabel label = 4; // int32 is_vip = 5; } // message VipLabel { // string path = 1; // string text = 2; // string label_theme = 3; } // message WikiInfo { // string wiki_label = 1; // string wiki_url = 2; }