api.proto 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. // 定义项目 API 的 proto 文件 可以同时描述 gRPC 和 HTTP API
  2. // protobuf 文件参考:
  3. // - https://developers.google.com/protocol-buffers/
  4. // - http://info.bilibili.co/display/documentation/gRPC+Proto
  5. // protobuf 生成 HTTP 工具:
  6. // - http://git.bilibili.co/platform/go-common/tree/master/app/tool/protoc-gen-bm
  7. // gRPC Golang Model:
  8. // - http://info.bilibili.co/display/documentation/gRPC+Golang+Model
  9. // gRPC Golang Warden Gen:
  10. // - http://info.bilibili.co/display/documentation/gRPC+Golang+Warden+Gen
  11. // gRPC http 调试工具(无需pb文件):
  12. // - http://info.bilibili.co/pages/viewpage.action?pageId=12877366
  13. // grpc 命令行调试工具(无需pb文件):
  14. // - http://info.bilibili.co/pages/viewpage.action?pageId=11869411
  15. syntax = "proto3";
  16. import "github.com/gogo/protobuf/gogoproto/gogo.proto";
  17. package live.xroom.v1;
  18. option go_package = "api";
  19. option (gogoproto.goproto_getters_all) = false;
  20. service Room {
  21. // 批量根据room_ids获取房间信息
  22. rpc getMultiple (RoomIDsReq) returns (RoomIDsInfosResp);
  23. // 批量根据uids获取房间信息
  24. rpc getMultipleByUids (UIDsReq) returns (UIDsInfosResp);
  25. // 批量根据uids判断是否是主播,如果是返回主播的room_id,否则返回0
  26. rpc isAnchor (IsAnchorUIDsReq) returns (IsAnchorUIDsResp);
  27. }
  28. message RoomIDsReq {
  29. // room_ids数组,长号
  30. repeated int64 room_ids = 1 [(gogoproto.moretags) = 'form:"room_ids" validate:"required,gt=0,dive,gt=0"'];
  31. // 要获取的房间信息维度 status:状态相关 show:展示相关 area:分区相关 anchor:主播相关
  32. repeated string attrs = 2 [(gogoproto.moretags) = 'form:"attrs" validate:"required,gt=0,dive,gt=0"'];
  33. }
  34. message UIDsReq {
  35. // 主播uids
  36. repeated int64 uids = 1 [(gogoproto.moretags) = 'form:"uids" validate:"required,gt=0,dive,gt=0"'];
  37. // 要获取的房间信息维度 status:状态相关 show:展示相关 area:分区相关 anchor:主播相关
  38. repeated string attrs = 2 [(gogoproto.moretags) = 'form:"attrs" validate:"required,gt=0,dive,gt=0"'];
  39. }
  40. message IsAnchorUIDsReq {
  41. // 主播uids
  42. repeated int64 uids = 1 [(gogoproto.moretags) = 'form:"uids" validate:"required,gt=0,dive,gt=0"'];
  43. }
  44. message IsAnchorUIDsResp {
  45. // uid => room_id(长号),room_id=0表示没有创建房间
  46. map<int64, int64> list = 1 [(gogoproto.jsontag) = "list"];
  47. }
  48. // 批量根据room_ids获取房间信息
  49. message RoomIDsInfosResp {
  50. // 主播room_id => 房间维度信息
  51. map<int64, Infos> list = 1 [(gogoproto.jsontag) = "list"];
  52. }
  53. // 批量根据uids获取房间信息
  54. message UIDsInfosResp {
  55. // 主播UID => 房间维度信息
  56. map<int64, Infos> list = 1 [(gogoproto.jsontag) = "list"];
  57. }
  58. message Infos {
  59. // room_id 房间长号
  60. int64 room_id = 1 [(gogoproto.jsontag) = "room_id"];
  61. // uid 主播uid
  62. int64 uid = 2 [(gogoproto.jsontag) = "uid"];
  63. // Model1:房间信息(状态相关)
  64. RoomStatusInfo status = 3 [(gogoproto.jsontag) = "status"];
  65. // Model2:房间信息(展示相关)
  66. RoomShowInfo show = 4 [(gogoproto.jsontag) = "show"];
  67. // Model3:房间信息(分区相关)
  68. RoomAreaInfo area = 5 [(gogoproto.jsontag) = "area"];
  69. // Model4:房间信息(主播相关)
  70. RoomAnchorInfo anchor = 6 [(gogoproto.jsontag) = "anchor"];
  71. }
  72. // 房间信息(状态)
  73. message RoomStatusInfo {
  74. // 直播间状态 0未开播,1直播中;2轮播中;
  75. int64 live_status = 1 [(gogoproto.jsontag) = "live_status"];
  76. // 横竖屏方向 0横屏,1竖屏
  77. int64 live_screen_type = 2 [(gogoproto.jsontag) = "live_screen_type"];
  78. // 是否开播过标识
  79. int64 live_mark = 3 [(gogoproto.jsontag) = "live_mark"];
  80. // 封禁状态:0未封禁;1审核封禁; 2全网封禁
  81. int64 lock_status = 4 [(gogoproto.jsontag) = "lock_status"];
  82. // 封禁时间戳
  83. int64 lock_time = 5 [(gogoproto.jsontag) = "lock_time"];
  84. // 隐藏状态 0不隐藏,1隐藏
  85. int64 hidden_status = 6 [(gogoproto.jsontag) = "hidden_status"];
  86. // 隐藏时间戳
  87. int64 hidden_time = 7 [(gogoproto.jsontag) = "hidden_time"];
  88. // 直播类型 0默认 1摄像头直播 2录屏直播 3语音直播
  89. int64 live_type = 8 [(gogoproto.jsontag) = "live_type"];
  90. }
  91. // 房间信息(展示)
  92. message RoomShowInfo {
  93. // short_id 短号
  94. int64 short_id = 1 [(gogoproto.jsontag) = "short_id"];
  95. // 直播间标题
  96. string title = 2 [(gogoproto.jsontag) = "title"];
  97. // 直播间封面
  98. string cover = 3 [(gogoproto.jsontag) = "cover"];
  99. // 直播间标签
  100. string tags = 4 [(gogoproto.jsontag) = "tags"];
  101. // 直播间背景图
  102. string background = 5 [(gogoproto.jsontag) = "background"];
  103. // 直播间简介
  104. string description = 6 [(gogoproto.jsontag) = "description"];
  105. // 关键帧
  106. string keyframe = 7 [(gogoproto.jsontag) = "keyframe"];
  107. // 人气值
  108. int64 popularity_count = 8 [(gogoproto.jsontag) = "popularity_count"];
  109. // 房间tag(角标)
  110. repeated TagData tag_list = 9 [(gogoproto.jsontag) = "tag_list"];
  111. // 最近一次开播时间戳
  112. int64 live_start_time = 10 [(gogoproto.jsontag) = "live_start_time"];
  113. }
  114. // 房间信息(分区)
  115. message RoomAreaInfo {
  116. // 直播间分区id
  117. int64 area_id = 1 [(gogoproto.jsontag) = "area_id"];
  118. // 直播间分区名称
  119. string area_name = 2 [(gogoproto.jsontag) = "area_name"];
  120. // 直播间父分区id
  121. int64 parent_area_id = 3 [(gogoproto.jsontag) = "parent_area_id"];
  122. // 直播间父分区名称
  123. string parent_area_name = 4 [(gogoproto.jsontag) = "parent_area_name"];
  124. }
  125. // 主播信息(展示)
  126. message RoomAnchorInfo {
  127. // 主播类型
  128. int64 anchor_profile_type = 1 [(gogoproto.jsontag) = "anchor_profile_type"];
  129. // 主播等级
  130. AnchorLevel anchor_level = 2 [(gogoproto.jsontag) = "anchor_level"];
  131. }
  132. // 房间角标、tag
  133. message TagData {
  134. int64 tag_id = 1 [(gogoproto.jsontag) = "tag_id"];
  135. int64 tag_sub_id = 2 [(gogoproto.jsontag) = "tag_sub_id"];
  136. int64 tag_value = 3 [(gogoproto.jsontag) = "tag_value"];
  137. string tag_ext = 4 [(gogoproto.jsontag) = "tag_ext"];
  138. }
  139. // 主播经验定义
  140. message AnchorLevel {
  141. // 等级
  142. int64 level = 1 [(gogoproto.jsontag) = "level"];
  143. // 当前等级颜色
  144. int64 color = 2 [(gogoproto.jsontag) = "color"];
  145. // 当前积分
  146. int64 score = 3 [(gogoproto.jsontag) = "score"];
  147. // 当前等级最小积分
  148. int64 left = 4 [(gogoproto.jsontag) = "left"];
  149. // 下一等级起始积分
  150. int64 right = 5 [(gogoproto.jsontag) = "right"];
  151. // 下一个经验值
  152. int64 max_level = 6 [(gogoproto.jsontag) = "max_level"];
  153. }