客流统计云平台帮助文档
API接口文档
万服客流云平台开放接口使用说明
使用流程
- 获取 token
- 获取场所/区域
- 获取客流数据或其它数据
获取Token
请求URL:/wanf-api/get-token/
Body参数:支持表单或json格式提交
| 参数名 | 类型 | 描述 | 必填 | 可选值 | 备注 |
|---|---|---|---|---|---|
| username | string | 用户名 | 是 | ||
| password | string | 密码 | 是 | ||
| timezone | string | 用户时区 | 否 | Asia/Shanghai | 获取Token时同步保存用户时区,示例:Asia/Shanghai、America/New_York |
请求示例
{
"username": "test",
"password": "test"
}
返回示例
{
"token": "28bc3af04fdce53ed4d123405fb1afb3c8810418"
}
获取场所/区域
请求URL:/wanf-api/get-site/?level=2&pk=0
Header参数:Authorization:'token 28bc3af04f32e53ced4d123405f1afb3c8810418',token值由API接口获取
说明:当pk等于0,返回当前用户下组织等级等于level值的所有场所,否则返回组织等级等于level值且id=pk值的组织其下级所有组织
Query参数
| 参数名 | 类型 | 描述 | 必填 | 可选值 | 备注 |
|---|---|---|---|---|---|
| level | integer | 查询的组织等级 | 是 | [1,2,3] | 单选,1:一级组织,如公司/集团,2:二级组织,如场所,3:三级组织,如区域 |
| pk | integer | 查询的组织ID | 是 | 单选,如果是0,将查询当前用户的level等级下的所有组织 |
返回示例
{
"code": 1,
"msn": [
{
"pk": 88,
"name": "万服集团"
}
]
}
PS:如提供错误的值或没有权限都将返回一个空的组织列表或400响应
获取客流数据
请求URL:/wanf-api/people-counting-data/
认证方式:Token 或 Session 认证,匿名用户拒绝访问
Header参数:Authorization:'token 28bc3af04f32e53ced4d123405f1afb3c8810418',token值由API接口获取
Body参数:支持表单或json格式提交
| 参数名 | 类型 | 描述 | 必填 | 可选值 | 备注 |
|---|---|---|---|---|---|
| types | integer | 组织类型 | 是 | [1,2] | 单选,1:二级组织,如场所,2:三级组织,如区域 |
| site | Array | 场所或区域ID | 是 | 多选,如[23,65,88],当types为1时,此处应为场所ID,为2时应为区域ID | |
| size | string | 查询的时间粒度 | 是 | ["hour", "day", "week", "month", "year"] | 单选,hour:小时,day:天,week:周,month:月,year:年 |
| index | Array | 查询指标 | 是 | ["passBy", "enter", "exits", "turnBack", "duplicatePeople"] | 多选,如['enter', 'exits'],可选值列出的是部分值,更多值请参照下面index参数说明 |
| date | string | 日期范围 | 是 | 格式:'2000-01-01 - 2000-12-31';请注意中间的空格,当时间粒度为'hour'时,日期范围不超过7天 |
index参数说明
passBy经过人数enter进入人数exits离开人数turnBack折返人数duplicatePeople重复客流人数deDuplicateEnter去重后进入人数deDuplicateExit去重后离开人数
surprised表情惊讶panic表情害怕happy表情高兴angry表情愤怒male/female男性/女性kid/child/teenager/young/prime/middle/middleAged/old儿童(0-6)/少年(7-14)/青少年(15-17)/青年(18-24)/壮年(25-34)/中年(35-56)/中老年(57-67)/老年(68+)
hat_not/hat_yes不戴帽子/戴帽子hat_helmet戴头盔mask_not/mask_yes不戴口罩/戴口罩
请求示例
{
"types": 1,
"site": [53, 63],
"size": "day",
"index": ["enter", "exits"],
"date": "2023-04-01 - 2023-04-03"
}
返回示例
{
"code": 1,
"msn": {
"KKmail": [
{
"times": "2022-04-01T00:00:00+08:00",
"enter__sum": 910,
"exits__sum": 854
},
{
"times": "2022-04-02T00:00:00+08:00",
"enter__sum": 1603,
"exits__sum": 1585
},
{
"times": "2022-04-03T00:00:00+08:00",
"enter__sum": 1325,
"exits__sum": 1298
}
],
"万服大厦": [
{
"times": "2022-04-01T00:00:00+08:00",
"enter__sum": 1733,
"exits__sum": 1566
},
{
"times": "2022-04-02T00:00:00+08:00",
"enter__sum": 1875,
"exits__sum": 1823
},
{
"times": "2022-04-03T00:00:00+08:00",
"enter__sum": 1556,
"exits__sum": 1533
}
]
}
}
获取车流量实时数据
请求URL:/wanf-api/vehicle-real-data/?date=2024-03-23&site=85&page_size=1000
Header参数:Authorization:'token 28bc3af04f32e53ced4d123405f1afb3c8810418',token值由API接口获取
Query参数
| 参数名 | 类型 | 描述 | 必填 | 可选值 | 备注 |
|---|---|---|---|---|---|
| date | String | 日期,示例值: '2024-03-23' | 是 | ||
| site | String | 二级组织ID,如场所ID | 是 | ||
| tag | String | 三级组织(区域)ID | 否 | 单选,传入区域ID时只查询该区域关联的设备数据;不传则查询该场所下所有main=1的主设备数据 | |
| page_size | String | 每页数据的条数,默认15条,最大1000条 | 否 | ||
| page | String | 可通过返回数据中的'next'或'previous'跳转上一页/下一页,也可以直接携带此参数跳转至指定页码 | 否 |
返回示例
{
"count": 4388,
"next": "http://192.168.1.6/wanf-api/vehicle-real-data/?date=2024-03-18&page=593&page_size=2&site=85",
"previous": "http://192.168.1.6/wanf-api/vehicle-real-data/?date=2024-03-18&page=591&page_size=2&site=85",
"results": [
{
"sn": "2102412504WLM1001589",
"uuid": "be766e22-4e5a-b0e9-82ce-3ac834a8aaca",
"target_type": 7,
"lane_no": 2,
"vehicle_type": "微型面包车",
"vehicle_color": "银色",
"vehicle_brand": "五菱",
"vehicle_sub_brand": "五菱宏光",
"vechicle_year_brand": "2010",
"move_direction": "向上",
"plate_char": "贵AH96**",
"plate_color": "蓝底白字",
"plate_type": "单层蓝牌",
"shot_time": "2024-03-18T17:00:16.544000+08:00",
"plate_img": null,
"vehicle_img": null,
"panorama_img": null
},
{
"sn": "2102412504WLM1001589",
"uuid": "be766e22-4e5a-b0e9-82ce-3ac834a8aaca",
"target_type": 7,
"lane_no": 1,
"vehicle_type": "中卡",
"vehicle_color": "白色",
"vehicle_brand": "厢式车",
"vehicle_sub_brand": "厢式车",
"vechicle_year_brand": "未知",
"move_direction": "向上",
"plate_char": "鄂A970**",
"plate_color": "蓝底白字",
"plate_type": "单层蓝牌",
"shot_time": "2024-03-18T17:00:07.904000+08:00",
"plate_img": null,
"vehicle_img": null,
"panorama_img": null
}
]
}
PS:如提供错误的值或没有权限都将返回一个空的列表或错误响应。因该接口数据量较大,每天请求量被限制为100次
获取车流量分类统计数据
请求URL:/wanf-api/vehicle-counting-data/
认证方式:Token 或 Session 认证,匿名用户拒绝访问
Header参数:Authorization:'token 28bc3af04f32e53ced4d123405f1afb3c8810418',token值由API接口获取
Body参数:支持表单或json格式提交
| 参数名 | 类型 | 描述 | 必填 | 可选值 | 备注 |
|---|---|---|---|---|---|
| site | Array | 场所ID | 是 | [2] | 单值 |
| size | Array | 查询的时间粒度 | 是 | ["hour", "day", "week", "month", "year"] | 单值,hour:小时,day:天,week:周,month:月,year:年 |
| date | Array | 日期范围 | 是 | 格式:'2000-01-01 - 2000-12-31';请注意中间的空格,当时间粒度为'hour'时,日期范围不超过7天 | |
| vehicleType | Array | 过滤条件(车辆类型编号) | 否 | 通过云平台页面获取,菜单路径:首页-配置中心-车辆属性-车辆类型, | 多选,如[1, 2, 3, 4, 5], 车辆类型对应的编号, 非ID。不传该参数将查询所有车型 |
| laneNo | Array | 过滤条件(车道编号) | 否 | [1, 2, 3, 4, 5, 6] | 多选,如[1, 2, 3], 将只查询选择的车道车辆。不传该参数将查询所有车道 |
| moveDirection | Array | 过滤条件(行驶方向) | 否 | [0, 1, 2, 3, 4] | 多选,如[1, 2, 3], 不传该字段参数将查询所有方向。0:未知,1:向左,2:向右,3:向上,4:向下 |
| plateType | Array | 过滤条件(车牌类型编号) | 否 | 通过云平台页面获取,菜单路径:首页-配置中心-车辆属性-车牌类型, | 多选,如[1, 2, 3, 4, 5], 车牌类型对应的编号, 非ID。不传该参数将查询所有车牌类型 |
| tag | Array | 三级组织(区域)ID | 否 | 多选,如[1, 2],传入区域ID时只查询这些区域关联的设备数据;不传则查询该场所下所有main=1的主设备数据。支持按区域分组统计(annotates传organization_tag) | |
| annotates | Array | 分类统计条件(查询结果按该条件分类统计) | 否 | ["vehicle_type", "move_direction", "plate_type", "lane_no", "plate_char", "organization_tag"] | 单选,如['vehicle_type'],不传该参数将按时间分组。可选值分别对应:[车辆类型,行驶方向,车牌类型,车道,车牌号,区域分组] |
请求示例
{
"site": [72],
"size": ["day"],
"date": ["2023-07-06 - 2023-07-06"],
"vehicleType": [2, 9, 11, 30],
"laneNo": [1, 2, 3, 4],
"moveDirection": [0, 1, 2, 3, 4],
"plateType": [0, 1, 2, 3, 4, 5, 6],
"annotates": ["vehicle_type"],
"tag": [1, 2]
}
返回示例
{
"code": 1,
"msn": [
{
"times": "2023-07-06T00:00:00+08:00",
"annotates": [
[
11,
18
],
[
30,
14
],
[
2,
1
]
]
}
]
}
PS:返回示例中,annotates字段中的[11, 18]为时间段内的统计结果,11代表分组条件中的对应编号,在上方示例中代表'泥头车-渣土车',18代表该车型的数量
按车牌号分组统计时,日期范围不得超过1天
获取剩余车位
请求URL:/wanf-api/parking-spaces-data/
认证方式:Token 或 Session 认证,匿名用户拒绝访问
Header参数:Authorization:'token 28bc3af04f32e53ced4d123405f1afb3c8810418',token值由API接口获取
Body参数:支持表单或json格式提交
| 参数名 | 类型 | 描述 | 必填 | 可选值 | 备注 |
|---|---|---|---|---|---|
| site | Integer | 场所ID | 是 |
请求示例
{
"site": 85
}
返回示例
{
"code": 1,
"msn": {
"site_up": 120,
"site_down": 150,
"site_parking": 500,
"site_remaining": 470,
"regions": [
{
"tag": "A区",
"up": 50,
"down": 60,
"remaining": 90
}
]
}
}
PS:上行(3)表示离开,下行(4)表示进入;剩余车位 = 停车位总数 - (进入数 - 离开数),最小为0
获取排队定时数据
请求URL:/wanf-api/person-queue-timing/
Header参数:Authorization:'token 28bc3af04f32e53ced4d123405f1afb3c8810418',token值由API接口获取
Body参数:支持表单或json格式提交
| 参数名 | 类型 | 描述 | 必填 | 可选值 | 备注 |
|---|---|---|---|---|---|
| site | String/Integer | 场所ID | 是 | ||
| size | String | 查询的时间粒度 | 是 | ["hour", "day", "week", "month", "year"] | 单值,hour:小时,day:天,week:周,month:月,year:年 |
| date | String | 日期范围 | 是 | 格式:'2000-01-01 - 2000-12-31';请注意中间的空格,当时间粒度为'hour'时,日期范围不超过7天 |
请求示例
{
"site": 88,
"size": "hour",
"date": "2024-04-25 - 2024-04-27"
}
请求成功返回数据结构
| 参数名 | 类型 | 描述 | 必填 | 可选值 | 备注 |
|---|---|---|---|---|---|
| code | Integer | 状态码,请求成功返回1,错误返回2 | 是 | ||
| msn | Object | 返回错误信息或成功数据,如该场所下所有设备的数据统计结果 | 是 | 下级为'设备识别码'对象 | |
| 设备识别码 | Object | 该设备下查询日期范围内的数据统计结果 | 是 | 下级为'时间段数据'数组 | |
| 时间段数据 | Array | 该时间段的数据统计结果 | 是 | 下级为'区域统计数据'数组 | |
| 区域统计数据 | Array | 数据结构:[区域id,该时间段总人数,平均停留时间,[[停留时间等级1, 人数],[停留时间等级2, 人数]]] | 是 | 停留时间等级在摄像机中配置,最多有4个 |
返回示例
{
"code": 1,
"msn": {
"e8:a0:ed:81:fa:00": {
"2024-04-27T09:00:00+08:00": [
[
1,
0,
0,
[
[
2,
0
],
[
10,
0
],
[
60,
0
],
[
120,
0
]
]
],
[
2,
0,
0,
[
[
2,
0
],
[
10,
0
],
[
60,
0
],
[
120,
0
]
]
]
]
}
}
}
获取排队区域信息
请求URL:/wanf-api/person-queue-area/?sn=e8:a0:ed:00:fa:ce&ruleid=1
Header参数:Authorization:'token 28bc3af04f32e53ced4d123405f1afb3c8810418',token值由API接口获取
Query参数
| 参数名 | 类型 | 描述 | 必填 | 可选值 | 备注 |
|---|---|---|---|---|---|
| sn | String | 设备识别码 | 是 | 一般为设备Mac、SN,不同设备类型可能不同 | |
| ruleid | String | 排队区域ID | 否 | 如果不传该参数,将返回查询设备的所有排队区域,否则只返回等于ruleid值的区域 |
返回示例
[
{
"ruleid": 1,
"name": "数码区",
"organization": 53,
"device": 42
}
]
PS:如提供错误的值或没有权限都将返回一个空的列表或错误响应
获取实时排队数据
请求URL:/wanf-api/queue-realtime-data/
认证方式:Token 或 Session 认证,匿名用户拒绝访问
Header参数:Authorization:'token 28bc3af04f32e53ced4d123405f1afb3c8810418',token值由API接口获取
Body参数:支持表单或json格式提交
| 参数名 | 类型 | 描述 | 必填 | 可选值 | 备注 |
|---|---|---|---|---|---|
| site | Integer | 场所ID | 是 |
请求示例
{
"site": 53
}
返回示例
{
"code": 1,
"msn": {
"site_enter": 1520,
"site_exits": 1480,
"site_stay": 40,
"region_count": 3,
"regions": [
{
"name": "数码区",
"peopleNum": 25,
"max_visitors": 50,
"waitTime": 420,
"waitTimeMin": 7.0,
"saturation": 50.0,
"comfort": "适中"
}
]
}
}
PS:peopleNum为区域当前人数,waitTime为预计排队秒数,waitTimeMin为分钟数,saturation为饱和度百分比,comfort为舒适度等级(舒适/适中/拥挤/饱和)
获取热度图合成图
请求URL:/wanf-api/heatmap-overlay/
Header参数:Authorization:'token 28bc3af04f32e53ced4d123405f1afb3c8810418',token值由API接口获取
认证方式:Token 或 Session 认证,匿名用户拒绝访问
Body参数:支持表单或json格式提交
| 参数名 | 类型 | 描述 | 必填 | 可选值 | 备注 |
|---|---|---|---|---|---|
| zone_id | String/Integer | 区域ID | 是 | 对应排队区域的标识ID | |
| date | String | 日期 | 是 | 格式:'2024-03-23' | |
| size | String | 数据类型 | 否 | ['people','time'] | 默认为'people',表示基于客流数据生成热度图;'time'表示基于停留时长生成热度图 |
| colormap | String | 颜色映射方案 | 否 | jet | 默认为'jet',可选值请参考matplotlib颜色映射表 |
| overlay_alpha | Integer | 合成图透明度 | 否 | 0-255 | 默认为180,数值越大热度图越不透明 |
请求示例
{
"zone_id": 1,
"date": "2024-03-23",
"size": "people",
"colormap": "jet",
"overlay_alpha": 180
}
返回示例
{
"code": 1,
"msn": "success",
"image_base64": "iVBORw0KGgoAAAANSUhEUgAA..."
}
PS:如提供错误的值或没有权限都将返回错误响应,image_base64为Base64编码的合成图PNG数据
销售数据推送
请求URL:/wanf-api/sales-data-push/
Header参数:Authorization:'token 28bc3af04f32e53ced4d123405f1afb3c8810418',token值由API接口获取
认证方式:Token 或 Session 认证,匿名用户拒绝访问
Body参数:支持表单或json格式提交
| 参数名 | 类型 | 描述 | 必填 | 可选值 | 备注 |
|---|---|---|---|---|---|
| site_id | Integer | 场所ID | 是 | ||
| transaction_time | String | 交易时间 | 否 | 格式:%Y-%m-%d %H:%M:%S 或 %Y-%m-%d,不传则默认为当前时间 | |
| transaction_count | Integer | 交易笔数 | 否 | 0 | |
| transaction_amount | Float | 交易额 | 否 | 0 | |
| customer_count | Integer | 顾客人数 | 否 | ||
| discount_amount | Float | 优惠金额 | 否 | 0 | |
| refund_amount | Float | 退款金额 | 否 | 0 | |
| category_data | JSON | 品类数据 | 否 | JSON格式,如:{'食品': 100, '饮料': 50} | |
| store_code | String | 门店编号 | 否 | ||
| store_name | String | 门店名称 | 否 | 不传则默认为场所名称 |
请求示例
{
"site_id": 53,
"transaction_time": "2026-04-14 10:30:00",
"transaction_count": 15,
"transaction_amount": 2580.50,
"customer_count": 12
}
返回示例
{
"code": 1,
"msn": {
"id": 123,
"transaction_time": "2026-04-14 10:30:00"
}
}
重置Token
请求URL:/wanf-api/reset-token/
Header参数:Authorization:'token 28bc3af04f32e53ced4d123405f1afb3c8810418',token值由API接口获取
Query参数
| 参数名 | 类型 | 描述 | 必填 | 可选值 | 备注 |
|---|---|---|---|---|---|
| 无 |
返回示例
{
"code": 1,
"msn": "token重置成功!"
}