syntax = "proto3";

package bilibili.app.interface.v1;

option java_package = "bilibili.app.interfaces.v1";
option java_multiple_files = true;

//
service Media {
  //
  rpc MediaTab(MediaTabReq) returns (MediaTabReply);
  //
  rpc MediaDetail(MediaDetailReq) returns (MediaDetailReply);
  //
  rpc MediaVideo(MediaVideoReq) returns (MediaVideoReply);
  //
  rpc MediaRelation(MediaRelationReq) returns (MediaRelationReply);
  //
  rpc MediaFollow(MediaFollowReq) returns (MediaFollowReply);
}

//
message BigItem {
  //
  string title = 1;
  //
  string cover_image_uri = 2;
  //
  string uri = 3;
  //
  string cover_right_text = 4;
  //
  string cover_left_text1 = 5;
  //
  int64 cover_left_icon1 = 6;
  //
  string cover_left_text2 = 7;
  //
  int64 cover_left_icon2 = 8;
  //
  UserCard user_card = 9;
  //
  LikeButton like_button = 10;
  //
  int64 param = 11;
}

//
message Button {
  //
  string title = 1;
  //
  string link = 2;
  //
  string id = 3;
  //
  int64 icon = 4;
  //
  ButType but_type = 5;
  //
  int32 follow_state = 6;
  //
  string has_title = 7;
}

//
enum ButType {
  BUT_INVALID = 0; //
  BUT_REDIRECT = 1; //
  BUT_LIKE = 2; //
}

//
message Cast {
  //
  repeated MediaPerson person = 1;
  //
  string title = 2;
}

//
message ChannelInfo {
  //
  int64 channel_id = 1;
  //
  bool subscribed = 2;
}

//
message LikeButton {
  //
  int64 aid = 1;
  //
  int32 count = 2;
  //
  bool show_count = 3;
  //
  string event = 4;
  //
  int32 selected = 5;
  //
  string event_v2 = 6;
  //
  LikeButtonResource like_resource = 7;
  //
  LikeButtonResource dis_like_resource = 8;
  //
  LikeButtonResource like_night_resource = 9;
  //
  LikeButtonResource dis_like_night_resource = 10;
}

//
message LikeButtonResource {
  //
  string url = 1;
  //
  string hash = 2;
}

//
message LikeCard {
  //
  int64 like = 1;
  //
  bool is_follow = 2;
}

//
message MediaCard {
  //
  string cover = 1;
  //
  string cur_title = 2;
  //
  string style = 3;
  //
  string label = 4;
  //
  Button but_first = 5;
}

//
message MediaDetailReply {
  //
  Cast cast = 1;
  //
  Staff staff = 2;
  //
  Overview overview = 3;
}

//
message MediaDetailReq {
  //
  int64 biz_id = 1;
  //
  int64 biz_type = 2;
}

//
message MediaFollowReply {

}

//
message MediaFollowReq {
  //
  string id = 1;
  //
  int32 type = 2;
}

//
message MediaPerson {
  //
  string real_name = 1;
  //
  string square_url = 2;
  //
  string character = 3;
  //
  int64 person_id = 4;
  //
  string type = 5;
}

//
message MediaRelationReply {
  //
  string offset = 1;
  //
  bool has_more = 2;
  //
  repeated SmallItem list = 3;
}

//
message MediaRelationReq {
  //
  int64 biz_id = 1;
  //
  int64 biz_type = 2;
  //
  int64 feed_id = 3;
  //
  string offset = 5;
  //
  int32 ps = 6;
}

//
message MediaTabReply {
  //
  MediaCard media_card = 1;
  //
  repeated ShowTab tab = 2;
  //
  int64 default_tab_index = 3;
  //
  ChannelInfo channel_info = 4;
}

//
message MediaTabReq {
  //
  int64 biz_id = 1;
  //
  int64 biz_type = 2;
  //
  string source = 3;
  //
  string spmid = 4;
  //
  map<string, string> args = 5;
}

//
message MediaVideoReply {
  //
  string offset = 1;
  //
  bool has_more = 2;
  //
  repeated BigItem list = 3;
}

//
message MediaVideoReq {
  //
  int64 biz_id = 1;
  //
  int64 biz_type = 2;
  //
  int64 feed_id = 3;
  //
  string offset = 5;
  //
  int32 ps = 6;
}

//
message Overview {
  //
  string title = 1;
  //
  string text = 2;
}

//
message ShowTab {
  //
  TabType tab_type = 1;
  //
  string title = 2;
  //
  string url = 3;
}

//
message SmallItem {
  //
  string title = 1;
  //
  string cover_image_uri = 2;
  //
  string uri = 3;
  //
  string cover_right_text = 4;
  //
  string cover_left_text1 = 5;
  //
  int64 cover_left_icon1 = 6;
  //
  string cover_left_text2 = 7;
  //
  int64 cover_left_icon2 = 8;
  //
  int64 param = 9;
  //
  int64 mid = 10;
}

//
message Staff {
  //
  string title = 1;
  //
  string text = 2;
}

//
enum TabType {
  TAB_INVALID = 0; //
  TAB_OGV_DETAIL = 6; //
  TAB_OGV_REPLY = 7; //
  TAB_FEED_BID = 8; //
  TAB_FEED_SMALL = 9; //
}

//
message UserCard {
  //
  string user_name = 1;
  //
  string user_face = 2;
  //
  string user_url = 3;
  //
  int64 mid = 4;
}