HomMeeᴿAI

AI视检单元接口文档
1 开篇说明
2 数据源管理
3 告警管理
4 跨线计数
5 算法管理
6 系统管理
7 MQTT消息
8 底库管理/底库分组
9 底库管理/人脸底库
10 底库管理/工装底库
11 底库管理/PPE底库
12 底库管理/开放底库
13 Token
14 其他

可通过HTTP协议,完成和设备的全部接口的对接,包含设备外发的信息接口(如告警信息、摄像头列表展示、算法列表展示等)和配置设备软件的控制指令(如上传算法包、新增摄像头、算法绑定摄像头等)。

第三方直接调用硬件设备直接提供出来的接口,开发统一标准如下:

传输方式

采用HTTP/MQTT协议实现数据交互

数据格式

提交和返回值采用JSON格式

字符编码

统一采用UTF-8编码

API 文档与测试工具

为了方便第三方开发者测试和使用 API,我们提供了以下工具和文档:

  • 交互式API文档

地址:http://盒子IP:9091/docshttp://盒子IP:9089/docs 盒子IP

  • Postman导入

如果需要将API导入到Postman,可以通过以下步骤实现: 访问 http://盒子IP:9091/openapi.jsonhttp://盒子IP:9089/openapi.json 获取 OpenAPI 规范文件。 在 Postman 中,点击 Import 按钮,然后粘贴上述地址或上传下载的 openapi.json 文件。


具备对视频监控设备(硬盘录像机或视频监控系统、摄像机)、视频分析设备,新增、配置、删除、查询等操作。

1. 检测是否在线

  • 接口功能描述:新增数据源时需要传入告警图片大小、编码格式,需要先通过此接口获取;

  • 接口路径:[GET]http://设备IP:9089/ks/stream/attr;

  • 请求参数说明;

参数名称数据类型是否必须说明
streamString视频流地址
draw_sizeInt默认填入1280即可
rtsp_transportString可选参数,缺省值为“tcp”,建议与新增数据源接口中的参数info-> rtsp_transport的值保持一致

表. 请求参数

  • 请求示例;

项目详情
请求格式Query String
streamrtsp://xxx/main/av\_stream
draw_size1280
rtsp_transporttcp

表. 请求参数

  • 响应参数说明;

参数名称数据类型是否必须说明
error_codeInt返回响应码
0: 成功
-1: 客户端错误
-2: 服务端错误
messageString返回响应信息
dataObject如果数据源在线返回数据源信息,如果数据源不在线,返回空对象
  • 响应示例。

项目详情
报文格式JSON
报文内容{
    "data": {
        "codec": "h265",
        "fps": 25,
        "size": [1280, 720]
    },
    "error_code": 0,
    "message": {
        "zh": "获取流状态成功!",
        "en": "Get stream status successful!"
    }
}

2. 获取数据源画面

参数名称数据类型是否必须说明
streamString视频流地址
draw_sizeString通过检测是否在线接口获取到的size,如[1280,720]

表. 请求参数

  • 请求示例;

项目详情
请求格式Query String
streamrtsp://xxx/main/av\_stream
draw_size[1280,720]
  • 响应参数说明;

参数名称数据类型是否必须说明
error_codeInt返回响应码
0: 成功
-1: 客户端错误
-2: 服务端错误
messageString返回响应信息
dataString返回base64图片数据
  • 响应示例。

项目详情
报文格式JSON
报文内容{
    "data": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAIBAQEBAQ…",
    "error_code": 0,
    "message": {
        "zh": "获取图像成功!",
        "en": "Get image successful!"
    }
}

3. onvif

参数名称数据类型是否必须说明
usernameString数据源onvif用户
passwordString数据源onvif密码
ipString数据源IP地址
portIntonvif协议端口,默认80

表. 请求参数

  • 请求示例;

项目详情
请求格式Query String
usernameadmin
passwordAdmin123
ip192.168.1.201
port80
  • 响应参数说明;

参数名称数据类型是否必须说明
error_codeInt返回响应码
0: 成功
-1: 客户端错误
-2: 服务端错误
messageString返回响应信息
dataNull/Objectnull
  • 响应示例。

项目详情
报文格式JSON
报文内容{
    "data": {
        ...
    },
    "error_code": 0,
    "message": {
        "zh": "通过onvif获取摄像头信息成功!",
        "en": "Get camera information by onvif successful!"
    }
}

4. 新增数据源

参数名称数据类型是否必须说明
idString数据源标识,可以传,不传则自动生成。注意:当协议为gb28181时,必须传id,且id为SIP用户名,比如:34020000002000000002
typeString视频流:stream
descString描述,注意同一个盒子不同数据源描述不可重复
ipv4Stringip地址
streamString流地
infoObject当type为stream时参数格式如下:
{
"rtsp_transport": "tcp"
}
draw_sizeArray告警图片大小[宽, 高],检测是否在线接口返回的size
encodingStringh264或h265,检测是否在线接口返回的codec
video_recordInt是否录制视频,1录制,0不录制
algObject获取算法配置文件(json格式),并填入配置文件中basicParams字段的内容,basicParams字段中给出参数的格式以及默认值,用户如果不想使用默认值作为参数,可以参考白皮书“9.4.5.4”章节,修改参数。获取算法配置文件的接口(GET):http://服务器IP:9092/algsjson/算法名称.json,其中算法名称为算法英文名称。

表. 请求参数

  • 请求示例;

项目详情
请求格式JSON
报文内容{
    "type": "camera",
    "desc": "描述",
    "ipv4": "192.168.1.33",
    "stream": "rtsp://admin:Admin123@192.168.1.252:554/h264/ch1/main/av\_stream",
    "info": {
           "rtsp_transport": "tcp"
    },
    "draw_size": [1280, 720],
    "encoding": "h264",
    "video_record": 0,
    "alg": {
        "helmet": {
            "alert_window": {
                "interval": 5,
                "length": 5,
                "threshold": 3,
                "type": "interval_threshold_window"
            },
            "bbox": {
                "polygons": [{
                        "id": "27d590b2-3bc4-4bfb",
                        "name": "test",
                        "polygon": [
                            [391, 598],
                            [403, 451],
                            [711, 440],
                            [650, 591]
                        ]
                    }
                ]
            },
            "plan": {
                "1": [[0, 86399]],
                "2": [[0, 86399]],
                "3": [[0, 86399]],
                "4": [[0, 86399]],
                "5": [[0, 86399]],
                "6": [[0, 86399]],
                "7": [[0, 86399]]
            },
            "hazard_level": "",
            "alg_type": "general",
            "model_args": {
                "helmet_classify": {
                    "conf_thres": 0.7
                },
                "helmet": {
                    "conf_thres": 0.35
                },
                "person": {
                    "conf_thres": 0.6
                }
            },
            "reserved_args": {
                "ch_name": "测试算法",
                "sound_text": "测试检测报警"
            }
        }
    }
}
  • 响应参数说明;

参数名称数据类型是否必须说明
error_codeInt返回响应码
0: 成功
-1: 客户端错误
-2: 服务端错误
messageString返回响应信息
dataNull/Objectnull
  • 响应示例;

项目详情
报文格式JSON
报文内容{
    "data": null,
    "error_code": 0,
    "message": {
        "zh": "添加数据源成功!",
        "en": "Add source successful!"
    }
}

5. 编辑数据源

