378 lines
8.9 KiB
Plaintext
378 lines
8.9 KiB
Plaintext
syntax = "v1"
|
|
|
|
info (
|
|
title: "电台业务服务API"
|
|
desc: "频道、节目、订阅、互动、支付、VIP、音色等HTTP接口"
|
|
author: "sundynix"
|
|
version: "v1.0.0"
|
|
)
|
|
|
|
type (
|
|
// ---------- 通用 ----------
|
|
IdReq {
|
|
Id string `json:"id"`
|
|
}
|
|
IdPathReq {
|
|
Id string `path:"id"`
|
|
}
|
|
IdsReq {
|
|
Ids []string `json:"ids"`
|
|
}
|
|
// ---------- 分类 ----------
|
|
CategoryReq {
|
|
Name string `json:"name"`
|
|
Icon string `json:"icon,optional"`
|
|
Sort int `json:"sort,optional"`
|
|
}
|
|
CategoryUpdateReq {
|
|
Id string `json:"id"`
|
|
Name string `json:"name,optional"`
|
|
Icon string `json:"icon,optional"`
|
|
Sort int `json:"sort,optional"`
|
|
}
|
|
CategoryListReq {
|
|
Current int `json:"current,optional"`
|
|
PageSize int `json:"pageSize,optional"`
|
|
Name string `json:"name,optional"`
|
|
}
|
|
// ---------- 频道 ----------
|
|
ChannelReq {
|
|
CategoryId string `json:"categoryId"`
|
|
Name string `json:"name"`
|
|
Description string `json:"description,optional"`
|
|
IsFree int `json:"isFree,optional"`
|
|
IsVipOnly int `json:"isVipOnly,optional"`
|
|
MonthlyPrice int `json:"monthlyPrice,optional"`
|
|
QuarterlyPrice int `json:"quarterlyPrice,optional"`
|
|
AnnualPrice int `json:"annualPrice,optional"`
|
|
Cover string `json:"cover,optional"`
|
|
Tags string `json:"tags,optional"`
|
|
Sort int `json:"sort,optional"`
|
|
}
|
|
ChannelUpdateReq {
|
|
Id string `json:"id"`
|
|
CategoryId string `json:"categoryId,optional"`
|
|
Name string `json:"name,optional"`
|
|
Description string `json:"description,optional"`
|
|
IsFree int `json:"isFree,optional"`
|
|
IsVipOnly int `json:"isVipOnly,optional"`
|
|
MonthlyPrice int `json:"monthlyPrice,optional"`
|
|
QuarterlyPrice int `json:"quarterlyPrice,optional"`
|
|
AnnualPrice int `json:"annualPrice,optional"`
|
|
Cover string `json:"cover,optional"`
|
|
Tags string `json:"tags,optional"`
|
|
Sort int `json:"sort,optional"`
|
|
Status int `json:"status,optional"`
|
|
}
|
|
ChannelListReq {
|
|
Current int `json:"current,optional"`
|
|
PageSize int `json:"pageSize,optional"`
|
|
CategoryId string `json:"categoryId,optional"`
|
|
Name string `json:"name,optional"`
|
|
}
|
|
// ---------- 节目 ----------
|
|
ProgramReq {
|
|
ChannelId string `json:"channelId"`
|
|
Title string `json:"title"`
|
|
Description string `json:"description,optional"`
|
|
Content string `json:"content,optional"`
|
|
Cover string `json:"cover,optional"`
|
|
AudioId string `json:"audioId,optional"`
|
|
Tags string `json:"tags,optional"`
|
|
}
|
|
ProgramUpdateReq {
|
|
Id string `json:"id"`
|
|
ChannelId string `json:"channelId,optional"`
|
|
Title string `json:"title,optional"`
|
|
Description string `json:"description,optional"`
|
|
Content string `json:"content,optional"`
|
|
Cover string `json:"cover,optional"`
|
|
AudioId string `json:"audioId,optional"`
|
|
Tags string `json:"tags,optional"`
|
|
Status int `json:"status,optional"`
|
|
}
|
|
ProgramListReq {
|
|
Current int `json:"current,optional"`
|
|
PageSize int `json:"pageSize,optional"`
|
|
ChannelId string `json:"channelId,optional"`
|
|
Title string `json:"title,optional"`
|
|
}
|
|
// ---------- 音色 ----------
|
|
VoiceReq {
|
|
SpeakerId string `json:"speakerId"`
|
|
Name string `json:"name"`
|
|
Description string `json:"description,optional"`
|
|
Gender string `json:"gender,optional"`
|
|
Icon string `json:"icon,optional"`
|
|
AudioId string `json:"audioId,optional"`
|
|
Sort int `json:"sort,optional"`
|
|
IsDefault int `json:"isDefault,optional"`
|
|
}
|
|
VoiceUpdateReq {
|
|
Id string `json:"id"`
|
|
Name string `json:"name,optional"`
|
|
Description string `json:"description,optional"`
|
|
Gender string `json:"gender,optional"`
|
|
Icon string `json:"icon,optional"`
|
|
AudioId string `json:"audioId,optional"`
|
|
Sort int `json:"sort,optional"`
|
|
IsDefault int `json:"isDefault,optional"`
|
|
Status int `json:"status,optional"`
|
|
}
|
|
VoiceListReq {
|
|
Current int `json:"current,optional"`
|
|
PageSize int `json:"pageSize,optional"`
|
|
Gender string `json:"gender,optional"`
|
|
}
|
|
// ---------- 订阅 ----------
|
|
SubscribeReq {
|
|
ChannelId string `json:"channelId"`
|
|
PlanType string `json:"planType"`
|
|
}
|
|
// ---------- 互动 ----------
|
|
LikeReq {
|
|
ProgramId string `json:"programId"`
|
|
}
|
|
FavoriteReq {
|
|
ProgramId string `json:"programId"`
|
|
}
|
|
CommentReq {
|
|
ProgramId string `json:"programId"`
|
|
Content string `json:"content"`
|
|
ParentId string `json:"parentId,optional"`
|
|
}
|
|
HistoryReq {
|
|
ProgramId string `json:"programId"`
|
|
Duration int `json:"duration,optional"`
|
|
}
|
|
HistoryListReq {
|
|
Current int `json:"current,optional"`
|
|
PageSize int `json:"pageSize,optional"`
|
|
}
|
|
// ---------- 支付 ----------
|
|
CreatePayOrderReq {
|
|
ChannelId string `json:"channelId,optional"`
|
|
PlanType string `json:"planType"`
|
|
OrderType string `json:"orderType"`
|
|
}
|
|
// ---------- VIP ----------
|
|
VipConfigListReq {
|
|
Current int `json:"current,optional"`
|
|
PageSize int `json:"pageSize,optional"`
|
|
}
|
|
// ---------- 数据分析 ----------
|
|
AnalyticsReq {
|
|
StartDate string `json:"startDate,optional"`
|
|
EndDate string `json:"endDate,optional"`
|
|
}
|
|
// ---------- TTS ----------
|
|
TtsReq {
|
|
Text string `json:"text"`
|
|
SpeakerId string `json:"speakerId,optional"`
|
|
}
|
|
)
|
|
|
|
// ========== 无需鉴权 ==========
|
|
@server (
|
|
prefix: /api/radio
|
|
group: callback
|
|
)
|
|
service radio-api {
|
|
@doc "微信支付回调"
|
|
@handler WechatPayCallback
|
|
post /callback/wechatpay
|
|
}
|
|
|
|
// ========== 需要鉴权 ==========
|
|
@server (
|
|
prefix: /api/radio
|
|
group: category
|
|
jwt: Auth
|
|
)
|
|
service radio-api {
|
|
@doc "创建分类"
|
|
@handler CreateCategory
|
|
post /category/create (CategoryReq)
|
|
|
|
@doc "更新分类"
|
|
@handler UpdateCategory
|
|
put /category/update (CategoryUpdateReq)
|
|
|
|
@doc "删除分类"
|
|
@handler DeleteCategory
|
|
delete /category/delete (IdsReq)
|
|
|
|
@doc "分类列表"
|
|
@handler GetCategoryList
|
|
post /category/list (CategoryListReq)
|
|
}
|
|
|
|
@server (
|
|
prefix: /api/radio
|
|
group: channel
|
|
jwt: Auth
|
|
)
|
|
service radio-api {
|
|
@doc "创建频道"
|
|
@handler CreateChannel
|
|
post /channel/create (ChannelReq)
|
|
|
|
@doc "更新频道"
|
|
@handler UpdateChannel
|
|
put /channel/update (ChannelUpdateReq)
|
|
|
|
@doc "删除频道"
|
|
@handler DeleteChannel
|
|
delete /channel/delete (IdsReq)
|
|
|
|
@doc "频道列表"
|
|
@handler GetChannelList
|
|
post /channel/list (ChannelListReq)
|
|
|
|
@doc "频道详情"
|
|
@handler GetChannelDetail
|
|
get /channel/:id (IdPathReq)
|
|
}
|
|
|
|
@server (
|
|
prefix: /api/radio
|
|
group: program
|
|
jwt: Auth
|
|
)
|
|
service radio-api {
|
|
@doc "创建节目"
|
|
@handler CreateProgram
|
|
post /program/create (ProgramReq)
|
|
|
|
@doc "更新节目"
|
|
@handler UpdateProgram
|
|
put /program/update (ProgramUpdateReq)
|
|
|
|
@doc "删除节目"
|
|
@handler DeleteProgram
|
|
delete /program/delete (IdsReq)
|
|
|
|
@doc "节目列表"
|
|
@handler GetProgramList
|
|
post /program/list (ProgramListReq)
|
|
|
|
@doc "节目详情"
|
|
@handler GetProgramDetail
|
|
get /program/:id (IdPathReq)
|
|
|
|
@doc "TTS生成音频"
|
|
@handler GenerateTts
|
|
post /program/tts (TtsReq)
|
|
}
|
|
|
|
@server (
|
|
prefix: /api/radio
|
|
group: voice
|
|
jwt: Auth
|
|
)
|
|
service radio-api {
|
|
@doc "创建音色"
|
|
@handler CreateVoice
|
|
post /voice/create (VoiceReq)
|
|
|
|
@doc "更新音色"
|
|
@handler UpdateVoice
|
|
put /voice/update (VoiceUpdateReq)
|
|
|
|
@doc "删除音色"
|
|
@handler DeleteVoice
|
|
delete /voice/delete (IdsReq)
|
|
|
|
@doc "音色列表"
|
|
@handler GetVoiceList
|
|
post /voice/list (VoiceListReq)
|
|
}
|
|
|
|
@server (
|
|
prefix: /api/radio
|
|
group: subscription
|
|
jwt: Auth
|
|
)
|
|
service radio-api {
|
|
@doc "我的订阅列表"
|
|
@handler GetMySubscriptions
|
|
get /subscription/list
|
|
}
|
|
|
|
@server (
|
|
prefix: /api/radio
|
|
group: interaction
|
|
jwt: Auth
|
|
)
|
|
service radio-api {
|
|
@doc "点赞/取消点赞"
|
|
@handler ToggleLike
|
|
post /interaction/like (LikeReq)
|
|
|
|
@doc "收藏/取消收藏"
|
|
@handler ToggleFavorite
|
|
post /interaction/favorite (FavoriteReq)
|
|
|
|
@doc "评论节目"
|
|
@handler CommentProgram
|
|
post /interaction/comment (CommentReq)
|
|
|
|
@doc "记录播放历史"
|
|
@handler RecordHistory
|
|
post /interaction/history (HistoryReq)
|
|
|
|
@doc "播放历史列表"
|
|
@handler GetHistoryList
|
|
post /interaction/history/list (HistoryListReq)
|
|
|
|
@doc "我的收藏列表"
|
|
@handler GetFavoriteList
|
|
post /interaction/favorite/list (HistoryListReq)
|
|
}
|
|
|
|
@server (
|
|
prefix: /api/radio
|
|
group: pay
|
|
jwt: Auth
|
|
)
|
|
service radio-api {
|
|
@doc "创建支付订单"
|
|
@handler CreatePayOrder
|
|
post /pay/create (CreatePayOrderReq)
|
|
}
|
|
|
|
@server (
|
|
prefix: /api/radio
|
|
group: vip
|
|
jwt: Auth
|
|
)
|
|
service radio-api {
|
|
@doc "VIP配置列表"
|
|
@handler GetVipConfigList
|
|
post /vip/list (VipConfigListReq)
|
|
|
|
@doc "我的VIP信息"
|
|
@handler GetMyVipInfo
|
|
get /vip/info
|
|
}
|
|
|
|
@server (
|
|
prefix: /api/radio
|
|
group: analytics
|
|
jwt: Auth
|
|
)
|
|
service radio-api {
|
|
@doc "数据概览"
|
|
@handler GetAnalyticsOverview
|
|
post /analytics/overview (AnalyticsReq)
|
|
|
|
@doc "频道数据"
|
|
@handler GetChannelAnalytics
|
|
post /analytics/channel (AnalyticsReq)
|
|
|
|
@doc "用户数据"
|
|
@handler GetUserAnalytics
|
|
post /analytics/user (AnalyticsReq)
|
|
}
|
|
|