EM-LINK接口说明
本文档提供了EM-LINK的接口文档,支持进行二次开发。
接口整体说明
- 每个接口的完整调用地址由
IP:端口+接口地址
拼接而成。默认端口为:8001 -
下文将讲述的接口列表总体分为这几类:
- 事件相关接口:用于查询事件列表与事件详情,配置事件推送方案
- 边缘设备(EM-BOX)管理接口:用于查看边缘设备
- 设备(摄像头)管理接口:用于添加设备、设置抽帧功能、以及进行设备的增删改
- 技能管理接口:用于设置以及查看某个技能的配置详情
- 人脸库相关接口:用于进行人脸库的管理,进行用户的增删改查
- 系统设置相关接口:用于对系统进行设置
接口列表
以下为全部接口的列表以及详情信息。
事件相关接口
查询事件列表
-
/rpc/2.0/cvsaas/v1/event/list [POST]
请求格式:header应为Content-Type:application/json
接口说明:查询事件列表
请求说明:
参数名称 类型 是否必填 说明 edgeToken String 否 边缘设备token,即EM-BOX的设备编码 deviceToken String 否 (摄像头)设备token skillId int 否 技能ID pageNo int 否 页码 pageSize int 否 单页记录数 startTime int 否 开始时间 "yyyy-MM-dd HH: mm:ss" endTime int 否 结束时间 "yyyy-MM-dd HH: mm:ss"
请求示例:
{
"edgeToken":"16049721218a",
"deviceToken": "20BF-DEPQ-FFDG-GNKT",
"skillId": 10,
"pageNo": 1,
"pageSize": 10,
"startTime":"2021-9-12 0:0:0",
"endTime":"2022-9-12 0:0:0"
}
返回说明:
字段名 | 类型 | 说明 |
---|---|---|
log_id | Long | 调用唯一ID |
error_code | Int | 服务调用提示码,失败才返回,成功不返回 |
error_msg | String | 服务调用提示信息,失败才返回,成功不返回 |
result | Object | 返回结果 |
+pageNo | int | 页码 |
+pageSize | int | 单页记录数 |
+totalCount | int | 总记录数 |
+totalPage | int | 总页数 |
+data | List | 数据 |
++eventId | string | 事件ID |
++skillId | Long | 技能ID |
++skillName | String | 技能名称(中文) |
++deviceToken | String | 设备token |
++originResourceFileKey | String | 原始资源fileKey, http://盒子ip:8000/app/data/storage/拼接上fileKey 即可得到完整的访问地址,下同 注意:如果您想永久保存该图片,请将图片下载到服务器单独保存,由于盒子存储空间有限,会定期删除图片(删除策略见"系统设置-事件设置-事件保存时长"),图片被删后,地址将无法访问。 |
++originImageFileKey | String | 原始图片fileKey, originImageFileKey与originResourceFileKey的关系及区别: 资源包含图片及视频,当资源类型是图片时,image==resource; 当资源类型是视频时,image代表视频的封面图片,resource为真正视频;由于目前资源都是图片,所以目前image字段和resource字段是相同的。 |
++renderResourceFileKey | String | 渲染资源fileKey,为节省盒子计算及存储资源,渲染图没有在后端生成渲染图,因此renderResourceFileKey==originResourceFileKey |
++renderImageFileKey | String | 渲染图片fileKey,renderImageFileKey==renderResourceFileKey |
++requestTime | String | 抓拍时间"yyyy-MM-dd HH: mm:ss" |
++createTime | String | 事件发生时间"yyyy-MM-dd HH: mm:ss" |
++isFalseAlarm | byte | 事件是否是误报事件,0:否 1:是 |
返回示例:
{
"error_code": 0,
"log_id": 1603933898182943,
"trace_id": "38d33531c0f24a21a6e10980f80fcba7",
"result": {
"pageNo": 1,
"pageSize": 20,
"totalCount": 1,
"totalPage": 1,
"data": [
{
"eventId": 1,
"skillId": 19,
"title": "烟火检测",
"skillName": "烟火检测",
"deviceToken": "QDHG-LWMS-8DHY-G09F",
"deviceName": "test",
"originImageFileKey": "/resource/event/QDHG-LWMS-8DHY-G09F/1603920042988_48548396908690.jpg",
"originResourceFileKey": "/resource/event/QDHG-LWMS-8DHY-G09F/1603920042988_48548396908690.jpg",
"renderImageFileKey": "/resource/event/4fab59ed79049e1f82fe5ab54809a513/QDHG-LWMS-8DHY-G09F/1603920045286_662456897570735.jpg",
"renderResourceFileKey": "/resource/event/4fab59ed79049e1f82fe5ab54809a513/QDHG-LWMS-8DHY-G09F/1603920045286_662456897570735.jpg",
"requestTime": 1603920043000,
"createTime": 1603920045000,
"isFalseAlarm":0
}
]
}
}
事件详情接口
接口描述: 查询事件详情
接口地址: /rpc/2.0/cvsaas/v1/event/detail
请求方式: POST
请求格式: application/json
参数说明:
参数名称 | 数据类型 | 是否必须 | 备注 | 样例 |
---|---|---|---|---|
id(或eventId) | Int | 是 | 事件id |
请求示例:
{
"id": 1
}
返回结果说明:以json格式返回。
字段名 | 类型 | 备注 | 样例 |
---|---|---|---|
log_id | Long | 调用唯一ID | |
error_code | Int | 服务调用提示码,失败才返回,成功不返回 | |
error_msg | String | 服务调用提示信息,失败才返回,成功不返回 | |
result | Object | 返回结果 | |
+eventId | Int | 事件id | |
+title | String | 事件标题 | |
+deviceToken | String | 设备token | |
+deviceName | String | 设备名称 | |
+skillId | Int | 技能id | |
+skillName | String | 技能名称 | |
+mediaType | Int | 媒体类型,0:图片,1:视频,目前都是0 | |
+requestTime | Long | 请求时间 | |
+createTime | Long | 事件生成时间 | |
+originResourceFileKey | String | 原始资源fileKey, http://盒子ip:8000/app/data/storage/拼接上fileKey即可得到完整的访问地址,下同 注意:如果您想永久保存该图片,请将图片下载到服务器单独保存,因为盒子存储空间有限,会定期删除图片(删除策略在"系统设置-事件设置-事件保存时长"),图片被删后,这个地址就访问不到了。 |
|
+originImageFileKey | String | 原始图片fileKey, originImageFileKey与originResourceFileKey的关系及区别: 资源是包含图片及视频的,当资源类型是图片时,image==resource; 当资源类型是视频时,image代表视频的封面图片,resource是真正的视频;因为目前资源都是图片,所以目前image字段和resource字段是相同的。 |
|
+renderResourceFileKey | String | 渲染资源fileKey,为节省盒子计算及存储资源,目前渲染图是在浏览器做的,没有在后端生成渲染图,所以目前renderResourceFileKey==originResourceFileKey | |
+renderImageFileKey | String | 渲染图片fileKey,renderImageFileKey==renderResourceFileKey | |
+skillInput | Object | 启动技能时的入参 | |
++resource | Object | 启动技能时的资源(比如抽帧的图片) | |
+++areas | List | 框选的检测区域 | |
++++nodes | List | 框选的检测节点 | |
++customParameter | Object | 自定义技能参数,比如模型的阈值 | |
+skillOutput | Object | 技能输出参数,每个技能格式有所区别, 具体请参考:技能执行结果 |
|
+isFalseAlarm | byte | 事件是否是误报事件,0:否 1:是 |
返回示例:
{
"error_code": 0,
"log_id": 1632392126291050,
"trace_id": "96d6c71a1fbc438ca0aeaeb81e0d32eb",
"result": {
"eventId": 9265,
"title": "电子围栏",
"deviceToken": "20BF-DEPQ-FFDG-GNKT",
"deviceName": "",
"skillId": 10,
"skillName": "电子围栏",
"mediaType": 0,
"requestTime": 1631867746000,
"createTime": 1631867829000,
"originResourceFileKey": "/resource/event/20BF-DEPQ-FFDG-GNKT/1631867745943_783265707929380.jpg",
"originImageFileKey": "/resource/event/20BF-DEPQ-FFDG-GNKT/1631867745943_783265707929380.jpg",
"renderImageFileKey": "/resource/event/4fab59ed79049e1f82fe5ab54809a513/20BF-DEPQ-FFDG-GNKT/1631867828710_3630586607441415.jpg",
"renderResourceFileKey": "/resource/event/4fab59ed79049e1f82fe5ab54809a513/20BF-DEPQ-FFDG-GNKT/1631867828710_3630586607441415.jpg",
"skillInput": {
"skillName": "电子围栏",
"ext": {
"alarmContext": {
"mode": "INSTANT"
},
"skillModel": {
"0:1:0": {
"vendorModelId": 1,
"vendorModelVersionId": 0,
"vendor": 0,
"name": "人体检测",
"serviceAddress": "http://localhost:8082",
"id": 1,
"userId": "system",
"runEnvironment": 0
}
}
},
"requestTime": 1631867745950,
"skillId": 10,
"debug": false,
"resource": {
"path": "/resource/origin/20BF-DEPQ-FFDG-GNKT/1631867745943_783265707929380.jpg",
"areas": [
{
"nodes": [
[
209,
388
],
[
249,
747
],
[
355,
982
],
[
1124,
1017
],
[
1734,
1012
],
[
1810,
537
],
[
1364,
253
],
[
506,
345
]
],
"name": "area0"
}
],
"type": "object_storage"
},
"appId": "10000_0",
"customParameter": {
"skillId": 10,
"modelThresholds": {
"bodyProbabilityThreshold": {
"lowerLimit": 0.3
}
},
"skillVersion": 1,
"alarmSetting": {
"bodyFrameAlarmControl": 0
}
},
"deviceName": "11",
"userId": "10000_0",
"sync": false,
"deviceToken": "20BF-DEPQ-FFDG-GNKT"
},
"skillOutput": {
"persons": [
{
"score": 0.646538496017456,
"top": 823,
"left": 1721,
"width": 188,
"height": 248
}
],
"normal": false
},
"isFalseAlarm": 1
}
}
事件删除接口
接口描述: 查询事件列表,技能分析的结果
接口地址: /rpc/2.0/cvsaas/v1/event/delete
请求方式: POST
请求格式: application/json
请求头headers添加 Authorization:Basic YWRtaW46YWRtaW4yMDIwIQ==
(YWRtaW46YWRtaW4yMDIwIQ==为 用户名:密码 进行base64编码后的结果)
参数说明:(如果都为空,则删除所有事件)
参数名称 | 数据类型 | 是否必须 | 备注 | 样例 |
---|---|---|---|---|
edgeToken | String | 否 | 边缘设备token | |
skillId | Int | 否 | 技能id | |
deviceToken | String | 否 | 设备token | |
startTime | String | 否 | 起始时间 | 2020-11-20 11:11:11 |
endTime | String | 否 | 终止时间 | 2020-11-20 11:11:11 |
请求示例:
{
"edgeToken":"6b5c8c4c8c0c",
"skillId": 10,
"deviceToken":"ABCD-ABCD-DFDF-DFDF",
"startTime":"2020-11-19 11:11:11",
"endTime":"2020-11-20 11:11:11"
}
返回结果说明:以json格式返回。
字段名 | 类型 | 是否必须 | 备注 | 样例 |
---|---|---|---|---|
log_id | Long | 是 | 调用唯一ID | |
error_code | Int | 否 | 服务调用提示码,失败才返回,成功不返回 | |
error_msg | String | 否 | 服务调用提示信息,失败才返回,成功不返回 | |
result | JSON | 是 | 返回结果 | |
+successCount | Int | 是 | 成功删除记录条数 | |
+failureCount | Int | 是 | 失败删除条数 |
返回示例:
{
"error_code": 0,
"log_id": 1607341423989015,
"trace_id": "49c03db9fbbb41238f613f57e6711db2",
"result": {
"successCount": 0,
"failureCount": 0
}
}
下载事件相关图片
-
/rpc/2.0/cvsaas/v1/event/downloadImage [GET]
请求格式:form表单,key=value的键值对形式
接口说明:下载事件相关图片,对http://盒子ip:8000/app/data/storage/图片fileKey访问的图片下载。
请求说明:
参数名称 类型 是否必填 说明 fileKey String 是 待下载图片fileKey 请求示例:
fileKey:/resource/event/YMXN-BXCF-H5IB-YIWY/1637064321733_965087935020196.jpg
返回说明:
文件流,下载指定图片。
边缘设备(EM-BOX)管理接口
边缘设备列表
-
/rpc/2.0/cvsaas/v1/edge/list [POST]
请求格式:header应为Content-Type:application/json
接口说明:边缘设备列表
请求说明:
参数名称 类型 是否必填 说明 name String 否 筛选条件:名称 tag String 否 筛选条件:EM-BOX分类tag status Long 否 筛选条件:EM-BOX状态
0:在线
3:重启
4:离线pageNo Long 否 页码,默认1 pageSize Long 否 每页数量,默认20 请求示例:
{ "name":"test", "tag":"123", "status":4 }
返回说明:
参数名称 类型 说明 log_id Long logid,调用唯一ID error_code int 服务调用提示码,0表示成功,非0表示失败 error_msg String 服务调用提示信息,失败时返回 result Object 返回结果 +pageNo Long 页码 +pageSize Long 每页数量 +totalCount Long 总数 +totalPage Long 总页数 +data Object ++name String 边缘设备名称 ++edgeToken String 边缘设备token ++tags List EM-BOX分类 ++deviceCount Long 已配置的摄像头数量 ++skills List 已安装技能名称 ++status Long EM-BOX状态
0:在线
3:重启
4:离线++allowUploadingEvents Boolean 是否接收数据,
true:接收
false:不接收返回示例:
{ "error_code": 0, "log_id": 1615382618643042, "trace_id": "39e495ac0c174a7995be516108546f30", "result": { "pageNo": 1, "pageSize": 20, "totalCount": 2, "totalPage": 1, "data": [ { "name": "29", "edgeToken": "6b5c8c4c8c0c", "tags": [ "123" ], "deviceCount": 1, "skills": [ "陌生人检测", "电子围栏" ], "status": 0, "allowUploadingEvents": true }, { "name": "45", "edgeToken": "67578717377e", "tags": [ "123" ], "deviceCount": 3, "skills": [ "烟火检测", "陌生人检测", "安全帽佩戴合规检测", "电子围栏" ], "status": 0, "allowUploadingEvents": true } ] } }
边缘设备硬件信息
-
/rpc/2.0/cvsaas/v1/edge/hardware [POST]
请求格式:header应为Content-Type:application/json
接口说明:边缘设备硬件信息
请求说明:
参数名称 类型 是否必填 说明 edgeToken String 是 边缘设备token 请求示例:
{ "edgeToken":"6b5c8c4c8c0c" }
返回说明:
参数名称 类型 说明 log_id Long logid,调用唯一ID error_code int 服务调用提示码,0表示成功,非0表示失败 error_msg String 服务调用提示信息,失败时返回 result Object 返回结果 +ramTotal String 总内存 +ramUsed String 已使用内存 +ramUsage Long 内存使用率% +diskTotal String 磁盘总空间 +diskUsed String 磁盘已使用空间 +diskUsage Long 磁盘使用率% +cpuUsage Long cpu使用率 返回示例:
{ "error_code": 0, "log_id": 1615383434981043, "trace_id": "e1e678585f4149579b87461075bb1a64", "result": { "ramTotal": "5953 M", "ramUsed": "5164 M", "ramUsage": 86, "diskTotal": "29227 M", "diskUsed": "6854 M", "diskUsage": 23, "cpuUsage": 21 } }
边缘设备重启/关机
-
/rpc/2.0/cvsaas/v1/edge/shutdown [POST]
请求格式:header应为Content-Type:application/json
请求头headers添加 Authorization:Basic YWRtaW46YWRtaW4yMDIwIQ==
(YWRtaW46YWRtaW4yMDIwIQ==为 用户名:密码 进行base64编码后的结果)
接口说明:边缘设备重启/关机
请求说明:
参数名称 类型 是否必填 说明 edgeToken String 是 边缘设备token reboot Boolean 是 是否重启:
true:重启
false:关机请求示例:
{ "edgeToken":"6b5c8c4c8c0c", "reboot":true }
返回说明:
参数名称 类型 说明 log_id Long logid,调用唯一ID error_code int 服务调用提示码,0表示成功,非0表示失败 error_msg String 服务调用提示信息,失败时返回 返回示例:
{ "error_code": 0, "log_id": 1615383434981043, "trace_id": "e1e678585f4149579b87461075bb1a64" }
设备(摄像头)管理接口
添加设备
-
/rpc/2.0/cvsaas/v1/device/add [POST]
请求格式:header应为Content-Type:application/json
请求头headers添加 Authorization:Basic YWRtaW46YWRtaW4yMDIwIQ==
(YWRtaW46YWRtaW4yMDIwIQ==为 用户名:密码 进行base64编码后的结果)
接口说明:添加设备
请求说明:
参数名称 类型 是否必填 说明 edgeToken String 是 该摄像头所属的边缘设备token deviceName String 是 设备名称。长度不超过30。 deviceAddress String 是 视频流地址。长度不超过1000。 remark String 否 备注。长度不超过255。 tags List 否 设备tag deviceType Byte 否 设备类型
0:视频设备,1:虚拟设备,2:视频文件(用于图片上传接口使用)
默认是0deviceProtocol Byte 否 设备协议 controlTransport Byte 否 信令控制协议
请求示例:
{
"edgeToken":"67578717377e",
"deviceName":"工地大门摄像头",
"deviceAddress":"rtsp://admin:admin123456@172.20.76.10:8888//Streaming/Channels/1",
"remark":"大门一"
}
返回说明:
参数名称 | 类型 | 说明 |
---|---|---|
log_id | Long | logid,调用唯一ID |
error_code | int | 服务调用提示码,0表示成功,非0表示失败 |
error_msg | String | 服务调用提示信息,失败时返回 |
result | Object | 返回结果 |
+deviceToken | String | 摄像头token |
返回示例:
{
"error_code": 0,
"log_id": 1615275234572097,
"trace_id": "507fc09278b740bc939541df0653dc0d",
"result": {
"deviceToken": "DHWR-CGRH-SSGO-FDFY"
}
}
删除设备
-
/rpc/2.0/cvsaas/v1/device/delete [POST]
请求格式:header应为Content-Type:application/json
请求头headers添加 Authorization:Basic YWRtaW46YWRtaW4yMDIwIQ==
(YWRtaW46YWRtaW4yMDIwIQ==为 用户名:密码 进行base64编码后的结果)
接口说明:删除设备
请求说明:
参数名称 类型 是否必填 说明 deviceToken String 是 设备token 请求示例:
{ "deviceToken": "KYAX-AOJ0-21DE-5853" }
返回说明:
参数名称 类型 是否一定存在 说明 log_id Long 是 logid,调用唯一ID error_code int 是 服务调用提示码,0表示成功,非0表示失败 error_msg String 否 服务调用提示信息,失败时返回 返回示例:
{ "error_code": 0, "log_id": 1579088750143069 }
查询设备详情
-
/rpc/2.0/cvsaas/v1/device/detail [POST]
请求格式:header应为Content-Type:application/json
接口说明:查询设备详情
请求说明:
参数名称 类型 是否必填 说明 deviceToken String 是 设备token 请求示例:
{ "deviceToken": "KYAX-AOJ0-21DE-5853" }
返回说明:
参数名称 类型 说明 logId Long logid,调用唯一ID error_code int 服务调用提示码,0表示成功,非0表示失败 errorMsg String 服务调用提示信息,失败时返回 result Object 返回结果体 +edgeToken String 摄像头所属边缘设备的token +deviceType byte 设备类型
0:视频设备
1:虚拟设备
2:视频文件+rtspAddress String 视频流地址 +deviceToken String 设备token +deviceName String 设备名称 +deviceStatus int 设备状态码。
0:设备已离线
1:未配置技能
2: 抽帧成功
3:抽帧失败
4:图片上传成功
5:图片上传失败
6:抽帧暂停
7:不在配置的运行时间
8:(因为磁盘空间不足)抽帧停止+updateTime Date 设备更新时间 +remark String 备注 +skills List 技能列表 +tags List 摄像头tag +deviceProtocol Byte 设备协议 +controlTransport Byte 信令控制协议 +mediaTransport Byte 媒体数据协议 返回示例:
{ "error_code": 0, "log_id": 1615277237708002, "trace_id": "828a8d2eced64ba1a42e8e0a6c1e83f2", "result": { "edgeToken": "67578717377e", "rtspAddress": "rtsp://admin:Aa123456@192.168.1.9:554", "deviceToken": "04BW-CMMZ-HCY9-CZKN", "deviceName": "工地大门摄像头", "deviceStatus": 4, "updateTime": 1614743969000, "remark": "", "tags": [ "11" ], "skills": [ "电子围栏" ], "deviceProtocol": 0, "controlTransport": 0, "mediaTransport": 0 } }
查询设备列表
-
/rpc/2.0/cvsaas/v1/device/list [POST]
请求格式:header应为Content-Type:application/json
接口说明:查询设备列表
请求说明:
参数名称 类型 是否必填 说明 pageNo int 否 页码。默认为1。 pageSize int 否 单页记录数。默认为20。 edgeToken String 否 边缘设备token
请求示例:
{
"pageNo":1,
"pageSize":20,
"edgeToken":"67578717377e"
}
返回说明:
参数名称 | 类型 | 说明 |
---|---|---|
logId | Long | logid,调用唯一ID |
error_code | int | 服务调用提示码,0表示成功,非0表示失败 |
error_msg | String | 服务调用提示信息,失败时返回 |
result | Object | 返回结果体 |
+pageNo | int | 页码 |
+pageSize | int | 每页记录数 |
+totalCount | int | 总记录数 |
+totalPage | int | 总页数 |
+data | List | 设备列表 |
++edgeToken | String | 摄像头所属的边缘设备token |
+deviceType | byte | 设备类型 0:视频设备 1:虚拟设备 2:视频文件 |
++rtspAddress | String | 视频流地址 |
++deviceToken | String | 设备token |
++deviceName | String | 设备名称 |
+deviceStatus | int | 设备状态码。 0:设备已离线 1:未配置技能 2: 抽帧成功 3:抽帧失败 4:图片上传成功 5:图片上传失败 6:抽帧暂停 7:不在配置的运行时间 8:(因为磁盘空间不足)抽帧停止 |
++updateTime | Date | 设备更新时间 |
++remark | String | 备注 |
++tags | List | 摄像头tag |
+deviceProtocol | Byte | 设备协议 |
+controlTransport | Byte | 信令控制协议 |
+mediaTransport | Byte | 媒体数据协议 |
返回示例:
{
"error_code": 0,
"log_id": 1615277698068005,
"trace_id": "9634a4228c3e4ffcb4ed549590519d6c",
"result": {
"pageNo": 1,
"pageSize": 20,
"totalCount": 2,
"totalPage": 1,
"data": [
{
"edgeToken": "67578717377e",
"rtspAddress": "rtsp://admin:Aa123456@192.168.1.9:554",
"deviceToken": "04BW-CMMZ-HCY9-CZKN",
"deviceName": "111",
"deviceStatus": 4,
"updateTime": 1614743969000,
"remark": "",
"tags": [
"11"
],
"deviceProtocol": 0,
"controlTransport": 0,
"mediaTransport": 0
},
{
"edgeToken": "67578717377e",
"rtspAddress": "rtsp://admin:Aa123456@192.168.1.9:554",
"deviceToken": "KMPP-9SCC-XSPJ-DIJM",
"deviceName": "test",
"deviceStatus": 4,
"updateTime": 1614657687000,
"remark": "",
"deviceProtocol": 0,
"controlTransport": 0,
"mediaTransport": 0
}
]
}
}
更新设备信息
-
/rpc/2.0/cvsaas/v1/device/update [POST]
请求格式:header应为Content-Type:application/json
请求头headers添加 Authorization:Basic YWRtaW46YWRtaW4yMDIwIQ==
(YWRtaW46YWRtaW4yMDIwIQ==为 用户名:密码 进行base64编码后的结果)
接口说明:更新设备信息
请求说明:
参数名称 类型 是否必填 说明 deviceToken String 是 设备token deviceName String 否 设备名称。长度不超过30。 rtspAddress String 否 视频流地址。长度不超过1000。 deviceType Byte 否 设备类型
0:视频设备,1:虚拟设备,2:视频文件(用于图片上传接口使用)
默认是0deviceStatus Byte 否 设备状态码。
0:设备已离线
1:未配置技能
2: 抽帧成功
3:抽帧失败
4:图片上传成功
5:图片上传失败
6:抽帧暂停
7:不在配置的运行时间
8:(因为磁盘空间不足)抽帧停止remark String 否 备注。长度不超过255。 tags List 否 设备tag deviceProtocol Byte 否 设备协议 controlTransport Byte 否 信令控制协议 mediaTransport Byte 否 媒体数据协议
请求示例:
{
"deviceToken":"4REQ-XOQV-T5TV-0NDP",
"deviceName":"工地大门摄像头",
"deviceAddress":"rtsp://admin:admin123456@172.20.76.10:8888//Streaming/Channels/1",
"remark":"hello",
"tags":["大门","高清"]
}
返回说明:
参数名称 | 类型 | 是否一定存在 | 说明 |
---|---|---|---|
log_id | Long | 是 | logid,调用唯一ID |
error_code | int | 是 | 服务调用提示码,0表示成功,非0表示失败 |
error_msg | String | 否 | 服务调用提示信息,失败时返回 |
返回示例:
{
"error_code": 0,
"log_id": 1579088750143069
}
获取设备所绑定的技能列表
-
/rpc/2.0/cvsaas/v1/device/skill/bind/list [POST]
请求格式:header应为Content-Type:application/json
接口说明:查询设备上绑定了哪些技能
请求说明:
参数名称 类型 是否必填 说明 deviceToken String 是 设备token pageNo int 否 页码 pageSize Int 否 单页记录数 请求示例:
{ "deviceToken":"4REQ-XOQV-T5TV-0NDP" }
返回说明:
参数名称 类型 是否一定存在 说明 log_id Long 是 logid,调用唯一ID error_code int 是 服务调用提示码,0表示成功,非0表示失败 error_msg String 否 服务调用提示信息,失败时返回 result List 是 技能id数组 返回示例:
{ "error_code": 0, "log_id": 1579088750143069, "result": [ 13, 10 ] }
设备绑定技能
-
/rpc/2.0/cvsaas/v1/device/skill/bind [POST]
请求格式:header应为Content-Type:application/json
请求头headers添加 Authorization:Basic YWRtaW46YWRtaW4yMDIwIQ==
(YWRtaW46YWRtaW4yMDIwIQ==为 用户名:密码 进行base64编码后的结果)
接口说明:将设备配置上对应的技能,注意该接口为增量的绑定,即假如设备A已经绑定了技能10,此时调用该接口将设备A再与技能11绑定,则最终结果是设备A绑定了[10,11]。
请求说明:
参数名称 类型 是否必填 说明 deviceToken String 是 设备token skillId Long 是 技能id,请参考技能id列表 请求示例:
{ "deviceToken":"4REQ-XOQV-T5TV-0NDP", "skillId":10 }
返回说明:
参数名称 类型 是否一定存在 说明 log_id Long 是 logid,调用唯一ID error_code int 是 服务调用提示码,0表示成功,非0表示失败 error_msg String 否 服务调用提示信息,失败时返回 返回示例:
{ "error_code": 0, "log_id": 1579088750143069 }
设备绑定多技能
-
/rpc/2.0/cvsaas/v1/device/skills/bind [POST]
请求格式:header应为Content-Type:application/json
请求头headers添加 Authorization:Basic YWRtaW46YWRtaW4yMDIwIQ==
(YWRtaW46YWRtaW4yMDIwIQ==为 用户名:密码 进行base64编码后的结果)
接口说明:将设备配置上对应的技能,注意该接口为全量的绑定,即假如设备A已经绑定了技能10,此时调用该接口将设备A再与技能11,12绑定,则最终结果是设备A绑定了[11,12],之前的10会自动解绑。
请求说明:
参数名称 类型 是否必填 说明 deviceToken String 是 设备token skills Array 是 技能id数组,请参考技能id列表 请求示例:
{ "deviceToken":"4REQ-XOQV-T5TV-0NDP", "skills":[11,12] }
返回说明:
参数名称 类型 是否一定存在 说明 log_id Long 是 logid,调用唯一ID error_code int 是 服务调用提示码,0表示成功,非0表示失败 error_msg String 否 服务调用提示信息,失败时返回 返回示例:
{ "error_code": 0, "log_id": 1579088750143069 }
设备解绑技能
-
/rpc/2.0/cvsaas/v1/device/skill/unbind [POST]
请求格式:header应为Content-Type:application/json
请求头headers添加 Authorization:Basic YWRtaW46YWRtaW4yMDIwIQ==
(YWRtaW46YWRtaW4yMDIwIQ==为 用户名:密码 进行base64编码后的结果)
接口说明:将设备与技能解除绑定
请求说明:
参数名称 类型 是否必填 说明 deviceToken String 是 设备token skillId Long 是 技能id,请参考技能id列表 请求示例:
{ "deviceToken":"4REQ-XOQV-T5TV-0NDP", "skillId":10 }
返回说明:
参数名称 类型 是否一定存在 说明 log_id Long 是 logid,调用唯一ID error_code int 是 服务调用提示码,0表示成功,非0表示失败 error_msg String 否 服务调用提示信息,失败时返回 返回示例:
{ "error_code": 0, "log_id": 1579088750143069 }
获取设备绑定的技能的配置
-
/rpc/2.0/cvsaas/v1/device/skill/config/get [POST]
请求格式:header应为Content-Type:application/json
接口说明:在此先要说明一点,每个技能有一套默认的配置模板,当设备与技能进行绑定时,会根据技能的配置模版复制出一套配置与设备相关联。也就是说,同一个技能,在与不同的设备绑定时,可以有不同的配置。这个接口就是查询某技能在与某设备绑定时的配置。
请求说明:
参数名称 类型 是否必填 说明 deviceToken String 是 设备token skillId Long 是 技能id,请参考技能id列表 请求示例:
{ "deviceToken":"4REQ-XOQV-T5TV-0NDP", "skillId":10 }
返回说明:
参数名称 类型 是否一定存在 说明 log_id Long 是 logid,调用唯一ID error_code int 是 服务调用提示码,0表示成功,非0表示失败 error_msg String 否 服务调用提示信息,失败时返回 result Object 是 结果 +deviceToken String 是 请求参数中的deviceToken原样返回 +skillId Long 是 请求参数中的skillId原样返回 +configInfo String 是 技能配置,是String类型,值是json的格式,每一个技能的configInfo格式不同,格式参考文档技能配置说明 +extraction Object 否 抽帧配置 ++timePeriods[] List 否 运行时间段 +++startTime String 否 开始时间,例如11:00 +++endTime String 否 结束时间,如果结束时间等于开始时间,则表示全天抽帧 ++image Object 否 图片抽帧配置 +++frames Int 否 帧数 +++duration Int 否 时间段 +++durationUnit Int 否 时间段单位,0:秒,1:分钟 +++durationInSeconds Int 否 时间段(换算成秒),fps即frames/durationInSeconds +areas[] Array 否 技能分析区域,如果为空,则表示分析区域为全图 ++name String 否 区域名称 ++nodes Array 否 顶点,参考返回示例 +createTime Date 否 创建时间 +updateTime Date 否 更新时间 返回示例:
{ "error_code": 0, "log_id": 1607341754739206, "trace_id": "fae1dbab65d24ab3be5f03f7f7303dad", "result": { "deviceToken": "NRVO-59QL-PUBM-BJVL", "skillId": 10, "configInfo": "{\"skillId\":10,\"skillVersion\":1,\"faceSet\":{},\"modelThresholds\":{\"faceScoreThreshold\":{\"lowerLimit\":80},\"faceQualityControl\":0,\"bodyProbabilityThreshold\":{\"lowerLimit\":0.3}},\"alarmSetting\":{\"bodyFrameAlarmControl\":0}}", "extraction": { "timePeriods": [ { "startTime": "00:00", "endTime": "00:00" } ], "image": { "frames": 1, "duration": 2, "durationUnit": 0, "durationInSeconds": 2 } }, "areas": [ { "name":"area0", "nodes": [ [ 114, 141 ], [ 1168, 83 ], [ 1195, 596 ], [ 131, 666 ] ] } ], "createTime": 1607340692000, "updateTime": 1607391091000 } }
设置设备绑定的技能的配置
-
/rpc/2.0/cvsaas/v1/device/skill/config/set [POST]
请求格式:header应为Content-Type:application/json
请求头headers添加 Authorization:Basic YWRtaW46YWRtaW4yMDIwIQ==
(YWRtaW46YWRtaW4yMDIwIQ==为 用户名:密码 进行base64编码后的结果)
接口说明:在此先要说明一点,每个技能有一套默认的配置模板,当设备与技能进行绑定时,会根据技能的配置模版复制出一套配置与设备相关联。也就是说,同一个技能,在与不同的设备绑定时,可以有不同的配置。这个接口就是设置某技能在与某设备绑定时的配置。
请求说明:
参数名称 类型 是否必填 说明 deviceToken String 是 设备token skillId Long 是 技能id,请参考技能id列表 configInfo String 否 技能配置,是String类型,值是json的格式,每一个技能的configInfo格式不同 extraction Object 否 抽帧配置,具体格式请参考上个接口中的返回即可 areas Array 否 分析区域,具体格式请参考上个接口中的返回即可 createTime Date 否 创建时间 updateTime Date 否 更新时间 注:configInfo/extraction/areas不需要一起传,比如只传extraction,则只更新extraction部分,configInfo和areas则保持不变。
请求示例:
{ "deviceToken": "NRVO-59QL-PUBM-BJVL", "skillId": 10, "configInfo": "{\"skillId\":10,\"skillVersion\":1,\"faceSet\":{},\"modelThresholds\":{\"faceScoreThreshold\":{\"lowerLimit\":80},\"faceQualityControl\":0,\"bodyProbabilityThreshold\":{\"lowerLimit\":0.3}},\"alarmSetting\":{\"bodyFrameAlarmControl\":0}}", "extraction": { "timePeriods": [ { "startTime": "00:00", "endTime": "00:00" } ], "image": { "frames": 1, "duration": 2, "durationUnit": 0, "durationInSeconds": 2 } }, "areas": [ { "nodes": [ [ 114, 141 ], [ 1168, 83 ], [ 1195, 596 ], [ 131, 666 ] ] } ] }
返回说明:
参数名称 类型 是否一定存在 说明 log_id Long 是 logid,调用唯一ID error_code int 是 服务调用提示码,0表示成功,非0表示失败 error_msg String 否 服务调用提示信息,失败时返回 返回示例:
{ "error_code": 0, "log_id": 1603345106274424, "trace_id": "a8fd8896f0bd48209d94171b0909a40c" }
设备暂停
-
/rpc/2.0/cvsaas/v1/device/pause [POST]
请求格式:header应为Content-Type:application/json
请求头headers添加 Authorization:Basic YWRtaW46YWRtaW4yMDIwIQ==
(YWRtaW46YWRtaW4yMDIwIQ==为 用户名:密码 进行base64编码后的结果)
接口说明:让设备暂停抽帧
请求说明:
参数名称 类型 是否必填 说明 deviceToken String 是 设备token 请求示例:
{ "deviceToken": "NRVO-59QL-PUBM-BJVL", }
返回说明:
参数名称 类型 是否一定存在 说明 log_id Long 是 logid,调用唯一ID error_code int 是 服务调用提示码,0表示成功,非0表示失败 error_msg String 否 服务调用提示信息,失败时返回 返回示例:
{ "error_code": 0, "log_id": 1603345106274424 }
设备恢复
-
/rpc/2.0/cvsaas/v1/device/resume [POST]
请求格式:header应为Content-Type:application/json
请求头headers添加 Authorization:Basic YWRtaW46YWRtaW4yMDIwIQ==
(YWRtaW46YWRtaW4yMDIwIQ==为 用户名:密码 进行base64编码后的结果)
接口说明:让设备重新开始抽帧
请求说明:
参数名称 类型 是否必填 说明 deviceToken String 是 设备token 请求示例:
{ "deviceToken": "NRVO-59QL-PUBM-BJVL", }
返回说明:
参数名称 类型 是否一定存在 说明 log_id Long 是 logid,调用唯一ID error_code int 是 服务调用提示码,0表示成功,非0表示失败 error_msg String 否 服务调用提示信息,失败时返回 返回示例:
{ "error_code": 0, "log_id": 1603345106274424 }
设备预览(通过设备token)
-
/rpc/2.0/cvsaas/v1/device/preview [POST]
请求格式:header应为Content-Type:application/json
接口说明:根据设备token获取一张预览图
请求说明:
参数名称 类型 是否必填 说明 deviceToken String 是 设备token 请求示例:
{ "deviceToken": "NRVO-59QL-PUBM-BJVL", }
返回说明:
参数名称 类型 说明 log_id Long logid,调用唯一ID error_code int 服务调用提示码,0表示成功,非0表示失败 error_msg String 服务调用提示信息,失败时返回 result Object +key String 预览图片的fileKey,完整访问地址为:http://emlink地址:9000/aipe-cvsaas/{key} +url String 请忽视该字段 返回示例:
{ "error_code": 0, "log_id": 1615376831911016, "trace_id": "79ea714482af45a9a949fb44d9f05b2c", "result": { "key": "/resource/preview/8af1ba3903329c0c096ccfc660deb4ac", "url": "http://easymonitor-storage:9000/aipe-cvsaas/resource/preview/8af1ba3903329c0c096ccfc660deb4ac" } }
设备预览(通过设备地址)
-
/rpc/2.0/cvsaas/v1/device/preview-address [POST]
请求格式:header应为Content-Type:application/json
接口说明:根据设备地址获取一张预览图,需要指明通过哪个盒子进行预览(盒子需要能访问到摄像头,一般他们在一个局域网内)
请求说明:
参数名称 类型 是否必填 说明 edgeToken String 是 边缘设备token deviceAddress String 是 设备地址 deviceType Byte 否 设备类型 deviceProtocol Byte 否 设备协议 controlTransport Byte 否 信令控制协议 mediaTransport Byte 否 媒体数据协议 请求示例:
{ "edgeToken": "xxxx", "deviceAddress":"xxxx" }
返回说明:
参数名称 类型 说明 log_id Long logid,调用唯一ID error_code int 服务调用提示码,0表示成功,非0表示失败 error_msg String 服务调用提示信息,失败时返回 result String 预览图(base64格式) 返回示例:
{ "error_code": 0, "log_id": 1615376831911016, "trace_id": "79ea714482af45a9a949fb44d9f05b2c", "result": "/9j//gAQTGF..." }
技能相关接口
获取技能列表
-
/rpc/2.0/cvsaas/v1/skill/list [POST]
请求格式:header应为Content-Type:application/json
接口说明:获取技能的配置schema,这个schema用于校验技能的自定义参数格式是否合法,schema为json schema。
请求说明:
参数名称 类型 说明 skillType Set 技能类型,
0:预置技能
1:自定义技能
2:模板技能skillStatus Byte 技能状态,配置界面上只能看到状态为启用的技能
0:禁用
1:启用edgeToken String 盒子token deviceToken String 设备token 请求示例:
{ "skillType":[0], "skillStatus":1, "deviceToken":"OAAN-4DLE-SFKH-LYVS", "edgeToken":"16057824301d" }
返回说明:(未列出字段一般可忽略)
参数名称 类型 说明 log_id Long log_id,请求唯一标识。 error_code String 服务调用提示码,0表示成功,非0表示失败 error_msg String 服务调用提示信息,失败时返回 result Object 结果 +id Long 技能id +forkFrom Long 如果从其他技能复制(fork)而来,则此id为其源技能id;
预置技能不从其他技能form而来,这个值都为0;
自定义easydl技能是从其他技能模版fork而来,此id就为模版技能的id
不过一般不需要关注这个字段。+userId String 预置技能都为system +name String 技能中文名 +engName String 技能英文名 +desc String 描述信息 +skillType Long 技能类型,
0:预置技能
1:自定义技能
2:模板技能+skillStatus Long 技能状态,配置界面上只能看到状态为启用的技能
0:禁用
1:启用+maxConfigAreaNum Long 该技能最大可划定几个监控区域 +version Long 技能版本,技能元信息变化时,此字段需+1,才能应用到盒子 返回示例:
{ "error_code": 0, "log_id": 1615379785518020, "trace_id": "d0b8b5ea257843b6b5e50038bc60a468", "result": [ { "id": 10, "forkFrom": 0, "userId": "system", "name": "电子围栏", "engName": "system_aipe_trespassers", "logoBosKey": "", "logoBosUrl": "", "desc": "实时监控核心区域,基于人体识别技术,判断是否有人员闯入;可进一步结合人脸识别判定身份信息,事先定义白名单人脸库,当闯入人员不在白名单里,才进行告警", "skillType": 0, "skillStatus": 1, "demoStatus": -1, "viewOrder": 1, "publishVersion": 0, "runEnvironment": 0, "gpuTypes": "1,2", "maxConfigAreaNum": 5, "version": 0, "createTime": 1564542371000, "updateTime": 1602647146000, "publishTime": 1602647146000 }, { "id": 12, "forkFrom": 0, "userId": "system", "name": "陌生人检测", "engName": "system_aipe_stranger_detect", "logoBosKey": "", "logoBosUrl": "", "desc": "在园区、工地/工厂、学校等场所布控,事先定义白名单人脸库,发现不在白名单中的陌生人则告警提醒(检测不到人脸的人员亦视作陌生人),加强环境安全监督", "skillType": 0, "skillStatus": 1, "demoStatus": 2, "viewOrder": 3, "publishVersion": 0, "runEnvironment": 0, "gpuTypes": "1,2", "maxConfigAreaNum": 5, "version": 0, "createTime": 1568113130000, "updateTime": 1586846860000 }, { "id": 18, "forkFrom": 0, "userId": "system", "name": "安全帽佩戴合规检测", "engName": "system_aipe_safety_helmet_detect", "logoBosKey": "", "logoBosUrl": "", "desc": "面向工地、工厂车间、工业园区等场所,若检测到有工人未佩戴安全帽(含拿在手里等情况),则发出告警提醒,减少安全隐患", "skillType": 0, "skillStatus": 1, "demoStatus": 2, "viewOrder": 2, "publishVersion": 0, "runEnvironment": 0, "gpuTypes": "1,2", "maxConfigAreaNum": 5, "version": 1, "createTime": 1571896906000, "updateTime": 1586846864000 }, { "id": 19, "forkFrom": 0, "userId": "system", "name": "烟火检测", "engName": "system_aipe_smokefire_detect", "logoBosKey": "", "logoBosUrl": "", "desc": "在建筑工地、工厂车间、餐饮后厨、户外林区等场景下,监控是否有烟火出现,及时告警提醒,减少人身财产安全损伤", "skillType": 0, "skillStatus": 1, "demoStatus": 2, "viewOrder": 4, "publishVersion": 0, "runEnvironment": 0, "gpuTypes": "1,2", "maxConfigAreaNum": 5, "version": 0, "createTime": 1571897020000, "updateTime": 1586846865000 } ] }
获取技能自定义参数schema(一般用不到)
-
/rpc/2.0/cvsaas/v1/skill/config/schema/get [POST]
请求格式:header应为Content-Type:application/json
接口说明:获取技能的配置schema,这个schema用于校验技能的自定义参数格式是否合法,schema为json schema。
请求说明:
参数名称 类型 是否必填 说明 skillId Long 是 技能id 请求示例:
{ "skillId":"18" }
返回说明:
参数名称 类型 是否一定存在 说明 log_id Long 是 log_id,请求唯一标识。 error_code String 是 服务调用提示码,0表示成功,非0表示失败 error_msg String 否 服务调用提示信息,失败时返回 result Object 是 结果 +skillId Long 是 技能id +schema String 是 技能配置schema,String类型,其实是json格式;
json-schema可参考:https://json-schema.org/返回示例:
{ "error_code": 0, "log_id": 1612152722875472, "trace_id": "f96bf24f001c4401ab780ec95cee93ba", "result": { "skillId": 18, "schema": "{\n \"definitions\":{\n \"modelThresholds\":{\n \"type\":\"object\",\n \"required\":[\n \"bodyProbabilityThreshold\",\n \"helmetProbabilityThreshold\",\n \"helmetMatchHeadThreshold\"\n ],\n \"properties\":{\n \"bodyProbabilityThreshold\":{\n \"title\":\"人体置信度\",\n \"description\":\"人体置信度得分≥设定阈值时,才会被识别为有效人体,进行分析告警。推荐阈值范围:0.2~1,阈值越高,识别越精准,但漏识别概率增大\",\n \"type\":\"object\",\n \"required\":[\n \"lowerLimit\"\n ],\n \"properties\":{\n \"lowerLimit\":{\n \"type\":\"number\",\n \"minimum\":0,\n \"maximum\":1,\n \"multipleOf\":0.01,\n \"default\":0.2\n }\n }\n },\n \"helmetProbabilityThreshold\":{\n \"title\":\"安全帽置信度\",\n \"description\":\"安全帽置信度得分≥设定阈值时,才会被识别为有效安全帽。推荐阈值范围:0.2~1,阈值越高,识别越精准,但漏识别概率增大\",\n \"type\":\"object\",\n \"required\":[\n \"lowerLimit\"\n ],\n \"properties\":{\n \"lowerLimit\":{\n \"type\":\"number\",\n \"minimum\":0,\n \"maximum\":1,\n \"multipleOf\":0.01,\n \"default\":0.2\n }\n }\n },\n \"helmetMatchHeadThreshold\":{\n \"title\":\"佩戴安全帽置信度\",\n \"description\":\"员工佩戴安全帽的置信度,分数越高,佩戴安全帽的概率越大,以排除拿在手里、夹在腋下等情况。推荐阈值范围:0.8~1\",\n \"type\":\"object\",\n \"required\":[\n \"lowerLimit\"\n ],\n \"properties\":{\n \"lowerLimit\":{\n \"type\":\"number\",\n \"minimum\":0,\n \"maximum\":1,\n \"multipleOf\":0.01,\n \"default\":0.8\n }\n }\n }\n }\n }\n },\n \"type\":\"object\",\n \"required\":[\n \"skillId\",\n \"skillVersion\",\n \"modelThresholds\"\n ],\n \"properties\":{\n \"skillId\":{\n \"type\":\"integer\",\n \"enum\":[\n 18\n ],\n \"default\":18\n },\n \"skillVersion\":{\n \"type\":\"integer\",\n \"enum\":[\n 1\n ],\n \"default\":1\n },\n \"modelThresholds\":{\n \"title\":\"设置模型阈值\",\n \"$ref\":\"#/definitions/modelThresholds\"\n }\n }\n}" } }
设置技能自定义参数schema(一般用不到)
-
/rpc/2.0/cvsaas/v1/skill/config/schema/set [POST]
请求格式:header应为Content-Type:application/json
请求头headers添加 Authorization:Basic YWRtaW46YWRtaW4yMDIwIQ==
(YWRtaW46YWRtaW4yMDIwIQ==为 用户名:密码 进行base64编码后的结果)
接口说明:设置技能的自定义参数配置schema,这个schema用于校验技能的自定义参数格式是否合法,schema为json schema。如果要用该接口设置schema,请先调用schema/get,在其结果上修改后,确认合法再进行修改。
请求说明:
参数名称 类型 是否必填 说明 skillId Long 是 技能id schema String 是 schema 请求示例:
{ "skillId": 18, "schema": "{\n \"definitions\":{\n \"modelThresholds\":{\n \"type\":\"object\",\n \"required\":[\n \"bodyProbabilityThreshold\",\n \"helmetProbabilityThreshold\",\n \"helmetMatchHeadThreshold\"\n ],\n \"properties\":{\n \"bodyProbabilityThreshold\":{\n \"title\":\"人体置信度\",\n \"description\":\"人体置信度得分≥设定阈值时,才会被识别为有效人体,进行分析告警。推荐阈值范围:0.2~1,阈值越高,识别越精准,但漏识别概率增大\",\n \"type\":\"object\",\n \"required\":[\n \"lowerLimit\"\n ],\n \"properties\":{\n \"lowerLimit\":{\n \"type\":\"number\",\n \"minimum\":0,\n \"maximum\":1,\n \"multipleOf\":0.01,\n \"default\":0.2\n }\n }\n },\n \"helmetProbabilityThreshold\":{\n \"title\":\"安全帽置信度\",\n \"description\":\"安全帽置信度得分≥设定阈值时,才会被识别为有效安全帽。推荐阈值范围:0.2~1,阈值越高,识别越精准,但漏识别概率增大\",\n \"type\":\"object\",\n \"required\":[\n \"lowerLimit\"\n ],\n \"properties\":{\n \"lowerLimit\":{\n \"type\":\"number\",\n \"minimum\":0,\n \"maximum\":1,\n \"multipleOf\":0.01,\n \"default\":0.2\n }\n }\n },\n \"helmetMatchHeadThreshold\":{\n \"title\":\"佩戴安全帽置信度\",\n \"description\":\"员工佩戴安全帽的置信度,分数越高,佩戴安全帽的概率越大,以排除拿在手里、夹在腋下等情况。推荐阈值范围:0.8~1\",\n \"type\":\"object\",\n \"required\":[\n \"lowerLimit\"\n ],\n \"properties\":{\n \"lowerLimit\":{\n \"type\":\"number\",\n \"minimum\":0,\n \"maximum\":1,\n \"multipleOf\":0.01,\n \"default\":0.8\n }\n }\n }\n }\n }\n },\n \"type\":\"object\",\n \"required\":[\n \"skillId\",\n \"skillVersion\",\n \"modelThresholds\"\n ],\n \"properties\":{\n \"skillId\":{\n \"type\":\"integer\",\n \"enum\":[\n 18\n ],\n \"default\":18\n },\n \"skillVersion\":{\n \"type\":\"integer\",\n \"enum\":[\n 1\n ],\n \"default\":1\n },\n \"modelThresholds\":{\n \"title\":\"设置模型阈值\",\n \"$ref\":\"#/definitions/modelThresholds\"\n }\n }\n}" }
返回说明:
参数名称 类型 是否一定存在 说明 log_id Long 是 log_id,请求唯一标识。 error_code String 是 服务调用提示码,0表示成功,非0表示失败 error_msg String 否 服务调用提示信息,失败时返回 返回示例:
{ "error_code": 0, "log_id": 1612152722875472, "trace_id": "f96bf24f001c4401ab780ec95cee93ba" }
获取技能的ui schema(一般用不到)
-
/rpc/2.0/cvsaas/v1/skill/ui/schema/get [POST]
请求格式:header应为Content-Type:application/json
接口说明:获取技能的界面schema,这个schema指定了各个参数在界面上的配置形式(滑块、输入框等...)
请求说明:
参数名称 类型 是否必填 说明 skillId Long 是 技能id 请求示例:
{ "skillId":"18" }
返回说明:
参数名称 类型 是否一定存在 说明 log_id Long 是 log_id,请求唯一标识。 error_code String 是 服务调用提示码,0表示成功,非0表示失败 error_msg String 否 服务调用提示信息,失败时返回 result Object 是 结果 +skillId Long 是 技能id +schema String 是 UI schema 返回示例:
{ "error_code": 0, "log_id": 1615379001959018, "trace_id": "469e3e4a36d44dfd846d8c33cd76b1c7", "result": { "skillId": 18, "schema": "{\n \"skillId\":{\n \"ui:widget\":\"hidden\"\n },\n \"skillVersion\":{\n \"ui:widget\":\"hidden\"\n },\n \"modelThresholds\":{\n \"bodyProbabilityThreshold\":{\n \"ui:field\":\"slider\"\n },\n \"helmetProbabilityThreshold\":{\n \"ui:field\":\"slider\"\n },\n \"helmetMatchHeadThreshold\":{\n \"ui:field\":\"slider\"\n }\n }\n}" } }
设置技能的ui schema(一般用不到)
-
/rpc/2.0/cvsaas/v1/skill/ui/schema/set [POST]
请求格式:header应为Content-Type:application/json
请求头headers添加 Authorization:Basic YWRtaW46YWRtaW4yMDIwIQ==
(YWRtaW46YWRtaW4yMDIwIQ==为 用户名:密码 进行base64编码后的结果)
接口说明:设置技能的界面schema,这个schema指定了各个参数在界面上的配置形式(滑块、输入框等...),如果要用该接口设置schema,请先调用schema/get,在其结果上修改后,确认合法再进行修改。
请求说明:
参数名称 类型 是否必填 说明 skillId Long 是 技能id schema String 是 UI schema 请求示例:
{ "skillId": 18, "schema": "{\n \"skillId\":{\n \"ui:widget\":\"hidden\"\n },\n \"skillVersion\":{\n \"ui:widget\":\"hidden\"\n },\n \"modelThresholds\":{\n \"bodyProbabilityThreshold\":{\n \"ui:field\":\"slider\"\n },\n \"helmetProbabilityThreshold\":{\n \"ui:field\":\"slider\"\n },\n \"helmetMatchHeadThreshold\":{\n \"ui:field\":\"slider\"\n }\n }\n}" }
返回说明:
参数名称 类型 是否一定存在 说明 log_id Long 是 log_id,请求唯一标识。 error_code String 是 服务调用提示码,0表示成功,非0表示失败 error_msg String 否 服务调用提示信息,失败时返回 返回示例:
{ "error_code": 0, "log_id": 1615379001959018, "trace_id": "469e3e4a36d44dfd846d8c33cd76b1c7" }
获取技能的默认配置
-
/rpc/2.0/cvsaas/v1/skill/config/get [POST]
请求格式:header应为Content-Type:application/json
接口说明:获取技能的默认配置。默认配置指的是当设备与技能初次进行绑定时,如果未通过/rpc/2.0/cvsaas/v1/device/skill/config/set设置自定义配置,则默认使用此配置。这个配置也就是当您从界面上初次配置技能时,所展示的默认配置。注意:一般请不要使用该接口修改默认配置,如果想修改某个设备上绑定的技能的参数,请通过/rpc/2.0/cvsaas/v1/device/skill/config/set接口修改,/rpc/2.0/cvsaas/v1/device/skill/config/set影响的只有当前设备
请求说明:
参数名称 类型 是否必填 说明 skillId Long 是 技能id 请求示例:
{ "skillId": 18 }
返回说明:
参数名称 类型 说明 log_id Long log_id,请求唯一标识。 error_code String 服务调用提示码,0表示成功,非0表示失败 error_msg String 服务调用提示信息,失败时返回 result Object +skillId Long 技能id +configInfo String json格式,默认配置参数 返回示例:
{ "error_code": 0, "log_id": 1615379440753019, "trace_id": "c1154d32e8324211819f9f27440a26f5", "result": { "id": 7, "skillId": 18, "configInfo": "{\n \"skillId\":18,\n \"skillVersion\":1,\n \"modelThresholds\":{\n \"bodyProbabilityThreshold\":{\n \"lowerLimit\":0.2\n },\n \"helmetProbabilityThreshold\":{\n \"lowerLimit\":0.2\n },\n \"helmetMatchHeadThreshold\":{\n \"lowerLimit\":0.8\n }\n }\n}", "createTime": 1597821185000, "updateTime": 1600678078000 } }
设置技能的默认配置
-
/rpc/2.0/cvsaas/v1/skill/config/set [POST]
请求格式:header应为Content-Type:application/json
请求头headers添加 Authorization:Basic YWRtaW46YWRtaW4yMDIwIQ==
(YWRtaW46YWRtaW4yMDIwIQ==为 用户名:密码 进行base64编码后的结果)
接口说明:设置技能的默认配置。默认配置指的是当设备与技能初次进行绑定时,如果未通过/rpc/2.0/cvsaas/v1/device/skill/config/set设置自定义配置,则默认使用此配置。这个配置也就是当您从界面上初次配置技能时,所展示的默认配置。注意:一般请不要使用该接口修改默认配置,如果想修改某个设备上绑定的技能的参数,请通过/rpc/2.0/cvsaas/v1/device/skill/config/set接口修改,/rpc/2.0/cvsaas/v1/device/skill/config/set影响的只有当前设备,而/rpc/2.0/cvsaas/v1/skill/config/set影响的是之后添加的所有设备。
请求说明:
参数名称 类型 是否必填 说明 skillId Long 是 技能id configInfo String 是 默认配置 请求示例:
{ "skillId": 18, "configInfo": "{\n \"skillId\":18,\n \"skillVersion\":1,\n \"modelThresholds\":{\n \"bodyProbabilityThreshold\":{\n \"lowerLimit\":0.2\n },\n \"helmetProbabilityThreshold\":{\n \"lowerLimit\":0.2\n },\n \"helmetMatchHeadThreshold\":{\n \"lowerLimit\":0.8\n }\n }\n}" }
返回说明:
参数名称 类型 说明 log_id Long log_id,请求唯一标识。 error_code String 服务调用提示码,0表示成功,非0表示失败 error_msg String 服务调用提示信息,失败时返回 返回示例:
{ "error_code": 0, "log_id": 1615379440753019, "trace_id": "c1154d32e8324211819f9f27440a26f5" }
人脸库相关接口
添加用户人脸
-
/rpc/2.0/cvsaas/v1/faceset/face/add [POST]
请求格式:header应为Content-Type:application/json
请求头headers添加 Authorization:Basic YWRtaW46YWRtaW4yMDIwIQ==
(YWRtaW46YWRtaW4yMDIwIQ==为 用户名:密码 进行base64编码后的结果)
接口说明:增加用户的人脸图片信息
请求说明:
参数名称 类型 是否必填 说明 image String 是 用户图片信息(总数据大小应小于10M)。
图片的base64值,base64编码后的图片数据(编码后的图片大小不超过2M)。groupId String 是 用户组ID,标识一组用户组(由数字、字母、下划线组成,长度:1~48(数据库长度为1024))。 userId String 是 用户ID(由数字、字母、下划线组成,长度1~20(数据库长度为1024)) 请求示例:
{ "image":"/9j/4AAQSkZJRgABAQAAAQABAADs...", "groupId":"pig_face", "userId":"pig_1" }
返回说明:
参数名称 类型 是否一定存在 说明 log_id Long 是 log_id,请求唯一标识。 error_code String 是 服务调用提示码,0表示成功,非0表示失败 error_msg String 否 服务调用提示信息,失败时返回 返回示例:
{ "log_id":1572936858518049, "error_code":0 }
删除用户人脸
-
/rpc/2.0/cvsaas/v1/faceset/face/del [POST]
请求格式:header应为Content-Type:application/json
请求头headers添加 Authorization:Basic YWRtaW46YWRtaW4yMDIwIQ==
(YWRtaW46YWRtaW4yMDIwIQ==为 用户名:密码 进行base64编码后的结果)
接口说明:删除用户人脸图片(删除用户的某一张人脸,如果该用户只有一张人脸图片,则同时删除用户)
请求说明:
参数名称 类型 是否必填 说明 groupId String 是 用户组ID,标识一组用户组(由数字、字母、下划线组成,长度:1~48(数据库长度为1024))。 userId String 是 用户ID(由数字、字母、下划线组成,长度1~20(数据库长度为1024)) faceToken String 是 人脸图片token,人脸图片的唯一标识 请求示例:
{ "groupId":"pig_face", "userId":"pig_2", "faceToken":"86b8e1ed31bf87b661f31887cdfc1677" }
返回说明:
参数名称 类型 是否一定存在 说明 log_id Long 是 log_id,请求唯一标识。 error_code String 是 服务调用提示码,0表示成功,非0表示失败 error_msg String 否 服务调用提示信息,失败时返回 返回示例:
{ "log_id":1572937218173051, "error_code":0 }
查询用户人脸列表
-
/rpc/2.0/cvsaas/v1/faceset/face/getlist [POST]
请求格式:header应为Content-Type:application/json;
接口说明:查询用户人脸列表
请求说明:
参数名称 类型 是否必填 说明 groupId String 是 用户组ID,标识一组用户组(由数字、字母、下划线组成,长度:1~48(数据库长度为1024))。 userId String 是 用户ID(由数字、字母、下划线组成,长度1~20(数据库长度为1024)) 请求示例:
{ "groupId":"pig_face", "userId":"pig_1" }
返回说明:
参数名称 类型 是否一定存在 说明 log_id Long 是 log_id,请求唯一标识。 error_code String 是 服务调用提示码,0表示成功,非0表示失败 error_msg String 否 服务调用提示信息,失败时返回 result jsonObject 否 人脸图片信息列表 +faceImage String 是 人脸图片 +faceToken String 是 人脸token,人脸图片的唯一标识 +createTime String 是 人脸创建时间 返回示例:
{ "log_id":1572936303776047, "error_code":0, "result":[ { "faceImage":"/9j/4AAQSkZJRgABAQAAAQABAAD...", "faceToken":"86b8e1ed31bf87b661f31887cdfc1677", "createTime":"2019-11-22 00:00:00" } ] }
创建用户组
-
//rpc/2.0/cvsaas/v1/faceset/group/add [POST]
请求格式:header应为Content-Type:application/json
请求头headers添加 Authorization:Basic YWRtaW46YWRtaW4yMDIwIQ==
(YWRtaW46YWRtaW4yMDIwIQ==为 用户名:密码 进行base64编码后的结果)
接口说明:创建用户组
请求说明:
参数名称 类型 是否必填 说明 groupId String 是 用户组ID,标识一组用户组(由数字、字母、下划线组成,长度:1~48(数据库长度为1024)) groupName jsonArray 是 用户组名称(长度:1~32(数据库长度为1024)) groupRemark String 否 用户组备注(长度:0~128(数据库长度为1024)) 请求示例:
{ "groupId":"pig_user", "groupName":"小猪组", "groupRemark":"小猪用户" }
返回说明:
参数名称 类型 是否一定存在 说明 log_id Long 是 log_id,请求唯一标识。 error_code String 是 服务调用提示码,0表示成功,非0表示失败 error_msg String 否 服务调用提示信息,失败时返回 返回示例:
{ "log_id":1572937218173051, "error_code":0 }
删除用户组
-
/rpc/2.0/cvsaas/v1/faceset/group/del [POST]
请求格式:header应为Content-Type:application/json
请求头headers添加 Authorization:Basic YWRtaW46YWRtaW4yMDIwIQ==
(YWRtaW46YWRtaW4yMDIwIQ==为 用户名:密码 进行base64编码后的结果)
接口说明:删除用户组
请求说明:
参数名称 类型 是否必填 说明 groupId String 是 用户组ID,标识一组用户组(由数字、字母、下划线组成,长度:1~48(数据库长度为1024))。 请求示例:
{ "groupId":"pig_face" }
返回说明:
参数名称 类型 是否一定存在 说明 log_id Long 是 log_id,请求唯一标识。 error_code String 是 服务调用提示码,0表示成功,非0表示失败 error_msg String 否 服务调用提示信息,失败时返回 返回示例:
{ "log_id":1572937372320054, "error_code":0 }
查询全量用户组
-
/rpc/2.0/cvsaas/v1/faceset/group/getall [POST]
请求格式:header应为Content-Type:application/json
接口说明:查询所有用户组,按照创建时间倒序排列
请求说明:
参数名称 类型 是否必填 说明 edgeToken String 否 盒子token 请求示例:
{ "edgeToken":"xxxxxxx" }
返回说明:
参数名称 类型 是否一定存在 说明 log_id Long 是 log_id,请求唯一标识。 error_code String 是 服务调用提示码,0表示成功,非0表示失败 error_msg String 否 服务调用提示信息,失败时返回 result jsonObject 否 查询结果 +groupId String 是 用户组ID +groupName String 是 用户组名称 +groupRemark String 是 用户备注 +createTime String 是 用户组创建时间 +version Long 是 用户组版本 返回示例:
{ "log_id":1572924558271921, "error_code":0, "result":[ { "groupId":"1", "groupName":"TEST", "groupRemark":"", "createTime":"2019-11-22 00:00:00", "version": 1 }, { "groupId":"pig_face", "groupName":"小猪脸组", "groupRemark":"一张张小猪脸", "createTime":"2019-11-22 00:00:00", "version": 1 } ] }
查询用户组列表
-
/rpc/2.0/cvsaas/v1/faceset/group/getlist [POST]
请求格式:header应为Content-Type:application/json
接口说明:查询用户组列表(可分页查询),按照创建时间倒序排列
请求说明:
参数名称 类型 是否必填 说明 pageNo int 否 页码(默认为1) pageSize int 否 每页记录数(默认为20,最大为200) 请求示例:
{ "pageNo":1, "pageSize":20 }
返回说明:
参数名称 类型 是否一定存在 说明 log_id Long 是 log_id,请求唯一标识。 error_code String 是 服务调用提示码,0表示成功,非0表示失败 error_msg String 否 服务调用提示信息,失败时返回 result jsonObject 否 查询结果 +totalCount int 是 总记录数 +totalPage Int 是 总页数 +pageNo int 是 页码 +pageSize int 是 每页记录数 +data jsonArray 是 用户组列表 ++groupId String 是 用户组ID ++groupName String 是 用户组名称 ++groupRemark String 是 用户组备注 ++createTime String 是 用户组创建时间 +version Long 是 用户组版本 +edges jsonArray 是 人脸组同步信息 ++edgeToken String 是 EM-BOX的token ++edgeName String 是 EM-BOX名称 ++reportedVersion Long 是 人脸组在EM-BOX上的最新版本号 +syncStatus int 是 人脸组同步状态
0:未同步
1:同步中
2:已同步返回示例:
{ "log_id":1572924558271920, "error_code":0, "result":{ "totalCount":2, "totalPage":1, "pageNo":1, "pageSize":20, "data":[ { "groupId":"1", "groupName":"TEST", "groupRemark":"", "createTime":"2019-11-22 00:00:00", "version": 0, "edges": [ { "edgeToken": "16057824301d", "edgeName": "测试link", "reportedVersion": -1 } ], "syncStatus": 1 }, { "groupId":"pig_face", "groupName":"小猪脸组", "groupRemark":"一张张小猪脸", "createTime":"2019-11-22 00:00:00", "version": 0, "edges": [ { "edgeToken": "16057824301d", "edgeName": "南网测试link", "reportedVersion": -1 } ], "syncStatus": 1 } ] } }
查询用户列表
-
/rpc/2.0/cvsaas/v1/faceset/group/getuserlist [POST]
请求格式:header应为Content-Type:application/json
接口说明:查询用户组列表(可分页查询),按照创建时间倒序排列
请求说明:
参数名称 类型 是否必填 说明 groupId String 是 用户组ID,标识一组用户组(由数字、字母、下划线组成,长度:1~48(数据库长度为1024))。 pageNo int 否 页码(默认为1) pageSize int 否 每页记录数(默认为20,最大为200) userName String 否 用户组name 请求示例:
{ "groupId":"pig_face", "pageNo":1, "pageSize":20, "userName":"xxxx" }
返回说明:
参数名称 类型 是否一定存在 说明 log_id Long 是 log_id,请求唯一标识。 error_code String 是 服务调用提示码,0表示成功,非0表示失败 error_msg String 否 服务调用提示信息,失败时返回 result jsonObject 否 查询结果 +totalCount int 是 总记录数 +totalPage Int 是 总页数 +pageNo int 是 页码 +pageSize int 是 每页记录数 +data jsonArray 是 用户组列表 ++userId String 是 用户ID ++userName String 是 用户名称 ++userRemark String 是 用户备注 ++createTime String 是 用户创建时间 返回示例:
{ "log_id":1572935213678040, "error_code":0, "result":{ "totalCount":2, "totalPage":1, "pageNo":1, "pageSize":20, "data":[ { "userId":"pig_1", "userName":"小猪1号", "userRemark":"小猪崽", "createTime":"2019-11-22 00:00:00" }, { "userId":"pig_2", "userName":"小猪2号", "userRemark":"小猪崽", "createTime":"2019-11-22 00:00:00" } ] } }
注册用户
-
/rpc/2.0/cvsaas/v1/faceset/user/add [POST]
请求格式:header应为Content-Type:application/json
请求头headers添加 Authorization:Basic YWRtaW46YWRtaW4yMDIwIQ==
(YWRtaW46YWRtaW4yMDIwIQ==为 用户名:密码 进行base64编码后的结果)
接口说明:在用户组中新增用户信息,并保存用户人脸图片
请求说明:
参数名称 类型 是否必填 说明 userId String 是 用户ID(由数字、字母、下划线组成,长度1~20(数据库长度为1024)) userName String 是 用户名称(长度:1~32(数据库长度为1024)) userImage String 是 用户图片信息(总数据大小应小于10M)。
图片的base64值,base64编码后的图片数据(编码后的图片大小不超过2M)。userRemark String 是 用户组备注(长度:0~128(数据库长度为1024)) groupId String 是 用户组ID,标识一组用户组(由数字、字母、下划线组成,长度:1~48(数据库长度为1024))。 请求示例:
{ "userId":"pig_1", "userName":"小猪1号", "userImage":"/9j/4AAQSkZJRgABAQAAAQABAADs...", "userRemark":"小猪崽", "groupId":"pig_face" }
返回说明:
参数名称 类型 是否一定存在 说明 log_id Long 是 log_id,请求唯一标识。 error_code String 是 服务调用提示码,0表示成功,非0表示失败 error_msg String 否 服务调用提示信息,失败时返回 返回示例:
{ "log_id":1572927268813037, "error_code":0 }
删除用户
-
/rpc/2.0/cvsaas/v1/faceset/user/del [POST]
请求格式:header应为Content-Type:application/json
请求头headers添加 Authorization:Basic YWRtaW46YWRtaW4yMDIwIQ==
(YWRtaW46YWRtaW4yMDIwIQ==为 用户名:密码 进行base64编码后的结果)
接口说明:删除用户
请求说明:
参数名称 类型 是否必填 说明 groupId String 是 用户组ID,标识一组用户组(由数字、字母、下划线组成,长度:1~48(数据库长度为1024))。 userId String 是 用户ID(由数字、字母、下划线组成,长度1~20(数据库长度为1024)) 请求示例:
{ "groupId":"pig_face", "userId":"pig_2" }
返回说明:
参数名称 类型 是否一定存在 说明 log_id Long 是 log_id,请求唯一标识。 error_code String 是 服务调用提示码,0表示成功,非0表示失败 error_msg String 否 服务调用提示信息,失败时返回 返回示例:
{ "log_id":1572935959767041, "error_code":0 }
建立人脸组和EM-BOX的同步关系
-
/rpc/2.0/cvsaas/v1/faceset/group/sync [POST]
请求格式:header应为Content-Type:application/json
请求头headers添加 Authorization:Basic YWRtaW46YWRtaW4yMDIwIQ==
(YWRtaW46YWRtaW4yMDIwIQ==为 用户名:密码 进行base64编码后的结果)
接口说明:建立同步关系,当建立同步关系后,EM-LINK上的人脸组发生变更后,会自动同步更新到EM-BOX。
请求说明:
参数名称 类型 是否必填 说明 groupId String 是 用户组ID,标识一组用户组(由数字、字母、下划线组成,长度:1~48(数据库长度为1024))。 edges List 是 边缘设备token 请求示例:
{ "groupId":"pig_face", "edges":["xxxxxx","yyyyyy"] }
返回说明:
参数名称 类型 是否一定存在 说明 log_id Long 是 log_id,请求唯一标识。 error_code String 是 服务调用提示码,0表示成功,非0表示失败 error_msg String 否 服务调用提示信息,失败时返回 返回示例:
{ "log_id":1572935959767041, "error_code":0 }
查询人脸组和EM-BOX的同步进度
-
/rpc/2.0/cvsaas/v1/faceset/group/sync-detail[POST]
请求格式:header应为Content-Type:application/json
接口说明:查询同步进度
请求说明:
参数名称 类型 是否必填 说明 groupId String 是 用户组ID,标识一组用户组(由数字、字母、下划线组成,长度:1~48(数据库长度为1024))。 请求示例:
{ "groupId":"pig_face" }
返回说明:
参数名称 类型 说明 log_id Long log_id,请求唯一标识。 error_code String 服务调用提示码,0表示成功,非0表示失败 error_msg String 服务调用提示信息,失败时返回 result Object +desiredVersion Long EM-LINK上该人脸组的版本号 +edges List 所有边缘设备列表 ++edgeToken String 边缘设备token ++edgeName String 边缘设备名称 ++reportedVersion Long EM-BOX上该人脸组的版本号:
如果reportedVersion==desiredVersion,说明已跟EM-LINK完成同步
如果reportedVersion<desiredVersion,说明j正在同步中,desiredVersion-reportedVersion就是当前落后的版本数+synchronizedEmboxList List 已同步完成的边缘设备列表 +inSyncEmboxList List 正在同步的边缘设备列表 返回示例:
{ "error_code": 0, "log_id": 1615381065529025, "trace_id": "678f3fa553134daaab5d18cae23c665d", "result": { "desiredVersion": 1, "synchronizedEmboxList": [], "inSyncEmboxList": [ { "edgeToken": "67578717377e", "edgeName": "45", "reportedVersion": 0 } ], "edges": [ { "edgeToken": "67578717377e", "edgeName": "45", "reportedVersion": 0 } ] } }
系统配置相关接口
获取系统配置
-
/rpc/2.0/cvsaas/v1/config/get [POST]
请求格式:header应为Content-Type:application/json
接口说明:获取系统配置
请求说明:
参数名称 类型 是否必填 说明 group String 是 配置组,配置组包含了一批关联的配置,目前可选为:event-notify,event-cleaner 请求示例:
{ "group":"event-notify" }
返回说明:
参数名称 类型 是否一定存在 说明 log_id Long 是 log_id,请求唯一标识。 error_code String 是 服务调用提示码,0表示成功,非0表示失败 error_msg String 否 服务调用提示信息,失败时返回 result Object 否 各配置项的值,根据group不同而不同 返回示例:
{ "error_code": 0, "log_id": 1607343358450854, "trace_id": "4e2c8da82e6b49918a7960da9dee615c", "result": { "retry-interval": "6", "retry-times": "1", "enabled": "true", "url": "http://172.20.76.9:8002/easymonitor/edge/#/eventsetting" } }
设置系统配置
-
/rpc/2.0/cvsaas/v1/config/set [POST]
请求格式:header应为Content-Type:application/json
请求头headers添加 Authorization:Basic YWRtaW46YWRtaW4yMDIwIQ==
(YWRtaW46YWRtaW4yMDIwIQ==为 用户名:密码 进行base64编码后的结果)
接口说明:获取系统配置
请求说明:
参数名称 类型 是否必填 说明 group String 是 配置组,配置组包含了一批关联的配置,目前可选为:event-notify,event-cleaner name String 是 配置名,比如retry-times value String 是 配置值,比如11 请求示例:
{ "group":"event-notify", "name":"retry-interval", "value":"6" }
返回说明:
参数名称 类型 是否一定存在 说明 log_id Long 是 log_id,请求唯一标识。 error_code String 是 服务调用提示码,0表示成功,非0表示失败 error_msg String 否 服务调用提示信息,失败时返回 result Object 否 各配置项的值,根据group不同而不同 返回示例:
{ "error_code": 0, "log_id": 1607343358450854, "trace_id": "4e2c8da82e6b49918a7960da9dee615c" }
配置项说明
# | 组 | 配置名 | 默认值 | 说明 |
---|---|---|---|---|
1 | event-notify | enabled | false | 是否启用事件推送 |
2 | event-notify | url | 推送地址,系统将向该地址发起post请求 | |
3 | event-notify | retry-times | 0 | 重试次数,如果往url推送失败,需重试几次,默认0,举例: 1.如果retry-times==0,则先推送1次,失败后重试0次; 2.如果retry-times==2,则先推送1次,失败后重试2次 |
4 | event-notify | retry-interval | 0 | 重试间隔,单位秒 |
5 | event-cleaner | max-retain-time | 720 | 事件最大保留时间,单位小时 |
推送说明
当成功调用接口设置event-notify,且enabled为true时,系统中如果再产生告警事件,会向url的地址发送一个http POST请求,请求报文为json格式,携带如下参数:
参数名称 | 类型 | 说明 |
---|---|---|
eventId | Long | 事件id,可凭借此id调用event/detail接口,获取事件详情 |
deviceToken | String | 设备token |
deviceName | String | 设备名称 |
skillId | int | 技能id |
skillInput | Object | 技能输入参数(系统抽帧后,启动技能时) |
+debug | Boolean | 是否调试模式,true:是,false:否 调试模式下,不管是否符合告警条件,都会触发告警; |
+customParameter | Object | 技能自定义参数,即配置技能时设置的阈值等参数, 具体请参考:技能配置 |
+resource | Object | 请求资源 |
++type | String | 一般都为object_storage,表示对象存储 |
++path | String | 请求资源(图片)的对象存储文件Key |
++areas | List | 框选区域 |
+++nodes | List | 框选区域的顶点坐标 |
skillOutput | Object | 技能输出参数,每个技能格式有所区别, 具体请参考:技能执行结果 |
originImage | String | 事件原图(base64格式) |
推送示例:
{
"eventId":47,
"skillId":18,
"deviceToken":"EHBU-LRMR-HLHT-26TX",
"deviceName":"测试设备",
"skillInput":{
"debug":false,
"resource":{
"type":"object_storage",
"path":"/resource/origin/RSE2-7TQX-DLJ2-K9Z5/1615800180143_271843524996.jpg",
"areas":[
{
"nodes":[
[
63,
68
],
[
1828,
76
],
[
1851,
988
],
[
86,
1003
]
]
}
],
"requestTime":1615800180141
},
"customParameter":{
"skillId":10,
"modelThresholds":{
"bodyProbabilityThreshold":{
"lowerLimit":0.3
}
},
"skillVersion":1,
"alarmSetting":{
"bodyFrameAlarmControl":0
}
},
"userId":"10000_0",
"deviceToken":"RSE2-7TQX-DLJ2-K9Z5"
},
"skillOutput":{
"normal":false,
"personsWearingHelmet":[
],
"personsNotWearingHelmet":[
{
"helmet":{
"probability":0
},
"location":{
"score":0.9685283303260803,
"top":420,
"left":560,
"width":125,
"height":297
},
"matchRatio":0
},
{
"helmet":{
"probability":0
},
"location":{
"score":0.3193097412586212,
"top":379,
"left":641,
"width":535,
"height":338
},
"matchRatio":0
}
]
},
"originImage":"iVBORw0KGgoAAAANSU..."
}
业务系统接收到推送请求后,应返回(code==0表示接收推送成功):
{
"code":0,
"message":"success"
}
如果业务系统无响应,或者code!=0,则会根据retry-times和retry-interval进行重试推送。