go-common/app/service/live/xroom/api/api.proto
2019-04-22 18:49:16 +08:00

166 lines
6.2 KiB
Protocol Buffer
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// 定义项目 API 的 proto 文件 可以同时描述 gRPC 和 HTTP API
// protobuf 文件参考:
// - https://developers.google.com/protocol-buffers/
// - http://info.bilibili.co/display/documentation/gRPC+Proto
// protobuf 生成 HTTP 工具:
// - http://git.bilibili.co/platform/go-common/tree/master/app/tool/protoc-gen-bm
// gRPC Golang Model:
// - http://info.bilibili.co/display/documentation/gRPC+Golang+Model
// gRPC Golang Warden Gen:
// - http://info.bilibili.co/display/documentation/gRPC+Golang+Warden+Gen
// gRPC http 调试工具(无需pb文件):
// - http://info.bilibili.co/pages/viewpage.action?pageId=12877366
// grpc 命令行调试工具(无需pb文件):
// - http://info.bilibili.co/pages/viewpage.action?pageId=11869411
syntax = "proto3";
import "github.com/gogo/protobuf/gogoproto/gogo.proto";
package live.xroom.v1;
option go_package = "api";
option (gogoproto.goproto_getters_all) = false;
service Room {
// 批量根据room_ids获取房间信息
rpc getMultiple (RoomIDsReq) returns (RoomIDsInfosResp);
// 批量根据uids获取房间信息
rpc getMultipleByUids (UIDsReq) returns (UIDsInfosResp);
// 批量根据uids判断是否是主播如果是返回主播的room_id否则返回0
rpc isAnchor (IsAnchorUIDsReq) returns (IsAnchorUIDsResp);
}
message RoomIDsReq {
// room_ids数组长号
repeated int64 room_ids = 1 [(gogoproto.moretags) = 'form:"room_ids" validate:"required,gt=0,dive,gt=0"'];
// 要获取的房间信息维度 status:状态相关 show:展示相关 area:分区相关 anchor:主播相关
repeated string attrs = 2 [(gogoproto.moretags) = 'form:"attrs" validate:"required,gt=0,dive,gt=0"'];
}
message UIDsReq {
// 主播uids
repeated int64 uids = 1 [(gogoproto.moretags) = 'form:"uids" validate:"required,gt=0,dive,gt=0"'];
// 要获取的房间信息维度 status:状态相关 show:展示相关 area:分区相关 anchor:主播相关
repeated string attrs = 2 [(gogoproto.moretags) = 'form:"attrs" validate:"required,gt=0,dive,gt=0"'];
}
message IsAnchorUIDsReq {
// 主播uids
repeated int64 uids = 1 [(gogoproto.moretags) = 'form:"uids" validate:"required,gt=0,dive,gt=0"'];
}
message IsAnchorUIDsResp {
// uid => room_id(长号)room_id=0表示没有创建房间
map<int64, int64> list = 1 [(gogoproto.jsontag) = "list"];
}
// 批量根据room_ids获取房间信息
message RoomIDsInfosResp {
// 主播room_id => 房间维度信息
map<int64, Infos> list = 1 [(gogoproto.jsontag) = "list"];
}
// 批量根据uids获取房间信息
message UIDsInfosResp {
// 主播UID => 房间维度信息
map<int64, Infos> list = 1 [(gogoproto.jsontag) = "list"];
}
message Infos {
// room_id 房间长号
int64 room_id = 1 [(gogoproto.jsontag) = "room_id"];
// uid 主播uid
int64 uid = 2 [(gogoproto.jsontag) = "uid"];
// Model1房间信息状态相关
RoomStatusInfo status = 3 [(gogoproto.jsontag) = "status"];
// Model2房间信息展示相关
RoomShowInfo show = 4 [(gogoproto.jsontag) = "show"];
// Model3房间信息分区相关
RoomAreaInfo area = 5 [(gogoproto.jsontag) = "area"];
// Model4房间信息主播相关
RoomAnchorInfo anchor = 6 [(gogoproto.jsontag) = "anchor"];
}
// 房间信息(状态)
message RoomStatusInfo {
// 直播间状态 0未开播1直播中2轮播中
int64 live_status = 1 [(gogoproto.jsontag) = "live_status"];
// 横竖屏方向 0横屏1竖屏
int64 live_screen_type = 2 [(gogoproto.jsontag) = "live_screen_type"];
// 是否开播过标识
int64 live_mark = 3 [(gogoproto.jsontag) = "live_mark"];
// 封禁状态0未封禁1审核封禁; 2全网封禁
int64 lock_status = 4 [(gogoproto.jsontag) = "lock_status"];
// 封禁时间戳
int64 lock_time = 5 [(gogoproto.jsontag) = "lock_time"];
// 隐藏状态 0不隐藏1隐藏
int64 hidden_status = 6 [(gogoproto.jsontag) = "hidden_status"];
// 隐藏时间戳
int64 hidden_time = 7 [(gogoproto.jsontag) = "hidden_time"];
// 直播类型 0默认 1摄像头直播 2录屏直播 3语音直播
int64 live_type = 8 [(gogoproto.jsontag) = "live_type"];
}
// 房间信息(展示)
message RoomShowInfo {
// short_id 短号
int64 short_id = 1 [(gogoproto.jsontag) = "short_id"];
// 直播间标题
string title = 2 [(gogoproto.jsontag) = "title"];
// 直播间封面
string cover = 3 [(gogoproto.jsontag) = "cover"];
// 直播间标签
string tags = 4 [(gogoproto.jsontag) = "tags"];
// 直播间背景图
string background = 5 [(gogoproto.jsontag) = "background"];
// 直播间简介
string description = 6 [(gogoproto.jsontag) = "description"];
// 关键帧
string keyframe = 7 [(gogoproto.jsontag) = "keyframe"];
// 人气值
int64 popularity_count = 8 [(gogoproto.jsontag) = "popularity_count"];
// 房间tag角标
repeated TagData tag_list = 9 [(gogoproto.jsontag) = "tag_list"];
// 最近一次开播时间戳
int64 live_start_time = 10 [(gogoproto.jsontag) = "live_start_time"];
}
// 房间信息(分区)
message RoomAreaInfo {
// 直播间分区id
int64 area_id = 1 [(gogoproto.jsontag) = "area_id"];
// 直播间分区名称
string area_name = 2 [(gogoproto.jsontag) = "area_name"];
// 直播间父分区id
int64 parent_area_id = 3 [(gogoproto.jsontag) = "parent_area_id"];
// 直播间父分区名称
string parent_area_name = 4 [(gogoproto.jsontag) = "parent_area_name"];
}
// 主播信息(展示)
message RoomAnchorInfo {
// 主播类型
int64 anchor_profile_type = 1 [(gogoproto.jsontag) = "anchor_profile_type"];
// 主播等级
AnchorLevel anchor_level = 2 [(gogoproto.jsontag) = "anchor_level"];
}
// 房间角标、tag
message TagData {
int64 tag_id = 1 [(gogoproto.jsontag) = "tag_id"];
int64 tag_sub_id = 2 [(gogoproto.jsontag) = "tag_sub_id"];
int64 tag_value = 3 [(gogoproto.jsontag) = "tag_value"];
string tag_ext = 4 [(gogoproto.jsontag) = "tag_ext"];
}
// 主播经验定义
message AnchorLevel {
// 等级
int64 level = 1 [(gogoproto.jsontag) = "level"];
// 当前等级颜色
int64 color = 2 [(gogoproto.jsontag) = "color"];
// 当前积分
int64 score = 3 [(gogoproto.jsontag) = "score"];
// 当前等级最小积分
int64 left = 4 [(gogoproto.jsontag) = "left"];
// 下一等级起始积分
int64 right = 5 [(gogoproto.jsontag) = "right"];
// 下一个经验值
int64 max_level = 6 [(gogoproto.jsontag) = "max_level"];
}