人脸门禁服务
更新时间:2019-02-15 12:13:21
概述
人脸通行开放平台是一套为企业提供的支持人脸图片管理与人脸通行记录查询的产品。企业可以基于人脸通行开放平台,结合阿里云IoT平台的空间管理功能,快速实现自己的SaaS平台。
本文档是人脸通行开放平台提供的API的手册,说明每个API的参数、结果、使用场景和示例。
名词解释
名词 | 解释 |
---|---|
LP | Link Platform,阿里云IoT技术中台 |
LinkFace | 阿里云IoT人脸管理核心应用 |
空间管理 | 阿里云IoT空间管理平台 |
使用须知
- 服务在使用前,需联系商务同学对appKey授权
- 最新api版本1.0.0
- 使用appKey和appSecret
- 接口支持协议类型https
- 支持访问形式post
业务概念
用户
平台的用户(或人脸用户)是指可以被人脸识别设备识别的自然人,在平台上使用userId标识,另有userType表示用户类型,用以区分不同企业平台的用户,在同一个用户类型的范围下,userId是唯一的。
设备
平台的设备专指人脸识别设备,每个设备在阿里云IoT平台上有一个唯一标识iotId。
设备需要关联到空间下,用于平台对设备进行管理。
空间
空间是设备在现实世界中位置的抽象,例如小区、房屋、房间、停车场等是属于不同类型的空间,当一个设备与空间绑定后,代表设备“存在”于这个空间中。
注意
目前人脸通行开放平台支持将人脸信息下发到设备或空间,支持的设备是接入物联网平台的人脸识别设备,若下发到空间,需要依赖于空间管理能力,但平台尚未开放空间管理的相关接口,企业需要基于阿里云IoT开放的其他平台能力(例如智能人居开放平台、园区SI管理平台等)实现设备与空间的关联,然后基于人脸通行开放平台实现人脸图片和通行记录的管理。
错误码
统一错误码
返回值 | 信息 | 描述 |
---|---|---|
200 | success | 成功 |
400 | request error | 请求错误 |
401 | request auth error | 请求认证错误 |
403 | request forbidden | 请求被禁止 |
404 | service not found | 服务未找到 |
429 | too many requests | 太多请求 |
460 | request parameter error | 请求参数错误 |
500 | service error | 服务端错误 |
503 | service not available | 服务不可用 |
781 | Deny access to resources | 无权访问资源 |
业务错误码
返回值 | 错误描述 |
---|---|
601 | 数据不存在 |
602 | 参数非法 |
603 | 不支持的参数 |
604 | 缺少必填参数 |
605 | 数据超过最大限制 |
606 | 你还未订购该应用,请求到应用市场订购后再使用 |
700 | 事件重复上报 |
999 | 未定义的错误 |
通用定义
通用返回结果
通用返回结果是所有接口的返回类型,用来封装错误码或返回数据。所有接口的结果都是下面的结构。
参数 | 类型 | 备注 |
---|---|---|
code | Integer | 通用错误码链接 + API错误码 |
message | String | 提示信息 |
data | Object | data域是数据域,定义有下面四种情况: 无数据,这时没有data字段,表示接口的返回值中没有结果; 数据为对象类型,表示为JSONObject,具体定义要根据接口而定; 数据为数组类型,表示为JSONArray,表示结果是一系列值,值的类型要根据接口而定; 数据为值类型,表示为具体的封装类型,如String, Integer, Long, Byte, Double,具体根据接口而定; |
分页参数
分页参数会出现在请求参数和返回结果中
在请求参数中代表请求分页的页数(pageNo)和每页的记录数(pageSize);
在响应结果中的页数(pageNo)和每页的记录数(pageSize)与请求参数一致,同时还有total字段代表数据总数。
所有的分页接口除特殊说明外,都遵循下面的约束
参数 | 类型 | 备注 |
---|---|---|
pageNo | Integer | 请求的页码 非必填,默认为1,有效范围 [1, ∞) |
pageSize | Integer | 每页的记录数 非必填,默认为20,有效范围[1,100] |
数据结构
userFaceInput 人脸输入信息
用于保存人脸信息接口,作为入参的一部分
参数 | 类型 | 是否必填 | 备注 |
---|---|---|---|
userId | String | 是 | 用户id |
imageUrl | String | 否 | 图片URL(图片URL和图片base64数据,两者必填其一,优先使用图片URL) |
imageBase64 | String | 否 | 图片base64数据(图片URL和图片base64数据,两者必填其一,优先使用图片URL) |
userInfo | String | 否 | 业务扩展字段,用于透传至设备端实现权限管理 |
userFaceOutput 人脸输出信息
用于查询人脸信息接口,作为出参的一部分
字段 | 类型 | 备注 |
---|---|---|
gmtCreate | String | 创建时间 |
gmtModify | String | 修改时间 |
userId | String | 用户ID |
userType | String | 用户类型 |
imageUrl | String | 人脸图片 |
userFaceOperationResult 人脸信息处理结果
参数名称 | 参数类型 | 备注 |
---|---|---|
scopeId | String | 人脸信息下发的目标范围 |
userId | String | 用户id |
result | JSONObject | 通用返回结果,无data域 |
faceRecord 人脸识别记录数据
字段 | 类型 | 备注 |
---|---|---|
userId | String | 用户ID |
userType | String | 用户类型 |
iotId | String | 记录来源设备ID |
eventType | String | 识别记录事件类型 |
eventTime | String | 记录事件时间 |
similarity | Integer | 人脸比对相似度,0-100之间的整数 |
ID参数
标识类参数,不做特殊说明的情况下,类型均为字符串,最大长度为64。
接口文档
保存人脸信息
保存用户人脸数据,并将人脸数据下发到指定空间下的所有设备或指定设备。
/face/paas/face/batchsave
参数 | 类型 | 是否必填 | 备注 |
---|---|---|---|
scopeIdList | JSONArray | 是 | 人脸信息下发的目标范围: 当scopeType="SPACE_ID"时,表示空间id列表 当scopeType="IOT_ID"时,表示设备iotId列表 每次请求最大列表长度是10 |
scopeType | String | 是 | 人脸信息下发的目标范围类型: SPACE_ID:将人脸信息下发到空间下的所有设备,目前仅支持根空间 IOT_ID:将人脸信息下发到指定的设备 |
userFaceList | JSONArray | 是 | 人脸信息列表,列表项定义参见链接 每次请求最大列表长度是10 |
userType | String | 是 | 用户类型,YUNDUN表示实人认证系统自定义用户,其他用户类型待扩展 |
出参
返回结果使用通用结果类型,data域是对象,见下表的详细说明:
参数 | 类型 | 备注 |
---|---|---|
successCount | Integer | 成功下发的人脸信息+目标范围的组合数,例如,要将3个人脸数据下发到4个空间中,则全部成功的情况下successCount=12 |
scopeType | String | 人脸信息下发的目标范围类型: SPACE_ID:将人脸信息下发到空间下的所有设备,目前仅支持根空间 IOT_ID:将人脸信息下发到指定的设备 |
userType | String | 用户类型,YUNDUN表示实人认证系统自定义用户,其他用户类型待扩展 |
batchResultList | JSONArray | 下发结果列表,列表项定义见链接 |
示例
保存空间(rootSpaceId:7032a7c5828a43c78357b8c3ab83ecb1)下用户A002的人脸图片,用户类型为YUNDUN,图片数据用URL表示。保存完成后,用户A可以被空间下的人脸识别设备成功识别。
请求示例
{
"scopeIdList": [
"7032a7c5828a43c78357b8c3ab83ecb1"
],
"scopeType": "SPACE_ID",
"userFaceList": [
{
"imageBase64": "",
"userInfo": "",
"imageUrl": "https://1.jpg",
"userId": "A002"
}
],
"userType": "YUNDUN"
}
返回示例
{
"code": 200,
"data": {
"scopeType": "SPACE_ID",
"successCount": 1,
"userType": "YUNDUN",
"batchResultList": [
{
"result": {
"code": 200,
"message": "success"
},
"scopeId": "7032a7c5828a43c78357b8c3ab83ecb1",
"userId": "A002"
}
]
},
"message": "success"
}
删除人脸信息
删除用户人脸数据,并从指定空间下的所有设备或指定设备中删除相应人脸数据。
/face/paas/face/batchdelete
参数 | 类型 | 是否必填 | 备注 |
---|---|---|---|
scopeIdList | JSONArray | 是 | 人脸信息下发的目标范围: 当scopeType="SPACE_ID"时,表示空间id列表 当scopeType="IOT_ID"时,表示设备iotId列表 每次请求最大列表长度是10 |
scopeType | String | 是 | 人脸信息下发的目标范围类型: SPACE_ID:将人脸信息下发到空间下的所有设备,目前仅支持根空间 IOT_ID:将人脸信息下发到指定的设备 |
userIdList | JSONArray | 是 | 用户id列表,每次请求最大列表长度是10 |
userType | String | 是 | 用户类型,YUNDUN表示实人认证系统自定义用户,其他用户类型待扩展 |
出参
返回结果使用通用结果类型,data域是对象,见下表的详细说明:
参数 | 类型 | 备注 |
---|---|---|
successCount | Integer | 成功删除的人脸信息+目标范围的组合数,例如,要将3个人脸信息下发到4个空间中的所有数据删除,则全部成功的情况下successCount=12 |
scopeType | String | 人脸信息下发的目标范围类型: SPACE_ID:将人脸信息下发到空间下的所有设备,目前仅支持根空间 IOT_ID:将人脸信息下发到指定的设备 |
userType | String | 用户类型,YUNDUN表示实人认证系统自定义用户,其他用户类型待扩展 |
batchResultList | JSONArray | 删除结果列表,列表项定义见链接 |
示例
删除空间(rootSpaceId:7032a7c5828a43c78357b8c3ab83ecb1)下用户A002的人脸图片,用户类型为YUNDUN。删除完成后,空间下的人脸识别设备将无法识别用户A的人脸。
请求示例
{
"scopeIdList": [
"7032a7c5828a43c78357b8c3ab83ecb1"
],
"scopeType": "SPACE_ID",
"userIdList": [
"A002"
],
"userType": "YUNDUN"
}
返回示例
{
"code": 200,
"data": {
"scopeType": "SPACE_ID",
"successCount": 1,
"userType": "YUNDUN",
"batchResultList": [
{
"result": {
"code": 200,
"message": "success"
},
"scopeId": "7032a7c5828a43c78357b8c3ab83ecb1",
"userId": "A002"
}
]
},
"message": "success"
}
查询人脸列表
在指定空间或指定设备范围内,分页查询用户人脸数据列表。
/face/paas/face/query
参数 | 类型 | 是否必填 | 备注 |
---|---|---|---|
scopeId | String | 是 | 当scopeType="SPACE_ID"时,表示空间id 当scopeType="IOT_ID"时,表示设备iotId |
scopeType | String | 是 | 人脸信息下发的目标范围类型: SPACE_ID:将人脸信息下发到空间下的所有设备,目前仅支持根空间 IOT_ID:将人脸信息下发到指定的设备 |
userType | String | 是 | 用户类型,YUNDUN表示实人认证系统自定义用户,其他用户类型待扩展 |
pageNo | Integer | 否 | 分页页码,默认为1 |
pageSize | Integer | 否 | 分页大小,默认为20,最小值为1,最大值为100 |
出参
返回结果使用通用结果类型,data域是对象,见下表的详细说明:
参数名称 | 参数类型 | 备注 |
---|---|---|
total | Integer | 顶层空间下的用户总数 |
pageNo | Integer | 分页页码 |
pageSize | Integer | 分页大小 |
data | JSONArray | 用户数据列表,参见链接 |
示例
查询空间(rootSpaceId:7032a7c5828a43c78357b8c3ab83ecb1)下,用户类型为YUNDUN的人脸用户列表。查询第1页数据,每页包含20条记录。
请求示例
{
"scopeId": "7032a7c5828a43c78357b8c3ab83ecb1",
"scopeType": "SPACE_ID",
"userType": "YUNDUN",
"pageNo": 1,
"pageSize": 20
}
返回示例
{
"code": 200,
"data": {
"total": 3,
"data": [
{
"gmtModify": "2019-01-26 18:14:57",
"imageUrl": "http://3.jpg",
"userType": "YUNDUN",
"gmtCreate": "2019-01-26 18:14:57",
"userId": "A003"
},
{
"gmtModify": "2019-01-26 17:43:38",
"imageUrl": "http://2.jpg",
"userType": "YUNDUN",
"gmtCreate": "2019-01-26 17:43:38",
"userId": "A002"
},
{
"gmtModify": "2019-01-26 17:10:57",
"imageUrl": "http://1.jpg",
"userType": "YUNDUN",
"gmtCreate": "2019-01-26 17:10:57",
"userId": "A001"
}
],
"pageNo": 1,
"pageSize": 20
},
"message": "success"
}
查询人脸通行记录列表
分页查询用户人脸通行记录数据列表。
/face/paas/face/record/query
参数 | 类型 | 是否必填 | 备注 |
---|---|---|---|
rootSpaceId | String | 是 | 对应根空间Id |
iotId | String | 否 | 设备Id |
fromTime | String | 否 | 开始时间,格式yyyy-MM-dd HH:mm:ss |
toTime | String | 否 | 结束时间,格式yyyy-MM-dd HH:mm:ss |
pageNo | Integer | 否 | 分页页码,默认为1 |
pageSize | Integer | 否 | 分页大小,默认为20,最小值为1,最大值为100 |
出参
返回结果使用通用结果类型,data域是对象,见下表的详细说明:
参数名称 | 参数类型 | 备注 |
---|---|---|
total | Integer | 顶层空间下的用户总数 |
pageNo | Integer | 分页页码 |
pageSize | Integer | 分页大小 |
data | JSONArray | 用户数据列表,参见链接 |
示例
查询空间(rootSpaceId:7032a7c5828a43c78357b8c3ab83ecb1)下,设备X(iotId:ODFL8xIUDLrtsnfNw90v001020ae10)在2019年1月1日的通行记录。查询第1页数据,每页包含20条记录。
请求示例
{
"rootSpaceId": "7032a7c5828a43c78357b8c3ab83ecb1",
"iotId": "ODFL8xIUDLrtsnfNw90v001020ae10",
"fromTime": "2019-01-01 00:00:00",
"toTime": "2019-01-01 23:59:59",
"pageNo": 1,
"pageSize": 20
}
返回示例
{
"code": 200,
"message": "success",
"data": {
"data": [
{
"identityId": "xx",
"userId": "A",//用户ID
"userType": "YUNDUN",//用户类型
"iotId": "ODFL8xIUDLrtsnfNw90v001020ae10",//设备ID
"eventType": "FACE_PASS",//人行类型
"eventTime": "2019-01-01 01:00:00",//人行时间
"similarity": "20"//图片对比相似度
}
],
"total": 1,
"pageNo": 1,
"pageSize": 20
}
}