人脸识别API

  1. 新建人脸分组
  2. 编辑人脸分组
  3. 设置生人到熟人的迁移条件
  4. 删除人脸分组
  5. 获取人脸分组列表
  6. 新增人脸的属性
  7. 删除人脸的属性
  8. 获取指定人脸分组新增属性列表
  9. 新增人脸
  10. 删除人脸
  11. 更新人脸
  12. 获取人脸
  13. 获取人脸列表
  14. 获取人脸ID列表
  15. 获取到达时间最旧的人脸
  16. 清空指定人脸分组

1. 新建人脸分组

描述

通过此接口新建一个人脸分组,并配置其属性。人脸分组当前最多支持10个,系统默认存在两个人脸分组,分别是生人分组和熟人分组,即用户最多还可以创建8个分组。

请求地址

https://192.168.0.1/ openapi/face/createGroup, 192.168.0.1需要替换成实际的IPC地址。

请求参数

这里只列出接口的私有参数,公共参数见公共参数一节描述。

参数名称类型 描述是否必须 示例
name string 分组名称,不长于32个汉字,目前系统默认存在“生人”和 “熟人”两个分组Y生人
capacity int 分组容量,所有分组容量加起来不得超过3WY10000
description string分组的描述,不超过50个汉字。Y黑卡的客户

注:

1. 名称第一个字符不得为空格 ;

2. 默认生人库名为stranger,默认熟人库名为regular 。

响应参数

字段名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0、1、2、3、5、7、200、201、202、211、212、220,见错误码的描述

请求示例

POST openapi/face/createGroup HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192&timestamp=15930292837&sign=IDKNFLK392038KDS932K& name=vip&capacity=10000&description=贵宾人脸分组

返回示例

{
    “code”: 0
}

2. 编辑人脸分组

描述

通过此接口编辑指定人脸分组的属性。

请求地址

https://192.168.0.1/openapi/face/updateGroup,192.168.0.1需要替换成实际的IPC地址。

请求参数

这里只列出接口的私有参数,公共参数见公共参数一节描述。

参数名称 类型 描述 是否必须 示例
old_name string 要编辑的人脸分组名称 Y 黑卡客户
name string 修改后的分组名称,可与旧的一样 Y 金卡客户
capacity int 修改后的分组容量,可与旧的一样 Y 10000
description string 分组的描述,不超过50个汉字。 Y 办卡升级

注:

1.修改默认生人分组和熟人分组的属性时候,name必须与old_name一致,即不允许修改默认分组的组名;

2.名称第一个字符不得为空格。

响应参数

字段名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0、1、2、3、5、7、200、201、202、204、211、212、220,见错误码的描述

请求示例

POST openapi/face/updateGroup HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192&timestamp=15930292837&sign=IDKNFLK392038KDS932K& old_name=stranger&name=vip&capacity=10000&description=贵宾人脸分组

返回示例

{
    “code”: 0
}

3. 设置生人到熟人的迁移条件

描述

系统在激活时会默认创建生人分组和熟人分组两个组,且设备会默认把某个生人来的次数满足一定条件(默认7天内来了5次)的情况下,自动把这个生人移动到熟人分组。

通过此接口可修改生人移动到熟人分组的移动条件。

请求地址

https://192.168.0.1/openapi/face/updateMigration,192.168.0.1需要替换成实际的IPC地址。

请求参数

这里只列出接口的私有参数,公共参数见公共参数一节描述。

参数名称类型 描述 是否必须 示例
arrive_times int 必选,生人分组才需要的属性,取值范围1~10 Y 5
period int 必选,生人分组才需要的属性,取值范围1~100,单位为天 Y 20

注:

arrive_times和period是生人分组才需要修改的属性,代表一个生人在一定时间内(period设置,单位为天)来过多少次(arrive_times设置)就移动到熟人分组中去。 

响应参数

字段名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0、1、2、3、5、7、204、211、220,见错误码的描述

请求示例

POST openapi/face/updateMigrationHTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192&timestamp=15930292837&sign=IDKNFLK392038KDS932K&arrive_times=5&period=3

返回示例

{
    “code”: 0
}

4. 删除人脸分组

描述

删除指定人脸分组。

请求地址

https://192.168.0.1/openapi/face/deleteGroup,192.168.0.1需要替换成实际的IPC地址。

请求参数

这里只列出接口的私有参数,公共参数见公共参数一节描述。

参数名称 类型 描述 是否必须 示例
name string 要删除的分组名称,生人和熟人分组不能被删除,分组中有人脸也不能删除,只能先清空。 Y 黑卡客户

响应参数

字段名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0、1、2、3、5、7、201、204、205、211、220,见错误码的描述

请求示例

POST openapi/face/deleteGroup HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192&timestamp=15930292837&sign=IDKNFLK392038KDS932K& name=vip

返回示例

{
    “code”: 0
}

5. 获取人脸分组列表

描述

通过此接口获取IPC上所有的人脸分组信息。

请求地址

https://192.168.0.1/openapi/face/getGroupList,192.168.0.1需要替换成实际的IPC地址。

请求参数

此接口不需要私有参数,公共参数见公共参数一节描述。

响应参数

字段名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0、1、2、3、5、7、211、220,见错误码的描述
num int 分组的数量
name string 分组名称
capacity int 分组的容量
description string 分组的描述
times int 生人分组才有的属性
period int 生人分组才有的属性
count int 当前分组的大小,即有多少人脸记录

请求示例

POST openapi/face/getGroupList HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192&timestamp=15930292837&sign=IDKNFLK392038KDS932K

返回示例

{
“data”: {
“face_group”: [
{
“capacity”: 5000,
“count”: 0,
“name”: “regular”,//熟人分组
“description”: “this is regular group”
},
{
“capacity”: 1000,
“count”: 0,
“name”: “employee”,
“description”: “this is employee group”
},
{
“capacity”: 1000,
“count”: 0,
“name”: “blacklist”,
“description”: “this is blacklist group”
},
{  
“name”: “stranger”,//生人分组
“times”: 5,
“capacity”: 1000,
“count”: 0,
“period”: 2,
“description”: “this is stranger group”
}
],
“num”: 4
},
“code”: 0
}  

6. 新增人脸的属性

描述

库中给每个人脸预置了一些属性,可以通过此接口为指定人脸分组中的人脸增加最多5个属性。

强烈建议在创建新分组后添加人脸前,按需求先调用本接口添加人脸的属性,而不是在添加人脸后中途调用本接口添加人脸ID属性。

请求地址

https://192.168.0.1/openapi/face/addFaceInfoItem,192.168.0.1需要替换成实际的IPC地址。

请求参数

私有参数如下,公共参数见公共参数一节描述。

字段名称 类型 描述 是否必须 示例
num int 新增属性数量 Y 1
group_name string 人脸分组名称 Y stranger
name_list string array 类型为数组,属性名称列表,每个属性类型是string,属性长度最大为50字节 Y [“stranger”]

注:

1. 默认库不允许添加人脸ID属性;

2. 以下字段作为保留字段,不允许作为新添加的属性名: group_name, pic, age, gender, faceid, age_range, arrive_times, pic_url, total_num, return_num。

响应参数

字段名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0、1、2、3、5、7、204、211、220、240、241、242,见错误码的描述

请求示例

POST openapi/face/addFaceInfoItem HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192&timestamp=15930292837&sign=IDKNFLK392038KDS932K& num=2&group_name=vip&name_list=[“phone_num”, “weight”]

返回示例

{
    “code”: 0
}

7. 删除人脸的属性

描述

对于指定分组中的自定义属性,用户可以在不需要的时候删除,这里建议用户不要轻易删除。

请求地址

https://192.168.0.1/openapi/face/removeFaceInfoItem,192.168.0.1需要替换成实际的IPC地址。

请求参数

私有参数如下,公共参数见公共参数一节描述。

字段名称 类型 描述 是否必须 示例
num int 删除的属性数量 Y 1
group_name string 人脸分组名称 Y stranger
name_list string 数组,属性名称列表,属性长度最大为50字节 Y [“stranger”]

注:

默认库不允许删除人脸ID属性

响应参数

字段名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0、1、2、3、5、7、204、211、220、240、241、242、243,见错误码的描述

请求示例

POST openapi/face/removeFaceInfoItem HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192&timestamp=15930292837&sign=IDKNFLK392038KDS932K& num=2&group_name=vip&name_list=[“phone_num”, “weight”]

返回示例

{
    “code”: 0
}

8. 获取指定人脸分组新增属性列表

描述

通过此接口可以查询某个特定人脸分组中用户通过2.4.6指令添加的所有属性列表。

请求地址

https://192.168.0.1/openapi/face/getFaceInfoItem,192.168.0.1需要替换成实际的IPC地址。

请求参数

这里只列出接口的私有参数,公共参数见公共参数一节描述。

参数名称 类型 描述 是否必须 示例
group_name string 分组名称 Y stranger

响应参数

字段名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0、1、2、3、5、7、204、211、220,见错误码的描述
num int 属性的数量
name_list string 属性名称列表

请求示例

POST openapi/face/getFaceInfoItemHTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192&timestamp=15930292837&sign=IDKNFLK392038KDS932K& num=2&group_name=vip

返回示例

{
“code”: 0
“data”: {
“num”: 3,
“name_list”: [
“phone”,
“address”,
“vip_level”
]
},
}  

9. 新增人脸

描述

通过此接口可以向某个特定的人脸分组增加新人脸,并给每个人脸配置相关属性值。一次增加一个人脸。

请求方式

Content-Type为multipart/form-data,并对除文件以外的参数按照签名规则进行签名。

请求地址

https://192.168.0.1/openapi/face/addFace,192.168.0.1需要替换成实际的IPC地址。

请求参数

这里只列出接口的私有参数,公共参数见公共参数一节描述。

参数名称 类型 描述 是否 必须 示例
faceidstring 人脸id,64位正整数字符串。若不提供则内部生成 N123456
pic file jpg/png格式的人脸图片文件,最大分辨率为1920*1080,大小在1MB以内 Y 11024.jpg
group_name string 分组名称 Y stranger
age int 预置属性,年龄 N 14
gender int 预置属性,性别,0表示未知,1表示男性,2表示女性 N 1
item1 string 自定义属性1 N value1
item2 string 自定义属性2 N value2
item3 string 自定义属性3 N value3
item4 string 自定义属性4 N value4
item5 string 自定义属性5 N value5

注:

1.上面的预置属性是IPC数据库中内置的人脸具备的属性,其他的item1/item2/item3/item4/item5是用户自定义属性,若要使用自定义属性,则要调用2.4.6一节的接口来添加自定义属性,如果用户没有先添加人脸属性,直接在这个接口加上对应属性的key-value,IPC设备是不会处理那些属性的;

2.对于age属性,如果不设定,则会由摄像头自动设置此人的年龄段;

3.对于gender,如果不设定,则会由摄像头自动设置此人的性别。

响应参数

字段名称 类型 描述 示例
code int 返回码,表示操作的结果;
本接口返回码有:0、1、2、3、5、7、204、206、208、210、211、220,见错误码的描述
faceidstring人脸id123456

请求示例

POST /openapi/face/addFace HTTP/1.1
Host: 192.168.0.1
Content-Type: multipart/form-data; boundary=————————–962974737227706390007700
Content-Length: 1683

—————————-962974737227706390007700
Content-Disposition: form-data; name=”app_id”

mdk923idk
—————————-962974737227706390007700
Content-Disposition: form-data; name=”faceid”

Vip11024
—————————-962974737227706390007700
Content-Disposition: form-data; name=”random”  

289192
—————————-962974737227706390007700
Content-Disposition: form-data; name=”timestamp”  

15930292837
—————————-962974737227706390007700
Content-Disposition: form-data; name=”sign”  

IDKNFLK392038KDS932K
—————————-962974737227706390007700
Content-Disposition: form-data; name=”group_name”  

VIP
—————————-962974737227706390007700
Content-Disposition: form-data; name=”age”  

21
—————————-962974737227706390007700
Content-Disposition: form-data; name=”gender”  

1
—————————-962974737227706390007700
Content-Disposition: form-data; name=”hobby”  

hiking
—————————-962974737227706390007700
Content-Disposition: form-data; name=”vip_level”  

2
—————————-962974737227706390007700
Content-Disposition: form-data; name=”weight”  

60
—————————-962974737227706390007700
Content-Disposition: form-data; name=”phone_num”  

1234
—————————-962974737227706390007700
Content-Disposition: form-data; name=”pic”; filename=”11024.jpg”
Content-Type: image/jpeg  

(图片二进制数据)
—————————-962974737227706390007700–

注:

上述hobby、vip_level、weight、phone_num是用户自定义属性,对应item1/item2/item3/item4,自定义属性可以通过2.4.6一节的接口来添加。添加之后方可使用。

返回示例

{
    “code”: 0,
    “data”: {
        “faceid”: “123456”
    }
}

10. 删除人脸

描述

通过此接口可以删除指定人脸分组中的某些人脸。

请求地址

https://192.168.0.1/openapi/face/deleteFace,192.168.0.1需要替换成实际的IPC地址。

请求参数

这里只列出接口的私有参数,公共参数见公共参数一节描述。

参数名称 类型 描述 是否必须 示例
num int 删除的人脸数量 Y 1
group_name string 分组名称 Y example
faceid_list string array 删除的人脸ID列表 Y [“105”]

响应参数

字段名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0、1、2、3、5、7、204、211、220,见错误码的描述
success_list string array 删除成功的人脸ID列表
failed_list string array 删除失败的人脸ID列表
not_exist_list string array 不存在的人脸ID列表

请求示例

POST openapi/face/deleteFace HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192&timestamp=15930292837&sign=IDKNFLK392038KDS932K& group_name=VIP&faceid_list=[“000001”, “0000002”]&num=2

返回示例

{
“code”:     0,
“data”: {
“success_list”:
[
“000001”,
“000002”    
],
“failed_list”: [],
“not_exist_list”: [
“000003”     
]    
}
}

11. 更新人脸

描述

更新指定的人脸信息。

请求地址

https://192.168.0.1/openapi/face/updateFace,192.168.0.1需要替换成实际的IPC地址。

请求方式

Content-Type为multipart/form-data,并对除文件以外的参数按照签名规则进行签名。

请求参数

这里只列出接口的私有参数,公共参数见公共参数一节描述。

参数名称 类型 描述 是否必须 示例
group_name string 人脸分组名称 Y stranger
faceid string 人脸id,64位正整数字符串 Y 123456
new_group_name string 新人脸分组名称 N VIP
pic file jpg/png格式的人脸图片文件,最大分辨率为1920*1080,大小不超过1MB N example.jpg
age int 预置属性,年龄 N 10
gender int 性别,可更新为1表示男性、2表示女性 N 1
item1 string 自定义属性1 N value1
item2 string 自定义属性2 N value2
item3 string 自定义属性3 N value3
item4 string 自定义属性4 N value4
item5 string 自定义属性5 N value5

响应参数

参数名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0、1、2、3、5、7、204、207、208、210、211、220,见错误码的描述

请求示例

POST /openapi/face/addFace HTTP/1.1
Host: 192.168.0.1
Content-Type: multipart/form-data; boundary=————————–962974737227706390007700
Content-Length: 1683  

—————————-962974737227706390007700
Content-Disposition: form-data; name=”app_id”  

mdk923idk
—————————-962974737227706390007700
Content-Disposition: form-data; name=”random”  

289192
—————————-962974737227706390007700
Content-Disposition: form-data; name=”timestamp”  

15930292837
—————————-962974737227706390007700
Content-Disposition: form-data; name=”sign”  

IDKNFLK392038KDS932K
—————————-962974737227706390007700
Content-Disposition: form-data; name=”group_name”  

stranger
—————————-962974737227706390007700
Content-Disposition: form-data; name=”facdid”  

21
—————————-962974737227706390007700
Content-Disposition: form-data; name=”new_group_name”  

VIP
—————————-962974737227706390007700
Content-Disposition: form-data; name=”hobby”  

hiking
—————————-962974737227706390007700
Content-Disposition: form-data; name=”vip_level”  

2
—————————-962974737227706390007700
Content-Disposition: form-data; name=”weight”  

60
—————————-962974737227706390007700
Content-Disposition: form-data; name=”phone_num”  

1234
—————————-962974737227706390007700–

注:

上述 hobby、vip_level、weight、phone_num 是用户自定义属性,对应item1/item2/item3/item4,自定义属性可以通过 2.4.6 一节的接口来添加。添加之后方可使用。

返回示例

{       
“code”: 0
}

12. 获取人脸

描述

通过指定人脸ID获取人脸信息。

请求地址

https://192.168.0.1/openapi/face/getFace,192.168.0.1需要替换成实际的IPC地址。

请求参数

这里只列出接口的私有参数,公共参数见公共参数一节描述。

参数名称 类型 描述 是否必须 示例
faceid string 人脸ID Y 4

响应参数

参数名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0、1、2、3、5、7、211,见错误码的描述
faceid string 人脸ID
group_name string 所在分组名称
age int 年龄,为空则表示用户没有设置过此人脸的年龄
age_range int 所属年龄段,1表示1~6岁,2表示7~12岁,3表示13~18岁,4表示19~28岁,5表示29~35岁,6表示36~45岁,7表示45~55岁,8表示55岁~100
gender int 性别,0表示未知,1表示男性,2表示女性
arrive_count int 到达过的总次数
arrive_time int 最后到达时间戳
item1 string 自定义属性1,用户添加过才会返回
item2 string 自定义属性2,用户添加过才会返回
item3 string 自定义属性3,用户添加过才会返回
item4 string 自定义属性4,用户添加过才会返回
item5 string 自定义属性5,用户添加过才会返回

请求示例

POST openapi/face/getFace HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192&timestamp=15930292837&sign=IDKNFLK392038KDS932K&
faceid=4

返回示例

{    
“code”: 0,    
“data”: {        
“arrive_time”: 1566215943,        
“arrive_count”: 2,        
“faceid”: “4”,        
“group_name”: “VIP”,        
“point”: “113”,         //自定义属性        
“gender”: 1,        
“age”: 10,        
“age_range”: 2,        
“vip_level”: “1”,       //自定义属性        
“hobby”: “tennis”,      //自定义属性        
“weight”: “60”,         //自定义属性        
“height”: “180”        //自定义属性    
}
}

注:

上述point、hobby、vip_level、weight、height是用户自定义属性,对应item1/item2/item3/item4/itme5,自定义属性可以通过2.4.6一节的接口来添加。添加之后才有返回这些属性。

13. 获取人脸列表

描述

获取指定人脸分组的所有人脸信息。

请求地址

https://192.168.0.1/openapi/face/getFaceList,192.168.0.1需要替换成实际的IPC地址。

请求参数

这里只列出接口的私有参数,公共参数见公共参数一节描述。

参数名称 类型 描述 是否必须 示例
group_name string 人脸分组名称 Y VIP
page_num int 当前页码,默认值和最小值为1 N 4
page_size int 当前页面条目数,默认为10,范围为[1, 100] N 10

响应参数

参数名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0、1、2、3、5、7、211,见错误码的描述
total_num int 总人脸数量
return_num int 当前返回人脸数量
faceid string 人脸ID
age int 年龄,为空则表示用户没有设置过此人脸的年龄
age_range int 此人所属年龄段,用户不需用设置,由设备自动设置,1表示1~6岁,2表示7~12岁,3表示13~18岁,4表示19~28岁,5表示29~35岁,6表示36~45岁,7表示45~55岁,8表示55岁~100
gender int 性别,0表示未知,1表示男性,2表示女性
arrive_count int 到达过的总次数
arrive_time int 最后到达时间戳
item1 string 自定义属性1,用户添加过才会返回
item2 string 自定义属性2,用户添加过才会返回
item3 string 自定义属性3,用户添加过才会返回
item4 string 自定义属性4,用户添加过才会返回
item5 string 自定义属性5,用户添加过才会返回

请求示例

POST openapi/face/getFaceIDList HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192&timestamp=15930292837&sign=IDKNFLK392038KDS932K& group_name=VIP

返回示例

