zcloud_gbs_edgeguard/OPEN-API.md

4.8 KiB
Raw Blame History

EdgeGuard 第三方开放接口

1. 查询区域及摄像头关系

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 授权来源:MANUALIMPORTAPI

响应示例:

{
  "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. 接收第三方报警

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 补充说明

请求示例:

{
  "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 校验摄像头确实绑定在该区域,并从本地数据补充企业、区域和摄像头名称快照。receivedTimedisposalStatus=PENDING 由后台生成。

sourceSystem + alarmNo 是幂等键。重复推送返回第一次保存的报警,不重复入库:

{
  "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 中禁止携带永久明文密钥。