IPC 云端openAPI接口

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 店铺设计规范

参考 《商米数字店铺开放平台 -> 店铺绑定》

智能摄像机对接示范

6.1 店铺对齐

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

6.2 设备配网

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

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

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

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

6.3 设备绑定

6.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",
    "mac":"0C25766F5705",
    "app_id": "LMWWQVTW4QGCC",
    "timestamp": 1578972864,
    "random": "5dsf6698",
    "sign": "33C18A18282733A71F998BB5A5E4319D"
  }

6.3.2 store页面绑定

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

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

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

6.4 设备配置

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

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

6.4.2 store页面设置进店划线

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

6.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获取实时监控图片

6.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获取历史人流变化趋势(人流总数/生熟客,时间粒度为月)(开发中)

直播回放接口

5.1 接口描述

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

5.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获取实时监控图片

5.3 接口详情

5.3.1 开始远程直播

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

请求链接:/media/live/start

接口版本:v2.0

接口参数

参数名称是否必须类型说明示例
sunmi_shop_no string商米数字店铺平台的门店组织编号 100939020409
shop_idstring第三方对接软件中门店的标识,对接的软件提供 (作为门店唯一标识即可,shop_id与sunmi_shop_no可互为替代,使用时传输任意一个即可)10087
ipc_idstring摄像机设备唯一ID 摄像机SN(与ipc_sn必出现其一, 若同时输入,必须一致 )549755805835
ipc_snstring 摄像机SN(与ipc_id必出现其一, 若同时输入,必须一致 ) C101P98200023
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未找到数据
5501ipc设备不存在
5510设备未绑定

5.3.2 结束直播

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

请求链接:/media/live/stop

接口版本:v2.0

接口参数

参数名称是否必须类型说明示例
sunmi_shop_no string商米数字店铺平台的门店组织编号 100939020409
shop_idstring第三方对接软件中门店的标识,对接的软件提供 (作为门店唯一标识即可,shop_id与sunmi_shop_no可互为替代,使用时传输任意一个即可)10087
ipc_idstring摄像机设备唯一ID 摄像机SN(与ipc_sn必出现其一, 若同时输入,必须一致 549755805835
ipc_snstring 摄像机SN(与ipc_id必出现其一, 若同时输入,必须一致 ) C101P98200023
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与设备通讯错误
5501ipc设备不存在
5510设备未绑定

5.3.4 获取回放视频列表

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

请求链接:/media/video/getList

接口版本:v2.0

接口参数

参数名称是否必须类型说明示例
sunmi_shop_no string商米数字店铺平台的门店组织编号100939020409
shop_idstring第三方对接软件中门店的标识,对接的软件提供 (作为门店唯一标识即可,shop_id与sunmi_shop_no可互为替代,使用时传输任意一个即可)10087
ipc_idstring摄像机设备唯一ID 摄像机SN(与ipc_sn必出现其一, 若同时输入,必须一致 ) 549755805835
ipc_snstring 摄像机SN(与ipc_id必出现其一, 若同时输入,必须一致 ) C101P98200023
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非法参数(时间区间超限)

5.3.5 获取动态侦测视频列表

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

请求链接:/media/motionDetection/getList

接口版本:v2.0

接口参数

参数名称是否必须类型说明示例
sunmi_shop_no stirng 商米数字店铺平台的门店组织编号100939020409
shop_idstring第三方对接软件中门店的标识,对接的软件提供 (作为门店唯一标识即可,shop_id与sunmi_shop_no可互为替代,使用时传输任意一个即可) 10087
ipc_idstring摄像机设备唯一ID 摄像机SN(与ipc_sn必出现其一, 若同时输入,必须一致 )549755805835
ipc_snstring 摄像机SN(与ipc_id必出现其一, 若同时输入,必须一致 ) C101P98200023
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未找到数据

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

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

请求链接:/media/playback/getSnapshot

接口版本:v2.0

接口参数

参数名称是否必须类型说明示例
sunmi_shop_no string商米数字店铺平台的门店组织编号 100939020409
shop_idstring第三方对接软件中门店的标识,对接的软件提供 (作为门店唯一标识即可,shop_id与sunmi_shop_no可互为替代,使用时传输任意一个即可)15220
ipc_idstring摄像机设备唯一ID 摄像机SN(与ipc_sn必出现其一, 若同时输入,必须一致 )549755812970
ipc_snstring 摄像机SN(与ipc_id必出现其一, 若同时输入,必须一致 ) C101P98200023
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未找到数据

5.3.7 获取实时监控图片

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

请求链接:/media/live/getSnapshot

接口版本:v2.0

接口参数

参数名称是否必须类型说明示例
sunmi_shop_no string商米数字店铺平台的门店组织编号100939020409
shop_idstring 第三方对接软件中门店的标识,对接的软件提供 (作为门店唯一标识即可,shop_id与sunmi_shop_no可互为替代,使用时传输任意一个即可)10087
ipc_idstring摄像机设备唯一ID 摄像机SN(与ipc_sn必出现其一, 若同时输入,必须一致 )549755805835
ipc_snstring 摄像机SN(与ipc_id必出现其一, 若同时输入,必须一致 ) C101P98200023

请求示例:  

  "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未找到数据
5501ipc设备不存在
5510设备未绑定
5515超出截图时常


5.3.8
开始远程回放

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

请求链接: /media/playback/start

接口版本:v2.0

接口参数

参数名称是否必须类型说明示例
sunmi_shop_no string商米数字店铺平台的门店组织编号100939020409
shop_idstring第三方对接软件中门店的标识,对接的软件提供 (作为门店唯一标识即可,shop_id与sunmi_shop_no可互为替代,使用时传输任意一个即可) 10087
ipc_idstring摄像机设备唯一ID 摄像机SN(与ipc_sn必出现其一, 若同时输入,必须一致 )549755805835
ipc_snstring 摄像机SN(与ipc_id必出现其一, 若同时输入,必须一致) C101P98200023
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.m3u8?auth_key=1577096246-57626095498907571693914212321441-0-",
        "client_id": "SAAS-OpenAPI_1211497245552152576"
    }
}