参数名称数据类型是否必须说明
idString参考“新增数据源”章节
typeString参考“新增数据源”章节
descString参考“新增数据源”章节
ipv4String参考“新增数据源”章节
streamString参考“新增数据源”章节
infoObject参考“新增数据源”章节
draw_sizeArray参考“新增数据源”章节
algObject参考“新增数据源”章节
video_recordNumber参考“新增数据源”章节
statusBool-1:停用,1:启用

表. 请求参数

  • 请求示例;

项目详情
请求格式JSON
报文内容参考“新增数据源”章节
  • 响应参数说明;

参数名称数据类型是否必须说明
error_codeInt返回响应码
0: 成功
-1:失败
messageString返回响应信息
dataObject返回数据
  • 响应示例。

项目详情
报文格式JSON
报文内容{
    "data": null,
    "error_code": 0,
    "message": {
        "zh": "更新数据源成功!",
        "en": "Update source successful!"
    }
}

6. 删除数据源

参数名称数据类型是否必须说明
idString数据源ID

表. 请求参数

  • 请求示例;

项目详情
请求格式JSON
报文格式{
    "id": "65a78309522e4b4eec7605e0"
}
  • 响应参数说明;

参数名称数据类型是否必须说明
error_codeInt返回响应码
0: 成功
-1: 客户端错误
-2: 服务端错误
messageString返回响应信息
dataObject返回数据
  • 响应示例;

项目详情
报文格式JSON
报文内容{
    "data": null,
    "error_code": 0,
    "message": {
        "zh": "删除数据源成功!",
        "en": "Delete source successful!"
    }
}

7. 查询数据源

参数名称数据类型是否必须说明
idString数据源ID

表. 请求参数

  • 响应参数说明;

参数名称数据类型是否必须说明
error_codeInt返回响应码
0: 成功
-1: 客户端错误
-2: 服务端错误
messageString返回响应信息
dataObject返回数据
  • 响应示例;

项目详情
报文格式JSON
   
报文内容
   
{
    "error_code": 0,
    "message": {
        "zh": "查询数据源成功!",
        "en": "Query source successful!"
    },
    "data": [
        {
            "id": "66dec1855dc58a0b1dd9ed5d",
            "index": 1,
            "ipv4": "",
            "desc": "vivie",
            "type": "stream",
            "encoding": "h264",
            "info": "{\"rtsp_transport\": \"tcp\"}",
            "stream": "rtmp://192.168.1.68/live/vivie",
            "infer_size": 640,
            "draw_size": [
                1280,
                720
            ],
            "alg": {
                "car_counting": {
                    "reserved_args": {
                        "ch_name": "车辆计数",
                        "sound_text": "车辆计数告警",
                        "strategy": "center"
                    },
                    "alert_window": {
                        "type": "threshold_window",
                        "length": 1,
                        "threshold": 1
                    },
                    "bbox": {
                        "polygons": [],
                        "lines": [
                            {
                                "id": "line_34657b8a-8edc-4c02-80ef-a3d5707456d6",
                                "name": "A",
                                "line": [
                                    [25,393],
                                    [1216,390]
                                ],
                                "direction": "u+",
                                "action": {
                                    "count": "统计"
                                }
                            }
                        ]
                    },
                    "plan": {
                        "1": [[0,86399]],
                        "2": [[0,86399]],
                        "3": [[0,86399]],
                        "4": [[0,86399]],
                        "5": [[0,86399]],
                        "6": [[0,86399]],
                        "7": [[0,86399]]
                    },
                    "hazard_level": "",
                    "alg_type": "cross_line_counting",
                    "model_args": {
                        "common": {
                            "conf_thres": 0.5
                        }
                    }
                }
            },
            "video_record": 0,
            "status": 1
        }
    ]
}

8. 修改数据源排序

参数名称数据类型是否必须说明
idString数据源ID
offsetInt偏移量,-1表示向上偏移一位,1表示向下偏移一位

表. 请求参数

  • 响应参数说明;

参数名称数据类型是否必须说明
error_codeInt返回响应码
0: 成功
-1: 客户端错误
-2: 服务端错误
messageString返回响应信息
dataObject返回数据
  • 响应示例;

项目详情
报文格式JSON
报文内容

9. 订阅实时视频流

