更新于2025-4-21
企业直播接口文档后端接口对接路径 系统对接流程独立授权对接获取token前端观看页对接webview方式(token当天有效)webview方式(token一次有效)iframe方式(token当天有效)iframe方式(token一次有效)仅嵌入视频播放器事件监听及回调直播管理创建直播直播状态回调结束直播修改直播全部直播今日直播已结束直播单场直播信息删除直播间获取推流地址获取拉流地址设置拉流地址(针对拉流直播模式)获取拉流地址(针对拉流直播模式)跳转到直播控制台页面跳转到企业设置页设置欢迎语设置聊天词库录播管理创建录播视频库列表录播列表视频库视频库列表数据统计数据总概览全部直播数据汇总单场直播数据汇总单场直播用户分析单场直播商品分析用户观看数据签到结果答题统计单场直播数据分析答题--整场直播成绩概览答题--个人成绩答题--题目明细邀请--邀请榜邀请--邀请明细抽奖--查询抽奖ID抽奖--抽奖奖品设置列表抽奖--中奖明细连麦--连麦统计连麦--连麦明细回放--获取回放积分--单场直播所用积分规则积分--获取单场直播的用户积分明细敏感词管理上传敏感词用户画像用户画像列表用户画像详情单个用户行为统计单个用户观看记录商城系统对接企业商品列表企业添加商品企业修改商品企业删除商品直播间关联的商品列表直播间设置商品(关联、上下架、商品推屏)删除直播间关联商品优惠券优惠券列表添加/修改优惠券删除优惠券直播间关联的优惠券列表直播间设置优惠券(关联、上下架、删除)领取优惠券(对接方提供)聊天记录获取历史聊天记录讲师创建讲师(主播)账号主播(讲师)列表直播助手直播助手列表添加/修改直播助手删除直播助手子账号创建子账号修改子账号子账号启用/禁用获取子账号权限设置子账号权限获取子账号列表主账号修改账号信息红包及观众提现对接虚拟充值到直播平台红包列表查询红包领取详情查询第三方用户零钱第三方用户提现后回调接口
生产环境地址:
base_url = https://api.youinsh.com/livestreamapi/
测试环境地址:base_url = https://api.youinsh.com/saastestapi/
所有的接口请求, 请务必以 / 结尾 ,如请求token时,接口为 {base_url}/v1/account/auth-token/, 必须是以 / 结尾。
说明:
原有已经对接的客户,接口依然继续可以使用,以下是优化版对接流程。
后端流程
前端流程
1 前端 :用户进入观看页,支持如下方式对接:
(1)使用webview载入如下地址:{base_url}/v1/user/watch_from_app_xcx,携带next等参数,后端会根据next参数重定向到对应的观看页,具体传参见下面后续文档。
(2)使用iframe嵌套观看页地址,具体传参见后续文档。
2 前端 : 如果只是嵌入视频,而非整个观看页,则嵌入地址为:
具体说明见后续文档
3 app端嵌入H5页面 : 需要在安卓及ios上做一些参数配置,具体参考demo,地址为 https://cdn.youinsh.cn/sdk/android_ios_h5_page_demo.zip
用户是否可以观看直播,由第三方(对接方)来确定。如对接方要求只有在平台付过费的用户才可以观看此直播,则可以使用此对立授权模式进行对接。具体对接方案,见文档 https://www.kdocs.cn/view/l/cpQAzvFkZi6J
api地址
POST {base_url}/v1/account/auth-token/
描述
根据appid获取token,传入的参数appid和secret请登录后台,在企业设置->密钥管理 获取。如下图示:
请求参数
参数 | 类型 | 是否必须 | 描述 |
---|---|---|---|
app_id | string | 是 | 商户appid |
app_secret | string | 是 | 商户密钥 |
响应说明
x返回:
{
"result": {
"exprise_time": 1617936961,// 过期时间,通常为7天有效期
"access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjo0MjgsImVtYWlsIjoiIiwiZXhwIjoxNjE3OTM2OTYxLCJ1c2VybmFtZSI6ImRjdGVzdCIsIm9yaWdfaWF0IjoxNjE3MzMyMTYxfQ.yOAWUeq7lOBnP1dpEEJO8IzjdW0aPadUaOBB52w9yIU" // 用户授权token,接下来用户对接用到这个token
},
"code": 200, // 状态码 200 成功, 400 失败
"msg": "success" // 状态描述
}
使用说明
此access_token用于下面接口的调用,调用时在header中携带此token,对应参数为Authorization,请求头举例如下:
参数 | 类型 | 值 | 说明 |
---|---|---|---|
Content-Type | string | application/json | - |
Authorization | string | jwt eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.e yJ1c2VybmFtZSI 6ImFkbWluIiwib3JpZ19pYXQiOjE2MTg yNzkzNjMsImV4cCI6MTYxODg4NDE2M | 在接口返回的 token前加 jwt 和空格 |
api地址
GET {base_url}/v1/user/watch_from_app_xcx/ 注意,这里是v1版本,v2版本是token一次有效
描述
前端调用,app或者小程序,通过webview打开此地址,不支持用iframe嵌套该地址 ,把H5观看页嵌入APP或者小程序中。用户点击观看列表里面某个直播时对应的跳转请求地址。参数必须有next,直播平台后端会根据next重定向到对应的观看页面。
此接口,与上面v2版本的接口对比,主要是去掉了timestamp参数及auth_token的有效期不同。v1版本接口的auth_token当天内一直有效,第二天失效。而v2版本的auth_token当天仅一次有效,第二次使用则失效。 请对接方根据自己的业务需求,选择对应的接口进行对接。
请求参数
参数 | 类型 | 是否必须 | 描述 |
---|---|---|---|
user_id | string | 是 | 用户id(对接方) |
auth_token | string | 是 | md5(secret+当前日期+userid),如今天 2022.4.19,userid为23981,secret为qwue23fufeaf32eert,则计算md5(qwue23fufeaf32eert2022041923981)=2f46e43d2defab58cd7c61352b96af40,可以在http://www.ip33.com/md5.html进行在线验算,注意取小写,不要大写 |
nick_name | string | 是 | 昵称 |
head_image | string | 是 | 头像,https地址,且需要支持跨域访问 |
enterprise_id | string | 是 | 企业ID,每个企业都是固定的,通常是观看页地址中对应的enterprise_id的值 |
next | string | 是 | 观看页地址,请用URLEncode进行编码后作为参数传递。可以参考网站 https://www.urlencoder.cn/ 对结果进行比对 拼接方式: 手机观看页地址: https://live.youinsh.com/livestream/watch/?liveid={{直播id}}&enterprise_id={{企业id}}&env=xxx&extra_info=xxx PC观看页地址: https://live.youinsh.com/livestream/pcwatch/?liveid={{直播id}}&enterprise_id={{企业id}}&extra_info=xxx 测试环境地址如下: 手机观看页地址: https://live.youinsh.com/saastest/watch/?liveid={{直播id}}&enterprise_id={{企业id}} &env=xxx&extra_info=xxx PC观看页地址:https://live.youinsh.com/saastest/pcwatch/?liveid={{直播id}}&enterprise_id={{企业id}}&extra_info=xxx 前边固定路由,后面拼接上直播id和企业id参数, 其中env={app,h5,xiaochengxu 三选一} 非必传,当对接过程出现无法区分是app还是h5或者小程序时,根据双方约定的来传参. extra_info=xxx, 用于商品跳转到对应链接的时候, 直播平台会将这个参数附带在商品链接后面,比如商品详情页是H5 ,那么就拼在商品H5链接的后面&extra_info=xxx 。 |
示例说明
GET
{base_url}/v1/user/watch_from_app_xcx/?user_id=12abc&auth_token=389ce6f18cd2051e80af61941af6b9f1&enterprise_id=202&nick_name=zzq&head_image=https://cdn.youinsh.cn/saastest/image/mgDbUFvvQVHme2bBT7GBPR&next=https%3A%2F%2Flive.youinsh.com%2Fsaastest%2Fpcwatch%2F%3Fliveid%3D7720%26enterprise_id%3D202
对应Query参数:
{
"user_id": "12abc",
"auth_token": "389ce6f18cd2051e80af61941af6b9f1",
"enterprise_id": 202,
"nick_name": zzq,
"head_image": "https://cdn.youinsh.cn/saastest/image/mgDbUFvvQVHme2bBT7GBPR",
"next":"https%3A%2F%2Flive.youinsh.com%2Fsaastest%2Fpcwatch%2F%3Fliveid%3D7720%26enterprise_id%3D202"
}
返回说明
用户点击这样的URL地址后,直播平台后端会直接重定向到对应next所传递的url地址的页面
api地址
GET {base_url}/v2/user/watch_from_app_xcx/ , 注意这里是v2版本,v1版本是token当天有效
描述
前端调用,app或者小程序,通过webview打开此地址,不支持用iframe嵌套该地址, 把H5观看页嵌入APP或者小程序中。用户点击观看列表里面某个直播时对应的跳转请求地址。参数必须有next,直播平台后端会根据next重定向到对应的观看页面。
此接口,与v1版本的接口对比,主要是参数增加timestamp及auth_token的有效期不同。v2版本接口的auth_token当天一次有效,第二次使用无效,而v1版本的auth_token当天内一直有效,第二天失效。 “一次有效”的场景,适合会员观看、付费观看的场景,对链接的时效性、安全性有较高要求,仅生效一次,如被盗链、也无法打开直播间观看。
请求参数
参数 | 类型 | 是否必须 | 描述 |
---|---|---|---|
user_id | string | 是 | 用户id(对接方) |
auth_token | string | 是 | md5(secret+当前日期+timestamp+userid),如今天 2023.7.5,userid为23981,timestamp为1687663740,secret为qwue23fufeaf32eert,则计算md5(qwue23fufeaf32eert20230705168766374023981)=e14c1e1fbba4bbb7e4cda389e30afd45,可以在http://www.ip33.com/md5.html进行在线验算 此auth_token 用过一次就作废,用户第二次进入直播间,需要重新根据时间戳计算此auth_token,注意取小写,不要大写 |
nick_name | string | 是 | 昵称 |
head_image | string | 是 | 头像,https地址,且需要支持跨域访问 |
enterprise_id | string | 是 | 企业ID,每个企业都是固定的,通常是观看页地址中对应的enterprise_id的值 |
timestamp | int | 是 | 当前时间戳,用于计算auth_token时用的时间戳 |
next | string | 是 | 观看页地址,请用URLEncode进行编码后作为参数传递。 拼接方式: 手机观看页地址: https://live.youinsh.com/livestream/watch/?liveid={{直播id}}&enterprise_id={{企业id}}&env=xxx&extra_info=xxx PC观看页地址: https://live.youinsh.com/livestream/pcwatch/?liveid={{直播id}}&enterprise_id={{企业id}}&extra_info=xxx 测试环境地址如下: 手机观看页地址: https://live.youinsh.com/saastest/watch/?liveid={{直播id}}&enterprise_id={{企业id}} &env=xxx&extra_info=xxx PC观看页地址:https://live.youinsh.com/saastest/pcwatch/?liveid={{直播id}}&enterprise_id={{企业id}}&extra_info=xxx 前边固定路由,后面拼接上直播id和企业id参数, 其中env={app,h5,xiaochengxu 三选一} 非必传,当对接过程出现无法区分是app还是h5或者小程序时,根据双方约定的来传参 extra_info=xxx, 用于商品跳转到对应链接的时候, 直播平台会将这个参数附带在商品链接后面,比如商品详情页是H5 ,那么就拼在商品H5链接的后面&extra_info=xxx 。 |
示例说明
xxxxxxxxxx
GET
{base_url}/v2/user/watch_from_app_xcx/?user_id=12abc&auth_token=5acaabfb636ad8a5c923abb2e1f7a48c&enterprise_id=202×tamp=1687663740&nick_name=zzq&head_image=https://cdn.youinsh.cn/saastest/image/mgDbUFvvQVHme2bBT7GBPR&next=https%3A%2F%2Flive.youinsh.com%2Fsaastest%2Fpcwatch%2F%3Fliveid%3D7720%26enterprise_id%3D202
对应Query参数:
{
"user_id": "12abc",
"auth_token": "5acaabfb636ad8a5c923abb2e1f7a48c",
"timestamp": 1687663740,
"enterprise_id": 202,
"nick_name": zzq,
"head_image": "https://cdn.youinsh.cn/saastest/image/mgDbUFvvQVHme2bBT7GBPR",
"next":"https%3A%2F%2Flive.youinsh.com%2Fsaastest%2Fpcwatch%2F%3Fliveid%3D7720%26enterprise_id%3D202"
}
返回说明
用户点击这样的URL地址后,直播平台后端会直接重定向到对应next所传递的url地址的页面
前端H5、小程序或者PC浏览器,通过iframe嵌套方式,把直播观看页嵌入H5,小程序或者PC浏览器中。
嵌入iframe中的观看页地址说明如下:
生产环境地址如下:
手机观看页地址:
xxxxxxxxxx
https://live.youinsh.com/livestream/watch/?liveid=xxx&enterprise_id=xxx&wxauth=1&env=h5&user_id=xxx&auth_token=xxx&nick_name=xxx&head_image=xxx (注意路由是livestream而不是livestreamapi)
PC观看页地址:
xxxxxxxxxx
https://live.youinsh.com/livestream/pcwatch/?liveid=xxx&enterprise_id=xxx&wxauth=1&env=h5&user_id=xxx&auth_token=xxx&nick_name=xxx&head_image=xxx (注意路由是livestream而不是livestreamapi)
测试环境地址如下: 手机观看页地址:
xxxxxxxxxx
https://live.youinsh.com/saastest/watch/?liveid=xxx&enterprise_id=xxx&wxauth=1&env=h5&user_id=xxx&auth_token=xxx&nick_name=xxx&head_image=xxx
PC观看页地址:
xxxxxxxxxx
https://live.youinsh.com/saastest/pcwatch/?liveid=xxx&enterprise_id=xxx&wxauth=1&env=h5&user_id=xxx&auth_token=xxx&nick_name=xxx&head_image=xxx
iframe传参参数说明
参数 | 类型 | 是否必须 | 描述 |
---|---|---|---|
liveid | int | 是 | 直播间ID |
enterprise_id | int | 是 | 企业ID,每个企业都是固定的,通常是观看页地址中对应的enterprise_id的值 |
wxauth | int | 是 | 是否是iframe嵌套; 取值1表示使用iframe嵌套,取值0表示不是iframe嵌套 |
env | string | 是 | 当前运行环境,如果是h5嵌套,则取值 h5 ;如果是小程序,则取值为 xiaochengxu |
user_id | string | 是 | 用户id(对接方) |
nick_name | string | 是 | 昵称,请用 URLEncoder 进行编码 |
head_image | string | 是 | 头像,请用 URLEncoder 进行编码,https地址,且需要支持跨域访问 |
auth_token | string | 是 | md5(secret+当前日期+userid),如今天 2022.4.19,userid为23981,secret为qwue23fufeaf32eert,则计算md5(qwue23fufeaf32eert2022041923981)=2f46e43d2defab58cd7c61352b96af40,可以在http://www.ip33.com/md5.html进行在线验算。注意取小写,不要大写 |
特别说明
iframe嵌套时,需要添加 allowfullscreen="true" ,否则可能无法全屏观看视频
通常iframe嵌套出错,在auth_token的计算出问题,可以把原串在http://www.ip33.com/md5.html进行校验
iframe嵌套后,无法进行支付相关的操作(送礼物功能,把礼物置为0元可以正常送礼物),如果有支付需求,需要对接,请联系商务。
本对接方式,auth_token的有效期为当天一直有效,可以多次使用,存在一定风险,懂技术的人可能会扒取到iframe对应的src地址,然后转发给其他人看,而下面对接方式,token仅一次有效,对安全性要求比较高的,建议采用下面的iframe嵌套方式
添加allowfullscreen属性:确保iframe标签包含allowfullscreen属性,这允许iframe内的内容请求全屏模式,使用webkitallowfullscreen属性作为兼容性措施
如果需要连麦,iframe需添加如下属性:allow="microphone;camera;midi;encrypted-media;display-capture;feature_name allow_list;feature_name allow_list" allowfullscreen="true"
前端H5、小程序或者PC浏览器,通过iframe嵌套方式,把直播观看页嵌入H5,小程序或者PC浏览器中。
此接口跟上面接口不同点,在于参数多了timestamp及auth_token算法不同, “一次有效”的场景,适合会员观看、付费观看的场景,对链接的时效性、安全性有较高要求,仅生效一次,如被盗链、也无法打开直播间观看。
嵌入iframe中的观看页地址说明如下:
生产环境地址如下:
手机观看页地址:
xxxxxxxxxx
https://live.youinsh.com/livestream/watch/?liveid=xxx&enterprise_id=xxx&wxauth=1&env=h5&user_id=xxx×tamp=xxx&auth_token=xxx&nick_name=xxx&head_image=xxx (注意路由是livestream而不是livestreamapi)
PC观看页地址:
xxxxxxxxxx
https://live.youinsh.com/livestream/pcwatch/?liveid=xxx&enterprise_id=xxx&wxauth=1&env=h5&user_id=xxx×tamp=xxx&auth_token=xxx&nick_name=xxx&head_image=xxx (注意路由是livestream而不是livestreamapi)
测试环境地址如下: 手机观看页地址:
xxxxxxxxxx
https://live.youinsh.com/saastest/watch/?liveid=xxx&enterprise_id=xxx&wxauth=1&env=h5&user_id=xxx×tamp=xxx&auth_token=xxx&nick_name=xxx&head_image=xxx
PC观看页地址:
xxxxxxxxxx
https://live.youinsh.com/saastest/pcwatch/?liveid=xxx&enterprise_id=xxx&wxauth=1&env=h5&user_id=xxx×tamp=xxx&auth_token=xxx&nick_name=xxx&head_image=xxx
iframe传参参数说明
参数 | 类型 | 是否必须 | 描述 |
---|---|---|---|
liveid | int | 是 | 直播间ID |
enterprise_id | int | 是 | 企业ID,每个企业都是固定的,通常是观看页地址中对应的enterprise_id的值 |
wxauth | int | 是 | 是否是iframe嵌套; 取值1表示使用iframe嵌套,取值0表示不是iframe嵌套 |
env | string | 是 | 当前运行环境,如果是h5嵌套,则取值 h5 ;如果是小程序,则取值为 xiaochengxu |
user_id | string | 是 | 用户id(对接方) |
nick_name | string | 是 | 昵称,请用 URLEncoder 进行编码 |
head_image | string | 是 | 头像,请用 URLEncoder 进行编码,https地址,且需要支持跨域访问 |
timestamp | int | 是 | 当前时间戳,用于计算auth_token时用的时间戳 |
auth_token | string | 是 | md5(secret+当前日期+timestamp+userid),如今天 2023.7.5,userid为23981,timestamp为1687663740,secret为qwue23fufeaf32eert,则计算md5(qwue23fufeaf32eert20230705168766374023981)=e14c1e1fbba4bbb7e4cda389e30afd45,可以在http://www.ip33.com/md5.html进行在线验算 此auth_token 用过一次就作废,用户第二次进入直播间,需要重新根据时间戳计算此auth_token,注意取小写,不要大写 |
特别说明
iframe嵌套时,需要添加 allowfullscreen="true" ,否则可能无法全屏观看视频
通常iframe嵌套出错,在auth_token的计算出问题,可以把原串在http://www.ip33.com/md5.html进行校验
iframe嵌套后,无法进行支付相关的操作(送礼物功能,把礼物置为0元可以正常送礼物),如果有支付需求,需要对接,请联系商务。
此接口跟上面接口不同点,在于参数多了timestamp及auth_token算法不同
添加allowfullscreen属性:确保iframe标签包含allowfullscreen属性,这允许iframe内的内容请求全屏模式,使用webkitallowfullscreen属性作为兼容性措施
如果需要连麦,iframe需添加如下属性:allow="microphone;camera;midi;encrypted-media;display-capture;feature_name allow_list;feature_name allow_list" allowfullscreen="true"
嵌入地址
描述
以iframe或者webview方式,只是嵌入视频播放区域,而不嵌入其他元素。
请求参数
参数 | 类型 | 是否必须 | 描述 |
---|---|---|---|
liveId | int | 是 | 直播id |
enterpriseId | int | 是 | 企业id |
nickName | string | 否 | 用户姓名或昵称,此参数是为方便统计观看时长使用,不传的时候,系统会自动生成 |
sourceUserId | string | 否 | 用户在对接方的唯一标识。不传的时候,系统会自动生成 |
示例
xxxxxxxxxx
示例:
<body style="height:100%">
<iframe border="0" allowfullscreen='true' src="https://live.youinsh.com/livestream/videoPlay2?liveId=xxx&nickName=xxx&enterpriseId=xxx&sourceUserId=xxx" width="800" height="600"></iframe>
</body>
播放器事件如下,会通过 postMessage 把事件告知应用层
事件 | 说明 |
---|---|
isStartPlay | 用户点击播放按钮 |
ready | 播放器视频初始化按钮渲染完毕。播放器UI初始设置需要此事件后触发,避免UI被初始化所覆盖。 |
play | 视频由暂停恢复为播放时触发。 |
pause | 视频暂停时触发。 |
ended | 当前视频播放完毕时触发。 |
waiting | 数据缓冲事件。 |
canplay | 能够开始播放音频和视频时发生,会多次触发,仅H5播放器。 |
startSeek | 开始拖拽,参数返回拖拽点的时间。 |
timeupdate | 播放位置发生改变时触发。 |
completeSeek | 完成拖拽,参数返回拖拽点的时间。 |
error | 错误事件。 |
示例如下:
xxxxxxxxxx
<body>
<iframe id="myLive"
src="https://live.youinsh.com/saastest/videoPlay/?liveId=xxx&enterpriseId=xxx&nickName=qingwang&sourceUserId=1"
frameborder="0"></iframe>
<script>
window.onload = function() {
window.addEventListener('message', function(e) {
console.log("iframe父级", e.data);
// e.data = {
// isStartPlay, //点击开始播放按钮才上报
// liveId, //直播间ID
// user_id: , //用户ID
// type, //播放器事件类型仅上报 ready、play、pause、ended、waiting、canplay、startSeek、timeupdate、completeSeek、error
// 详见阿里播放器事件:https://help.aliyun.com/zh/vod/developer-reference/api-operations?spm=a2c4g.11186623.0.0.3c4e19ca14VXVY
// info,//播放器错误信息type为error才上报
// };
if (e.data.isStartPlay) {
let myLive = document.getElementById('myLive')
let win = myLive.contentWindow;
win.postMessage({
play: "true"
}, "*");
}
})
}
</script>
</body>
api地址
POST {base_url}/v1/course/system/create_course/
描述
调用此接口创建直播
请求参数
参数 | 类型 | 是否必须 | 描述 |
---|---|---|---|
image | string | 是 | 直播封面图 |
isOpen | bool | 否 | 是否公开默认公开True:公开 False:不公开 |
play_mode | int | 否 | 直播类型1:竖屏, 2:横屏 。如果使用指定的APP直播助手进行直播,则只能选择竖屏直播 |
start_time | date | 是 | 直播开始时间 |
stream_url_type | string | 是 | 直播推流方式 1=推流直播(obs等), 2=使用我们提供的APP直播助手进行直播 ,4=定时推流视频, 5=拉流直播 , 8=极速直播,10=新单人网页直播,11=新连麦 |
third_image | string | 否 | 微信分享缩略图 |
title | string | 是 | 直播名称 |
teacher_id | int | 否 | 讲师用户id(直播平台),如果需要对接讲师,请参考文档下面的讲师账号相关接口 |
enterprise_id | int | 否 | 主或子账号id,不传默认为主账号id |
share_text | string | 否 | 微信分享语 |
guide_page | string | 否 | 引导图,用户展示直播介绍内容等,可不传 |
响应说明
xxxxxxxxxx
{
"result": {
"course_id": 382 // 直播id,对应后续文档中所述的的liveid
},
"code": 200, // 状态码 200:成功 400:失败
"msg": "success" // 状态消息
}
对接方需要提供一个回调接口,类似 https://xxx.com/livestatuscallback 这样的接口,直播平台会以post方式调用。
直播平台post方式调用对接方的回调接口,把直播状态告知对接方,post参数包括如下
参数 | 类型 | 是否必须 | 描述 |
---|---|---|---|
liveid | int | 是 | 直播id |
status | int | 是 | # 1-正在直播 2-未开始 3-主播不在 4-已结束 |
active | int | 是 | 1:正常 2:彻底删除不可恢复 3:删除 |
token | string | 是 | Md5(直播id+客户的secret),对接方的后端服务器接口收到此token后,可以根据自己服务器算出的token值跟这个post参数进行比对,比对一致则验签通过。md5计算案例如下:假设直播id为100,客户的secret为ewroowjdofjewajolke,则计算md5(100ewroowjdofjewajolke)=dc34c50cbfcfd5d1355793d93fb75ae6,可以在http://www.ip33.com/md5.html进行在线验算。 |
api地址
POST {base_url}/v1/course/system/end_course/{liveid}/
描述
结束正在进行的直播
请求参数
参数 | 类型 | 是否必须 | 描述 |
---|---|---|---|
liveid | int | 是 | 直播id |
响应说明
xxxxxxxxxx
{
"result": {},
"code": 200, // 状态码 200成功 400失败
"msg": "success" // 状态描述
}
api地址
POST {base_url}/v1/course/system/modify_course/{id}/
描述
对已有直播进行修改相关信息
请求参数
参数 | 类型 | 是否必须 | 描述 |
---|---|---|---|
id | int | 是 | 直播id |
image | string | 否 | 直播封面图 |
isOpen | bool | 否 | 是否公开默认公开True:公开 False:不公开 |
play_mode | int | 否 | 直播类型1:竖屏, 2:横屏 |
start_time | date | 否 | 直播开始时间 |
stream_url_type | string | 否 | 直播推流方式 1=推流直播(obs等), 2=使用我们提供的APP直播助手进行直播 ,4=定时推流视频, 5=拉流直播 ,7=新连麦直播, 8=极速直播,10=新单人网页直播 |
third_image | string | 否 | 微信分享缩略图 |
title | string | 否 | 直播名称 |
teacher_id | int | 否 | 讲师用户id(直播平台) |
响应说明
xxxxxxxxxx
{
"result": {},
"code": 200, // 状态码 200成功 400失败
"msg": "success" // 状态描述
}
api地址
GET {base_url}/v1/course/system/third_list_course/?enterprise_id=xx&page=1
描述
显示全部直播信息,全部直播列表的排序方式为开始时间倒序
请求参数
参数 | 类型 | 是否必须 | 描述 |
---|---|---|---|
enterprise_id | Int | 是 | 企业id字段,查询属于该企业id的全部直播 |
page | Int | 是 | 首次取值page=1,后续根据接口返回值next做判断获取第二页,第三页的直播列表 |
status | string | 否 | 传入此值,表示要获取某些状态的直播列表。可以同时获取多种状态的直播,用英文逗号分开。 直播间状态: 1, '正在直播', 2, '主播不在', 3, '直播结束', 4, '未开始' 比如要获取正在直播和主播不在两种状态的直播,可以传 1,2 |
响应说明
xxxxxxxxxx
{
"next": null, // 下一页链接,全量链接地址,可以直接访问
"result": [
{
"id": 8169,// 直播id
"nickname": "直播平台", // 用户昵称
"user_id": 54519,// 用户id
"title": "sssss",// 直播标题
"image": "https://qncdn.youinsh.cn/saas_pro/image/youincoursecover2.jpeg",// 直播封面图
"third_image": "https://qncdn.youinsh.cn/saas_pro/image/youinwechatsharecard.png",// 第三方分享缩略图
"start_time": "2023-07-26T15:00:59",// 开始时间
"type": 2,// 直播类型(1:直播,2:直播结束生成的录播 3:客户自己上传的录播视频)
"live_status": {// 直播状态
"info": "直播结束", // 状态信息
"status": 3// 直播状态(1:正在直播,2:主播不在,3:直播结束, 4:未开始)
},
"play_mode": 2,// 播放模式(1:竖屏,2:横屏)
"stream_url_type": 2,// 直播类型(1:推流直播, 2:单人网页直播,3:连麦直播 4:定时推流视频)
"description": null,// 直播简介
"isOpen": true,// 是否公开
"isProhibit": false,// 是否全体禁言
"enterprise_id": 4966,// 企业id
"share_card": "https://cdn.youinsh.cn/saas_pro\\image/youinsharecard.png",// 分享卡
"teacher_id": "",// 讲师id
"teacher_name": "",// 讲师姓名
"create_time": "2023-07-26 15:00:39",// 创建时间
"sub_account_name": "",// 企业名称
"isPreview": false, //是否可预览
"dummy_pv_count": 0,//虚拟观看人数
"can_preview": false,//预览中
"isImageText": false,//图文直播开关
"headvideo": {},//暖场视频
"min_dummy_pv": 1, //最小虚拟人数
"max_dummy_pv": 20, //最大虚拟人数
"tp_pv": 0, // 真实访问人次
"dummy_like": 0, // 虚拟点赞数
"tp_like": 0, // 真实点赞数
"max_watch_count": 0, // 最高在线人数
"is_dummy_pv": true, // 是否开启现实虚拟人数
"share_text": null,
"end_time": "2023-07-26 15:01:16"//结束时间
},
],
"code": 200, // 状态码 200成功 400失败
"msg": "success", //状态描述
"previous": null, // 上一页
"count": 3, // 我的直播总数
"pages": 1 // 页码数
}
api地址
GET {base_url}/v1/course/system/third_today_course/?page=1
描述
获取今日直播列表,排序方式为开始时间倒序
请求参数: 同上
响应说明
xxxxxxxxxx
{
"next": null, // 下一页链接,全量链接地址,可以直接访问
"result": [
{
"id": 8169,// 直播id
"nickname": "直播平台", // 用户昵称
"user_id": 54519,// 用户id
"title": "sssss",// 直播标题
"image": "https://qncdn.youinsh.cn/saas_pro/image/youincoursecover2.jpeg",// 直播封面图
"third_image": "https://qncdn.youinsh.cn/saas_pro/image/youinwechatsharecard.png",// 第三方分享缩略图
"start_time": "2023-07-26T15:00:59",// 开始时间
"type": 2,// 直播类型(1:直播,2:直播结束生产的录播 3:客户自己上传的录播)
"live_status": {// 直播状态
"info": "直播结束", // 状态信息
"status": 3// 直播状态(1:正在直播,2:主播不在,3:直播结束, 4:未开始)
},
"play_mode": 2,// 播放模式(1:竖屏,2:横屏)
"stream_url_type": 2,// 直播类型(1:推流直播, 2:单人网页直播,3:连麦直播 4:定时推流视频)
"description": null,// 直播简介
"isOpen": true,// 是否公开
"isProhibit": false,// 是否全体禁言
"enterprise_id": 4966,// 企业id
"share_card": "https://cdn.youinsh.cn/saas_pro\\image/youinsharecard.png",// 分享卡
"teacher_id": "",// 讲师id
"teacher_name": "",// 讲师姓名
"create_time": "2023-07-26 15:00:39",// 创建时间
"sub_account_name": "",// 企业名称
"isPreview": false, //是否可预览
"dummy_pv_count": 0,//虚拟观看人数
"can_preview": false,//预览中
"isImageText": false,//图文直播开关
"headvideo": {},//暖场视频
"min_dummy_pv": 1, //最小每次虚拟增加人数
"max_dummy_pv": 20, //最大每次虚拟增加人数
"tp_pv": 0, // 真实访问人次
"dummy_like": 0, // 虚拟点赞数
"tp_like": 0, // 真是点赞数
"max_watch_count": 0, // 最高在线人数
"is_dummy_pv": true, // 是否开启虚拟人数
"share_text": null,
"end_time": "2023-07-26 15:01:16"//结束时间
},
],
"code": 200, // 状态码 200成功 400失败
"msg": "success", //状态描述
"previous": null, // 上一页
"count": 3, // 我的直播总数
"pages": 1 // 页码数
}
api地址
GET {base_url}/v1/course/system/third_over_course/?page=1
描述
获取已结束直播列表,排序方式为开始时间倒序,返回参数同上
请求参数:
参数 | 类型 | 是否必须 | 描述 |
---|---|---|---|
page | int | 是 | 首次取值page=1,后续根据接口返回值next做判断获取第二页,第三页的直播列表 |
endDate | string | 否 | 获取指定日期后已结束的直播列表 格式为2022-07-01 |
响应说明
xxxxxxxxxx
{
"next": null, // 下一页
"result": [],
"code": 200, // 状态码 200 成功 400 失败
"msg": "success", // 状态描述信息
"previous": null, // 上一页
"count": 0, // 总数
"pages": 1 // 页码数
}
api地址
GET:{base_url}/v1/course/system/live_info/{{pk}}/
描述
获取单场直播的相关信息
请求参数
参数 | 类型 | 是否必须 | 描述 |
---|---|---|---|
pk | int | 是 | 直播id,数字 |
响应说明
xxxxxxxxxx
GET: {base_url}/v1/course/system/live_info/7381/
响应:
{
"result": {
"id": 7381,// 直播id
"user_id": 54519,// 创建此直播的用户id
"nickname": "ss",// 创建此直播用户昵称
"title": "各个", // 直播标题
"image": "https://qncdn.youinsh.cn/saas_pro/image/youincoursecover2.jpeg",// 直播封面图
"third_image": "https://qncdn.youinsh.cn/saas_pro/image/youinwechatsharecard.png",// 第三方分享缩略图
"description": null,// 直播简介
"start_time": "2023-03-03 13:56:51",// 开始时间
"play_mode": 2,// 播放模式(1:竖屏,2:横屏)
"create_time": "2023-02-24T10:14:37.672934",// 创建时间
"live_status": {// 直播状态
"status": 3, // 1, '正在直播', 2, '主播不在', 3, '直播结束', 4, '未开始'
"info": "直播结束" //直播状态描述
},
"share_count": 0, # 分享次数
"like_count": 7, # 点赞数
"dummy_like_count": 7, # 虚拟点赞人数
"uv_count": 5, # 真实观看人数
"pv_count": 13, # 真实访问人次
"dummy_pv_count": 13, # 虚拟访问人次
"current_watch_count": 2, #当前在线人数
"max_watch_count": "11" # 最高在线人数
},
"msg": "success",
"code": 200
}
api地址
POST :{base_url}/v1/course/system/del_course/{{live_id}}/
描述
根据传入的直播间id,删除对应直播间
请求参数
live_id为直播id
响应说明
xxxxxxxxxx
{
"msg": "success",
"code": 200,
"result": {}
}
api地址
GET {base_url}/v1/course/system/get_push_url/{pk}/
描述
获取推流地址
请求参数
参数 | 类型 | 是否必须 | 描述 |
---|---|---|---|
pk | int | 是 | 直播id |
响应说明
xxxxxxxxxx
{
"code": 200, // 状态码
"result": {
"token": "course140616866?e=1618249&token=B1J122TiGvCU4aaxpDW5RCdUv6Q=", // 流密钥
"stream_name": "course140tpzb1616415866", //流名称
"push_url": "rtmp://pili-publish.saaspro.youinsh.net/youin-saas/" // 流地址
},
"msg": "success" // 状态描述信息
}
api地址
GET {base_url}/v1/course/system/get_pull_url/{liveid}/
描述
获取拉流地址
请求参数
参数 | 类型 | 是否必须 | 描述 |
---|---|---|---|
liveid | int | 是 | 直播id |
响应说明
xxxxxxxxxx
{
"result": {
"stream_name": "cou852", # 流名称
"url_hls": "https://xxx.m3u8?sign=2a1845", #m3u8拉流地址
"url_flv": "https://xxx.flv", #flv拉流地址
"url_rtmp": "rtmp://xxx" #rtmp拉流地址
},
"msg": "success",
"code": 200
}
api地址
POST {base_url}/v1/course/system/update_pull_url/{pk}/
描述
设置拉流地址,修改拉流地址时,id必传,首次添加时不需要传
请求参数
参数 | 类型 | 是否必须 | 描述 |
---|---|---|---|
pk | int | 是 | 直播id |
id | int | 否 | 拉流地址编号,第一次设置不要传。第二次及以后设置,需要先调用下面的获取拉流地址接口,获取此id |
pull_url | string | 是 | 拉流地址 |
响应说明
xxxxxxxxxx
{
"code": 200, // 状态码
"result": {
},
"msg": "success" // 状态描述信息
}
api地址
GET {base_url}/v1/course/system/update_pull_url/{pk}/
描述
获取拉流直播已经设置的拉流地址
请求参数
参数 | 类型 | 是否必须 | 描述 |
---|---|---|---|
pk | int | 是 | 直播id |
响应说明
xxxxxxxxxx
{
"msg": "success",
"code": 200,
"result": {
"id": 102,#拉流地址编号。第二次设置拉流地址时用到
"pull_url": "https://www.baidu.com"
}
}
api地址
GET {base_url}/v1/base/back/tolivepage/
描述
此接口跳转到所对应直播的控制台,即后端会重定向到 https://live.youinsh.com/livestream/toLive?id={}&enterprise_id={}&type={} 这个页面
请求参数
参数 | 类型 | 是否必须 | 描述 |
---|---|---|---|
course_id | string | 是 | 直播ID |
enterprise_id | string | 是 | 企业id,取值需要看下面参数user_id属于哪个企业,就要传哪个企业的 enterprise_id |
user_id | string | 是 | 用户id (直播方),管理员对应的user_id,请在企业管理-》账户-》基本信息中查看。子账号对应的user_id,请在企业设置-》账户-》子账户中查看,讲师(主播)账号对应的user_id,请在企业设置-》账户-》讲师账户中查看。如果先设置对接方某人为讲师(主播)身份,可以调用 接口 setTeacher 设置当前人为讲师(主播),否则会报无权限 |
liveType | string | 是 | 直播类型,取值 live 表示是直播,取值recorded表示是录播 |
auth_token | string | 是 | md5(secret+当前日期+user_id),如今天 2022.4.19,user_id为23981,secret为qwue23fufeaf32eert,则计算md5(qwue23fufeaf32eert2022041923981)=2f46e43d2defab58cd7c61352b96af40,可以在http://www.ip33.com/md5.html进行在线验算 |
api地址
GET {base_url}/v1/base/embed/
描述
此接口跳转到中控台的企业设置页面,即后端会重定向到 https://live.youinsh.com/livestream/center?type=3&bar=0&enterprise_id=xx这个页面
请求参数
参数 | 类型 | 是否必须 | 描述 |
---|---|---|---|
enterprise_id | string | 是 | 企业id |
auth_token | string | 是 | md5(企业id+secret+日期),如今天 2022.4.19,企业id为2398,secret为qwue23fufeaf32eert,则计算md5(2398qwue23fufeaf32eert20220419)=fd9f875fc93148ca4ede8fbc18ce92ae,可以在http://www.ip33.com/md5.html进行在线验算 |
next | string | 是 | 跳转的页面地址: 生产:https://live.youinsh.com/livestream/center?type=3&bar=0&enterprise_id=xx 测试:https://live.youinsh.com/saastest/center?type=3&bar=0&enterprise_id=xx 这里的bar=0,表示页面上面蓝色的一行功能控制栏不显示。其中xx为企业id,注意, next参数请用URLEncode进行编码 |
api地址
GET {base_url}/v1/enterprise/system/modify_enterprise/{pk}/
描述
此接口设置指定企业的欢迎语,
请求参数
参数 | 类型 | 是否必须 | 描述 |
---|---|---|---|
pk | int | 是 | 企业id |
welcome | string | 是 | 欢迎语 |
响应说明
xxxxxxxxxx
{
"msg": "success",
"code": 200,
"result": {}
}
api地址
GET {base_url}/v1/user/system/my_custom_message/
描述
此接口设置指定企业的欢迎语,
请求参数
参数 | 类型 | 是否必须 | 描述 |
---|---|---|---|
enterprise_id | int | 否 | 不传时,修改当前用户所属企业 |
message | string | 是 | 聊天词库,以\n分割 |
响应说明
xxxxxxxxxx
{
"msg": "success",
"code": 200,
"result": {}
}
api地址
POST {base_url}/v1/course/system/create_record_course/
描述
创建一场录播
请求参数
参数 | 类型 | 是否必须 | 描述 |
---|---|---|---|
image | string | 否 | 封面图 |
play_mode | string | 否 | 播放模式:1:竖屏, 2:横屏 默认 2 横屏 |
stream_url_type | string | 是 | 直播类型:1=推流直播, 2=单人网页直播,3=连麦直播 4=定时推流视频 |
third_image | string | 否 | 第三方分享缩略图 |
title | string | 是 | 直播标题 |
videoStore_id | int | 是 | 视频库视频id |
响应说明
xxxxxxxxxx
{
"msg": "success",
"code": 200,
"result": {}
}
api地址
GET {base_url}/v1/course/system/record_video_store/
描述
获取视频库列表
请求参数:
无
响应说明
xxxxxxxxxx
{
"result": [
{
"id": 75,
"name": "直播测试-1", // 视频名
"orgName": "bxfdohwtikqqqrsgjc", // 原始文件名
"play_url": "https://saaspro-live.youinsh.net/bxfdohwtikqqqrsgjc.m3u8", // m3u8播放地址
"file_url": "https://saaspro-live.youinsh.net/bxfdohwtikqqqrsgjc.mp4", // mp4播放地址
"fileSize": "293.43 KB", // 文件大小
"transcoding": true, // 转码状态
"video_type": 2, // 视频类型 1宣传片 2 正片
"duration": "5", // 视频时长(秒)
"createDate": "2021-04-02T16:52:13.863404",
"updateDate": "2021-04-02T16:52:13.863458"
},
{
"id": 76,
"name": "直播测试-1",
"orgName": "bxfdohwtikqqqrsgjc",
"play_url": "https://saaspro-live.youinsh.net/bxfdohwtikqqqrsgjc.m3u8",
"file_url": "https://saaspro-live.youinsh.net/bxfdohwtikqqqrsgjc.mp4",
"fileSize": "293.43 KB",
"transcoding": true,
"video_type": 2,
"duration": "5",
"createDate": "2021-04-02T17:07:08.922080",
"updateDate": "2021-04-02T17:07:08.922122"
}
],
"previous": null, // 上一页
"msg": "success", // 状态描述信息
"pages": 1, // 页码数
"next": null, // 下一页
"code": 200, // 状态码
"count": 2 // 总数
}
api地址
GET {base_url}/v1/course/system/create_record_course/?page=1
描述
获取录播列表,排序方式为创建时间倒序
请求参数
参数 | 类型 | 是否必须 | 描述 |
---|---|---|---|
page | int | 是 | 分页获取的页数 |
响应说明
xxxxxxxxxx
{
"result": [
{
"id": 399,
"nickname": "youin-dc", // 创建者姓名
"user_id": 428, // 创建者id
"title": "录播测试-1", // 录播名
"image": "https://pili-vod.livestream.youinsh.net/youincoursecover2.jpeg", // 封面图
"third_image": "https://pili-vod.livestream.youinsh.net/youinwechatsharecard.png", // 第三方分享缩略图
"start_time": null, // 开始时间
"type": 3, // 课程类型 1:直播,2:直播转录播 3:上传录播
"live_status": {
"info": "未开始",
"status": 4
}, // 课程状态信息
"play_mode": 2, // 播放模式 1 竖屏 2 横屏
"active": 1, // 删除状态 0 删除
"apply_form": false, // 是否开启报名表单
"watermark": false, // 是否开启水印
"is_dummy_pv": true, // 虚拟浏览量
"is_open_english": false, // 英文切换
"enterprise_card": true, // 是否开启企业名片
"stream_url_type": 1, // 直播类型 1=推流直播, 2=单人网页直播,3=连麦直播 4=定时推流视频
"description": null, // 描述信息
"chat_room_id": "6066db436e6aa87991ba8051", // 房间号
"stream_type": null, // 直播平台式 1:obs, 2:web, 3:手机
"audit": 1, // 审核状态 1 审核通过
"record_access": true, // 是否允许回放
"marquee": false, // 跑马灯防录屏
"labels": [], // 标签
"isOpen": true, // 是否公开
"isNew": true, // 是否新建
"videoinfo_extend": {
"meeting_status": 0, // 会议开启状态
"assistant_user": null, // 助手
"assistant_user_name": "", // 助手名
"direct_user": null, // 所属者
"direct_user_name": "" // 所属者名
},
"enterprise_id": 56 // 企业id
},
{
"id": 400,
"nickname": "youin-dc",
"user_id": 428,
"title": "录播测试-2",
"image": "https://pili-vod.livestream.youinsh.net/youincoursecover2.jpeg",
"third_image": "https://pili-vod.livestream.youinsh.net/youinwechatsharecard.png",
"start_time": null,
"type": 3,
"live_status": {
"info": "未开始",
"status": 4
},
"play_mode": 2,
"active": 1,
"apply_form": false,
"watermark": false,
"is_dummy_pv": true,
"is_open_english": false,
"enterprise_card": true,
"stream_url_type": 1,
"description": null,
"chat_room_id": "6066dbbdebcaaf783950aac8",
"stream_type": null,
"audit": 1,
"record_access": true,
"marquee": false,
"labels": [],
"isOpen": true,
"isNew": true,
"videoinfo_extend": {
"meeting_status": 0,
"assistant_user": null,
"assistant_user_name": "",
"direct_user": null,
"direct_user_name": ""
},
"enterprise_id": 56
}
],
"previous": null, // 上一页
"msg": "success", // 状态描述
"pages": 1, // 总页数
"next": null, // 下一页
"code": 200, // 状态码
"count": 2 // 总数
}
api地址
GET {base_url}/v1/course/system/record_video_store/
描述
获取视频库里面的视频
请求参数
参数 | 类型 | 是否必须 | 描述 |
---|---|---|---|
start_time | string | 否 | 筛选用,开始时间 |
end_time | string | 否 | 筛选用,结束时间 |
page | int | 是 | 分页页码,从1开始传 |
enterprise_ids | string | 否 | 子账号企业id,多个逗号拼接。如果不传,则获取传入的token对应的企业及其子账号下的所有视频。传了此值,则仅获取对应企业id的视频 |
active | string | 否 | 视频状态:(0=删除的,表示仅获取删除了的视频),(1=正常的,表示获取正常的视频), (0,1=正常和删除的,表示获取正常及已经删除的视频) |
响应说明
xxxxxxxxxx
{
"code": 200, #200=代表业务正常
"msg": "success", #接口结果描述
"next": "https://api.youinsh.com/saastestapi/v1/course/system/record_video_store/?page=2", #下一页的url地址
"count": 283, #视频总数量
"result": [
{
"id": 0, #视频id
"name": "string",#视频名称
"orgName": null,#视频源文件名称
"play_url": "string",#视频播放地址
"file_url": "string",#视频源文件地址
"fileSize": "string",#视频文件大小,带单位MB
"image": "string",#视频封面图
"VideoSize": "string",#视频文件大小
"duration": "string",#视频时长,秒为单位
"createDate": "string"#创建时间
"active":1,#0 删除,1,正常
}
],
"pages": 10,#总的分页数
"previous": null#上一页的url地址
}
api地址
GET {base_url}/v1/statistics/system/total_overview/
描述
此接口提供该账户所有直播的累计统计:包括总观看人数、存储空间使用、累计直播场次、总访问人次、累计观看时长等统计信息。此接口仅供后台管理平台调用,不可给普通观众调用。
请求参数:
无
响应说明
xxxxxxxxxx
{
"msg": "success",
"code": 200,
"result": {
"total_watch_uv": 11, //总观看人数
"total_interact_duration": 0, //会议时长
"total_regularly_push": 0, //定时推流时长
"total_live_duration": 0, //直播时长
"total_turn_push": 0, //转推时长
"total_use_space": 0, //存储空间使用
"total_video_count": 16, //累计直播场次
"total_visit_pv": 147, //总访问人次
"total_watch_duration": "3968.00", //累计观看时长,单位分钟
"total_watch_flow": 0 //总流量消耗
}
}
api地址
get {base_url}/v1/statistics/system/video_list/?page=1
描述
此接口提供该账户下全部直播的访问人次、观看人数、最高在线、流量消耗等统计数据。此接口仅供后台管理平台调用,不可给普通观众调用。
请求参数
参数 | 类型 | 是否必须 | 描述 |
---|---|---|---|
page | int | 是 | 页码 |
响应说明
xxxxxxxxxx
{
"result": [
{
"liveId": "341", // 直播id
"title": "0329web001", // 直播名称
"start_time": "2021-04-01T14:23:05", // 开始时间
"allVisitCount": 0, // 访问人次
"watchUserCount": 0, // 观看人数
"maxOnline": 2, // 最高在线
"flow": 0.0 // 流量消耗
},
{
"liveId": "323",
"title": "0326web001",
"start_time": "2021-03-26T13:15:57",
"allVisitCount": 5,
"watchUserCount": 1,
"maxOnline": 3,
"flow": 68.42
}
],
"previous": null,
"msg": "success",
"pages": 9,
"next": "https://api.youinsh.com/livestreamapi/v1/statistics/system/video_list/?keywords=&page=2",
"code": 200,
"count": 86
}
api地址
GET {base_url}/v1/statistics/system/analysis/{id}/
描述
此接口提供单场直播邀请人数、拉新人数、发送红包总额、总观看人数、分享次数、点赞数、礼物打赏总额、总访问人次、商品点击数、人均观看时长、有效分享人数、最高在线、总访问人数等直播统计数据。此接口仅供后台管理平台调用,不可给普通观众调用。
请求参数
参数 | 类型 | 是否必须 | 描述 |
---|---|---|---|
id | int | 是 | 直播id |
响应说明
xxxxxxxxxx
{
"msg": "succeess",
"code": 200,
"result": {
"id": 1, # 直播ID
"title": "测试", # 直播名称
"start_time": 2023-04-27T15:30:55, # 开始时间
"invite_user_count": 1, // 邀请人数
"new_user_count": 3, // 本场拉新
"red_packet_amount": "0.00", // 红包总额
"watchUserCount": 2, // 总观看人数
"share_count": 1, // 分享次数
"like_count": 0, // 点赞数
"gift_amount": "0.00", // 礼物打赏总额
"pv_count": 5, // 总访问人次
"click_product_count": 0, // 商品点击数
"agv_duration": "133分49秒", // 人均观看时长
"valid_share_count": 4, // 有效分享人数
"max_watch_count": 4, // 最高在线
"uv_count": 3, // 总访问人数
"current_watch_count": "0", // 当前在线人数
“video_flows”:100,//截止到查询前,当前直播消耗的流量,单位GB。以直播结束后第二天13点以后查询的数据为准。后续如果有看回放,则会包含回放流量
}
}
api地址
GET {base_url}/v1/statistics/system/one_video_watch_list/{id}/?third_user_id={third_user_id}
描述
此接口提供单场直播每位用户的邀请人数、有效邀请人数、商品浏览次数、观看时长、首次进入直播间时间、赠送礼物总金额等相关数据统计。此接口仅供后台管理平台调用,不可给普通观众调用。
请求参数
参数 | 类型 | 是否必须 | 描述 |
---|---|---|---|
id | int | 是 | 直播id |
third_user_id | string | 否 | 对接方用户id,当需要查询单个用户的数据统计时,带上此参数 |
page | int | 否 | 页码 |
size | int | 否 | 每页显示数量,最大1000条,默认10条 |
响应说明
xxxxxxxxxx
{
"result": [
{
"other_info": {
"nickname": "The bottle", // 用户昵称
"invite_user_count": 2, // 分享次数
"click_product_count": 0, // 商品浏览次数
"valid_invite_count": 1, // 邀请人数
"total_watch_time": "86.97", // 观看时长,单位分钟
"user_id": "39", // 直播平台用户id
"first_enter": "2021-03-28T13:02:23", // 首次进入
"gift_amount": 0, // 赠送礼物总额
"oath_user_id": "test" //第三方用户ID
"ip": null, //IP
"visit_count": 1, // 访问次数
"sign_count": 0, //签到次数
"is_new": false, // 是否是新用户
"end_leave": null, //离开时间
"region": "未知区域", // 区域
"share_name": "", // 邀请者名称
"image": "", # 用户头像
}
},
{
"other_info": {
"nickname": "666",
"invite_user_count": 0,
"click_product_count": 0,
"valid_invite_count": 0,
"total_watch_time": "180.69",
"user_id": "355",
"first_enter": "2021-03-28T14:31:45",
"gift_amount": 0,
"oath_user_id":"",
"ip": null,
"visit_count": 1,
"sign_count": 0,
"is_new": false,
"end_leave": null,
"region": "未知区域",
"share_name": "",
"image": "",
}
}
],
"previous": null, // 上一页
"msg": "success", // 状态描述信息
"pages": 1, // 页数
"next": null, // 下一页
"code": 200, // 状态码
"count": 2 总数
}
api地址
GET {base_url}/v1/statistics/system/one_video_product_list/{id}/
描述
此接口提供单场直播中每个商品的用户点击次数、商品点击人数等信息。此接口仅供后台管理平台调用,不可给普通观众调用。
请求参数
参数 | 类型 | 是否必须 | 描述 |
---|---|---|---|
id | int | 是 | 直播id |
响应说明
xxxxxxxxxx
GET {base_url}/v1/statistics/system/one_video_product_list/318/
响应:
{
"result": [
{
"product_id": "1", // 商品id
"name": "海南特药", // 商品名
"image":"https://pili-vod.saaspro.youinsh.net/heinanteyao.jpeg", // 商品图
"price":"50" // 价格
"click_count": {
"click_pv": 0, // 商品点击进次数
"click_uv": 1, // 商品点击人数
}
},
],
"previous": null, // 上一页
"msg": "success", // 状态描述信息
"pages": 1, // 页数
"next": null, // 下一页
"code": 200, // 状态码
"count": 1 // 总数
}
api地址
GET:{base_url}/v1/statistics/system/watch_statistic/{liveid}/?page={{page_size}}
描述
此接口返回单场直播用户的观看记录信息,包括观看时长、流量、ip等。此接口仅供后台管理平台调用,不可给普通观众调用。
请求参数
参数 | 类型 | 是否必须 | 描述 |
---|---|---|---|
liveid | int | 是 | 直播id,在url地址栏直接传入 |
page_size | int | 否 | 分页页码值,不传则只返回第一页数据 |
响应说明
xxxxxxxxxx
GET {base_url}/v1/statistics/system/watch_statistic/430/
响应
{
"pages": 1,
"result": {
"watch_records": [
{
"user_id": "526", // 直播平台用户id
"user_name": "5686798", // 用户名
"duration": "1.24", // 观看时长,单位分钟
"ip": "223.166.92.165", // ip
"region": "", // 归属区域
"total_flows": 3438.675, // 流量
"startDate": "2021-04-08T18:47:37", // 开始时间
"endDate": "2021-04-08T18:48:51", // 结束时间
"oath_user_id":"test1" //第三方用户ID
},
{
"user_id": "523",
"user_name": "12345678",
"duration": "0.83",
"ip": "223.166.92.165",
"region": "",
"total_flows": 2301.69375,
"startDate": "2021-04-08T18:44:20",
"endDate": "2021-04-08T18:45:09",
"oath_user_id":"test1"
},
{
"user_id": "9",
"user_name": "直播平台",
"duration": "0.74",
"ip": "223.166.92.165",
"region": "",
"total_flows": 2052.1124999999997,
"startDate": "2021-04-08T18:38:44",
"endDate": "2021-04-08T18:39:28",
"oath_user_id":""
}
],
"start_time": "2021-04-09T15:30:13", // 直播开始时间
"total_duration": "2.81", // 总时长
"end_time": "2021-04-09T15:32:28", // 结束时间
"course_enterprise": "直播平台", // 企业信息
"course_title": "测试-不昂场" // 直播主题
},
"code": 200, // 状态码
"next": null, // 下一页
"msg": "success", // 状态描述信息
"count": 3, // 总数
"previous": null // 上一页
}
api地址
GET:{base_url}/v1/course/system/sign_list/{{liveId}}/
描述
获取当前直播的签到情况。
请求参数
参数 | 类型 | 是否必须 | 描述 |
---|---|---|---|
liveid | int | 是 | 直播id |
响应说明
xxxxxxxxxx
GET {base_url}/v1/course/system/sign_list/1036/
响应
{
"count": 1,
"msg": "success",
"result": [
{
"id": 30, // 签到id
"userId": "11050", // 签到用户id
"third_id": "1234", // 第三方系统用户ID
"nickName": "张书豪", // 昵称
"headImageUrl": "https://thirdwx.qlogo.cn/mmopen/vi_32/Q0j4TwGTfTKD9B92ImKpbEDrGhqabbxljBC6uMQlra0icoBw489L3v1zhIApwZB4hSdveibbJ72dnRwlJploNUXw/132", // 头像
"createDate": "2021-09-09T11:23:45.731640", // 创建日期
"updateDate": "2021-09-09T11:23:45.731684", // 更新日期
"course": 1036 // 直播id
}
],
"next": null,
"pages": 1,
"code": 200,
"previous": null
}
api地址
GET:{base_url}/v1/qev/system/statistic/{{liveId}}/
描述
获取当前直播的答题情况统计
请求参数
参数 | 类型 | 是否必须 | 描述 |
---|---|---|---|
liveid | int | 是 | 直播id |
响应说明
xxxxxxxxxx
GET {base_url}/v1/qev/system/statistic/1036/
响应:
{
"msg": "success",
"result": {
"totle_user_answer": 0, // 总答题人数
"option_answer": [ // 选项答题统计
{
"count": 0, // 题目答题人数
"title": "5+5=?", // 选项题目
"score": null, // 分数
"type": 1, // 选项类型
"sortNo": 1, // 题序
"options": [ // 选项
{
"count": 0, // 选项答题人数
"title": "10", // 选项
"sortNo": 1 // 选项顺序
},
{
"count": 0,
"title": "11",
"sortNo": 2
}
]
}
],
"short_answer": [] // 简答题
},
"code": 200
}
api地址
get {base_url}/v1/award_quiz/score_statistics/{{liveId}}/
描述
获取整场直播成绩概览
请求参数
参数 | 类型 | 是否必须 | 描述 |
---|---|---|---|
liveid | int | 是 | 直播id |
响应说明
xxxxxxxxxx
GET
{base_url}/v1/award_quiz/score_statistics/1863/
响应
{
"result": {
"course_id": "1863", // 直播id
"total_count": 1, // 出题数量
"full_score": "100 %", // 满分
"max_score": "100.0%", // 最高分
"min_score": "100.0%", // 最低分
"avg_score": "100.0%" // 平均分
},
"code": 200,
"msg": "success"
}
api地址
支持两种查询方式,区别在传入的用户id是直播平台的还是第三方对接方的
get {base_url}/v1/award_quiz/personal_score/{{liveId}}/?userId={{userId}}
或者
get {base_url}/v1/award_quiz/personal_score/{{liveId}}/?third_id={{third_id}}
描述
查询个人成绩
请求参数
liveId为直播id,userId为直播平台用户id,third_id为对接方用户id,其中用户id的传值只能是userId或third_id中的一个
响应说明
xxxxxxxxxx
GET
{base_url}/v1/award_quiz/personal_score/1863?userId=19020/
响应
{
"result": {
"userId": "19020", // 答题人账号
"nickname": "张书豪", // 答题人名称
"percent": "100.0%", // 得分
"right_count": 1, // 答对数
"wrong_count": 0, // 答错数
"quiz_data": [ // 答题明细
{
"title": "1+1=?", // 题目
"optionContent": "A" // 选项
}
]
},
"code": 200,
"msg": "success"
}
api地址
get {base_url}/v1/award_quiz/quiz_detail/{{liveId}}/?quiz_id={{quiz_id}}
描述
获取题目明细
请求参数
参数 | 类型 | 是否必须 | 描述 |
---|---|---|---|
liveId | int | 是 | 直播id |
quiz_id | int | 是 | 题目id |
响应说明
xxxxxxxxxx
GET
{base_url}/v1/award_quiz/quiz_detail/1863?quiz_id=212/
响应
{
"result": {
"id": 212, // 题目id
"createDate": "2021-09-24T10:38:21.702189", // 出题时间
"title": "1+1=?", // 题目内容
"right_content": "2", // 正确答案
"response_list": [
{
"nickname": "张书豪", // 答题人名称
"userId": "19020", // 答题人账号
"optionContent": "A", // 填写答案
"is_right": true, // 是否答对
"use_time": "61.35" // 答题用时
}
]
},
"code": 200,
"msg": "success"
}
api地址
GET:{base_url}/v1/course/system/invites/{{liveId}}/?page={{page_size}}
描述
请求参数
参数 | 类型 | 是否必须 | 描述 |
---|---|---|---|
liveId | int | 是 | 直播id |
page_size | int | 是 | 页面,每页返回10条 |
响应说明
xxxxxxxxxx
GET
{base_url}/v1/course/system/invites/1027?page=1/
响应
{
"code": 200,
"msg": "success",
"result": [
{
"image": "https://thirdwx.qlogo.cn/mmopen/vi_32/G5S9SXFiaeQGar3X4iaib8KWC1YUGZXMPiaw2yyTdic1oMsDg0T6jYvgAD4ibwww7s5HKUmsh5eICpnJkmFZdZ1j4tkA/132", // 分享者头像
"nickname": "张书豪", // 分享者名称
"shareUserId": "11050", // 分享者id
"invite_count": 8 // 邀请人数
}
],
"pages": 1,
"count": 1,
"next": null,
"previous": null
}
api地址
支持两种查询方式,区别在传入的用户id是直播平台的还是第三方对接方的,两种方式说明如下:
描述
获取邀请明细
请求参数
参数 | 类型 | 是否必须 | 描述 |
---|---|---|---|
liveId | int | 是 | 直播id |
userId | int | 否 | 用户id,直播平台 |
third_id | int | 否 | 用户id,对接方 |
响应说明
xxxxxxxxxx
GET
{base_url}/v1/course/system/invite_detail/1027?userId=11050/
响应
{
"result": {
"share_nickname": "张书豪", // 邀请人名称
"share_id": "11050", // 邀请人账号
"valid_invite_count": 8, // 有效邀请人数
"user_list": [
{
"nickname": "云淡风~卿", // 被邀请人名称
"owner_id": 230 // 被邀请人账号
},
{
"nickname": "瓶子.....",
"owner_id": 14
},
{
"nickname": "年岁弥生",
"owner_id": 42
},
{
"nickname": "张书豪",
"owner_id": 11050
}
]
},
"code": 200,
"msg": "success"
}
api地址
GET:{base_url}/v1/lottery/system/lottery_info/{{liveid}}/ )
描述
根据直播间id ,获取抽奖ID
请求参数
参数 | 类型 | 是否必须 | 描述 |
---|---|---|---|
liveid | int | 是 | 直播间id |
响应说明
xxxxxxxxxx
"result": {
"id": 751, #抽奖ID,对应下面接口的 lottery_id 值使用
"isOpen": false, #是否显示抽奖按钮
"showWinners": false, #是否显示中将名单
"isRepetition": false,#是否允许重复中奖
"lottery_yard_type": 1,#抽奖码获取方式
"createDate": "2025-04-21T15:38:58.940117"
},
"msg": "success",
"code": 200
api地址
GET:{base_url}/v1/lottery/system/prize_list/{{lottery_id}}/
描述
获取奖品列表
请求参数
参数 | 类型 | 是否必须 | 描述 |
---|---|---|---|
lottery_id | int | 是 | 抽奖id,由上面接口获取 |
响应说明
xxxxxxxxxx
GET
{base_url}/v1/lottery/system/prize_list/2/
响应
{
"result": {
"apply_count": 0,
"upload_count": 0,
"prize_list": [
{
"id": 6, // 奖品id
"name": "iPhone 13", // 奖品名称
"number": 1, // 奖品数量
"isUse": true, // 是否已经开奖
"image": "https://cdn.youinsh.cn/saas_pro/image/h285zcAxvHa5KiruCogtPL", // 奖品图片url
"receive_instruction": "请填写相关信息,我们将尽快为您安排快递寄出。", // 领取说明
"run_type": 1, // 开奖方式
"run_time": null, // 自动开奖时间
"run_scope": 1, // 抽奖范围
"grant_prize_way": 2, // 发放奖品方式
"sortNo": 0, // 奖品排序
"winner_count": 1, // 中奖数量
"receive_form": [ // 领取信息
{
"prize_id": 6, // 奖品id
"name": "姓名", // 名称
"code": "name", // 字段
"hint": "请输入您的真实姓名" // 文字提示
},
{
"prize_id": 6,
"name": "手机号",
"code": "phone",
"hint": "请输入您的手机号"
},
{
"prize_id": 6,
"name": "地址",
"code": "address",
"hint": "请输入您的收货地址"
}
]
},
{
"id": 7,
"name": "NS游戏机",
"number": 1,
"isUse": false,
"image": "https://cdn.youinsh.cn/saas_pro/image/3Dcs4RfTU7Ssf6TnT6DKoe",
"receive_instruction": "请填写相关信息,我们将尽快为您安排快递寄出。",
"run_type": 1,
"run_time": null,
"run_scope": 1,
"grant_prize_way": 2,
"sortNo": 1,
"winner_count": 0,
"receive_form": [
{
"prize_id": 7,
"name": "姓名",
"code": "name",
"hint": "请输入您的真实姓名"
},
{
"prize_id": 7,
"name": "手机号",
"code": "phone",
"hint": "请输入您的手机号"
},
{
"prize_id": 7,
"name": "地址",
"code": "address",
"hint": "请输入您的收货地址"
}
]
},
{
"id": 8,
"name": "按摩仪",
"number": 1,
"isUse": false,
"image": "https://cdn.youinsh.cn/saas_pro/image/kmP7sYDxYvdigSLbZKDX5a",
"receive_instruction": "请填写相关信息,我们将尽快为您安排快递寄出。",
"run_type": 1,
"run_time": null,
"run_scope": 1,
"grant_prize_way": 2,
"sortNo": 2,
"winner_count": 0,
"receive_form": [
{
"prize_id": 8,
"name": "姓名",
"code": "name",
"hint": "请输入您的真实姓名"
},
{
"prize_id": 8,
"name": "手机号",
"code": "phone",
"hint": "请输入您的手机号"
},
{
"prize_id": 8,
"name": "地址",
"code": "address",
"hint": "请输入您的收货地址"
}
]
}
]
},
"msg": "success",
"code": 200
}
api地址
GET:{base_url}/v1/lottery/system/lottery_result/{{prize_id}}/
描述
中奖的详细情况
请求参数
参数 | 类型 | 是否必须 | 描述 |
---|---|---|---|
prize_id | int | 是 | 奖品id |
响应说明
xxxxxxxxxx
GET
{base_url}/v1/lottery/system/lottery_result/1/
响应
{
"pages": 1,
"result": [
{
"userId": "7", // 用户id
"name": "张", // 用户名称
"phone": "13526286822", // 手机号
"prize_name": "电脑一台" // 奖品名称
“oath_user_id”:“32678”,//第三方用户id
}
],
"msg": "success",
"next": null,
"count": 1,
"code": 200,
"previous": null
}
api地址
GET:{base_url}/v1/statistics/system/iliv_list/{{liveId}}/
描述
获取连麦时长统计
请求参数
参数 | 类型 | 是否必须 | 描述 |
---|---|---|---|
liveId | int | 是 | 直播id |
响应说明
xxxxxxxxxx
GET
{base_url}/v1/statistics/system/iliv_list/325/
响应
{
"code": 200,
"msg": "success",
"result": [
{
"other_info": {
"user_id": "9", // 用户id
"nickname": "直播平台", // 用户昵称
"image": "https://cdn.youinsh.cn/livestream/image/mgDbUFvvQVHme2bBT7GBPR", // 用户头像
"first_enter": "2021-03-26T15:18:03", // 首次进入时间
"iliv_time": "42.50" // 连麦时长
}
},
{
"other_info": {
"user_id": "48",
"nickname": "小周老师",
"image": "https://cdn.youinsh.cn/saas_pro/static/user/user-default.png",
"first_enter": "2021-03-26T16:32:06",
"iliv_time": "12.52"
}
}
],
"pages": 1,
"count": 2,
"next": null,
"previous": null
}
api地址
支持两种查询方式,区别在传入的用户id是直播平台的还是第三方对接方的,两种方式说明如下
描述
获取连麦明细
请求参数
liveId为直播id,userId为直播平台用户id,third_id为对接方用户id,其中用户id的传值只能是userId或third_id中的一个
响应说明
xxxxxxxxxx
GET
{base_url}/v1/statistics/system/wheat_detail/325?userId=9/
响应
{
"result": [
{
"nickname": "直播平台", // 连麦人名称
"userId": "9", // 连麦人账号
"duration": "0.24", // 连麦时长
"startDate": "2021-03-26T15:18:03", // 连麦开始时间
"endDate": "2021-03-26T15:18:17" // 连麦结束时间
},
{
"nickname": "直播平台",
"userId": "9",
"duration": "0.35",
"startDate": "2021-04-09T16:51:23",
"endDate": "2021-04-09T16:51:44"
}
],
"code": 200,
"msg": "success"
}
api地址
GET:{base_url}/v1/course/system/get_vod/{{liveId}}/
描述
获取对应id的回放信息,直播回放的MP4文件需要时间来生成(直播时间越久,生成mp4文件所需时间越多),建议直播结束10-15分钟后获取
请求参数
参数 | 类型 | 是否必须 | 描述 |
---|---|---|---|
liveid | int | 是 | 直播id |
响应说明
xxxxxxxxxx
GET
{base_url}/v1/course/system/get_vod/1027/
响应
{
"result": {
"play_url": "https://pili-vod.livestream.youinsh.net/record/163073849230289361027_1027/2021-09-14_13:04:27.m3u8", // m3u8播放地址
"file_url": "https://pili-vod.livestream.youinsh.net/record/163073849230289361027_1027/2021-09-14_13:04:27.mp4" // mp4播放地址
},
"code": 200,
"msg": "success"
}
api地址
GET:{base_url}/v1/course/system/points_rule/
描述
获取对应直播id所用的积分规则
请求参数
参数 | 类型 | 是否必须 | 描述 |
---|---|---|---|
course_id | int | 是 | 直播id |
响应说明
xxxxxxxxxx
{
"msg": "success", #接口调用结果描述
"code": 200, #接口返回值
"result": {
"id": 2,#所用的规则id
"name": "满10分钟得5分",#积分规则名称
"details": "满10分钟得5分",#积分规则描述
"type": 2,#积分规则类型,(1, '仅签到'), (2, '仅观看时间长'), (3, '签到加观看时长'), (4, '签到或观看时长')
"createDate": "string",#创建时间
"updateDate": "string"#更新时间
}
}
api地址
GET:{base_url}/v1/user/system/user_points/
描述
获取对应直播id的观众所获取的积分明细
请求参数
参数 | 类型 | 是否必须 | 描述 |
---|---|---|---|
course_id | int | 是 | 直播id |
outward | int | 是 | 固定值,传1 |
page | int | 否 | 分页数,默认每次返回10条数据 |
响应说明
xxxxxxxxxx
{
"msg": "success",
"code": 200,
"result": [
{
"id": 2389, #用户在直播平台的id
"liveId": 53387,#直播id
"income_number": 5,#当场直播获取到的积分数
"live_name": "直播名称", #直播名称
"type": 1, #积分获取的方式:1: '直播签到' 2: '直播观看' 5: '观看加签到' 6: '观看或签到'
"createDate": "2023-09-23 10:02:23", #发放时间
"user_data": {
"nickname": "string", #昵称
"name": "string", #姓名
"third_user_id": "78723" #对接方用户id
},
}
],
"count": 23, #当场直播共多少用户获取到了积分
"previous": null,
"next": null,
"pages": 3 #共多少分页数
}
api地址
POST:{base_url}/v1/controller/system/sensitive_word_manage/
描述
通过接口上传敏感词。1小时候生效。
请求参数
传递敏感词内容的文件参数,文件名格式为txt,文件内容格式为每行一个敏感词
参数 | 类型 | 是否必须 | 描述 |
---|---|---|---|
file | file | 是 | file类型,放于请求的body中传输 |
响应说明
xxxxxxxxxx
{
"msg": "success",
"result": {},
"code": 200
}
api地址
GET:{base_url}/v1/statistics/system/member_list2/?page={{page}}&keywords={{keywords}}
描述
获取用户画像列表
请求参数
page为页码,keywords过滤可以为id、姓名或手机号
响应说明
xxxxxxxxxx
GET
{base_url}/v1/statistics/system/member_list?page=1&keywords=
{
"msg": "success",
"count": 17,
"result": [
{
"owner_user_id": 11050, // 用户id,下一个详情接口,用这个值
“oath_user_id”:3218, # 对接方用户ID
"nickname": "张书豪", // 用户昵称
"name": "张书豪", // 姓名
"phone": "18937672340", // 手机号
"watch_count": 26, // 观看次数
"watch_duration": "42.54", // 观看时长,单位分钟
"is_anonymous": false // 是否为新用户
},
{
"owner_user_id": 29,
“oath_user_id”:3219, # 对接方用户ID
"nickname": "周毛毛",
"name": "毛毛",
"phone": "19946178550",
"watch_count": 3,
"watch_duration": "2.31",
"is_anonymous": false
}
],
"code": 200,
"previous": null,
"next": "https://api.youinsh.com/saastestapi/v1/statistics/system/member_list/?keywords=&page=2",
"pages": 2
}
api地址
GET:{base_url}/v1/statistics/system/user_portrait_detail/?third_user_id={{third_user_id}}
描述
获取用户画像详情
请求参数
参数 | 类型 | 是否必须 | 描述 |
---|---|---|---|
third_user_id | string | 是 | 对接方用户id |
响应说明
xxxxxxxxxx
GET
{base_url}/v1/statistics/system/user_portrait_detail?user_id=11050/
响应
{
"result": {
"owner_id": 11050, // 用户id
"headImageUrl": "https://thirdwx.qlogo.cn/mmopen/vi_32/Q0j4TwGTfTKD9B92ImKpbEDrGhqabbxljBC6uMQlra0icoBw489L3v1zhIApwZB4hSdveibbJ72dnRwlJploNUXw/132", // 用户头像
"name": "张书豪", // 姓名
"nickname": "张书豪", // 用户昵称
"phone": "18937672340", // 手机号
"city": "上海", // 城市
"address": "虹桥中心777", // 地址
"email": "123456@qq.com", // 邮箱
"company": "youin", // 公司
"position": "技术", // 职务
"job_num": "122" // 工号
},
"msg": "success",
"code": 200
}
api地址
GET:{base_url}/v1/statistics/system/user_behavior/?third_user_id={{third_user_id}}
描述
获取单个用户的行为统计
请求参数
参数 | 类型 | 是否必须 | 描述 |
---|---|---|---|
third_user_id | string | 是 | 对接方用户id |
响应说明
xxxxxxxxxx
{
"result": {
"apply_count": 4, // 报名直播次数
"watch_video_count": 26, // 观看直播场次
"share_video_count": 4, // 分享直播间次数
"total_watch_duration": "42.54", // 观看总时长
"answer_count": 0, // 填写问卷次数
"gift_amount": 0 // 赠送礼物金额
},
"msg": "success",
"code": 200
}
api地址
GET:{base_url}/v1/statistics/system/user_watch_list/?third_user_id={{third_user_id}}&page={{page}}
描述
获取单个用户观看记录
请求参数
参数 | 类型 | 是否必须 | 描述 |
---|---|---|---|
third_user_id | string | 是 | 对接方用户id |
page | int | 是 | 页码 |
响应说明
xxxxxxxxxx
{
"code": 200,
"msg": "success",
"result": [
{
"liveId": "964", // 直播id
"title": "show_test1", // 直播标题
"live_time": "2021-08-18T10:36:08", // 直播开始时间
"click_product_count": 0, // 商品点击次数
"watch_duration": "0.93", // 观看时长,单位分钟
"invite_user_count": 0, // 邀请用户次数
"valid_share_count": 0, // 有效分享次数
"gift_amount": 0, // 礼物金额
"visit_count": 6 // 观看次数
},
{
"liveId": "1036",
"title": "show_test090304",
"live_time": "2021-09-08T16:04:22",
"click_product_count": 0,
"watch_duration": 0,
"invite_user_count": 1,
"valid_share_count": 0,
"gift_amount": 0,
"visit_count": 4
},
{
"liveId": "1027",
"title": "show_test0904",
"live_time": "2021-09-14T13:04:27",
"click_product_count": 0,
"watch_duration": "3.43",
"invite_user_count": 4,
"valid_share_count": 8,
"gift_amount": 0,
"visit_count": 5
}
],
"pages": 3,
"count": 28,
"next": "http://127.0.0.1:8000/saastestapi/v1/statistics/system/user_watch_list/?page=2&user_id=11050",
"previous": null
}
api地址
GET:{base_url}/v1/course/system/product_list/?enterprise_id={{enterprise_id}}
描述
获取视频列表
请求参数
参数 | 类型 | 是否必须 | 描述 |
---|---|---|---|
enterprise_id | int | 是 | 企业id |
响应说明
xxxxxxxxxx
{
"msg": "success",
"result": [
{
"id": 130, // 商品id
"image": "https://cdn.youinsh.cn/saastest/image/gKwsDSS4wu2ScWkaYQ8Jrd", // 商品图片
"status": false, // 是否上架
"name": "lll", // 商品名称
"goodsUrl": "", // 商品链接地址
"price_type": 3, // 价格类型(1:'一口价', 2:'起始价', 3:'价格区间', 4:'折扣价对比', 5:'会员优惠价')
"price": "120.00", // 价格
"price_end": "120.00", // 第二个价格
"the_produce_id": 222, // 回传第三方的产品id
"subtitle": "副标题1", // 副标题
"product_label": "产品标签1,产品标签2", // 产品标签
"jump_type": 2, // 跳转类型(1:'网页链接', 2:'小程序链接')
"original_id": "gh_lll", // 小程序原始id
"app_id": null, // 小程序appid
"page_path": "/pages/goods/goods?id=47", // 小程序链接地址
"app_turn_url": "pages/apps", // app链接地址
"createDate": "2022-01-20T11:22:22.519272", // 创建日期
"updateDate": "2022-01-20T11:22:22.519302" // 更新日期
},
{
"id": 105,
"image": "https://cdn.youinsh.cn/saastest/image/G5AaAuM6zr6DC2k9nKprEQ",
"status": false,
"name": "ccc",
"goodsUrl": "ccc",
"price_type": 1,
"price": "30.00",
"price_end": "0.00",
"the_produce_id": null,
"subtitle": null,
"product_label": null,
"jump_type": 1,
"original_id": null,
"app_id": null,
"page_path": null,
"app_turn_url": null,
"createDate": "2022-01-18T15:19:01.312424",
"updateDate": "2022-01-18T15:19:01.312453"
}
],
"code": 200,
"next": "https://api.youinsh.com/saastestapi/v1/course/system/product_list/?enterprise_id=118&page=2",
"previous": null,
"pages": 2,
"count": 12
}
api地址
POST:{base_url}/v1/course/system/add_product/
描述
对企业的商品进行添加
请求参数
参数 | 类型 | 是否必须 | 描述 |
---|---|---|---|
name | string | 是 | 商品名称 |
image | url | 是 | 商品图片 |
goodsUrl | url | 否 | 商品链接地址(当jump_type为1时必传) |
price | number | 是 | 价格(当price_type为3时,此字段代表商品最低价格;当price_type为4/5时,此字段代表商品原价) |
price_type | int | 是 | 价格类型(1:'一口价', 2:'起始价', 3:'价格区间', 4:'折扣价对比', 5:'会员优惠价') |
enterprise_id | string | 是 | 企业id |
jump_type | int | 是 | 跳转类型: 0:'APP链接(链接形式需双方约定)' 1:'网页链接', 2:'小程序链接'。 通过接口同步商品库时,如果仅有app跳转地址,则传0,当商品既有app跳转地址,又有H5或者小程序跳转地址需要同步到商品库时,这个类别jump_type不要传0,而是根据链接是h5还是小程序来传递1或者2。 jump_type传1,表示是h5链接,具体的链接地址通过goodsUrl来传递 jump_type传2,表示是小程序链接,通过original_id和page_path来传递。 app的跳转地址直接在下面的app_turn_url里面传过来即可 |
price_end | number | 否 | 第二个价格(当price_type为3/4/5时必传。当price_type为3时,此字段代表商品最高价格;当price_type为4时,此字段代表商品现价;当price_type为5时,此字段代表商品会员价) |
the_produce_id | string | 否 | 第三方(对接方)的产品id,确保唯一,后续修改产品属性是会用到 |
subtitle | string | 否 | 副标题 |
product_label | string | 否 | 产品标签(可选参数,如需要传多个,用逗号隔开) |
original_id | string | 否 | 小程序原始id(当jump_type为2时必传) |
page_path | url | 否 | 小程序链接地址(当jump_type为2时必传) |
app_turn_url | url | 否 | app链接地址(当jump_type为0时必传) |
响应说明
xxxxxxxxxx
{
"code": 200,
"result": {
"product_id": 146 // 直播平台商品id
},
"msg": "success"
}
api地址
POST:{base_url}/v1/course/system/modify_product/
描述
对企业的商品进行修改
请求参数
参数 | 类型 | 是否必须 | 描述 |
---|---|---|---|
name | string | 是 | 商品名称 |
image | url | 是 | 商品图片 |
goodsUrl | url | 否 | 商品链接地址(当jump_type为1时必传) |
price | number | 是 | 价格(当price_type为3时,此字段代表商品最低价格;当price_type为4/5时,此字段代表商品原价) |
price_type | int | 是 | 价格类型(1:'一口价', 2:'起始价', 3:'价格区间', 4:'折扣价对比', 5:'会员优惠价') |
enterprise_id | string | 是 | 企业id |
jump_type | int | 否 | 跳转类型(0:'app跳转链接',1:'网页链接', 2:'小程序链接') |
price_end | number | 否 | 第二个价格(当price_type为3/4/5时必传。当price_type为3时,此字段代表商品最高价格;当price_type为4时,此字段代表商品现价;当price_type为5时,此字段代表商品会员价) |
the_produce_id | string | 是 | 第三方的产品id(唯一值) |
subtitle | string | 否 | 副标题 |
product_label | string | 否 | 产品标签(可选参数,如需要传多个,用逗号隔开) |
original_id | string | 否 | 小程序原始id(当jump_type为2时必传) |
page_path | url | 否 | 小程序链接地址(当jump_type为2时必传) |
app_turn_url | url | 否 | app链接地址(当jump_type为0时必传) |
响应说明
xxxxxxxxxx
{
"code": 200,
"result": {},
"msg": "success"
}
api地址
POST:{base_url}/v1/course/system/delete_product/
描述
删除商品
请求参数
参数 | 类型 | 是否必须 | 描述 |
---|---|---|---|
enterprise_id | string | 是 | 企业id |
the_produce_id | string | 是 | 第三方的产品id(唯一值) |
响应说明
xxxxxxxxxx
{
"msg": "success",
"result": {},
"code": 200
}
api地址
POST:{base_url}/v1/course/system/my_product/{{live_id}}/
描述
直播间关联的商品列表
请求参数
参数 | 类型 | 是否必须 | 描述 |
---|---|---|---|
live_id | int | 是 | 直播id |
响应说明
xxxxxxxxxx
{
"code": 200,
"result": [
{
"id": 433, // 关联商品id
"product": {
"id": 130, // 商品id
"image": "https://cdn.youinsh.cn/saastest/image/gKwsDSS4wu2ScWkaYQ8Jrd", // 商品图片
"name": "lll", // 商品名称
"goodsUrl": "", // 商品链接地址
"price_type": 3, // 价格类型(1:'一口价', 2:'起始价', 3:'价格区间', 4:'折扣价对比', 5:'会员优惠价')
"price": "120.00", // 价格
"price_end": "120.00", // 第二个价格
"the_produce_id": 222, // 回传第三方的产品id
"subtitle": "副标题", // 副标题
"product_label": "产品标签1,产品标签2", // 产品标签
"jump_type": 2, // 跳转类型(1:'网页链接', 2:'小程序链接')
"original_id": "gh_lll", // 小程序原始id
"app_id": null, // 小程序appid
"page_path": "/pages/goods/goods?id=47", // 小程序链接地址
"app_turn_url": "pages/apps", // app链接地址
"createDate": "2022-01-20T11:22:22.519272", // 商品创建日期
"updateDate": "2022-01-20T11:22:22.519302" // 商品更新日期
},
"sort_no": 0, // 序号
"isShow": true, // 是否上架
"createDate": "2022-01-20T14:13:30.703638" // 直播商品创建日期
}
],
"msg": "success"
}
api地址
POST:{base_url}/v1/course/system/product_set/{{live_id}}/
描述
针对某个具体的直播间,进行商品关联,及 商品上下架
请求参数
参数 | 类型 | 是否必须 | 描述 |
---|---|---|---|
product_id | int | 是 | 商品id |
type | string | 是 | 设置类型("associated":'关联', "shelves": '上下架',“pushscreen”:’商品推屏‘) |
isShow | boolean | 否 | 是否上架(当type为shelves时必传,其他时候不传) |
响应说明
xxxxxxxxxx
{
"code": 200,
"result": {
"course_product_id": 435 // 关联商品id
},
"msg": "success"
}
api地址
POST:{base_url}/v1/course/system/del_product_set/{{id}}/
描述
针对具体某个直播间,删除已经关联的商品
请求参数
参数 | 类型 | 是否必须 | 描述 |
---|---|---|---|
id | int | 是 | id为关联商品id,不是商品id, 此关联商品id是从直播间关联的商品列表接口获得 |
响应说明
xxxxxxxxxx
{
"code": 200,
"result": {},
"msg": "success"
}
api地址
GET {base_url}/v1/course/system/coupon/?enterprise_id={{enterprise_id}}
描述
获取当前企业下的所有优惠券列表
请求参数
参数 | 类型 | 是否必须 | 描述 |
---|---|---|---|
enterprise_id | int | 是 | 企业id |
响应说明
xxxxxxxxxx
GET {base_url}/v1/course/system/coupon/?enterprise_id=210
响应:
{
"pages": 1,
"code": 200,
"result": [
{
"id": 8,
"third_id": 33,
"enterprise_id": 210,
"name": "优惠券78",
"type": 1,
"amount": "12.00",
"start_date": "2022-03-03T17:33:04.887052",
"end_date": "2022-03-03T17:33:04.887081",
"active": 0,
"remark": "sdfs"
},
],
"next": null,
"count": 6,
"msg": "success",
"previous": null
}
api地址
POST {base_url}/v1/course/system/coupon/
描述
添加优惠券相关信息
请求参数
参数 | 类型 | 是否必须 | 描述 |
---|---|---|---|
third_id | int | 是 | 第三方对接方的优惠券ID |
enterprise_id | int | 是 | 企业ID |
name | string | 是 | 优惠券名称 |
type | int | 是 | 优惠券类型,1表示满减券 2表示立减券 3表示兑换券(可用于线下兑换,金额为0时不显示金额,显示福利券) |
amount | number | 是 | 优惠券金额 |
start_date | date | 是 | 开始时间 |
end_date | date | 是 | 结束时间 |
remark | text | 否 | 备注 |
source_type | int | 是 | 优惠券类型:2: 第三方优惠券(对接优惠券必传,固定值2) |
响应说明 POST {base_url}/v1/course/system/coupon/
xxxxxxxxxx
{
"result": {
"id": 8,#直播平台的优惠券id
"third_id": 7,#对接方的优惠券id
"name": "优惠券3",
"type": 1,
"amount": "12.00",
"start_date": "2022-03-03T17:33:04.887052",
"end_date": "2022-03-03T17:33:04.887081",
"remark": "sdfs",#优惠券说明
"enterprise": 210
},
"msg": "success",
"code": 200
}
api地址
DELETE {base_url}/v1/course/system/coupon/
描述
删除优惠券
请求参数
参数 | 类型 | 是否必须 | 描述 |
---|---|---|---|
third_id | int | 是 | 第三方对接方的优惠券Id |
enterprise_id | int | 是 | 企业ID |
响应说明
xxxxxxxxxx
DELETE {base_url}/v1/course/system/coupon/
响应:
{
"code": 200,
"result": {},
"msg": "success"
}
api地址
POST:{base_url}/v1/course/system/coupon_course/{{live_id}}/
描述
直播间关联的优惠券列表
请求参数
参数 | 类型 | 是否必须 | 描述 |
---|---|---|---|
live_id | int | 是 | 直播id |
响应说明
xxxxxxxxxx
{
"msg": "success",
"code": 200,
"result": [
{
"id": 3,
"coupon": {
"third_id": 19,
"enterprise_id": 123,
"name": "优惠券19",
"type": 3,
"amount": "12.00",
"start_date": "2022-03-03T17:33:04.887052",
"end_date": "2022-03-03T17:33:04.887081",
"active": 1,
"remark": "sdfs"
},
"coupon_id": 28,
"isShow": false,
"createDate": "2022-03-17T18:40:14.836335"
},
{
"id": 4,
"coupon": {
"third_id": 18,
"enterprise_id": 123,
"name": "优惠券18",
"type": 3,
"amount": "12.00",
"start_date": "2022-03-03T17:33:04.887052",
"end_date": "2022-03-03T17:33:04.887081",
"active": 1,
"remark": "sdfs"
},
"coupon_id": 27,
"isShow": true,
"createDate": "2022-03-17T21:18:45.700447"
}
]
}
api地址
POST:{base_url}/v1/course/system/coupon_set/{{live_id}}/
描述
针对某个具体的直播间,进行优惠券关联,优惠券上下架 及优惠券删除
请求参数
参数 | 类型 | 是否必须 | 描述 |
---|---|---|---|
coupon_id | int | 是 | 优惠券id |
type | string | 是 | 设置类型("associated":'关联', "shelves": '上下架', "delete":"删除") |
isShow | boolean | 否 | 是否上架(当type为shelves时必传) |
响应说明
xxxxxxxxxx
{
"code": 200,
"result": {
"course_coupon_id": 435 // 关联优惠券id
},
"msg": "success"
}
api地址
post {第三方base_url}/collectcoupon
描述
用户点击直播页面上的领取按钮,领取优惠券,调用第三方领取优惠券接口,返回是否成功
请求参数
参数 | 类型 | 是否必须 | 描述 |
---|---|---|---|
coupon_id | int | 是 | 第三方对接方的优惠券Id |
oath_user_id | int | 是 | 用户ID(对接方) |
live_id | int | 是 | 直播ID |
token | string | 是 | 验签token,用密钥管理那里获得的secret,算法为: md5规则:userid+sectet+当前日期,示例: userid:2186 secret:6120b0275342a803bd678d5d768c504e 当前日期:2022年4月1日,取值为20220401 则 md5(21866120b0275342a803bd678d5d768c504e20220401) 这个值为token值 |
响应说明
xxxxxxxxxx
post {第三方base_url}/collectcoupon
响应
{
"code": 200,
"result": {
"coupon_id": 45 // 第三方对接方的优惠券Id
"live_id": 1435 // 直播ID
"oath_user_id": 35 // 用户ID(对接方)
},
"msg": "success"
}
api地址
GET: {base_url}/v1/course/push_message/{{liveId}}/
描述
获取历史聊天记录
请求参数
参数 | 类型 | 是否必须 | 描述 |
---|---|---|---|
liveId | int | 是 | liveId为直播ID |
msg_id | string | 否 | msg_id为消息id,msg_timstamp为起始时间戳。当使用过滤条件时,msg_id和msg_timstamp须同时存在,msg_id请用URIEncoder一下,否则特殊字符会通不过 |
msg_timstamp | int | 否 | msg_id为消息id,msg_timstamp为起始时间戳。当使用过滤条件时,msg_id和msg_timstamp须同时存在 |
响应说明
xxxxxxxxxx
get请求
{base_url}/v1/course/push_message/1036?msg_id=Slm4AkaeRN29zuhPFxAx7g&msg_timstamp=1631190212139
响应
{
"result": {
"last_msg_id": "Slm4AkaeRN29zuhPFxAx7g", // 末尾消息的消息id
"last_msg_timstamp": 1631190212140, // 末尾消息的起始时间戳
"msg_over": true, // 是否到消息末页
"msg_data": [
{
"msg_id": "Slm4AkaeRN29zuhPFxAx7g", // 消息id
"type": -1, // 消息类型
"from_user_name": "直播方", // 用户名称
"youin_user_id": 11049, // 用户id
"timestamp": 1631190212140, // 起始时间戳
"text": "你好\n", // 消息内容
"from_user_avatar": "https://cdn.youinsh.cn/livestream/static/user/user-default.png", // 用户头像
"oath_user_id": "test" //第三方用户ID
}t
]
},
"code": 200,
"msg": "success"
}
api地址
POST {base_url}/v1/user/setTeacher/
描述
后端调用,调用一次即可。注册对接方的某个用户为直播平台的主播。直播平台会根据传来的对接方用户id,到直播平台对应的数据库表中查找相关字段,如果有这个用户,则会把他的身份改变为主播,如果没有这个用户,则会注册此用户并设置身份为主播。
请求参数
参数 | 类型 | 是否必须 | 描述 |
---|---|---|---|
third_id | int/string 均可,已做兼容 | 是 | 用户id(对接方) |
username | string | 是 | 用户登录账号 |
password | string | 是 | 用户登录密码,用于讲师用自己的账号登录直播后台;对于不想登录直播后台,可以调用“跳转到直播控制台页面”的接口来实现 |
nickname | string | 是 | 用户昵称 |
image | string | 是 | 用户头像,必须是https协议,且允许跨域访问,否则无法正常显示 |
introduce | string | 否 | 讲师简介 |
enterprise_id | int | 否 | 主或子账号id |
响应说明
xxxxxxxxxx
{
"code": 200,
"msg": "success",
"result":{
"user_id":34892 # int类型,直播平台的用户ID 。 创建直播时,如果指定主播,需要提供直播平台侧的主播ID,即这个值,如果有这样的场景,需要记录此值。
}
}
api地址
GET {base_url}/v1/subaccount/teacher_list/
描述
获取直播主播(讲师)列表
请求参数
参数 | 类型 | 是否必须 | 描述 |
---|---|---|---|
enterprise_id | int | 否 | 主账号或子账号的企业id |
响应说明
xxxxxxxxxx
GET {base_url}/v1/subaccount/teacher_list/
响应:
{
"result": [
{
"name": "abcd12345",#讲师名称
"username": "abcd12345",#讲师登录账号
"user_id": 54846,#讲师在直播平台侧的ID
"nickname": "abcd12345",#讲师昵称
"third_user_id": "abcd12345"#讲师在第三方(对接方的ID)
}
],
"code": 200,
"msg": "success"
}
api地址
GET {base_url}/v1/course/system/live_aid_list/?course_id={{course_id}}
描述
获取直播助手列表
请求参数
参数 | 类型 | 是否必须 | 描述 |
---|---|---|---|
course_id | int | 是 | 直播id |
响应说明
xxxxxxxxxx
GET {base_url}/v1/course/system/live_aid_list?course_id=2931
响应:
{
"code": 200,
"result": [
{
"id": 90, // 直播助手id
"name": "小助手1号", // 直播助手名称
"code": "334286", // 直播助手口令
"loginUrl": "https://live.youinsh.com/saastest/assistantToLogin?id=2931", // 直播助手登录url
"active": true, // 是否删除(true:不删除,false:删除)
"createDate": "2022-03-03T17:33:04.887052", // 创建时间
"updateDate": "2022-03-03T17:33:04.887081", // 修改时间
"course": 2931, // 直播id
}
],
"msg": "success"
}
api地址
POST {base_url}/v1/course/system/live_aid_user/
描述
添加或者修改直播助手相关信息
请求参数
参数 | 类型 | 是否必须 | 描述 |
---|---|---|---|
course_id | string | 是 | 直播id |
enterprise_id | string | 是 | 企业id |
name | string | 是 | 直播助手名称 |
loginUrl | string | 是 | 直播助手登录url,规则: 生产环境传: https://live.youinsh.com/livestream/assistantToLogin?id=xxx, 测试环境: https://live.youinsh.com/saastest/assistantToLogin?id=xxx, id对应直播id。 |
live_aid_id | int | 否 | 直播助手id(修改时必传) |
响应说明
xxxxxxxxxx
{
"code": 200,
"result": {},
"msg": "success"
}
api地址
POST {base_url}/v1/course/system/delete_live_aid/{{id}}/
描述
删除直播助手
请求参数
参数 | 类型 | 是否必须 | 描述 |
---|---|---|---|
id | int | 是 | 直播助手id |
响应说明
xxxxxxxxxx
POST {base_url}/v1/course/system/delete_live_aid/90
响应:
{
"code": 200,
"result": {},
"msg": "success"
}
api地址
POST {base_url}/v1/subaccount/create_sub_account/
描述
调用此接口创建子账号
请求参数
参数 | 类型 | 是否必须 | 描述 |
---|---|---|---|
name | string | 是 | 联系人 |
org_name | string | 是 | 子账号名称 |
password | string | 是 | 密码 |
username | string | 是 | 登录名 |
响应说明
xxxxxxxxxx
{
"code": 200,
"msg": "success",
"result": {
"id": 4991,#这个子账号是一个子企业,这个子企业的企业id,即enterprise_id
"org_name": "a111111",#子账号名称
"username": "a111111",#子账号登录名
"name": "a111111",#子账号联系人
"active": 1,#1 可用 2 禁用
"user_id": 54849,
"total_turn_push": 0,
"total_interact_duration": 0,
"total_use_space": 0,
"total_watch_flow": 0
}
}
api地址
POST {base_url}/v1/subaccount/modify_sub_account/
描述
调用此接口修改子账号
请求参数
参数 | 类型 | 是否必须 | 描述 |
---|---|---|---|
name | string | 是 | 联系人 |
org_name | string | 是 | 子账号名称 |
sub_account_id | int | 是 | 子账号ID |
响应说明
xxxxxxxxxx
{
"code": 200,
"msg": "success",
"result": {}
}
api地址
POST {base_url}/v1/subaccount/sub_account_on_off/
描述
调用此接口启用/禁用子账号
请求参数
参数 | 类型 | 是否必须 | 描述 |
---|---|---|---|
active | int | 是 | 1:启用,2:禁用 |
sub_account_id | int | 是 | 子账号ID |
响应说明
xxxxxxxxxx
{
"code": 200,
"msg": "success",
"result": {}
}
api地址
GET {base_url}/v1/subaccount/sub_account_permission/
描述
调用此接口获取子账号的权限
请求参数
参数 | 类型 | 是否必须 | 描述 |
---|---|---|---|
sub_account_id | int | 是 | 子账号ID |
响应说明
xxxxxxxxxx
{
"code": 200,
"msg": "success",
"result": {
"sub_account_id": "", # 子账号ID
"card_info": null, # 企业名片管理方式,1统一管理,2单独管理
"teacher_account": null, #讲师账号管理方式,1统一管理,2单独管理
"live_manager": null, # 直播间管理管理方式,1子账号无权管理,只能有总账号管理,2子账号弱权限管理,即子账号能给自己的直播间设置标签(标签内容由总帐号管理)而直播专题、门户页由总帐号统一维护。3子账号独立管理,即子账号完全独立管理自己的直播标签、专题、门户
"goods": null, # 商品库管理方式,1统一管理,2单独管理
"wechat": null # 微信公众号授权管理方式,1统一管理,2单独管理
}
}
api地址
POST {base_url}/v1/subaccount/sub_account_permission/
描述
调用此接口设置子账号的权限
请求参数
参数 | 类型 | 是否必须 | 描述 |
---|---|---|---|
sub_account_id | int | 是 | 子账号ID |
card_info | int | 是 | 企业名片管理方式 (1:统一管理 2: 单独管理) |
teacher_account | int | 是 | 讲师账号 管理方式 (1:统一管理 2: 单独管理) |
live_manager | int | 是 | 直播间管理 管理方式(1子账号无权管理,只能有总账号管理,2子账号弱权限管理,即子账号能给自己的直播间设置标签(标签内容由总帐号管理)而直播专题、门户页由总帐号统一维护。3子账号独立管理,即子账号完全独立管理自己的直播标签、专题、门户) |
goods | int | 是 | 商品库管理方式 (1:统一管理 2: 单独管理) |
int | 是 | 微信公众号授权管理方式(1:统一管理 2: 单独管理) |
响应说明
xxxxxxxxxx
{
"code": 200,
"msg": "success",
"result": {}
}
api地址
GET {base_url}/v1/subaccount/sub_account_list/
描述
调用此接口获取子账号类别及子账号所有消耗的流量、转推时长、连麦时长、存储空间等信息
请求参数
无
响应说明
xxxxxxxxxx
{
"code": 200,
"result": [{
"id": 1519,#这个企业的企业id,即enterprise_id
"org_name": "某咨询公司",#账号名称
"username": "ca_open",#账号对应的登录账号
"name": "zhanghaihua",#账号联系人
"active": 1,# 1 账号正常, 2 账号被禁用
"user_id": 553652,#账号ID
"total_interact_duration": 213.51,#连麦时长 单位 分钟
"total_turn_push": 0.0, # 转推时长,单位 分钟,包括定时推流时长、转推到第三方平台时长、拉流直播时长三者之和
"total_watch_flow": 526.78, # 流量消耗,单位GB
"total_use_space": 2.89 #存储空间,单位 GB
}, {
"id": 1582,
"org_name": "咨询某某分公司",
"username": "oa_sys_admin",
"name": "liuhaihua",
"active": 1,
"user_id": 571084,
"total_interact_duration": 11.28,
"total_turn_push": 0.0,
"total_watch_flow": 0.07,
"total_use_space": 0.0
}],
"msg": "success"
}
api地址
POST请求 {base_url}/v1/enterprise/system/modify_enterprise/{eid}/
描述
调用此接口修改账号信息,{eid}为企业id
请求参数
参数 | 类型 | 是否必须 | 描述 |
---|---|---|---|
org_name | string | 是 | 企业名称 |
frontend_logo | string | 否 | 前端logo地址 |
tag_line | string | 是 | 默认宣传语,30字以内 |
short_name | string | 是 | 企业简称,30字以内 |
QR_code | string | 否 | 企业二维码图片url地址,图片大小建议258x258 |
phone | string | 是 | 联系方式 |
water_image | string | 否 | 水印logo图片url地址,建议尺寸 100*50或比例为2:1,颜色为#ffffff,不透明度为30% |
响应说明
xxxxxxxxxx
{
"code": 200,
"msg": "success",
"result": {
}
}
适用于对接方有自己的微信商户平台,提现从对接方自己的app或者小程序中实现,按照下面的流程进行发红包及观众提现: (1)充值:调用“虚拟充值到直播平台”接口,进行虚拟充值,让直播平台的该企业账户下有可发红包的金额。注意:这里只是通过该接口给直播账户set了一个金额数值,实际上并没有真正充值到直播平台,观众提现还是从对接方的商户平台出账
(2)发红包:在直播平台发红包,用户在直播间领红包
(3)查询红包:调用直播平台的 红包列表及红包领取详情接口,获取每个人在直播间领取了多少红包。注意,领取其实是抢到了多少红包,实际还是需要提现才能到用户的微信零钱中
(4)查询零钱:调用“查询第三方用户零钱”的接口,获取该用户累积还有多少零钱没有提现
(5)提现及回调:观众在对接方的app或者小程序或者某个h5页面上进行提现,提现完成后,调用“第三方用户提现后回调接口”告知直播平台,该用户提现了多少钱,直播平台做相应处理,下次再调用“查询第三方用户零钱”接口时,返回正确的零钱数据
api地址
xxxxxxxxxx
POST {base_url}/v1/finance/third_recharge/
描述 · 虚拟充值,让直播平台的该企业账户下有可发红包的金额。注意:这里只是通过该接口给直播账户set了一个金额数值,用于发放红包,实际上并没有真正充值到直播平台,观众提现还是从对接方的商户平台出账。为保险起见,接口中多了一个加密盐salt,并用该盐和secret等参数重新计算了一个auth_token以加强校验
请求参数
参数 | 类型 | 是否必须 | 描述 |
---|---|---|---|
salt | string | 是 | 32位的随机值,每次请求该值均不同,要具有唯一性 |
money | float | 是 | 充值金额,元为单位,保留2位小数 |
enterprise_id | int | 是 | 企业ID |
auth_token | string | 是 | md5(secret+当前日期+enterprise_id+salt),如今天 2025.3.12,enterprise_id为4966,secret为qwue23fufeaf32eert,salt为asdad,则计算md5(qwue23fufeaf32eert202503124966asdad)=d4ec4a89838f1ff2389d534d53a50385,可以在http://www.ip33.com/md5.html进行在线验算,注意取小写,不要大写 |
响应说明
xxxxxxxxxx
{
"code": 200,
"msg": "success",
"result":{
}
}
api地址
xxxxxxxxxx
POST {base_url}/v1/account/system/course_packets/{{pk}}/
描述 根据直播间ID,查询当前直播间发放的红包列表
请求参数
参数 | 类型 | 是否必须 | 描述 |
---|---|---|---|
pk | int | 是 | 直播ID |
响应说明
xxxxxxxxxx
POST {base_url}/v1/account/system/course_packets/310029/
响应:
{
"code": 200,
"result": [#这是个数组,可能有多个红包
{
"id": 995,#红包ID
"total_amount": "1.00", #弃用
"number": 1,#当前红包发放的个数
"real_amount": "1.00",#当前红包的发放金额
"createDate": "2025-03-13T10:21:11.139726",#当前红包创建时间
"receive_number": 1,#当前红包领取的个数
"receive_money": "1.00",#当前红包已领取金额
"name": "ss", #主播昵称
"department": "",#主播所属部门(弃用)
"title": "hh",# 红包标题
"transaction_id": null,# 弃用
"status": true,#是否已经发放
"chargeDate": "2025-03-13T10:21:31.414221",#弃用
"packetway": 1,#红包类型,1:普通红包 ,2:红包雨,3:答题红包,4:等额红包,5:观看红包,6:指定观众红包
"keeptime": 0,#红包雨持续时间
"return_status": 0,#虚拟金额的退款状态,0表示未退款,1表示已退款
"return_money": "0.00",#退款的虚拟金额
"return_date": null,#退款时间
"watchtime": 0#观看时长红包时设定的观看时长
}
],
"msg": "success"
}
api地址
xxxxxxxxxx
POST {base_url}/v1/account/system/receive_packets_detail/{{pk}}/?page=1
描述 红包领取详情
请求参数
参数 | 类型 | 是否必须 | 描述 |
---|---|---|---|
pk | int | 是 | 红包ID |
page | Int | 否 | 首次取值page=1,后续根据接口返回值next做判断获取第二页,第三页的领取列表 |
响应说明
xxxxxxxxxx
POST {base_url}/v1/account/system/receive_packets_detail/995/
响应:
{
"next": null,
"code": 200,
"count": 1,
"msg": "success",
"previous": null,
"result": [
{
"receive_user": "🐣solon🍻", #领取人的昵称
"money": "1.00",#领取金额
"receive_time": "2025-03-13T10:22:15.689",#领取时间
"user_id": 227940,#在直播平台的用户ID
"oath_user_id": "fff"#对接方的用户ID
}
],
"pages": 1
}
api地址
xxxxxxxxxx
GET {base_url}/v1/finance/third_wallet/
描述
xxxxxxxxxx
传入第三方用户id,查询该用户在直播平台还有多少零钱没有提现
请求参数
参数 | 类型 | 是否必须 | 描述 |
---|---|---|---|
enterprise_id | int | 是 | 企业ID |
user_id | string | 是 | 第三方用户ID |
响应说明
xxxxxxxxxx
GET {base_url}/v1/finance/third_wallet/?enterprise_id=4966&user_id=fff
响应:
{
"msg": "success",
"code": 200,
"result": {
"id": 1, #
"user": 227940, #在直播平台的用户ID
"enterprise": 4966, #企业ID
"balance": "1.99", #元为单位
"oath_user_id": "fff" #对接方的用户ID
}
}
api地址
xxxxxxxxxx
POST {base_url}/v1/finance/third_withdraw_deposit/
描述
xxxxxxxxxx
观众在对接方的app或者小程序或者某个h5页面上进行提现,提现完成后,回调该接口告知直播平台,该用户提现了多少钱,直播平台做相应处理,下次再调用“查询第三方用户零钱”接口时,返回正确的零钱数据,为安全起见,也增加了加密盐salt及auth_token计算
请求参数
参数 | 类型 | 是否必须 | 描述 |
---|---|---|---|
enterprise_id | int | 是 | 企业ID |
user_id | int | 是 | 第三方用户ID |
money | float | 是 | 提现金额 |
salt | int | 是 | 随机值(32位)一次请求一个值 |
auth_token | string | 是 | md5(secret+当前日期+enterprise_id+user_id+salt),如今天 2025.3.12,enterprise_id为4966,secret为qwue23fufeaf32eert,user_id为fff,salt为asdad,则计算md5(qwue23fufeaf32eert202503124966fffasdad)=1d26710ae96e9889f702304c5ffac537,可以在http://www.ip33.com/md5.html进行在线验算,注意取小写,不要大写 |
响应说明
xxxxxxxxxx
POST {base_url}/v1/finance/third_withdraw_deposit/
响应:
{
"result": {},
"code": 200,
"msg": "success"
}