一、接口总览
| 接口名称 | 功能描述 | 请求方式 | 授权方式 | 接口版本 |
|---|---|---|---|---|
| 添加设备(create_device) | 将设备添加至VSaaS平台,完成设备注册入库 | POST (GraphQL) | JWT / Bearer Token 授权 | v1 |
| 查询设备列表(get_device_list) | 查询当前账户下的设备列表,支持按UDID筛选 | GET / POST (GraphQL) | JWT / Bearer Token 授权 | v1 |
| 修改设备(update_device) | 更新已注册设备的基本信息(名称、标签等) | GET / POST (GraphQL) | JWT / Bearer Token 授权 | v1 |
| 删除设备(remove_device) | 从VSaaS平台删除指定UDID的设备 | GET / POST (GraphQL) | JWT / Bearer Token 授权 | v1 |
本章节介绍TUTK VSaaS平台设备管理核心API接口(GraphQL版本),第三方系统可通过这些接口完成设备添加、查询、修改、删除等操作,所有接口均需携带有效的VSaaS Token完成身份认证。
二、添加设备接口(create_device)
将设备添加至VSaaS平台,完成设备的注册入库。需传递设备UDID、名称、颜色标签等必填参数,参数为空或格式错误会返回400参数错误。
(一)请求说明
1. 请求URL
POST: https://vsaas-domain/vsaas/api/v1/be/
2. GraphQL Schema 定义
mutation {
create_device(parameters)
}
3. 请求头(Header)
| 参数名 | 类型 | 必选 | 说明 |
|---|---|---|---|
Authorization | String | 是 | 授权令牌,格式:JWT {token} 或 Bearer {token} |
Content-Type | String | 是 | 固定值:application/json |
4. 请求参数
| 参数名 | 类型 | 必选 | 位置 | 说明 |
|---|---|---|---|---|
udid | String | 是 | GraphQL参数 MUTATION | 设备的UDID |
nickname | String | 是 | GraphQL参数 MUTATION | 设备名称 |
color_tag | String | 是 | GraphQL参数 MUTATION | 颜色标签,用以UI呈现(如#ffffff) |
thumbnail | String | 是 | GraphQL参数 MUTATION | 缩略图路径,无则传空字符串 |
channel | Int | 是 | GraphQL参数 MUTATION | 设备通道数 |
credential | String | 是 | GraphQL参数 MUTATION | 设备的秘钥,不同SDK版本创建方式不同: SDK 4.x:由设备端调用SDK API创建 SDK 3.x:由authkey(ak)、identity、av password(av)和authType组成,经base64编码得到。格式:base64({"av":"%s","ak":"%s","identity":"%s","authType":"authToken"}),authType支持authPass或authToken,设备端未使用authkey时ak字段可空 |
uid | String | 否 | GraphQL参数 MUTATION | 设备UID,旧版本为20位 |
fw_ver | String | 否 | GraphQL参数 MUTATION | 设备固件版本 |
5. 请求示例(curl)
POST方式请求(示例)
curl -XPOST -H 'Authorization: Bearer LKdkjlk8873BNN' \
-H 'Content-Type: application/json' \
-d 'mutation {create_device(uid:"KJKWJK",udid:"KJKWJK",nickname:"LivingRoom",color_tag:"#ffffff",thumbnail:"a.jpg",channel:"0",credential:"adsfwefasdfa", fw_ver:"v0.0.0.1")}' \
https://vsaas.kalay.us/vsaas/api/v1/be/
(二)响应说明
1. 响应状态码
| 状态码 | 徽章 | 说明 |
|---|---|---|
| 200 | 成功 | 请求成功,设备添加完成 |
| 400 | 参数错误 | 请求参数错误(如UDID无效、必填参数缺失、credential格式错误) |
| 401 | 授权失败 | 授权令牌无效或过期 |
2. 响应参数说明
| 参数名 | 类型 | 说明 |
|---|---|---|
create_device(stoken) | String | APP端获取到此stoken后,需通过P2P SDK发送给设备端保存,用以设备端推流使用 |
3. 响应示例(成功)
添加设备响应(示例)
{
"data": {
"create_device": "aasdfawjlekjlkjxlkjcoijijkl"
}
}
三、查询设备接口(get_device_list)
查询当前账户下的设备列表,支持按设备UDID筛选指定设备信息,空参数则查询全部设备,支持GraphQL按需指定返回字段。
(一)请求说明
1. 请求URL
GET: /vsaas/api/v1/be?query=query {get_device_list(udid:String) [Device]}
POST: https://vsaas-domain/vsaas/api/v1/be/
2. 请求头(Header)
| 参数名 | 类型 | 必选 | 说明 |
|---|---|---|---|
Authorization | String | 是 | 授权令牌,格式:JWT {token} 或 Bearer {token} |
Content-Type | String | 是 | 固定值:application/json |
3. 请求参数
| 参数名 | 类型 | 必选 | 位置 | 说明 |
|---|---|---|---|---|
udid | String | 否 | GraphQL参数 QUERY | 指定设备UDID,不传则查询所有设备 |
4. 请求示例(curl)
POST方式请求(示例)
curl -XPOST -H 'Authorization: Bearer LKdkjlk8873BNN' \
-H 'Content-Type: application/json' \
-d 'query {get_device_list{udid,color_tag,channel,vendor,nickname,created,updated,channel,st,credential,fw_ver,contracts{pk},contractInUse{pk},shareTo{account}}}' \
https://vsaas.kalay.us/vsaas/api/v1/be/
(二)响应说明
1. 响应状态码
| 状态码 | 徽章 | 说明 |
|---|---|---|
| 200 | 成功 | 请求成功,返回设备列表 |
| 400 | 参数错误 | 请求参数错误(如GraphQL语法错误) |
| 401 | 授权失败 | 授权令牌无效或过期 |
2. 响应参数说明
| 参数名 | 类型 | 说明 |
|---|---|---|
created | String | 设备创建时间 |
updated | String | 设备信息更新时间 |
udid | String | 设备UDID |
account | String | 关联账户标识 |
vendor | String | 厂商ID |
nickname | String | 设备名称 |
color_tag | String | 颜色标签 |
thumbnail | String | 缩略图路径 |
channel | Int | 通道数 |
st | String | 设备stoken |
credential | String | 设备秘钥(base64编码) |
fw_ver | String | 固件版本 |
contracts | Contract Object | 关联的方案,包含pk字段(方案唯一标识) |
contractInUse | Contract Object | 当前使用的方案,包含pk字段 |
shareTo | Array[DeviceSharingInfo] | 设备共享信息列表 |
| DeviceSharingInfo 子参数 | ||
account | String | 共享账户标识 |
email | String | 共享账户邮箱 |
phone | String | 共享账户手机号 |
name | String | 共享账户姓名 |
credential | String | 共享凭证 |
permission | Int | 共享权限等级 |
state | Int | 共享状态 |
startTime | String | 共享开始时间 |
3. 响应示例(成功)
查询设备列表响应(示例)
{
"data": {
"get_device_list": [
{
"udid": "588feadd",
"nickname": "LivingRoom",
"color_tag": "#ffffff",
"channel": 0,
"vendor": "TUTK",
"created": "2024-01-01T00:00:00Z",
"updated": "2024-01-01T00:00:00Z",
"st": "aasdfawjlekjlkjxlkjcoijijkl",
"credential": "adsfwefasdfa",
"fw_ver": "v0.0.0.1",
"contracts": [{"pk": "5c6e7a311d41c87815d585ed"}],
"contractInUse": {"pk": "5c6e7a311d41c87815d585ed"},
"shareTo": [{"account": "user123", "email": "[email protected]", "phone": "13800138000", "name": "Test User", "credential": "share_cred", "permission": 1, "state": 1, "startTime": "2024-01-01T00:00:00Z"}]
},
{
"udid": "699febee",
"nickname": "BedRoom",
"color_tag": "#ff0000",
"channel": 0,
"vendor": "TUTK",
"created": "2024-01-02T00:00:00Z",
"updated": "2024-01-02T00:00:00Z",
"st": "bsdfawjlekjlkjxlkjcoijijkl",
"credential": "bsdfwefasdfa",
"fw_ver": "v0.0.0.1",
"contracts": [],
"contractInUse": null,
"shareTo": []
}
]
}
}
四、修改设备接口(update_device)
更新已注册设备的基本信息(名称、颜色标签、缩略图、秘钥等),需传递设备UDID作为唯一标识,其余参数为可选修改项。
(一)请求说明
1. 请求URL
GET: /vsaas/api/v1/be?query=mutation {update_device(udid:String!,nickname:String,color_tag:String,uid:String,channel:Int,pw:String,credential:String,fw_ver:String)}
POST: https://vsaas-domain/vsaas/api/v1/be/
2. 请求头(Header)
| 参数名 | 类型 | 必选 | 说明 |
|---|---|---|---|
Authorization | String | 是 | 授权令牌,格式:JWT {token} 或 Bearer {token} |
Content-Type | String | 是 | 固定值:application/json |
3. 请求参数
| 参数名 | 类型 | 必选 | 位置 | 说明 |
|---|---|---|---|---|
udid | String | 是 | GraphQL参数 MUTATION | 指定要修改的设备UDID |
nickname | String | 否 | GraphQL参数 MUTATION | 设备名称(可选修改) |
color_tag | String | 否 | GraphQL参数 MUTATION | 颜色标签(可选修改) |
thumbnail | String | 否 | GraphQL参数 MUTATION | 缩略图路径(可选修改) |
channel | Int | 否 | GraphQL参数 MUTATION | 设备通道数(可选修改) |
credential | String | 否 | GraphQL参数 MUTATION | 设备的秘钥(可选修改),创建规则同添加设备接口 |
uid | String | 否 | GraphQL参数 MUTATION | 设备UID(可选修改,旧版本为20位) |
fw_ver | String | 否 | GraphQL参数 MUTATION | 设备固件版本(可选修改) |
pw | String | 否 | GraphQL参数 MUTATION | 设备密码(可选修改) |
4. 请求示例(curl)
POST方式请求(示例)
curl -XPOST -H 'Authorization: Bearer LKdkjlk8873BNN' \
-H 'Content-Type: application/json' \
-d 'mutation {update_device(udid:"KJKWJK",nickname:"ResetRoom",color_tag:"#ff00ff")}' \
https://vsaas.kalay.us/vsaas/api/v1/be/
(二)响应说明
1. 响应状态码
| 状态码 | 徽章 | 说明 |
|---|---|---|
| 200 | 成功 | 请求成功,设备信息修改完成 |
| 400 | 参数错误 | 请求参数错误(如UDID不存在、参数格式错误) |
| 401 | 授权失败 | 授权令牌无效或过期 |
2. 响应参数说明
| 参数名 | 类型 | 说明 |
|---|---|---|
data | JSON Object | 响应主体,包含修改结果提示 |
update_device | String | 修改结果提示(如"success"表示成功) |
3. 响应示例(成功)
修改设备响应(示例)
{
"data": {
"update_device": "success"
}
}
五、删除设备接口(remove_device)
从VSaaS平台删除指定UDID的设备,解除设备与账户的关联,需传递设备UDID作为唯一标识,该参数为空或不存在会返回400参数错误。
(一)请求说明
1. 请求URL
GET: /vsaas/api/v1/be?query=mutation {remove_device(udid:String!)}
POST: https://vsaas-domain/vsaas/api/v1/be/
2. 请求头(Header)
| 参数名 | 类型 | 必选 | 说明 |
|---|---|---|---|
Authorization | String | 是 | 授权令牌,格式:JWT {token} 或 Bearer {token} |
Content-Type | String | 是 | 固定值:application/json |
3. 请求参数
| 参数名 | 类型 | 必选 | 位置 | 说明 |
|---|---|---|---|---|
udid | String | 是 | GraphQL参数 MUTATION | 指定要删除的设备UDID |
4. 请求示例(curl)
POST方式请求(示例)
curl -XPOST -H 'Authorization: Bearer LKdkjlk8873BNN' \
-H 'Content-Type: application/json' \
-d 'mutation {remove_device(udid:"KJKWJK")}' \
https://vsaas.kalay.us/vsaas/api/v1/be/
(二)响应说明
1. 响应状态码
| 状态码 | 徽章 | 说明 |
|---|---|---|
| 200 | 成功 | 请求成功,设备删除完成 |
| 400 | 参数错误 | 请求参数错误(如UDID不存在、UDID格式无效) |
| 401 | 授权失败 | 授权令牌无效或过期 |
2. 响应参数说明
| 参数名 | 类型 | 说明 |
|---|---|---|
data | JSON Object | 响应主体,包含删除结果提示 |
remove_device | String | 删除结果提示(如"success"表示成功) |
3. 响应示例(成功)
删除设备响应(示例)
{
"data": {
"remove_device": "success"
}
}