获取视频流播放前端示例代码(点击此处跳转

参数名称数据类型是否必须说明
source_idString数据源ID

表. 请求参数

  • 请求示例;

项目详情
请求格式Query String
source_id6593d066522e4b1f0c6b95f6
  • 响应参数说明;

参数名称数据类型是否必须说明
error_codeInt返回响应码
0: 成功
-1: 客户端错误
-2: 服务端错误
messageString返回响应信息
dataObject返回视频流地址
  • 响应示例;

项目详情
报文格式JSON
报文内容{
    "data": "webrtc://192.168.1.88/live/d847a577-3e04-42bd-8cb9-c630b5dfbfc8/65ae0cc0522e4b4c6fee314d",
    "error_code": 0,
    "message": {
        "zh": "订阅实时视频流成功!",
        "en": "Subscribe stream successful!"
    }
}

10. 取消订阅实时视频流

参数名称数据类型是否必须说明
source_idsArray数据源ID数组

表. 请求参数

  • 请求示例;

项目详情
请求格式Query String
source_ids["6593d066522e4b1f0c6b95f6"]
  • 响应参数说明;

参数名称数据类型是否必须说明
error_codeInt返回响应码
0: 成功
-1: 客户端错误
-2: 服务端错误
messageString返回响应信息
dataObject返回数据
  • 响应示例

项目详情
报文格式JSON
报文内容{
    "data": {
        "65ae0cc0522e4b4c6fee314d": true
    },
    "error_code": 0,
    "message": {
        "zh": "取消订阅实时视频流成功!",
        "en": "Unsubscribe stream successful!"
    }
}

1. 获取系统参数

参数名称数据类型说明
error_codeInt返回响应码
0: 成功
-1: 客户端错误
-2: 服务端错误
messageString返回响应信息
dataObject以对象形式返回系统参数,包括安全策略、端口映射等,远程隧道开启时,map.local中的端口不能使用,应使用远程隧道中配置的端口

表. 请求参数

  • 响应示例。

项目详情
报文格式JSON
报文内容{
    "error_code": 0,
    "message": {
        "zh": "查询系统参数成功!",
        "en": "Query system parameters successful!"
    },
    "data": {
        "infer_freq": 9.9, // 检测频率
        "max_source": 8, // 最大接入路数
        "login": {
            "lockout": {
                "enable": false,
                "max_attempts": 5,
                "time": 1800
            },
            "captcha": {
                "enable": false,
                "expire": 60
            },
            "login_free": false
        },
        "video_range": [
            -5,
            5
        ],
        "stream_protocol": {
            "local": "default",
            "proxy": "default"
        },
        "map": {
            "local": {
                "http_server": 9092,
                "srs_server": 1935,
                "srs_http_api": 1985,
                "srs_http_server": 8080,
                "websocket": 8083
            },
            "proxy": {
                "srs_server": 11935,
                "srs_http_api": 11985,
                "srs_http_server": 18080
            }
        }
    }
}

2. 获取远程隧道参数

参数名称数据类型说明
error_codeInt返回响应码
0: 成功
-1: 客户端错误
-2: 服务端错误
messageString返回响应信息
dataObject以对象形式返回远程隧道参数

表. 请求参数

  • 响应示例。

项目详情
报文格式JSON
报文内容{
    "error_code": 0,
    "message": {
        "zh": "查询远程隧道成功!",
        "en": "Query tunnel successful!"
    },
    "data": {
        "id": 1,
        "enable": false,
        "ipv4": null,
        "authentication": [
            null,
            null
        ],
        "ssh": 22,
        "http_server": null,
        "srs_server": null,
        "srs_http_api": null,
        "srs_http_server": null,
        "websocket": null
    }
}


1. 告警信息

  • 接口功能描述:实时订阅盒子告警;

  • topic:ks/sink_local_alert;

  • 对应平台位置:【实时画面】右侧【最新告警】模块

  • 响应示例。

项目详情
报文格式

JSON

报文内容
{
"msg_id": "uuid",
"msg_type": "alert",
"time": "发送时间",
"data": {
	"id": "告警id",
	"alert_time": "时间戳",
	"source_id": "摄像头ID,对应新增摄像头的ID",
	"source_ipv4": "摄像头IP",
	"source_desc": "摄像头描述",
	"alg_name": "算法英文名称",
	"alg_ch_name": "算法中文名称",
	"image": "图片路径,访问需要加上代理http://设备IP:9092/staticdata+图片路径",
	"reserved_data": "人脸告警才有数据",
	"hazard_level": "危害等级",
	"status": "摄像头状态"// 1: 启用,-1:停用
	}
}
reserved_data
{
group:{
	"id": "666825ae5dc58a319bb9c1e8",
	"name": "分组名称",
},
face:[{
	"id": "6594e027522e4bbbcfe12194(唯一ID)",
	"name": "姓名",
	"age": "年龄",
	"sex": "性别",
	"desc": "描述",
	"update_time": "时间戳",
	"lib_image": "底库人脸图片",
	"cap_image": "抓拍人脸图片",
	"conf": "比对置信度"
	}
]}

2. 实时结果

获取实时检测结果可视化代码(点击此处跳转

  • 接口功能描述:实时订阅实时分析结果(播放流时产生MQTT消息);

  • topic: ks/sink_local_result

  • 对应平台位置:【实时画面】

  • 响应示例。

项目详情
报文格式

JSON

报文内容
{
    "msg_id": "uuid",
    "msg_type": "result",
    "time": "2024-01-23 10:25:36.216528",
    "data": {
        "time": "1705976735.391402",
        "hit": false,
        "hazard_level": "", //危险等级
        "source": {
            "id": "摄像头id",
            "ipv4": "摄像头ip",
            "desc": "摄像头描述"
        },
        "alg": {
            "type": "算法类型",
            "name": "算法英文名称",
            "ch_name": "算法中文名称",
        },
        "reserved_data": {
            "bbox": {
                "rectangles": [{
                		//左上角、右下角坐标
                        "xyxy": [680, 198, 1178, 696], 
                        "color": [0, 0, 255], //BGR颜色
                        "conf": 0.91, //置信度
                        "label": "未佩戴安全帽", //标签
                        "ext": {} //扩展字段
                    }
                ] //矩形数组
                "polygons": {
                    "xxxxxx": { //多边形id
                        "name": "离岗检测", //多边形名称
                        "color": [0, 0, 255], //BGR颜色
                        "polygon": [ //顶点坐标
                            [568, 205],
                            [920, 140],
                            [843, 471],
                            [576, 471]
                        ],
                        "ext": {} //扩展字段
                    }
                } //多边形对象
                "lines": {
                    "xxxxxx": { //线段id
                        "name": "线段1", //线段名称
                        //顶点坐标
                        "line": [[680, 198], [1178, 696]], 
                        "color": [0, 0, 255], //BGR颜色
                        "ext": {} //扩展字段
                    }
                } //线段对象
            }
        }
    }
}

3. 上位机服务上下线、网络状态

  • 接口功能描述:上位机服务上下线状态、网络状态;

  • topic: ks/monitor_local

  • 响应示例。

项目详情
报文格式

JSON

上位机上下线报文内容
{
       "msg_id": "uuid",
       "msg_type": "server_proxy",
       "time": "发送时间",
       "data":0 // 0离线  1在线
}
网络状态报文内容
{
       "msg_id": "uuid",
       "msg_type": "network",
       "time": "发送时间",
       "data": 1 //1:联网  0:未联网
}


1. 添加分组

  • 接口功能描述:添加人脸等底库前,先添加分组,使底库能以分组形式管理

  • 接口路径:[POST] http://设备IP:9091/ks/group

  • 请求参数说明;

参数名称数据类型是否必须说明
algString底库类型face, work_clothes, ppe, open_lib
nameString分组名称
extObjectalg为face
ext格式为:{"quality": 0.65}(人脸质量)



alg为work_clothes时ext不传



alg为ppe时ext不传



alg为open_lib
需要绘制ROI时
ext格式为:{
  "alg": "open_lib",
  "name": "111",
  "ext": {
       "roi": [
       {
           "id": "7a9065e6-0b20-4f94-b459-7fe5dafdfa17",
           "name": "",
           "coord": [
                           [0,0],
                  [1269,0],
                  [1269,790],
                  [0,790]
                         ]
                     }
              ],
              "imgInfo": {
                     "width": 1269,
                     "height": 790,
                     "mapWidth": 640,
                     "mapHeight": 398
              },
              "image": "data:image/png;base64,iVBO..."
       }
}

表. 请求参数

  • 请求示例;

项目详情
请求格式JSON
报文内容{
    "alg": "face",
    "name": "白名单",
    "ext": {
        "quality": 0.65
    }
}
  • 响应参数说明;

参数名称数据类型说明
error_codeInt返回响应码
0: 成功
-1: 客户端错误
-2: 服务端错误
messageString返回响应信息
dataNull/Objectnull
  • 响应示例。

项目详情
报文格式JSON
报文内容{
    "data": null,
    "error_code": 0,
    "message": {
        "zh": "新增底库分组成功!",
        "en": "Add group successful!"
    }
}

2. 修改分组

参数名称数据类型是否必须说明
idString分组ID
nameString分组名称
extObjectalg为face
ext格式为:{"quality": 0.65}(人脸质量)



alg为work_clothes时ext不传



alg为ppe时ext不传



alg为open_lib
需要绘制ROI时
ext格式为:{
"roi": [
        {
            "id": "8c6696ff-e89d-4e40-bbd5-d67a8eaed10a",
            "name": "",
            "coord": [
                [ 273,176],
                [908, 170],
                [848, 477],
                [133, 479]
            ]
        }
    ],
  "imgInfo": {//仅用于显示,可以不传
    "width": 1280,
    "height": 720,
    "mapWidth": 642,
    "mapHeight": 361
  }
}
不需要绘制ROI时,ext不传

表. 请求参数

  • 请求示例;

项目详情
请求格式JSON
报文内容{
    "id": "6593e3aa522e4b9ab8454f54",
    "name": "白名单"
}
  • 响应参数说明;

参数名称数据类型说明
error_codeInt返回响应码
0: 成功
-1: 客户端错误
-2: 服务端错误
messageString返回响应信息
dataNull/Objectnull
  • 响应示例。

项目详情
报文格式JSON
报文内容{
       "data": null,
"error_code": 0,
       "message": {
        "zh": "更新底库分组成功!",
        "en": "Update group successful!"
    }
}

3. 查询分组

参数名称数据类型是否必须说明
algString底库类型face,work_clothes,ppe,open_lib

表. 请求参数

  • 请求示例;

项目详情
请求格式Query String
algface
  • 响应参数说明;

参数名称数据类型说明
error_codeInt返回响应码
0: 成功
-1: 客户端错误
-2: 服务端错误
messageString返回响应信息
dataArray[]
  • 响应示例。

项目详情
报文格式JSON
报文内容

4. 删除分组

参数名称数据类型是否必须说明
idsArray分组id数组

表. 请求参数

  • 请求示例;

项目详情
请求格式JSON
报文内容{
    "ids": ["6593e3aa522e4b9ab8454f54"]
}
  • 响应参数说明;

参数名称数据类型说明
error_codeInt返回响应码
0: 成功
-1: 客户端错误
-2: 服务端错误
messageString返回响应信息
dataNull/Objectnull
  • 响应示例。

项目详情
报文格式JSON
报文内容{
    "data": null,
    "error_code": 0,
    "message": {
        "zh": "删除底库分组成功!",
        "en": "Delete group successful!"
    }
}


1. 添加人脸库

  • 接口功能描述:添加人脸姓名、性别等至底库,最多1000个人脸;

  • 接口路径:[POST] http://设备IP:9091/ks/face

  • 接口说明:如需上传人脸图片,请参照9.3.8.6修改人脸图像接口。

  • 请求参数说明;

参数名称数据类型是否必须说明
group_idString分组ID
external_idString外部id
nameString姓名
sexString性别
ageString年龄
descString简介

表. 请求参数

  • 请求示例;

项目详情
请求格式JSON
报文内容{
    "group_id": "6593e3aa522e4b9ab8454f54",
    "external_id": "98",
    "name": "小明",
    "sex": "男",
    "age": "10"
}
  • 响应参数说明;

参数名称数据类型说明
error_codeInt返回响应码
0: 成功
-1: 客户端错误
-2: 服务端错误
messageString返回响应信息
dataStringid
  • 响应示例。

项目详情
报文格式JSON
报文内容  {
    "data": "6593e3aa522e4b9ab8454f54",
    "error_code": 0,
    "message": {
        "zh": "新增人脸成功!",
        "en": "Add face successful!"
    }
}

2. 修改人脸库

参数名称数据类型是否必须说明
idString人脸id
group_idString若同时存在group_id和external_id则忽略id
external_idString
nameString姓名
sexString性别
ageString年龄
descString简介

表. 请求参数

  • 请求示例;

项目详情
请求格式JSON
报文内容{
    "group_id": "6593e3aa522e4b9ab8454f54",
    "external_id": "98"
}
  • 响应参数说明;

参数名称数据类型说明
error_codeInt返回响应码
0: 成功
-1: 客户端错误
-2: 服务端错误
messageString返回响应信息
dataNull/Objectnull
  • 响应示例。

项目详情
报文格式JSON
报文内容{
    "data": null,
    "error_code": 0,
    "message": {
        "zh": "更新人脸成功!",
        "en": "Update face successful!"
    }
}

3. 查询人脸库

  • 接口功能描述:查询人脸(按设备、姓名、外部id、更新时间查询);

  • 接口路径:[GET] http://设备IP:9091/ks/face;

  • 请求参数说明;

参数名称数据类型是否必须说明
pageInt页码
sizeInt每页数量
group_idString分组ID
external_idString外部id
nameString姓名
start_timeInt开始时间秒数
end_timeInt结束时间秒数

表. 请求参数

  • 请求示例;

项目详情
请求格式Query String
page1
size10
group_id6593e3aa522e4b9ab8454f54
name"1"
  • 响应参数说明;

参数名称数据类型说明
error_codeInt返回响应码
0: 成功
-1: 客户端错误
-2: 服务端错误
messageString返回响应信息
dataNull/Objectnull
  • 响应示例。

项目详情
报文格式JSON
报文内容{
    "error_code": 0,
    "message": {
        "zh": "查询人脸成功!",
        "en": "Query face successful!"
    },
    "data": {
        "data": [
            {
                "id": "66f140cb5dc58a689059a3c2",
                "external_id": null,
                "group_id": "6593e3aa522e4b9ab8454f54",
                "name": "1",
                "age": 2,
                "sex": null,
                "desc": null,
                "feature": "[0.0016012939158827066,…]",
                "image": "/home/ema/ks/…… ",
                "update_time": 1727086969
            }
        ],
        "total": 1
    }
}

4. 删除人脸库

参数名称数据类型是否必须说明
idsArray人脸id数组
group_idString若存在group_id,或者同时存在group_id和external_ids,则忽略ids
external_idsArray

表. 请求参数

  • 请求示例;

项目详情
请求格式JSON
报文内容{
    "ids": ["6593e3aa522e4b9ab8454f54"]
}
  • 响应参数说明;

参数名称数据类型说明
error_codeInt返回响应码
0: 成功
-1: 客户端错误
-2: 服务端错误
messageString返回响应信息
dataNull/Objectnull
  • 响应示例。

项目详情
报文格式JSON
报文内容{
    "data": null,
    "error_code": 0,
    "message": "删除人脸成功!"
}

5. 载入底库

  • 接口功能描述:增加、修改、删除后需要调用一次使其生效,为避免影响检测,此接口不能频繁调用,最好是一批操作结束后通知用户手动调用;

  • 接口路径:[POST] http://设备IP:9091/ks/face/load;

  • 请求参数说明: 无;

  • 响应参数说明;

参数名称数据类型说明
error_codeInt返回响应码
0: 成功
-1: 客户端错误
-2: 服务端错误
messageString返回响应信息
dataNull/Objectnull
  • 响应示例。

项目详情
报文格式JSON
报文内容{
    "data": null,
    "error_code": 0,
    "message": {
        "zh": "载入成功!",
        "en": "Successful loaded!"
    }
}

6. 添加或修改人脸图像

参数名称数据类型是否必须说明
idString人脸id
group_idString若同时存在group_id和external_id则忽略id
external_idString
imageFile人脸图片

表. 请求参数

  • 请求示例;

项目详情
请求格式Form Data
id6593e3aa522e4b9ab8464f56
image(binary)
  • 响应参数说明;

参数名称数据类型说明
error_codeInt返回响应码
0: 成功
-1: 客户端错误
-2: 服务端错误
messageString返回响应信息
dataNull/Objectnull
  • 响应示例。

项目详情
报文格式JSON
报文内容{
    "data": null,
    "error_code": 0,
    "message": {
        "zh": "更新人脸成功!",
        "en": "Update face successful!"
    }
}

7. 下载模板

参数名称数据类型是否必须说明
group_idString分组ID
templateBooltrue

表. 请求参数

注意:前端调用时,还需指定responseType:'blob'。

  • 请求示例;

项目详情
请求格式Query String
group_id6593e3aa522e4b9ab8454f54
templatetrue
  • 响应参数说明;

参数名称数据类型说明
dataString文件流
  • 响应示例。

项目详情
报文格式文件流
报文内容

8. 批量导入

参数名称数据类型是否必须说明
group_idString分组ID
packageFile文件

表. 请求参数

  • 请求示例;

项目详情
请求格式Form Data
group_id6593e3aa522e4b9ab8454f54
package(binary)
  • 响应参数说明;

参数名称数据类型说明
error_codeInt返回响应码
0: 成功
-1: 客户端错误
-2: 服务端错误
messageString返回响应信息
dataNull/Objectnull
  • 响应示例。

项目详情
报文格式JSON
报文内容{
    "data": null,
    "error_code": 0,
    "message": {
        "zh": "导入人脸底库成功!",
        "en": "Import face library successful!"
    }
}

9. 批量导出

参数名称数据类型是否必须说明
group_idString分组ID

表. 请求参数

注意:前端调用时,还需指定responseType:'blob'。

  • 请求示例;

项目详情
请求格式Query String
group_id6593e3aa522e4b9ab8454f54
  • 响应参数说明;

参数名称数据类型说明
dataString文件流
  • 响应示例。

项目详情
报文格式文件流
报文内容

10. 提取人脸特征

参数名称数据类型是否必须说明
imageFile人脸图片
qualityFloat人脸质量阈值(默认值:0.35),当小于此阈值时将不提取特征

表. 请求参数

注意:前端调用时,还需指定responseType:'blob'。

  • 请求示例;

项目详情
请求格式Form Data
Image(binary)
quality0.35
  • 响应参数说明;

参数名称数据类型说明
error_codeInt返回响应码
0: 成功
-1: 客户端错误
-2: 服务端错误
messageString返回响应信息
dataNull/Objectnull
  • 响应示例。

项目详情
报文格式JSON
报文内容{
    "data": […],
    "error_code": 0,
    "message": {
        "zh": "提取人脸特征成功!",
        "en": "Extract face feature successful!"
    }
}


1. 添加工服库

参数名称数据类型是否必须说明
group_idString分组ID
external_idString外部id
nameString名称
descString简介

表. 请求参数

  • 请求示例;

项目详情
请求格式JSON
报文内容
   
{
    "group_id": "6593e3aa522e4b9ab8454f54",
    "external_id": "123",
    "name": "红色工服"
}
  • 响应参数说明;

参数名称数据类型说明
error_codeInt返回响应码
0: 成功
-1: 客户端错误
-2: 服务端错误
messageString返回响应信息
dataStringid
  • 响应示例。

项目详情
报文格式JSON
报文内容{
    "data": "65ad08db522e4b09379b5ad5",
    "error_code": 0,
    "message": {
        "zh": "新增工服成功!",
        "en": "Add workclothes successful!"
    }
}

2. 修改工服库

参数名称数据类型是否必须说明
idString工服id
group_idString若同时存在group_id和external_id则忽略id
external_idString
nameString名称
descString简介

表. 请求参数

  • 请求示例;

项目详情
请求格式JSON
报文内容{
    "group_id": "6593e3aa522e4b9ab8454f54",
    "id": "6593e3aa522e4b9ab8454f54",
    "name": "蓝色工服"
}
  • 响应参数说明;

参数名称数据类型说明
error_codeInt返回响应码
0: 成功
-1: 客户端错误
-2: 服务端错误
messageString返回响应信息
dataNull/Objectnull
  • 响应示例。

项目详情
报文格式JSON
报文内容{
    "data": null,
    "error_code": 0,
    "message": {
        "zh": "更新工服成功!",
        "en": "Update workclothes successful!"
    }
}

3. 查询工服库

参数名称数据类型是否必须说明
pageInt页码
sizeInt每页数量
group_idString分组ID
external_idString外部id
nameString名称
start_timeInt开始时间秒数
end_timeInt结束时间秒数

表. 请求参数

  • 请求示例;

项目详情
请求格式Query String
page1
size10
group_id6593e3aa522e4b9ab8454f54
name红色工服
start_time1704211200
end_time1704384000
  • 响应参数说明;

参数名称数据类型说明
error_codeInt返回响应码
0: 成功
-1: 客户端错误
-2: 服务端错误
messageString返回响应信息
dataNull/Objectnull
  • 响应示例。

项目详情
报文格式JSON
报文内容{
    "error_code": 0,
    "message": {
        "zh": "查询工服成功!",
        "en": "Query work_clothes successful!"
    },
    "data": {
        "data": [
            {
                "id": "66f14ddd5dc58a689059a3d5",
                "external_id": null,
                "group_id": "66f14c0d5dc58a689059a3cc",
                "name": "2",
                "desc": null,
                "feature": null,
                "image": null,
                "update_time": 1727090141
            }
        ],
        "total": 1
    }
}

4. 删除工服库

参数名称数据类型是否必须说明
idsArray工服id数组
group_idString分组ID
external_idsArray若存在group_id,或者同时存在group_id和external_ids,则忽略ids

表. 请求参数

  • 请求示例;

项目详情
请求格式JSON
报文内容{
    "ids": ["6593e3aa522e4b9ab8454f54"]
}
  • 响应参数说明

参数名称数据类型说明
error_codeInt返回响应码
0: 成功
-1: 客户端错误
-2: 服务端错误
messageString返回响应信息
dataNull/Objectnull
  • 响应示例

项目详情
报文格式JSON
报文内容{
    "data": null,
    "error_code": 0,
    "message": {
        "zh": "删除工服成功!",
        "en": "Delete workclothes successful!"
    }
}

5. 载入底库

  • 接口功能描述:增加、修改、删除后需要调用一次使其生效,为避免影响检测,此接口不能频繁调用,最好是一批操作结束后通知用户手动调用;

  • 接口路径:[POST] http://设备IP:9091/ks/work\_clothes/load;

  • 请求参数说明:无;

  • 响应参数说明;

参数名称数据类型说明
error_codeInt返回响应码
0: 成功
-1: 客户端错误
-2: 服务端错误
messageString返回响应信息
dataNull/Objectnull
  • 响应示例。

项目详情
报文格式JSON
报文内容{
    "data": null,
    "error_code": 0,
    "message": {
        "zh": "载入成功!",
        "en": "Successful loaded!"
    }
}

6. 添加或修改工服图像

参数名称数据类型是否必须说明
idString工服id
group_idString   
若同时存在group_idexternal_id则忽略****id
   
external_idString
imageFile工服图片

表. 请求参数

  • 请求示例;

项目详情
请求格式Form Data
id6593e3aa522e4b9ab8454f54
image(binary)
  • 响应参数说明;

参数名称数据类型说明
error_codeInt返回响应码
0: 成功
-1: 客户端错误
-2: 服务端错误
messageString返回响应信息
dataNull/Objectnull
  • 响应示例。

项目详情
报文格式JSON
报文内容{
    "data": null,
    "error_code": 0,
    "message": {
        "zh": "更新工服成功!",
        "en": "Update workclothes successful!"
    }
}

7. 下载模板

参数名称数据类型是否必须说明
group_idString分组ID
templateBooltrue

表. 请求参数

注意:前端调用时,还需指定responseType:'blob'。

  • 请求示例;

项目详情
请求格式Query String
group_id66cf14575dc58a095d35835a
templatetrue
  • 响应参数说明;

参数名称数据类型说明
dataString文件流
  • 响应示例。

项目详情
报文格式文件流
报文内容

8. 批量导入

参数名称数据类型是否必须说明
group_idString分组ID
packagefile文件

表. 请求参数

  • 请求示例;

项目详情
请求格式Form Data
group_id66cf14575dc58a095d35835a
package(binary)
  • 响应参数说明;

参数名称数据类型说明
error_codeInt返回响应码
0: 成功
-1: 客户端错误
-2: 服务端错误
messageString返回响应信息
dataNull/Objectnull
  • 响应示例。

项目详情
报文格式JSON
报文内容{
    "data": null,
    "error_code": 0,
    "message": {
        "zh": "导入工服底库成功!",
        "en": "Import work_clothes library successful!"
    }
}

9. 批量导出

参数名称数据类型是否必须说明
group_idString分组ID

表. 请求参数

注意:前端调用时,还需指定responseType:'blob'。

  • 请求示例;

项目详情
请求格式Query String
group_id66cf14575dc58a095d35835a
  • 响应参数说明;

参数名称数据类型说明
dataString文件流
  • 响应示例。

项目详情
报文格式文件流
报文内容


1. 添加PPE库

  • 接口功能描述:添加PPE信息至底库,添加前判断限制最多1000个PPE信息;

  • 接口路径:[POST] http://设备IP:9091/ks/ppe;

  • 请求参数说明;

参数名称数据类型是否必须说明
group_idString分组ID
external_idString外部id
nameString名称
descString简介

表. 请求参数

  • 请求示例;

项目详情
请求格式JSON
报文内容{
    "group_id": "6593e3aa522e4b9ab8454f54",
    "external_id": "123",
    "name": "眼部"
}
  • 响应参数说明;

参数名称数据类型说明
error_codeInt返回响应码
0: 成功
-1: 客户端错误
-2: 服务端错误
messageString返回响应信息
dataStringid
  • 响应示例。

项目详情
报文格式JSON
报文内容{
    "data": "65ad08db522e4b09379b5ad5",
    "error_code": 0,
    "message": {
        "zh": "新增PPE成功!",
        "en": "Add PPE successful!"
    }
}

2. 修改PPE库

参数名称数据类型是否必须说明
idStringPPE id
group_idString若同时存在group_id和external_id则忽略id
external_idString
nameString名称
descString简介

表. 请求参数

  • 请求示例;

项目详情
请求格式JSON
报文内容{
    "group_id": "6593e3aa522e4b9ab8454f54",
    "id": "6593e3aa522e4b9ab8456f5e",
    "name": "手部"
}
  • 响应参数说明;

参数名称数据类型说明
error_codeInt返回响应码
0: 成功
-1: 客户端错误
-2: 服务端错误
messageString返回响应信息
dataNull/Objectnull
  • 响应示例。

项目详情
报文格式JSON
报文内容{
    "data": null,
    "error_code": 0,
    "message": {
        "zh": "更新PPE成功!",
        "en": "Update PPE successful!"
    }
}

3. 查询PPE库

  • 接口功能描述:查询PPE(按设备、分组、名称、外部id、更新时间查询);

  • 接口路径:[GET] http://设备IP:9091/ks/ppe;

  • 请求参数说明;

参数名称数据类型是否必须说明
pageInt页码
sizeInt每页数量
group_idString分组ID
external_idString外部id
nameString名称
start_timeInt开始时间秒数
end_timeInt结束时间秒数

表. 请求参数

  • 请求示例;

项目详情
请求格式Query String
page1
size10
group_id6593e3aa522e4b9ab8454f54
name手部
start_time1704211200
end_time1704384000
  • 响应参数说明;

参数名称数据类型说明
error_codeInt返回响应码
0: 成功
-1: 客户端错误
-2: 服务端错误
messageString返回响应信息
dataNull/Objectnull
  • 响应示例。

项目详情
报文格式JSON
报文内容{
    "error_code": 0,
    "message": {
        "zh": "查询ppe成功!",
        "en": "Query ppe successful!"
    },
    "data": {
        "data": [
            {
                "id": "66f14d845dc58a689059a3d2",
                "external_id": null,
                "group_id": "66ed2fc05dc58a29cc68039c",
                "name": "1",
                "desc": null,
                "feature": null,
                "image": null,
                "update_time": 1727090052
            }
        ],
        "total": 1
    }
}

4. 删除PPE库

参数名称数据类型是否必须说明
idsArrayPPE id数组
group_idString若存在group_id,或者同时存在group_id和external_ids,则忽略ids
external_idsArray

表. 请求参数

  • 请求示例;

项目详情
请求格式JSON
报文内容{
    "ids": ["6593e3aa522e4b9ab8454f54"]
}
  • 响应参数说明

参数名称数据类型说明
error_codeInt返回响应码
0: 成功
-1: 客户端错误
-2: 服务端错误
messageString返回响应信息
dataNull/Objectnull
  • 响应示例

项目详情
报文格式JSON
报文内容{
    "data": null,
    "error_code": 0,
    "message": {
        "zh": "删除PPE成功!",
        "en": "Delete PPE successful!"
    }
}

5. 载入底库

  • 接口功能描述:增加、修改、删除后需要调用一次使其生效,为避免影响检测,此接口不能频繁调用,最好是一批操作结束后通知用户手动调用;

  • 接口路径:[POST] http://设备IP:9091/ks/ppe/load;

  • 请求参数说明:无;

  • 响应参数说明;

参数名称数据类型说明
error_codeInt返回响应码
0: 成功
-1: 客户端错误
-2: 服务端错误
messageString返回响应信息
dataNull/Objectnull
  • 响应示例。

项目详情
报文格式JSON
报文内容{
    "data": null,
    "error_code": 0,
    "message": {
        "zh": "载入成功!",
        "en": "Successful loaded!"
    }
}

6. 添加或修改PPE图像

参数名称数据类型是否必须说明
idString工服id
group_idString若同时存在group_id和external_id则忽略id
external_idString
imageFile工服图片

表. 请求参数

  • 请求示例;

项目详情
请求格式Form Data
id6593e3aa522e4b9ab8454f54
image(binary)
  • 响应参数说明;

参数名称数据类型说明
error_codeInt返回响应码
0: 成功
-1: 客户端错误
-2: 服务端错误
messageString返回响应信息
dataObject
  • 响应示例。

项目详情
报文格式JSON
报文内容{
    "data": null,
    "error_code": 0,
    "message": {
        "zh": "更新PPE成功!",
        "en": "Update PPE successful!"
    }
}

7. 下载模板

参数名称数据类型是否必须说明
group_idString分组ID
templateBooltrue

表. 请求参数

注意:前端调用时,还需指定responseType:'blob'。

  • 请求示例;

项目详情
请求格式Query String
group_id66cf14575dc58a095d35835a
templatetrue
  • 响应参数说明;

参数名称数据类型说明
dataString文件流
  • 响应示例。

项目详情
报文格式文件流
报文内容

8. 批量导入

参数名称数据类型是否必须说明
group_idString分组ID
packageFile文件

表. 请求参数

  • 请求示例;

项目详情
请求格式Form Data
group_id66cf14575dc58a095d35835a
package(binary)
  • 响应参数说明;

参数名称数据类型说明
error_codeInt返回响应码
0: 成功
-1: 客户端错误
-2: 服务端错误
messageString返回响应信息
dataNull/Objectnull
  • 响应示例。

项目详情
报文格式JSON
报文内容{
    "data": null,
    "error_code": 0,
    "message": {
        "zh": "导入ppe底库成功!",
        "en": "Import ppe library successful!"
    }
}

9. 批量导出

参数名称数据类型是否必须说明
group_idString分组ID

表. 请求参数

注意:前端调用时,还需指定responseType:'blob'。

  • 请求示例;

项目详情
请求格式Query String
group_id66cf14575dc58a095d35835a
  • 响应参数说明;

参数名称数据类型说明
dataString文件流
  • 响应示例。

项目详情
报文格式文件流
报文内容


1. 添加开放库

参数名称数据类型是否必须说明
group_idString分组ID
external_idString外部id
nameString名称
descString简介

表. 请求参数

  • 请求示例;

项目详情
请求格式JSON
报文内容{
    "group_id": "6593e3aa522e4b9ab8454f54",
    "external_id": "123",
    "name": "消防通道堵塞"
}
  • 响应参数说明;

参数名称数据类型说明
error_codeInt返回响应码
0: 成功
-1: 客户端错误
-2: 服务端错误
messageString返回响应信息
dataStringid
  • 响应示例。

项目详情
报文格式JSON
报文内容{
    "data": "65ad08db522e4b09379b5ad5",
    "error_code": 0,
    "message": {
        "zh": "新增开放底库成功!",
        "en": "Add open lib successful!"
    }
}

2. 修改开放底库

参数名称数据类型是否必须说明
idString开放底库id
group_idString若同时存在group_id和external_id则忽略id
external_idString
nameString名称
descString简介

表. 请求参数

  • 请求示例;

项目详情
请求格式JSON
请求内容{
    "group_id": "6593e3aa522e4b9ab8454f54",
    "id": "6593e3aa522e4b9ab8456f5e",
    "name": "逃生通道"
}
  • 响应参数说明;

参数名称数据类型说明
error_codeInt返回响应码
0: 成功
-1: 客户端错误
-2: 服务端错误
messageString返回响应信息
dataNull/Objectnull
  • 响应示例。

项目详情
报文格式JSON
报文内容{
    "data": null,
    "error_code": 0,
    "message": {
        "zh": "更新开放底库成功!",
        "en": "Update open lib successful!"
    }
}

3. 查询开放底库

  • 接口功能描述:查询开放底库(按设备、分组、名称、外部id、更新时间查询);

  • 接口路径:[GET] http://设备IP:9091/ks/open\_lib;

  • 请求参数说明;

参数名称数据类型是否必须说明
pageInt页码
sizeInt每页数量
group_idString分组ID
external_idString外部id
nameString名称
start_timeInt开始时间秒数
end_timeInt结束时间秒数

表. 请求参数

  • 请求示例;

项目详情
请求格式Query String
page1
size10
group_id6593e3aa522e4b9ab8454f54
name逃生通道
start_time1704211200
end_time1704384000
  • 响应参数说明;

参数名称数据类型说明
error_codeInt返回响应码
0: 成功
-1: 客户端错误
-2: 服务端错误
messageString返回响应信息
dataNull/Objectnull
  • 响应示例。

项目详情
报文格式JSON
报文内容{
    "error_code": 0,
    "message": {
        "zh": "查询开放底库成功!",
        "en": "Query open library successful!"
    },
    "data": {
        "data": [
            {
                "id": "66f14e275dc58a689059a3d9",
                "external_id": null,
                "group_id": "66f14e225dc58a689059a3d7",
                "name": "1",
                "desc": null,
                "feature": null,
                "image": null,
                "update_time": 1727090215
            }
        ],
        "total": 1
    }
}

4. 删除开放底库

参数名称数据类型是否必须说明
idsArray开放底库id数组
group_idString分组ID
external_idsArray若存在group_id,或者同时存在group_id和external_ids,则忽略ids

表. 请求参数

  • 请求示例;

项目详情
请求格式JSON
报文内容{
    "ids": ["6593e3aa522e4b9ab8454f54"]
}
  • 响应参数说明

参数名称数据类型说明
error_codeInt返回响应码
0: 成功
-1: 客户端错误
-2: 服务端错误
messageString返回响应信息
dataNull/Objectnull
  • 响应示例

项目详情
报文格式JSON
报文内容{
    "data": null,
    "error_code": 0,
    "message": {
        "zh": "删除开放底库成功!",
        "en": "Delete open lib successful!"
    }
}

5. 载入底库

  • 接口功能描述:增加、修改、删除后需要调用一次使其生效,为避免影响检测,此接口不能频繁调用,最好是一批操作结束后通知用户手动调用;

  • 接口路径:[POST] http://设备IP:9091/ks/open\_lib/load;

  • 请求参数说明:无;

  • 响应参数说明;

参数名称数据类型说明
error_codeInt返回响应码
0: 成功
-1: 客户端错误
-2: 服务端错误
messageString返回响应信息
dataNull/Objectnull
  • 响应示例。

项目详情
报文格式JSON
报文内容{
    "data": null,
    "error_code": 0,
    "message": {
        "zh": "载入成功!",
        "en": "Successful loaded!"
    }
}

6. 添加或修改开放底库图像

参数名称数据类型是否必须说明
idString工服id
group_idString若同时存在group_id和external_id则忽略id
external_idString
imageFile开放底库图片

表. 请求参数

  • 请求示例;

项目详情
请求格式Form Data
id6593e3aa522e4b9ab8454f54
image(binary)
  • 响应参数说明;

参数名称数据类型说明
error_codeInt返回响应码
0: 成功
-1: 客户端错误
-2: 服务端错误
messageString返回响应信息
dataNull/Objectnull
  • 响应示例。

项目详情
报文格式JSON
报文内容{
    "data": null,
    "error_code": 0,
    "message": {
        "zh": "更新开放底库成功!",
        "en": "Update open lib successful!"
    }
}

7. 下载模板

参数名称数据类型是否必须说明
group_idString分组ID
templateBooltrue

表. 请求参数

注意:前端调用时,还需指定responseType:'blob'。

  • 请求示例;

项目详情
请求格式Query String
group_id66cf14575dc58a095d35835a
templatetrue
  • 响应参数说明;

参数名称数据类型说明
dataString文件流
  • 响应示例。

项目详情
报文格式文件流
报文内容

8. 批量导入

参数名称数据类型是否必须说明
group_idString分组ID
packageFile文件

表. 请求参数

  • 请求示例;

项目详情
请求格式Form Data
group_id66cf14575dc58a095d35835a
package(binary)
  • 响应参数说明;

参数名称数据类型说明
error_codeInt返回响应码
0: 成功
-1: 客户端错误
-2: 服务端错误
messageString返回响应信息
dataNull/Objectnull
  • 响应示例。

项目详情
报文格式JSON
报文内容{
    "data": null,
    "error_code": 0,
    "message": {
        "zh": "导入开放底库成功!",
        "en": "Import open library successful!"
    }
}

9. 批量导出

参数名称数据类型是否必须说明
group_idString分组ID

表. 请求参数

注意:前端调用时,还需指定responseType:'blob'。

  • 请求示例;

项目详情
请求格式Query String
group_id66cf14575dc58a095d35835a
  • 响应参数说明;

参数名称数据类型说明
dataString文件流
  • 响应示例。

项目详情
报文格式文件流
报文内容


1. 获取token

(注:盒子平台上的接口都不需要验签,若想将平台集成在自有平台,可以采用以下接口获取token,或在“系统设置”->“运维系统”->“安全设置”中开启免登录)

需要登录盒子平台(“系统设置”->“运维系统”->“安全设置”)查看Access Key ID和Access Key Secret

参数名称数据类型是否必须说明
signatureString签名,生成方式见生成signature
akStringAccess Key ID
timestampInt时间戳秒数,可通过获取系统时间戳接口获取,如1722995536
nonceStringUUID,长度不超过64
  • 请求示例;

项目详情
请求格式Query String
signature935816eb7b881e37a1761856……
ak66b1dc29ca6e4e…….
timestamp1722995536
nonceskaoqpcnskjnklamk
  • 响应参数说明;

参数名称数据类型说明
error_codeInt返回响应码
0: 成功
-1: 客户端错误
-2: 服务端错误
messageString返回响应信息
dataStringtoken,如果校验失败,返回空
  • 响应示例。

项目详情
报文格式JSON
报文内容{
"data": "eyJhbGciOiJIUzUxMiIsImlhdCI6MTYy…",
"error_code": 0,
"message": {
"zh": "获取token成功!",
"en": "Get token successful!"
}
}

2. 生成signature

需要登录上位机平台查看Access Key ID和Access Key Secret

  • Python示例:

import hashlibimport hmacimport logging# 配置日志记录器LOGGER = logging.getLogger(__name__)logging.basicConfig(level=logging.INFO)defgenerate_signature(sk: str, ak: str, timestamp: int, nonce: str) -> str:    """    生成数据的HMAC-SHA256签名    Args:        sk: 秘钥        ak: 用户id        timestamp: 时间戳(秒)        nonce: UUID,长度不超过64    Returns: 签名    """try:        iflen(nonce) > 64:            LOGGER.error('The length of nonce is too long: {}, limit is 64'.format(len(nonce)))            returnNone        message = '{}:{}:{}'.format(ak, timestamp, nonce)        sk_bytes = sk.encode('utf-8')        data_bytes = message.encode('utf-8')        hmac_obj = hmac.new(sk_bytes, data_bytes, hashlib.sha256)        signature = hmac_obj.hexdigest()        return signature    except Exception as e:        LOGGER.exception('generate_signature')        returnNone# 示例使用sk = 'Access Key Secret'ak = 'Access Key ID'timestamp = int(time.time())nonce = 'random_string'signature = generate_signature(sk, ak, timestamp, nonce)print('Signature:', signature)复制代码
  • JAVA示例:

import javax.crypto.Mac;import javax.crypto.spec.SecretKeySpec;import java.nio.charset.StandardCharsets;import java.security.MessageDigest;import java.util.logging.Logger;publicclassSignatureGenerator {    privatestaticfinalLoggerLOGGER= Logger.getLogger(SignatureGenerator.class.getName());    publicstatic String generateSignature(String sk, String ak, long timestamp, String nonce) {        try {            if (nonce.length() > 64) {                LOGGER.severe("The length of nonce is too long: " + nonce.length() + ", limit is 64");                returnnull;            }            Stringmessage= String.format("%s:%d:%s", ak, timestamp, nonce);            MachmacSHA256= Mac.getInstance("HmacSHA256");            SecretKeySpecsecretKey=newSecretKeySpec(sk.getBytes(StandardCharsets.UTF_8), "HmacSHA256");            hmacSHA256.init(secretKey);            byte[] hash = hmacSHA256.doFinal(message.getBytes(StandardCharsets.UTF_8));            StringBuilderhexString=newStringBuilder(2 * hash.length);            for (byte b : hash) {                Stringhex= Integer.toHexString(0xff & b);                if (hex.length() == 1) {                    hexString.append('0');                }                hexString.append(hex);            }            return hexString.toString();        } catch (Exception e) {            LOGGER.severe("generate_signature: " + e.getMessage());            returnnull;        }    }    publicstaticvoidmain(String[] args) {        Stringsk="Access Key Secret";        Stringak="Access Key ID";        longtimestamp= System.currentTimeMillis() / 1000;        Stringnonce="random_string";        Stringsignature= generateSignature(sk, ak, timestamp, nonce);        System.out.println("Signature: " + signature);    }}复制代码
  • JavaScript示例:

<!DOCTYPE html>    <scriptsrc="https://cdn.bootcss.com/crypto-js/3.1.9-1/crypto-js.js"></script><script>var ak = 'ak';        var sk = 'sk';var timestamp = 1722995536;var nonce = 'nekjwdfka';var message =`${ak}:${timestamp}:${nonce}`;        var hash = CryptoJS.HmacSHA256(message, sk);        var signature = CryptoJS.enc.Hex.stringify(hash);    </script></html>复制代码

3. 更新token

参数名称数据类型是否必须说明
AuthorizationString‘Bearer ’+ token; token通过获取token接口获取
  • 响应参数说明;

参数名称数据类型说明
error_codeInt返回响应码
0: 成功
-1: 客户端错误
-2: 服务端错误
messageString返回响应信息
dataObject返回数据

l 响应示例。

项目详情
报文格式JSON
报文内容{
"data": "eyJhbGciOiJIUzUxMiIsImlhdCI6MTYy…",
"error_code": 0,
"message": {
"zh": "获取token成功!",
"en": "Get token successful!"
}
}

5. Postman快速获取token

打开postman中的http://IP:9091/ks/user/token 接口,在此接口的Scripts标签页的Pre-request,如下图位置添加代码即可快速获取token。

varCryptoJS = require('crypto-js');var ak = "67c028f1c38062137d1b88d1";   // 盒子后台查看var sk = "19f07f37-5b13-4482-94fb-3f7ad0b5d547"; // 盒子后台查看var timestamp = Math.floor(Date.now() / 1000);var nonce = Math.random().toString(36).substring(2, 18); var message = `${ak}:${timestamp.toString()}:${nonce}`;var hash = CryptoJS.HmacSHA256(message, sk);var signature = CryptoJS.enc.Hex.stringify(hash);console.log("ak:", ak);console.log("timestamp:", timestamp);console.log("nonce:", nonce);console.log("signature:", signature);// 清除旧的查询参数pm.request.url.query.clear();pm.request.url.addQueryParams([    { key: 'ak', value: ak },    { key: 'timestamp', value: timestamp.toString() },    { key: 'nonce', value: nonce },    { key: 'signature', value: signature }]);


1. 设备查询

项目详情
请求格式Query String
  • 响应参数说明;

参数名称数据类型说明
error_codeInt返回响应码
0: 成功
-1: 客户端错误
-2: 服务端错误
messageString返回响应信息
dataObject返回数据,具体字段看下发接口
  • 响应示例。

项目详情
报文格式JSON
报文内容
{
    "error_code": 0,
    "message": {
        "zh": "查询设备信息成功!",
        "en": "Query device information successful!"
    },
    "data": {
        "id": 1,
        "device_id": "881b4776-30f2-47ee-b191-579d262d40ad",
        "device_name": "盒子99",
        "device_desc": ""
    }
}


HomMeeᴿAI
———————————
让AI落地  让未来起飞
©2025 - HomMeeAI 版权所有   HomMeeᴿ为注册商标
地址:成都市龙潭人工智能产业园(多元总部国际)14栋   电话:1508088887
  • 1
    鼎宏建安科技发展(四川)有限公司
    成都市成华区多元总部国际14栋
联系电话:15608088887
公司地址:成都市龙潭人工智能产业园(多元总部国际)14栋
联系邮箱:zengjie@hommeeai.com
联系我们