{    
“code”: 0,    
“data”: {        
“total_num”: 2,        
“num”: 2,        
“faceid_list”: [            
{                
“arrive_time”: 1566215929,                
“arrive_count”: 2,                
“faceid”: “3”,                
“point”: “113”,         //自定义属性                
“gender”: 2,                
“vip_level”: “3”,       //自定义属性                
“hobby”: “tennis”,      //自定义属性                 
“weight”: “60”,         //自定义属性                
“height”: “180”,        //自定义属性                
“age”: 10,                
“age_range”: 2            
},            
{                
“arrive_time”: 1566215998                
“arrive_count”: 1                 
“faceid”: “4”,                
“point”: “113”,         //自定义属性                
“gender”: 1,                
“vip_level”: “1”,       //自定义属性                
“hobby”: “tennis”,      //自定义属性                
“weight”: “60”,         //自定义属性                
“height”: “180”,        //自定义属性                
“age”: 10,                
“age_range”: 2            
}        
]    
}
}

14. 获取人脸ID列表

描述

获取指定人脸分组所有人脸ID列表。

请求地址

https://192.168.0.1/openapi/face/getFaceIdList,192.168.0.1需要替换成实际的IPC地址。

请求参数

这里只列出接口的私有参数,公共参数见公共参数一节描述。

参数名称类型描述是否必须示例
group_namestring人脸分组名称YVIP

响应参数

参数名称类型描述
codeint 返回码,表示操作的结果;
本接口返回码有:0、1、2、3、5、7、207、211,见错误码的描述
total_numint指定人脸分组的人脸总数
faceid_listtable指定人脸分组的所有人脸ID列表

请求示例

POST openapi/face/getFaceIDList HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192×tamp=15930292837&sign=IDKNFLK392038KDS932K& group_name=VIP

返回示例

{
    "data": {
        "total_num": 30000,
        "faceid_list": [
            661848208,
            661848209,
            661848210,
            661848211,
            661848212,
            661848213,
            661848214,
            661848215,
            661848216,
            661848217,
            661848218
        ]
    },
    code: 0
}

15. 获取到达时间最旧的人脸

描述

获取指定人脸分组按到达时间排序最旧的N条人脸信息。

请求地址

https://192.168.0.1/openapi/face/getFaceByArrival,192.168.0.1需要替换成实际的IPC地址。

请求参数

这里只列出接口的私有参数,公共参数见公共参数一节描述。

参数名称 类型 描述 是否必须 示例
group_name string 人脸分组名称 Y VIP
num int 获取人脸数量,默认值和最小值为1,最大值为10 N 2

响应参数

参数名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0、1、2、3、5、7、207、211,见错误码的描述
return_num int 当前返回人脸数量
faceid string 人脸ID
age int 年龄,为空则表示用户没有设置过此人脸的年龄
age_range int 此人所属年龄段,用户不需用设置,由设备自动设置,1表示1~6岁,2表示7~12岁,3表示13~18岁,4表示19~28岁,5表示29~35岁,6表示36~45岁,7表示45~55岁,8表示55岁~100
gender int 性别,0表示未知,1表示男性,2表示女性
arrive_count int 到达过的总次数
arrive_time int 最后到达时间戳
item1 string 自定义属性1,用户添加过才会返回
item2 string 自定义属性2,用户添加过才会返回
item3 string 自定义属性3,用户添加过才会返回
item4 string 自定义属性4,用户添加过才会返回
item5 string 自定义属性5,用户添加过才会返回

请求示例

POST openapi/face/getFaceByArrival HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192&timestamp=15930292837&sign=IDKNFLK392038KDS932K& group_name=VIP&num=2

返回示例

{
    “code”: 0,
    “data”: {
        “return_num”: 2,
        “faceid_list”: [
            {
                “faceid”: “8”,
                “arrive_time”: 1566215929,
                “arrive_count”: 7,
                “age_range”: 5,
                “gender”: 1,
                “age”: 0,
                “item1”:value1, //自定义属性   
                “item2”:value2, //自定义属性   
                “item3”:value3, //自定义属性   
                “item4”:value4, //自定义属性   
                “item5”:value5 //自定义属性               
            },
            {
                “faceid”: “10”,
                “arrive_time”: 1566110525,
                “arrive_count”: 6,
                “age_range”: 4,
                “gender”: 2,
                “age”: 0,
                “item1”: value1, //自定义属性   
                “item2”:value2, //自定义属性   
                “item3”:value3, //自定义属性   
                “item4”:value4, //自定义属性   
                “item5”:value5 //自定义属性                   
            }
        ]
    }
}

16. 清空指定人脸分组

描述

清空指定人脸分组内的所有人脸信息。

请求地址

https://192.168.0.1/openapi/face/ cleanFaceGroup ,192.168.0.1需要替换成实际的IPC地址。

请求参数

这里只列出接口的私有参数,公共参数见公共参数一节描述。

参数名称 类型 描述 是否必须 示例
group_name string 人脸分组名称 Y VIP

响应参数

参数名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0、2、3、12、13、204、220,见错误码的描述

请求示例

POST openapi/face/cleanFaceGroup HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192×tamp=15930292837&sign=IDKNFLK392038KDS932K& group_name=VIP&num=2

返回示例

{
    “code”: 0
}

视频流API

1.获取直播流

描述

获取指定IPC直播流地址。

请求地址

https://192.168.0.1/openapi/media/getLiveStream

请求参数

本接口没有私有参数,公共参数见公共参数一节描述。

响应参数

参数名称类型描述
codeint返回码,表示操作的结果;
本接口返回码有:0、1、3、5、7、232,见错误码的描述
hd_live_urlstring高清直播地址,RTSP协议
fhd_live_urlstring全高清直播地址,RTSP协议

请求示例

POST /openapi/media/getLiveStreamHTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192×tamp=1564565937&sign=IDKNFLK392038KDS932K

返回示例

{
   “code”:              0,
   “data”: {
      “hd_live_url”:  “rtsp://192.168.0.1/ed98eeead4c843f898fef1c203313364/live_hd.sdp”,
      “fhd_live_url”:  “rtsp://192.168.0.1/ed98eeead4c843f898fef1c203313364/live_fhd.sdp”
  }
}

2.获取回放流

描述

获取指定IPC回放流地址。

请求地址

https://192.168.0.1/openapi/media/getPlaybackStream

请求参数

这里只列出接口的私有参数,公共参数见公共参数一节描述。

参数名称类型描述是否必须示例
start_timelong回放开始时间,unix格式的时间戳,秒级Y1578969264
end_timelong回访结束时间,unix格式的时间戳,秒级Y1579055640

响应参数

参数名称类型描述
codeint返回码,表示操作的结果;
本接口返回码有:0、1、3、5、7、230、235,见错误码的描述
playback_urlstring视频回放地址,RTSP协议

请求示例

POST /openapi/media/getLiveStream HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192×tamp=1564565937&sign=IDKNFLK392038KDS932K&start_time=1564565637&end_time=1564565697

返回示例

{
   “code”:              0,
   “data”: {
       “playback_url”:  “rtsp://192.168.0.1/ed98eeead4c843f898fef1c203313364/pb.sdp”
    }
}

3.获取录像文件列表

描述

获取指定指定时间内的录像文件列表。此接口按文件返回结果,列表中可能包含多个文件下载地址。

请求地址

https://192.168.0.1/openapi/media/getRecordList

请求参数

这里只列出接口的私有参数,公共参数见公共参数一节描述。

参数名称类型描述是否必须示例
start_timelong指定开始时间,unix格式的时间戳,秒级Y1578969264
end_timelong指定结束时间,unix格式的时间戳,秒级Y1579055640
page_numint当前页码,默认值和最小值为1N1
page_sizeint当前页面条目数,默认为10,范围为[1, 100]N10

响应参数

参数名称类型描述
codeint返回码,表示操作的结果;
本接口返回码有:0、1、3、5、7、231、234、235,见错误码的描述
total_numint符合条件的视频总数量,每个视频大概1分钟时长
return_numint当前返回的视频数量
start_timelong视频的开始时间
end_timelong视频的结束时间
urlstring视频的下载链接

请求示例

POST /openapi/media/getRecordList HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192×tamp=1564565937&sign=IDKNFLK392038KDS932K&start_time=1564565216&end_time=1564565697&page_num=2&page_size=30

返回示例

