zcloud_gbs_edgeguard/OPEN-API.md

135 lines
4.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# EdgeGuard 第三方开放接口
## 1. 查询区域及摄像头关系
```http
GET /open/edgeguard/regions?corpId={corpId}
```
`corpId` 非必填:传入时查询指定企业,不传时查询当前调用方租户下全部企业。接口只返回 `ENABLED` 区域,以及区域下 `BOUND` 状态的摄像头和当前有效的授权人员。
区域中的 `users` 仅包含权限状态为 `ACTIVE`、已到生效开始时间、未到有效结束时间且用户仍处于启用状态的人员;已撤销、已过期、未生效或已停用用户均不返回。
摄像头字段来自海康 `/videopatrol/fixedCamera/videoSelectList`
| 开放字段 | 海康字段 | 说明 |
| --- | --- | --- |
| `cameraId` | `indexCode` | 摄像头唯一编码 |
| `cameraName` | `name` | 摄像头名称 |
| `cameraRegionName` | `regionName` | 海康平台所属区域名称快照 |
| `cameraSource` | 后台固定 | 当前为 `HIKVISION` |
`users` 人员字段:
| 字段 | 说明 |
| --- | --- |
| `userId` | 被授权人员用户 ID |
| `userName` | 人员姓名 |
| `permissionType` | 权限类型:`TEMPORARY`(临时)或 `FIXED`(固定) |
| `effectiveStartTime` | 授权生效开始时间,格式 `yyyy-MM-dd HH:mm:ss` |
| `effectiveEndTime` | 授权生效结束时间;固定权限为 `null` |
| `authorizationSource` | 授权来源:`MANUAL`、`IMPORT` 或 `API` |
响应示例:
```json
{
"success": true,
"data": [{
"regionId": 1001,
"regionCode": "8d9d07f4d9db4c49906a7a891474f3af",
"regionName": "仓库东区",
"corpId": 2001,
"parentId": 0,
"treePath": "/",
"treeLevel": 1,
"sortNo": 10,
"coordinateSystem": "GCJ02",
"fencePoints": [
{"seq": 1, "longitude": 113.1, "latitude": 23.1},
{"seq": 2, "longitude": 113.2, "latitude": 23.1},
{"seq": 3, "longitude": 113.2, "latitude": 23.2},
{"seq": 4, "longitude": 113.1, "latitude": 23.2}
],
"regionStatus": "ENABLED",
"cameras": [{
"cameraSource": "HIKVISION",
"cameraId": "CAMERA-001",
"cameraName": "东门摄像头",
"cameraRegionName": "海康园区一层"
}],
"users": [{
"userId": 3001,
"userName": "张三",
"permissionType": "TEMPORARY",
"effectiveStartTime": "2026-09-03 08:00:00",
"effectiveEndTime": "2026-09-03 18:00:00",
"authorizationSource": "MANUAL"
}]
}]
}
```
## 2. 接收第三方报警
```http
POST /open/edgeguard/alarms
Content-Type: application/json
```
请求字段:
| 字段 | 必填 | 最大长度 | 说明 |
| --- | --- | --- | --- |
| `alarmNo` | 是 | 128 | 第三方报警唯一编号 |
| `sourceSystem` | 是 | 64 | 报警来源系统编码 |
| `recognitionResult` | 是 | 100 | 识别结论,例如“已知人员无权限”或“无法匹配的陌生人员” |
| `alarmTime` | 是 | - | `yyyy-MM-dd HH:mm:ss`,东八区 |
| `regionCode` | 是 | 64 | 区域查询接口返回的稳定编码 |
| `cameraSource` | 是 | 64 | 当前海康摄像头传 `HIKVISION` |
| `cameraId` | 是 | 128 | 区域查询接口返回的摄像头编码 |
| `alarmAddress` | 否 | 500 | 报警位置描述 |
| `alarmImageUrl` | 否 | 1000 | 报警截图地址 |
| `remarks` | 否 | 255 | 补充说明 |
请求示例:
```json
{
"alarmNo": "ALARM-20260903-000001",
"sourceSystem": "FACE_AI",
"recognitionResult": "已知人员无权限",
"alarmTime": "2026-09-03 10:30:00",
"regionCode": "8d9d07f4d9db4c49906a7a891474f3af",
"cameraSource": "HIKVISION",
"cameraId": "CAMERA-001",
"alarmAddress": "仓库东区入口",
"alarmImageUrl": "https://files.example.com/alarm/001.jpg",
"remarks": "人员进入限制区域"
}
```
后台使用 `regionCode + cameraSource + cameraId` 校验摄像头确实绑定在该区域,并从本地数据补充企业、区域和摄像头名称快照。`receivedTime` 和 `disposalStatus=PENDING` 由后台生成。
`sourceSystem + alarmNo` 是幂等键。重复推送返回第一次保存的报警,不重复入库:
```json
{
"success": true,
"data": {
"alarmId": 5001,
"alarmNo": "ALARM-20260903-000001",
"receivedTime": "2026-09-03 10:30:02",
"duplicate": false
}
}
```
## 3. 接入约束
- 两个开放接口都必须携带平台签发的 `token` 请求头。框架认证过滤器解析 token 后把租户信息写入 `AuthContext`,业务接口不接受第三方自行传入的 `tenantId` 作为身份依据。
- 开放接口上线前必须在网关配置第三方应用鉴权、签名、防重放及企业授权范围。
- `corpId` 只作为可选查询条件;不传时按鉴权上下文中的租户范围查询,最终允许访问的企业范围以应用授权为准。
- 第三方报警中的区域和摄像头组合必须来自区域查询接口。
- 报警图片接口只保存 URL不同步下载图片URL 中禁止携带永久明文密钥。