bilibili-backup/app/service/bbq/topic/api/api.proto
2019-04-22 02:59:20 +00:00

173 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.

syntax = "proto3";
import "github.com/gogo/protobuf/gogoproto/gogo.proto";
import "google/protobuf/empty.proto";
package bbq.service.topic.v1;
option go_package = "api";
option (gogoproto.goproto_getters_all) = false;
message ListExtensionReq {
repeated int64 svids = 1;
}
message ListExtensionReply {
repeated VideoExtension list = 1;
}
message UpdateVideoScoreReq {
int64 svid = 1;
double score = 2;
}
message UpdateVideoStateReq {
int64 svid = 1;
int32 state = 2;
}
message TopicVideosReq {
int64 topic_id = 1[(gogoproto.moretags)='form:"topic_id"'];
string cursor_prev = 2[(gogoproto.moretags)='form:"cursor_prev"'];
string cursor_next = 3[(gogoproto.moretags)='form:"cursor_next"'];
}
message ListMultiTopicVideosReq {
repeated TopicVideosReq list = 1;
}
message VideoItem {
int64 svid = 1;
string cursor_value = 2;
int64 hot_type = 3;
}
message TopicDetail {
TopicInfo topic_info = 1;
repeated VideoItem list = 2;
bool has_more = 3[(gogoproto.jsontag) = "has_more"];
}
message ListDiscoveryTopicReq {
int32 page = 1[(gogoproto.moretags)='form:"page" validate:"required"'];
}
message ListDiscoveryTopicReply {
repeated TopicDetail list = 1;
bool has_more = 2;
}
message ListTopicsReq {
int32 page = 1[(gogoproto.moretags)='form:"page" validate:"required"'];
}
message ListTopicsReply {
bool has_more = 1[(gogoproto.jsontag) = "has_more"];
repeated TopicInfo list = 2;
}
message StickTopicReq {
int64 topic_id = 1[(gogoproto.moretags)='form:"topic_id" validate:"required"'];
int64 op = 2[(gogoproto.moretags)='form:"op"'];// 0表示取消置顶1表示置顶
}
message StickTopicVideoReq {
int64 topic_id = 1[(gogoproto.moretags)='form:"topic_id" validate:"required"'];
int64 svid = 2[(gogoproto.moretags)='form:"svid" validate:"required"'];
int64 op = 3[(gogoproto.moretags)='form:"op"'];// 0表示取消置顶1表示置顶
}
message SetStickTopicVideoReq {
int64 topic_id = 1[(gogoproto.moretags)='form:"topic_id" validate:"required"'];
repeated int64 svids = 2[(gogoproto.moretags)='form:"svids"'];
}
// 所有查找走同一个接口
message ListCmsTopicsReq {
int32 page = 1[(gogoproto.moretags)='form:"page" validate:"required"'];
string name = 2[(gogoproto.moretags)='form:"name"'];
int64 topic_id = 3[(gogoproto.moretags)='form:"topic_id"'];
int32 state = 4[(gogoproto.moretags)='form:"state"'];
}
message ListCmsTopicsReply {
bool has_more = 1[(gogoproto.jsontag) = "has_more"];
repeated TopicInfo list = 2;
}
service Topic {
////////////////extension////////////////
rpc Register (VideoExtension) returns (.google.protobuf.Empty);
rpc ListExtension (ListExtensionReq) returns (ListExtensionReply);
//////////////////topic///////////////////
rpc UpdateVideoScore(UpdateVideoScoreReq) returns (.google.protobuf.Empty);
rpc UpdateVideoState(UpdateVideoStateReq) returns (.google.protobuf.Empty);
// 获取话题下的视频
rpc ListTopicVideos (TopicVideosReq) returns (TopicDetail);
// TODO: to deleted. 发现页分成先请求话题,再请求话题下视频
// 获取发现页下的话题
rpc ListDiscoveryTopics (ListDiscoveryTopicReq) returns (ListDiscoveryTopicReply);
// 推荐的话题,不会返回话题内的视频
rpc ListTopics (ListTopicsReq) returns (ListTopicsReply);
///// cms /////
rpc StickTopic(StickTopicReq) returns (.google.protobuf.Empty);
// 置顶、取消置顶话题下的视频需要cms先去判断该视频是否可以放在话题中
rpc StickTopicVideo(StickTopicVideoReq) returns (.google.protobuf.Empty);
rpc SetStickTopicVideo(SetStickTopicVideoReq) returns (.google.protobuf.Empty);
// 注意:该接口不支持复杂条件,当以下三种同时请求的时候只会按顺序选择一种进行返回:
// 话题name查找接口不区分隐藏返回数组但是暂时只会完全匹配
// 话题隐藏列表接口,按照时间反向排序
// 话题推荐列表接口,按照热度反向排序,其中第一页会包含置顶话题
rpc ListCmsTopics(ListCmsTopicsReq) returns (ListCmsTopicsReply);
// 修改话题简介topic_id必传传直接放在http请求里
rpc UpdateTopicDesc(TopicInfo) returns (.google.protobuf.Empty);
rpc UpdateTopicState(TopicInfo) returns (.google.protobuf.Empty);
// 话题详情页,含话题信息+视频信息
// 使用video-c的topic/detail接口php内部转换成cms逻辑
// 根据svid返回topic_id列表
rpc VideoTopic(VideoTopicReq) returns (VideoTopicReply);
}
message TopicVideoItem {
int64 topic_id = 1;
int64 svid = 2;
double score = 3;
int32 state = 4;
}
message VideoTopicReq {
int64 svid = 1[(gogoproto.moretags)='form:"svid"'];
}
message VideoTopicReply {
repeated TopicVideoItem list = 1;
}
message UpdateTopicStateReq {
int64 topic_id = 1[(gogoproto.moretags)='form:"topic_id"'];
int32 op = 2[(gogoproto.moretags)='form:"op"'];// 0表示通过1表示下架
}
message TopicInfo {
int64 topic_id = 1[(gogoproto.moretags)='form:"topic_id"'];
string name = 2;
string desc = 3[(gogoproto.moretags)='form:"desc"'];
double score = 4;
int32 state = 5[(gogoproto.moretags)='form:"state"'];// 0表示通过1表示下架
int32 hot_type = 6[(gogoproto.jsontag)="hot_type"];
string cover_url = 7[(gogoproto.moretags)='form:"cover_url"'];
}
message TitleExtraItem {
int64 id = 1[(gogoproto.jsontag) = "id"];
int64 type = 2[(gogoproto.jsontag) = "type"];
string name = 3[(gogoproto.jsontag) = "name"];
int64 start = 4[(gogoproto.jsontag) = "start"];
int64 end = 5[(gogoproto.jsontag) = "end"];
string scheme = 6[(gogoproto.jsontag) = "scheme"];
}
// 用于传递给上游的extension通过序列化赋值给extension
message VideoExtension {
int64 svid = 1;
string extension = 2; // 序列化后的Extension会放在这里
}
// 结构化的extension真正的extension
message Extension {
repeated TitleExtraItem title_extra = 1;
}