{
   “code”:              0,
   “data”: {
    “total_num”: 100,
    “return_num”: 30,
    “record_list”:[{
    “start_time”: 1564565216,
    “end_time”: 1564565276,
    “url”:  “https://192.168.0.1/mnt/sd-card/sunmi_video/video_plan/20190731172656_20190731172756.flv?auth_key=1564643800-efc1f64efb0d1d8fab35f0fe8c823a34”}, …]
   }
}

4.获取当前快照

描述

获取指定IPC当前快照。

请求地址

https://192.168.0.1/openapi/media/getSnapshot

请求参数

本接口没有私有参数,公共参数见公共参数一节描述。

响应参数

参数名称类型描述
codeint返回码,表示操作的结果;
本接口返回码有:0、1、3、5、7、233,见错误码的描述
snapshot_urlstring快照下载地址

请求示例

POST /openapi/media/getSnapshot HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192×tamp=1564565937&sign=IDKNFLK392038KDS932K

返回示例

{
   “code”:              0,
   “data”: {
      “snapshot_url”:  “https://192.168.0.1/tmp/snapshot/FM0101122334455_20190726162335.jpg?auth_key=1564129415-215f61f3c5f552c5bf8f43ccef5c66a9”
  }
}

5.获取当前视频片段

描述

获取当前时间往前(和/或)往后一点时间的视频片段。

获取视频片段的粒度为4s,用户在调用该接口的时候,设备会在截取当前时间之前的一段视频(以4s为单位)+当前时间点的4s片段+当前时间之后的一段视频片段 (以4s为单位) ,并返回用户视频下载连接。

视频下载连接在调用完成后4~12s生效,生效时间与用户传入的following参数有关。

请求地址

https://192.168.0.1/openapi/media/getCurVideos

请求参数

这里只列出接口的私有参数,公共参数见公共参数一节描述。

参数名称类型描述是否必须示例
precedingint当前时间点之前的视频片段长度,只能是0,4,8Y0
followingint 当前时间点之后的视频片段长度,只能是0,4,8 Y8

响应参数

参数名称类型描述
codeint返回码,表示操作的结果;
本接口返回码有:0、1、2、3、5、7、236、237,见错误码的描述
urlstring视频片段下载链接,在生成后4~12s生效

请求示例

POST /openapi/media/getCurVideos HTTP/1.1
Host: 10.10.61.206
Content-Type: application/json
Content-Length: 111
Connection: Keep-Alive
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,en,*
User-Agent: Mozilla/5.0
app_id=123&timestamp=1585743081&random=7783515117&following=0&preceding=0&sign=F4A04BDBE60D9C656A23CD945F703DA2

返回示例

{
“data”:
{
“url”:”https://10.10.63.19/mnt/sd-card/video_slicer/1585741874923_0_0.flv?auth_key=1585741878-c41f9a8751fe0c259b3d00b3842aa668″
},
“code”:0
}

6.获取录像片段下载地址

描述

获取指定指定时间内的录像片段下载地址。此接口会将多个录像片段合并为一个文件下载。

请求地址

https://192.168.0.1/openapi/media/getRecordUrl

请求参数

这里只列出接口的私有参数,公共参数见公共参数一节描述。

参数名称类型描述是否必须示例
start_timelong指定开始时间,unix格式的时间戳,秒级Y1578969264
end_timelong指定结束时间,unix格式的时间戳,秒级Y1579055640

响应参数

参数名称类型描述
codeint返回码,表示操作的结果;
本接口返回码有:0、1、3、5、7、231、234、235,见错误码的描述
urlstring录像片段的下载链接

请求示例

POST /openapi/media/getRecordUrl HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192×tamp=1564565937&sign=IDKNFLK392038KDS932K&start_time=1564565216&end_time=1564565697

返回示例

{
   “code”:              0,
   “data”: {
    “url”:  “https://192.168.0.1/record/C101E96500009/1564565216_ 1564565697.flv?auth_key=efc1f64efb0d1d8fab35f0fe8c823a34”
   }
}

基本配置

  1. 设置无线参数
  2. 设置无线参数(无需签名校验)
  3. 获取无线参数
  4. 获取无线扫描AP列表
  5. 获取无线扫描AP列表(无需签名校验)
  6. 获取IP参数
  7. 设置IP参数
  8. 调焦
  9. 手动聚焦
  10. 自动聚焦
  11. 调焦聚焦复位
  12. 获取调焦和聚焦参数
  13. 设置夜视模式
  14. 获取夜视模式
  15. 设置动态侦测
  16. 获取动态侦测参数
  17. 设置IPC名称
  18. 获取IPC名称
  19. 设置指示灯开关
  20. 获取指示灯开关
  21. 设置画面旋转角度
  22. 获取画面旋转角度
  23. 获取支持的画面旋转角度
  24. 格式化存储卡
  25. 获取存储卡状态
  26. 设置人脸识别算法参数
  27. 获取人脸识别算法参数
  28. 获取图像基本参数
  29. 重置图像基本参数
  30. 设置图像亮度
  31. 设置图像对比度
  32. 设置图像饱和度

1. 设置无线参数

描述

配置IPC连接AP的SSID和密码。

请求地址

https://192.168.0.1/openapi/config/setWifiConf,192.168.0.1需要替换成实际的IPC地址。

请求参数

这里只列出接口的私有参数,公共参数见HTTP接口调用

参数名称 类型 描述是否必须 示例
ssid string要连接的AP的无线名称,也即SSID,不能超过32个字符Y WeWork
password string要连接的AP的密码,如果无加密,填空即可,不支持WEP,不能超过64个字符Y

响应参数

字段名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0、1、2、3、5、7、100、101,见错误码的描述

请求示例

POST /openapi/config/setWifiConf HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192×tamp=15930292837&sign=IDKNFLK392038KDS932K& ssid=sunmi_ipc&password=1234567890

返回示例

{
    “code”: 0
}

2. 设置无线参数(无需签名校验)

描述

设备激活前无需签名校验配置 IPC 连接 AP 的 SSID 和密码;设备激活后此接口即失效。

请求地址

https://192.168.0.1/openapi/config/setWifiConfWithoutAuth,192.168.0.1需要替换成实际的IPC地址。

请求参数

本接口没有公共参数。

参数名称 类型 描述是否必须 示例
ssid string要连接的AP的无线名称,也即SSID,不能超过32个字符Y WeWork
password string要连接的AP的密码,如果无加密,填空即可,不支持WEP,不能超过64个字符Y

响应参数

字段名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0、1、2、3、5、7、12、100、101,见错误码的描述

请求示例

POST /openapi/config/setWifiConfWithoutAuth HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

ssid=sunmi_ipc&password=1234567890

返回示例

{
    “code”: 0
}

3. 获取无线参数

描述

获取当前IPC的无线参数。

请求地址

https://192.168.0.1/openapi/config/getWifiConf,192.168.0.1需要替换成实际的IPC地址。

请求参数

本接口没有私有参数,公共参数见HTTP接口调用

响应参数

参数名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0、1、3、5、7,见错误码的描述
ssid string 当前连接的SSID
password string 当前SSID的密码

请求示例

POST /openapi/config/getWifiConf HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192×tamp=15930292837&sign=IDKNFLK392038KDS932K

返回示例

{
    “code”: 0,
    “data”: {
        “ssid”: “SUNMI_IPC”,
        “password”: “1234567890”
    }
}

4. 获取无线扫描AP列表

描述

获取当前IPC无线扫描到的AP列表。

请求地址

https://192.168.0.1/openapi/config/getApList,192.168.0.1需要替换成实际的IPC地址。

请求参数

本接口没有私有参数 ,公共参数见HTTP接口调用

响应参数

参数名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0、1、3、5、7,见错误码的描述
num int 返回扫描到的AP个数
ssid string 扫描到AP的ssid
key_mgmt string 扫描到AP的加密方式

请求示例

POST /openapi/config/getApList HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192×tamp=15930292837&sign=IDKNFLK392038KDS932K

返回示例

{
    “code”:0,
    “data”: 
    {
        “num”: 3,
        “ap_list”:[
            {
                “ssid”: “TP-LINK_3475”,
                “key_mgmt”: “WPA-PSK”
            },
            {
                “ssid”: “WeWork”,
                “key_mgmt”: “WPA-PSK”
            },
            {
                “ssid”: “WeWorkCorp”,
                “key_mgmt”: “WPA-PSK”
            }
        ]
    }
}

5. 获取无线扫描AP列表(无需签名校验)

描述

获取当前IPC无线扫描到的AP列表;设备激活后此接口即失效。

请求地址

https://192.168.0.1/openapi/config/getApListWithoutAuth,192.168.0.1需要替换成实际的IPC地址。

请求参数

本接口没有私有参数 ,公共参数见HTTP接口调用

响应参数

参数名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0、1、3、5、7,见错误码的描述
num int 返回扫描到的AP个数
ssid string 扫描到AP的ssid
key_mgmt string 扫描到AP的加密方式

请求示例

POST /openapi/config/getApListWithoutAuth HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192×tamp=15930292837&sign=IDKNFLK392038KDS932K

返回示例

{
    “code”:0,
    “data”: 
    {
        “num”: 3,
        “ap_list”:[
            {
                “ssid”: “TP-LINK_3475”,
                “key_mgmt”: “WPA-PSK”
            },
            {
                “ssid”: “WeWork”,
                “key_mgmt”: “WPA-PSK”
            },
            {
                “ssid”: “WeWorkCorp”,
                “key_mgmt”: “WPA-PSK”
            }
        ]
    }
}

6. 获取IP参数

描述

获取IPC的IP地址相关信息。

请求地址

https://192.168.0.1/openapi/config/getIpConfiguration,192.168.0.1需要替换成实际的IPC地址。

请求参数

本接口没有私有参数 ,公共参数见HTTP接口调用

响应参数

参数名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0、1、3、5、7,见错误码的描述
proto string dhcp或者static
ipaddr string IPC的IP地址
netmask string IPC的子网掩码
gateway string IPC的网关
dns1 string dns地址
dns2 string dns地址

请求示例

POST /openapi/config/getIpConfiguration HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192&timestamp=15930292837&sign=IDKNFLK392038KDS932K

返回示例

{
   “code”: 0,
   “data”: {
      “proto”: “dhcp”,
      “ipaddr”: “192.168.1.107”,
      “netmask”: “255.255.255.0”,
      “gateway”: “192.168.1.1” ,
      “dns1”: “202.96.128.86”,
      “dns2”: “202.96.134.166”,
     }
}

7. 设置IP参数

描述

设置IPC获取IP地址的方式。

请求地址

https://192.168.0.1/openapi/config/setIpConfiguration,192.168.0.1需要替换成实际的IPC地址。

请求参数

这里只列出接口的私有参数,公共参数见HTTP接口调用

参数名称类型描述是否必须示例
protostringIP地址的获取方式:dhcp或者staticYstatic
ipaddrstringIP地址,设置静态IP地址时必须传入N192.168.1.110
netmaskstring子网掩码,设置静态IP地址时必须传入N255.255.255.0
gatewaystring网关,设置静态IP地址时必须传入N192.168.1.100
dns1stringdns服务器地址N202.96.128.86
dns2string dns服务器地址 N202.96.134.166

响应参数

参数名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0、1、2、3、5、7,见错误码的描述

请求示例

POST /openapi/config/setIpConfiguration HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192&proto=dhcp&timestamp=15930292837&sign=IDKNFLK392038KDS932K

返回示例

{
    “errcode”: 0
}

8. 调焦

描述

用户根据实际环境,调节镜头的焦距,使得拍摄的画面放大或者缩小。

请求地址

https://192.168.0.1/openapi/config/setZoom,192.168.0.1需要替换成实际的IPC地址。

请求参数

这里只列出接口的私有参数,公共参数见HTTP接口调用

参数名称 类型 描述 是否必须 示例
zoom int 焦距大小,合理范围是[0, 500] Y 200

响应参数

字段名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0、1、3、5、7、110,见错误码的描述

请求示例

POST /openapi/config/setZoom HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192&timestamp=15930292837&sign=IDKNFLK392038KDS932K& zoom=100

返回示例

{
    “code”: 0
}

9. 手动聚焦

描述

调焦后镜头会自动聚焦,如果对自动聚焦效果不满意,可以调用此接口手动进行微调。

请求地址

https://192.168.0.1/openapi/config/manualFocus,192.168.0.1需要替换成实际的IPC地址。

请求参数

这里只列出接口的私有参数,公共参数见HTTP接口调用

参数名称 类型 描述 是否必须 示例
focus int 聚焦大小,合理范围是[0, 780] Y 200

响应参数

字段名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0、1、3、5、7、111,见错误码的描述

请求示例

POST /openapi/config/manualFocus HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192&timestamp=15930292837&sign=IDKNFLK392038KDS932K& focus=100

返回示例

{
    “code”: 0
}

10. 自动聚焦

描述

设置焦距后,IPC会自动聚焦,可以设置自动聚焦以哪个点(坐标)为中心进行。

请求地址

https://192.168.0.1/openapi/config/autoFocus,192.168.0.1需要替换成实际的IPC地址。

请求参数

这里只列出接口的私有参数,公共参数见HTTP接口调用

参数名称 类型 描述 是否必须 示例
focus_x int 聚焦点在x方向的像素百分比,合理范围是[0, 100] Y 50
focus_y int 聚焦点在y方向的像素百分比,合理范围是[0, 100] Y 50

响应参数

字段名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0、1、3、5、7、112,见错误码的描述

请求示例

POST /openapi/config/autoFocus HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192&timestamp=15930292837&sign=IDKNFLK392038KDS932K& focus_x=50&focus_y=50

返回示例

{
    “code”: 0
}

11. 调焦聚焦复位

描述

用户可以通过此接口直接复位焦距和聚焦的参数。

请求地址

https://192.168.0.1/openapi/config/resetZoomFocus,192.168.0.1需要替换成实际的IPC地址。

请求参数

此接口没有私有参数,公共参数见HTTP接口调用

响应参数

字段名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0、1、3、5、7,见错误码的描述

请求示例

POST /openapi/config/resetZoomFocus HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192&timestamp=15930292837&sign=IDKNFLK392038KDS932K

返回示例

{
    “code”: 0
}

12. 获取调焦和聚焦参数

描述

获取当前IPC镜头的调焦聚焦参数。

请求地址

https://192.168.0.1/openapi/config/getZoomFocusConf,192.168.0.1需要替换成实际的IPC地址。

请求参数

本接口没有私有参数,公共参数见HTTP接口调用

响应参数

参数名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0、1、3、5、7,见错误码的描述
max_zoom int 能够调整的焦距最大值
max_focus int 能够调整的聚焦最大值
zoom int 当前的焦距
focus int 当前的聚焦值
focus_x int 聚焦点在x方向的像素百分比
focus_y int 聚焦点在y方向的像素百分比

请求示例

POST /openapi/config/getZoomFocusConf HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192&timestamp=15930292837&sign=IDKNFLK392038KDS932K

返回示例

{
    “code”: 0,
    “data”: {
        “zoom”: 0,
        “max_zoom”: 500,
        “max_focus”: 780,
        “focus”: 0,
        “focused_x”: 50,
        “focused_y”: 50
    }
}

13. 设置夜视模式

描述

配置镜头的夜视模式。

请求地址

https://192.168.0.1/openapi/config/setIrMode,192.168.0.1需要替换成实际的IPC地址。

请求参数

这里只列出接口的私有参数,公共参数见HTTP接口调用

参数名称 类型 描述 是否必须 示例
irmode int 0表示关闭,1表示开启,2表示自动。一般选2。 Y 2

响应参数

字段名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0、1、3、5、7、113,见错误码的描述

请求示例

POST /openapi/config/setIrMode HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192&timestamp=15930292837&sign=IDKNFLK392038KDS932K& irmode=1

返回示例

{
    “code”: 0
}

14. 获取夜视模式

描述

获取当前IPC的夜视模式。

请求地址

https://192.168.0.1/openapi/config/getIrMode,192.168.0.1需要替换成实际的IPC地址。

请求参数

本接口没有私有参数,公共参数见HTTP接口调用

响应参数

参数名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0、1、3、5、7,见错误码的描述
irmode int 返回码成功才会有此字段,当前夜视模式

请求示例

POST /openapi/config/getIrMode HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192&timestamp=15930292837&sign=IDKNFLK392038KDS932K

返回示例

{
    “code”: 0,
    “data”: {
          “irmode”: 1
    }
}

15. 设置动态侦测

描述

IPC的动态侦测支持根据画面变化和声音变化灵敏度来检测和报警,通过本API可以设置相关灵敏度和动态侦测的时间。

请求地址

https://192.168.0.1/openapi/config/setDynamicDetect,192.168.0.1需要替换成实际的IPC地址。

请求参数

这里只列出接口的私有参数,公共参数见HTTP接口调用

参数名称 类型 描述 是否必须 示例
motion_level int 范围[0, 3],0表示关闭,数值越大,越灵敏。 Y 2
audio_level int 范围[0, 3],0表示关闭,数值越大,越灵敏。 Y 2
weekday int 以周为一个循环,用0xYY来表示选择哪一天,具体是0x80直接表示7×24小时,其余的,
以7bit来表示哪一天被选上,0x01表示选择周一,0x02表示选择周二,0x40表示选择
周天,0x7f表示选择一个礼拜的7天,与0x80的区别只是0x80直接默认724小时,而
0x7f选了7天后,还可以设置具体的开始时间和结束时间。
Y 128(0x80 的十进制)
start_time long 用分钟来表示,以一天24小时为例,以分钟为最小粒度,总共24*60这样的时间数值,
60表示01:00,121表示02:01,依次类推。范围[0,1440]
Y 200
stop_time long 用分钟来表示,以一天24小时为例,以分钟为最小粒度,总共24*60这样的时间数值,
60表示01:00,121表示02:01,依次类推。范围[0,1440]
Y 400

响应参数

字段名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0、1、3、5、7,见错误码的描述

请求示例

POST /openapi/config/setDynamicDetect HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192&timestamp=15930292837&sign=IDKNFLK392038KDS932K motion_level=1&audio_level=1&weekday=128&start_time=1260&stop_time=540

返回示例

{
    “code”: 0
}

16. 获取动态侦测参数

描述

获取当前IPC镜头的动态侦测参数。

请求地址

https://192.168.0.1/openapi/config/getDynamicDetect,192.168.0.1需要替换成实际的IPC地址。

请求参数

本接口没有私有参数,公共参数见HTTP接口调用

响应参数

参数名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0、1、3、5、7,见错误码的描述
motion_level int 范围[0, 3],0表示关闭,数值越大,越灵敏。
audio_level int 范围[0, 3],0表示关闭,数值越大,越灵敏。
weekday int 以周为一个循环,用0xYY来表示选择哪一天,具体是0x80直接表示7×24小时,其余的,
以7bit来表示哪一天被选上,0x01表示选择周一,0x02表示选择周二,0x40表示选择
周天,0x7f表示选择一个礼拜的7天,与0x80的区别只是0x80直接默认724小时,而
0x7f选了7天后,还可以设置具体的开始时间和结束时间。
start_time long 用分钟来表示,以一天24小时为例,以分钟为最小粒度,总共24*60这样的时间数值,
60表示01:00,121表示02:01,依次类推。范围[0,1440]
stop_time long 用分钟来表示,以一天24小时为例,以分钟为最小粒度,总共24*60这样的时间数值,
60表示01:00,121表示02:01,依次类推。范围[0,1440]

请求示例

POST /openapi/config/getDynamicDetect HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded


app_id=mdk923idkf&random=289192×tamp=15930292837&sign=IDKNFLK392038KDS932K

返回示例

{
    “code”: 0,
    “data”: {
          “motion_level”: 1,
         “audio_level”: 1,
         “weekday”: 7,
         “start_time”: 120
         “stop_time”: 240,
    }
}

17. 设置IPC名称

描述

用户可以设置IPC的名称,以便区分不同的IPC设备。

请求地址

https://192.168.0.1/openapi/config/updateName,192.168.0.1需要替换成实际的IPC地址。

请求参数

这里只列出接口的私有参数,公共参数见HTTP接口调用

参数名称 类型 描述 是否必须 示例
name string 36个字符以内,12汉字以内 Y 示例名称

响应参数

字段名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0、1、3、5、7、118,见错误码的描述

请求示例

POST /openapi/config/updateName HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192&timestamp=15930292837&sign=IDKNFLK392038KDS932K&
name=front_door

返回示例

{
    “code”: 0
}

18. 获取IPC名称

描述

获取当前IPC的名称。

请求地址

https://192.168.0.1/openapi/config/getName,192.168.0.1需要替换成实际的IPC地址。

请求参数

本接口没有私有参数,公共参数见HTTP接口调用

响应参数

参数名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0、1、3、5、7,见错误码的描述
name int IPC名称

请求示例

POST /openapi/config/getName HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192&timestamp=15930292837&sign=IDKNFLK392038KDS932K

返回示例

{
    “code”: 0,
    “data”: {
         “name”: “front_door”
    }
}

19. 设置指示灯开关

描述

设置指示灯是否需要关闭。

请求地址

https://192.168.0.1/openapi/config/setLedSwitch,192.168.0.1需要替换成实际的IPC地址。

请求参数

这里只列出接口的私有参数,公共参数见HTTP接口调用

参数名称 类型 描述 是否必须 示例
led_switch int 0表示关闭指示灯,1表示开启指示灯,即可以亮 Y 1

响应参数

字段名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0、1、3、5、7、119, 见错误码的描述

请求示例

POST /openapi/config/setLedSwitch HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192&timestamp=15930292837&sign=IDKNFLK392038KDS932K& led_switch=1

返回示例

{
    “code”: 0
}

20. 获取指示灯开关

描述

获取当前IPC的指示灯状态。

请求地址

https://192.168.0.1/openapi/config/getLedSwitch,192.168.0.1需要替换成实际的IPC地址。

请求参数

本接口没有私有参数,公共参数见HTTP接口调用

响应参数

参数名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0、1、3、5、7, 见错误码的描述
led_switch int 0表示关闭指示灯,1表示开启指示灯,即可以亮

请求示例

POST /openapi/config/getLedSwitch HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192&timestamp=15930292837&sign=IDKNFLK392038KDS932K

返回示例

{
    “code”: 0,
    “data”: {
         “led_switch”: 1
    }
}

21. 设置画面旋转角度

描述

设置拍摄的画面是否需要旋转一定角度,可用的旋转角度可通过获取支持的画面旋转角度获取到。

请求地址

https://192.168.0.1/openapi/config/setRotation,192.168.0.1需要替换成实际的IPC地址。

请求参数

这里只列出接口的私有参数,公共参数见HTTP接口调用

参数名称 类型 描述 是否必须 示例
rotation int 画面旋转角度
对于FM010,支持的参数有0,90,180,270;
对于FM020,支持的参数有0,180
Y 180

响应参数

字段名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0、1、3、5、7、120, 见错误码的描述

请求示例

POST /openapi/config/setRotation HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192&timestamp=15930292837&sign=IDKNFLK392038KDS932K& rotation=180

返回示例

{
    “code”: 0
}

22. 获取画面旋转角度

描述

获取当前IPC当前的画面旋转角度。

请求地址

https://192.168.0.1/openapi/config/getRotation,192.168.0.1需要替换成实际的IPC地址。

请求参数

本接口没有私有参数,公共参数见HTTP接口调用

响应参数

参数名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0、1、3、5、7, 见错误码的描述
rotation int 当前画面的旋转角度
对于FM010,支持的参数有0,90,180,270;
对于FM020,支持的参数有0,180

请求示例

POST /openapi/config/getRotation HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192&timestamp=15930292837&sign=IDKNFLK392038KDS932K

返回示例

{
    “code”: 0,
    “data”: {
        “rotation”: 180
    }

23. 获取支持的画面旋转角度

描述

获取当前IPC设备支持的画面旋转角度。

请求地址

https://192.168.0.1/openapi/config/getRotationAngles,192.168.0.1需要替换成实际的IPC地址。

请求参数

本接口没有私有参数,公共参数见HTTP接口调用

响应参数

参数名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0、1、3、5、7, 见错误码的描述
angles string list 当前IPC设备支持的画面旋转角度列表
对于FM010,支持的参数有0,90,180,270;
对于FM020,支持的参数有0,180

请求示例

POST /openapi/config/getRotation HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192&timestamp=15930292837&sign=IDKNFLK392038KDS932K

返回示例

{
    “code”: 0,
    “data”: {
        “angles”: [
            “0”,
            “90”,
            “180”,
            “270”
        ]
    }
}

24. 格式化存储卡

描述

格式化插入IPC里面的存储卡。

请求地址

https://192.168.0.1/openapi/config/formatMemoryCard,192.168.0.1需要替换成实际的IPC地址。

请求参数

本接口没有私有参数,公共参数见HTTP接口调用

响应参数

参数名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0、1、3、5、7、220、221, 见错误码的描述

请求示例

POST /openapi/config/formatMemoryCard HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192&timestamp=15930292837&sign=IDKNFLK392038KDS932K
  • 返回示例
{
    “code”: 0
}

25. 获取存储卡状态

描述

获取IPC上存储卡状态

请求地址

https://192.168.0.1/openapi/config/getMemoryCardStatus,192.168.0.1需要替换成实际的IPC地址。

请求参数

本接口没有私有参数,公共参数见HTTP接口调用

响应参数

参数名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0、1、3、5、7, 见错误码的描述
status int 0表示未插入SD卡;1表示已插入SD卡但未初始化;2表示SD卡已插入且正常;3表示SD卡无法识别

请求示例

POST /openapi/config/getMemoryCardStatus HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192×tamp=15930292837&sign=IDKNFLK392038KDS932K

返回示例

{
    “code”: 0,
    “data”: {
         “status”: 2
    }
}

26. 设置人脸识别算法参数

描述

人脸识别算法分析视频数据时,需要从视频流中优选质量相对较好的图像进行识别匹配,此接口用于设置优选过程的参数。

请求地址

https://192.168.0.1/openapi/config/setFaceOption,192.168.0.1需要替换成实际的IPC地址。

请求参数

这里只列出接口的私有参数,公共参数见HTTP接口调用

参数名称类型描述是否必须实例
optimize_secondsint优选图像的时间范围,单位为秒。在画面中出现人脸后则尝试 选出 在这个时间范围内最好的人脸图像进行特征提取。Y2

响应参数

参数名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0、1、2、3、5、7, 见错误码的描述

请求示例

POST /openapi/config/setFaceOption HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

timestamp=15930292837&app_id=mdk923idkf&random=289192&optimize_seconds=2&sign=IDKNFLK392038KDS932K

返回示例

{
 "code": 0
} 

27. 获取人脸识别算法参数

描述

人脸识别算法分析视频数据时,需要从视频流中优选质量相对较好的图像进行识别匹配,此接口用于获取优选过程的参数。

请求地址

https://192.168.0.1/openapi/config/getFaceOption,192.168.0.1需要替换成实际的IPC地址。

请求参数

本接口没有私有参数,公共参数见HTTP接口调用

响应参数

参数名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0、1、3、5、7、279, 见错误码的描述

请求示例

POST /openapi/config/getFaceOption HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

timestamp=15930292837&app_id=mdk923idkf&random=289192sign=IDKNFLK392038KDS932K

返回示例

{
  "code": 0,
  "data": {
    "optimize_seconds": "2"
  }
} 

28. 获取图像基本参数

描述

该接口获取图像的亮度,对比度,饱和度参数。

请求地址

https://192.168.0.1/openapi/config/ get_pqparam,192.168.0.1需要替换成实际的IPC地址。

请求参数

本接口没有私有参数,公共参数见HTTP接口调用

响应参数

参数名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0见错误码的描述
brightnessint返回的亮度值范围0-100
contrastint返回的对比度值范围0-100
saturationint返回的饱和度值范围0-100

请求示例

POST /openapi/config/get_pqparam HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

timestamp=15930292837&app_id=mdk923idkf&random=289192sign=IDKNFLK392038KDS932K

返回示例

{
  "code": 0
} 

29. 重置图像基本参数

描述

该接口将图像的亮度,对比度,饱和度参数重置为默认值。

请求地址

https://192.168.0.1/openapi/config/ reset_pqparam ,192.168.0.1需要替换成实际的IPC地址。

请求参数

本接口没有私有参数,公共参数见HTTP接口调用

响应参数

参数名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0见错误码的描述

请求示例

POST /openapi/config/reset_pqparam HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

timestamp=15930292837&app_id=mdk923idkf&random=289192sign=IDKNFLK392038KDS932K

返回示例

{
  "code": 0
} 

30. 设置图像亮度

描述

该接口将设置图像亮度为目标值。

请求地址

https://192.168.0.1/openapi/config/ set_brightness ,192.168.0.1需要替换成实际的IPC地址。

请求参数

这里只列出接口的私有参数,公共参数见HTTP接口调用

参数名称类型描述是否必须实例
brightnessint目标亮度值。Y50

响应参数

参数名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0见错误码的描述

请求示例

POST /openapi/config/set_brightness HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

timestamp=15930292837&app_id=mdk923idkf&random=289192&compensation=50&sign=IDKNFLK392038KDS932K

返回示例

{
“code”: 0
}

31.设置图像对比度

描述

该接口将设置图像对比度为目标值。

请求地址

https://192.168.0.1/openapi/config/ set_contrast ,192.168.0.1需要替换成实际的IPC地址。

请求参数

这里只列出接口的私有参数,公共参数见HTTP接口调用

参数名称类型描述是否必须实例
contrastint目标对比度值。Y50

响应参数

参数名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0见错误码的描述

请求示例

POST /openapi/config/set_contrast HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

timestamp=15930292837&app_id=mdk923idkf&random=289192&contrast=50&sign=IDKNFLK392038KDS932K

返回示例

{
“code”: 0
}

32.设置图像饱和度

描述

该接口将设置图像饱和度为目标值。

请求地址

https://192.168.0.1/openapi/config/ set_saturation ,192.168.0.1需要替换成实际的IPC地址。

请求参数

这里只列出接口的私有参数,公共参数见HTTP接口调用

参数名称类型描述是否必须实例
saturationint目标饱和度值。Y50

响应参数

参数名称 类型 描述
code int 返回码,表示操作的结果;
本接口返回码有:0见错误码的描述

请求示例

POST /openapi/config/set_saturation HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

timestamp=15930292837&app_id=mdk923idkf&random=289192&saturation=50&sign=IDKNFLK392038KDS932K

返回示例

{
“code”: 0
}

设备管理

1.激活设备

  • 描述

使用设备前调用此接口激活设备,使用前确保设备是联网的。

激活设备后会在SD卡中新建两个默认的人脸分组,名称分别为stranger和regular,如果在SD卡中有人脸分组的条件下激活,则会先删除所有的人脸分组,然后再新建默认库。

  • 请求地址

https://192.168.0.1/openapi/device/activate,192.168.0.1需要替换成实际的IPC地址

  • 请求参数
参数名称类型描述是否必须
app_idstring用户应用ID,公共参数Y
timestamplongunix格式时间戳,秒级Y
randomlong随机数,6-10位Y
snstring设备snY
signstring整个请求参数的签名Y

sign的生成参照1.5.4节签名规则,参与签名计算的签名秘钥使用激活码代替secret key进行计算。

假如需要传入的参数如下:

app_id: JO83UNV983U9OR
random: 289192
sn: FS101D8BS00106
timestamp: 1593029283

openapi激活码为12345678

则按照规则生成签名为

str1=”app_id=JO83UNV983U9OR&random=289192&sn=FS101D8BS00106&timestamp=1593029283″
str2 = str1 + “&key=12345678”
sign = MD5(str2).upper()

最终HTTP报文请求中所带参数为

app_id:JO83UNV983U9OR
random:289192
sn:FS101D8BS00106
timestamp:1593029283
sign:72CB1C1031D3BA103D2FA1A57E171C2D
  • 响应参数
字段名称类型描述
codeint返回码,表示操作的结果;
本接口返回码有 0、1、2、3、4、8、9、10、11,见错误码章节的描述
  • 请求示例

POST /openapi/device/activate HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded
app_id=JO83UNV983U9OR&random=289192&sn=FS101D8BS00106&timestamp=1593029283&sign=72CB1C1031D3BA103D2FA1A57E171C2D

  • 返回示例

{
    ‘code’:          0,
}

2.获取设备基本信息

  • 描述

使用此接口可以获取设备的基本信息。

  • 请求地址

https://192.168.0.1/openapi/device/getInfo,192.168.0.1需要替换成实际的IPC地址

  • 请求参数

此接口没有私有参数,公共参数见HTTP接口调用一章的公共参数一节描述

  • 响应参数
字段名称类型描述
codeint返回码,表示操作的结果;
本接口返回码有 0、1、2、3、5、7,见错误码章节的描述
snstring设备序列号
model_namestring设备型号
namestring设备名字
software_versionstring固件版本
hardware_versionstring硬件版本
ipstringIP地址
macstringMAC地址
  • 请求示例

POST /openapi/device/getInfo HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded
app_id=mdk923idkf&random=289192×tamp=15930292837&sign=IDKNFLK392038KDS932K&

  • 返回示例

{
‘code’:  0,

‘data’: {
‘sn’:   ‘SS101D8BS00083’,

‘model_name’:  ‘FS’,

‘name’:  ‘My FS’,

‘software_version’:   ‘1.1.0’,

‘hardware_version’:  ‘1.0.0’,

‘ip’:   ‘192.168.0.1’,

‘mac’: ’04:12:24:E3:45:12 ‘,
    }
}

3.恢复出厂设置

  • 描述

使用此接口可以使得设备恢复出厂设置。

  • 请求地址

https://192.168.0.1/openapi/device/reset,192.168.0.1需要替换成实际的IPC地址

  • 请求参数

此接口没有私有参数, 公共参数见HTTP接口调用一章的公共参数一节描述

  • 响应参数
字段名称类型描述
codeint返回码,表示操作的结果;
本接口返回码有 0、1、2、3、5、7,见错误码章节的描述
  • 请求示例

POST /openapi/device/reset HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded
app_id=mdk923idkf&random=289192×tamp=15930292837&sign=IDKNFLK392038KDS932K

  • 返回示例

{
    ‘code’:          0,

}

4.重启设备

  • 描述

使用此接口可以重启设备。

  • 请求地址

https://192.168.0.1/openapi/device/reboot,192.168.0.1需要替换成实际的IPC地址

  • 请求参数

此接口没有私有参数, 公共参数见HTTP接口调用一章的公共参数一节描述

  • 响应参数
字段名称类型描述
codeint返回码,表示操作的结果;
本接口返回码有 0、1、2、3、5、7,见错误码章节的描述
  • 请求示例

POST /openapi/device/reset HTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded
app_id=mdk923idkf&random=289192×tamp=15930292837&sign=IDKNFLK392038KDS932K

POST /openapi/device/rebootHTTP/1.1
Host: 192.168.0.1
Content-Type: application/x-www-form-urlencoded

  • 返回示例

{
    ‘code’:          0,

}

HTTP接口调用

1.公共参数

公共接口参数是指每次调用API都需要带上的参数。如下表所示。

参数名称 类型 描述 是否必须
app_id string 用户应用ID,公共参数 Y
timestamp long unix格式时间戳,秒级 Y
random long 随机数,6-10位 Y
sign string 整个请求参数的签名 Y

2.请求结构

服务地址

对于每一个API调用,都是通过URL来标志具体调用哪个功能接口的。

URL格式形如https://ip/openapi/apiType/action 。

各字段描述如下:

ip 对应IPC的IP地址
openapi 统一标识符,表示开放API
apiType API类别
action 表示对应的接口动作名称

通信协议

为了通信安全,通过HTTPS通道来请求调用API。

请求方法

目前只支持HTTPS POST方法来进行请求调用。报文Content-Type为application/x-www-form-urlencoded。 如有特殊情况,会在对应的API接口中描述。

请求参数

每一次请求调用都需要带上参数,参数分为公共参数(见公共参数一节描述)和对应接口的特定参数。

3.签名规则

每个HTTPS请求报文都需要带上签名,IPC设备会验证签名是否合格。

对于所有的接入开发者,数字店铺开放平台会分配以下内容:

  • app_id: 唯一标识接入身份 (如果是专用接口,暂时可以不提供app id)
  • secret_key: 该用户独有的签名校验

签名规则

  1. 参数必须包含random字段,为一个随机字符串,由数字和字母组成,长度范围为6-10位。
  2. 参数必须包含timestamp字段 ,为当前的unix timestamp,精度到秒级,10位数字, 格式可以参考https://tool.chinaz.com/tools/unixtime.aspx。
  3. 参数必须包含app_id字段。
  4. 首先对于所有的非空参数按照ASCII码顺序从小到大排序,将key-value键值对依此组成字符串。
  5. 在字符串尾部拼接该开发者独有的签名秘钥secret key值。
  6. 对字符串进行MD5签名,对生成的MD5签名转化为全大写。

验证

IPC收到请求后,根据同样的规则来验证签名是否正确,以此判断请求是否合法。

签名示例

假如需要传入的参数如下:

product_id: 389238
user_id: 29389
content: newproductmask
environment: test

则按照规则生成签名为

str1= “app_id=2039dds&content=newproductmask&environment=test&product_id=389238&random=289192&timestamp=1593029283&user_id=29389”
str2 = str1 + “&key=kdsofkdsnflke9382938k”
sign = MD5(str2).upper()

最终HTTP报文请求中所带参数为

app_id:2039dds
product_id: 389238
user_id: 29389
content: newproductmask
environment: test
sign: 6200690DDBBB9719749D4277B420E8C0
timestamp: 1593029283
random:289192

4.示例

请求示例

POST /openapi/config/setWifiConf HTTP/1.1
Host: 192.168.1.1
Content-Type: application/x-www-form-urlencoded

app_id=mdk923idkf&random=289192&timestamp=15930292837& sign=IDKNFLK392038KDS932K&ssid=sunmi_ipc&password=1234567890

返回结果示例

HTTP请求的返回结果为json格式的内容,下面是一个简单示例。

如下,code字段是一定会有的,表示处理结果。data字段因不同的API而不同,有的API有返回data字段,有的则没有。

{
    ‘code’:              0,
    ‘data’: {
        ‘ssid’:              ‘SUNMI_IPC’,
        ‘password’:         ‘1234567890’
  }
}

API调用方式

开放API接口的调用方式主要分为两种 ,分别为HTTPS同步调用和消息通道异步返回结果的方式。

HTTPS调用方式

API调用后同步返回结果的接口主要用此种方式调用。

具体见HTTP接口调用

IPC消息中心

由IPC主动推送的消息,可以通过消息推送或者消息通道来获取,这样能够保证消息的实时性。

具体见IPC消息中心

升级开发环境固件

1. 概述

本文指导用户通过线下手动的方式升级IPC摄像头的固件,用于在开发环境对接API和联调测试。

如果您的设备已经是运行在开发调试环境,则可以跳过以下章节。

2.获取升级固件

请务必从商米售前获取对应型号摄像头的升级固件 ,否则出现升级异常概不负责。

目前商米有的IPC摄像头有两款,分别是

  1. AI识客摄像机,英文名Face Sense Camera,简称FS,目前的型号是FM020。
  2. 智能看店摄像机,英文名Store Sense Camera,简称SS,目前的型号是FM010。

3.升级规则

  1. 不同机型之间系统固件不能互相升级,例如FS和SS之间不能升级,所以请务必根据自己的机型来获取对应的开发调试环境升级固件。
  2. 开发环境和正式环境的固件之间可以互升成功。但如果都是开发环境或者正式环境的固件,且待升级固件版本号与当前设备上的版本号完全一致,则不会升级,版本号不同才会升级,当前固件显示的版本号格式形如1.2.0
  3. 正常情况是升级到高版本的固件,如果出现异常也支持从高版本升级回到低版本。
  4. 固件本身有自己的签名机制和升级校验方法,所以请务必从商米处获取固件,切勿随便从第三方获取固件,否则升级失败或者存在升级变砖的风险。

4. 详细流程

4.1 拷贝固件到TF卡

  1. 将TF卡插入电脑,执行格式化操作,文件系统设置为exfat,卷标设置为SUNMI-XXXX(其中XXXX为摄像头MAC地址最后四位,摄像头MAC地址见机身背面标贴)。注:卷标SUNMI-XXXX中的-为英文半角符号,非中文全角符号;XXXX中的字母为大写。
  2. 进入TF卡目录,在根目录下新建firmware目录,将从商米处( 详见2. 获取开发环境固件 )获取到的开发环境的升级固件拷贝到新建的firmware目录下,并把固件重命名为ipc-up.bin

4.2 升级固件

  1. 将带有固件的TF卡重新插入摄像头的TF卡槽中。
  2. 重新上电摄像头。
  3. 等待1min左右,直到设备闪烁红灯,则说明正在升级固件。
  4. 升级需要一些时间,再耐心等待1min左右,直到重新亮绿灯说明设备开始重启,当设备再次闪烁绿灯或者亮蓝灯说明设备已经重启完毕。

4.3 重新进行首配

  1. 重启后, 长按设备上的Reset按键5秒以上进行恢复出厂设置。
  2. 恢复出厂重启后,使用开发环境的商米APP,按照《用户指南》手册中的软件配置指引完成摄像头的首次配置。
  3. 首配完成后,如果没有格式化TF卡,请使用开发环境的商米助手APP或登录开发环境的WEB服务网站https://store.uat.sunmi.com对TF进行格式化即可。
  4. 记得删除原来SD卡中的firmware/ipc-up.bin文件,避免不必要的意外升级。

设备

云接口

1 背景介绍

商米数字店铺(SUNMI Store)是商米提供的围绕商户店铺中物联网设备基础上的店铺管理系统。

商米数字店铺作为一个开放平台,支持与第三方SaaS厂商进行各种数据的对接,包括商品信息对接,交易信息对接,会员体系对接等。

2 接口规范

2.1 协议说明

对接的openAPI接口目前只开放HTTPS方式,所有的消息一律采用POST方式。

注:消息体大小不得超过1M,超过1M的请求,直接拒绝!

Content-Typeapplication/x-www-form-urlencoded
数据格式返回为JSON格式
字符编码UTF-8字符编码
签名算法MD5
签名规则参考2.2 签名规则


2.2 签名规则

参考《鉴权认证》文档

2.3 公共参数

参数名必填类型说明示例
app_idstring唯一标识接入身份,联系商米数字店铺提供 LMWWQVTW4QGCC
randomstring随机字符串,由数字和字母组成,长度范围为6-10位 5dsf6698
timestampint当前的unix timestamp,精度到秒级,10位数字 1581333970
signstring签名信息,详见3.2.2 2E7CED3164B6BBDB81145F3CBE204597



3 店铺设计规范

参考 《openAPI 商户店铺对接》文档

4 设备管理接口

4.1 接口描述

设备管理接口用来管理智能摄像机设备的基本属性,比如名称等。

4.2 接口列表

接口名称接口描述
/device/ipc/getList获取设备列表
/device/ipc/getListByCompany获取商铺下所有设备列表
/device/ipc/getInfo获取设备基本信息
/device/ipc/updateName修改设备名称
/device/ipc/bind绑定设备
/device/ipc/unbind解绑设备

4.3 接口详情

4.3.1 获取设备列表

接口描述:通过本接口调用,用户可以获取相关门店下所有设备列表。

请求链接:/device/ipc/getList

接口版本:v2.0

接口参数

参数名称是否必须类型说明 示例
sunmi_shop_no string 商米数字店铺平台唯一编号(v2.0之后为必填项) 560279010307
shop_idstring
店铺在SaaS体系下的唯一标识(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可) 10096

请求示例: 

  "method": "POST",
  "url": "https://store.uat.sunmi.com/openapi/device/ipc/getList",
  "headers": {
    "Content-Type": "application/x-www-form-urlencoded"
  },
  formData: {
    "sunmi_shop_no": "560279010307",
    "app_id": "LMWWQVTW4QGCC",
    "timestamp": 1581333970,
    "random": "5dsf6698",
    "sign": "5EA14F9445D72DDE113AA95B04797D29"
  }

返回值: 

{
    "data": {
        "total_count": 1,
        "ipc_list": [
            {
                "ipc_id": "549755805878",
                "ipc_sn": "C101P98200023",
                "ipc_name": "小松松大魔王",
                "model_name": "FM010",
                "software_version": "1.2.6",
                "check_version_time": 1566365781,
                "connect_time": 1565951330,
                "active_status": 0,
                "screenshot_url": "https://xxxxxxxx/IMG/IPC/e36654e8a95a9ad27b5bb585a0f7df50a0de0dd6e0aeaee47b4e34c4f4636f9a"
            }
        ]
    },
    "code": 0,  /* 其他错误参考错误列表 */
    "msg": "succeed"
}

返回字段描述:active_status

active_status 取值说明
0设备离线
1设备在线

错误码:

错误码说明
5000数据库错误
5013未查询到数据
5041请求中未找到shop_id参数

4.3.2 获取设备基本信息

接口描述:通过本接口调用,用户可以获取指定设备基本信息。

请求链接:/device/ipc/getInfo

接口版本:v2.0

接口参数

参数名称是否必须类型说明 示例
sunmi_shop_no string 商米数字店铺平台唯一编号(v2.0之后为必填项) 560279010307
shop_idstring 店铺在SaaS体系下的唯一标识(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可) 10096
ipc_idstring摄像机设备唯一ID 549755805878

请求示例 : 

  "method": "POST",
  "url": "https://store.uat.sunmi.com/openapi/device/ipc/getInfo",
  "headers": {
    "Content-Type": "application/x-www-form-urlencoded"
  },
  formData: {
    "sunmi_shop_no": "560279010307",
    "ipc_id": "549755805878",
    "app_id": "LMWWQVTW4QGCC",
    "timestamp": 1581333970,
    "random": "5dsf6698",
    "sign": "140E3195C0F00DB09457E015AA79D79B"
  }

返回值: 

{
    "data": {
        "ipc_id": "549755805878",
        "ipc_sn": "C101P98200023",
        "ipc_name": "小松松大魔王",
        "model_name": "FM010",
        "software_version": "1.2.6",
        "check_version_time": 1566365781,
        "connect_time": 1565951330,
        "active_status": 0,
        "screenshot_url": "https://xxxxxxxx/IMG/IPC/e36654e8a95a9ad27b5bb585a0f7df50a0de0dd6e0aeaee47b4e34c4f4636f9a"
    },
    "code": 0,  /* 其他错误参考错误列表 */
    "msg": "succeed"
}

返回字段描述:active_status

active_status 取值说明
0设备离线
1设备在线

错误码:

错误码说明
5000数据库错误
5013未找到数据
5041请求中未找到shop_id参数
5501ipc设备不存在

4.3.3 修改设备名称

接口描述:通过本接口调用,用户可以修改设备名称。

请求链接:/device/ipc/updateName

接口版本:v2.0

接口参数

参数名称是否必须类型说明示例
sunmi_shop_no string 商米数字店铺平台唯一编号(v2.0之后为必填项) 560279010307
shop_idstring 店铺在SaaS体系下的唯一标识(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可) 10096
ipc_idstring摄像机设备唯一ID549755805878
ipc_namestring修改的新设备名称示例设备

请求示例

  "method": "POST",
  "url": "https://store.uat.sunmi.com/openapi/device/ipc/updateName",
  "headers": {
    "Content-Type": "application/x-www-form-urlencoded"
  },
  formData: {
    "sunmi_shop_no": "560279010307",
    "ipc_id": "549755805878",
    "ipc_name": "示例设备",
    "app_id": "LMWWQVTW4QGCC",
    "timestamp": 1581333970,
    "random": "5dsf6698",
    "sign": "140E3195C0F00DB09457E015AA79D79B"
  }

返回值: 

{
    "code": 0,  /* 其他错误参考错误列表 */
    "msg": "succeed",
    "data": {}
}

错误码:

错误码说明
5000数据库错误
5011与设备通讯错误
5013未找到数据
5041请求中未找到shop_id参数
5501ipc设备不存在
5506数据库中未找到该ipc设备信息
5510设备未绑定

4.3.4 绑定设备

接口描述:通过本接口调用,用户可以绑定指定设备。

请求链接:/device/ipc/bind

接口版本:v2.0

接口参数

参数名称是否必须类型说明示例
sunmi_shop_no string 商米数字店铺平台唯一编号(v2.0之后为必填项) 560279010307
shop_idstring 店铺在SaaS体系下的唯一标识(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可) 10096
ipc_snstring摄像机设备SN号 C101D96U00034
macstring 摄像机设备mac地址0C25766F5705

请求示例:

  "method": "POST",
  "url": "https://store.uat.sunmi.com/openapi/device/ipc/bind",
  "headers": {
    "Content-Type": "application/x-www-form-urlencoded"
  },
  formData: {
    "sunmi_shop_no": "560279010307",
    "ipc_sn": "C201D8BS00089",
    "mac":"0C25766F5705",
    "app_id": "LMWWQVTW4QGCC",
    "timestamp": 1578972864,
    "random": "5dsf6698",
    "sign": "33C18A18282733A71F998BB5A5E4319D"
  }

返回示例:

{
    "data": {},
    "code": 0,/* 其他错误参考错误列表 */
    "msg": "succeed"
}

错误码:

错误码说明
5000数据库错误
5013未找到数据
5020无效参数
5041请求中未找到shop_id参数
5079无效mac地址
5501设备不存在
5509设备被绑定

4.3.5 解绑设备

接口描述:通过本接口调用,用户可以解绑指定设备。

请求链接:/device/ipc/unbind

接口版本:v2.0

接口参数

参数名称 是否必须类型说明示例
sunmi_shop_no string 商米数字店铺平台唯一编号(v2.0之后为必填项) 560279010307
shop_id string 店铺在SaaS体系下的唯一标识(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可) 10096
ipc_sn string 摄像机设备SN号(ipc_sn与ipc_id有其一即可)C101D96U00034
ipc_idstring 摄像机设备唯一ID(ipc_sn与ipc_id有其一即可) 549755805878

请求示例:

  "method": "POST",
  "url": "https://store.uat.sunmi.com/openapi/device/ipc/unbind",
  "headers": {
    "Content-Type": "application/x-www-form-urlencoded"
  },
  formData: {
    "sunmi_shop_no": "560279010307",
    "ipc_sn": "C201D8BS00089",
    "ipc_id":"549755805878",
    "app_id": "LMWWQVTW4QGCC",
    "timestamp": 1578972864,
    "random": "5dsf6698",
    "sign": "33C18A18282733A71F998BB5A5E4319D"
  }

返回示例:

{
    "data": {},
    "code": 0,/* 其他错误参考错误列表 */
    "msg": "succeed"
}

错误码:

错误码说明
5000 数据库错误
5013 未查询到数据
5020 无效参数
5041 请求中未找到shop_id参数
5501 设备不存在
5510 设备未绑定

4.3.6 获取商户下设备列表

接口描述:通过本接口调用,用户可以获取相关门店下所有设备列表。

请求链接:/device/ipc/getListByCompany

接口版本:v2.0

接口参数

参数名称是否必须类型说明 示例
sunmi_company_no string 商米数字商户唯一编号(v2.0之后为必填项) 560279010307

请求示例: 

  "method": "POST",
  "url": "https://store.uat.sunmi.com/openapi/device/ipc/getListByCompany",
  "headers": {
    "Content-Type": "application/x-www-form-urlencoded"
  },
  formData: {
    "sunmi_company_no": "560279010307",
    "app_id": "LMWWQVTW4QGCC",
    "timestamp": 1581333970,
    "random": "5dsf6698",
    "sign": "5EA14F9445D72DDE113AA95B04797D29"
  }

返回值: 

{
    "data": {
        "total_count": 1,
        "ipc_list": [
            {
                "ipc_id": "549755811632",
                "ipc_sn": "C101E96500011",
                "ipc_name": "My Camera",
                "model_name": "FM010",
                "software_version": "1.0.0",
                "active_status": 1
            }
        ]
    },
    "code": 0,  /* 其他错误参考错误列表 */
    "msg": "succeed"
}

返回字段描述:active_status

active_status 取值说明
0设备离线
1设备在线

错误码:

错误码说明
5000数据库错误
5013未查询到数据

5 人脸分组管理接口

5.1 接口描述

人脸管理接口是用来管理与人脸相关的接口,商米数字店铺会在云上保存相关已授权数据和配置,并将需要的数据同步给店内智能摄像机设备。

5.2 接口列表

接口名称接口描述
/face/group/getList获取人脸分组列表
/face/group/getInfo获取指定人脸分组信息
/face/group/create添加人脸分组
/face/group/update修改指定人脸分组
/face/group/delete删除指定人脸分组
/face/group/getFaceList获取指定人脸分组内的人脸列表
/face/getInfo获取指定人脸的详细信息
/face/add向指定人脸分组添加人脸信息
/face/update修改指定人脸的属性信息
/face/updatePicture修改指定人脸图片的属性信息
/face/delete从指定人脸分组中删除人脸信息
/face/group/move将指定人脸在人脸分组中迁移
/face/group/updateMoveStrategy修改生客分组移组条件

5.3 接口详情

5.3.1 获取人脸分组列表

接口描述:通过本接口调用,用户可以获得人脸分组列表。

请求链接:/face/group/getList

接口版本:v2.0

接口参数

参数名称是否必须类型说明示例
sunmi_shop_no string 商米数字店铺平台唯一编号(v2.0之后为必填项 )560279010307
shop_idstring 店铺在SaaS体系下的唯一标识(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可) 10096

请求示例:  

  "method": "POST",
  "url": "https://store.uat.sunmi.com/openapi/face/group/getList",
  "headers": {
    "Content-Type": "application/x-www-form-urlencoded"
  },
  formData: {
    "sunmi_shop_no": "560279010307",
    "app_id": "LMWWQVTW4QGCC",
    "timestamp": 1581383983,
    "random": "5dsf6698",
    "sign": "33C18A18282733A71F998BB5A5E4319D"
  }

返回值: 

{
    "data": {
        "group_list": [
            {
                "group_id": "578968814328",
                "type": 1,
                "count": 0,
                "capacity": 1000,
                "last_modified_time": 0,
                "group_name": "stranger",
                "description": "",
                "customer_key1": "",
                "customer_key2": "",
                "customer_key3": "",
                "customer_key4": "",
                "customer_key5": ""
            },
            {
                "group_id": "578968814329",
                "type": 2,
                "count": 0,
                "capacity": 1000,
                "last_modified_time": 0,
                "group_name": "regular",
                "description": "",
                "customer_key1": "",
                "customer_key2": "",
                "customer_key3": "",
                "customer_key4": "",
                "customer_key5": ""
            },
            {
                "group_id": "578968814330",
                "type": 3,
                "count": 0,
                "capacity": 1000,
                "last_modified_time": 0,
                "group_name": "employee",
                "description": "",
                "customer_key1": "",
                "customer_key2": "",
                "customer_key3": "",
                "customer_key4": "",
                "customer_key5": ""
            },
            {
                "group_id": "578968817934",
                "type": 5,
                "count": 0,
                "capacity": 1000,
                "last_modified_time": 0,
                "group_name": "YiliuTest",
                "description": "",
                "customer_key1": "",
                "customer_key2": "",
                "customer_key3": "",
                "customer_key4": "",
                "customer_key5": ""
            }
        ]
    },
    "code": 0,  /* 其他错误参考错误列表 */
    "msg": "succeed"
}

返回字段描述:type

type 取值说明
1生客人脸库
2熟客人脸库
3店员人脸库
5自定义人脸库

错误码:

错误码说明
5000数据库错误
5013未找到数据
5041请求中未找到shop_id参数

5.3.2 获取指定人脸分组信息

接口描述:通过本接口调用,获取指定人脸分组信息。

请求链接:/face/group/getInfo

接口版本:v2.0

接口参数

参数名称是否必须类型说明示例
sunmi_shop_no string 商米数字店铺平台唯一编号(v2.0之后为必填项) 560279010307
shop_idstring 店铺在SaaS体系下的唯一标识(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可) 10096
group_idstring人脸分组唯一标识ID 578968814328

请求示例:  

  "method": "POST",
  "url": "https://store.uat.sunmi.com/openapi/face/group/getInfo",
  "headers": {
    "Content-Type": "application/x-www-form-urlencoded"
  },
  formData: {
    "sunmi_shop_no": "560279010307",
    "group_id": "578968814328",
    "app_id": "LMWWQVTW4QGCC",
    "timestamp": 1581383983,
    "random": "5dsf6698",
    "sign": "33C18A18282733A71F998BB5A5E4319D"
  }

返回值: 

{
    "data": {
        "group_id": "578968814328",
        "type": 1,
        "count": 0,
        "capacity": 1000,
        "last_modified_time": 0,
        "group_name": "stranger",
        "description": "",
        "customer_key1": "",
        "customer_key2": "",
        "customer_key3": "",
        "customer_key4": "",
        "customer_key5": ""
    },
    "code": 0,  /* 其他错误参考错误列表 */
    "msg": "succeed"
}

返回字段描述:type

type 取值说明
1生客人脸库
2熟客人脸库
3店员人脸库
5自定义人脸库

错误码:

错误码说明
5000数据库错误
5013未找到数据
5041请求中未找到shop_id参数

5.3.3 添加人脸分组

接口描述:通过本接口调用,用户可以 添加人脸分组。

请求链接:/face/group/create

接口版本:v2.0

接口参数

参数名称是否必须类型说明示例
sunmi_shop_no string 商米数字店铺平台唯一编号(v2.0之后为必填项) 560279010307
shop_idstring 店铺在SaaS体系下的唯一标识(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可) 10096
namestring人脸分组名称Mike
type是·int人脸分组类型 (1-生客, 2-熟客,3-店员 ,5-自定义,会员)5
capacityint人脸分组容量10000
descriptionstring人脸分组描述此分组用于对于金卡会员管理
customer_key1string人脸分组自定义扩展字段1 名称vip_level
customer_key2string人脸分组自定义扩展字段2 名称hobby
customer_key3string人脸分组自定义扩展字段3 名称foreigner
customer_key4string人脸分组自定义扩展字段4 名称figure
customer_key5string人脸分组自定义扩展字段5 名称hairstyle

请求示例:  

  "method": "POST",
  "url": "https://store.uat.sunmi.com/openapi/face/group/create",
  "headers": {
    "Content-Type": "application/x-www-form-urlencoded"
  },
  formData: {
    "sunmi_shop_no": "560279010307",
    "name": "Mike",
    "type": 5,
    "capacity": 1000,
    "app_id": "LMWWQVTW4QGCC",
    "timestamp": 1581383983,
    "random": "5dsf6698",
    "sign": "33C18A18282733A71F998BB5A5E4319D"
  }

返回值: 

{
    "code": 0,  /* 其他错误参考错误列表 */
    "msg": "succeed",
    "data": {}
}

错误码:

错误码说明
5000数据库错误
5013未找到数据
5518人脸库创建失败
5041请求中未找到shop_id参数
5520已经达到最大人脸分组数量或已经达到最大人脸容量
5523已经存在该人脸分组

5.3.4 修改指定人脸分组

接口描述:通过本接口调用,用户可以修改指定人脸分组。

请求链接:/face/group/update

接口版本:v2.0

接口参数

参数名称是否必须类型说明示例
sunmi_shop_no string 商米数字店铺平台唯一编号(v2.0之后为必填项) 100939070408
shop_idstring 店铺在SaaS体系下的唯一标识(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可) 15220
group_idstring人脸分组唯一标识ID578968817476
namestring人脸分组名称Mike
capacityint人脸分组容量10000
descriptionstring人脸分组描述 此分组用于对于金卡会员管理
customer_key1string人脸分组自定义扩展字段1 名称vip_level
customer_key2string人脸分组自定义扩展字段2 名称hobby
customer_key3string人脸分组自定义扩展字段3 名称foreigner
customer_key4string人脸分组自定义扩展字段4 名称figure
customer_key5string人脸分组自定义扩展字段5 名称hairstyle

请求示例:  

  "method": "POST",
  "url": "https://store.uat.sunmi.com/openapi/face/group/update",
  "headers": {
    "Content-Type": "application/x-www-form-urlencoded"
  },
  formData: {
    "sunmi_shop_no": "560279010307",
    "name": "Mike",
    "type": 5,
    "capacity": 1000,
    "app_id": "LMWWQVTW4QGCC",
    "timestamp": 1581383983,
    "random": "5dsf6698",
    "sign": "33C18A18282733A71F998BB5A5E4319D"
  }

返回值: 

{
    "code": 0,  /* 其他错误参考错误列表 */
    "msg": "succeed",
    "data": {}
}

错误码:

错误码说明
5000数据库错误
5013未找到数据
5041请求中未找到shop_id参数
5506未查询到该数据
5520已经达到最大人脸分组数量或已经达到最大人脸容量
5525默认人脸库不允许修改

5.3.5 删除指定人脸分组

接口描述:通过本接口调用,用户可以删除指定人脸分组。

请求链接:/face/group/delete

接口版本:v2.0

接口参数

参数名称是否必须类型说明示例
sunmi_shop_no string 商米数字店铺平台唯一编号(v2.0之后为必填项) 560279010307
shop_idstring 店铺在SaaS体系下的唯一标识(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可) 10096
group_idstring人脸分组唯一标识ID578968814328

请求示例:  

  "method": "POST",
  "url": "https://store.uat.sunmi.com/openapi/face/group/delete",
  "headers": {
    "Content-Type": "application/x-www-form-urlencoded"
  },
  formData: {
    "sunmi_shop_no": "560279010307",
    "group_id": "578968814328",
    "app_id": "LMWWQVTW4QGCC",
    "timestamp": 1581383983,
    "random": "5dsf6698",
    "sign": "33C18A18282733A71F998BB5A5E4319D"
  }

返回值: 

{
    "code": 0,  /* 其他错误参考错误列表 */
    "msg": "succeed",
    "data": {}
}

错误码:

错误码说明
5000数据库错误
5013未找到数据
5041请求中未找到shop_id参数
5506未查询到该数据
5524默认人脸库不允许被删除
5509非空人脸库

5.3.6 获取指定人脸分组内的人脸列表

接口描述:通过本接口调用,用户可以获取指定人脸分组内的人脸列表。

请求链接:/face/group/getFaceList

接口版本:v2.0

接口参数

参数名称是否必须类型说明示例
sunmi_shop_no string 商米数字店铺平台唯一编号(v2.0之后为必填项) 100939020409
shop_idstring 店铺在SaaS体系下的唯一标识(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可) 7948
group_idstring人脸分组唯一标识ID578968813726
page_num否 (默认1)int当前页码1
page_size否 (默认10)int当前页条目数量10

请求示例:  

  "method": "POST",
  "url": "https://store.uat.sunmi.com/openapi/face/group/getFaceList",
  "headers": {
    "Content-Type": "application/x-www-form-urlencoded"
  },
  formData: {
    "sunmi_shop_no": "560279010307",
    "group_id": "578968813726",
    "app_id": "LMWWQVTW4QGCC",
    "timestamp": 1581383983,
    "random": "5dsf6698",
    "sign": "33C18A18282733A71F998BB5A5E4319D"
  }

返回值: 

{
    "data": {
        "face_list": [
            {
                "face_id": "578968751459",
                "group_id": "578968813726",
                "group_name": "",
                "gender": 1,
                "age_range": 6,
                "arrival_count": 0,
                "create_time": 1579591542,
                "last_arrival_time": 0,
                "name": "lll",
                "customer_key1": "",
                "customer_key2": "",
                "customer_key3": "",
                "customer_key4": "",
                "customer_key5": ""
            }
        ],
        "total_num": 1
    },
    "code": 0,  /* 其他错误参考错误列表 */
    "msg": "succeed"
}

返回字段描述:gender

gender 取值说明
0未知
1
2

返回字段描述:age_range

age_range 取值说明
10~6岁
27~12岁
313~18岁
419~28岁
529~35岁
636~45岁
746~55岁
856~ 岁

错误码:

错误码说明
5000数据库错误
5506未查询到数据
5013未找到数据
5041请求中未找到shop_id参数

5.3.7 获取指定人脸的详细信息

接口描述:通过本接口调用,用户可以获取指定人脸的详细信息。

请求链接:/face/getInfo

接口版本:v2.0

接口参数

参数名称是否必须类型说明示例
sunmi_shop_no stirng 商米数字店铺平台唯一编号(v2.0之后为必填项) 100939020409
shop_idstring 店铺在SaaS体系下的唯一标识(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可) 7948
face_idstring人脸唯一标识ID578968751459

请求示例:  

  "method": "POST",
  "url": "https://store.uat.sunmi.com/openapi/face/getInfo",
  "headers": {
    "Content-Type": "application/x-www-form-urlencoded"
  },
  formData: {
    "sunmi_shop_no": "560279010307",
    "face_id": "578968751459",
    "app_id": "LMWWQVTW4QGCC",
    "timestamp": 1581383983,
    "random": "5dsf6698",
    "sign": "33C18A18282733A71F998BB5A5E4319D"
  }

返回值: 

{
    "data": {
        "age_range": 6,
        "arrival_count": 0,
        "create_time": 1579591542,
        "face_id": "578968751459",
        "gender": 1,
        "group_id": "578968813726",
        "group_name": "stranger",
        "last_arrival_time": 0,
        "name": "lll"
    },
    "code": 0,  /* 其他错误参考错误列表 */
    "msg": "succeed"
}

错误码:

错误码说明
5000数据库错误
5506未找到数据
5013未找到数据
5041请求中未找到shop_id参数

5.3.8 向指定人脸分组添加人脸信息

接口描述:通过本接口调用,用户可以向指定人脸分组添加人脸信息。

请求链接:/face/add

接口版本:v2.0

接口参数

Content-Type:application/form-data

参数名称是否必须类型说明示例
sunmi_shop_no string 商米数字店铺平台唯一编号(v2.0之后为必填项)100939020409
shop_idstring 店铺在SaaS体系下的唯一标识(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可) 7948
group_idstring人脸分组唯一标识ID578968813726
namestring人脸对应姓名Mike
picfile人脸对应图片文件(1M以下)face.png
genderint人脸对应性别 (1-男性, 2 女性)1
age_rangeint人脸对应年龄段4
customer_value1string人脸分组自定义扩展字段1 内容1
customer_value2string人脸分组自定义扩展字段2 内容sing
customer_value3string人脸分组自定义扩展字段3 内容americans
customer_value4string人脸分组自定义扩展字段4 内容fat
customer_value5string人脸分组自定义扩展字段5 内容short hair

请求示例

  "method": "POST",
  "url": "https://store.uat.sunmi.com/openapi/face/add",
  "headers": {
    "Content-Type": "application/x-www-form-urlencoded"
  },
  formData: {
    "sunmi_shop_no": "560279010307",
    "app_id": "LMWWQVTW4QGCC",
    "group_id": "578968813726",
    "name": "Mike",
    "pic": {
      "value": fs.createReadStream("/D:/image/face.png"),
      "options": {
        "filename": "/D:/image/face.png",
        "contentType": null
      }
    "timestamp": 1581383983,
    "random": "5dsf6698",
    "sign": "33C18A18282733A71F998BB5A5E4319D"
  }

返回值

{
    "code": 0, /* 其他错误参考错误列表 */
    "msg": "succeed",
    "data": {
        "face_id": "578968740430"
    }
}

错误码:

错误码说明
5000数据库错误
5013未找到数据
5041请求中未找到shop_id参数
5520已经达到最大人脸分组数量或已经达到最大人脸容量

备注: 人脸图片添加入人脸库后,商米数字店铺平台会进行相应处理,并生成对应的face_id。由于处理图片信息需要一定时间,所以目前采用异步消息通知处理结果。

具体请参考 《消息推送中心》文档

同步处理并返回方式正在开发中。

5.3.9 修改指定人脸的属性信息

接口描述:通过本接口调用,用户可以修改指定人脸的属性信息。

请求链接:/face/update

接口版本:v2.0

接口参数

参数名称是否必须类型说明示例
sunmi_shop_no string 商米数字店铺平台唯一编号(v2.0之后为必填项) 100939020409
shop_idstring 店铺在SaaS体系下的唯一标识(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可) 7948
group_idstring人脸分组唯一标识ID578968813726
face_idstring
人脸唯一标识ID578968751459
namestring人脸对应姓名Mike
genderint人脸对应性别 (1 – 男, 2 – 女)1
age_rangeint人脸对应年龄段4
customer_value1string人脸分组自定义扩展字段1 内容1
customer_value2string人脸分组自定义扩展字段2 内容sing
customer_value3string人脸分组自定义扩展字段3 内容americans
customer_value4string人脸分组自定义扩展字段4 内容fat
customer_value5string人脸分组自定义扩展字段5 内容short hair

字段描述:age_range

age_range 取值说明
10~6岁
27~12岁
313~18岁
419~28岁
529~35岁
636~45岁
746~55岁
856~ 岁

请求示例:  

  "method": "POST",
  "url": "https://store.uat.sunmi.com/openapi/face/update",
  "headers": {
    "Content-Type": "application/x-www-form-urlencoded"
  },
  formData: {
    "sunmi_shop_no": "560279010307",
    "app_id": "LMWWQVTW4QGCC",
    "group_id": "578968813726",
    "face_id": "578968751459",
    "timestamp": 1581383983,
    "random": "5dsf6698",
    "sign": "33C18A18282733A71F998BB5A5E4319D"
  }

返回值: 

{
    "code": 0,  /* 其他错误参考错误列表 */
    "msg": "succeed",
    "data": {}
}

错误码:

错误码说明
5000数据库错误
5013未找到数据
5041请求中未找到shop_id参数
5520已经达到最大人脸分组数量或已经达到最大人脸容量
5521指定人脸分组中不存在该人脸信息

5.3.10 从指定人脸分组中删除人脸信息

接口描述:通过本接口调用,用户可以从指定人脸分组中删除人脸信息。

请求链接:/face/delete

接口版本:v2.0

接口参数

参数名称是否必须类型说明示例
sunmi_shop_no string 商米数字店铺平台唯一编号(v2.0之后为必填项) 100939020409
shop_idstring 店铺在SaaS体系下的唯一标识(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可) 7948
group_idstring人脸分组唯一标识ID578968813726
face_id_listarray[string]人脸唯一标识ID[578968751459]

请求示例:  

  "method": "POST",
  "url": "https://store.uat.sunmi.com/openapi/face/delete",
  "headers": {
    "Content-Type": "application/x-www-form-urlencoded"
  },
  formData: {
    "sunmi_shop_no": "560279010307",
    "app_id": "LMWWQVTW4QGCC",
    "group_id": "578968813726",
    "face_id_list": ["578968751459"],
    "timestamp": 1581383983,
    "random": "5dsf6698",
    "sign": "33C18A18282733A71F998BB5A5E4319D"
  }

返回值: 

{
    "code": 0,  /* 其他错误参考错误列表 */
    "msg": "succeed",
    "data": {}
}

错误码:

错误码说明
5000数据库错误
5013未找到数据
5041请求中未找到shop_id参数

5.3.11 将指定人脸在人脸分组中迁移

接口描述:通过本接口调用,用户可以将指定人脸在人脸分组中迁移。

请求链接:/face/group/move

接口版本:v2.0

接口参数

参数名称是否必须类型说明示例
sunmi_shop_no string 商米数字店铺平台唯一编号(v2.0之后为必填项) 100939020409
shop_idstring 店铺在SaaS体系下的唯一标识(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可) 7948
source_group_idstring原始人脸分组唯一标识ID578968813726
target_group_idstring目标人脸分组唯一标识ID578968813727
face_id_listarray[string]需要迁移的人脸ID数组[578968751459]

请求示例:  

  "method": "POST",
  "url": "https://store.uat.sunmi.com/openapi/face/group/move",
  "headers": {
    "Content-Type": "application/x-www-form-urlencoded"
  },
  formData: {
    "sunmi_shop_no": "560279010307",
    "app_id": "LMWWQVTW4QGCC",
    "source_group_id": "578968813726",
    "target_group_id": "578968813727",
    "face_id_list": ["578968751459"],
    "timestamp": 1581383983,
    "random": "5dsf6698",
    "sign": "33C18A18282733A71F998BB5A5E4319D"
  }

返回值: 

{
    "code": 0,  /* 其他错误参考错误列表 */
    "msg": "succeed",
    "data": {}
}

错误码:

错误码说明
5000数据库错误
5013未找到数据
5041请求中未找到shop_id参数
5520已经达到最大人脸分组数量或已经达到最大人脸容量
5521指定人脸分组中不存在该人脸信息
5522人脸库不存在

5.3.12 修改生客分组移组条件

接口描述:通过本接口调用,用户可以修改生客库移库条件。

请求链接:/face/group/updateMoveStrategy

接口版本:v2.0

接口参数

参数名称是否必须类型说明示例
sunmi_shop_no string 商米数字店铺平台唯一编号(v2.0之后为必填项) 100939020409
shop_idstring 店铺在SaaS体系下的唯一标识(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可) 7948
target_group_idstring目标人脸分组唯一标识ID578968813727
thresholdint达到生客移库条件的生客出现次数4
periodint达到生客移库条件的计数周期,以秒为单位604800

请求示例

  "method": "POST",
  "url": "https://store.uat.sunmi.com/openapi/face/group/updateMoveStrategy",
  "headers": {
    "Content-Type": "application/x-www-form-urlencoded"
  },
  formData: {
    "sunmi_shop_no": "560279010307",
    "app_id": "LMWWQVTW4QGCC",
    "target_group_id": "578968813727",
    "threshold": 4,
    "period": 604800,
    "timestamp": 1581383983,
    "random": "5dsf6698",
    "sign": "33C18A18282733A71F998BB5A5E4319D"
  }

返回值

{
    "code": 0,  /* 其他错误参考错误列表 */
    "msg": "succeed",
    "data": {}
}

错误码:

错误码说明
5000数据库错误
5013未找到数据
5041请求中未找到shop_id参数
5506未查询到该数据
5520已经达到最大人脸分组数量或已经达到最大人脸容量
5525默认人脸分组的信息无法修改

6 人流统计接口

6.1 接口描述

人流统计接口是用来查询智能摄像机所监控和存储的人流信息和历史记录。目前分为三种统计维度:历史人流统计信息(T+1),当日人流统计信息(T+0),实时人流信息。

其中T+1和T+0的统计信息由HTTP接口提供,SaaS合作方可以通过发起请求获得结果,当日统计信息更新频率为15s内,实时人流信息通过消息推送获取,具体参考 《消息推送中心》文档

6.2 接口列表

接口名称接口描述
/passengerFlow/stat/today/getLatest获取当日实时人流量(实时总人流量)
/passengerFlow/stat/today/groupByTag获取当日人流统计信息(按照年龄以及生熟客人脸分组)
/passengerFlow/stat/today/groupByGender获取当日人流统计信息(按照年龄以及性别分组)
/passengerFlow/stat/today/getTrendByHour获取当日人流变化趋势(人流总数,时间粒度为小时)
/passengerFlow/stat/history/groupByTag获取历史人流统计信息(人流总数/生熟客/会员)
/passengerFlow/stat/history/groupByGender获取历史客群详情(年龄以及性别)
/passengerFlow/stat/history/getTrendByHour获取历史人流变化趋势(人流总数/生熟客,时间粒度为小时)
/passengerFlow/stat/history/getTrendByDay获取历史人流变化趋势(人流总数/生熟客,时间粒度为天)
/passengerFlow/stat/history/getTrendByWeek获取历史人流变化趋势(人流总数/生熟客,时间粒度为周)(开发中)
/passengerFlow/stat/history/getTrendByMonth获取历史人流变化趋势(人流总数/生熟客,时间粒度为月)(开发中)
/passengerFlow/stat/history/person/frequency/getList 获取顾客到店频率分布统计数据

6.3 接口详情

6.3.1 获取当日实时人流量

接口描述:通过本接口调用,用户可以获取当日的人流统计。

请求链接:/passengerFlow/stat/today/getLatest

接口版本:v2.0

接口参数

参数名称是否必须类型说明示例
sunmi_shop_no string 商米数字店铺平台唯一编号(v2.0之后为必填项) 100939020409
shop_idstring 店铺在SaaS体系下的唯一标识(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可) 7948

请求示例

  "method": "POST",
  "url": "https://store.uat.sunmi.com/openapi/passengerFlow/stat/today/getLatest",
  "headers": {
    "Content-Type": "application/x-www-form-urlencoded"
  },
  formData: {
    "sunmi_shop_no": "560279010307",
    "app_id": "LMWWQVTW4QGCC",
    "timestamp": 1581383983,
    "random": "5dsf6698",
    "sign": "33C18A18282733A71F998BB5A5E4319D"
  }

返回值: 

{
    "code": 0, /* 其他错误参考错误列表 */
    "msg": "succeed",
    "data": {
	"count": "123", /* 已捕捉到有效人脸数量(即将废弃) */
        "total_count": 123, /* 已捕捉到有效人脸数量 */
        "unexposed_count": 0, /* 未捕捉到有效人脸数量 */
        "pass_count": 110 /* 过店客流数量 */
    }
}

错误码:

错误码说明
5000数据库错误
5013未找到数据
5041请求中未找到shop_id参数

6.3.2 获取当日人流统计信息(按照生熟客人脸分组以及年龄范围)

接口描述:通过本接口调用,用户可以获取当日各个年龄段生熟客人流统计

请求链接:/passengerFlow/stat/today/groupByTag

接口版本:v2.0

接口参数

参数名称是否必须类型说明示例
sunmi_shop_no string 商米数字店铺平台唯一编号(v2.0之后为必填项) 100939020409
shop_idstring 店铺在SaaS体系下的唯一标识(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可) 7948

请求示例:  

  "method": "POST",
  "url": "https://store.uat.sunmi.com/openapi/passengerFlow/stat/today/groupByTag",
  "headers": {
    "Content-Type": "application/x-www-form-urlencoded"
  },
  formData: {
    "sunmi_shop_no": "560279010307",
    "app_id": "LMWWQVTW4QGCC",
    "timestamp": 1581383983,
    "random": "5dsf6698",
    "sign": "33C18A18282733A71F998BB5A5E4319D"
  }

返回值: 

{
    "data": {
        "count_list": [
            {
                "age_range": 1,
                "stranger_count": 0, /* 生客数量 */ 
                "regular_count": 0, /* 熟客数量 */ 
                "member_count": 0  /* 会员数量 */ 
            },
            {
                "age_range": 2,
                "stranger_count": 0,
                "regular_count": 0,
                "member_count": 0
            },
            {
                "age_range": 3,
                "stranger_count": 0,
                "regular_count": 0,
                "member_count": 0
            },
            {
                "age_range": 4,
                "stranger_count": 0,
                "regular_count": 0,
                "member_count": 0
            },
            {
                "age_range": 5,
                "stranger_count": 0,
                "regular_count": 0,
                "member_count": 0
            },
            {
                "age_range": 6,
                "stranger_count": 0,
                "regular_count": 0,
                "member_count": 0
            },
            {
                "age_range": 7,
                "stranger_count": 0,
                "regular_count": 0,
                "member_count": 0
            },
            {
                "age_range": 8,
                "stranger_count": 0,
                "regular_count": 0,
                "member_count": 0
            }
        ]
    },
    "code": 0,  /* 其他错误参考错误列表 */
    "msg": "succeed"
}

字段描述:age_range

age_range 取值说明
10~6岁
27~12岁
313~18岁
419~28岁
529~35岁
636~45岁
746~55岁
856~ 岁

错误码:

错误码说明
5000数据库错误
5013未找到数据
5041请求中未找到shop_id参数

6.3.3 获取当日人流统计信息(按照性别年龄)

请求链接:/passengerFlow/stat/today/groupByGender

接口描述:通过本接口调用,用户可以获取当日各个年龄段不同性别的人流统计

接口版本:v2.0

接口参数

参数名称是否必须类型说明示例
sunmi_shop_no string 商米数字店铺平台唯一编号(v2.0之后为必填项) 100939020409
shop_idstring 店铺在SaaS体系下的唯一标识(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可) 7948

请求示例

  "method": "POST",
  "url": "https://store.uat.sunmi.com/openapi/passengerFlow/stat/today/groupByGender",
  "headers": {
    "Content-Type": "application/x-www-form-urlencoded"
  },
  formData: {
    "sunmi_shop_no": "560279010307",
    "app_id": "LMWWQVTW4QGCC",
    "timestamp": 1581383983,
    "random": "5dsf6698",
    "sign": "33C18A18282733A71F998BB5A5E4319D"
  }

返回值: 

{
    "data": {
        "count_list": [
            {
                "age_range": 1,
                "male_count": 0, /* 男性总数  */
                "male_regular_count": 0, /* 男性熟客数量 */
                "male_member_count": 0, /* 男性会员数量 */
                "female_count": 0, /* 女性总数  */
                "female_regular_count": 0, /* 女性熟客数量 */
                "female_member_count": 0 /* 女性会员数量  */
            },
            {
                "age_range": 2,
                "male_count": 0,
                "male_regular_count": 0,
                "male_member_count": 0,
                "female_count": 0,
                "female_regular_count": 0,
                "female_member_count": 0
            },
            {
                "age_range": 3,
                "male_count": 0,
                "male_regular_count": 0,
                "male_member_count": 0,
                "female_count": 0,
                "female_regular_count": 0,
                "female_member_count": 0
            },
            {
                "age_range": 4,
                "male_count": 0,
                "male_regular_count": 0,
                "male_member_count": 0,
                "female_count": 0,
                "female_regular_count": 0,
                "female_member_count": 0
            },
            {
                "age_range": 5,
                "male_count": 0,
                "male_regular_count": 0,
                "male_member_count": 0,
                "female_count": 0,
                "female_regular_count": 0,
                "female_member_count": 0
            },
            {
                "age_range": 6,
                "male_count": 0,
                "male_regular_count": 0,
                "male_member_count": 0,
                "female_count": 0,
                "female_regular_count": 0,
                "female_member_count": 0
            },
            {
                "age_range": 7,
                "male_count": 0,
                "male_regular_count": 0,
                "male_member_count": 0,
                "female_count": 0,
                "female_regular_count": 0,
                "female_member_count": 0
            },
            {
                "age_range": 8,
                "male_count": 0,
                "male_regular_count": 0,
                "male_member_count": 0,
                "female_count": 0,
                "female_regular_count": 0,
                "female_member_count": 0
            }
        ]
    },
    "code": 0,  /* 其他错误参考错误列表 */
    "msg": "succeed"
}

字段描述:age_range

age_range 取值说明
10~6岁
27~12岁
313~18岁
419~28岁
529~35岁
636~45岁
746~55岁
856~ 岁

错误码:

错误码说明
5000数据库错误
5013未找到数据
5041请求中未找到shop_id参数

6.3.4 获取当日人流变化趋势(人流总数,时间粒度为小时)

请求链接:/passengerFlow/stat/today/getTrendByHour

接口描述:通过本接口调用,用户可以获取当日各个时间段的人流统计

接口版本:v2.0

接口参数

参数名称是否必须类型说明示例
sunmi_shop_no string 商米数字店铺平台唯一编号(v2.0之后为必填项) 100939020409
shop_idstring 店铺在SaaS体系下的唯一标识(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可)7948

请求示例:  

  "method": "POST",
  "url": "https://store.uat.sunmi.com/openapi/passengerFlow/stat/today/getTrendByHour",
  "headers": {
    "Content-Type": "application/x-www-form-urlencoded"
  },
  formData: {
    "sunmi_shop_no": "560279010307",
    "app_id": "LMWWQVTW4QGCC",
    "timestamp": 1581383983,
    "random": "5dsf6698",
    "sign": "33C18A18282733A71F998BB5A5E4319D"
  }

返回值: 

{
    "data": {
        "count_list": [
            {
                "time": "2020-02-11 00:00",
                "total_count": 0, /* 已捕捉到有效人脸数量 */
                "pass_count": 110, /* 过店客流数量 */
                "unexposed_count": 0 /* 未捕捉到有效人脸数量 */
            },
            {
                "time": "2020-02-11 01:00",
                "total_count": 0,
                "pass_count": 110,
                "unexposed_count": 0
            },
            {
                "time": "2020-02-11 02:00",
                "total_count": 0,
                "pass_count": 110,
                "unexposed_count": 0
            },
            {
                "time": "2020-02-11 03:00",
                "total_count": 0,
                "pass_count": 110,
                "unexposed_count": 0
            },
            {
                "time": "2020-02-11 04:00",
                "total_count": 0,
                "unexposed_count": 0
            },
            {
                "time": "2020-02-11 05:00",
                "total_count": 0,
                "pass_count": 110,
                "unexposed_count": 0
            },
            {
                "time": "2020-02-11 06:00",
                "total_count": 0,
                "pass_count": 110,
                "unexposed_count": 0
            },
            {
                "time": "2020-02-11 07:00",
                "total_count": 0,
                "pass_count": 110,
                "unexposed_count": 0
            },
            {
                "time": "2020-02-11 08:00",
                "total_count": 0,
                "pass_count": 110,
                "unexposed_count": 0
            },
            {
                "time": "2020-02-11 09:00",
                "total_count": 0,
                "pass_count": 110,
                "unexposed_count": 0
            },
            {
                "time": "2020-02-11 10:00",
                "total_count": 0,
                "pass_count": 110,
                "unexposed_count": 0
            },
            {
                "time": "2020-02-11 11:00",
                "total_count": 0,
                "pass_count": 110,
                "unexposed_count": 0
            },
            {
                "time": "2020-02-11 12:00",
                "total_count": 0,
                "pass_count": 110,
                "unexposed_count": 0
            },
            {
                "time": "2020-02-11 13:00",
                "total_count": 0,
                "pass_count": 110,
                "unexposed_count": 0
            },
            {
                "time": "2020-02-11 14:00",
                "total_count": 0,
                "pass_count": 110,
                "unexposed_count": 0
            },
            {
                "time": "2020-02-11 15:00",
                "total_count": 0,
                "pass_count": 110,
                "unexposed_count": 0
            },
            {
                "time": "2020-02-11 16:00",
                "total_count": 0,
                "pass_count": 110,
                "unexposed_count": 0
            }
        ]
    },
    "code": 0, /* 其他错误参考错误列表 */
    "msg": "succeed",
}

字段描述:age_range

age_range 取值说明
10~6岁
27~12岁
313~18岁
419~28岁
529~35岁
636~45岁
746~55岁
856~ 岁

错误码:

错误码说明
5000数据库错误
5013未找到数据
5041请求中未找到shop_id参数

6.3.5 获取历史人流统计信息(总数/生熟客/会员)

接口描述:通过本接口调用,用户可以获取历史数据中三个主要人脸分组的人流统计

请求链接:/passengerFlow/stat/history/groupByTag

接口版本:v2.0

接口参数

参数名称是否必须类型说明示例
sunmi_shop_no string 商米数字店铺平台唯一编号(v2.0之后为必填项) 100939020409
shop_idstring 店铺在SaaS体系下的唯一标识(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可) 7948
start_timestring筛选开始时间 “YYYY-MM-DD” (如果需要查询某一天,开始和结束时间相同)2020-01-01
end_timestring筛选结束时间 “YYYY-MM-DD” (如果需要查询某一天,开始和结束时间相同)2020-01-16

备注:

每次接口调用, 开始时间和结束时间的区间限制为30天

请求示例:  

  "method": "POST",
  "url": "https://store.uat.sunmi.com/openapi/passengerFlow/stat/history/groupByTag",
  "headers": {
    "Content-Type": "application/x-www-form-urlencoded"
  },
  formData: {
    "sunmi_shop_no": "560279010307",
    "app_id": "LMWWQVTW4QGCC",
    "start_time": "2020-01-01",
    "end_time": "2020-01-16",
    "timestamp": 1581383983,
    "random": "5dsf6698",
    "sign": "33C18A18282733A71F998BB5A5E4319D"
  }

返回值: 

{
    "data": {
        "total_count": 0,   /* 已捕捉到有效人脸数量(人次) */
        "regular_count": 0,   /* 熟客数量(人次) */
        "stranger_count": 0,   /* 生客数量(人次) */
        "member_count": 0,   /* 会员数量(人次)  */
        "uniq_total_count": 0,   /* 已捕捉到有效人脸数量(去重) */
        "uniq_regular_count": 0,   /* 熟客数量(去重) */
        "uniq_stranger_count": 0,   /* 生客数量(去重) */
        "uniq_member_count": 0,   /* 会员数量(去重) */
        "pass_count": 110,   /* 过店客流数量*/
        "unexposed_count": 0 /* 未捕捉到有效人脸数量 */
    },
    "code": 0,   /* 其他错误参考错误列表 */
    "msg": "succeed"
}

错误码:

错误码说明
5000数据库错误
5013未找到数据
5041请求中未找到shop_id参数

6.3.6 获取历史客群详情(按照年龄性别) 

请求链接:/passengerFlow/stat/history/groupByGender

接口描述:通过本接口调用,用户可以获取当日各个年龄段不同性别的人流统计

接口版本:v2.0

接口参数

参数名称是否必须类型说明示例
sunmi_shop_no string 商米数字店铺平台唯一编号(v2.0之后为必填项) 100939020409
shop_idstring 店铺在SaaS体系下的唯一标识(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可) 7948
start_timestring筛选开始时间 “YYYY-MM-DD” (如果需要查询某一天,开始和结束时间相同) 2020-01-01
end_time string筛选结束时间 “YYYY-MM-DD” (如果需要查询某一天,开始和结束时间相同) 2020-01-01

备注:

每次接口调用, 开始时间和结束时间的区间限制为30天

请求示例:  

  "method": "POST",
  "url": "https://store.uat.sunmi.com/openapi/passengerFlow/stat/history/groupByGender",
  "headers": {
    "Content-Type": "application/x-www-form-urlencoded"
  },
  formData: {
    "sunmi_shop_no": "560279010307",
    "app_id": "LMWWQVTW4QGCC",
    "start_time": "2020-01-01",
    "end_time": "2020-01-01",
    "timestamp": 1581383983,
    "random": "5dsf6698",
    "sign": "33C18A18282733A71F998BB5A5E4319D"
  }

返回值: 

{
    "data": {
        "count_list": [
            {
                "age_range": 1,
                "male_count": 0, /* 男性总数(人次)  */
                "male_regular_count": 0, /* 男性熟客数量(人次) */
                "male_member_count": 0, /* 男性会员数量(人次) */
                "female_count": 0, /* 女性总数(人次)  */
                "female_regular_count": 0, /* 女性熟客数量(人次) */
                "female_member_count": 0, /* 女性会员数量(人次)  */
                "uniq_male_count": 0, /* 男性总数(去重) */
                "uniq_male_regular_count": 0, /* 男性熟客数量(去重) */
                "uniq_male_member_count": 0, /* 男性会员数量(去重) */
                "uniq_female_count": 0, /* 女性总数(去重) */
                "uniq_female_regular_count": 0, /* 女性熟客数量(去重) */
                "uniq_female_member_count": 0 /* 女性会员数量(去重) */
            },
            {
                "age_range": 2,
                "male_count": 0,
                "male_regular_count": 0,
                "male_member_count": 0,
                "female_count": 0,
                "female_regular_count": 0,
                "female_member_count": 0,
                "uniq_male_count": 0,
                "uniq_male_regular_count": 0,
                "uniq_male_member_count": 0,
                "uniq_female_count": 0,
                "uniq_female_regular_count": 0,
                "uniq_female_member_count": 0
            },
            {
                "age_range": 3,
                "male_count": 0,
                "male_regular_count": 0,
                "male_member_count": 0,
                "female_count": 0,
                "female_regular_count": 0,
                "female_member_count": 0,
                "uniq_male_count": 0,
                "uniq_male_regular_count": 0,
                "uniq_male_member_count": 0,
                "uniq_female_count": 0,
                "uniq_female_regular_count": 0,
                "uniq_female_member_count": 0
            },
            {
                "age_range": 4,
                "male_count": 0,
                "male_regular_count": 0,
                "male_member_count": 0,
                "female_count": 0,
                "female_regular_count": 0,
                "female_member_count": 0,
                "uniq_male_count": 0,
                "uniq_male_regular_count": 0,
                "uniq_male_member_count": 0,
                "uniq_female_count": 0,
                "uniq_female_regular_count": 0,
                "uniq_female_member_count": 0
            },
            {
                "age_range": 5,
                "male_count": 0,
                "male_regular_count": 0,
                "male_member_count": 0,
                "female_count": 0,
                "female_regular_count": 0,
                "female_member_count": 0,
                "uniq_male_count": 0,
                "uniq_male_regular_count": 0,
                "uniq_male_member_count": 0,
                "uniq_female_count": 0,
                "uniq_female_regular_count": 0,
                "uniq_female_member_count": 0
            },
            {
                "age_range": 6,
                "male_count": 0,
                "male_regular_count": 0,
                "male_member_count": 0,
                "female_count": 0,
                "female_regular_count": 0,
                "female_member_count": 0,
                "uniq_male_count": 0,
                "uniq_male_regular_count": 0,
                "uniq_male_member_count": 0,
                "uniq_female_count": 0,
                "uniq_female_regular_count": 0,
                "uniq_female_member_count": 0
            },
            {
                "age_range": 7,
                "male_count": 0,
                "male_regular_count": 0,
                "male_member_count": 0,
                "female_count": 0,
                "female_regular_count": 0,
                "female_member_count": 0,
                "uniq_male_count": 0,
                "uniq_male_regular_count": 0,
                "uniq_male_member_count": 0,
                "uniq_female_count": 0,
                "uniq_female_regular_count": 0,
                "uniq_female_member_count": 0
            },
            {
                "age_range": 8,
                "male_count": 0,
                "male_regular_count": 0,
                "male_member_count": 0,
                "female_count": 0,
                "female_regular_count": 0,
                "female_member_count": 0,
                "uniq_male_count": 0,
                "uniq_male_regular_count": 0,
                "uniq_male_member_count": 0,
                "uniq_female_count": 0,
                "uniq_female_regular_count": 0,
                "uniq_female_member_count": 0
            }
        ]
    },
    "code": 0,  /* 其他错误参考错误列表 */
    "msg": "succeed"
}

字段描述:age_range

age_range 取值说明
10~6岁
27~12岁
313~18岁
419~28岁
529~35岁
636~45岁
746~55岁
856~ 岁

错误码:

错误码说明
5000数据库错误
5013未找到数据
5041请求中未找到shop_id参数

6.3.7 获取历史人流变化趋势(总数/生熟客,时间粒度为小时)

请求链接:/passengerFlow/stat/history/getTrendByHour

接口描述:通过本接口调用,用户可以获取一段时间内的人流变化趋势

接口版本:v2.0

接口参数

参数名称是否必须类型说明示例
sunmi_shop_no stirng 商米数字店铺平台唯一编号(v2.0之后为必填项) 100939020409
shop_idstring 店铺在SaaS体系下的唯一标识(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可)7948
start_timestring筛选开始时间 “YYYY-MM-DD” (如果需要查询某一天,开始和结束时间相同) 2020-01-01
end_time string筛选结束时间 “YYYY-MM-DD” (如果需要查询某一天,开始和结束时间相同) 2020-01-01

备注:

每次接口调用, 开始时间和结束时间的区间限制为24小时

请求示例:  

  "method": "POST",
  "url": "https://store.uat.sunmi.com/openapi/passengerFlow/stat/history/getTrendByHour",
  "headers": {
    "Content-Type": "application/x-www-form-urlencoded"
  },
  formData: {
    "sunmi_shop_no": "560279010307",
    "app_id": "LMWWQVTW4QGCC",
    "start_time": "2020-01-01",
    "end_time": "2020-01-01",
    "timestamp": 1581383983,
    "random": "5dsf6698",
    "sign": "33C18A18282733A71F998BB5A5E4319D"
  }

返回值: 

{
    "data": {
        "count_list": [
            {
                "time": "2019-12-01 0:00",
                "total_count": 0, /* 已捕捉到有效人脸数量(人次) */
                "regular_count": 0, /* 熟客数量(人次) */
                "stranger_count": 0, /* 生客数量(人次) */
                "member_count": 0, /* 会员数量(人次) */
                "uniq_total_count": 0, /* 已捕捉到有效人脸数量(去重)*/
                "uniq_regular_count": 0, /* 熟客数量(去重)*/
                "uniq_stranger_count": 0, /* 生客数量(去重)*/
                "uniq_member_count": 0, /* 会员数量(去重)*/
                "pass_count": 110,  /* 过店客流数量 */
                "unexposed_count": 0 /* 未捕捉到有效人脸数量 */
            },
            {
                "time": "2019-12-01 1:00",
                "total_count": 0,
                "regular_count": 0,
                "stranger_count": 0,
                "member_count": 0,
                "uniq_total_count": 0,
                "uniq_regular_count": 0,
                "uniq_stranger_count": 0,
                "uniq_member_count": 0,
                "pass_count": 110,
                "unexposed_count": 0
            },
            {
                "time": "2019-12-01 2:00",
                "total_count": 0,
                "regular_count": 0,
                "stranger_count": 0,
                "member_count": 0,
                "uniq_total_count": 0,
                "uniq_regular_count": 0,
                "uniq_stranger_count": 0,
                "uniq_member_count": 0,
                "pass_count": 110,
                "unexposed_count": 0
            },
            {
                "time": "2019-12-01 3:00",
                "total_count": 0,
                "regular_count": 0,
                "stranger_count": 0,
                "member_count": 0,
                "uniq_total_count": 0,
                "uniq_regular_count": 0,
                "uniq_stranger_count": 0,
                "uniq_member_count": 0,
                "pass_count": 110,
                "unexposed_count": 0
            },
            {
                "time": "2019-12-01 4:00",
                "total_count": 0,
                "regular_count": 0,
                "stranger_count": 0,
                "member_count": 0,
                "uniq_total_count": 0,
                "uniq_regular_count": 0,
                "uniq_stranger_count": 0,
                "uniq_member_count": 0,
                "pass_count": 110,
                "unexposed_count": 0
            },
            {
                "time": "2019-12-01 5:00",
                "total_count": 0,
                "regular_count": 0,
                "stranger_count": 0,
                "member_count": 0,
                "uniq_total_count": 0,
                "uniq_regular_count": 0,
                "uniq_stranger_count": 0,
                "uniq_member_count": 0,
                "pass_count": 110,
                "unexposed_count": 0
            },
            {
                "time": "2019-12-01 6:00",
                "total_count": 0,
                "regular_count": 0,
                "stranger_count": 0,
                "member_count": 0,
                "uniq_total_count": 0,
                "uniq_regular_count": 0,
                "uniq_stranger_count": 0,
                "uniq_member_count": 0,
                "pass_count": 110,
                "unexposed_count": 0
            },
            {
                "time": "2019-12-01 7:00",
                "total_count": 0,
                "regular_count": 0,
                "stranger_count": 0,
                "member_count": 0,
                "uniq_total_count": 0,
                "uniq_regular_count": 0,
                "uniq_stranger_count": 0,
                "uniq_member_count": 0,
                "pass_count": 110,
                "unexposed_count": 0
            },
            {
                "time": "2019-12-01 8:00",
                "total_count": 0,
                "regular_count": 0,
                "stranger_count": 0,
                "member_count": 0,
                "uniq_total_count": 0,
                "uniq_regular_count": 0,
                "uniq_stranger_count": 0,
                "uniq_member_count": 0,
                "pass_count": 110,
                "unexposed_count": 0
            },
            {
                "time": "2019-12-01 9:00",
                "total_count": 0,
                "regular_count": 0,
                "stranger_count": 0,
                "member_count": 0,
                "uniq_total_count": 0,
                "uniq_regular_count": 0,
                "uniq_stranger_count": 0,
                "uniq_member_count": 0,
                "pass_count": 110,
                "unexposed_count": 0
            },
            {
                "time": "2019-12-01 10:00",
                "total_count": 0,
                "regular_count": 0,
                "stranger_count": 0,
                "member_count": 0,
                "uniq_total_count": 0,
                "uniq_regular_count": 0,
                "uniq_stranger_count": 0,
                "uniq_member_count": 0,
                "pass_count": 110,
                "unexposed_count": 0
            },
            {
                "time": "2019-12-01 11:00",
                "total_count": 0,
                "regular_count": 0,
                "stranger_count": 0,
                "member_count": 0,
                "uniq_total_count": 0,
                "uniq_regular_count": 0,
                "uniq_stranger_count": 0,
                "uniq_member_count": 0,
                "pass_count": 110,
                "unexposed_count": 0
            },
            {
                "time": "2019-12-01 12:00",
                "total_count": 0,
                "regular_count": 0,
                "stranger_count": 0,
                "member_count": 0,
                "pass_count": 110,
                "unexposed_count": 0
            },
            {
                "time": "2019-12-01 13:00",
                "total_count": 0,
                "regular_count": 0,
                "stranger_count": 0,
                "member_count": 0,
                "uniq_total_count": 0,
                "uniq_regular_count": 0,
                "uniq_stranger_count": 0,
                "uniq_member_count": 0,
                "pass_count": 110,
                "unexposed_count": 0
            },
            {
                "time": "2019-12-01 14:00",
                "total_count": 0,
                "regular_count": 0,
                "stranger_count": 0,
                "member_count": 0,
                "pass_count": 110,
                "unexposed_count": 0
            },
            {
                "time": "2019-12-01 15:00",
                "total_count": 0,
                "regular_count": 0,
                "stranger_count": 0,
                "member_count": 0,
                "uniq_total_count": 0,
                "uniq_regular_count": 0,
                "uniq_stranger_count": 0,
                "uniq_member_count": 0,
                "pass_count": 110,
                "unexposed_count": 0
            },
            {
                "time": "2019-12-01 16:00",
                "total_count": 0,
                "regular_count": 0,
                "stranger_count": 0,
                "member_count": 0,
                "uniq_total_count": 0,
                "uniq_regular_count": 0,
                "uniq_stranger_count": 0,
                "uniq_member_count": 0,
                "pass_count": 110,
                "unexposed_count": 0
            },
            {
                "time": "2019-12-01 17:00",
                "total_count": 0,
                "regular_count": 0,
                "stranger_count": 0,
                "member_count": 0,
                "uniq_total_count": 0,
                "uniq_regular_count": 0,
                "uniq_stranger_count": 0,
                "uniq_member_count": 0,
                "pass_count": 110,
                "unexposed_count": 0
            },
            {
                "time": "2019-12-01 18:00",
                "total_count": 0,
                "regular_count": 0,
                "stranger_count": 0,
                "member_count": 0,
                "uniq_total_count": 0,
                "uniq_regular_count": 0,
                "uniq_stranger_count": 0,
                "uniq_member_count": 0,
                "pass_count": 110,
                "unexposed_count": 0
            },
            {
                "time": "2019-12-01 19:00",
                "total_count": 0,
                "regular_count": 0,
                "stranger_count": 0,
                "member_count": 0,
                "uniq_total_count": 0,
                "uniq_regular_count": 0,
                "uniq_stranger_count": 0,
                "uniq_member_count": 0,
                "pass_count": 110,
                "unexposed_count": 0
            },
            {
                "time": "2019-12-01 20:00",
                "total_count": 0,
                "regular_count": 0,
                "stranger_count": 0,
                "member_count": 0,
                "uniq_total_count": 0,
                "uniq_regular_count": 0,
                "uniq_stranger_count": 0,
                "uniq_member_count": 0,
                "pass_count": 110,
                "unexposed_count": 0
            },
            {
                "time": "2019-12-01 21:00",
                "total_count": 0,
                "regular_count": 0,
                "stranger_count": 0,
                "member_count": 0,
                "uniq_total_count": 0,
                "uniq_regular_count": 0,
                "uniq_stranger_count": 0,
                "uniq_member_count": 0,
                "pass_count": 110,
                "unexposed_count": 0
            },
            {
                "time": "2019-12-01 22:00",
                "total_count": 0,
                "regular_count": 0,
                "stranger_count": 0,
                "member_count": 0,
                "uniq_total_count": 0,
                "uniq_regular_count": 0,
                "uniq_stranger_count": 0,
                "uniq_member_count": 0,
                "pass_count": 110,
                "unexposed_count": 0
            },
            {
                "time": "2019-12-01 23:00",
                "total_count": 0,
                "regular_count": 0,
                "stranger_count": 0,
                "member_count": 0,
                "uniq_total_count": 0,
                "uniq_regular_count": 0,
                "uniq_stranger_count": 0,
                "uniq_member_count": 0,
                "pass_count": 110,
                "unexposed_count": 0
            }
        ]
    },
    "code": 0, /* 其他错误参考错误列表 */
    "msg": "succeed"
}

错误码:

错误码说明
5000数据库错误
5013未找到数据
5041请求中未找到shop_id参数

6.3.8 获取历史人流变化趋势(总数/生熟客,时间粒度为天)

请求链接:/passengerFlow/stat/history/getTrendByDay

接口描述:通过本接口调用,用户可以获取一段时间内的人流变化趋势

接口版本:v2.0

接口参数

参数名称是否必须类型说明示例
sunmi_shop_no string 商米数字店铺平台唯一编号(v2.0之后为必填项) 100939070408
shop_idstring 店铺在SaaS体系下的唯一标识(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可) 15220
start_timestring筛选开始时间 “YYYY-MM-DD” 2020-01-01
end_time string筛选结束时间 “YYYY-MM-DD” 2020-01-03

备注:

每次接口调用, 开始时间和结束时间的区间限制为30天

请求示例:  

  "method": "POST",
  "url": "https://store.uat.sunmi.com/openapi/passengerFlow/stat/history/getTrendByDay",
  "headers": {
    "Content-Type": "application/x-www-form-urlencoded"
  },
  formData: {
    "sunmi_shop_no": "560279010307",
    "app_id": "LMWWQVTW4QGCC",
    "start_time": "2020-01-01",
    "end_time": "2020-01-03",
    "timestamp": 1581383983,
    "random": "5dsf6698",
    "sign": "33C18A18282733A71F998BB5A5E4319D"
  }

返回值: 

{
    "data": {
        "count_list": [
            {
                "time": "2020-01-01",
                "total_count": 0, /* 已捕捉到有效人脸数量(人次) */
                "regular_count": 0, /* 熟客数量(人次) */
                "stranger_count": 0, /* 生客数量(人次) */
                "member_count": 0, /* 会员数量(人次) */
                "uniq_total_count": 0, /* 已捕捉到有效人脸数量(去重)*/
                "uniq_regular_count": 0, /* 熟客数量(去重)*/
                "uniq_stranger_count": 0, /* 生客数量(去重)*/
                "uniq_member_count": 0, /* 会员数量(去重)*/
                "pass_count": 110,  /* 过店客流数量 */
                "unexposed_count": 0 /* 未捕捉到有效人脸数量 */
            },
            {
                "time": "2020-01-02",
                "total_count": 0,
                "regular_count": 0,
                "stranger_count": 0,
                "member_count": 0,
                "uniq_total_count": 0,
                "uniq_regular_count": 0,
                "uniq_stranger_count": 0,
                "uniq_member_count": 0,
                "pass_count": 110,
                "unexposed_count": 0
            },
            {
                "time": "2020-01-03",
                "total_count": 0,
                "regular_count": 0,
                "stranger_count": 0,
                "member_count": 0,
                "uniq_total_count": 0,
                "uniq_regular_count": 0,
                "uniq_stranger_count": 0,
                "uniq_member_count": 0,
                "pass_count": 110,
                "unexposed_count": 0
            }
        ]
    },
    "code": 0, /* 其他错误参考错误列表 */
    "msg": "succeed"
}

错误码:

错误码说明
5000数据库错误
5013未找到数据
5041请求中未找到shop_id参数

6.3.9 获取历史人流变化趋势(总数/生熟客,时间粒度为周)(开发中)

请求链接:/passengerFlow/stat/history/getTrendByWeek

接口描述:通过本接口调用,用户可以获取一段时间内的人流变化趋势

接口参数

参数名称是否必须类型说明
shop_idstringSaaS对接店铺标识,SaaS厂商提供
start_timestring筛选开始时间 “YYYY-MM-DD”
end_time string筛选结束时间 “YYYY-MM-DD”

备注:

每次接口调用, 开始时间和结束时间的区间限制为12周

返回值: 

{
    "code": 0, /* 其他错误参考错误列表 */
    "msg": "succeed",
    "data": {
        "count_list": [
            {
                "time": "2019-09-11",
                "total_count": 0, /* 总数 */
                "regular_count": 0, /* 熟客数量 */
                "stranger_count": 0, /* 生客数量 */
                "member_count": 0 /* 会员数量 */
            },
            {
                "time": "2019-09-11",
                "total_count": 0,
                "regular_count": 0,
                "stranger_count": 0,
                "member_count": 0
            }
        ]
    }
}

错误码:

错误码说明
5000数据库错误
5013未找到数据
5041请求中未找到shop_id参数

6.3.10 获取历史人流变化趋势(总数/生熟客,时间粒度为月)(开发中)

请求链接:/passengerFlow/stat/history/getTrendByMonth

接口描述:通过本接口调用,用户可以获取一段时间内的人流变化趋势

接口参数

参数名称是否必须类型说明
shop_idstringSaaS对接店铺标识,SaaS厂商提供
start_timestring筛选开始时间 “YYYY-MM-DD”
end_time string筛选结束时间 “YYYY-MM-DD”

备注:

每次接口调用, 开始时间和结束时间的区间限制为12个月

返回值: 

{
    "code": 0, /* 其他错误参考错误列表 */
    "msg": "succeed",
    "data": {
        "count_list": [
            {
                "time": "2019-01",
                "total_count": 0, /* 总数 */
                "regular_count": 0, /* 熟客数量 */
                "stranger_count": 0, /* 生客数量 */
                "member_count": 0 /* 会员数量 */
            },
            {
                "time": "2019-12",
                "total_count": 0,
                "regular_count": 0,
                "stranger_count": 0,
                "member_count": 0
            }
        ]
    }
}

错误码:

错误码说明
5000数据库错误
5013未找到数据
5041请求中未找到shop_id参数

6.3.11 获取顾客到店频率分布统计数据

接口描述:通过本接口调用,用户可以获取顾客到店频率分布情况

请求链接: /passengerFlow/stat/history/person/frequency/getList

接口版本:v2.0

接口参数:

参数名称是否必须类型说明示例
sunmi_shop_no string 商米数字店铺平台唯一编号 560279010307
start_timestring 筛选开始时间 “YYYY-MM-DD” (如果需要查询某一天,开始和结束时间相同) 2020-01-01
end_timestring 筛选结束时间 “YYYY-MM-DD” (如果需要查询某一天,开始和结束时间相同,end_time日期需要小于当前日期) 2020-01-16
  • 每次接口调用, 开始时间和结束时间的区间限制为30天

请求示例:

  "method": "POST",
  "url": "https://store.uat.sunmi.com/openapi/passengerFlow/stat/history/person/frequency/getList",
  "headers": {
    "Content-Type": "application/x-www-form-urlencoded"
  },
  formData: {
    "sunmi_shop_no": "560279010307",
    "app_id": "LMWWQVTW4QGCC",
    "start_time": "2020-01-01",
    "end_time": "2020-01-16",
    "timestamp": 1581383983,
    "random": "5dsf6698",
    "sign": "33C18A18282733A71F998BB5A5E4319D"
  }

返回值:

{
	"code": 1,
	"msg": "",
	"data": {
		"frequency_list": [{
			"frequency": 1,            /*到店频次*/
			"stranger_uniq_count": 76, /*生客数量(去重)*/
			"regular_uniq_count": 4,   /*熟客数量(去重)*/
			"member_uniq_count": 0     /*会员数量(去重)*/
		}, {
			"frequency": 2,
			"stranger_uniq_count": 13,
			"regular_uniq_count": 2,
			"member_uniq_count": 0
		}, {
			"frequency": 3,
			"stranger_uniq_count": 5,
			"regular_uniq_count": 2,
			"member_uniq_count": 0
		}, {
			"frequency": 4,
			"stranger_uniq_count": 5,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 5,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 6,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 7,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 8,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 9,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 10,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 11,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 12,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 13,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 14,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 15,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 16,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 17,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 18,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 19,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 20,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 21,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 22,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 23,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 24,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 25,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 26,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 27,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 28,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 29,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 30,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 31,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 32,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 33,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 34,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 35,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 36,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 37,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 38,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 39,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 40,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 41,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 42,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 43,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 44,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 45,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 46,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 47,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 48,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 49,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}, {
			"frequency": 50,
			"stranger_uniq_count": 0,
			"regular_uniq_count": 0,
			"member_uniq_count": 0
		}]
	}
}

错误码:

错误码说明
5025时间参数错误
5041 请求中未找到shop_id参数

7 直播回放接口

7.1 接口描述

直播回放接口是用来查看实时和历史视频数据的接口。

7.2 接口列表

接口名称接口描述
/media/live/start开始远程直播
/media/live/stop结束远程直播
/media/playback/start开始远程回放
/media/playback/stop结束远程回放
/media/video/getList获取回放视频列表
/media/motionDetection/getList获取动态侦测视频列表
/media/playback/getSnapshot获取指定时间的监控图片
/media/live/getSnapshot获取实时监控图片

7.3 接口详情

7.3.1 开始远程直播

接口描述:通过本接口调用,用户可以开始远程直播。

请求链接:/media/live/start

接口版本:v2.0

接口参数

参数名称是否必须类型说明示例
sunmi_shop_no string 商米数字店铺平台唯一编号(v2.0之后为必填项) 100939020409
shop_idstring 店铺在SaaS体系下的唯一标识(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可 10087
ipc_idstring摄像机设备唯一ID549755805835
resolutionint分辨率0

请求示例:  

  "method": "POST",
  "url": "https://store.uat.sunmi.com/openapi/media/live/start",
  "headers": {
    "Content-Type": "application/x-www-form-urlencoded"
  },
  formData: {
    "sunmi_shop_no": "560279010307",
    "app_id": "LMWWQVTW4QGCC",
    "ipc_id": "549755805835",
    "resolution": 0,
    "timestamp": 1581383983,
    "random": "5dsf6698",
    "sign": "33C18A18282733A71F998BB5A5E4319D"
  }

返回值: 

{
    "code": 0, /* 其他错误参考错误列表 */
    "msg": "succeed"
    "data": {
        "url": "https://xxxxxxxx/C101P98200023/1219130724381102080.flv?auth_key=1579501989-729716105000265001016467621435-0-",
        "hls_url": "https://xxxxxxxx/C101P98200023/1219130724381102080.m3u8?auth_key=1579501989-729716105000265001016467621435-0-"
    }
}

字段描述:resolution

resolution 取值说明
0超清
1高清

错误码:

错误码说明
5000数据库错误
5011与设备通讯错误
5013未找到数据
5041请求中未找到shop_id参数
5501ipc设备不存在
5510设备未绑定

7.3.2 结束直播

接口描述:通过本接口调用,用户可以结束远程直播。

请求链接:/media/live/stop

接口版本:v2.0

接口参数

参数名称是否必须类型说明示例
sunmi_shop_no string 商米数字店铺平台唯一编号(v2.0之后为必填项) 100939020409
shop_idstring 店铺在SaaS体系下的唯一标识(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可) 10087
ipc_idstring摄像机设备唯一ID549755805835
resolutionint分辨率0

请求示例:  

  "method": "POST",
  "url": "https://store.uat.sunmi.com/openapi/media/live/stop",
  "headers": {
    "Content-Type": "application/x-www-form-urlencoded"
  },
  formData: {
    "sunmi_shop_no": "560279010307",
    "app_id": "LMWWQVTW4QGCC",
    "ipc_id": "549755805835",
    "resolution": 0,
    "timestamp": 1581383983,
    "random": "5dsf6698",
    "sign": "33C18A18282733A71F998BB5A5E4319D"
  }

返回值: 

{
    "code": 0,  /* 其他错误参考错误列表 */
    "msg": "succeed",
    "data": {}
}

字段描述:resolution

resolution 取值说明
0超清
1高清

错误码:

错误码说明
5000数据库错误
5013未找到数据
5011与设备通讯错误
5041请求中未找到shop_id参数
5501ipc设备不存在
5510设备未绑定

7.3.4 获取回放视频列表

接口描述:通过本接口调用,用户可以获取回放视频列表。

请求链接:/media/video/getList

接口版本:v2.0

接口参数

参数名称是否必须类型说明示例
sunmi_shop_no string 商米数字店铺平台唯一编号(v2.0之后为必填项) 100939020409
shop_idstringSaaS对接店铺标识,SaaS厂商提供10087
ipc_idstring摄像机设备唯一ID549755805835
start_timeint开始查询时间,Unix时间戳,秒级别1578969264
end_timeint结束查询时间,Unix时间戳,秒级别1578972864

备注:

start_time与end_time时间区间限制为3600s

请求示例:  

  "method": "POST",
  "url": "https://store.uat.sunmi.com/openapi/media/video/getList",
  "headers": {
    "Content-Type": "application/x-www-form-urlencoded"
  },
  formData: {
    "sunmi_shop_no": "560279010307",
    "app_id": "LMWWQVTW4QGCC",
    "ipc_id": "549755805835",
    "start_time": 1578969264,
    "end_time": 1578969264,
    "timestamp": 1578972864,
    "random": "5dsf6698",
    "sign": "33C18A18282733A71F998BB5A5E4319D"
  }

返回值: 

{
    "code": 0, /* 其他错误参考错误列表 */
    "msg": "succeed",
    "data": {
	"total_count": 1,
	"video_list": [{
            "ipc_id": "549755812970",
	    "url": "http: //xxxxxxxx/VIDEO/IPC/SS101D8BS00087/39C1045AF2EA34B0CEA528FB228C8EDA",
	    "start_time": 1551854897,
	    "end_time": 1551854958
	}]
	}
}

错误码:

错误码说明
5000数据库错误
5013未找到数据
5021非法参数(时间区间超限)
5041请求中未找到shop_id参数

7.3.5 获取动态侦测视频列表

接口描述:通过本接口调用,用户可以获取回放视频列表。

请求链接:/media/motionDetection/getList

接口版本:v2.0

接口参数

参数名称是否必须类型说明示例
sunmi_shop_no stirng 商米数字店铺平台唯一编号(v2.0之后为必填项)100939020409
shop_idstring 店铺在SaaS体系下的唯一标识(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可) 10087
ipc_idstring摄像机设备唯一ID549755805835
start_timeint开始查询时间,Unix时间戳,秒级别1578969264
end_timeint结束查询时间,Unix时间戳,秒级别1579055640
page_num否(默认1)int当前页码1
page_size否(默认10)int当前页条目数量 (最大条目数量为100)10

请求示例:  

  "method": "POST",
  "url": "https://store.uat.sunmi.com/openapi/media/motionDetection/getList",
  "headers": {
    "Content-Type": "application/x-www-form-urlencoded"
  },
  formData: {
    "sunmi_shop_no": "560279010307",
    "app_id": "LMWWQVTW4QGCC",
    "ipc_id": "549755805835",
    "start_time": 1578969264,
    "end_time": 1579055640,
    "timestamp": 1578972864,
    "random": "5dsf6698",
    "sign": "33C18A18282733A71F998BB5A5E4319D"
  }

返回值: 

{   
    "code": 0, /* 其他错误参考错误列表 */
    "msg": "succeed",
    "data": {
	"total_num": 1,
	"video_list": [{
            "source": "1",
	    "detect_time": 1551854897,
	    "url": "http: //xxxxxxxx/VIDEO/IPC/SS101D8BS00087/39C1045AF2EA34B0CEA528FB228C8EDA"
	}]
    }
}

字段描述:source

source 取值说明
1画面
2声音
3声音和画面

错误码:

错误码说明
5000数据库错误
5013未找到数据
5041请求中未找到shop_id参数

7.3.6 获取指定时间的监控图片

接口描述:通过本接口调用,用户可以获取指定时间的监控图片。

请求链接:/media/playback/getSnapshot

接口版本:v2.0

接口参数

参数名称是否必须类型说明示例
sunmi_shop_no string 商米数字店铺平台唯一编号(v2.0之后为必填项) 100939020409
shop_idstring 店铺在SaaS体系下的唯一标识(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可) 15220
ipc_idstring摄像机设备唯一ID549755812970
timeint截图时间,Unix时间戳,秒级别1579055640

请求示例:  

  "method": "POST",
  "url": "https://store.uat.sunmi.com/openapi/media/playback/getSnapshot",
  "headers": {
    "Content-Type": "application/x-www-form-urlencoded"
  },
  formData: {
    "sunmi_shop_no": "560279010307",
    "app_id": "LMWWQVTW4QGCC",
    "ipc_id": "549755805835",
    "time": 1579055640,
    "timestamp": 1578972864,
    "random": "5dsf6698",
    "sign": "33C18A18282733A71F998BB5A5E4319D"
  }

返回值: 

{
    "code": 0,  /* 其他错误参考错误列表 */
    "msg": "succeed",
    "data": {
        "snapshot_url":"http://xxxxxxxx/VIDEO/IPC/SS101D8BS00087/39C1045AF2EA34B0CEA528FB228C8EDA"
    }
}

错误码:

错误码说明
5000数据库错误
5013未找到数据
5041请求中未找到shop_id参数

7.3.7 获取实时监控图片

接口描述:通过本接口调用,用户可以获取实时监控图片, 图片有效期为一天。

请求链接:/media/live/getSnapshot

接口版本:v2.0

接口参数

参数名称是否必须类型说明示例
sunmi_shop_no string 商米数字店铺平台唯一编号(v2.0之后为必填项 )100939020409
shop_idstring
店铺在SaaS体系下的唯一标识(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可)
10087
ipc_idstring摄像机设备唯一ID549755805835

请求示例:  

  "method": "POST",
  "url": "https://store.uat.sunmi.com/openapi/media/live/getSnapshot",
  "headers": {
    "Content-Type": "application/x-www-form-urlencoded"
  },
  formData: {
    "sunmi_shop_no": "560279010307",
    "app_id": "LMWWQVTW4QGCC",
    "ipc_id": "549755805835",
    "timestamp": 1578972864,
    "random": "5dsf6698",
    "sign": "33C18A18282733A71F998BB5A5E4319D"
  }

返回值: 

{
    "code": 0,  /* 其他错误参考错误列表 */
    "msg": "succeed",
    "data":{  
        "snapshot_url":"http://xxxxxxxx/VIDEO/IPC/SS101D8BS00087/39C1045AF2EA34B0CEA528FB228C8EDA"
    }
}

错误码:

错误码说明
5000数据库错误
5011与设备端通讯错误
5013未找到数据
5041请求中未找到shop_id参数
5501ipc设备不存在
5510设备未绑定
5515超出截图时常


7.3.8
开始远程回放

接口描述: 通过本接口调用,用户可以开始远程回放。

请求链接: /media/playback/start

接口版本:v2.0

接口参数

参数名称是否必须类型说明示例
sunmi_shop_no string 商米数字店铺平台唯一编号(v2.0之后为必填项) 100939020409
shop_idstring 店铺在SaaS体系下的唯一标识(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可) 10087
ipc_idstring摄像机设备唯一ID549755805835
start_timeint开始查询时间,Unix时间戳,秒级别1578969264
end_timeint结束查询时间,Unix时间戳,秒级别1579055640

请求示例:  

  "method": "POST",
  "url": "https://store.uat.sunmi.com/openapi/media/playback/start",
  "headers": {
    "Content-Type": "application/x-www-form-urlencoded"
  },
  formData: {
    "sunmi_shop_no": "560279010307",
    "app_id": "LMWWQVTW4QGCC",
    "ipc_id": "549755805835",
    "start_time": 1578969264,
    "end_time": 1579055640,
    "timestamp": 1578972864,
    "random": "5dsf6698",
    "sign": "33C18A18282733A71F998BB5A5E4319D"
  }

返回值: 

{
    "code": 0,  /* 其他错误参考错误列表 */
    "msg": "succeed",
    "data": {
        "url": "https://xxxxxxxx/SAAS-OpenAPI_1211497245552152576/1577092646.flv?auth_key=1577096246-57626095498907571693914212321441-0-",
        "hls_url": "https://xxxxxxxx/SAAS-OpenAPI_1211497245552152576/1577092646.flv?auth_key=1577096246-57626095498907571693914212321441-0-",
        "client_id": "SAAS-OpenAPI_1211497245552152576"
    }
}

错误码:

错误码说明
5021 非法参数(时间区间超限)
5041 请求中未找到shop_id参数
5087 无匹配数据
5088数据库错误
5506未查询到数据


7.3.9
结束远程回放

接口描述: 通过本接口调用,用户可以开始远程回放。

请求链接: /media/playback/stop

接口参数

参数名称是否必须类型说明示例
client_id string 用户client id SAAS-OpenAPI_1211497245552152576

请求示例

  "method": "POST",
  "url": "https://store.uat.sunmi.com/openapi/media/playback/stop",
  "headers": {
    "Content-Type": "application/x-www-form-urlencoded"
  },
  formData: {
    "client_id": "SAAS-OpenAPI_1211497245552152576",
    "app_id": "LMWWQVTW4QGCC",
    "timestamp": 1578972864,
    "random": "5dsf6698",
    "sign": "33C18A18282733A71F998BB5A5E4319D"
  }

返回值: 

{
    "code": 0,  /* 其他错误参考错误列表 */
    "msg": "succeed",
    "data": {}
}

错误码:

错误码说明
5020 无效参数

8 消息推送

8.1 接口描述

商米数字店铺平台可以在接收到设备相关消息后,根据合作平台需求订阅实时消息推送,将消息和事件推送给SaaS合作方。

8.2 接口列表

参考 《消息推送中心》文档

9 智能摄像机对接示范

9.1 店铺对齐

请参考《商米数字店铺开放平台 – > 商户店铺》 章节将用户在商米数字店铺上创建的门店与Saas合作伙伴平台上的同一家门店绑定对齐,之后的所有操作都是基于该门店内的设备和数据进行

9.2 设备配网

如果您的设备是通过有线连入互联网,则可以跳过该步骤。

如果您的设备通过无线网络连入互联网,请按照以下步骤使用android SDK进行配网。(对于其它操作系统或者设备,您也可以直接调用设备API进行配网)

如果设备上的蓝灯常亮,表明设备联网成功。

如果设备上显示为绿灯,则说明网络连接异常。

9.3 设备绑定

9.3.1 接口绑定(开发中)

IPC设备连入网络后,调用设备绑定接口 /device/ipc/bind 将设备绑定到指定店铺内。

请求示例

  "method": "POST",
  "url": "https://store.uat.sunmi.com/openapi/device/ipc/bind",
  "headers": {
    "Content-Type": "application/x-www-form-urlencoded"
  },
  formData: {
    "sunmi_shop_no": "560279010307",
    "ipc_sn": "C201D8BS00089",
    "app_id": "LMWWQVTW4QGCC",
    "mac":"0C25766F5705",
    "timestamp": 1578972864,
    "random": "5dsf6698",
    "sign": "33C18A18282733A71F998BB5A5E4319D"
  }

9.3.2 store页面绑定

通过下载商米助手,打开商米助手app页面,输入对应账号密码登录到已经对齐的门店下面。
到对应店铺下点击设备,添加设备,选择设备类型,这时接通摄像机电源,电源接通后,等待约20秒,摄像机指示灯呈[绿灯闪烁]后,点击下一步。

选择网络连接方式,有线网络连接和无线网路连接两种方式:
(1)有线网络连接需要为摄像机插入网线,并将手机连接至同一网络后点击下一步,待摄像机信号灯呈[蓝色常亮]状态后,点击下一步,找到对应的ipc设备即可绑定。
(2)无线网络连接需要将手机连接至摄像机得无线网络[SUNMI_XXXX](可以在机身或包装盒上找到),点击下一步,找到对应得ipc设备即可绑定。

添加成功之后,用户可以在手机和web上看到新添加的ipc设备。

9.4 设备配置

9.4.1 接口修改调焦(开发中)

在设备绑定之后,用户可以调用接口修改设备的调焦。

9.4.2 store页面设置进店划线

对于FS摄像机,用户需要首先设置进店划线。
打开商米助手app,输入账号密码进入对应门店,点击设备,然后点击屏幕右上角三个小点的图标进入摄像机设置,该页面点击调整画面。
这时画面会提示”请安排人员面向摄像机,站在需要识别人脸的位置”,然后点击屏幕右上角下一步,提示”调整画面大小并移动人脸框的位置,使人脸刚好填充整个人脸框”,这时相机会自动调整画面,然后提示”为保证识别精准性,您还可以移动已设置好的进店门槛线位置或拖拽门槛线端点更改门槛线的长度”,这是您可以手动在手机屏幕上划线来设置进店门槛的位置,然后点击完成即可。

9.5 查看直播

接口列表

详情可查看第7章直播回放接口

接口名称接口描述
/media/live/start开始远程直播
/media/live/stop结束远程直播
/media/playback/start开始远程回放 (开发中)
/media/playback/stop结束远程回放 (开发中)
/media/video/getList获取回放视频列表
/media/motionDetection/getList获取动态侦测视频列表
/media/playback/getSnapshot获取指定时间的监控图片
/media/live/getSnapshot获取实时监控图片

9.6 客流统计

接口列表

详情可查看第6章人流统计接口

接口名称接口描述
/passengerFlow/stat/today/getLatest获取当日实时人流量(实时总人流量)
/passengerFlow/stat/today/groupByTag获取当日人流统计信息(按照年龄以及生熟客人脸分组)
/passengerFlow/stat/today/groupByGender获取当日人流统计信息(按照年龄以及性别分组)
/passengerFlow/stat/today/getTrendByHour获取当日人流变化趋势(人流总数,时间粒度为小时)
/passengerFlow/stat/history/groupByTag获取历史人流统计信息(人流总数/生熟客/会员)
/passengerFlow/stat/history/groupByGender获取历史客群详情(年龄以及性别)
/passengerFlow/stat/history/getTrendByHour获取历史人流变化趋势(人流总数/生熟客,时间粒度为小时)
/passengerFlow/stat/history/getTrendByDay获取历史人流变化趋势(人流总数/生熟客,时间粒度为天)
/passengerFlow/stat/history/getTrendByWeek获取历史人流变化趋势(人流总数/生熟客,时间粒度为周)(开发中)
/passengerFlow/stat/history/getTrendByMonth获取历史人流变化趋势(人流总数/生熟客,时间粒度为月)(开发中)

9.7 实时获取进店 FaceID

请参考《商米数字店铺开放平台 – > 消息中心》 章节用户需要先添加消息监听地址, 用户将自己平台的相关HTTP地址添加到商米数字开放平台,并提供需要监听的设备以及 IPC实时获取人员消息事件就可以实时获取进店FaceID。

9.7.1 增加消息监听

接口描述: 通过本接口调用,用户可以增加消息监听的HTTP回调地址。 用户将自己平台的相关HTTP地址通过该接口添加到商米数字开放平台;并提供需要监听的设备以及事件。当商米数字开放平台收到该设备的该事件时,会调用该HTTP接口。
对于该回调HTTP回调的鉴权方式,遵照商米数字店铺开放平台的鉴权方式。
回调HTTP需要带以下接口参数:

参数名称是否必须类型说明
sunmi_shop_nostring商米数字店铺的门店唯一标识,由商米数字店铺生成
shop_id string SaaS对接店铺标识,SaaS厂商提供
event int触发消息的类型
payload string 消息的具体格式(根据消息不同会有不同的json)

请求链接: /hook/add

接口参数

参数名称是否必须类型说明示例
sunmi_shop_no

string 商米数字店铺平台门店唯一编号(v2.0之后为必填项)


100939070408
shop_id string 店铺在SaaS软件体系下的唯一标识(此参数为后向兼容v2.0之前版本的字段,在v2.0及以后版本使用sunmi_shop_no替代,作为门店唯一标识即可) 15220
http_callback string HTTPS回调地址链接 http://xxxxxxxx/api/testHook
event_list array[int] 需要监听的事件的列表 [2001]

请求示例:

  "method": "POST",
  "url": "https://store.uat.sunmi.com/openapi/hook/add",
  "headers": {
    "Content-Type": "application/x-www-form-urlencoded"
  },
  formData: {
    "sunmi_shop_no": "100939070408",
    "http_callback": "http://xxxxxxxx/api/testHook",
    "event_list": [2001],
    "app_id": "LMWWQVTW4QGCC",
    "timestamp": 1578972864,
    "random": "5dsf6698",
    "sign": "33C18A18282733A71F998BB5A5E4319D"
  }

返回值:

{
    code:0,       /* 其他错误参考错误列表 */
    msg: "succeed",
    data: {}               
}

字段描述: event

event 取值说明
1101通过订单时间获取一段时间内人脸列表
2001IPC实时获取人员消息

payload(event=1101):

{
	"order_id": "T929321362467651",
	"purchase_time": 1594266755,
	"face_list": [{
		"face_id": 1,
		"gender": 1,
		"age_range": 3,
		"group_type": 2
	}, {
		"face_id": 3,
		"gender": 2,
		"age_range": 5,
		"group_type": 1
	}]
}


payload(event=2001):

{
    ipc_id: "928",
    face_id: "29195",
    gender: 1,
    age_range: 4,
    group_id: "8927",
    group_name: "stranger",
    group_type": 2
}

返回字段描述 : gender

gender取值说明
0未知
1
2

字段描述 : age_range

age_range取值说明
10~6岁
27~12岁
313~18岁
419~28岁
529~35岁
636~45岁
746~55岁
856~ 岁

返回字段描述: group_type

group_type取值说明
1生客人脸库
2熟客人脸库
3店员人脸库
4黑名单人脸库
5自定义人脸库

附录

更新记录

更新日期更新内容
2019-07-07初版草稿
2019-07-17暂时在所有接口中去除company_id字段,以shop_id作为唯一的门店对齐和标识,简化接口
2019-08-08调整部分函数接口返回值
2019-08-23更新通知接口
2020-04-01 取消开始远程回放与结束远程回放的“开发中”状态
2020-04-14设备信息中添加connect_time
2020-04-20 添加错误码 5518: 人脸库创建失败
2020-07-15添加新hook event 1101
2020-09-07T+1人流数据添加UV统计字段
2020-09-14 更新绑定与解绑接口

(开发中)

IPC