门禁服务器边缘网关接入API
更新时间:2020-08-11 15:58:25
1、规约信息
1、通信协议基于HTTP,建立双向通道(即先由Edge端发起连接,成功后再由设备端发起, 只有双向通道都建立成功后,才能进行业务通信)。
2、访问格式:http://\
3、时间字段类型:stirng-utc, 如:"1502175700"
4、edge 端的服务端口:10020
5、AC: 门禁, 全称 access control
2、接口说明
2.1 通用接口
2.1.1 连接
相对url: /connect
method: POST
Content-Type:application/json
描述: 先有Edge端主动发起, 等连接成功后,再由门禁服务系统向边缘网关建立连接
参数:
参数 | 类型 | 必选 | 说明 | 备注 |
---|---|---|---|---|
sn | string | √ | 设备sn | N/A |
time | string-utc | √ | utc时间戳 | 例如:1502175700 |
ip | string | √ | ip地址 | 格式:192.168.1.110 |
mac | string | √ | mac地址 | 格式:11:22:33:44:55:66 |
version | string | 版本号 | 格式:xx.xx.xx | |
keepalive | int | √ | 保活超时时间 | 单位:s, |
signMethod | string | √ | 签名算法 | 目前支持的有: md5/sha1/sha256 |
sign | string | √ | 签名后的内容 | 需要签名的内容封装格式:"TIME{time}MAC{mac}SN{sn}IP{ip}" 大括号内的是具体内容,其外面的是名称。备注:time要转换成string类型 |
- 返回值:
参数 | 类型 | 必选 | 说明 | 备注 |
---|---|---|---|---|
code | int | √ | 返回值 | |
message | string | √ | 返回消息 | |
data | dict | √ | 消息内容 | 该消息必须包含token字段,该字段的含义:连接成功后,Edge会颁发身份标示信息,在后续的“心跳包活”、“业务请求”时需要携带。 |
示例:
请求:
{
"sn": "1234567890",
"time": "123456789",
"ip": "192.168.1.110",
"mac": "11:22:33:44:55:66",
"keepalive": 10,
"signMethod": "md5",
"sign": "sdfdgdsghgfdhfghgfhjdfj"
}
响应:
{
"code": 0,
"message": "success",
"data": {
"token": "234353455456"
}
}
2.1.2 心跳
相对url: /keepalive
method: POST
Content-Type:application/json
描述: http clinet 端发起。每个业务通信都可当作一次心跳,只有链路出现空闲的时候,则发送心跳,若对端长时间未收到心跳,则认为设备掉线,即当前链路通道失效,需要重新做connect操作。建议心跳间隔:30s
参数
参数 | 类型 | 说明 | 备注 |
---|---|---|---|
token | string | 设备的标识信息 | 在建立连接时,由对端下发,在规定的时间内未收到心跳,则token失效。 |
- 返回值
{
"code": 0,
"message": ""
}
2.2 刷卡门禁-接口
2.2.1 远程开门
相对url: /cardAC/remoteOpen
method: POST
Content-Type:application/json
描述: 由Edge端发起开门操作。
参数
参数 | 类型 | 必选 | 说明 | 备注 |
---|---|---|---|---|
token | string | √ | 设备的标识信息 | 在建立连接时,由门禁服务管理系统下发,在规定的时间内未收到心跳,则token失效。 |
deviceId | string | √ | 设备ID |
- 返回值
参数 | 类型 | 必选 | 说明 | 备注 |
---|---|---|---|---|
code | int | √ | 返回值 | |
message | string | √ | 返回消息 | |
data | dict | 消息内容 |
示例
请求:
{
"token": "1234567890",
"deviceId": "zxcvbnm",
}
响应:
{
"code": 0,
"message": "",
"data":{}
}
2.2.2 同步刷卡门禁的权限
相对url: /cardAC/syncPermissions
method: POST
Content-Type:application/json
描述: 由Edge端发起权限下发操作。
参数
参数 | 类型 | 必选 | 说明 | 备注 |
---|---|---|---|---|
token | string | √ | 设备的标识信息 | 在建立连接时,由门禁服务管理系统下发,在规定的时间内未收到心跳,则token失效。 |
deviceId | string | √ | 设备ID | |
permissions | list | √ | 权限列表 |
- 返回值
参数 | 类型 | 必选 | 说明 | 备注 |
---|---|---|---|---|
code | int | √ | 返回值 | |
message | string | √ | 返回消息 | |
data | dict | 消息内容 |
示例
请求:
{
"token": "1234567890",
"deviceId": "zxcvbnm",
"permissions":[
{"cardId": "门禁卡id", "endTime": "截止时间", "type": 1}, // type 1:增加,2:删除, 3:修改
{"cardId": "门禁卡id", "endTime": "截止时间", "type": 2}, // 截止时间为 UTC string 单位精确到毫秒
{"cardId": "门禁卡id", "endTime": "截止时间", "type": 3},
...
]
}
响应:
{
"code": 0,
"message": "",
"data":{}
}
2.2.3 通行事件
相对url: /cardAC/passEvent
method: POST
Content-Type:application/json
描述: 由门禁服务发起。
参数
参数 | 类型 | 必选 | 说明 | 备注 |
---|---|---|---|---|
token | string | √ | 设备的标识信息 | 在建立连接时,由edge下发,在规定的时间内未收到心跳,则token失效。 |
deviceId | string | √ | 设备ID | |
cardId | string | √ | 门禁卡ID | |
time | string | 通行事件发生时间 | 格式:UTC时间戳 单位:毫秒 示例:"1591069176000" 注意:当此参数不存在时,边缘网关则认定通行事件发生时间为当前时间 |
- 返回值
参数 | 类型 | 必选 | 说明 | 备注 |
---|---|---|---|---|
code | int | √ | 返回值 | |
message | string | √ | 返回消息 | |
data | dict | 消息内容 |
示例
请求:
{
"token" : "1234567890",
"deviceId": "zxcvbnm",
"cardId": "门禁卡ID"
}
响应:
{
"code": 0,
"message": "",
"data":{}
}
{
"code": 2,
"message": "Token and deviceId should be string type"
}
{
"code": 1,
"message": "Token is invalid"
}
{
"code": 7,
"message": "Invalid device"
}
{
"code": 99,
"message": "Device is not online"
}
2.2.4 报警事件
相对url: /cardAC/alarmEvent
method: POST
Content-Type:application/json
描述: 由门禁服务发起。
参数
参数 | 类型 | 必选 | 说明 | 备注 |
---|---|---|---|---|
token | string | √ | 设备的标识信息 | 在建立连接时,由edge下发,在规定的时间内未收到心跳,则token失效。 |
deviceId | string | √ | 设备ID | |
alarmType | enum | √ | 0: 防拆报警 1: 防拆报警解除 2: 无效卡 |
|
cardId | string | √ | 门禁卡ID | 当alarmType 的类型为2时有效 |
- 返回值
参数 | 类型 | 必选 | 说明 | 备注 |
---|---|---|---|---|
code | int | √ | 返回值 | |
message | string | √ | 返回消息 | |
data | dict | 消息内容 |
示例
请求:
{
"token" : "1234567890",
"deviceId": "zxcvbnm",
"alarmType": 0,
}
响应:
{
"code": 0,
"message": "",
"data":{}
}
2.2.5 运行状态
相对url: /cardAC/runState
method: POST
Content-Type:application/json
描述: 由门禁服务发起。备注:connect 操作后, 运行状态默认为正常。
参数
参数 | 类型 | 必选 | 说明 | 备注 |
---|---|---|---|---|
token | string | √ | 设备的标识信息 | 在建立连接时,由edge下发,在规定的时间内未收到心跳,则token失效。 |
deviceId | string | √ | 设备ID | |
runState | enum | √ | 0: 运行正常 1: 运行异常 |
- 返回值
参数 | 类型 | 必选 | 说明 | 备注 |
---|---|---|---|---|
code | int | √ | 返回值 | |
message | string | √ | 返回消息 | |
data | dict | 消息内容 |
示例
请求:
{
"token" : "1234567890",
"deviceId": "zxcvbnm",
}
响应:
{
"code": 0,
"message": "",
"data":{}
}
2.2.6 查询刷卡门禁的权限状态
相对url: /cardAC/queryStatus
method: POST
Content-Type:application/json
描述: 由边缘网关发起。
参数
参数 | 类型 | 必选 | 说明 | 备注 |
---|---|---|---|---|
token | string | √ | 设备的标识信息 | 在建立连接时,由edge下发,在规定的时间内未收到心跳,则token失效。 |
deviceId | string | √ | 设备ID | |
cards | list | √ | 卡号列表 | 详见示例 |
- 返回值
参数 | 类型 | 必选 | 说明 | 备注 |
---|---|---|---|---|
code | int | √ | 返回值 | |
message | string | √ | 返回消息 | |
data | list | √ | 卡权限状态列表 | 详见说明及示例 |
说明:
data数组中每个元组有且只有两个字段:cardId以及status
status类型为字符串,具体取值如下:
- ADD_PENDING:已下发给设备端的本地缓存,未确认权限在设备端的处理结果
- ADD_SUCCEEDED:已确认设备端权限下发成功
- ADD_FAILED:下发给设备端时,设备端报错,下发失败
- DELETE_PENDING:已下发删除命令给设备端,未确认权限在设备端的处理结果
- DELETE_SUCCEEDED:已确认设备端权限删除成功
- DELETE_FAILED:删除设备端权限时,设备端报错,删除失败
示例
请求:
{
"token": "1234567890",
"deviceId": "zxcvbnm",
"cards":[
"ABCD1001", "ABCD1002"
]
}
响应:
{
"code": 0,
"message": "",
"data": [
{
"cardId": "ABCD1001",
"status": "ADD_PENDING"
},
{
"cardId": "ABCD1002",
"status": "ADD_SUCCEEDED"
}
]
}
2.2.7 刷卡门禁的权限状态上报
相对url: /cardAC/syncStatus
method: POST
Content-Type:application/json
描述: 由门禁服务器发起。
参数
参数 | 类型 | 必选 | 说明 | 备注 |
---|---|---|---|---|
token | string | √ | 设备的标识信息 | 在建立连接时,由edge下发,在规定的时间内未收到心跳,则token失效。 |
deviceId | string | √ | 设备ID | |
permissions | list | √ | 卡权限状态列表 | 详见说明和示例 |
- 返回值
参数 | 类型 | 必选 | 说明 | 备注 |
---|---|---|---|---|
code | int | √ | 返回值 | |
message | string | √ | 返回消息 |
说明:
permissions数组中每个元组有且只有两个字段:cardId以及status
status类型为字符串,具体取值如下:
- ADD_PENDING:已下发给设备端的本地缓存,未确认权限在设备端的处理结果
- ADD_SUCCEEDED:已确认设备端权限下发成功
- ADD_FAILED:下发给设备端时,设备端报错,下发失败
- DELETE_PENDING:已下发删除命令给设备端,未确认权限在设备端的处理结果
- DELETE_SUCCEEDED:已确认设备端权限删除成功
- DELETE_FAILED:删除设备端权限时,设备端报错,删除失败
示例
请求:
{
"token": "1234567890",
"deviceId": "zxcvbnm",
"permissions": [
{
"cardId": "ABCD1001",
"status": "ADD_SUCCEEDED"
},
{
"cardId": "ABCD1002",
"status": "ADD_FAILED"
}
]
}
响应:
{
"code": 0,
"message": ""
}
2.3 密码门禁-接口
2.3.1 远程开门
相对url: /passwordAC/remoteOpen
method: POST
Content-Type:application/json
描述: 由Edge端发起开门操作。
参数
参数 | 类型 | 必选 | 说明 | 备注 |
---|---|---|---|---|
token | string | √ | 设备的标识信息 | 在建立连接时,由门禁服务管理系统下发,在规定的时间内未收到心跳,则token失效。 |
deviceId | string | √ | 设备ID |
- 返回值
参数 | 类型 | 必选 | 说明 | 备注 |
---|---|---|---|---|
code | int | √ | 返回值 | |
message | string | √ | 返回消息 | |
data | dict | 消息内容 |
示例
请求:
{
"token": "1234567890",
"deviceId": "zxcvbnm",
}
响应:
{
"code": 0,
"message": "",
"data":{}
}
2.3.2 密码设置
相对url: /passwordAC/setPassword
method: POST
Content-Type:application/json
描述: 由Edge端发起密码操作。
参数
参数 | 类型 | 必选 | 说明 | 备注 |
---|---|---|---|---|
token | string | √ | 设备的标识信息 | 在建立连接时,由门禁服务管理系统下发,在规定的时间内未收到心跳,则token失效。 |
deviceId | string | √ | 设备ID | |
operateType | enum | √ | 0: 设置密码 1: 删除密码 |
|
number | int | √ | 密码编号 | |
password | string | 密码 | 设置密码时,该参数有效 |
- 返回值
参数 | 类型 | 必选 | 说明 | 备注 |
---|---|---|---|---|
code | int | √ | 返回值 | |
message | string | √ | 返回消息 | |
data | dict | 消息内容 |
示例
请求:
{
"token" : "1234567890",
"deviceId": "zxcvbnm",
"operateType": 0,
"number": 123,
"password": "密码"
}
响应:
{
"code": 0,
"message": "",
"data":{}
}
2.3.3 请求通行
相对url: /passwordAC/reqPass
method: POST
Content-Type:application/json
描述: 由门禁服务发起。
参数
参数 | 类型 | 必选 | 说明 | 备注 |
---|---|---|---|---|
token | string | √ | 设备的标识信息 | 在建立连接时,由edge下发,在规定的时间内未收到心跳,则token失效。 |
deviceId | string | √ | 设备ID | |
number | int | √ | 密码编号 |
- 返回值
参数 | 类型 | 必选 | 说明 | 备注 |
---|---|---|---|---|
code | int | √ | 返回值 | |
message | string | √ | 返回消息 | |
data | dict | 消息内容 |
示例
请求:
{
"token" : "1234567890",
"deviceId": "zxcvbnm",
"number": 123
}
响应:
{
"code": 0,
"message": "",
"data":{}
}
2.3.4 报警事件
相对url: /passwordAC/alarmEvent
method: POST
Content-Type:application/json
描述: 由门禁服务发起。
参数
参数 | 类型 | 必选 | 说明 | 备注 |
---|---|---|---|---|
token | string | √ | 设备的标识信息 | 在建立连接时,由edge下发,在规定的时间内未收到心跳,则token失效。 |
deviceId | string | √ | 设备ID | |
alarmType | enum | √ | 0: 防拆报警 1: 防拆报警解除 2: 挟持报警 3: 挟持报警解除 4: 三次密码错误报警 5: 三次密码错误报警解除 |
- 返回值
参数 | 类型 | 必选 | 说明 | 备注 |
---|---|---|---|---|
code | int | √ | 返回值 | |
message | string | √ | 返回消息 | |
data | dict | 消息内容 |
示例
请求:
{
"token" : "1234567890",
"deviceId": "zxcvbnm",
"alarmType": 0,
}
响应:
{
"code": 0,
"message": "",
"data":{}
}
2.3.5 运行状态
相对url: /passwordAC/runState
method: POST
Content-Type:application/json
描述: 由门禁服务发起。备注:connect 操作后, 运行状态默认为正常。
参数
参数 | 类型 | 必选 | 说明 | 备注 |
---|---|---|---|---|
token | string | √ | 设备的标识信息 | 在建立连接时,由edge下发,在规定的时间内未收到心跳,则token失效。 |
deviceId | string | √ | 设备ID | |
runState | enum | √ | 0: 运行正常 1: 运行异常 |
- 返回值
参数 | 类型 | 必选 | 说明 | 备注 |
---|---|---|---|---|
code | int | √ | 返回值 | |
message | string | √ | 返回消息 | |
data | dict | 消息内容 |
示例
请求:
{
"token" : "1234567890",
"deviceId": "zxcvbnm",
}
响应:
{
"code": 0,
"message": "",
"data":{}
}
2.4 二维码门禁-接口
2.4.1 远程开门
相对url: /qrCodeAC/remoteOpen
method: POST
Content-Type:application/json
描述: 由Edge端发起开门操作。
参数
参数 | 类型 | 必选 | 说明 | 备注 |
---|---|---|---|---|
token | string | √ | 设备的标识信息 | 在建立连接时,由门禁服务管理系统下发,在规定的时间内未收到心跳,则token失效。 |
deviceId | string | √ | 设备ID |
- 返回值
参数 | 类型 | 必选 | 说明 | 备注 |
---|---|---|---|---|
code | int | √ | 返回值 | |
message | string | √ | 返回消息 | |
data | dict | 消息内容 |
示例
请求:
{
"token": "1234567890",
"deviceId": "zxcvbnm",
}
响应:
{
"code": 0,
"message": "",
"data":{}
}
2.4.2 请求通行
相对url: /qrCodeAC/reqPass
method: POST
Content-Type:application/json
描述: 由门禁服务发起。
参数
参数 | 类型 | 必选 | 说明 | 备注 |
---|---|---|---|---|
token | string | √ | 设备的标识信息 | 在建立连接时,由edge下发,在规定的时间内未收到心跳,则token失效。 |
deviceId | string | √ | 设备ID | |
qrCode | string | √ | 二维码 |
- 返回值
参数 | 类型 | 必选 | 说明 | 备注 |
---|---|---|---|---|
code | int | √ | 返回值 | |
message | string | √ | 返回消息 | |
data | dict | 消息内容 |
示例
请求:
{
"token" : "1234567890",
"deviceId": "zxcvbnm",
"qrCode": "二维码"
}
响应:
{
"code": 0,
"message": "",
"data":{
"state": 1 // 0 二维码比对失败,1,二维码比对成功
}
}
{
"code": 5,
"message": "",
"data":{
"state": 0 // 0 二维码比对失败,1,二维码比对成功
}
}
2.4.3 报警事件
相对url: /qrCodeAC/alarmEvent
method: POST
Content-Type:application/json
描述: 由门禁服务发起。
参数
参数 | 类型 | 必选 | 说明 | 备注 | |
---|---|---|---|---|---|
token | string | √ | 设备的标识信息 | 在建立连接时,由edge下发,在规定的时间内未收到心跳,则token失效。 | |
deviceId | string | √ | 设备ID | ||
alarmType | enum | √ | 0: 防拆报警 1: 防拆报警解除 |
- 返回值
参数 | 类型 | 必选 | 说明 | 备注 |
---|---|---|---|---|
code | int | √ | 返回值 | |
message | string | √ | 返回消息 | |
data | dict | 消息内容 |
示例
请求:
{
"token" : "1234567890",
"deviceId": "zxcvbnm",
"alarmType": 0,
}
响应:
{
"code": 0,
"message": "",
"data":{}
}
2.4.4 运行状态
相对url: /qrCodeAC/runState
method: POST
Content-Type:application/json
描述: 由门禁服务发起。备注:connect 操作后, 运行状态默认为正常。
参数
参数 | 类型 | 必选 | 说明 | 备注 |
---|---|---|---|---|
token | string | √ | 设备的标识信息 | 在建立连接时,由edge下发,在规定的时间内未收到心跳,则token失效。 |
deviceId | string | √ | 设备ID | |
runState | enum | √ | 0: 运行正常 1: 运行异常 |
- 返回值
参数 | 类型 | 必选 | 说明 | 备注 |
---|---|---|---|---|
code | int | √ | 返回值 | |
message | string | √ | 返回消息 | |
data | dict | 消息内容 |
示例
请求:
{
"token" : "1234567890",
"deviceId": "zxcvbnm",
}
响应:
{
"code": 0,
"message": "",
"data":{}
}
3、错误码表
错误码 | 说明 |
---|---|
0 | 成功 |
1 | token无效 |
2 | 请求参数无效或非法 |
3 | 验签失败 |
4 | 权限失效 |
5 | 无权限 |
6 | 传统门禁系统身份无法识别 |
7 | 门禁设备身份无法识别 |
99 | 未知错误 |
4、文档发布历史
v1.1.0 2019-06-02
- 【增加】刷卡通行事件API中,请求报文增加一个可选的参数用于标识事件发生时间。
v1.0.0 2019-08-30
- 门禁服务器对接API初始版本。