错误码:

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


5.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 无效参数

人流统计接口

4.1 接口描述

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

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

4.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/person/frequency/getList 获取顾客到店频率分布统计数据

4.3 接口详情

4.3.1 获取当日实时人流量

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

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

接口版本:v2.0

接口参数

参数名称是否必须类型说明示例
sunmi_shop_no string商米数字店铺平台的门店组织编号 100939020409
shop_idstring 第三方对接软件中门店的标识,对接的软件提供 (作为门店唯一标识即可,shop_id与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": {
        "total_count": 123, /* 已捕捉到有效人脸数量 */ (原count字段)
        "unexposed_count": 0, /* 未捕捉到有效人脸数量 */
        "pass_count": 110 /* 过店客流数量 */
    }
}

备注:
total_count字段:    摄像机识别到进店人员,同时识别出相应的faceID,具体包含生客,熟客和会员等
unexposed_count字段:摄像机识别到进店人员,但是未能识别出相应的faceID,只能记录为进店人次
pass_count字段:     摄像机识别到人员在门口经过,没有进店

错误码:

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

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

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

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

接口版本:v2.0

接口参数

参数名称是否必须类型说明示例
sunmi_shop_no string商米数字店铺平台的门店组织编号 100939020409
shop_idstring第三方对接软件中门店的标识,对接的软件提供 (作为门店唯一标识即可,shop_id与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未找到数据

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

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

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

接口版本:v2.0

接口参数

参数名称是否必须类型说明示例
sunmi_shop_no string商米数字店铺平台的门店组织编号 100939020409
shop_idstring第三方对接软件中门店的标识,对接的软件提供 (作为门店唯一标识即可,shop_id与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未找到数据

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

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

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

接口版本:v2.0

接口参数

参数名称是否必须类型说明示例
sunmi_shop_no string商米数字店铺平台的门店组织编号 100939020409
shop_idstring第三方对接软件中门店的标识,对接的软件提供 (作为门店唯一标识即可,shop_id与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",
}

备注:
total_count字段:    摄像机识别到进店人员,同时识别出相应的faceID,具体包含生客,熟客和会员等
unexposed_count字段:摄像机识别到进店人员,但是未能识别出相应的faceID,只能记录为进店人次
pass_count字段:     摄像机识别到人员在门口经过,没有进店

字段描述:age_range

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

错误码:

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

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

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

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

接口版本:v2.0

接口参数

参数名称是否必须类型说明示例
sunmi_shop_no string 商米数字店铺平台的门店组织编号 100939020409
shop_idstring第三方对接软件中门店的标识,对接的软件提供 (作为门店唯一标识即可,shop_id与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"
}

备注:

total_count字段:    摄像机识别到进店人员,同时识别出相应的faceID,具体包含生客,熟客和会员等
unexposed_count字段:摄像机识别到进店人员,但是未能识别出相应的faceID,只能记录为进店人次
pass_count字段:     摄像机识别到人员在门口经过,没有进店

对于unexposed_count和pass_count, 无法获取faceID并进行去重

错误码:

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

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

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

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

接口版本:v2.0

接口参数

参数名称是否必须类型说明示例
sunmi_shop_no string商米数字店铺平台的门店组织编号100939020409
shop_idstring第三方对接软件中门店的标识,对接的软件提供 (作为门店唯一标识即可,shop_id与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未找到数据

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

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

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

接口版本:v2.0

接口参数

参数名称是否必须类型说明示例
sunmi_shop_no stirng商米数字店铺平台的门店组织编号 100939020409
shop_idstring第三方对接软件中门店的标识,对接的软件提供 (作为门店唯一标识即可,shop_id与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,
                "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 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,
                "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 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未找到数据

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

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

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

接口版本:v2.0

接口参数

参数名称是否必须类型说明示例
sunmi_shop_no string 商米数字店铺平台的门店组织编号 100939070408
shop_idstring第三方对接软件中门店的标识,对接的软件提供 (作为门店唯一标识即可,shop_id与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未找到数据

4.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时间参数错误

设备管理接口

2.1 接口描述

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

2.2 接口列表

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

2.3 接口详情

2.3.1 获取设备列表

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

请求链接:/device/ipc/getList

接口版本:v2.0

接口参数

参数名称是否必须类型说明 示例
sunmi_shop_no string 商米数字店铺平台的门店组织编号 560279010307
shop_idstring
第三方对接软件中门店的标识,对接的软件提供 (作为门店唯一标识即可,shop_id与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未查询到数据

2.3.2 获取设备基本信息

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

请求链接:/device/ipc/getInfo

接口版本:v2.0

接口参数

参数名称是否必须类型说明 示例
sunmi_shop_no string 商米数字店铺平台的门店组织编号 560279010307
shop_idstring第三方对接软件中门店的标识,对接的软件提供 (作为门店唯一标识即可,shop_id与sunmi_shop_no可互为替代,使用时传输任意一个即可) 10096
ipc_idstring摄像机设备唯一ID(与ipc_sn必出现其一,若同时输入,必须一致) 549755805878
ipc_snstring摄像机SN(与ipc_id必出现其一, 若同时输入,必须一致 )C101P98200023

请求示例 : 

  "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未找到数据
5501ipc设备不存在

2.3.3 修改设备名称

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

请求链接:/device/ipc/updateName

接口版本:v2.0

接口参数

参数名称是否必须类型说明示例
sunmi_shop_no string 商米数字店铺平台的门店组织编号560279010307
shop_idstring第三方对接软件中门店的标识,对接的软件提供 (作为门店唯一标识即可,shop_id与sunmi_shop_no可互为替代,使用时传输任意一个即可) 10096
ipc_idstring摄像机设备唯一ID 摄像机SN(与ipc_sn必出现其一, 若同时输入,必须一致 549755805878
ipc_snstring 摄像机SN(与ipc_id必出现其一, 若同时输入,必须一致 )C101P98200023
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未找到数据
5501ipc设备不存在
5506数据库中未找到该ipc设备信息
5510设备未绑定

2.3.4 绑定设备

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

请求链接:/device/ipc/bind

接口版本:v2.0

接口参数

参数名称 是否必须 类型 说明 示例
sunmi_shop_no string 商米数字店铺平台的门店组织编号 560279010307
shop_id string 第三方对接软件中门店的标识,对接的软件提供 (作为门店唯一标识即可,shop_id与sunmi_shop_no可互为替代,使用时传输任意一个即可) 10096
ipc_sn string 摄像机设备SN号 C101D96U00034
mac string 摄像机设备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 无效参数
5079 无效mac地址
5501 设备不存在
5509 设备被绑定

2.3.5 解绑设备

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

请求链接:/device/ipc/unbind

接口版本:v2.0

接口参数

参数名称 是否必须 类型 说明 示例
sunmi_shop_no string 商米数字店铺平台的门店组织编号 560279010307
shop_id string 第三方对接软件中门店的标识,对接的软件提供 (作为门店唯一标识即可,shop_id与sunmi_shop_no可互为替代,使用时传输任意一个即可) 10096
ipc_sn string 摄像机设备SN号(ipc_sn与ipc_id有其一即可) C101D96U00034
ipc_id string 摄像机设备唯一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 无效参数
5501 设备不存在
5510 设备未绑定

2.3.6 获取商户下设备列表

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

请求链接:/device/ipc/getListByCompany

接口版本:v2.0

接口参数

参数名称是否必须类型说明 示例
sunmi_company_no string 商米数字店铺的企业编号 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数据库错误
5041绑定关系有问题
5013未查询到数据