资讯 社区 文档
技术能力
语音技术
文字识别
人脸与人体
图像技术
语言与知识
视频技术

接口文档

度目智能应用平台接口文档

版本信息

版本号 变更时间 变更内容
v1.0 2020.03.01 创建接口文档
v1.1 2021.04.19 增加验签规则
v1.2 2021.05.08 增加base64头像图片上传接口
v1.3 2021.05.10 直接下发接口说明更新
v1.4 2021.06.03 更新接口前缀,增加token获取说明
v1.5 2021.06.11 增加Postman接口调用示例和接口示例
v1.6 2021.06.18 识别记录查询和数据推送识别记录,增加三个字段
v1.7 2021.06.28 格式优化,文字描述优化
v1.8 2021.06.30 新增人员同步超时重试接口
数据推送模块,新增设备上线推送、新增人员下发失败(含超时)推送
v1.9 2021.07.07 新增和修改人员接口,当返回错误code 336时,增加额外提示信息:头像被注册的人员id
v2.0 2021.07.13 增加人员直接下发接口组id参数说明
新增和修改人员接口,当返回错误code=336时,提示信息字段返回结构更新
V2.1 2021.07.14 推送接口新增header【pushType】
人员同步失败类型的推送消息,新增业务方id和设备id
V2.2 2021.08.02 新增创建人员接口,人员不存在即新增人员,人员存在即更新人
V2.3 2021.08.23 增加心跳类型说明
度目智能应用平台请求推送地址,需要推送地址支持GET和POST请求,并返回规范数据
V2.4 2021.11.15 更新推送给第三方的字段,Postman验签请求工具更新
V2.5 2021.11.24 验签图片更新,示例代码信息错误修改,示例代码工程更新
V2.6 2022.01.19 补全识别记录返回字段,增加识别记录未通行原因、核验方式
postman请求工具优化字符串传空处理,接口示例代码工程代码优化,去除POST请求前组装参数
数据推送-推送识别记录增加通道号
V3.1.2 2022.03.10 增加视频分析盒子通道和组关联关系查询接口
增加视频分析盒子绑定组查询接口
增加视频分析盒子通道和组关系配置接口
V3.1.3 2022.04.11 增加设备控制接口
增加识别记录重推列表接口
增加识别记录手动补推接口
V3.2.0 2022.05.10 人员接口(访客和成员增改查)增加了一些字段
识别记录增加防疫信息相关字段
识别记录新增同行失败原因
V3.2.1 2023.09.11 识别记录查询接口增加手机号搜索
添加人员接口返回手机号重复增加人员姓名信息
推送checkTimeDate字段删除UTC时间备注
设备告警recoveryTime字段暂不支持提供数据
V3.2.2 2024.01.19 推送字段修改

一. 前言

(一) 文档说明

  本文档为度目智能应用平台对外接口文档,文档分为前言(文档说明、访问限制、接入流程及签名规则、接口调用顺序、返回体数据格式、示例工程)、接口详情、错误码、常见问题四部分。其中前言主要是让您更快地接入度目智能应用平台,包括获取请求必须参数,摘要规则,调用接口顺序以及示例工程。接口详情是接口的详细请求和应答信息以及单个请求代码示例。错误码和常见问题,为您调用接口时出现错误而方便快速及时解决。

(二) 访问限制

  1. 本系统提供的API服务,均定义为HTTP Restful接口。
  2. 接口格式:所有接口默认使用 application/json,对于需要上传file的接口,使用 multipart/form-data,且会在接口说明里单独标注。
  3. 请求接口时必须在RequestParam中带有businessSign(签名,即摘要后的字符串)、nonce(随机数)、businessTimestamp(时间戳)。
  4. 识别记录和告警信息单页返回数据条数范围为1~100。其他分页列表请求,单页返回数据条数范围为1~50,请求参数pageSize超过50将按最大值50条返回。
  5. qps限制,api接口的qps限制跟用户绑定的设备数目正相关,计算公式为:QPS=2+2×设备绑定数。

(三) 接入流程及签名规则

    度目智能应用平台对外接口是提供给度目智能应用平台的客户,从百度外部网络访问的度目智能应用平台对外接口。根据相关规范,度目智能应用平台接口集成在百度智能云平台对外开放。所以调用度目智能应用平台对外接口需要以下步骤:

1.获取access_token

​ 注册并接入百度智能云平台,接入百度智能云及调用智能云上api的方式请参考百度智能云api接入,从智能云平台注册后取得用户的ak( API key)和sk(Secret Key)(获取方法:https://console.bce.baidu.com/ai/?_=1622723338765#/ai/face/chengfeng/overview),然后根据ak和sk获取access_token(获取方法:https://ai.baidu.com/ai-doc/REFERENCE/Ck3dwjhhu),获取access_token之后,在调用接口时要带有access_token才能有效请求。

2. 获取key(验签密钥)

2.1 度目智能应用平台页面右上角用户信息中,可以看到"验签密钥"选项,点击进入,即可看到账户验签密钥,点击复制即可。

图片

3.构建businessSign(签名)

3.1 签名须知

​ 访问度目智能应用平台接口时还需带有一个度目智能应用平台的签名,即摘要请求体之后获得的字符串,规则如下:由于接入机构系统和百度云系统之间的通信涉及到敏感信息,必须保证通信数据不被篡改和伪造。否则,将给机构和百度云带来一定的风险。百度云系统采用签名机制来保证通信安全。本文中的每个接口规范都包括一个参数:businessSign。businessSign是签名结果。机构请求百度云系统API请求数据时,必须双方约定的签名算法参数进行签名。API会检查对应的签名,如果验证不通过,则说明通信数据已经被篡改或伪造。百度云系统没有使用RSA、DSA等给予非对称密钥的签名算法,而是使用了MD5摘要算法。这些摘要算法本身并不能用作签名,但是结合百度云系统合作密钥,也可以起到签名的作用,进而达到防篡改和伪造的目的。每个接入机构的密钥是唯一的,决不能让第三方知道。如果密钥泄漏,必须及时通知百度云系统团队,更换密钥。

3.2签名规则

签名机制包括拼接待签名数据和对待签名数据进行摘要三个步骤:

  1. 待签名数据由除businessSign之外的所有请求参数(除3.3中不参与签名字段)和百度云系统合作密钥按以下规则拼接而成:

​ a) 请求参数都按照名称字符升序排列。(参数名称不允许相同 )

​ b) 对于可选参数(接口规范中的非“必须”参数),如果没有上传,则无需参与拼接。若上传,则需要拼接。

​ c) 将合作密钥作为最后一个参数,参数名为key(请注意,这里的key是度目智能应用平台提供的接入密钥,并非接入百度智能云console时给的sk),参数值就是平台分配的合作密钥本身,合作密钥(key)的获取参见上一步。

​ d) 将请求参数按上述顺序用“&”拼接起来。

  1. 对待签名数据进行MD5摘要

    特殊情况:

    对于json包含数组:因为不包含key,所以对value进行升序排列,&拼接。

    对于json包含数组对象的,先按照相同的规则求对象的md5,然后将md5升序排列,&拼接。

    所有参数均采用UTF-8编码进行签名。相同的字符串(包括中文),如果内部编码格式不同,那么对应的字节流可能也不相同。MD5等摘要算法是对字节流进行操作的。因此,相同字符串的摘要结果未必相同,取决于内部编码。

3.3 注意事项
  • 在签名时,如果参数的值包括&、@等特殊字符或中文,这些字符需要保持原样,不要做URL编码。
  • 上述规则适用于key:value的简单传输,对于部分接口key:jsonobject的传输,则按照相同的规则递归求jsonObject的md5值,当做key的value拼接。
  • 对于value为空或者null的不参与验签
  • 由于开放API通过百度云平台对外开放,appid对用户不可见,属于内部系统的透传参数,所以appId不参与验签。
  • 文件(multipartFile等类型)或图片(Base64等类型)参数格式特殊,不参与验签。比如,人像上传接口(Base64)中的image字段。
  • 除文件(multipartFile等类型)或图片(Base64等类型)参数以外,其他参数一律参与验签。
  • MD5采用的是32位小写的

4.参考示例

复杂对象验签实例图:

图片

(四) Postman请求工具和示例工程

1.Postman请求工具(推荐使用,解决验签失败问题)

1.下载Postman文件,点击此处,点击Postman中的Import,导入度目智能应用平台对外接口和度目智能应用平台OpenApi环境变量。

2.导入之后,打开Environments, 如下图所示,按照图片要求,获取并配置Postman环境变量。

3.验签过程可参考下图,调用接口,即可在在console中查看加密前字符串和加密后MD5:

2. 接口示例代码工程

1.接口示例代码工程与接口详情中每个接口的示例代码同源,示例代码中所需的request文件夹和utils文件夹,都包含在工程之中。

2.下载接口示例代码工程,点击此处

(五) 接口调用顺序

度目智能应用平台对外接口主要提供人员管理、人员组管理、设备管理、同步管理、时间计划、事件管理(识别记录和告警信息)、事件数据推送的功能。目的是让用户能够将需要识别的人员信息(成员、访客、黑名单)分组和时间计划一并下发到自己的设备上,设备以下发到自身的数据为依据对人员按时间计划进行识别,并将识别记录推送到度目智能应用平台服务器,度目智能应用平台的页面会对识别信息和设备告警信息进行展示,用户也可以选择让度目智能应用平台推送识别记录和设备告警信息到用户指定的服务器。接口调用顺序主要有以下几种:

1.常规模式(推荐)

1.1 流程

​ 创建人员-->创建人员组-->创建时间计划-->创建同步任务(包括人员组、设备编号以及时间计划)→同步任务下发到设备→设备进行识别并上传识别记录

1.2 说明

​ 常规模式下,用户调用各模块接口分别创建人员、人员组、时间计划(识别设备的识别时间段),可以在人员创建或编辑时关联已创建人员组id,也可以在人员组创建或修改时关联已创建人员id。然后创建同步任务,同步任务包含要下发的设备、人员组(带有组内人员)和时间计划,同步任务会异步的将任务中带有的信息下发到具体设备上。该方式用户可自由创建和管理人员、人员组、时间计划、同步任务,全量或部分使用最细粒度的接口,完成自己需要的人员识别流程,具体流程如下图:

图片

2.快捷模式

2.1流程

​ 通过人员直接添加同步接口填入人员信息、设备信息、时间计划-->系统创建设备默认人员组-->系统创建同步任务(包括人员组、设备编号以及时间计划)→系统将同步任务下发到设备→设备进行识别并上传识别记录

2.2说明

​ 快捷模式下,用户只调用人员直接添加同步接口,提供人员信息、要下发的设备信息、人员识别时间段等信息给到接口,度目智能应用平台会根据这些信息创建人员,并关联一个默认的人员组,将该人员组和用户提供的设备进行关联创建同步任务,并将同步任务数据下发到设备。该调用方法,用户只调用一个直接同步接口,提供信息给接口,剩下的操作由度目智能应用平台自动完成,方便快捷,但是用户对流程的控制相对减弱。具体流程如下图:

图片

(六)返回体的数据格式

参数 说明 数据类型 是否必填 备注
success 请求是否成功 boolean true 表示成功; false 表示失败
error_code 状态码 Integer 0 成功状态码; 3xx 失败状态码;
result 额外信息,具体格式参见各个接口的返回值示例 json 只有当success为 true 时,接口才会返回 result 字段
page 分页查询接口的额外信息 json 只有是分页查询接口的返回值,且当success为 true 时,接口才会返回 page 字段
error_msg 失败提示信息 json对象 只有当success为 false 时,接口才会返回message字段,否则为空字符串

成功消息示例:

{
    "success":true,
    "error_code":0,
        "error_msg":"",
    "result":{
        "userName":"刘xx",
        "sex":"male",
        "id":"hdjafhak_112"
    }
}

分页查询请求成功消息示例:

{
    "success":true,
    "error_code":0,
        "error_msg":"",
    "page":{
        "pageNo":1,
        "pageSize":10,
        "totalCount":2,
        "result":[
     {...},{...}

        ]
    }
}

失败消息示例:

{
    "success":false,
    "error_code":301,
    "error_msg":{
        "global":"缺少用户名参数"
    }
}

(七)数据推送

  1. 在度目智能应用平台页面-系统管理-开放能力-数据推送,进行推送地址配置。
  2. 在配置推送地址前,贵方需要保证推送地址支持POST和GET两种请求,并返回规范正确的响应信息。规范的响应信息参见本文档,二.接口详情--(六)数据推送--1.1.4 返回字段说明。
  3. 配置完成后,二.接口详情--(六)数据推送的信息将推送到该地址。

二. 接口详情

接口公共字段

json请求与表单请求均必传

字段 含义 备注
nonce 用户生成的随机数
businessTimestamp 用户请求的时间戳
businessSign 当前请求的签名数据 签名规则参考『上文』

(一) 人员API

1 人员管理

1.1 添加人员

1.1.1 基本信息

Path: https://aip.baidubce.com/rest/2.0/chengfeng/openapi/v1/person/add

Method: post

接口描述: 添加人员接口,可添加成员、访客、黑名单

1.1.2 请求参数

Headers

参数名称 参数值 是否必须 示例 备注
Content-Type application/json

RequestParam

参数名 说明 数据类型 是否必填
access_token 请求接口token String

Body

参数名 说明 数据类型 是否必填
name 人员姓名(限长40,超过长度部分会被截去) String
identityCard 身份证号 String
weChat 微信号 String
phoneNum 手机号 String
personType 人员类型 1:成员 2:访客 3:黑名单 Integer
groupIdList 人员组id String数组
memberDetail 成员详情(添加成员需要加传该对象) Object
+sex 性别。(添加成员时可填) 可选值 "male" "female"(注意:其他非可选值一律认为是未知性别) String
+internalNum 成员编号(添加成员时可填) String
+cardId 卡号(添加成员时可填) String
+age 年龄(添加成员时可填) Integer
+passWord 密码(添加成员时可填) String
+entryDate 入职日期,格式为 "yyyy-MM-dd"(添加成员时可填) String
+birthDate 出生日期,格式为 "yyyy-MM-dd"(添加成员时可填) String
guestDetail 访客详情(添加访客需要加传该对象) Object
+startTime 到访起始时间(添加访客时必填),UTC时间,格式 yyyy-MM-dd'T'HH:mm:ss'Z' String
+endTime 到访结束时间(添加访客时必填),UTC时间,格式 yyyy-MM-dd'T'HH:mm:ss'Z' String
+purpose 来访目的(添加访客时可填) String
+receiveMemId 受访人员id(添加访客时可填),该字段必须传度目智能应用平台人员id String
+expiredClearFlag 访客过期清除标志(只有两种值 0:不清除; 1:清除) Integer
+company 公司 String
+position 职位 String
+age 年龄 Integer
+sex 性别 String
+backUp 备注 String
+birthDate 生日 String
phoneNum 手机号(成员字段) String
email 邮箱 String
backUp 备注(访客没有) String
hint 自定义提示语 String
avatar 注册照的key,图片通过上传接口上传后取得 String
showAvatar 展示照的key,图片通过上传接口上传后取得 String
customPersonId 开放接口用户方的人员ID(限长50)(请确保该字段唯一性,否则可能导致不能根据该字段进行查询) String
customExtends 开放接口用户扩展字段(限长200) String

示例代码

package com.baidu.demo.test.person;

import com.baidu.demo.request.GuestDetail;
import com.baidu.demo.request.MemberDetail;
import com.baidu.demo.request.OpenAPIRequest;
import com.baidu.demo.request.PersonAddRequest;
import com.baidu.demo.utils.GsonUtils;
import com.baidu.demo.utils.HttpUtil;
import com.baidu.demo.utils.SignUtil;

public class PersonAdd {
    /**
     * request,utils文件夹请从接口文档中下载
     *
     */
    public static void personAdd() {
        // 1.定义参数
        // 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间, 客户端可自行缓存,过期后重新获取。
        String accessToken = "[调用鉴权接口获取的token]";
        String key = "[度目智能应用平台页面-个人中心-验签密钥]";
        String name = "小明";
        Integer personType = 1;
        String groupId = "测试人员组";
        String sex = "male";
        String internalNum = "45678977";
        String cardId = "123478";
        String passWord = "12453";
        String entryDate = "2021-06-10";
        String birthDate = "1995-06-10";
        String company = "某公司";
        String position = "某职位";
        String startTime = "2021-06-17T08:00:00Z";
        String endTime = "2021-06-17T18:00:00Z";
        String purpose = "访问";
        String receiveMemId = "MEM_815265821110_1032";
        String phoneNum = "13290606065";
        String email = "13290606065@163.com";
        String backUp = "backUp";
        String hint = "欢迎您";
        // 调用人像上传返回参数的key,不是filePath
        String avatar = "153ef41326ee45b413db762795967dac";
        // 调用人像上传返回参数的key,不是filePath
        String showAvatar = "153ef41326ee45b413db762795967dac";
        String customPersonId = "cd12321423";
        String customExtends = "123456";
        // 2.签名
        PersonAddRequest personAddRequest =  PersonAddRequest.builder()
                .name(name)
                .personType(personType)
                .groupIdList(new String[]{groupId})
                .memberDetail(MemberDetail.builder()
                        .sex(sex)
                        .internalNum(internalNum)
                        .cardId(cardId)
                        .passWord(passWord)
                        .entryDate(entryDate)
                        .birthDate(birthDate)
                        .company(company)
                        .position(position)
                        .build())
                .guestDetail(GuestDetail.builder()
                        .startTime(startTime)
                        .endTime(endTime)
                        .purpose(purpose)
                        .receiveMemId(receiveMemId)
                        .build())
                .phoneNum(phoneNum)
                .email(email)
                .backUp(backUp)
                .hint(hint)
                .avatar(avatar)
                .showAvatar(showAvatar)
                .customPersonId(customPersonId)
                .customExtends(customExtends)
                .build();
        OpenAPIRequest sign = SignUtil.sign(personAddRequest, key);
        // 3.转化参数
        String param = GsonUtils.toJson(sign);
        // 4.发送请求
        String url = "https://aip.baidubce.com/rest/2.0/chengfeng/openapi/v1/person/add?access_token="+ accessToken;
        String result = HttpUtil.post(url, param);
        // 5.获取结果
        System.out.println("响应结果: "+ result);
    }

    public static void main(String[] args){
        PersonAdd.personAdd();
    }
}
1.1.3 返回数据

Response

{
    "success":true,
    "error_code":0,
    "error_msg": "",
    "result":{
        "name":"刘xx",(限长40,超过长度部分会被截去)
        “personType”:1
        "groupList":[
            {
                           "groupId":"id_1",
                           "groupName":"name_1"
            }
        ],
        "memberDetail":{      (该对象仅成员返回)
                "sex":"male",(成员字段)
                "internalNum":"B00",(成员字段)
                "cardId":"3278957248935789",(成员字段)
                "passWord":"199010",(成员字段)
                "entryDate":"2020-10-28",(成员字段)
                "birthDate":"1990-10-18"(成员字段)
        },
    "guestDetail":{ (该对象仅访客返回)
        "startTime":"2020-10-28T10:00:00Z",(访客字段)
        "endTime":"2020-10-28T12:00:00Z",(访客字段)
        "status":"ineffective", (访客字段)// 状态,可选值 “ineffective” “effective” “invalid”,分别表示 未生效、生效中、已失效
        "receiveMemId":"dasfasfafd",(访客字段),该字段必须传度目智能应用平台人员id
        "purpose":"商务谈判",(访客字段)
        "expiredClearFlag":0
        },
        "phoneNum":"17221614782",(成员字段)
        "email":"liu@baidu.com",
        "backUp":"无备注",(访客没有)
        "hint":"欢迎光临",
        "avatar":"967624519a0f.jpg",
        "avatarPath":"http://XXXX/967624519a0f.jpg",
        "showAvatar":"967624519a0f.jpg",
        "showAvatarPath":"http://XXXX/967624519a0f.jpg",
        "createTime":"2019-07-22T04:08:54Z",
        "id":"hdjafhak_112",
        "customPersonId":"customPerson1371",
        "customExtends":""
    }
}

Error Response Example

{
    "success":false,
    "error_code":336,
    "error_msg":{
        "global": "头像已被人员 MEM_12345_1 注册"
    },
    "result":{
        "existPersonId": "MEM_12345_1",   
        "existCustomPersonId": "111111"
    }
}
1.1.4 返回字段说明
参数名 说明 数据类型 是否必传
success 请求是否成功 boolean
error_code 状态码 Integer
error_msg 失败提示信息(只有当success为 false 时,接口才会返回message字段) json对象
+existPersonId 失败提示额外信息,头像已被注册的人员id(只有当error_code为336时,接口才会返回existPersonId字段) String
+existCustomPersonId 失败提示额外信息,头像已被注册的人员的用户方人员ID(只有当error_code为336时,接口才会返回existCustomPersonId字段) String
result 请求结果 String
+name 人员姓名 String
+identityCard 身份证号 String
+weChat 微信号 String
+phoneNum 手机号 String
+personType 人员类型 1:成员 2:访客 3:黑名单 Integer
+groupList 人员组实体数组 实体数组
+memberDetail 成员详情(添加成员需要加传该对象) Object
++sex 性别。(成员字段)(注意:其他非可选值一律认为是未知性别) 可选值 "male" "female" String
++internalNum 成员编号(成员字段) String
++cardId 卡号(成员字段) String
++age 年龄(成员字段) Integer
++passWord 密码(成员字段) String
++entryDate 入职日期,格式为 "yyyy-MM-dd"(成员字段) String
++birthDate 出生日期,格式为 "yyyy-MM-dd"(成员字段) String
+guestDetail 访客详情(添加访客需要加传该对象) Object
++startTime 到访起始时间,UTC时间,格式(访客字段) yyyy-MM-dd'T'HH:mm:ss'Z' String
++endTime 到访结束时间,UTC时间,格式(访客字段) yyyy-MM-dd'T'HH:mm:ss'Z' String
++status 访问状态(访客字段),可选值 “ineffective” “effective” “invalid”,分别表示 未生效、生效中、已失效 String
++receiveMemId 受访人员id(访客字段),该字段必须传度目智能应用平台人员id String
++purpose 来访目的(访客字段) String
++expiredClearFlag 访客过期清除标志(0:不清除 1:清除)(访客字段) Integer
++company 公司 String
++position 职位 String
++age 年龄 Integer
++sex 性别 String
++backUp 备注 String
++birthDate 生日 String
+phoneNum 手机号(成员字段) String
+email 邮箱 String
+backUp 备注(访客没有) String
+hint 自定义提示语 String
+avatar 注册照的key,图片通过上传接口上传后取得 String
+avatarPath 注册照的路径,图片通过上传接口上传后取得 String
+showAvatar 展示照的key,图片通过上传接口上传后取得 String
+showAvatarPath 展示照的路径,图片通过上传接口上传后取得 String
+createTime 创建时间(UTC时间) Date
+id 人员ID String
+customPersonId 开放接口用户方的人员ID(限长50) String
+customExtends 开放接口用户扩展字段(限长200) String

1.2 人员列表(分页)

1.2.1 基本信息

Path: https://aip.baidubce.com/rest/2.0/chengfeng/openapi/v1/person/pageable

Method: get

接口描述: 人员列表查询

1.2.2 请求参数

Headers

参数名称 参数值 是否必须 示例 备注
Content-Type application/json

Path 变量

参数名称 说明 数据类型 是否必填

RequestParam

参数名 说明 数据类型 是否必填
access_token 请求接口token String
personType 人员类型 1:成员 2:访客 3:黑名单 Integer
idType 请求路径参数id类型(默认1) 1、度目智能应用平台人员id 2、客户方人员id Integer
name 人员姓名 String
groupId 人员组id String
idList 人员id列表。格式为使用“,” (英文逗号) 拼接的字符串 String
pageNo 页码,大于等于1。默认为1 Integer
pageSize 页大小,默认为10(取值范围1~50) Integer

Body

参数名 说明 数据类型 是否必填

示例代码

package com.baidu.demo.test.person;

import com.baidu.demo.utils.HttpUtil;
import com.baidu.demo.utils.SignUtil;

import java.util.TreeMap;
import java.util.UUID;

public class PersonPageable {

    /**
     * request,utils文件夹请从接口文档, 接口示例代码工程中下载
     *
     */
    public static void personPageable() {
        // 1.定义参数
        // 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间,客户端可自行缓存,过期后重新获取。
        String accessToken = "[调用鉴权接口获取的token]";
        String key = "[度目智能应用平台页面-个人中心-验签密钥]";
        Integer personType = 1;
        Integer idType = 1;
        Integer pageNo =  1;
        Integer pageSize =  10;
        String businessTimestamp = System.currentTimeMillis()+"";
        String nonce = UUID.randomUUID().toString();
        // 2.组装参数
        TreeMap<String, Object> map = new TreeMap<>();
        map.put("personType", personType);
        map.put("idType", idType);
        map.put("pageNo", pageNo);
        map.put("pageSize", pageSize);
        map.put("businessTimestamp", businessTimestamp);
        map.put("nonce",nonce);
        // 3.签名
        String businessSign = SignUtil.sign(map, key);
        map.put("businessSign", businessSign);
        map.put("access_token", accessToken);
        // 4.发送请求
        String url = "https://aip.baidubce.com/rest/2.0/chengfeng/openapi/v1/person/pageable";
        String result = HttpUtil.get(map, url);
        // 5.获取结果
        System.out.println("响应结果: "+ result);
    }

    public static void main(String[] args) {
        PersonPageable.personPageable();
    }
}
1.2.3 返回数据

Response

{
    "success":true,
    "error_code":0,
        "error_msg": "",
    "page":{
        "pageNo":1,
        "pageSize":10,
        "totalCount":2,
        "hasMore":true,
        "totalAvatarCount":1,
        "result":[
     {
         "name":"刘xx",
                    "personType" : 1,
         "groupList":[
             {
                                     "groupId":"id_1",
                                     "groupName":"name_1"
             }
         ],
           "memberDetail":{ (该对象仅成员返回)
                    "sex":"male",(成员字段)(注意:其他非可选值一律认为是未知性别)
                    "internalNum":"B00",(成员字段)
                    "cardId":"3278957248935789",(成员字段)
                   "passWord":"199010",(成员字段)
                    "entryDate":"2020-10-28",(成员字段)
                    "birthDate":"1990-10-18"(成员字段)
           },
        "guestDetail":{(该对象仅访客返回)
            "startTime":"2020-10-28T10:00:00Z",(访客字段)
           "endTime":"2020-10-28T12:00:00Z",(访客字段)
           "status":"ineffective", (访客字段)// 状态,可选值 “ineffective” “effective” “invalid”,分别表示 未生效、生效中、已失效
            "receiveMemId":"dasfasfafd",(访客字段),该字段必须传度目智能应用平台人员id
           "purpose":"商务谈判",(访客字段)
           "expiredClearFlag":0 (访客字段)
            },
                    "phoneNum":"17221614782",(成员字段)
         "email":"liu@baidu.com",
         "backUp":"无备注",(访客没有)
         "hint":"欢迎光临",
         "avatar":"967624519a0f.jpg",
         "avatarPath":"http://XXXX/967624519a0f.jpg",
         "showAvatar":"967624519a0f.jpg",
         "showAvatarPath":"http://XXXX/967624519a0f.jpg",
                    "appId": "807949663664",
         "createTime":"2019-07-22T04:08:54Z",
         "id":"hdjafhak_112",
             "customPersonId":"customPerson1371",
             "customExtends":""
     },
          { ... }
        ]
    }
}
1.2.4 返回字段说明
参数名 说明 数据类型 是否必填
success 请求是否成功 boolean
error_code 状态码 Integer
error_msg 失败提示信息(只有当success为 false 时,接口才会返回message字段) json对象
page page对象 map
+pageNo 页码 Integer
+pageSize 页大小 Integer
+totalCount 总条数 Integer
+hasMore 是否还有更多数据 boolean
+totalAvatarCount 带头像数据条数 Long
+result 结果详情描述 list
++name 人员姓名 String
++identityCard 身份证号 String
++weChat 微信号 String
++phoneNum 手机号 String
++personType 人员类型 1:成员 2:访客 3:黑名单 Integer
++groupList 成员组实体数组 实体数组
++memberDetail 成员详情(添加成员需要加传该对象) Object
+++sex 性别。(成员字段)(注意:其他非可选值一律认为是未知性别) 可选值 "male" "female" String
+++internalNum 成员编号(成员字段) String
+++cardId 卡号(成员字段) String
+++age 年龄(成员字段) Integer
+++passWord 密码(成员字段) String
+++entryDate 入职日期,格式为 "yyyy-MM-dd"(成员字段) String
+++birthDate 出生日期,格式为 "yyyy-MM-dd"(成员字段) String
++guestDetail 访客详情(添加访客需要加传该对象) Object
+++startTime 到访起始时间,UTC时间,格式(访客字段) yyyy-MM-dd'T'HH:mm:ss'Z' String
+++endTime 到访结束时间,UTC时间,格式(访客字段) yyyy-MM-dd'T'HH:mm:ss'Z' String
+++status 访问状态(访客字段),可选值 “ineffective” “effective” “invalid”,分别表示 未生效、生效中、已失效 String
+++receiveMemId 受访人员id(访客字段),该字段必须传度目智能应用平台人员id String
+++purpose 来访目的(访客字段) String
+++expiredClearFlag 访客过期清除标志(0:不清除 1:清除)(访客字段) Integer
+++company 公司 String
+++position 职位 String
+++age 年龄 Integer
+++sex 性别 String
+++backUp 备注 String
+++birthDate 生日 String
++phoneNum 手机号(成员字段) String
++email 邮箱 String
++backUp 备注(访客没有) String
++hint 自定义提示语 String
++avatar 注册照的key,图片通过上传接口上传后取得 String
++showAvatar 展示照的key,图片通过上传接口上传后取得 String
++avatarPath 注册照的路径,图片通过上传接口上传后取得 String
++showAvatarPath 展示照的路径,图片通过上传接口上传后取得 String
++appId 应用id String
++createTime 创建时间(UTC时间) Date
++id 人员ID String
++customPersonId 开放接口用户方的人员ID(限长50) String
++customExtends 开放接口用户扩展字段(限长200) String

1.3 人员详情

1.3.1 基本信息

Path: https://aip.baidubce.com/rest/2.0/chengfeng/openapi/v1/person/detail

Method: get

接口描述: 查询人员的详情,按人员类型参数区分

1.3.2 请求参数

Headers

参数名称 参数值 是否必须 示例 备注
Content-Type application/json

Path 变量

参数名称 说明 数据类型 是否必填

RequestParam

参数名 说明 数据类型 是否必填
access_token 请求接口token String
id 人员的唯一标识 String
personType 人员类型 1:成员 2:访客 3:黑名单 Integer
idType 请求路径参数id类型(默认1) 1、度目智能应用平台人员id 2、客户方人员id Integer

Body

参数名 说明 数据类型 是否必填

示例代码

package com.baidu.demo.test.person;

import com.baidu.demo.utils.HttpUtil;
import com.baidu.demo.utils.SignUtil;

import java.util.TreeMap;
import java.util.UUID;

public class PersonDetail {

    /**
     * request,utils文件夹请从接口文档, 接口示例代码工程中下载
     *
     */
    public static void personDetail() {
        // 1.定义参数
        // 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间,客户端可自行缓存,过期后重新获取。
        String accessToken = "[调用鉴权接口获取的token]";
        String key = "[度目智能应用平台页面-个人中心-验签密钥]";
        String id =  "MEM_815265821110_1032";
        String personType =  "1";
        String idType =  "1";
        String businessTimestamp = System.currentTimeMillis()+"";
        String nonce = UUID.randomUUID().toString();
        // 2.组装参数
        TreeMap<String, Object> map = new TreeMap<>();
        map.put("id", id);
        map.put("personType", personType);
        map.put("idType", idType);
        map.put("businessTimestamp", businessTimestamp);
        map.put("nonce",nonce);
        // 3.签名
        String businessSign = SignUtil.sign(map, key);
        map.put("businessSign", businessSign);
        map.put("access_token", accessToken);
        // 4.发送请求
        String url = "https://aip.baidubce.com/rest/2.0/chengfeng/openapi/v1/person/detail";
        String result = HttpUtil.get(map, url);
        // 5.获取结果
        System.out.println("响应结果: "+ result);
    }

    public static void main(String[] args) {
        PersonDetail.personDetail();
    }

}
1.3.3 返回数据

Response

{
    "success":true,
    "error_code":0,
    "error_msg": "",
    "result":{
        "name":"刘xx",
        “personType”:1
        "groupList":[
            {
                           "groupId":"id_1",
                           "groupName":"name_1"
            }
        ],
        "memberDetail":{       (该对象仅成员返回)
                "sex":"male",(成员字段)
                "internalNum":"B00",(成员字段)
                "cardId":"3278957248935789",(成员字段)
                "passWord":"199010",(成员字段)
                "entryDate":"2020-10-28",(成员字段)
                "birthDate":"1990-10-18"(成员字段)
        },
    "guestDetail":{    (该对象仅成员返回)
        "startTime":"2020-10-28T10:00:00Z",(访客字段)
        "endTime":"2020-10-28T12:00:00Z",(访客字段)
        "status":"ineffective", (访客字段)// 状态,可选值 “ineffective” “effective” “invalid”,分别表示 未生效、生效中、已失效
        "receiveMemId":"dasfasfafd",(访客字段),该字段必须传度目智能应用平台人员id
        "purpose":"商务谈判",(访客字段)
        "expiredClearFlag":0(访客字段)
        },
        "phoneNum":"17221614782",(成员字段)
        "email":"liu@baidu.com",
        "backUp":"无备注",(访客没有)
        "hint":"欢迎光临",
        "avatar":"967624519a0f.jpg",
        "avatarPath":"http://XXXX/967624519a0f.jpg",
        "showAvatar":"967624519a0f.jpg",
        "showAvatarPath":"http://XXXX/967624519a0f.jpg",
        "createTime":"2019-07-22T04:08:54Z",
        "id":"hdjafhak_112",
        "customPersonId":"customPerson1371",
        "customExtends":""
    }
}
1.3.4 返回字段说明
参数名 说明 数据类型 是否必传
success 请求是否成功 boolean
error_code 状态码 Integer
error_msg 失败提示信息(只有当success为 false 时,接口才会返回message字段) json对象
result 请求结果 String
+name 人员姓名 String
+identityCard 身份证号 String
+weChat 微信号 String
+phoneNum 手机号 String
+personType 人员类型 1:成员 2:访客 3:黑名单 Integer
+groupList 人员组实体数组 实体数组
+memberDetail 成员详情(添加成员需要加传该对象) Object
++sex 性别。(成员字段) 可选值 "male" "female" String
++internalNum 成员编号(成员字段) String
++cardId 卡号(成员字段) String
++age 年龄(成员字段) Integer
++passWord 密码(成员字段) String
++entryDate 入职日期,格式为 "yyyy-MM-dd"(成员字段) String
++birthDate 出生日期,格式为 "yyyy-MM-dd"(成员字段) String
+guestDetail 访客详情(添加访客需要加传该对象) Object
++startTime 到访起始时间,UTC时间,格式(访客字段) yyyy-MM-dd'T'HH:mm:ss'Z' String
++endTime 到访结束时间,UTC时间,格式(访客字段) yyyy-MM-dd'T'HH:mm:ss'Z' String
++status 访问状态(访客字段),可选值 “ineffective” “effective” “invalid”,分别表示 未生效、生效中、已失效 String
++receiveMemId 受访人员id(访客字段),该字段必须传度目智能应用平台人员id String
++purpose 来访目的(访客字段) String
++expiredClearFlag 访客过期清除标志(0:不清除 1:清除)(访客字段) Integer
++company 公司 String
++position 职位 String
++age 年龄 Integer
++sex 性别 String
++backUp 备注 String
++birthDate 生日 String
+phoneNum 手机号(成员字段) String
+email 邮箱 String
+backUp 备注(访客没有) String
+hint 自定义提示语 String
+avatar 注册照的key,图片通过上传接口上传后取得 String
+avatarPath 注册照的路径,图片通过上传接口上传后取得 String
+showAvatar 展示照的key,图片通过上传接口上传后取得 String
+showAvatarPath 展示照的路径,图片通过上传接口上传后取得 String
+createTime 创建时间(UTC时间) Date
+id 人员ID String
+customPersonId 开放接口用户方的人员ID(限长50) String
+customExtends 开放接口用户扩展字段(限长200) String

1.4 修改人员

1.4.1 基本信息

Path: https://aip.baidubce.com/rest/2.0/chengfeng/openapi/v1/person/update

Method: post

接口描述: 修改人员,按人员类型参数区分

1.4.2 请求参数

Headers

参数名称 参数值 是否必须 示例 备注
Content-Type application/json

Path 变量

参数名称 说明 数据类型 是否必填

RequestParam

参数名 说明 数据类型 是否必填
access_token 请求接口token String
id 人员的唯一标识 String

Body

参数名 说明 数据类型 是否必填
name 姓名(限长40,超过长度部分会被截去) String
identityCard 身份证号 String
weChat 微信号 String
phoneNum 手机号 String
personType 人员类型 1:成员 2:访客 3:黑名单 Integer
idType 请求路径参数id类型(默认1) 1、度目智能应用平台人员id 2、客户方人员id Integer
groupIdList 人员组id String数组
memberDetail 成员详情(添加成员需要加传该对象) Object
+sex 性别。(添加成员时可填)(注意:其他非可选值一律认为是未知性别) 可选值 "male" "female" String
+internalNum 成员编号(添加成员时可填) String
+cardId 卡号(添加成员时可填) String
+age 年龄(添加成员时可填) Integer
+passWord 密码(添加成员时可填) String
+entryDate 入职日期,格式为 "yyyy-MM-dd"(添加成员时可填) String
+birthDate 出生日期,格式为 "yyyy-MM-dd"(添加成员时可填) String
guestDetail 访客详情(添加访客需要加传该对象) Object
+startTime 到访起始时间(添加访客时必填),UTC时间,格式 yyyy-MM-dd'T'HH:mm:ss'Z' String
+endTime 到访结束时间(添加访客时必填),UTC时间,格式 yyyy-MM-dd'T'HH:mm:ss'Z' String
+purpose 来访目的(添加访客时可填) String
+receiveMemId 受访人员id(添加访客时可填),该字段必须传度目智能应用平台人员id String
+expiredClearFlag 访客过期清除标志(只有两种值 0:不清除; 1:清除) Integer
+company 公司 String
+position 职位 String
+age 年龄 Integer
+sex 性别 String
+backUp 备注 String
+birthDate 生日 String
phoneNum 手机号(成员字段) String
email 邮箱 String
backUp 备注(访客没有) String
hint 自定义提示语 String
avatar 注册照的key,图片通过上传接口上传后取得 String
showAvatar 展示照的key,图片通过上传接口上传后取得 String
customPersonId 开放接口用户方的人员ID(限长50)(请确保该字段唯一性,否则可能导致不能根据该字段进行查询) String
customExtends 开放接口用户扩展字段(限长200) String

示例代码

package com.baidu.demo.test.person;

import com.baidu.demo.request.GuestDetail;
import com.baidu.demo.request.MemberDetail;
import com.baidu.demo.request.OpenAPIRequest;
import com.baidu.demo.request.PersonAddRequest;
import com.baidu.demo.utils.GsonUtils;
import com.baidu.demo.utils.HttpUtil;
import com.baidu.demo.utils.SignUtil;

import java.util.HashMap;
import java.util.Map;

public class PersonUpdate {

    /**
     * request,utils文件夹请从接口文档, 接口示例代码工程中下载
     *
     */
    public static void personUpdate() {
        // 1.定义参数
        // 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间, 客户端可自行缓存,过期后重新获取。
        String accessToken = "[调用鉴权接口获取的token]";
        String key = "[度目智能应用平台页面-个人中心-验签密钥]";
        String id = "MEM_815265821110_76882";
        Integer idType = 1;
        String name = "新小明";
        Integer personType = 1;
        String groupId = "测试人员组";
        String sex = "male";
        String internalNum = "45678977";
        String cardId = "123478";
        String passWord = "12453";
        String entryDate = "2021-06-10";
        String birthDate = "1995-06-10";
        String company = "某公司";
        String position = "某职位";
        String startTime = "2021-06-17T08:00:00Z";
        String endTime = "2021-06-17T18:00:00Z";
        String purpose = "访问";
        String receiveMemId = "MEM_815265821110_1032";
        String phoneNum = "13290606065";
        String email = "13290606065@163.com";
        String backUp = "backUp";
        String hint = "欢迎您";
        // 调用人像上传返回参数的key,不是filePath
        String avatar = "153ef41326ee45b413db762795967dac";
        // 调用人像上传返回参数的key,不是filePath
        String showAvatar = "153ef41326ee45b413db762795967dac";
        String customPersonId = "cd12321423";
        String customExtends = "123456";
        // 2.签名
        PersonAddRequest personUpdateRequest =  PersonAddRequest.builder()
                .name(name)
                .personType(personType)
                .groupIdList(new String[]{groupId})
                .idType(idType)
                .memberDetail(MemberDetail.builder()
                        .sex(sex)
                        .internalNum(internalNum)
                        .cardId(cardId)
                        .passWord(passWord)
                        .entryDate(entryDate)
                        .birthDate(birthDate)
                        .company(company)
                        .position(position)
                        .build())
                .guestDetail(GuestDetail.builder()
                        .startTime(startTime)
                        .endTime(endTime)
                        .purpose(purpose)
                        .receiveMemId(receiveMemId)
                        .build())
                .phoneNum(phoneNum)
                .email(email)
                .backUp(backUp)
                .hint(hint)
                .avatar(avatar)
                .showAvatar(showAvatar)
                .customPersonId(customPersonId)
                .customExtends(customExtends)
                .build();
        Map<String, String> personUpdateParams = new HashMap<>();
        personUpdateParams.put("id" , id) ;
        OpenAPIRequest sign = SignUtil.sign(personUpdateRequest, personUpdateParams, key);
        // 3.转化参数
        String param = GsonUtils.toJson(sign);
        // 4.发送请求
        String url = "https://aip.baidubce.com/rest/2.0/chengfeng/openapi/v1/person/update?access_token="+ accessToken +"&id="+ id;
        String result = HttpUtil.post(url, param);
        // 5.获取结果
        System.out.println("响应结果: "+ result);
    }

    public static void main(String[] args) {
        PersonUpdate.personUpdate();
    }
}
1.4.3 返回数据

Response

{
    "success":true,
    "error_code":0,
    "error_msg": "",
    "result":{
        "name":"刘xx",(限长40,超过长度部分会被截去)
        “personType”:1
        "groupList":[
            {
                           "groupId":"id_1",
                           "groupName":"name_1"
            }
        ],
        "memberDetail":{       (该对象仅成员返回)
                "sex":"male",(成员字段)
                "internalNum":"B00",(成员字段)
                "cardId":"3278957248935789",(成员字段)
                "passWord":"199010",(成员字段)
                "entryDate":"2020-10-28",(成员字段)
                "birthDate":"1990-10-18"(成员字段)
        },
    "guestDetail":{    (该对象仅访客返回)
        "startTime":"2020-10-28T10:00:00Z",(访客字段)
        "endTime":"2020-10-28T12:00:00Z",(访客字段)
        "status":"ineffective", (访客字段)// 状态,可选值 “ineffective” “effective” “invalid”,分别表示 未生效、生效中、已失效
        "receiveMemId":"dasfasfafd",(访客字段),该字段必须传度目智能应用平台人员id
        "purpose":"商务谈判",(访客字段)
        "expiredClearFlag":0(访客字段)
        },
        "phoneNum":"17221614782",
        "email":"liu@baidu.com",
        "backUp":"无备注",(访客没有)
        "hint":"欢迎光临",
        "avatar":"967624519a0f.jpg",
        "avatarPath":"http://XXXX/967624519a0f.jpg",
        "showAvatar":"967624519a0f.jpg",
        "showAvatarPath":"http://XXXX/967624519a0f.jpg",
        "createTime":"2019-07-22T04:08:54Z",
        "id":"hdjafhak_112",
        "customPersonId":"customPerson1371",
        "customExtends":""
    }
}

Error Response Example

{
    "success":false,
    "error_code":336,
    "error_msg":{
        "global": "头像已被人员 MEM_12345_1 注册"
    },
    "result":{
        "existPersonId": "MEM_12345_1",
        "existCustomPersonId": "111111"
    }
}
1.4.4 返回字段说明
参数名 说明 数据类型 是否必传
success 请求是否成功 boolean
error_code 状态码 Integer
error_msg 失败提示信息(只有当success为 false 时,接口才会返回message字段) json对象
+existPersonId 失败提示额外信息,头像已被注册的人员id(只有当error_code为336时,接口才会返回existPersonId字段) String
+existCustomPersonId 失败提示额外信息,头像已被注册的人员的用户方人员ID(只有当error_code为336时,接口才会返回existCustomPersonId字段) String
result 请求结果 String
+name 人员姓名 String
+identityCard 身份证号 String
+weChat 微信号 String
+phoneNum 手机号 String
+personType 人员类型 1:成员 2:访客 3:黑名单 Integer
+groupList 人员组实体数组 实体数组
+memberDetail 成员详情(添加成员需要加传该对象) Object
++sex 性别。(成员字段) 可选值 "male" "female" String
++internalNum 成员编号(成员字段) String
++cardId 卡号(成员字段) String
++age 年龄(成员字段) Integer
++passWord 密码(成员字段) String
++entryDate 入职日期,格式为 "yyyy-MM-dd"(成员字段) String
++birthDate 出生日期,格式为 "yyyy-MM-dd"(成员字段) String
+guestDetail 访客详情(添加访客需要加传该对象) Object
++startTime 到访起始时间,UTC时间,格式(访客字段) yyyy-MM-dd'T'HH:mm:ss'Z' String
++endTime 到访结束时间,UTC时间,格式(访客字段) yyyy-MM-dd'T'HH:mm:ss'Z' String
++status 访问状态(访客字段),可选值 “ineffective” “effective” “invalid”,分别表示 未生效、生效中、已失效 String
++receiveMemId 受访人员id(访客字段),该字段必须传度目智能应用平台人员id String
++purpose 来访目的(访客字段) String
++expiredClearFlag 访客过期清除标志(0:不清除 1:清除)(访客字段) Integer
++company 公司 String
++position 职位 String
++age 年龄 Integer
++sex 性别 String
++backUp 备注 String
++birthDate 生日 String
+phoneNum 手机号(成员字段) String
+email 邮箱 String
+backUp 备注(访客没有) String
+hint 自定义提示语 String
+avatar 注册照的key,图片通过上传接口上传后取得 String
+avatarPath 注册照的路径,图片通过上传接口上传后取得 String
+showAvatar 展示照的key,图片通过上传接口上传后取得 String
+showAvatarPath 展示照的路径,图片通过上传接口上传后取得 String
+createTime 创建时间(UTC时间) Date
+id 人员ID String
+customPersonId 开放接口用户方的人员ID(限长50) String
+customExtends 开放接口用户扩展字段(限长200) String

1.5 删除人员

1.5.1 基本信息

Path: https://aip.baidubce.com/rest/2.0/chengfeng/openapi/v1/person/delete

Method: post

接口描述: 批量删除人员的接口,可以批量删除成员、访客、黑名单,但一次只能删除一种人员,按人员类型参数区分

1.5.2 请求参数

Headers

参数名称 参数值 是否必须 示例 备注
Content-Type application/json

Path 变量

参数名称 说明 数据类型 是否必填

RequestParam

参数名 说明 数据类型 是否必填
access_token 请求接口token String

Body

参数名 说明 数据类型 是否必填
idList 人员id数组 String数组
personType 人员类型 1:成员 2:访客 3:黑名单 Integer
idType 请求路径参数id类型(默认1) 1、度目智能应用平台人员id 2、客户方人员id Integer

示例代码

package com.baidu.demo.test.person;

import com.baidu.demo.request.OpenAPIRequest;
import com.baidu.demo.request.PersonDelRequest;
import com.baidu.demo.utils.GsonUtils;
import com.baidu.demo.utils.HttpUtil;
import com.baidu.demo.utils.SignUtil;

import java.util.TreeMap;

public class PersonDelete {

    /**
     * request,utils文件夹请从接口文档, 接口示例代码工程中下载
     *
     */
    public static void groupDelete() {
        // 1.定义参数
        // 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间, 客户端可自行缓存,过期后重新获取。
        String accessToken = "[调用鉴权接口获取的token]";
        String key = "[度目智能应用平台页面-个人中心-验签密钥]";
        String[] idList = {"MEM_815265821110_1038"};
        Integer personType = 1;
        Integer idType = 1;
        // 2.签名
        PersonDelRequest groupAdd = PersonDelRequest.builder()
                .idList(idList)
                .personType(personType)
                .idType(idType)
                .build();
        OpenAPIRequest sign = SignUtil.sign(groupAdd, key);
        // 2.组装参数
        TreeMap<String, Object> map = new TreeMap<>();
        map.put("idList", idList);
        map.put("personType", personType);
        map.put("idType", idType);
        map.put("businessTimestamp", sign.getBusinessTimestamp());
        map.put("nonce", sign.getNonce());
        map.put("businessSign", sign.getBusinessSign());
        String param = GsonUtils.toJson(map);
        // 4.发送请求
        String url = "https://aip.baidubce.com/rest/2.0/chengfeng/openapi/v1/person/delete?access_token=" + accessToken;
        String result = HttpUtil.post(url, param);
        // 5.获取结果
        System.out.println("响应结果: " + result);
    }

    public static void main(String[] args){
        PersonDelete.groupDelete();
    }
}
1.5.3 返回数据

Response

{
    "success":true,
    "error_code":0,
         "error_msg": "",
    "result":{
        "successIdList":[
            "fsdafa1","dsafdas2"
        ],
        "failIdList":[
            "fsdafa3"
        ]
    }
}
1.5.4 返回字段说明
参数名 说明 数据类型 是否必传
success 请求是否成功 boolean
error_code 状态码 Integer
error_msg 失败提示信息(只有当success为 false 时,接口才会返回message字段) json对象
result 请求结果 String
+successIdList 删除成功ID列表 字符串数组
+failIdList 删除失败ID列表 字符串数组

1.6 创建人员

1.6.1 基本信息

Path: https://aip.baidubce.com/rest/2.0/chengfeng/openapi/v1/person/create

Method: post

接口描述: 人员不存在即添加(调用添加人员接口),存在即更新(调用人员更新),具体响应信息取决于是调用添加还是更新接口。

1.6.2 请求参数

Headers

参数名称 参数值 是否必须 示例 备注
Content-Type application/json

Path 变量

参数名称 说明 数据类型 是否必填

RequestParam

参数名 说明 数据类型 是否必填
access_token 请求接口token String
id 度目智能应用平台人员id(不可传客户方人员id) String

Body

参数名 说明 数据类型 是否必填
name 姓名(限长40,超过长度部分会被截去) String
identityCard 身份证号 String
weChat 微信号 String
phoneNum 手机号 String
personType 人员类型 1:成员 2:访客 3:黑名单 Integer
groupIdList 人员组id String数组
memberDetail 成员详情(添加成员需要加传该对象) Object
+sex 性别。(添加成员时可填)(注意:其他非可选值一律认为是未知性别) 可选值 "male" "female" String
+internalNum 成员编号(添加成员时可填) String
+cardId 卡号(添加成员时可填) String
+age 年龄(添加成员时可填) Integer
+passWord 密码(添加成员时可填) String
+entryDate 入职日期,格式为 "yyyy-MM-dd"(添加成员时可填) String
+birthDate 出生日期,格式为 "yyyy-MM-dd"(添加成员时可填) String
guestDetail 访客详情(添加访客需要加传该对象) Object
+startTime 到访起始时间(添加访客时必填),UTC时间,格式 yyyy-MM-dd'T'HH:mm:ss'Z' String
+endTime 到访结束时间(添加访客时必填),UTC时间,格式 yyyy-MM-dd'T'HH:mm:ss'Z' String
+purpose 来访目的(添加访客时可填) String
+receiveMemId 受访人员id(添加访客时可填),该字段必须传度目智能应用平台人员id String
+expiredClearFlag 访客过期清除标志(只有两种值 0:不清除; 1:清除) Integer
+company 公司 String
+position 职位 String
+age 年龄 Integer
+sex 性别 String
+backUp 备注 String
+birthDate 生日 String
phoneNum 手机号(成员字段) String
email 邮箱 String
backUp 备注(访客没有) String
hint 自定义提示语 String
avatar 注册照的key,图片通过上传接口上传后取得 String
showAvatar 展示照的key,图片通过上传接口上传后取得 String
customPersonId 开放接口用户方的人员ID(限长50),即客户方人员id(请确保该字段唯一性,否则可能导致不能根据该字段进行查询) String
customExtends 开放接口用户扩展字段(限长200) String

示例代码

package com.baidu.demo.test.person;

import com.baidu.demo.request.GuestDetail;
import com.baidu.demo.request.MemberDetail;
import com.baidu.demo.request.OpenAPIRequest;
import com.baidu.demo.request.PersonAddRequest;
import com.baidu.demo.utils.GsonUtils;
import com.baidu.demo.utils.HttpUtil;
import com.baidu.demo.utils.SignUtil;

import java.util.HashMap;
import java.util.Map;

public class PersonCreate {

    /**
     * request,utils文件夹请从接口文档, 接口示例代码工程中下载
     *
     */
    public static void personCreate() {
        // 1.定义参数
        // 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间, 客户端可自行缓存,过期后重新获取。
        String accessToken = "[调用鉴权接口获取的token]";
        String key = "[度目智能应用平台页面-个人中心-验签密钥]";
        String id = "MEM_815265821110_81793";
        String name = "新小明";
        Integer personType = 1;
        String groupId = "测试人员组";
        String sex = "male";
        String internalNum = "45678977";
        String cardId = "123478";
        String passWord = "12453";
        String entryDate = "2021-06-10";
        String birthDate = "1995-06-10";
        String company = "某公司";
        String position = "某职位";
        String startTime = "2021-06-17T08:00:00Z";
        String endTime = "2021-06-17T18:00:00Z";
        String purpose = "访问";
        String receiveMemId = "MEM_815265821110_1032";
        String phoneNum = "13290606065";
        String email = "13290606065@163.com";
        String backUp = "backUp";
        String hint = "欢迎您";
        // 调用人像上传返回参数的key,不是filePath
        String avatar = "153ef41326ee45b413db762795967dac";
        // 调用人像上传返回参数的key,不是filePath
        String showAvatar = "153ef41326ee45b413db762795967dac";
        String customPersonId = "cd12321423";
        String customExtends = "123456";
        // 2.签名
        PersonAddRequest personUpdateRequest =  PersonAddRequest.builder()
                .name(name)
                .personType(personType)
                .groupIdList(new String[]{groupId})
                .memberDetail(MemberDetail.builder()
                        .sex(sex)
                        .internalNum(internalNum)
                        .cardId(cardId)
                        .passWord(passWord)
                        .entryDate(entryDate)
                        .birthDate(birthDate)
                        .company(company)
                        .position(position)
                        .build())
                .guestDetail(GuestDetail.builder()
                        .startTime(startTime)
                        .endTime(endTime)
                        .purpose(purpose)
                        .receiveMemId(receiveMemId)
                        .build())
                .phoneNum(phoneNum)
                .email(email)
                .backUp(backUp)
                .hint(hint)
                .avatar(avatar)
                .showAvatar(showAvatar)
                .customPersonId(customPersonId)
                .customExtends(customExtends)
                .build();
        Map<String, String> personUpdateParams = new HashMap<>();
        personUpdateParams.put("id" , id) ;
        OpenAPIRequest sign = SignUtil.sign(personUpdateRequest, personUpdateParams, key);
        // 3.转化参数
        String param = GsonUtils.toJson(sign);
        // 4.发送请求
        String url = "https://aip.baidubce.com/rest/2.0/chengfeng/openapi/v1/person/create?access_token="
                + accessToken +"&id="+ id;
        String result = HttpUtil.post(url, param);
        // 5.获取结果
        System.out.println("响应结果: "+ result);
    }

    public static void main(String[] args){
        PersonCreate.personCreate();
    }
}
1.6.3 返回数据

Response

{
    "success":true,
    "error_code":0,
    "error_msg": "",
    "result":{
        "name":"刘xx",(限长40,超过长度部分会被截去)
        “personType”:1
        "groupList":[
            {
                           "groupId":"id_1",
                           "groupName":"name_1"
            }
        ],
        "memberDetail":{       (该对象仅成员返回)
                "sex":"male",(成员字段)
                "internalNum":"B00",(成员字段)
                "cardId":"3278957248935789",(成员字段)
                "passWord":"199010",(成员字段)
                "entryDate":"2020-10-28",(成员字段)
                "birthDate":"1990-10-18"(成员字段)
        },
    "guestDetail":{    (该对象仅访客返回)
        "startTime":"2020-10-28T10:00:00Z",(访客字段)
        "endTime":"2020-10-28T12:00:00Z",(访客字段)
        "status":"ineffective", (访客字段)// 状态,可选值 “ineffective” “effective” “invalid”,分别表示 未生效、生效中、已失效
        "receiveMemId":"dasfasfafd",(访客字段),该字段必须传度目智能应用平台人员id
        "purpose":"商务谈判",(访客字段)
        "expiredClearFlag":0(访客字段)
        },
        "phoneNum":"17221614782",
        "email":"liu@baidu.com",
        "backUp":"无备注",(访客没有)
        "hint":"欢迎光临",
        "avatar":"967624519a0f.jpg",
        "avatarPath":"http://XXXX/967624519a0f.jpg",
        "showAvatar":"967624519a0f.jpg",
        "showAvatarPath":"http://XXXX/967624519a0f.jpg",
        "createTime":"2019-07-22T04:08:54Z",
        "id":"hdjafhak_112",
        "customPersonId":"customPerson1371",
        "customExtends":""
    }
}

Error Response Example

{
    "success":false,
    "error_code":336,
    "error_msg":{
        "global": "头像已被人员 MEM_12345_1 注册"
    },
    "result":{
        "existPersonId": "MEM_12345_1",
        "existCustomPersonId": "111111"
    }
}
1.5.4 返回字段说明
参数名 说明 数据类型 是否必传
success 请求是否成功 boolean
error_code 状态码 Integer
error_msg 失败提示信息(只有当success为 false 时,接口才会返回message字段) json对象
+existPersonId 失败提示额外信息,头像已被注册的人员id(只有当error_code为336时,接口才会返回existPersonId字段) String
+existCustomPersonId 失败提示额外信息,头像已被注册的人员的用户方人员ID(只有当error_code为336时,接口才会返回existCustomPersonId字段) String
result 请求结果 String
+name 人员姓名 String
+identityCard 身份证号 String
+weChat 微信号 String
+phoneNum 手机号 String
+personType 人员类型 1:成员 2:访客 3:黑名单 Integer
+groupList 人员组实体数组 实体数组
+memberDetail 成员详情(添加成员需要加传该对象) Object
++sex 性别。(成员字段) 可选值 "male" "female" String
++internalNum 成员编号(成员字段) String
++cardId 卡号(成员字段) String
++age 年龄(成员字段) Integer
++passWord 密码(成员字段) String
++entryDate 入职日期,格式为 "yyyy-MM-dd"(成员字段) String
++birthDate 出生日期,格式为 "yyyy-MM-dd"(成员字段) String
+guestDetail 访客详情(添加访客需要加传该对象) Object
++startTime 到访起始时间,UTC时间,格式(访客字段) yyyy-MM-dd'T'HH:mm:ss'Z' String
++endTime 到访结束时间,UTC时间,格式(访客字段) yyyy-MM-dd'T'HH:mm:ss'Z' String
++status 访问状态(访客字段),可选值 “ineffective” “effective” “invalid”,分别表示 未生效、生效中、已失效 String
++receiveMemId 受访人员id(访客字段),该字段必须传度目智能应用平台人员id String
++purpose 来访目的(访客字段) String
++expiredClearFlag 访客过期清除标志(0:不清除 1:清除)(访客字段) Integer
++company 公司 String
++position 职位 String
++age 年龄 Integer
++sex 性别 String
++backUp 备注 String
++birthDate 生日 String
+phoneNum 手机号(成员字段) String
+email 邮箱 String
+backUp 备注(访客没有) String
+hint 自定义提示语 String
+avatar 注册照的key,图片通过上传接口上传后取得 String
+avatarPath 注册照的路径,图片通过上传接口上传后取得 String
+showAvatar 展示照的key,图片通过上传接口上传后取得 String
+showAvatarPath 展示照的路径,图片通过上传接口上传后取得 String
+createTime 创建时间(UTC时间) Date
+id 人员ID String
+customPersonId 开放接口用户方的人员ID(限长50) String
+customExtends 开放接口用户扩展字段(限长200) String

2 人员头像管理

2.1 人像上传

2.1.1 基本信息

Path: https://aip.baidubce.com/rest/2.0/chengfeng/openapi/v1/person/file/image/avatar

Method: post

接口描述: 注册照人像上传接口,返回人像访问路径和人像key

2.1.2 请求参数

Headers

参数名称 参数值 是否必须 示例 备注
Content-Type multipart/form-data

Path 变量

参数名称 说明 数据类型 是否必填

RequestParam

参数名 说明 数据类型 是否必填
access_token 请求接口token String

Body

参数名 说明 数据类型 是否必填
file 上传文件 MultipartFile
needVerify 是否需要人像校验,默认为 true。 上传人员注册照时,请使用true,展示照使用false boolean

示例代码

package com.baidu.demo.test.person.image;

import com.baidu.demo.utils.HttpUtil;
import com.baidu.demo.utils.SignUtil;

import java.io.File;
import java.util.TreeMap;
import java.util.UUID;

public class PersonFileImageAvatar {

    /**
     * request,utils文件夹请从接口文档, 接口示例代码工程中下载
     *
     */
    public static void personFileImageAvatar(){
        // 1.定义参数
        // 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间, 客户端可自行缓存,过期后重新获取。
        String accessToken = "[调用鉴权接口获取的token]";
        String key = "[度目智能应用平台页面-个人中心-验签密钥]";
        // 您需要上传的照片的路径
        String pathName = "src/main/resources/63e6fd01gy1gi002sl62nj23dw4fe1kz.jpg";
        Boolean needVerify =  true;
        String businessTimestamp = System.currentTimeMillis()+"";
        String nonce = UUID.randomUUID().toString();
        // 2.组装参数
        TreeMap<String, Object> map = new TreeMap<>();
        map.put("needVerify", needVerify);
        map.put("businessTimestamp", businessTimestamp);
        map.put("nonce",nonce);
        // 3.签名
        String businessSign = SignUtil.sign(map, key);
        map.put("businessSign", businessSign);
        map.put("access_token", accessToken);
        // 4.发送请求
        String url = "https://aip.baidubce.com/rest/2.0/chengfeng/openapi/v1/person/file/image/avatar?access_token="+accessToken;
        String result = HttpUtil.uploadFile(url, new File(pathName), map);
        // 5.获取结果
        System.out.println(result);
    }

    public static void main(String[] args) throws Exception {
        PersonFileImageAvatar.personFileImageAvatar();
    }
}
2.1.3 返回数据

Response

{
    "success":true,
    "error_code":0,
        "error_msg": "",
    "result":{
        "key":"image1",
        "filePath":"http://xxxx/image1"
    }
}
2.1.4 返回字段说明
参数名 说明 数据类型 是否必填
success 请求是否成功 boolean
error_code 状态码 Integer
error_msg 失败提示信息(只有当success为 false 时,接口才会返回message字段) json对象
result 请求结果 String
+key 注册照的key String
+filePath 图片的url String

2.2 人像上传(base64)

2.2.1 基本信息

Path: https://aip.baidubce.com/rest/2.0/chengfeng/openapi/v1/person/base64/image/avatar

Method: post

接口描述: 注册照人像(base64格式)上传接口,返回人像访问路径和人像key

2.2.2 请求参数

Headers

参数名称 参数值 是否必须 示例 备注
Content-Type application/json

Path 变量

参数名称 说明 数据类型 是否必填

RequestParam

参数名 说明 数据类型 是否必填
access_token 请求接口token String

Body

参数名 说明 数据类型 是否必填
image 上传文件(base64) String
needVerify 是否需要人像校验,默认为 true。 上传人员注册照时,请使用true,展示照使用false boolean

示例代码

package com.baidu.demo.test.person.image;

import com.baidu.demo.utils.GsonUtils;
import com.baidu.demo.utils.HttpUtil;
import com.baidu.demo.utils.SignUtil;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Base64;
import java.util.TreeMap;
import java.util.UUID;

public class PersonBase64ImageAvatar {
    /**
     * @Title: GetImageStrFromPath
     * @Description: TODO(将一张本地图片转化成Base64字符串)
     * @param imgPath
     * @return
     */
    private static String GetImageStrFromPath(String imgPath) {
        InputStream in = null;
        byte[] data = null;
        // 读取图片字节数组
        try {
            in = new FileInputStream(imgPath);
            data = new byte[in.available()];
            in.read(data);
            in.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        // 对字节数组Base64编码
        // 返回Base64编码过的字节数组字符串
        return Base64.getEncoder().encodeToString(data);
    }
    /**
     * request,utils文件夹请从接口文档, 接口示例代码工程中下载
     *
     */
    public static void personBase64ImageAvatar(){
        // 1.定义参数
        // 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间, 客户端可自行缓存,过期后重新获取。
        String accessToken = "[调用鉴权接口获取的token]";
        String key = "[度目智能应用平台页面-个人中心-验签密钥]";
        // 图片的地址
        String imagePath = "src/main/resources/63e6fd01gy1gi002sl62nj23dw4fe1kz.jpg";
        String base64Image = GetImageStrFromPath(imagePath);
        String image = base64Image;
        Boolean needVerify =  true;
        String businessTimestamp = System.currentTimeMillis()+"";
        String nonce = UUID.randomUUID().toString();
        // 2.组装参数
        TreeMap<String, Object> map = new TreeMap<>();
        map.put("needVerify", needVerify);
        map.put("businessTimestamp", businessTimestamp);
        map.put("nonce",nonce);
        // 3.签名
        String businessSign = SignUtil.sign(map, key);
        map.put("image", image);
        map.put("businessSign", businessSign);
        String param = GsonUtils.toJson(map);
        // 4.发送请求
        String url = "https://aip.baidubce.com/rest/2.0/chengfeng/openapi/v1/person/base64/image/avatar?access_token="+accessToken;
        String result = HttpUtil.post(url, param);
        // 5.获取结果
        System.out.println(result);
    }

    public static void main(String[] args) throws Exception {
        PersonBase64ImageAvatar.personBase64ImageAvatar();
    }
}
2.2.3 返回数据

Response

{
    "success":true,
    "error_code":0,
        "error_msg": "",
    "result":{
        "key":"image1",
        "filePath":"http://xxxx/image1"
    }
}
2.2.4 返回字段说明
参数名 说明 数据类型 是否必填
success 请求是否成功 boolean
error_code 状态码 Integer
error_msg 失败提示信息(只有当success为 false 时,接口才会返回message字段) json对象
result 请求结果 String
+key 注册照的key String
+filePath 图片的url String

3 人员直接同步

3.1 人员直接添加同步接口

3.1.1 基本信息

Path: https://aip.baidubce.com/rest/2.0/chengfeng/openapi/v1/person/issued/relate/add

Method: post

接口描述: 添加人员到设备组,并将人员与时间计划共同下发到设备

3.1.2 请求参数

Headers

参数名称 参数值 是否必须 示例 备注
Content-Type application/json

RequestParam

参数名 说明 数据类型 是否必填
access_token 请求接口token String

Body

参数名 说明 数据类型 是否必填
name 人员姓名(限长40,超过长度部分会被截去) String
identityCard 身份证号 String
weChat 微信号 String
phoneNum 手机号 String
personType 人员类型 1:成员 2:访客 3:黑名单 Integer
groups 人员组列表(数组限长2。如果传了groups,则groups会和deviceIds对应的设备产生关联,进而人员信息不仅会下发到deviceIds(设备号列表)对应的设备,也会下发到组原先关联的设备上。) 对象数组
+groupId 组id(传递人员组时必填) String
+groupName 组名(传递人员组时必填) String
memberDetail 成员详情(添加成员需要加传该对象) Object
+sex 性别。(添加成员时可填) 可选值 "male" "female" String
+internalNum 成员编号(添加成员时可填) String
+cardId 卡号(添加成员时可填) String
+age 年龄(添加成员时可填) Integer
+passWord 密码(添加成员时可填) String
+entryDate 入职日期,格式为 "yyyy-MM-dd"(添加成员时可填) String
+birthDate 出生日期,格式为 "yyyy-MM-dd"(添加成员时可填) String
guestDetail 访客详情(添加访客需要加传该对象) Object
+startTime 到访起始时间(添加访客时必填),UTC时间,格式 yyyy-MM-dd'T'HH:mm:ss'Z' String
+endTime 到访结束时间(添加访客时必填),UTC时间,格式 yyyy-MM-dd'T'HH:mm:ss'Z' String
+purpose 来访目的(添加访客时可填) String
+receiveMemId 受访人员id(添加访客时可填),该字段必须传度目智能应用平台人员id String
+expiredClearFlag 访客过期清除标志(只有两种值 0:不清除; 1:清除) Integer
+company 公司 String
+position 职位 String
+age 年龄 Integer
+sex 性别 String
+backUp 备注 String
+birthDate 生日 String
phoneNum 手机号 String
email 邮箱 String
backUp 备注(访客没有) String
hint 自定义提示语 String
avatar 注册照的key,图片通过上传接口上传后取得 String
showAvatar 展示照的key,图片通过上传接口上传后取得 String
customPersonId 开放接口用户方的人员ID(限长50)(请确保该字段唯一性,否则可能导致不能根据该字段进行查询) String
customExtends 开放接口用户扩展字段(限长200) String
deviceIds 设备号列表(数组限长10,仅有效设备id可以被下发) string数组
periods 时段列表(每人最多三个时间段) list
+startTime 时段开始时间(例如:"00:00", 注意小时的取值范围是0-23,分的取值范围是0-59) Date
+endTime 时段结束时间(例如:"00:00", 注意小时的取值范围是0-23,分的取值范围是0-59) Date

示例代码

package com.baidu.demo.test.person.issued;

import com.alibaba.fastjson.JSONObject;
import com.baidu.demo.request.Group;
import com.baidu.demo.request.GuestDetail;
import com.baidu.demo.request.MemberDetail;
import com.baidu.demo.request.OpenAPIRequest;
import com.baidu.demo.request.Period;
import com.baidu.demo.request.PersonAddRequest;
import com.baidu.demo.utils.GsonUtils;
import com.baidu.demo.utils.HttpUtil;
import com.baidu.demo.utils.SignUtil;

import java.util.ArrayList;
import java.util.List;
import java.util.TreeMap;

public class PersonIssuedRelateAdd {
    /**
     * request,utils文件夹请从接口文档中下载
     *
     */
    public static void personIssuedRelateAdd() {
        // 1.定义参数
        // 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间, 客户端可自行缓存,过期后重新获取。
        String accessToken = "[调用鉴权接口获取的token]";
        String key = "[度目智能应用平台页面-个人中心-验签密钥]";
        String name = "小明";
        Integer personType = 1;
        String groupId = "MEM_815265821110_68";
        String groupName = "测试人员组";
        String sex = "女";
        String internalNum = "45678977";
        String cardId = "123478";
        String passWord = "12453";
        String entryDate = "2021-06-10";
        String birthDate = "1995-06-10";
        String company = "某公司";
        String position = "某职位";
        String startTime = "2021-06-17T08:00:00Z";
        String endTime = "2021-06-17T18:00:00Z";
        String purpose = "访问";
        String receiveMemId = "MEM_815265821110_1032";
        String phoneNum = "13290606065";
        String email = "13290606065@163.com";
        String backUp = "backUp";
        String hint = "欢迎您";
        // 调用人像上传返回参数的key,不是filePath
        String avatar = "153ef41326ee45b413db762795967dac";
        // 调用人像上传返回参数的key,不是filePath
        String showAvatar = "153ef41326ee45b413db762795967dac";
        String customPersonId = "cd123214234";
        String customExtends = "123456";
        String[] deviceIds = {"DMCM020MYC21A00082"};
        List<Period> periods = new ArrayList<>() ;
        periods.add(Period.builder()
                .startTime("00:00")
                .endTime("10:00")
                .build()) ;
        periods.add(Period.builder()
                .startTime("19:00")
                .endTime("20:00")
                .build()) ;
        // 2.签名
        PersonAddRequest personAddRequest =  PersonAddRequest.builder()
                .name(name)
                .personType(personType)
                .groups(new Group[]{Group.builder().groupId(groupId).groupName(groupName).build()})
                .memberDetail(MemberDetail.builder()
                        .sex(sex)
                        .internalNum(internalNum)
                        .cardId(cardId)
                        .passWord(passWord)
                        .entryDate(entryDate)
                        .birthDate(birthDate)
                        .company(company)
                        .position(position)
                        .build())
                .guestDetail(GuestDetail.builder()
                        .startTime(startTime)
                        .endTime(endTime)
                        .purpose(purpose)
                        .receiveMemId(receiveMemId)
                        .build())
                .phoneNum(phoneNum)
                .email(email)
                .backUp(backUp)
                .hint(hint)
                .avatar(avatar)
                .showAvatar(showAvatar)
                .customPersonId(customPersonId)
                .customExtends(customExtends)
                .deviceIds(deviceIds)
                .periods(periods)
                .build();
        OpenAPIRequest sign = SignUtil.sign(personAddRequest, key);
        // 2.组装参数
        TreeMap map = JSONObject.parseObject(JSONObject.toJSONString(personAddRequest), TreeMap.class);
        map.put("businessTimestamp", sign.getBusinessTimestamp());
        map.put("nonce", sign.getNonce());
        map.put("businessSign",sign.getBusinessSign());
        String param = GsonUtils.toJson(map);
        // 4.发送请求
        String url = "https://aip.baidubce.com/rest/2.0/chengfeng/openapi/v1/person/add?access_token="+ accessToken;
        String result = HttpUtil.post(url, param);
        // 5.获取结果
        System.out.println("响应结果: "+ result);
    }

    public static void main(String[] args){
        PersonIssuedRelateAdd.personIssuedRelateAdd();
    }
}
3.1.3 返回数据

Response

{
    "success":true,
    "error_code":0,
    "error_msg": "",
    "result":{
        "name":"刘xx",
        “personType”:1
        "groupList":[
            {
                           "groupId":"id_1",
                           "groupName":"name_1"
            }
        ],
        "memberDetail":{      (该对象仅成员返回)
                "sex":"male",(成员字段)
                "internalNum":"B00",(成员字段)
                "cardId":"3278957248935789",(成员字段)
                "passWord":"199010",(成员字段)
                "entryDate":"2020-10-28",(成员字段)
                "birthDate":"1990-10-18"(成员字段)
        },
    "guestDetail":{ (该对象仅访客返回)
        "startTime":"2020-10-28T10:00:00Z",(访客字段)
        "endTime":"2020-10-28T12:00:00Z",(访客字段)
        "status":"ineffective", (访客字段)// 状态,可选值 “ineffective” “effective” “invalid”,分别表示 未生效、生效中、已失效
        "receiveMemId":"dasfasfafd",(访客字段),该字段必须传度目智能应用平台人员id
        "purpose":"商务谈判",(访客字段)
        "expiredClearFlag": 0
        },
        "phoneNum":"17221614782",
        "email":"liu@baidu.com",
        "backUp":"无备注",(访客没有)
        "hint":"欢迎光临",
        "avatar":"967624519a0f.jpg",
        "avatarPath":"http://XXXX/967624519a0f.jpg",
        "showAvatar":"967624519a0f.jpg",
        "showAvatarPath":"http://XXXX/967624519a0f.jpg",
        "createTime":"2019-07-22T04:08:54Z",
        "id":"hdjafhak_112",
        "customPersonId":"customPerson1371",
        "customExtends":"",
        "deviceIds": [
            "chengfeng-test-android-demo",
            "DMCM000BLC21A00006"
        ],
        "syncIds": [
            "SYNC_87902196c37d4a078cb768eb554a56d5",
            "SYNC_06bb413a6b754a9ebb3b54b6ed265e0c"
        ]
    }
}

Error Response Example

{
    "success":false,
    "error_code":336,
    "error_msg":{
        "global": "头像已被人员 MEM_12345_1 注册"
    },
    "result":{
        "existPersonId": "MEM_12345_1",
        "existCustomPersonId": "111111"
    }
}
3.1.4 返回字段说明
参数名 说明 数据类型 是否必传
success 请求是否成功 boolean
error_code 状态码 Integer
error_msg 失败提示信息(只有当success为 false 时,接口才会返回message字段) json对象
result 请求结果 String
+name 人员姓名 String
+identityCard 身份证号 String
+weChat 微信号 String
+phoneNum 手机号 String
+personType 人员类型 1:成员 2:访客 3:黑名单 Integer
+groupList 人员组实体数组 实体数组
+memberDetail 成员详情(添加成员需要加传该对象) Object
++sex 性别。(成员字段) 可选值 "male" "female" String
++internalNum 成员编号(成员字段) String
++cardId 卡号(成员字段) String
++age 年龄(成员字段) Integer
++passWord 密码(成员字段) String
++entryDate 入职日期,格式为 "yyyy-MM-dd"(成员字段) String
++birthDate 出生日期,格式为 "yyyy-MM-dd"(成员字段) String
+guestDetail 访客详情(添加访客需要加传该对象) Object
++startTime 到访起始时间,UTC时间,格式(访客字段) yyyy-MM-dd'T'HH:mm:ss'Z' String
++endTime 到访结束时间,UTC时间,格式(访客字段) yyyy-MM-dd'T'HH:mm:ss'Z' String
++status 访问状态(访客字段),可选值 “ineffective” “effective” “invalid”,分别表示 未生效、生效中、已失效 String
++receiveMemId 受访人员id(访客字段),该字段必须传度目智能应用平台人员id String
++purpose 来访目的(访客字段) String
++expiredClearFlag 访客过期清除标志(0:不清除 1:清除)(访客字段) Integer
++company 公司 String
++position 职位 String
++age 年龄 Integer
++sex 性别 String
++backUp 备注 String
++birthDate 生日 String
+phoneNum 手机号 String
+email 邮箱 String
+backUp 备注(访客没有) String
+hint 自定义提示语 String
+avatar 注册照的key,图片通过上传接口上传后取得 String
+avatarPath 注册照的路径,图片通过上传接口上传后取得 String
+showAvatar 展示照的key,图片通过上传接口上传后取得 String
+showAvatarPath 展示照的路径,图片通过上传接口上传后取得 String
+createTime 创建时间(UTC时间) Date
+id 人员ID String
+customPersonId 开放接口用户方的人员ID(限长50) String
+customExtends 开放接口用户扩展字段(限长200) String
+deviceIds 设备号列表 string数组
+syncIds 同步任务id列表 string数组

3.2 人员直接更新同步接口

3.2.1 基本信息

Path: https://aip.baidubce.com/rest/2.0/chengfeng/openapi/v1/person/issued/relate/update

Method: post

接口描述: 更新人员信息,并将人员与时间计划共同下发到设备

3.2.2 请求参数

Headers

参数名称 参数值 是否必须 示例 备注
Content-Type application/json

Path 变量

参数名称 说明 数据类型 是否必填

RequestParam

参数名 说明 数据类型 是否必填
access_token 请求接口token String
id 人员的唯一标识 String

Body

参数名 说明 数据类型 是否必填
name 人员姓名(限长40,超过长度部分会被截去) String
identityCard 身份证号 String
weChat 微信号 String
phoneNum 手机号 String
personType 人员类型 1:成员 2:访客 3:黑名单 Integer
idType 请求路径参数id类型(默认1) 1、度目智能应用平台人员id 2、客户方人员id Integer
groups 人员组列表(数组限长2。如果传了groups,则groups会和deviceIds对应的设备产生关联,进而人员信息不仅会下发到deviceIds(设备号列表)对应的设备,也会下发到组原先关联的设备上。) 对象数组
+groupId 组id(传递人员组时必填) String
+groupName 组名(传递人员组时必填) String
memberDetail 成员详情(添加成员需要加传该对象) Object
+sex 性别。(添加成员时可填) 可选值 "male" "female" String
+internalNum 成员编号(添加成员时可填) String
+cardId 卡号(添加成员时可填) String
+age 年龄(添加成员时可填) Integer
+passWord 密码(添加成员时可填) String
+entryDate 入职日期,格式为 "yyyy-MM-dd"(添加成员时可填) String
+birthDate 出生日期,格式为 "yyyy-MM-dd"(添加成员时可填) String
guestDetail 访客详情(添加访客需要加传该对象) Object
+startTime 到访起始时间(添加访客时必填),UTC时间,格式 yyyy-MM-dd'T'HH:mm:ss'Z' String
+endTime 到访结束时间(添加访客时必填),UTC时间,格式 yyyy-MM-dd'T'HH:mm:ss'Z' String
+purpose 来访目的(添加访客时可填) String
+receiveMemId 受访人员id(添加访客时可填),该字段必须传度目智能应用平台人员id String
+expiredClearFlag 访客过期清除标志(只有两种值 0:不清除; 1:清除) Integer
+company 公司 String
+position 职位 String
+age 年龄 Integer
+sex 性别 String
+backUp 备注 String
+birthDate 生日 String
phoneNum 手机号 String
email 邮箱 String
backUp 备注(访客没有) String
hint 自定义提示语 String
avatar 注册照的key,图片通过上传接口上传后取得 String
showAvatar 展示照的key,图片通过上传接口上传后取得 String
customPersonId 开放接口用户方的人员ID(限长50)(请确保该字段唯一性,否则可能导致不能根据该字段进行查询) String
customExtends 开放接口用户扩展字段(限长200) String
deviceIds 设备号列表(数组限长10,仅有效设备id可以被下发) string数组
periods 时段列表(每人最多三个时间段) list
+startTime 时段开始时间(例如:"00:00", 注意小时的取值范围是0-23,分的取值范围是0-59) Date
+endTime 时段结束时间(例如:"00:00", 注意小时的取值范围是0-23,分的取值范围是0-59) Date

示例代码

package com.baidu.demo.test.person.issued;

import com.alibaba.fastjson.JSONObject;
import com.baidu.demo.request.Group;
import com.baidu.demo.request.GuestDetail;
import com.baidu.demo.request.IssuedUpdateRequest;
import com.baidu.demo.request.MemberDetail;
import com.baidu.demo.request.OpenAPIRequest;
import com.baidu.demo.request.Period;
import com.baidu.demo.utils.GsonUtils;
import com.baidu.demo.utils.HttpUtil;
import com.baidu.demo.utils.SignUtil;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;

public class PersonIssuedRelateUpdate {
    /**
     * request,utils文件夹请从接口文档中下载
     *
     */
    public static void personIssuedRelateUpdate() {
        // 1.定义参数
        // 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间, 客户端可自行缓存,过期后重新获取。
        String accessToken = "[调用鉴权接口获取的token]";
        String key = "[度目智能应用平台页面-个人中心-验签密钥]";
        String id = "MEM_815265821110_1354";
        String name = "小明";
        Integer personType = 1;
        Integer idType = 1;
        String groupId = "MEM_815265821110_68";
        String groupName = "测试人员组";
        String sex = "男";
        String internalNum = "45678977";
        String cardId = "123478";
        String passWord = "12453";
        String entryDate = "2021-06-10";
        String birthDate = "1995-06-10";
        String company = "某公司";
        String position = "某职位";
        String startTime = "2021-06-17T08:00:00Z";
        String endTime = "2021-06-17T18:00:00Z";
        String purpose = "访问";
        String receiveMemId = "MEM_815265821110_1032";
        String phoneNum = "13290606065";
        String email = "13290606065@163.com";
        String backUp = "backUp";
        String hint = "欢迎您";
        // 调用人像上传返回参数的key,不是filePath
        String avatar = "153ef41326ee45b413db762795967dac";
        // 调用人像上传返回参数的key,不是filePath
        String showAvatar = "153ef41326ee45b413db762795967dac";
        String customPersonId = "cd123214234";
        String customExtends = "123456";
        String[] deviceIds = {"DMCM020MYC21A00082"};
        List<Period> periods = new ArrayList<>() ;
        periods.add(Period.builder()
                .startTime("00:00")
                .endTime("11:00")
                .build()) ;
        periods.add(Period.builder()
                .startTime("19:00")
                .endTime("20:00")
                .build()) ;
        // 2.签名
        IssuedUpdateRequest personAddRequest =  IssuedUpdateRequest.builder()
                .name(name)
                .idType(idType)
                .personType(personType)
                .groups(new Group[]{Group.builder().groupId(groupId).groupName(groupName).build()})
                .memberDetail(MemberDetail.builder()
                        .sex(sex)
                        .internalNum(internalNum)
                        .cardId(cardId)
                        .passWord(passWord)
                        .entryDate(entryDate)
                        .birthDate(birthDate)
                        .company(company)
                        .position(position)
                        .build())
                .guestDetail(GuestDetail.builder()
                        .startTime(startTime)
                        .endTime(endTime)
                        .purpose(purpose)
                        .receiveMemId(receiveMemId)
                        .build())
                .phoneNum(phoneNum)
                .email(email)
                .backUp(backUp)
                .hint(hint)
                .avatar(avatar)
                .showAvatar(showAvatar)
                .customPersonId(customPersonId)
                .customExtends(customExtends)
                .deviceIds(deviceIds)
                .periods(periods)
                .build();
        Map<String, String> issuedRelateParams = new HashMap<>() ;
        issuedRelateParams.put("id" , id) ;
        OpenAPIRequest sign = SignUtil.sign(personAddRequest, issuedRelateParams, key);
        // 2.组装参数
        TreeMap map = JSONObject.parseObject(JSONObject.toJSONString(personAddRequest), TreeMap.class);
        map.put("businessTimestamp", sign.getBusinessTimestamp());
        map.put("nonce", sign.getNonce());
        map.put("businessSign",sign.getBusinessSign());
        String param = GsonUtils.toJson(map);
        // 4.发送请求
        String url = "https://aip.baidubce.com/rest/2.0/chengfeng/openapi/v1/person/update?access_token="+ accessToken +"&id="+ id;
        String result = HttpUtil.post(url, param);
        // 5.获取结果
        System.out.println("响应结果: "+ result);
    }

    public static void main(String[] args){
        PersonIssuedRelateUpdate.personIssuedRelateUpdate();
    }
}
3.2.3 返回数据

Response

{
    "success":true,
    "error_code":0,
    "error_msg": "",
    "result":{
        "name":"刘xx",
        “personType”:1
        "groupList":[
            {
                           "groupId":"id_1",
                           "groupName":"name_1"
            }
        ],
        "memberDetail":{      (该对象仅成员返回)
                "sex":"male",(成员字段)
                "internalNum":"B00",(成员字段)
                "cardId":"3278957248935789",(成员字段)
                "passWord":"199010",(成员字段)
                "entryDate":"2020-10-28",(成员字段)
                "birthDate":"1990-10-18"(成员字段)
        },
    "guestDetail":{ (该对象仅访客返回)
        "startTime":"2020-10-28T10:00:00Z",(访客字段)
        "endTime":"2020-10-28T12:00:00Z",(访客字段)
        "status":"ineffective", (访客字段)// 状态,可选值 “ineffective” “effective” “invalid”,分别表示 未生效、生效中、已失效
        "receiveMemId":"dasfasfafd",(访客字段),该字段必须传度目智能应用平台人员id
        "purpose":"商务谈判", (访客字段)
        "expiredClearFlag": 0  (访客字段)
        },
        "phoneNum":"17221614782",
        "email":"liu@baidu.com",
        "backUp":"无备注",(访客没有)
        "hint":"欢迎光临",
        "avatar":"967624519a0f.jpg",
        "avatarPath":"http://XXXX/967624519a0f.jpg",
        "showAvatar":"967624519a0f.jpg",
        "showAvatarPath":"http://XXXX/967624519a0f.jpg",
        "createTime":"2019-07-22T04:08:54Z",
        "id":"hdjafhak_112",
        "customPersonId":"customPerson1371",
        "customExtends":"",
        "deviceIds": [
            "chengfeng-test-android-demo",
            "DMCM000BLC21A00006"
        ],
        "syncIds": [
            "SYNC_87902196c37d4a078cb768eb554a56d5",
            "SYNC_06bb413a6b754a9ebb3b54b6ed265e0c"
        ]
    }
}

Error Response Example

{
    "success":false,
    "error_code":336,
    "error_msg":{
        "global": "头像已被人员 MEM_12345_1 注册"
    },
    "result":{
        "existPersonId": "MEM_12345_1",
        "existCustomPersonId": "111111"
    }
}
3.2.4 返回字段说明
参数名 说明 数据类型 是否必传
success 请求是否成功 boolean
error_code 状态码 Integer
error_msg 失败提示信息(只有当success为 false 时,接口才会返回message字段) json对象
result 请求结果 String
+name 人员姓名 String
+identityCard 身份证号 String
+weChat 微信号 String
+phoneNum 手机号 String
+personType 人员类型 1:成员 2:访客 3:黑名单 Integer
+groupList 人员组实体数组 实体数组
+memberDetail 成员详情(添加成员需要加传该对象) Object
++sex 性别。(成员字段) 可选值 "male" "female" String
++internalNum 成员编号(成员字段) String
++cardId 卡号(成员字段) String
++age 年龄(添加成员时可填) Integer
++passWord 密码(成员字段) String
++entryDate 入职日期,格式为 "yyyy-MM-dd"(成员字段) String
++birthDate 出生日期,格式为 "yyyy-MM-dd"(成员字段) String
+guestDetail 访客详情(添加访客需要加传该对象) Object
++startTime 到访起始时间,UTC时间,格式(访客字段) yyyy-MM-dd'T'HH:mm:ss'Z' String
++endTime 到访结束时间,UTC时间,格式(访客字段) yyyy-MM-dd'T'HH:mm:ss'Z' String
++status 访问状态(访客字段),可选值 “ineffective” “effective” “invalid”,分别表示 未生效、生效中、已失效 String
++receiveMemId 受访人员id(访客字段),该字段必须传度目智能应用平台人员id String
++purpose 来访目的(访客字段) String
++expiredClearFlag 访客过期清除标志(0:不清除 1:清除)(访客字段) Integer
++company 公司 String
++position 职位 String
++age 年龄 Integer
++sex 性别 String
++backUp 备注 String
++birthDate 生日 String
+phoneNum 手机号 String
+email 邮箱 String
+backUp 备注(访客没有) String
+hint 自定义提示语 String
+avatar 注册照的key,图片通过上传接口上传后取得 String
+avatarPath 注册照的路径,图片通过上传接口上传后取得 String
+showAvatar 展示照的key,图片通过上传接口上传后取得 String
+showAvatarPath 展示照的路径,图片通过上传接口上传后取得 String
+createTime 创建时间(UTC时间) Date
+id 人员ID String
+customPersonId 开放接口用户方的人员ID(限长50) String
+customExtends 开放接口用户扩展字段(限长200) String
+deviceIds 设备号列表 string数组
+syncIds 同步任务id列表 string数组

(二) 人员组API

1 人员组管理

1.1 添加人员组

1.1.1 基本信息

Path: https://aip.baidubce.com/rest/2.0/chengfeng/openapi/v1/group/add

Method: post

接口描述: 添加人员组,按人员组类型参数区分

1.1.2 请求参数

Headers

参数名称 参数值 是否必须 示例 备注
Content-Type application/json

Path 变量

参数名称 说明 数据类型 是否必填

RequestParam

参数名 说明 数据类型 是否必填
access_token 请求接口token String

Body

参数名 说明 数据类型 是否必填
groupName 组名称 String
groupType 组类型 1:成员 2:访客 3:黑名单 Integer
idList 人员id数组 String数组

示例代码

package com.baidu.demo.test.group;

import com.baidu.demo.request.GroupAddRequest;
import com.baidu.demo.request.OpenAPIRequest;
import com.baidu.demo.utils.GsonUtils;
import com.baidu.demo.utils.HttpUtil;
import com.baidu.demo.utils.SignUtil;

public class GroupAdd {
    /**
     * request,utils文件夹请从接口文档, 接口示例代码工程中下载
     *
     */
    public static void groupAdd() {
        // 1.定义参数
        // 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间, 客户端可自行缓存,过期后重新获取。
        String accessToken = "[调用鉴权接口获取的token]";
        String key = "[度目智能应用平台页面-个人中心-验签密钥]";
        String groupName = "postman测试人员组6";
        Integer groupType = 1;
        String[] idList = {"MEM_815265821110_1025"};
        // 2.签名
        GroupAddRequest groupAdd = GroupAddRequest.builder()
                .groupType(groupType)
                .groupName(groupName)
                .idList(idList)
                .build();
        OpenAPIRequest sign = SignUtil.sign(groupAdd, key);
        // 3.转化参数
        String param = GsonUtils.toJson(sign);
        // 4.发送请求
        String url = "https://aip.baidubce.com/rest/2.0/chengfeng/openapi/v1/group/add?access_token="+ accessToken;
        String result = HttpUtil.post(url, param);
        // 5.获取结果
        System.out.println("响应结果: "+ result);
    }

    public static void main(String[] args){
        GroupAdd.groupAdd();
    }
}
1.1.3 返回数据

Response

{
    "success":true,
    "error_code":0,
        "error_msg": "",
    "result":{
        "groupName":"人员组1",
        "personList":[
            {
                "id":"sdjkafjklasf",
                "name":"百同学",
                "internalNum":"B00",(成员带有此字段)
                                   "status":"ineffective",(访客带有此字段)
                "avatarPath":"http://XXXX/967624519a0f.jpg"
            },
            {
                "id":"sdjkafjklasf",
                "name":"度同学",
                "internalNum":"B00",(成员带有此字段)
                "status":"ineffective",(访客带有此字段)
                "avatarPath":"http://XXXX/967624519a0f.jpg"
            }
        ],
        "groupId":"5d3536d675549f21aac6f522"
    }
}
1.1.4 返回字段说明
参数名 说明 数据类型 是否必填
success 请求是否成功 boolean
error_code 状态码 Integer
error_msg 失败提示信息(只有当success为 false 时,接口才会返回message字段) json对象
result 请求结果 String
+groupName 组名 String
+personList 人员列表 实体Array
++id 人员ID String
++name 人员姓名 String
++internalNum 内部成员编号(成员带有此字段) String
++status 访客状态(访客带有此字段) String
++avatarPath 成员头像url路径(成员带有此字段) String
+groupId 人员组ID String

1.2 人员组列表(分页)

1.2.1 基本信息

Path: https://aip.baidubce.com/rest/2.0/chengfeng/openapi/v1/group/pageable

Method: get

接口描述: 人员组列表查询,按人员组类型参数区分

1.2.2 请求参数

Headers

参数名称 参数值 是否必须 示例 备注
Content-Type application/json

Path 变量

参数名称 说明 数据类型 是否必填

RequestParam

参数名 说明 数据类型 是否必填
access_token 请求接口token String
groupName 人员组名称 String
groupType 组类型 1:成员 2:访客 3:黑名单 Integer
pageNo 页码,大于等于1。默认为1 Integer
pageSize 页大小,默认为10(取值范围1~50) Integer

Body

参数名 说明 数据类型 是否必填

示例代码

package com.baidu.demo.test.group;

import com.baidu.demo.utils.HttpUtil;
import com.baidu.demo.utils.SignUtil;

import java.util.TreeMap;
import java.util.UUID;

public class GroupPageable {
    /**
     * request,utils文件夹请从接口文档, 接口示例代码工程中下载
     *
     */
    public static void groupPageable() {
        // 1.定义参数
        // 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间,客户端可自行缓存,过期后重新获取。
        String accessToken = "[调用鉴权接口获取的token]";
        String key = "[度目智能应用平台页面-个人中心-验签密钥]";
        String groupType =  "1";
        Integer pageNo =  1;
        Integer pageSize =  10;
        String businessTimestamp = System.currentTimeMillis()+"";
        String nonce = UUID.randomUUID().toString();
        // 2.组装参数
        TreeMap<String, Object> map = new TreeMap<>();
        map.put("groupType", groupType);
        map.put("pageNo", pageNo);
        map.put("pageSize", pageSize);
        map.put("businessTimestamp", businessTimestamp);
        map.put("nonce",nonce);
        // 3.签名
        String businessSign = SignUtil.sign(map, key);
        map.put("businessSign", businessSign);
        map.put("access_token", accessToken);
        // 4.发送请求
        String url = "https://aip.baidubce.com/rest/2.0/chengfeng/openapi/v1/group/pageable";
        String result = HttpUtil.get(map, url);
        // 5.获取结果
        System.out.println("响应结果: "+ result);
    }

    public static void main(String[] args) {
        GroupPageable.groupPageable();
    }
}
1.2.3 返回数据

Response

{
    "success":true,
    "error_code":0,
         "error_msg": "",
    "page":{
        "pageNo":1,
        "pageSize":10,
        "totalCount":2,
        "result":[
            {
                "groupId":"sdjkafjklasf",
                "groupName":"默认人员组",
                                   "count":5
            },
            {
                "groupId":"sdjkafjklasg",
                "groupName":"人员组1",
                "count":3
            }
        ]
    }
}
1.2.4 返回字段说明
参数名 说明 数据类型
success 请求是否成功 boolean
error_code 状态码 Integer
error_msg 失败提示信息(只有当success为 false 时,接口才会返回message字段) json对象
page page对象 map
+pageNo 页码 Integer
+pageSize 页大小 Integer
+totalCount 查询结果总条数 Integer
+result 结果详情描述 list
++groupId 人员组id String
++groupName 人员组名称 String
++count 人员数 int

1.3 人员组批量删除

1.3.1 基本信息

Path: https://aip.baidubce.com/rest/2.0/chengfeng/openapi/v1/group/delete

Method: post

接口描述: 批量删除人员组,按组类型区分,一次只能删除一组同类人员组(例如删除一组访客组或者黑名单组),不可混合

1.3.2 请求参数

Headers

参数名称 参数值 是否必须 示例 备注
Content-Type application/json

Path 变量

参数名称 说明 数据类型 是否必填

RequestParam

参数名 说明 数据类型 是否必填
access_token 请求接口token String

Body

参数名 说明 数据类型 是否必填
groupIdList 人员组id数组 String数组
groupType 组类型 1:成员 2:访客 3:黑名单 Integer

示例代码

package com.baidu.demo.test.group;

import com.baidu.demo.request.GroupDeleteRequest;
import com.baidu.demo.request.OpenAPIRequest;
import com.baidu.demo.utils.GsonUtils;
import com.baidu.demo.utils.HttpUtil;
import com.baidu.demo.utils.SignUtil;

import java.util.TreeMap;

public class GroupDelete {
    /**
     * request,utils文件夹请从接口文档, 接口示例代码工程中下载
     *
     */
    public static void groupDelete() {
        // 1.定义参数
        // 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间, 客户端可自行缓存,过期后重新获取。
        String accessToken = "[调用鉴权接口获取的token]";
        String key = "[度目智能应用平台页面-个人中心-验签密钥]";
        Integer groupType = 1;
        String[] groupIdList = {"MEM_815265821110_85"};
        // 2.签名
        GroupDeleteRequest groupAdd = GroupDeleteRequest.builder()
                .groupType(groupType)
                .groupIdList(groupIdList)
                .build();
        OpenAPIRequest sign = SignUtil.sign(groupAdd, key);
        // 2.组装参数
        TreeMap<String, Object> map = new TreeMap<>();
        map.put("groupType", groupType);
        map.put("groupIdList", groupIdList);
        map.put("businessTimestamp", sign.getBusinessTimestamp());
        map.put("nonce", sign.getNonce());
        map.put("businessSign", sign.getBusinessSign());
        String param = GsonUtils.toJson(map);
        // 4.发送请求
        String url = "https://aip.baidubce.com/rest/2.0/chengfeng/openapi/v1/group/delete?access_token=" + accessToken;
        String result = HttpUtil.post(url, param);
        // 5.获取结果
        System.out.println("响应结果: " + result);
    }

    public static void main(String[] args){
        GroupDelete.groupDelete();
    }
}
1.3.3 返回数据

Response

{
    "success":true,
    "error_code":0,
         "error_msg": "",
    "result":{
        "successIdList":[
            "fsdafa1","dsafdas2"
        ],
        "failIdList":[
            "fsdafa3"
        ]
    }
}
1.3.4 返回字段说明
参数名 说明 数据类型 是否必填
success 请求是否成功 boolean
error_code 状态码 Integer
error_msg 失败提示信息(只有当success为 false 时,接口才会返回message字段) json对象
result 请求结果 String
+successIdList 删除成功id列表 String数组
+failIdList 删除失败id列表 String数组

1.4 修改人员组

1.4.1 基本信息

Path: https://aip.baidubce.com/rest/2.0/chengfeng/openapi/v1/group/update

Method: post

接口描述: 对人员组进行修改,可以更新人员组的名称和包含的人员id列表,按人员组类型参数区分

1.4.2 请求参数

Headers

参数名称 参数值 是否必须 示例 备注
Content-Type application/json

Path 变量

参数名称 说明 数据类型 是否必填

RequestParam

参数名 说明 数据类型 是否必填
access_token 请求接口token String
groupId 人员组唯一标识 String

Body

参数名 说明 数据类型 是否必填
groupName 人员组名称 String
idList 人员id数组 String数组
groupType 组类型 1:成员 2:访客 3:黑名单 Integer

示例代码

package com.baidu.demo.test.group;

import com.baidu.demo.request.GroupAddRequest;
import com.baidu.demo.request.OpenAPIRequest;
import com.baidu.demo.utils.GsonUtils;
import com.baidu.demo.utils.HttpUtil;
import com.baidu.demo.utils.SignUtil;

public class GroupUpdate {
    /**
     * request,utils文件夹请从接口文档, 接口示例代码工程中下载
     *
     */
    public static void groupUpdate() {
        // 1.定义参数
        // 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间, 客户端可自行缓存,过期后重新获取。
        String accessToken = "[调用鉴权接口获取的token]";
        String key = "[度目智能应用平台页面-个人中心-验签密钥]";
        String groupId =  "MEM_815265821110_994";
        String groupName =  "测试人员组444444444";
        Integer groupType =  1;
        String[] idList = {"MEM_815265821110_81793"};
        // 2.签名
        GroupAddRequest groupAdd = GroupAddRequest.builder()
                .groupId(groupId)
                .groupType(groupType)
                .groupName(groupName)
                .idList(idList)
                .build();
        OpenAPIRequest sign = SignUtil.sign(groupAdd, key);
        // 3.转化参数
        String param = GsonUtils.toJson(sign);
        // 4.发送请求
        String url = "https://aip.baidubce.com/rest/2.0/chengfeng/openapi/v1/group/update?access_token="+ accessToken +"&groupId="+ groupId;
        String result = HttpUtil.post(url, param);
        // 5.获取结果
        System.out.println("响应结果: "+ result);
    }

    public static void main(String[] args){
        GroupUpdate.groupUpdate();
    }
}
1.4.3 返回数据

Response

{
    "success":true,
    "error_code":0,
         "error_msg": "",
    "result":{
        "groupName":"人员组1",
        "personList":[
            {
                "id":"sdjkafjklasf",
                "name":"百同学",
                "internalNum":"B00",(成员列表带有)
                "status":"ineffective",(访客列表带有)
                "avatarPath":"http://XXXX/967624519a0f.jpg"
            },
            {
                "id":"sdjkafjklasf",
                "name":"度同学",
                "internalNum":"B00",(成员列表带有)
                "status":"ineffective",(访客列表带有)
                "avatarPath":"http://XXXX/967624519a0f.jpg"
            }
        ],
        "groupId":"5d3536d675549f21aac6f522"
    }
}
1.4.4 返回字段说明
参数名 说明 数据类型 是否必填
success 请求是否成功 boolean
error_code 状态码 Integer
error_msg 失败提示信息(只有当success为 false 时,接口才会返回message字段) json对象
result 请求结果 String
+groupName 组名 String
+personList 人员列表 实体Array
++id 人员ID String
++name 人员姓名 String
++internalNum 内部成员编号(成员列表带有) String
++status 访客状态(访客列表带有) String
++avatarPath 人员头像url路径 String
+groupId 人员组ID String

1.5 人员组详情

1.5.1 基本信息

Path: https://aip.baidubce.com/rest/2.0/chengfeng/openapi/v1/group/detail

Method: get

接口描述: 查询人员组详情,按人员组类型参数区分

1.5.2 请求参数

Headers

参数名称 参数值 是否必须 示例 备注
Content-Type application/json

Path 变量

参数名称 说明 数据类型 是否必填

RequestParam

参数名 说明 数据类型 是否必填
access_token 请求接口token String
groupType 组类型 1:成员 2:访客 3:黑名单 Integer
groupId 人员组唯一标识 String

Body

参数名 说明 数据类型 是否必填

示例代码

package com.baidu.demo.test.group;

import com.baidu.demo.utils.HttpUtil;
import com.baidu.demo.utils.SignUtil;
import java.util.TreeMap;
import java.util.UUID;

public class GroupDetail {
    /**
     * request,utils文件夹请从接口文档, 接口示例代码工程中下载
     *
     */
    public static void groupDetail() {
        // 1.定义参数
        // 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间,客户端可自行缓存,过期后重新获取。
        String accessToken = "[调用鉴权接口获取的token]";
        String key = "[度目智能应用平台页面-个人中心-验签密钥]";
        String groupId =  "MEM_815265821110_68";
        String groupType =  "1";
        String businessTimestamp = System.currentTimeMillis()+"";
        String nonce = UUID.randomUUID().toString();
        // 2.组装参数
        TreeMap<String, Object> map = new TreeMap<>();
        map.put("groupId", groupId);
        map.put("groupType", groupType);
        map.put("businessTimestamp", businessTimestamp);
        map.put("nonce",nonce);
        // 3.签名
        String businessSign = SignUtil.sign(map, key);
        map.put("businessSign", businessSign);
        map.put("access_token", accessToken);
        // 4.发送请求
        String url = "https://aip.baidubce.com/rest/2.0/chengfeng/openapi/v1/group/detail";
        String result = HttpUtil.get(map, url);
        // 5.获取结果
        System.out.println("响应结果: "+ result);
    }

    public static void main(String[] args) {
        GroupDetail.groupDetail();
    }

}
1.5.3 返回数据

Response

{
    "success":true,
    "error_code":0,
    "error_msg":"",
    "result":{
        "groupName":"人员组1",
        "personList":[
            {
                "id":"sdjkafjklasf",
                "name":"百同学",
                "internalNum":"B00",(成员带有)
                "status":"ineffective",(访客带有)
                "avatarPath":"http://XXXX/967624519a0f.jpg"
            },
            {
                "id":"sdjkafjklasf",
                "name":"度同学",
                "internalNum":"B00",
                "status":"ineffective",
                "avatarPath":"http://XXXX/967624519a0f.jpg"
            }
        ],
        "groupId":"5d3536d675549f21aac6f522"
    }
}
1.5.4 返回字段说明
参数名 说明 数据类型 是否必填
success 请求是否成功 boolean
error_code 状态码 Integer
error_msg 失败提示信息(只有当success为 false 时,接口才会返回message字段) json对象
result 请求结果 String
+groupName 组名 String
+personList 人员列表 实体Array
++id 人员ID String
++name 人员姓名 String
++internalNum 内部成员编号(成员带有) String
++status 访客状态(访客带有) String
++avatarPath 人员头像url路径 String
+groupId 人员组ID String

(三) 设备API

1 设备信息

1.1 获取设备列表

1.1.1 基本信息

Path: https://aip.baidubce.com/rest/2.0/chengfeng/openapi/v1/device/list

Method: get

接口描述: 查询设备列表

1.1.2 请求参数

Headers

参数名称 参数值 是否必须 示例 备注
Content-Type application/json

Path 变量

参数名称 说明 数据类型 是否必填

RequestParam

参数名 说明 数据类型 是否必填
access_token 请求接口token String
pageNo 页码,大于等于1。默认为1 Integer
pageSize 页大小,默认为10(取值范围1~50) Integer
deviceNameSn 搜索使用的设备名称或者sn string
deviceTypeId 搜索使用的设备类型 string
deviceCodeId 设备型号 string
workStatusId 搜索使用的设备工作状态 string

Body

参数名 说明 数据类型 是否必填

示例代码

package com.baidu.demo.test.device;

import com.baidu.demo.utils.HttpUtil;
import com.baidu.demo.utils.SignUtil;
import java.util.TreeMap;
import java.util.UUID;

public class DeviceList {
    /**
     * request,utils文件夹请从接口文档, 接口示例代码工程中下载
     *
     */
    public static void deviceList() {
        // 1.定义参数
        // 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间,客户端可自行缓存,过期后重新获取。
        String accessToken = "[调用鉴权接口获取的token]";
        String key = "[度目智能应用平台页面-个人中心-验签密钥]";
        String groupType =  "1";
        Integer pageNo =  1;
        Integer pageSize =  10;
        String businessTimestamp = System.currentTimeMillis()+"";
        String nonce = UUID.randomUUID().toString();
        // 2.组装参数
        TreeMap<String, Object> map = new TreeMap<>();
        map.put("groupType", groupType);
        map.put("pageNo", pageNo);
        map.put("pageSize", pageSize);
        map.put("businessTimestamp", businessTimestamp);
        map.put("nonce",nonce);
        // 3.签名
        String businessSign = SignUtil.sign(map, key);
        map.put("businessSign", businessSign);
        map.put("access_token", accessToken);
        // 4.发送请求
        String url = "https://aip.baidubce.com/rest/2.0/chengfeng/openapi/v1/device/list";
        String result = HttpUtil.get(map, url);
        // 5.获取结果
        System.out.println("响应结果: "+ result);
    }

    public static void main(String[] args) {
        DeviceList.deviceList();
    }
}
1.1.3 返回数据

Response

{
    "success":true,
    "error_code":0,
    "error_msg":"",
    "page":{
        "pageNo":1,
        "pageSize":10,
        "totalCount":1,
        "result":[
            {
                "deviceId":"41234123",
                "deviceName":"aaaa",
		"configStatus":"success",
                "deviceTypeId":"aaaa",
                "deviceCodeId":"aaaa",
                "workStatusId":"onLine",
                "recentHeartbeatTime":"2020-04-22T06:41:59Z",
                "version":"123",
                "ip":"192.168.1.1",
                "registerTime":"2020-04-22T06:41:59Z",
                "deviceComment":"设备备注"
            }
        ]
    }
}
1.1.4 返回字段说明
参数名 说明 数据类型 是否必填
success 请求是否成功 boolean
error_code 状态码 Integer
error_msg 失败提示信息(只有当success为 false 时,接口才会返回message字段) json对象
page page对象 map
+pageNo 页码 Integer
+pageSize 页大小 Integer
+totalCount 查询结果总条数 Integer
+result 结果详情描述 list
++deviceId 设备号 string
++deviceName 设备名称 string
++configStatus 设备的更新状态 string
++deviceTypeId 设备类型id string
++deviceCodeId 设备型号id string
++workStatusId 工作状态id string
++recentHeartbeatTime 最近心跳时间 string
++version 版本号 string
++ip 设备 ip string
++registerTime 注册时间 string
++deviceComment 备注 string

1.2 查询设备详情

1.2.1 基本信息

Path: https://aip.baidubce.com/rest/2.0/chengfeng/openapi/v1/device/deviceBaseDetail

Method: get

接口描述: 查询设备详情

1.2.2 请求参数

Headers

参数名称 参数值 是否必须 示例 备注
Content-Type application/json

Path 变量

参数名称 说明 数据类型 是否必填

RequestParam

参数名 说明 数据类型 是否必填
access_token 请求接口token String
deviceId 设备编号 String

Body

参数名 说明 数据类型 是否必填

示例代码

package com.baidu.demo.test.device;

import com.baidu.demo.utils.HttpUtil;
import com.baidu.demo.utils.SignUtil;
import java.util.TreeMap;
import java.util.UUID;

public class DeviceDeviceBaseDetail {
    /**
     * request,utils文件夹请从接口文档, 接口示例代码工程中下载
     *
     */
    public static void deviceDeviceBaseDetail() {
        // 1.定义参数
        // 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间,客户端可自行缓存,过期后重新获取。
        String accessToken = "[调用鉴权接口获取的token]";
        String key = "[度目智能应用平台页面-个人中心-验签密钥]";
        String deviceId =  "1";
        String businessTimestamp = System.currentTimeMillis()+"";
        String nonce = UUID.randomUUID().toString();
        // 2.组装参数
        TreeMap<String, Object> map = new TreeMap<>();
        map.put("deviceId", deviceId);
        map.put("businessTimestamp", businessTimestamp);
        map.put("nonce",nonce);
        // 3.签名
        String businessSign = SignUtil.sign(map, key);
        map.put("businessSign", businessSign);
        map.put("access_token", accessToken);
        // 4.发送请求
        String url = "https://aip.baidubce.com/rest/2.0/chengfeng/openapi/v1/device/deviceBaseDetail";
        String result = HttpUtil.get(map, url);
        // 5.获取结果
        System.out.println("响应结果: "+ result);
    }

    public static void main(String[] args) {
        DeviceDeviceBaseDetail.deviceDeviceBaseDetail();
    }

}
1.2.3 返回数据

Response

{
    "success":true,
    "error_code":0,
    "error_msg":"",
    "result":{
        "deviceId":"41234123",
        "deviceName":"aaaa",
        "deviceTypeId":"aaaa",
        "deviceIcon":"aaaa",
        "deviceCodeId":"aaaa",
        "workStatusId":"onLine",
        "recentHeartbeatTime":"2020-04-22T06:41:59Z",
        "version":"123",
        "ip":"192.168.1.1",
        "registerTime":"2020-04-22T06:41:59Z",
        "deviceComment":"设备备注"
    }
}
1.2.4 返回字段说明
参数名 说明 数据类型 是否必填
success 请求是否成功 boolean
error_code 状态码 Integer
error_msg 失败提示信息(只有当success为 false 时,接口才会返回message字段) json对象
result 请求结果 String
+deviceId 设备号 string
+deviceName 设备名称 string
+configStatus 设备的更新状态 string
+deviceTypeId 设备类型id string
+deviceCodeId 设备型号id string
+workStatusId 工作状态id string
+recentHeartbeatTime 最近心跳时间 string
+version 版本号 string
+ip 设备 ip string
+registerTime 注册时间 string
+deviceComment 备注 string

1.3 设备同步情况统计

1.3.1 基本信息

Path: https://aip.baidubce.com/rest/2.0/chengfeng/openapi/v1/device/sync/stats

Method: get

接口描述: 查询某设备的同步情况

1.3.2 请求参数

Headers

参数名称 参数值 是否必须 示例 备注
Content-Type application/json

Path 变量

参数名称 说明 数据类型 是否必填

RequestParam

参数名 说明 数据类型 是否必填
access_token 请求接口token String
deviceId 设备编号 String
search 搜索条件:姓名、编号、电话号码等 传空获取所有 String

Body

参数名 说明 数据类型 是否必填

示例代码

package com.baidu.demo.test.device;

import com.baidu.demo.utils.HttpUtil;
import com.baidu.demo.utils.SignUtil;
import java.util.TreeMap;
import java.util.UUID;

public class DeviceSyncStats {
    /**
     * request,utils文件夹请从接口文档, 接口示例代码工程中下载
     *
     */
    public static void deviceSyncStats() {
        // 1.定义参数
        // 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间,客户端可自行缓存,过期后重新获取。
        String accessToken = "[调用鉴权接口获取的token]";
        String key = "[度目智能应用平台页面-个人中心-验签密钥]";
        String deviceId =  "1";
        String search =  "1";
        String businessTimestamp = System.currentTimeMillis()+"";
        String nonce = UUID.randomUUID().toString();
        // 2.组装参数
        TreeMap<String, Object> map = new TreeMap<>();
        map.put("deviceId", deviceId);
        map.put("search", search);
        map.put("businessTimestamp", businessTimestamp);
        map.put("nonce",nonce);
        // 3.签名
        String businessSign = SignUtil.sign(map, key);
        map.put("businessSign", businessSign);
        map.put("access_token", accessToken);
        // 4.发送请求
        String url = "https://aip.baidubce.com/rest/2.0/chengfeng/openapi/v1/device/sync/stats";
        String result = HttpUtil.get(map, url);
        // 5.获取结果
        System.out.println("响应结果: "+ result);
    }

    public static void main(String[] args) {
        DeviceSyncStats.deviceSyncStats();
    }

}
1.3.3 返回数据

Response

{
    "success":true,
    "error_code":0,
    "error_msg": "",
    "result":{
        "proceedInCount":4,
        "proceedCompleteCount":23,
        "proceedFailCount":0
    }
}
1.3.4 返回字段说明
参数名 说明 数据类型
success 请求是否成功 boolean
error_code 状态码 Integer
error_msg 失败提示信息(只有当success为 false 时,接口才会返回message字段) json对象
result 结果详情描述 list
+proceedInCount 同步中的人数 Integer
+proceedCompleteCount 同步完成的人数 Integer
+proceedFailCount 同步失败人数 Integer

1.4 人员同步超时重试接口

1.4.1 基本信息

Path: https://aip.baidubce.com/rest/2.0/chengfeng/openapi/v1/device/sync/retry

Method: get

接口描述: 下发超时的人员重试接口,支持一键重试和按人重试

1.4.2 请求参数

Headers

参数名称 参数值 是否必须 示例 备注
Content-Type application/json

Path 变量

参数名称 说明 数据类型 是否必填

RequestParam

参数名 说明 数据类型 是否必填
access_token 请求接口token String
deviceId 设备编号 String
id 度目智能应用平台人员id String

Body

参数名 说明 数据类型 是否必填

示例代码

package com.baidu.demo.test.device;

import com.baidu.demo.utils.HttpUtil;
import com.baidu.demo.utils.SignUtil;

import java.util.TreeMap;
import java.util.UUID;

public class DeviceSyncRetry {
    /**
     * request,utils文件夹请从接口文档, 接口示例代码工程中下载
     *
     */
    public static void deviceSyncRetry() {
        // 1.定义参数
        // 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间,客户端可自行缓存,过期后重新获取。
        String accessToken = "[调用鉴权接口获取的token]";
        String key = "[度目智能应用平台页面-个人中心-验签密钥]";
        String deviceId =  "1";
        String id =  "1"; // 这里是度目智能应用平台人员唯一id,非必传,不传时,会重试所有
        String businessTimestamp = System.currentTimeMillis()+"";
        String nonce = UUID.randomUUID().toString();
        // 2.组装参数
        TreeMap<String, Object> map = new TreeMap<>();
        map.put("deviceId", deviceId);
        map.put("id", id);
        map.put("businessTimestamp", businessTimestamp);
        map.put("nonce",nonce);
        // 3.签名
        String businessSign = SignUtil.sign(map, key);
        map.put("businessSign", businessSign);
        map.put("access_token", accessToken);
        // 4.发送请求
        String url = "https://aip.baidubce.com/rest/2.0/chengfeng/openapi/v1/device/sync/retry";
        String result = HttpUtil.get(map, url);
        // 5.获取结果
        System.out.println("响应结果: "+ result);
    }

    public static void main(String[] args) {
        DeviceSyncRetry.deviceSyncRetry();
    }

}
1.4.3 返回数据

Response

{
    "success":true,
    "error_code":0,
    "error_msg": "",
    "result":"成功"
}
1.4.4 返回字段说明
参数名 说明 数据类型
success 请求是否成功 boolean
error_code 状态码 Integer
error_msg 失败提示信息(只有当success为 false 时,接口才会返回message字段) json对象
result 结果详情描述 String

2 设备操作

2.1 获取/更新设备绑定码

2.1.1 基本信息

Path: https://aip.baidubce.com/rest/2.0/chengfeng/openapi/v1/device/getBindingKey

Method: get

接口描述: 获取/更新设备的绑定码,绑定码用于设备绑定使用

2.1.2 请求参数

Headers

参数名称 参数值 是否必须 示例 备注
Content-Type application/json

Path 变量

参数名称 说明 数据类型 是否必填

RequestParam

参数名 说明 数据类型 是否必填
access_token 请求接口token String
option 操作类型 int

option-操作类型(不传默认获取绑定码)

类型 类型值
更新绑定码 1
获取绑定码 0(默认值

Body

参数名 说明 数据类型 是否必填

示例代码

package com.baidu.demo.test.device;

import com.baidu.demo.utils.HttpUtil;
import com.baidu.demo.utils.SignUtil;

import java.util.TreeMap;
import java.util.UUID;

public class DeviceGetBindingKey {
    /**
     * request,utils文件夹请从接口文档, 接口示例代码工程中下载
     *
     */
    public static void deviceGetBindingKey() {
        // 1.定义参数
        // 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间,客户端可自行缓存,过期后重新获取。
        String accessToken = "[调用鉴权接口获取的token]";
        String key = "[度目智能应用平台页面-个人中心-验签密钥]";
        String option =  "1";
        String businessTimestamp = System.currentTimeMillis()+"";
        String nonce = UUID.randomUUID().toString();
        // 2.组装参数
        TreeMap<String, Object> map = new TreeMap<>();
        map.put("option", option);
        map.put("businessTimestamp", businessTimestamp);
        map.put("nonce",nonce);
        // 3.签名
        String businessSign = SignUtil.sign(map, key);
        map.put("businessSign", businessSign);
        map.put("access_token", accessToken);
        // 4.发送请求
        String url = "https://aip.baidubce.com/rest/2.0/chengfeng/openapi/v1/device/getBindingKey";
        String result = HttpUtil.get(map, url);
        // 5.获取结果
        System.out.println("响应结果: "+ result);
    }

    public static void main(String[] args) {
        DeviceGetBindingKey.deviceGetBindingKey();
    }

}
2.1.3 返回数据

Response

{
    "success":true,
    "error_code":0,
        "error_msg":"",
    "result":{
        "bindingKey":"123"
    }
}
2.1.4 返回字段说明
参数名 说明 数据类型
success 请求是否成功 boolean
error_code 状态码 Integer
error_msg 失败提示信息(只有当success为 false 时,接口才会返回message字段) json对象
result 结果详情描述 list
+bindingKey 绑定码 string

2.2 设备控制

2.2.1 基本信息

Path: https://aip.baidubce.com/rest/2.0/chengfeng/openapi/v1/device/control

Method: get

接口描述: 远程控制设备执行开门、重启等操作

2.2.2 请求参数

Headers

参数名称 参数值 是否必须 示例 备注
Content-Type application/json

Path 变量

参数名称 说明 数据类型 是否必填

RequestParam

参数名 说明 数据类型 是否必填
access_token 请求接口token String
deviceId 设备编号 String
option 操作类型 String

option-操作类型

类型 类型值
开门 OPEN_GATE
重启 REBOOT
解绑 RESET

Body

参数名 说明 数据类型 是否必填

示例代码

package com.baidu.demo.test.device;

import com.baidu.demo.utils.HttpUtil;
import com.baidu.demo.utils.SignUtil;

import java.util.TreeMap;
import java.util.UUID;

public class DeviceControl {
    /**
     * request,utils文件夹请从接口文档, 接口示例代码工程中下载
     *
     */
    public static void deviceControl() {
        // 1.定义参数
        // 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间,客户端可自行缓存,过期后重新获取。
        String accessToken = "[调用鉴权接口获取的token]";
        String key = "[度目智能应用平台页面-个人中心-验签密钥]";
        String option =  "1";
        String businessTimestamp = System.currentTimeMillis()+"";
        String nonce = UUID.randomUUID().toString();
        // 2.组装参数
        TreeMap<String, Object> map = new TreeMap<>();
        map.put("option", option);
        map.put("deviceId", deviceId);
        map.put("businessTimestamp", businessTimestamp);
        map.put("nonce",nonce);
        // 3.签名
        String businessSign = SignUtil.sign(map, key);
        map.put("businessSign", businessSign);
        map.put("access_token", accessToken);
        // 4.发送请求
        String url = "https://aip.baidubce.com/rest/2.0/chengfeng/openapi/v1/device/control";
        String result = HttpUtil.get(map, url);
        // 5.获取结果
        System.out.println("响应结果: "+ result);
    }

    public static void main(String[] args) {
        DeviceControl.deviceControl();
    }

}
2.2.3 返回数据

Response

{
    "success":true,
    "error_code":0,
    "error_msg":"",
    "result":""
}
2.2.4 返回字段说明
参数名 说明 数据类型
success 请求是否成功 boolean
error_code 状态码 Integer
error_msg 失败提示信息(只有当success为 false 时,接口才会返回message字段) json对象
result 结果详情描述 String

3 通道信息

3.1 视频盒子通道组绑定关系详情

3.1.1 基本信息

Path: https://aip.baidubce.com/rest/2.0/chengfeng/openapi/v1/device/getVideoBoxSyncList

Method: get

接口描述: 视频盒子通道组绑定关系详情

3.1.2 请求参数

Headers

参数名称 参数值 是否必须 示例 备注
Content-Type application/json

Path 变量

参数名称 说明 数据类型 是否必填

RequestParam

参数名 说明 数据类型 是否必填
deviceId 设备id String
access_token 请求接口token String

Body

参数名 说明 数据类型 是否必填

示例代码

package com.baidu.demo.test.device;

import com.baidu.demo.utils.HttpUtil;
import com.baidu.demo.utils.SignUtil;

import java.util.TreeMap;
import java.util.UUID;

/**
 * @ClassName GetVideoBoxSyncList
 * @Author yangqi10
 * @Date 2022/3/11
 */
public class GetVideoBoxSyncList {
    /**
     * request,utils文件夹请从接口文档, 接口示例代码工程中下载
     *
     */
    public static void getVideoBoxSyncList() {
        // 1.定义参数
        // 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间,客户端可自行缓存,过期后重新获取。
        String accessToken = "[调用鉴权接口获取的token]";
        String key = "[度目智能应用平台页面-个人中心-验签密钥]";
        String deviceId =  "DMB2160FGC31F00003";
        String businessTimestamp = System.currentTimeMillis()+"";
        String nonce = UUID.randomUUID().toString();
        // 2.组装参数
        TreeMap<String, Object> map = new TreeMap<>();
        map.put("deviceId", deviceId);
        map.put("businessTimestamp", businessTimestamp);
        map.put("nonce",nonce);
        // 3.签名
        String businessSign = SignUtil.sign(map, key);
        map.put("businessSign", businessSign);
        map.put("access_token", accessToken);
        // 4.发送请求
        String url = "https://aip.baidubce.com/rest/2.0/chengfeng/openapi/v1/device/getVideoBoxSyncList";
        String result = HttpUtil.get(map, url);
        // 5.获取结果
        System.out.println("响应结果: "+ result);
    }

    public static void main(String[] args) {
        GetVideoBoxSyncList.getVideoBoxSyncList();
    }
}
3.1.3 返回数据

Response

{
    "success":true,
    "code":0,
    "result":{
        "messageStates":1,
		"deviceId":"123145325",
        "channelInfos":[
            {
                "channelName":"",
                "channelId":"1",
                "channelIndex":"1",
                "groupInfos":[
                    {
                        "groupId":"groupA",
                        "groupName":"人员组A",
                        "groupType":1
                    },
                    {
                        "groupId":"groupB",
                        "groupName":"人员组B",
                        "groupType":1
                    }
                ]
            },
            {
                "channelId":"2",
                "channelIndex":"2",
                "groupInfos":[
                    {
                        "groupId":"groupB",
                        "groupName":"人员组B",
                        "groupType":1
                    },
                    {
                        "groupId":"groupC",
                        "groupName":"人员组C",
                        "groupType":1
                    }
                ]
            }
        ]
    }
}
3.1.4 返回字段说明
参数名 说明 数据类型
success 请求是否成功 boolean
error_code 状态码 Integer
error_msg 失败提示信息(只有当success为 false 时,接口才会返回message字段) json对象
result 结果详情描述 list
+messageStatus 下发结果
0:未发送
1:成功
2:同步中
-1:超时
-1000:状态码不合法
-999:未知错误码
integer
+deviceId 设备Id string
+channelInfos 通道绑定列表 list
++channelName 通道名称 string
++channelId 通道id string
++channelIndex 通道索引 string
++groupInfos 绑定组列表 list
+++groupId 组Id string
+++groupName 组名称 string
+++groupType 组类型 Integer

3.2 通道与人员组绑定配置接口

3.2.1 基本信息

Path: https://aip.baidubce.com/rest/2.0/chengfeng/openapi/v1/device/sync/personGroupConf

Method: post

接口描述: 通道与人员组绑定配置接口

3.2.2 请求参数

Headers

参数名称 参数值 是否必须 示例 备注
Content-Type application/json

Path 变量

参数名称 说明 数据类型 是否必填

RequestParam

参数名 说明 数据类型 是否必填
deviceId 设备id String
access_token 请求接口token String

Body

参数名 说明 数据类型 是否必填
channelInfos 通道组绑定信息列表 list
+channelId 通道Id String
+groupList 组列表 list
++groupId 组Id String
++groupName 组名称 String
++groupType 组类型
NONE("无组",0)
MEMBER("成员组", 1)
GUEST("访客组", 2)
BLACK("黑名单组", 3)
DEFAULT("默认成员组", 4)
integer

示例代码

package com.baidu.demo.test.device;

import com.alibaba.fastjson.JSONObject;
import com.baidu.demo.request.OpenAPIRequest;
import com.baidu.demo.request.deviceChannel.GroupPOJO;
import com.baidu.demo.request.deviceChannel.MessageChannelDao;
import com.baidu.demo.request.deviceChannel.PersonGroupConfRequest;
import com.baidu.demo.utils.GsonUtils;
import com.baidu.demo.utils.HttpUtil;
import com.baidu.demo.utils.SignUtil;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;

public class PersonGroupConf {
    /**
     * request,utils文件夹请从接口文档中下载
     *
     */
    public static void personGroupConf() {
        // 1.定义参数
        // 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间, 客户端可自行缓存,过期后重新获取。
        String accessToken = "[调用鉴权接口获取的token]";
        String key = "[度目智能应用平台页面-个人中心-验签密钥]";
        String deviceId = "deviceId111";
        List<MessageChannelDao> channelInfos = new ArrayList<>();
        List<GroupPOJO> groupList1 = new ArrayList<>();
        List<GroupPOJO> groupList2 = new ArrayList<>();
        groupList1.add(GroupPOJO.builder()
                .groupId("MEM_807949663664_31")
                .build());
        groupList2.add(GroupPOJO.builder()
                .groupId("MEM_807949663664_32")
                .build());
        channelInfos.add(MessageChannelDao.builder()
                .channelId("DMB2160FGC31F00003_1")
                .groupList(groupList1)
                .build());
        channelInfos.add(MessageChannelDao.builder()
                .channelId("DMB2160FGC31F00003_2")
                .groupList(groupList2)
                .build());

        // 2.签名
        PersonGroupConfRequest personGroupConfRequest = PersonGroupConfRequest.builder()
                .channelInfos(channelInfos)
                .build();
        Map<String, String> personGroupConf = new HashMap<>() ;
        personGroupConf.put("deviceId" , deviceId) ;
        OpenAPIRequest sign = SignUtil.sign(personGroupConfRequest, personGroupConf, key);
        // 2.组装参数
        TreeMap map = JSONObject.parseObject(JSONObject.toJSONString(personGroupConfRequest), TreeMap.class);
        map.put("businessTimestamp", sign.getBusinessTimestamp());
        map.put("nonce", sign.getNonce());
        map.put("businessSign",sign.getBusinessSign());
        String param = GsonUtils.toJson(map);
        // 4.发送请求
        String url = "https://aip.baidubce.com/rest/2.0/chengfeng/openapi/v1/person/update?access_token="+ accessToken +"&deviceId="+ deviceId;
        String result = HttpUtil.post(url, param);
        // 5.获取结果
        System.out.println("响应结果: "+ result);
    }

    public static void main(String[] args){
        PersonGroupConf.personGroupConf();
    }
}
3.2.3 返回数据

Response

{
    "success":true,
    "code":0,
    "result":"下发成功"
}
3.2.4 返回字段说明
参数名 说明 数据类型
success 请求是否成功 boolean
error_code 状态码 Integer
error_msg 失败提示信息(只有当success为 false 时,接口才会返回message字段) json对象
result 结果详情描述 String

3.3 设备(设备通道)下绑定的组查询接口

3.3.1 基本信息

Path: https://aip.baidubce.com/rest/2.0/chengfeng/openapi/v1/issued/relate/get/deviceBindGroups

Method: post

接口描述: 设备(设备通道)下绑定的组查询接口

3.3.2 请求参数

Headers

参数名称 参数值 是否必须 示例 备注
Content-Type application/json

Path 变量

参数名称 说明 数据类型 是否必填

RequestParam

参数名 说明 数据类型 是否必填
access_token 请求接口token String

Body

参数名 说明 数据类型 是否必填
bindings 设备绑定关系列表 list
+deviceId 设备id String

示例代码

package com.baidu.demo.test.device;

import com.alibaba.fastjson.JSONObject;
import com.baidu.demo.request.OpenAPIRequest;
import com.baidu.demo.request.deviceChannel.BindingRelationVO;
import com.baidu.demo.request.deviceChannel.DeviceBindGroupsRequest;
import com.baidu.demo.utils.GsonUtils;
import com.baidu.demo.utils.HttpUtil;
import com.baidu.demo.utils.SignUtil;

import java.util.ArrayList;
import java.util.List;
import java.util.TreeMap;

/**
 * @ClassName DeviceBindGroups
 * @Author yangqi10
 * @Date 2022/3/11
 */
public class DeviceBindGroups {
    /**
     * request,utils文件夹请从接口文档中下载
     *
     */
    public static void deviceBindGroups() {
        // 1.定义参数
        // 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间, 客户端可自行缓存,过期后重新获取。
        String accessToken = "[调用鉴权接口获取的token]";
        String key = "[度目智能应用平台页面-个人中心-验签密钥]";
        String deviceId = "DMB2160FGC31F00003";
        List<BindingRelationVO> bindings = new ArrayList<>();
        bindings.add(BindingRelationVO.builder().deviceId(deviceId).build());

        // 2.签名
        DeviceBindGroupsRequest personGroupConfRequest = DeviceBindGroupsRequest.builder()
                .bindings(bindings)
                .build();
        OpenAPIRequest sign = SignUtil.sign(personGroupConfRequest, key);
        // 2.组装参数
        TreeMap map = JSONObject.parseObject(JSONObject.toJSONString(personGroupConfRequest), TreeMap.class);
        map.put("businessTimestamp", sign.getBusinessTimestamp());
        map.put("nonce", sign.getNonce());
        map.put("businessSign",sign.getBusinessSign());
        String param = GsonUtils.toJson(map);
        // 4.发送请求
        String url = "https://aip.baidubce.com/rest/2.0/chengfeng/openapi/v1/issued/relate/get/deviceBindGroups?" +
                "access_token="+ accessToken;
        String result = HttpUtil.post(url, param);
        // 5.获取结果
        System.out.println("响应结果: "+ result);
    }

    public static void main(String[] args){
        DeviceBindGroups.deviceBindGroups();
    }
}
3.3.3 返回数据

Response

{
    "success": true,
    "code": 0,
    "result": [
        {
            "deviceId": "DMB2160FGC31F00003",
            "groupList": [
                {
                    "groupId": "MEM_807949663664_31",
                    "groupType": "MEM",
                    "groupName": "默认成员组"
                }
            ]
        }
    ]
}
3.3.4 返回字段说明
参数名 说明 数据类型
success 请求是否成功 boolean
error_code 状态码 Integer
error_msg 失败提示信息(只有当success为 false 时,接口才会返回message字段) json对象
result 结果详情描述 list
+deviceId 设备Id string
+groupList 绑定组列表 list
++groupId 组Id string
++groupName 组名称 string
++groupType 组类型 Integer

(四) 同步API

1 同步信息

1.1 添加同步任务

1.1.1 基本信息

Path: https://aip.baidubce.com/rest/2.0/chengfeng/openapi/v1/issued/relate/add

Method: post

接口描述: 添加同步任务,同步任务用于同步设备需要识别的人员信息、时间计划等信息到设备中,是设备进行识别所需要使用的数据

1.1.2 请求参数

Headers

参数名称 参数值 是否必须 示例 备注
Content-Type application/json

Path 变量

参数名称 说明 数据类型 是否必填

RequestParam

参数名 说明 数据类型 是否必填
access_token 请求接口token String

Body

参数名 说明 数据类型 是否必填
groupList 人员组列表 List<Object>
+groupType 人员组类型 int
+groupId 人员组id String
+groupName 人员组名 String
deviceList 设备列表 List<Object>
+deviceId 设备id String
+deviceName 设备名 String
scheduleId 时间计划id String

示例代码

package com.baidu.demo.test.issued.relate;

import com.baidu.demo.request.DeviceList;
import com.baidu.demo.request.GroupList;
import com.baidu.demo.request.IssuedRelateRequest;
import com.baidu.demo.request.OpenAPIRequest;
import com.baidu.demo.utils.GsonUtils;
import com.baidu.demo.utils.HttpUtil;
import com.baidu.demo.utils.SignUtil;

import java.util.Arrays;

public class IssuedRelateAdd {

    /**
     * request,utils文件夹请从接口文档, 接口示例代码工程中下载
     *
     */
    public static void issuedRelateAdd() {
        // 1.定义参数
        // 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间, 客户端可自行缓存,过期后重新获取。
        String accessToken = "[调用鉴权接口获取的token]";
        String key = "[度目智能应用平台页面-个人中心-验签密钥]";
        String groupId = "MEM_815265821110_68";
        int groupType = 1;
        String groupName = "测试人员组";
        String deviceId = "DMCM020MYC21A00082";
        String deviceName = "zmy666";
        String scheduleId = "scheduleId_4a9572cbe01744498edda026c2954427";
        IssuedRelateRequest issuedRelateRequest = IssuedRelateRequest.builder()
                .groupList(Arrays.asList(GroupList.builder().groupId(groupId).groupType(groupType).groupName(groupName).build()))
                .deviceList(Arrays.asList(DeviceList.builder().deviceId(deviceId).deviceName(deviceName).build()))
                .scheduleId(scheduleId)
                .build() ;
        // 2.签名
        OpenAPIRequest sign = SignUtil.sign(issuedRelateRequest, key);
        // 3.转化参数
        String param = GsonUtils.toJson(sign);
        // 4.发送请求
        String url = "https://aip.baidubce.com/rest/2.0/chengfeng/openapi/v1/issued/relate/add?access_token="+ accessToken;
        String result = HttpUtil.post(url, param);
        // 5.获取结果
        System.out.println("响应结果: "+ result);
    }

    public static void main(String[] args){
        IssuedRelateAdd.issuedRelateAdd();
    }
1.1.3 返回数据

Response

{
    "success":true,
    "error_code":0,
    "error_msg":"",
    "result":{
        "syncId":"iss1",
        "scheduleName":"时间计划1",
        "scheduleId":"schedule0988",
        "deviceList":[
            {
                "deviceName":"这里设备名称1",
                "deviceId":"deviceId1"
            }
        ],
        "memGroups":[
            {
                "groupId":"g1",
                "groupType":"MEM",
                "groupName":"组1"
            }
        ],
        "visitorGroups":[
            {
                "groupId":"g1",
                "groupType":"VISITORS",
                "groupName":"组1"
            }
        ],
        "blackGroups":[
            {
                "groupId":"g1",
                "groupType":"BLACK",
                "groupName":"组1"
            }
        ]
    }
}
1.1.4 返回字段说明
参数名 说明 数据类型
success 请求是否成功 boolean
error_code 状态码 Integer
error_msg 失败提示信息(只有当success为 false 时,接口才会返回message字段) json对象
page page对象 map
+pageNo 页码 Integer
+pageSize 页大小 Integer
+totalCount 总条数 Integer
result 结果详情描述 list
+syncId 同步任务id String
+scheduleId 时间计划id String
+scheduleName 时间计划名称 String
+deviceList 设备列表 List
++deviceName 设备名称 String
++deviceId 设备id String
+memGroups 成员列表 List
++groupId 组id String
++groupType 组类型 String
++groupName 组名 String
+visitorGroups 访客列表 List
++groupId 组id String
++groupType 组类型 String
++groupName 组名 String
+blackGroups 黑名单列表 List
++groupId 组id String
++groupType 组类型 String
++groupName 组名 String

1.2 修改同步任务

1.2.1 基本信息

Path: https://aip.baidubce.com/rest/2.0/chengfeng/openapi/v1/issued/relate/update

Method: post

接口描述: 修改同步任务信息

1.2.2 请求参数

Headers

参数名称 参数值 是否必须 示例 备注
Content-Type application/json

Path 变量

参数名称 说明 数据类型 是否必填

RequestParam

参数名 说明 数据类型 是否必填
access_token 请求接口token String
syncId 同步任务id String

Body

参数名 说明 数据类型 是否必填
groupList 人员组列表 List<Object>
+groupType 成员组类型 int
+groupId 成员组id String
+groupName 成员组名 String
deviceList 设备列表 List<Object>
+deviceId 设备id String
+deviceName 设备名 String
scheduleId 时间计划id String

示例代码

package com.baidu.demo.test.issued.relate;

import com.baidu.demo.request.DeviceList;
import com.baidu.demo.request.GroupList;
import com.baidu.demo.request.IssuedRelateRequest;
import com.baidu.demo.request.OpenAPIRequest;
import com.baidu.demo.utils.GsonUtils;
import com.baidu.demo.utils.HttpUtil;
import com.baidu.demo.utils.SignUtil;

import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;

public class IssuedRelateUpdate {

    /**
     * request,utils文件夹请从接口文档, 接口示例代码工程中下载
     *
     */
    public static void issuedRelateUpdate() {
        // 1.定义参数
        // 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间, 客户端可自行缓存,过期后重新获取。
        String accessToken = "[调用鉴权接口获取的token]";
        String key = "[度目智能应用平台页面-个人中心-验签密钥]";
        String syncId = "syncId_f63aa82d3a3d47c1ae83c169d8ed823b";
        String groupId = "MEM_815265821110_68";
        int groupType = 1;
        String groupName = "测试人员组";
        String deviceId = "DMCM020MYC21A00082";
        String deviceName = "zmy666";
        String scheduleId = "scheduleId_4a9572cbe01744498edda026c2954427";
        IssuedRelateRequest issuedRelateRequest = IssuedRelateRequest.builder()
                .groupList(Arrays.asList(GroupList.builder().groupId(groupId).groupType(groupType).groupName(groupName).build()))
                .deviceList(Arrays.asList(DeviceList.builder().deviceId(deviceId).deviceName(deviceName).build()))
                .scheduleId(scheduleId)
                .build() ;
        // 2.签名
        Map<String, String> syncUpdateParams = new HashMap<>();
        syncUpdateParams.put("syncId" , syncId) ;
        OpenAPIRequest sign = SignUtil.sign(issuedRelateRequest,syncUpdateParams, key);
        // 3.转化参数
        String param = GsonUtils.toJson(sign);
        // 4.发送请求
        String url = "https://aip.baidubce.com/rest/2.0/chengfeng/openapi/v1/issued/relate/update?access_token="+ accessToken +"&syncId="+ syncId;
        String result = HttpUtil.post(url, param);
        // 5.获取结果
        System.out.println("响应结果: "+ result);
    }

    public static void main(String[] args){
        IssuedRelateUpdate.issuedRelateUpdate();
    }
}
1.2.3 返回数据

Response

{
    "success":true,
    "error_code":0,
    "error_msg":"",
    "result":{
        "syncId":"iss1",
        "scheduleName":"时间计划1",
        "scheduleId":"schedule0988",
        "deviceList":[
            {
                "deviceName":"这里设备名称1",
                "deviceId":"deviceId1"
            }
        ],
        "memGroups":[
            {
                "groupId":"g1",
                "groupType":"MEM",
                "groupName":"组1"
            }
        ],
        "visitorGroups":[
            {
                "groupId":"g1",
                "groupType":"VISITORS",
                "groupName":"组1"
            }
        ],
        "blackGroups":[
            {
                "groupId":"g1",
                "groupType":"BLACK",
                "groupName":"组1"
            }
        ]
    }
}
1.2.4 返回字段说明
参数名 说明 数据类型
success 请求是否成功 boolean
error_code 状态码 Integer
error_msg 失败提示信息(只有当success为 false 时,接口才会返回message字段) json对象
page page对象 map
+pageNo 页码 Integer
+pageSize 页大小 Integer
+totalCount 总条数 Integer
result 结果详情描述 list
+syncId 同步任务id String
+scheduleId 时间计划id String
+scheduleName 时间计划名称 String
+deviceList 设备列表 List
++deviceName 设备名称 String
++deviceId 设备id String
+memGroups 成员列表 List
++groupId 组id String
++groupType 组类型 String
++groupName 组名 String
+visitorGroups 访客列表 List
++groupId 组id String
++groupType 组类型 String
++groupName 组名 String
+blackGroups 黑名单列表 List
++groupId 组id String
++groupType 组类型 String
++groupName 组名 String

1.3 查询同步任务

1.3.1 基本信息

Path: https://aip.baidubce.com/rest/2.0/chengfeng/openapi/v1/issued/relate/detail

Method: get

接口描述: 查询一个同步任务,参数时同步ID

1.3.2 请求参数

Headers

参数名称 参数值 是否必须 示例 备注
Content-Type application/json

Path 变量

参数名称 说明 数据类型 是否必填

RequestParam

参数名 说明 数据类型 是否必填
access_token 请求接口token String
syncId 同步任务id String

Body

参数名 说明 数据类型 是否必填

示例代码

package com.baidu.demo.test.issued.relate;

import com.baidu.demo.utils.HttpUtil;
import com.baidu.demo.utils.SignUtil;

import java.util.TreeMap;
import java.util.UUID;

public class IssuedRelateDetail {
    /**
     * request,utils文件夹请从接口文档, 接口示例代码工程中下载
     *
     */
    public static void issuedRelateDetail() {
        // 1.定义参数
        // 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间,客户端可自行缓存,过期后重新获取。
        String accessToken = "[调用鉴权接口获取的token]";
        String key = "[度目智能应用平台页面-个人中心-验签密钥]";
        String syncId =  "syncId_f63aa82d3a3d47c1ae83c169d8ed823b";
        String businessTimestamp = System.currentTimeMillis()+"";
        String nonce = UUID.randomUUID().toString();
        // 2.组装参数
        TreeMap<String, Object> map = new TreeMap<>();
        map.put("syncId", syncId);
        map.put("businessTimestamp", businessTimestamp);
        map.put("nonce",nonce);
        // 3.签名
        String businessSign = SignUtil.sign(map, key);
        map.put("businessSign", businessSign);
        map.put("access_token", accessToken);
        // 4.发送请求
        String url = "https://aip.baidubce.com/rest/2.0/chengfeng/openapi/v1/issued/relate/detail";
        String result = HttpUtil.get(map, url);
        // 5.获取结果
        System.out.println("响应结果: "+ result);
    }

    public static void main(String[] args) {
        IssuedRelateDetail.issuedRelateDetail();
    }
}
1.3.3 返回数据
{
    "success":true,
    "error_code":0,
    "error_msg":"",
    "result":{
        "syncId":"iss1",
        "scheduleName":"时间计划1",
        "scheduleId":"schedule0988",
        "deviceList":[
            {
                "deviceName":"这里设备名称1",
                "deviceId":"deviceId1"
            }
        ],
        "memGroups":[
            {
                "groupId":"g1",
                "groupType":"MEM",
                "groupName":"组1"
            }
        ],
        "visitorGroups":[
            {
                "groupId":"g1",
                "groupType":"VISITORS",
                "groupName":"组1"
            }
        ],
        "blackGroups":[
            {
                "groupId":"g1",
                "groupType":"BLACK",
                "groupName":"组1"
            }
        ]
    }
}
1.3.4 返回字段说明
参数名 说明 数据类型
success 请求是否成功 boolean
error_code 状态码 Integer
error_msg 失败提示信息(只有当success为 false 时,接口才会返回message字段) json对象
page page对象 map
+pageNo 页码 Integer
+pageSize 页大小 Integer
+totalCount 总条数 Integer
result 结果详情描述 list
+syncId 同步任务id String
+scheduleId 时间计划id String
+scheduleName 时间计划名称 String
+deviceList 设备列表 List
++deviceName 设备名称 String
++deviceId 设备id String
+memGroups 成员列表 List
++groupId 组id String
++groupType 组类型 String
++groupName 组名 String
+visitorGroups 访客列表 List
++groupId 组id String
++groupType 组类型 String
++groupName 组名 String
+blackGroups 黑名单列表 List
++groupId 组id String
++groupType 组类型 String
++groupName 组名 String

1.4 删除同步任务

1.4.1 基本信息

Path: https://aip.baidubce.com/rest/2.0/chengfeng/openapi/v1/issued/relate/delete

Method: post

接口描述: 批量删除同步任务

1.4.2 请求参数

Headers

参数名称 参数值 是否必须 示例 备注
Content-Type application/json

Path 变量

参数名称 说明 数据类型 是否必填

RequestParam

参数名 说明 数据类型 是否必填
access_token 请求接口token String

Body

参数名 说明 数据类型 是否必填
syncIdList 同步任务id数组 数组

示例代码

package com.baidu.demo.test.issued.relate;

import com.alibaba.fastjson.JSONObject;
import com.baidu.demo.request.IssuedSyncDeleteRequest;
import com.baidu.demo.request.OpenAPIRequest;
import com.baidu.demo.utils.GsonUtils;
import com.baidu.demo.utils.HttpUtil;
import com.baidu.demo.utils.SignUtil;

import java.util.Arrays;
import java.util.TreeMap;

public class IssuedRelateDelete {
    /**
     * request,utils文件夹请从接口文档, 接口示例代码工程中下载
     *
     */
    public static void issuedRelateDelete() {
        // 1.定义参数
        // 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间,客户端可自行缓存,过期后重新获取。
        String accessToken = "[调用鉴权接口获取的token]";
        String key = "[度目智能应用平台页面-个人中心-验签密钥]";
        String syncId =  "syncId_f63aa82d3a3d47c1ae83c169d8ed823b";
        IssuedSyncDeleteRequest deleteRequest = IssuedSyncDeleteRequest.builder()
                .syncIdList(Arrays.asList(syncId))
                .build();
        // 2.签名
        OpenAPIRequest sign = SignUtil.sign(deleteRequest, key);
        // 3.组装参数
        TreeMap map = JSONObject.parseObject(JSONObject.toJSONString(deleteRequest), TreeMap.class);
        map.put("businessTimestamp", sign.getBusinessTimestamp());
        map.put("nonce", sign.getNonce());
        map.put("businessSign",sign.getBusinessSign());
        String param = GsonUtils.toJson(map);
        // 4.发送请求
        String url = "https://aip.baidubce.com/rest/2.0/chengfeng/openapi/v1/issued/relate/delete?access_token="+ accessToken;
        String result = HttpUtil.post(url, param);
        // 5.获取结果
        System.out.println("响应结果: "+ result);
    }

    public static void main(String[] args) {
        IssuedRelateDelete.issuedRelateDelete();
    }
}
1.4.3 返回数据

Response

{
    "success":true,
    "error_code":0,
    "error_msg":"",
    "result":"删除成功"
}
1.4.4返回字段说明
参数名 说明 数据类型
success 请求是否成功 boolean
error_code 状态码 Integer
error_msg 失败提示信息(只有当success为 false 时,接口才会返回message字段) json对象
result 结果详情描述 String

2 时间计划

2.1 添加时间计划

2.1.1基本信息

Path: https://aip.baidubce.com/rest/2.0/chengfeng/openapi/v1/issued/relate/schedule/add

Method: post

接口描述: 时间计划是设备进行人员识别的时间依据,此接口用于添加时间计划

2.1.2 请求参数

Headers

参数名称 参数值 是否必须 示例 备注
Content-Type application/json

Path 变量

参数名称 说明 数据类型 是否必填

RequestParam

参数名 说明 数据类型 是否必填
access_token 请求接口token String

Body

参数名 说明 数据类型 是否必填 默认值
scheduleName 时间计划名称 String
topStatus 是否置顶 bool false
defaultSchedule 是否默认 bool false
weekSchedule 周计划 list
+valid 是否可通行 bool true
+weekSerialNumber 周序列号 1:周一 2:周二 3:周三 4:周四 5:周五 6:周六 7:周日 int
+periodList 时段列表 list
++startTime 时段开始时间 Date
++endTime 时段结束时间 Date
specialDate 特殊时间计划 object
+date 日期 Date
+valid 是否可通行 bool true
+periodList 时段列表 list
++startTime 时段开始时间 Date
++endTime 时段结束时间 Date

示例代码

package com.baidu.demo.test.issued.schedule;

import com.baidu.demo.request.OpenAPIRequest;
import com.baidu.demo.request.Period;
import com.baidu.demo.request.ScheduleRequest;
import com.baidu.demo.request.SpecialDate;
import com.baidu.demo.request.WeekSchedule;
import com.baidu.demo.utils.GsonUtils;
import com.baidu.demo.utils.HttpUtil;
import com.baidu.demo.utils.SignUtil;

import java.util.Arrays;

public class IssuedRelateScheduleAdd {

    /**
     * request,utils文件夹请从接口文档, 接口示例代码工程中下载
     *
     */
    public static void issuedRelateScheduleAdd() {
        // 1.定义参数
        // 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间, 客户端可自行缓存,过期后重新获取。
        String accessToken = "[调用鉴权接口获取的token]";
        String key = "[度目智能应用平台页面-个人中心-验签密钥]";
        String scheduleName = "时间计划1";
        Boolean defaultSchedule = false;
        Integer weekSerialNumber = 1;
        Boolean weekScheduleValid = false;
        String periodStartTime1 = "00:00";
        String periodEndTime1 = "10:00";
        Boolean specialDateValid = false;
        String date = "2021-06-10";
        String periodStartTime2 = "00:00";
        String periodEndTime2 = "10:00";

        ScheduleRequest scheduleRequest = ScheduleRequest.builder()
                .scheduleName(scheduleName)
                .defaultSchedule(defaultSchedule)
                .weekSchedule(Arrays.asList(
                        WeekSchedule.builder()
                                .weekSerialNumber(weekSerialNumber)
                                .valid(weekScheduleValid)
                                .periodList(Arrays.asList(Period.builder().startTime(periodStartTime1).endTime(periodEndTime1).build()))
                                .build()
                ))
                .specialDate(Arrays.asList(
                        SpecialDate.builder()
                                .valid(specialDateValid)
                                .date(date)
                                .periodList(Arrays.asList(Period.builder().startTime(periodStartTime2).endTime(periodEndTime2).build()))
                                .build()
                ))
                .build();
        // 2.签名
        OpenAPIRequest sign = SignUtil.sign(scheduleRequest, key);
        // 3.转化参数
        String param = GsonUtils.toJson(sign);
        // 4.发送请求
        String url = "https://aip.baidubce.com/rest/2.0/chengfeng/openapi/v1/issued/relate/schedule/add?access_token="+ accessToken;
        String result = HttpUtil.post(url, param);
        // 5.获取结果
        System.out.println("响应结果: "+ result);
    }

    public static void main(String[] args){
        IssuedRelateScheduleAdd.issuedRelateScheduleAdd();
    }
}
2.1.3 返回数据

Response

{
    "success":true,
    "error_code":0,
       "error_msg":"",
    "result":{
        "scheduleName":"时间计划1",
        "topStatus":false,
        "defaultSchedule":false,
        "scheduleId":"schedule0988",
        "weekSchedule":[
            {
                "weekSerialNumber":1,
                "valid":false,
                "periodList":[
                    {
                        "startTime":"00:00",
                        "endTime":"10:00"
                    }
                ]
            }
        ],
        "specialDate":[
            {
                "valid":false,
                "date":"2021-01-01",
                "periodList":[
                    {
                        "startTime":"00:00",
                        "endTime":"10:00"
                    }
                ]
            }
        ]
    }
}
2.1.4 返回字段说明
参数名 说明 数据类型 是否必传 默认值
success 请求是否成功 boolean true
error_code 状态码 Integer 0
error_msg 失败提示信息(只有当success为 false 时,接口才会返回message字段) json对象 ""
result 请求结果 object
+scheduleName 时间计划名称 String
+topStatus 是否置顶 bool false
+defaultSchedule 是否是默认 bool false
+scheduleId 时间计划id String
+weekSchedule 周计划 list
++valid 是否可通行 true true
++weekSerialNumber 周序列号 1:周一 2:周二 3:周三 4:周四 5:周五 6:周六 7:周日 int
++periodList 时段列表 list
+++startTime 时段开始时间 Date
+++endTime 时段结束时间 Date
+specialDate 特殊时间计划 object
++date 日期 Date
++periodList 时段列表 list
+++startTime 时段开始时间 Date
+++endTime 时段结束时间 Date

2.2 时间计划详情

2.2.1 基本信息

Path: https://aip.baidubce.com/rest/2.0/chengfeng/openapi/v1/issued/relate/schedule/detail

Method: get

接口描述: 时间计划是设备进行人员识别的时间依据,此接口用于查询某个时间计划的详情,参数为时间计划id

2.2.2 请求参数

Headers

参数名称 参数值 是否必须 示例 备注
Content-Type application/json

Path 变量

参数名称 说明 数据类型 是否必填

RequestParam

参数名 说明 数据类型 是否必填
access_token 请求接口token String
scheduleId 计划id String

Body

参数名 说明 数据类型 是否必填

示例代码

package com.baidu.demo.test.issued.schedule;

import com.baidu.demo.utils.HttpUtil;
import com.baidu.demo.utils.SignUtil;

import java.util.TreeMap;
import java.util.UUID;

public class IssuedRelateScheduleDetail {

    /**
     * request,utils文件夹请从接口文档, 接口示例代码工程中下载
     *
     */
    public static void issuedRelateScheduleDetail() {
        // 1.定义参数
        // 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间,客户端可自行缓存,过期后重新获取。
        String accessToken = "[调用鉴权接口获取的token]";
        String key = "[度目智能应用平台页面-个人中心-验签密钥]";
        String scheduleId =  "scheduleId_f63aa82d3a3d47c1ae83c169d8ed823b";
        String businessTimestamp = System.currentTimeMillis()+"";
        String nonce = UUID.randomUUID().toString();
        // 2.组装参数
        TreeMap<String, Object> map = new TreeMap<>();
        map.put("scheduleId", scheduleId);
        map.put("businessTimestamp", businessTimestamp);
        map.put("nonce",nonce);
        // 3.签名
        String businessSign = SignUtil.sign(map, key);
        map.put("businessSign", businessSign);
        map.put("access_token", accessToken);
        // 4.发送请求
        String url = "https://aip.baidubce.com/rest/2.0/chengfeng/openapi/v1/issued/relate/schedule/detail";
        String result = HttpUtil.get(map, url);
        // 5.获取结果
        System.out.println("响应结果: "+ result);
    }

    public static void main(String[] args) {
        IssuedRelateScheduleDetail.issuedRelateScheduleDetail();
    }

}
2.2.3 返回数据

Response

{
    "success":true,
    "error_code":0,
        "error_msg":"",
    "result":{
        "scheduleName":"时间计划1",
        "topStatus":false,
        "defaultSchedule":false,
        "scheduleId":"schedule0988",
        "weekSchedule":[
            {
                "weekSerialNumber":1,
                "valid":false,
                "periodList":[
                    {
                        "startTime":"00:00",
                        "endTime":"10:00"
                    }
                ]
            }
        ],
        "specialDate":[
            {
                "valid":false,
                "date":"2021-01-01",
                "periodList":[
                    {
                        "startTime":"00:00",
                        "endTime":"10:00"
                    }
                ]
            }
        ]
    }
}
2.2.4 返回字段说明
参数名 说明 数据类型 是否必填 默认值
success 请求是否成功 boolean true
error_code 状态码 Integer 0
error_msg 失败提示信息(只有当success为 false 时,接口才会返回message字段) json对象 ""
result 请求结果 object
+scheduleName 时间计划名称 String
+topStatus 是否置顶 bool false
+defaultSchedule 是否是默认 bool false
+scheduleId 时间计划id String
+weekSchedule 周计划 list
++valid 是否可通行 bool false
++weekSerialNumber 周序列号 1:周一 2:周二 3:周三 4:周四 5:周五 6:周六 7:周日 int
++periodList 时段列表 list
+++startTime 时段开始时间 Date
+++endTime 时段结束时间 Date
+specialDate 特殊时间计划 object
++valid 是否可通行 bool true
++date 日期 Date
++periodList 时段列表 list
+++startTime 时段开始时间 Date
+++endTime 时段结束时间 Date

2.3 时间计划列表

2.3.1 基本信息

Path: https://aip.baidubce.com/rest/2.0/chengfeng/openapi/v1/issued/relate/schedule/list

Method: get

接口描述: 时间计划是设备进行人员识别的时间依据,此接口用于批量查询时间计划列表

2.3.2 请求参数

Headers

参数名称 参数值 是否必须 示例 备注
Content-Type application/json

Path 变量

参数名称 说明 数据类型 是否必填

RequestParam

参数名 说明 数据类型 是否必填 默认值
access_token 请求接口token String
pageNo 页码,大于等于1。默认为1 Integer 1
pageSize 页大小,默认10(取值范围1~50) Integer 10
scheduleName 时间计划名称 String

Body

参数名 说明 数据类型 是否必填

示例代码

package com.baidu.demo.test.issued.schedule;

import com.baidu.demo.utils.HttpUtil;
import com.baidu.demo.utils.SignUtil;

import java.util.TreeMap;
import java.util.UUID;

public class IssuedRelateScheduleList {

    /**
     * request,utils文件夹请从接口文档, 接口示例代码工程中下载
     *
     */
    public static void issuedRelateScheduleList() {
        // 1.定义参数
        // 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间,客户端可自行缓存,过期后重新获取。
        String accessToken = "[调用鉴权接口获取的token]";
        String key = "[度目智能应用平台页面-个人中心-验签密钥]";
        Integer pageNo =  1;
        Integer pageSize =  10;
        String businessTimestamp = System.currentTimeMillis()+"";
        String nonce = UUID.randomUUID().toString();
        // 2.组装参数
        TreeMap<String, Object> map = new TreeMap<>();
        map.put("pageNo", pageNo);
        map.put("pageSize", pageSize);
        map.put("businessTimestamp", businessTimestamp);
        map.put("nonce",nonce);
        // 3.签名
        String businessSign = SignUtil.sign(map, key);
        map.put("businessSign", businessSign);
        map.put("access_token", accessToken);
        // 4.发送请求
        String url = "https://aip.baidubce.com/rest/2.0/chengfeng/openapi/v1/issued/relate/schedule/list";
        String result = HttpUtil.get(map, url);
        // 5.获取结果
        System.out.println("响应结果: "+ result);
    }

    public static void main(String[] args) {
        IssuedRelateScheduleList.issuedRelateScheduleList();
    }
}
2.3.3 返回数据

Response

{
    "success":true,
    "error_code":0,
    "error_msg":"",
    "page":{
        "pageNo":1,
        "pageSize":10,
        "totalCount":1,
        "result":[
            {
                "scheduleName":"时间计划1",
                "scheduleId":"schedule0988",
                "defaultSchedule":false,
                "weekSchedule":[
                    {
                        "weekSerialNumber":1,
                         "valid":false,
                        "periodList":[
                            {
                                "startTime":"00:00",
                                "endTime":"10:00"
                            }
                        ]
                    }
                ],
                "specialDate":[
                    {
                        "date":"2021-01-01",
                        "valid":false,
                        "periodList":[
                            {
                                "startTime":"00:00",
                                "endTime":"10:00"
                            }
                        ]
                    }
                ]
            }
        ]
    }
}
2.3.4 返回字段说明
参数名 说明 数据类型 是否必传 默认值
success 请求是否成功 boolean true
error_code 状态码 Integer 0
error_msg 失败提示信息(只有当success为 false 时,接口才会返回message字段) json对象 ""
page page对象 map
+pageNo 页码 Integer
+pageSize 页大小 Integer
+result 请求结果 object
++scheduleName 时间计划名称 String
++scheduleId 时间计划id String
++topStatus 是否置顶 bool false
++defaultSchedule 是否默认 bool false
++weekSchedule 周计划 list
+++valid 是否可通行 bool true
+++weekSerialNumber 周序列号 1:周一 2:周二 3:周三 4:周四 5:周五 6:周六 7:周日 int
+++periodList 时段列表 list
++++startTime 时段开始时间 Date
++++endTime 时段结束时间 Date
++specialDate 特殊时间计划 object
+++date 日期 Date
+++valid 是否可通行 bool true
+++periodList 时段列表 list
++++startTime 时段开始时间 Date
++++endTime 时段结束时间 Date

2.4 编辑时间计划

2.4.1 基本信息

Path: https://aip.baidubce.com/rest/2.0/chengfeng/openapi/v1/issued/relate/schedule/update

Method: post

接口描述: 时间计划是设备进行人员识别的时间依据,此接口用于编辑时间计划

2.4.2 请求参数

Headers

参数名称 参数值 是否必须 示例 备注
Content-Type application/json

Path 变量

参数名称 说明 数据类型 是否必填

RequestParam

参数名 说明 数据类型 是否必填
access_token 请求接口token String
scheduleId 时间计划id String

Body

参数名 说明 数据类型 是否必填 默认值
scheduleName 时间计划名称 String
topStatus 是否置顶 bool false
defaultSchedule 是否默认 bool false
weekSchedule 周计划 list
+weekSerialNumber 周序列号 1:周一 2:周二 3:周三 4:周四 5:周五 6:周六 7:周日 int
+valid 是否可通行 bool true
+periodList 时段列表 list
++startTime 时段开始时间 Date
++endTime 时段结束时间 Date
specialDate 特殊时间计划 object
+date 日期 Date
+valid 是否可通行 bool true
+periodList 时段列表 list
++startTime 时段开始时间 Date
++endTime 时段结束时间 Date

示例代码

package com.baidu.demo.test.issued.schedule;

import com.baidu.demo.request.OpenAPIRequest;
import com.baidu.demo.request.Period;
import com.baidu.demo.request.ScheduleRequest;
import com.baidu.demo.request.SpecialDate;
import com.baidu.demo.request.WeekSchedule;
import com.baidu.demo.utils.GsonUtils;
import com.baidu.demo.utils.HttpUtil;
import com.baidu.demo.utils.SignUtil;

import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;

public class IssuedRelateScheduleUpdate {

    /**
     * request,utils文件夹请从接口文档, 接口示例代码工程中下载
     *
     */
    public static void issuedRelateScheduleUpdate() {
        // 1.定义参数
        // 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间, 客户端可自行缓存,过期后重新获取。
        String accessToken = "[调用鉴权接口获取的token]";
        String key = "[度目智能应用平台页面-个人中心-验签密钥]";
        String scheduleId =  "scheduleId_f63aa82d3a3d47c1ae83c169d8ed823b";
        String scheduleName = "时间计划1";
        Boolean defaultSchedule = false;
        Integer weekSerialNumber = 1;
        Boolean weekScheduleValid = false;
        String periodStartTime1 = "00:00";
        String periodEndTime1 = "10:00";
        Boolean specialDateValid = false;
        String date = "2021-06-10";
        String periodStartTime2 = "00:00";
        String periodEndTime2 = "10:00";

        ScheduleRequest scheduleRequest = ScheduleRequest.builder()
                .scheduleName(scheduleName)
                .defaultSchedule(defaultSchedule)
                .weekSchedule(Arrays.asList(
                        WeekSchedule.builder()
                                .weekSerialNumber(weekSerialNumber)
                                .valid(weekScheduleValid)
                                .periodList(Arrays.asList(Period.builder().startTime(periodStartTime1).endTime(periodEndTime1).build()))
                                .build()
                ))
                .specialDate(Arrays.asList(
                        SpecialDate.builder()
                                .valid(specialDateValid)
                                .date(date)
                                .periodList(Arrays.asList(Period.builder().startTime(periodStartTime2).endTime(periodEndTime2).build()))
                                .build()
                ))
                .build();
        // 2.签名
        Map<String, String> scheduleUpdateParams = new HashMap<>();
        scheduleUpdateParams.put("scheduleId" , scheduleId) ;
        OpenAPIRequest sign = SignUtil.sign(scheduleRequest,scheduleUpdateParams, key);
        // 3.转化参数
        String param = GsonUtils.toJson(sign);
        // 4.发送请求
        String url = "https://aip.baidubce.com/rest/2.0/chengfeng/openapi/v1/issued/relate/schedule/update?access_token="+ accessToken +"&scheduleId="+ scheduleId;
        String result = HttpUtil.post(url, param);
        // 5.获取结果
        System.out.println("响应结果: "+ result);
    }

    public static void main(String[] args){
        IssuedRelateScheduleUpdate.issuedRelateScheduleUpdate();
    }
}
2.4.3 返回数据

Response

{
    "success":true,
    "error_code":0,
        "error_msg":"",
    "result":{
        "scheduleName":"时间计划1",
        "topStatus":false,
"defaultSchedule":false,
        "scheduleId":"schedule0988",
        "weekSchedule":[
            {
                "weekSerialNumber":1,
"valid":true,
                "periodList":[
                    {
                        "startTime":"00:00",
                        "endTime":"10:00"
                    }
                ]
            }
        ],
        "specialDate":[
            {
                "date":"2021-01-01",
"valid":true,
                "periodList":[
                    {
                        "startTime":"00:00",
                        "endTime":"10:00"
                    }
                ]
            }
        ]
    }
}
2.4.4 返回字段说明
success 请求是否成功 boolean y true
error_code 状态码 Integer 0
error_msg 失败提示信息(只有当success为 false 时,接口才会返回message字段) json对象 ""
result 请求结果 object
+scheduleName 时间计划名称 String
+topStatus 是否置顶 bool false
+defaultSchedule 是否默认 bool false
+scheduleId 时间计划id String
+weekSchedule 周计划 list
++valid 是否可以通行 bool true
++weekSerialNumber 周序列号 1:周一 2:周二 3:周三 4:周四 5:周五 6:周六 7:周日 int
++periodList 时段列表 list
+++startTime 时段开始时间 Date
+++endTime 时段结束时间 Date
+specialDate 特殊时间计划 object
++valid 是否可以通行 list true
++date 日期(UTC) Date
++periodList 时段列表 list
+++startTime 时段开始时间 Date
+++endTime 时段结束时间 Date

2.5 删除时间计划

2.5.1 基本信息

Path: https://aip.baidubce.com/rest/2.0/chengfeng/openapi/v1/issued/relate/schedule/delete

Method: post

接口描述: 时间计划是设备进行人员识别的时间依据,此接口用于删除时间计划

2.5.2 请求参数

Headers

参数名称 参数值 是否必须 示例 备注
Content-Type application/json

Path 变量

参数名称 说明 数据类型 是否必填

RequestParam

参数名 说明 数据类型 是否必填
access_token 请求接口token String

Body

参数名 说明 数据类型 是否必填 默认值
scheduleId 时间计划id String
clearBind 是否清除绑定的同步任务 bool false

示例代码

package com.baidu.demo.test.issued.schedule;

import com.baidu.demo.utils.GsonUtils;
import com.baidu.demo.utils.HttpUtil;
import com.baidu.demo.utils.SignUtil;

import java.util.TreeMap;
import java.util.UUID;

public class IssuedRelateScheduleDelete {

    /**
     * request,utils文件夹请从接口文档, 接口示例代码工程中下载
     *
     */
    public static void issuedRelateScheduleDelete() {
        // 1.定义参数
        // 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间,客户端可自行缓存,过期后重新获取。
        String accessToken = "[调用鉴权接口获取的token]";
        String key = "[度目智能应用平台页面-个人中心-验签密钥]";
        String scheduleId =  "scheduleId_f63aa82d3a3d47c1ae83c169d8ed823b";
        Boolean clearBind = true;
        String businessTimestamp = System.currentTimeMillis()+"";
        String nonce = UUID.randomUUID().toString();
        // 2.组装参数
        TreeMap<String, Object> map = new TreeMap<>();
        map.put("scheduleId", scheduleId);
        map.put("clearBind", clearBind);
        map.put("businessTimestamp", businessTimestamp);
        map.put("nonce",nonce);
        // 3.签名
        String businessSign = SignUtil.sign(map, key);
        map.put("businessSign", businessSign);
        map.put("access_token", accessToken);
        String param = GsonUtils.toJson(map);
        // 4.发送请求
        String url = "https://aip.baidubce.com/rest/2.0/chengfeng/openapi/v1/issued/relate/schedule/delete?access_token="+ accessToken;
        String result = HttpUtil.post(url, param);
        // 5.获取结果
        System.out.println("响应结果: "+ result);
    }

    public static void main(String[] args) {
        IssuedRelateScheduleDelete.issuedRelateScheduleDelete();
    }
}
2.5.3 返回数据

Response

{
    "success":true,
    "error_code":0,
    "error_msg":"",
    "result":"删除成功"
}
2.5.4 返回字段说明
参数名称 参数释义 数据类型 是否必须 默认值
success 请求是否成功 boolean true
error_code 状态码 Integer 0
error_msg 失败提示信息(只有当success为 false 时,接口才会返回message字段) json对象 ""
result 请求结果 String 删除成功

(五 )事件API

1 识别记录

1.1 查询识别记录

1.1.1 基本信息

Path: https://aip.baidubce.com/rest/2.0/chengfeng/openapi/v1/log/verify/pageable

Method: get

接口描述: 查询对人员(成员、访客、黑名单)识别的记录列表

1.1.2 请求参数

Headers

参数名称 参数值 是否必须 示例 备注
Content-Type application/json

Path 变量

参数名称 说明 数据类型 是否必填

RequestParam

参数名 说明 数据类型 是否必填
access_token 请求接口token String
deviceInfo 设备名或设备号 String
userInfo 姓名或内部编号 String
phoneNum 手机号 String
identityType 识别身份 String
startCheckTime 核验起始时间(需使用UTC时间) Date
endCheckTime 核验结束时间(需使用UTC时间) Date
passStatus 通行状态 String
noPassReason 未通行原因 String
checkType 校验方式 String
temperatureStatus 体温状态 String
maskStatus 口罩佩戴状态 String
pageNo 页码,大于等于1。默认为1 Integer
pageSize 页大小,默认为10(取值范围1~100) Integer
参数key名称 参数释义
UNDEFINED 未定义
PASSED 已通行
DENYED 未通行

noPassReason-未通行原因

参数key名称 参数释义
UNDEFINED 未定义
IDCARD_MISMATCH 人证不匹配
ICCARD_MISMATCH 人卡不匹配
QRCODE_MISMATCH 人码不匹配
OUT_OF_VISITORPERIOD 访客不在有效期
OUT_OF_TIMETABLE 不在通行时间内
INVALID_IDCARD 无效身份证
INVALID_ICCARD 无效IC卡
INVALID_QRCODE 无效二维码
INVALID_FACE 人员不在库
BLACK 黑名单
ABNORMAL_TEMPERATURE 体温异常(2.1新增)
NO_MASK_WEARING 未戴口罩(2.1新增)
HEALTH_CODE_YELLOW 黄码
HEALTH_CODE_RED 红码
HEALTH_CODE_VERIFY_FAILED 健康核验失败
HEALTH_CODE_UNKNOWN 健康码-未知
QRCODE_OUT_OF_TIME 失效二维码
HEALTH_CODE_QRQUEST_TIMEOUT 网络请求超时
HEALTH_CODE_TASK_TIMEOUT 核验流程超时
HEALTH_CODE_DEVICE_UNAUTH 设备未授权
HEALTH_CODE_UNSUPPORTED_OP 不支持该操作
HEALTH_CODE_NAT_NOT_FOUND 无核酸检测结果
HEALTH_CODE_NAT_POSITIVE 核酸检测阳性
HEALTH_CODE_NAT_EXPIRED 核酸阴性已失效
HEALTH_CODE_ANT_NOT_FOUND 无抗原检测结果
HEALTH_CODE_ANT_POSITIVE 抗原检测阳性
HEALTH_CODE_ANT_INVALID 无效抗原结果
HEALTH_CODE_ANT_EXPIRED 抗原阴性已失效
HEALTH_CODE_VAC_NOT_FOUND 无疫苗接种信息
HEALTH_CODE_VAC_UNFINISHED 未完成疫苗接种
HEALTH_CODE_VAC_EXPIRED 疫苗接种已失效
HEALTH_CODE_TRAVEL_NOT_FOUND 无行程信息
HEALTH_CODE_TRAVEL_NOT_VFY 行程未核验
HEALTH_CODE_TRAVEL_ABNORMAL 14天内途径中高风险地区
REMOTE_GATE_TIMEOUT 远程核验超时
REMOTE_GATE_FAILURE 远程连接失败
REMOTE_GATE_DENIED 远程核验失败

checkType-校验方式

参数key名称 参数释义
UNDEFINED 未定义
FACE 刷脸
ICCARD 刷卡
IDCARD 刷身份证
FACE_AND_ICCARD 刷脸且刷卡
FACE_AND_IDCARD 刷脸且刷身份证
QRCODE 刷二维码
REMOTE_OPEN 远程开门

temperatureStatus-体温状态

参数key名称 参数释义
UNDEFINED 未定义
NORMAL 正常
ABNORMAL 异常

maskStatus-口罩佩戴状态

参数key名称 参数释义
UNDEFINED 未定义
MASK_WEARING 佩戴
NO_MASK_WEARING 未戴

healthStatus-健康码状态

参数key名称 参数释义
UNDEFINED 无结果
GREEN 绿码
YELLOW 黄码
RED 红码

Body

参数名 说明 数据类型 是否必填

示例代码

package com.baidu.demo.test.incident;

import com.baidu.demo.utils.HttpUtil;
import com.baidu.demo.utils.SignUtil;

import java.util.TreeMap;
import java.util.UUID;

public class LogVerifyPageable {
    /**
     * request,utils文件夹请从接口文档, 接口示例代码工程中下载
     *
     */
    public static void logVerifyPageable() {
        // 1.定义参数
        // 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间,客户端可自行缓存,过期后重新获取。
        String accessToken = "[调用鉴权接口获取的token]";
        String key = "[度目智能应用平台页面-个人中心-验签密钥]";
        String deviceInfo =  "1";
        Integer pageNo =  1;
        Integer pageSize =  10;
        String businessTimestamp = System.currentTimeMillis()+"";
        String nonce = UUID.randomUUID().toString();
        // 2.组装参数
        TreeMap<String, Object> map = new TreeMap<>();
        map.put("deviceInfo", deviceInfo);
        map.put("pageNo", pageNo);
        map.put("pageSize", pageSize);
        map.put("businessTimestamp", businessTimestamp);
        map.put("nonce",nonce);
        // 3.签名
        String businessSign = SignUtil.sign(map, key);
        map.put("businessSign", businessSign);
        map.put("access_token", accessToken);
        // 4.发送请求
        String url = "https://aip.baidubce.com/rest/2.0/chengfeng/openapi/v1/log/verify/pageable";
        String result = HttpUtil.get(map, url);
        // 5.获取结果
        System.out.println("响应结果: "+ result);
    }

    public static void main(String[] args) {
        LogVerifyPageable.logVerifyPageable();
    }
}
1.1.3 返回数据

Response

{
    "success":true,
    "error_code":0,
    "error_msg":"",
    "page":{
        "pageNo":1,
        "pageSize":10,
        "totalCount":1,
        "result":[
            {
             		"snapshotPath":"http://",
                "avatarPath":"http://",
                "name":"小明",
                "cardId":"xxxxxxxxxxx",  //AES加密后的密文
                "identityType":"MEM",
                "groupName":"成员三组、AIG组",
                "deviceName":"百度科技园东南门",
                "deviceType":"CM-mini",
                "checkType":"FACE",
                "passStatus":"PASSED",
                "noPassReason":"",
								"checkTimeDate": "2021-01-08T12:14:16Z",
								"temperature":"36.5",
								"temperatureStatus":"NORMAL",
								"maskStatus":"MASK_WEARING"
            },
	    			{
                "snapshotPath":"http://",
                "avatarPath":"http://",
                "name":"张三",
                "cardId":"xxxxxxxxxxx",   //AES加密后的密文
                "identityType":"MEM",
                "groupName":"成员三组、AIG组",
                "deviceName":"百度科技园东南门",
                "deviceType":"CM-mini",
                "checkType":"FACE",
                "passStatus":"DENYED",
                "noPassReason":"INVALID_FACE",
                "checkTimeDate": "2021-01-08T12:14:16Z",
                "temperature":"36.5",
                "temperatureStatus":"NORMAL",
                "maskStatus":"NO_MASK_WEARING"
            }
        ]
    }
}
1.1.4 返回字段说明
参数名称 参数释义 数据类型 是否必须 默认值
success 请求是否成功 boolean true
error_code 状态码 Integer 0
error_msg 失败提示信息(只有当success为 false 时,接口才会返回message字段) json对象 ""
page page对象 map
+pageNo 页码 Integer 1
+pageSize 页大小 Integer 10
+totalCount 总条数 Integer
+result 结果详情描述 list
++userId 成员id String
++internalNum 成员编号 String
++name 姓名 String
++cardId 卡号 String
++identityType 识别身份 string
++avatarKey 注册照key String
++avatarPath 注册照Path string
++groupName 人员组 String
++snapshotKey 抓拍照key String
++snapshotPath 抓拍照 string
++checkTimeDate 核验时间(UTC格式) String
++checkType 校验方式 String
++passStatus 通行状态 String
++noPassReason 未通行原因 String
++deviceId 设备id string
++deviceName 设备名称 string
++deviceType 设备型号 string
++deviceCategory 设备类型 string
++temperature 体温 String
++temperatureStatus 体温状态 String
++maskStatus 口罩佩戴状态 String
++healthStatus 健康码状态 String
++customPersonId 开放接口用户方的人员ID String
++customExtends 开放接口用户扩展字段 String
++similarityScore 相似度分数 Integer
++channelId 渠道id String
++channelName 渠道名称 String
++messageId 消息id(唯一性) String
++age 年龄 Double
++gender 性别 String
++deviceLocation 设备位置 String

identityType-识别身份

参数key名称 参数释义
UNDEFINED 未定义
MEM 员工
VISITORS 访客
BLACK 黑名单
STRANGER 陌生人
NONLIVING 非活体
OTHER 其他(2.1新增,未进行人脸核验、质量未过,的记录可传该类型)

checkType-核验方式

参数key名称 参数释义
UNDEFINED 未定义
FACE 刷脸
ICCARD 刷卡
IDCARD 刷身份证
FACE_AND_ICCARD 刷脸且刷卡
FACE_AND_IDCARD 刷脸且刷身份证
QRCODE 刷二维码
REMOTE_OPEN 远程开门

passStatus-通行状态

参数key名称 参数释义
UNDEFINED 未定义
PASSED 已通行
DENYED 未通行

noPassReason-未通行原因

参数key名称 参数释义
UNDEFINED 未定义
IDCARD_MISMATCH 人证不匹配
ICCARD_MISMATCH 人卡不匹配
QRCODE_MISMATCH 人码不匹配
OUT_OF_VISITORPERIOD 访客不在有效期
OUT_OF_TIMETABLE 不在通行时间内
INVALID_IDCARD 无效身份证
INVALID_ICCARD 无效IC卡
INVALID_QRCODE 无效二维码
INVALID_FACE 人员不在库
BLACK 黑名单
ABNORMAL_TEMPERATURE 体温异常
NO_MASK_WEARING 未戴口罩
HEALTH_CODE_YELLOW 黄码
HEALTH_CODE_RED 红码
HEALTH_CODE_VERIFY_FAILED 健康核验失败
HEALTH_CODE_UNKNOWN 健康码-未知
QRCODE_OUT_OF_TIME 失效二维码
HEALTH_CODE_QRQUEST_TIMEOUT 网络请求超时
HEALTH_CODE_TASK_TIMEOUT 核验流程超时
HEALTH_CODE_DEVICE_UNAUTH 设备未授权
HEALTH_CODE_UNSUPPORTED_OP 不支持该操作
HEALTH_CODE_NAT_NOT_FOUND 无核酸检测结果
HEALTH_CODE_NAT_POSITIVE 核酸检测阳性
HEALTH_CODE_NAT_EXPIRED 核酸阴性已失效
HEALTH_CODE_ANT_NOT_FOUND 无抗原检测结果
HEALTH_CODE_ANT_POSITIVE 抗原检测阳性
HEALTH_CODE_ANT_INVALID 无效抗原结果
HEALTH_CODE_ANT_EXPIRED 抗原阴性已失效
HEALTH_CODE_VAC_NOT_FOUND 无疫苗接种信息
HEALTH_CODE_VAC_UNFINISHED 未完成疫苗接种
HEALTH_CODE_VAC_EXPIRED 疫苗接种已失效
HEALTH_CODE_TRAVEL_NOT_FOUND 无行程信息
HEALTH_CODE_TRAVEL_NOT_VFY 行程未核验
HEALTH_CODE_TRAVEL_ABNORMAL 14天内途径中高风险地区
REMOTE_GATE_TIMEOUT 远程核验超时
REMOTE_GATE_FAILURE 远程连接失败
REMOTE_GATE_DENIED 远程核验失败

temperatureStatus-体温状态

参数key名称 参数释义
UNDEFINED 未定义
NORMAL 正常
ABNORMAL 异常

maskStatus-口罩佩戴状态

参数key名称 参数释义
UNDEFINED 未定义
MASK_WEARING 佩戴
NO_MASK_WEARING 未戴

healthStatus-健康码状态

参数key名称 参数释义
UNDEFINED 无结果
GREEN 绿码
YELLOW 黄码
RED 红码

2 设备告警

2.1 查询设备告警记录

2.1.1 基本信息

Path: https://aip.baidubce.com/rest/2.0/chengfeng/openapi/v1/incident/warning/pageable

Method: get

接口描述: 查询设备告警的记录列表

2.1.2 请求参数

Headers

参数名称 参数值 是否必须 示例 备注
Content-Type application/json

Path 变量

参数名称 说明 数据类型 是否必填

RequestParam

参数名 说明 数据类型 是否必填
access_token 请求接口token String
deviceInfo 设备名称或编号 String
warningType 告警类型 String
warningStatus 告警状态 String
startWarningTime 告警筛选起始时间(需使用UTC时间) Date
endWarningTime 告警筛选结束时间(需使用UTC时间) Date
pageNo 页码,大于等于1。默认为1 Integer
pageSize 页大小,默认为10(取值范围1~100) Integer

warningType-告警类型

参数key名称 参数释义
UNDEFINED 未定义
OFFLINE 设备离线
DISMANTLE 设备拆除
FORCED_DOOR_OPENING 强制开门
ENTRANCE_TIMEOUT 门禁超时
PASSWORD_CRACKING 密码破解
DIRTY_LENS 镜头污染
INSUFFICIENT_STORAGE 存储空间不足
LOW_BLUETOOTH_POWER 蓝牙电量不足
UNAVAILABLE_TEMPERATURE_MODULE 测温模块失效
TRIGGER_ALARM_INPUT 触发报警输入

warningStatus-告警状态

参数key名称 参数释义
UNDEFINED 未定义
WARNING 告警中
RECOVERED 已恢复

Body

参数名 说明 数据类型 是否必填

示例代码

package com.baidu.demo.test.incident;

import com.baidu.demo.utils.HttpUtil;
import com.baidu.demo.utils.SignUtil;

import java.util.TreeMap;
import java.util.UUID;

public class IncidentWarningPageable {
    /**
     * request,utils文件夹请从接口文档, 接口示例代码工程中下载
     *
     */
    public static void incidentWarningPageable() {
        // 1.定义参数
        // 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间,客户端可自行缓存,过期后重新获取。
        String accessToken = "[调用鉴权接口获取的token]";
        String key = "[度目智能应用平台页面-个人中心-验签密钥]";
        String deviceInfo =  "1";
        Integer pageNo =  1;
        Integer pageSize =  10;
        String businessTimestamp = System.currentTimeMillis()+"";
        String nonce = UUID.randomUUID().toString();
        // 2.组装参数
        TreeMap<String, Object> map = new TreeMap<>();
        map.put("deviceInfo", deviceInfo);
        map.put("pageNo", pageNo);
        map.put("pageSize", pageSize);
        map.put("businessTimestamp", businessTimestamp);
        map.put("nonce",nonce);
        // 3.签名
        String businessSign = SignUtil.sign(map, key);
        map.put("businessSign", businessSign);
        map.put("access_token", accessToken);
        // 4.发送请求
        String url = "https://aip.baidubce.com/rest/2.0/chengfeng/openapi/v1/incident/warning/pageable";
        String result = HttpUtil.get(map, url);
        // 5.获取结果
        System.out.println("响应结果: "+ result);
    }

    public static void main(String[] args) {
        IncidentWarningPageable.incidentWarningPageable();
    }
}
2.1.3 返回数据

Response

{
    "success":true,
    "error_code":0,
    "error_msg":"",
    "page":{
        "pageNo":1,
        "pageSize":10,
        "totalCount":1,
        "result":[
            {
                "warningTimeDate":"2021-01-08T12:14:16Z",
                "deviceId":"123456789",
                "deviceName":"百度科技园K2",
                "deviceType":"智能面板机",
                "deviceCode":"CM-Mini",
                "warningType":"设备离线",
                "warningStatus":"WARNING"
            },
	    {
                "warningTimeDate":"2021-01-08T12:14:16Z",
                "deviceId":"123456789",
                "deviceName":"百度科技园K2",
                "deviceType":"智能面板机",
                "deviceCode":"CM-Mini",
                "warningType":"设备离线",
                "warningStatus":"RECOVERED",
		"recoveryTime":"2021-01-08T12:14:18Z"
            }
        ]
    }
}
2.1.4 返回字段说明
参数名称 参数释义 数据类型 是否必须 默认值
success 请求是否成功 boolean true
error_code 状态码 Integer 0
error_msg 失败提示信息(只有当success为 false 时,接口才会返回message字段) json对象 ""
page page对象 map
+pageNo 页码 Integer 1
+pageSize 页大小 Integer 10
+totalCount 总条数 Integer
+result 结果详情描述 list
++warningType 告警类型(目前定义为全集,实际告警类型以设备为准) String
++warningTimeDate 告警时间(UTC格式) Date
++deviceId 设备编号 string
++deviceName 设备名称 string
++deviceType 设备类型 String
++deviceCode 设备型号 string
++warningType 告警类型(目前定义为全集,实际告警类型以设备为准) String
++warningStatus 告警状态 String
++recoveryTime 告警恢复时间(UTC格式) Date

warningType-告警类型(目前定义为全集,实际告警类型以设备为准)

参数key名称 参数释义
UNDEFINED 未定义
OFFLINE 设备离线
DISMANTLE 设备拆除
FORCED_DOOR_OPENING 强制开门
ENTRANCE_TIMEOUT 门禁超时
PASSWORD_CRACKING 密码破解
DIRTY_LENS 镜头污染
INSUFFICIENT_STORAGE 存储空间不足
LOW_BLUETOOTH_POWER 蓝牙电量不足
UNAVAILABLE_TEMPERATURE_MODULE 测温模块失效
TRIGGER_ALARM_INPUT 触发报警输入

warningStatus-告警状态

参数key名称 参数释义
UNDEFINED 未定义
WARNING 告警中
RECOVERED 已恢复

(六) 数据推送

1. 心跳测试

1.1.1 基本信息

Method: post (推送地址还需要支持GET方式请求)

推送地址需要支持GET方式请求原因:基于安全考虑,在度目智能应用平台页面添加推送地址的时候会GET请求推送地址。在推送识别记录,告警记录等的时候只有POST请求。

接口描述: 间隔五分钟请求一次第三方配置的推送地址。

1.1.2 请求参数

Headers

参数名称 参数值 是否必须 示例 备注
Content-Type application/json
pushType "" pushType为空
msgId 随机数

Path 变量

参数名称 说明 数据类型 是否必填

RequestParam

参数名 说明 数据类型 是否必填

Body

参数名 说明 数据类型 备注
参数body为空,json为{}
1.1.3 返回数据

Response

{
    "success":true,
    "error_code":0,
    "error_msg":"",
    "result":""
}
1.1.4 返回字段说明(用户方需按照以下要求返回字段和值)
参数名称 参数释义 数据类型 是否必须 默认值
success 请求结果 true-成功 false-失败 boolean
error_code 状态码(接收数据处理是否成功) 0-成功 Integer
error_msg 失败提示信息(只有当success为 false 时,接口返回message字段) json对象 ""
result 响应信息 String

2. 识别记录和设备告警信息

2.1 推送识别记录

2.1.1 基本信息

Method: post (推送地址还需要支持GET方式请求)

推送地址需要支持GET方式请求原因:基于安全考虑,在度目智能应用平台页面添加推送地址的时候会GET请求推送地址。在推送识别记录,告警记录等的时候只有POST请求。

接口描述: 将识别记录或设备告警信息实时推送到订阅用户的接收地址

2.1.2 请求参数

Headers

参数名称 参数值 是否必须 示例 备注
Content-Type application/json
pushType LOG
msgId 随机数

Path 变量

参数名称 说明 数据类型 是否必填

RequestParam

参数名 说明 数据类型 是否必填

Body(识别记录)

参数名 说明 数据类型 是否必填
appId appId String
messageId 消息id(识别记录的消息唯一键) String
name 姓名 String
cardId 卡号 String
internalNum 成员编号 String
customPersonId 开放接口用户方的人员ID String
customExtends 开放接口用户扩展字段 String
snapshotPath 抓拍照 String
snapshotKey 抓拍照Key String
avatarPath 注册照 String
avatarKey 注册照Key String
nirSnapshotPath NIR照 String
nirSnapshotKey NIR照Key String
name 姓名 String
userId 用户ID String
identityType 识别身份 String
groupName 人员组 String
deviceId 设备ID String
deviceName 设备名称 String
deviceType 设备型号 String
deviceCategory 设备类型 String
healthStatus 健康码状态 String
passStatus 通行状态 String
noPassReason 未通行原因 String
checkType 校验方式 String
checkTimeDate 核验时间 Date
checkTime 核验时间 Long
temperature 体温(仅面板机CM-Lite-T带有此信息) String
temperatureStatus 体温状态(仅面板机CM-Lite-T带有此信息) String
maskStatus 口罩佩戴状态(仅面板机CM-Lite-T带有此信息) String
similarityScore 相似度 Integer
channelId 通道号 String
routeInfo 行程信息 String
natInfo 核酸检测信息 String
antInfo 抗原检测信息 String
vacInfo 疫苗接种信息 String

identityType-识别身份

参数key名称 参数释义 参数value代码
UNDEFINED 未定义 0
MEM 员工 1
VISITORS 访客 2
BLACK 黑名单 3
STRANGER 陌生人 4
NONLIVING 非活体 5
OTHER 其他(2.1新增,未进行人脸核验、质量未过,的记录可传该类型)

健康码状态

参数key名称 参数释义 参数value代码
UNDEFINED 无结果 0
GREEN 绿码 1
YELLOW 黄码 2
RED 红码 3

passStatus-通行状态

参数key名称 参数释义 参数代码
UNDEFINED 未定义 0
PASSED 已通行 1
DENYED 未通行 -1

noPassReason-未通行原因

参数key名称 参数释义 参数代码
UNDEFINED 未定义 0
IDCARD_MISMATCH 人证不匹配 -1
ICCARD_MISMATCH 人卡不匹配 -2
QRCODE_MISMATCH 人码不匹配 -3
OUT_OF_VISITORPERIOD 访客不在有效期 -4
OUT_OF_TIMETABLE 不在通行时间内 -5
INVALID_IDCARD 无效身份证 -6
INVALID_ICCARD 无效IC卡 -7
INVALID_QRCODE 无效二维码 -8
INVALID_FACE 人员不在库 -9
BLACK 黑名单 -10
ABNORMAL_TEMPERATURE 体温异常 -11
NO_MASK_WEARING 未戴口罩 -12
HEALTH_CODE_YELLOW 黄码
HEALTH_CODE_RED 红码
HEALTH_CODE_VERIFY_FAILED 健康核验失败
HEALTH_CODE_UNKNOWN 健康码-未知
QRCODE_OUT_OF_TIME 失效二维码
HEALTH_CODE_QRQUEST_TIMEOUT 网络请求超时
HEALTH_CODE_TASK_TIMEOUT 核验流程超时
HEALTH_CODE_DEVICE_UNAUTH 设备未授权
HEALTH_CODE_UNSUPPORTED_OP 不支持该操作
HEALTH_CODE_NAT_NOT_FOUND 无核酸检测结果
HEALTH_CODE_NAT_POSITIVE 核酸检测阳性
HEALTH_CODE_NAT_EXPIRED 核酸阴性已失效
HEALTH_CODE_ANT_NOT_FOUND 无抗原检测结果
HEALTH_CODE_ANT_POSITIVE 抗原检测阳性
HEALTH_CODE_ANT_INVALID 无效抗原结果
HEALTH_CODE_ANT_EXPIRED 抗原阴性已失效
HEALTH_CODE_VAC_NOT_FOUND 无疫苗接种信息
HEALTH_CODE_VAC_UNFINISHED 未完成疫苗接种
HEALTH_CODE_VAC_EXPIRED 疫苗接种已失效
HEALTH_CODE_TRAVEL_NOT_FOUND 无行程信息
HEALTH_CODE_TRAVEL_NOT_VFY 行程未核验
HEALTH_CODE_TRAVEL_ABNORMAL 14天内途径中高风险地区
REMOTE_GATE_TIMEOUT 远程核验超时
REMOTE_GATE_FAILURE 远程连接失败
REMOTE_GATE_DENIED 远程核验失败

checkType-校验方式

参数key名称 参数释义 参数代码
UNDEFINED 未定义 0
FACE 刷脸 1
ICCARD 刷卡 2
IDCARD 刷身份证 3
FACE_AND_ICCARD 刷脸且刷卡 4
FACE_AND_IDCARD 刷脸且刷身份证 5
QRCODE 刷二维码 6

temperatureStatus-体温状态(仅面板机CM-Lite-T带有此信息)

参数key名称 参数释义 参数代码
UNDEFINED 未定义 0
NORMAL 正常 1
ABNORMAL 异常 2

maskStatus-口罩佩戴状态(仅面板机CM-Lite-T带有此信息)

参数key名称 参数释义 参数代码
UNDEFINED 未定义 0
MASK_WEARING 佩戴 1
NO_MASK_WEARING 未戴 2
2.1.3 返回数据

Response

{
    "success":true,
    "error_code":0,
    "error_msg":"",
    "result":""
}
2.1.4 返回字段说明(用户方需按照以下要求返回字段和值)
参数名称 参数释义 数据类型 是否必须 默认值
success 请求结果 true-成功 false-失败 boolean
error_code 状态码(接收数据处理是否成功) 0-成功 Integer
error_msg 失败提示信息(只有当success为 false 时,接口返回message字段) json对象 ""
result 响应信息 String

2.2 识别记录推送失败列表查询接口

2.2.1基本信息

Path: https://aip.baidubce.com/rest/2.0/chengfeng/openapi/v1/log/verify/repush/pageable

Method: get

接口描述: 识别记录推送失败列表查询接口

2.2.2 请求参数

Headers

参数名称 参数值 是否必须 示例 备注
Content-Type application/json

Path 变量

参数名称 说明 数据类型 是否必填

RequestParam

参数名 说明 数据类型 是否必填
access_token 请求接口token String
startTime 重推记录起始时间 String
endTime 重推记录结束时间 String
pageNo 页码,大于等于1。默认为1 Integer
pageSize 页大小,默认为10 Integer

Body

参数名 说明 数据类型 是否必填 默认值

示例代码

package com.baidu.demo.test.incident;

import com.baidu.demo.utils.HttpUtil;
import com.baidu.demo.utils.SignUtil;

import java.util.TreeMap;
import java.util.UUID;

public class LogRepushPageable {
    /**
     * request,utils文件夹请从接口文档, 接口示例代码工程中下载
     *
     */
    public static void logRepushPageable() {
        // 1.定义参数
        // 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间,客户端可自行缓存,过期后重新获取。
        String accessToken = "[调用鉴权接口获取的token]";
        String key = "[度目智能应用平台页面-个人中心-验签密钥]";
        String startTime =  "2022-03-10T00:00:00Z";
        String endTime =  "2022-03-12T00:00:00Z";
        Integer pageNo =  1;
        Integer pageSize =  10;
        String businessTimestamp = System.currentTimeMillis()+"";
        String nonce = UUID.randomUUID().toString();
        // 2.组装参数
        TreeMap<String, Object> map = new TreeMap<>();
        map.put("startTime", startTime);
        map.put("endTime", endTime);
        map.put("pageNo", pageNo);
        map.put("pageSize", pageSize);
        map.put("businessTimestamp", businessTimestamp);
        map.put("nonce",nonce);
        // 3.签名
        String businessSign = SignUtil.sign(map, key);
        map.put("businessSign", businessSign);
        map.put("access_token", accessToken);
        // 4.发送请求
        String url = "https://aip.baidubce.com/rest/2.0/chengfeng/openapi/v1/log/verify/repush/pageable";
        String result = HttpUtil.get(map, url);
        // 5.获取结果
        System.out.println("响应结果: "+ result);
    }

    public static void main(String[] args) {
        LogRepushPageable.logRepushPageable();
    }
}
2.2.3 返回数据

Response

{
    "success":true,
    "error_code":0,
    "error_msg":"",
    "page":{
        "pageNo":1,
        "pageSize":10,
        "totalCount":1,
        "result":[
            {
                "logId": "61cc2622189758da8cb127f9",
                "userId": "",
                "internalNum": null,
                "name": null,
                "cardId": "xxxxxxxx",
                "phoneNum": null,
                "identityType": "STRANGER",
                "avatarKey": null,
                "avatarPath": null,
                "groupId": null,
                "groupName": null,
                "groupList": null,
                "snapshotName": null,
                "snapshotKey": "162daa796a7a2d7427542100501d9a30",
                "snapshotPath": "https://test-aibp.baidu.com/chengfeng/api/v1/person/file/162daa796a7a2d7427542100501d9a30",
                "nirSnapshotName": null,
                "nirSnapshotKey": "fdd97bd43e9b6925faf9de12b39787d9",
                "nirSnapshotPath": "https://test-aibp.baidu.com/chengfeng/api/v1/person/file/fdd97bd43e9b6925faf9de12b39787d9",
                "backgroundKey": null,
                "backgroundPath": null,
                "checkTime": 1640612948000,
                "checkTimeDate": "2021-12-27T13:49:08Z",
                "checkType": "ICCARD",
                "passStatus": "DENYED",
                "noPassReason": "INVALID_ICCARD",
                "deviceId": "DMCM021TYC21A00002",
                "deviceName": "怕品牌品牌品牌品牌",
                "deviceType": "DMCM00211-T",
                "deviceCategory": "PAD",
                "temperature": "0.0",
                "temperatureStatus": null,
                "maskStatus": null,
                "healthStatus": null,
                "routeInfo": null,
                "customPersonId": null,
                "customExtends": null,
                "similarityScore": 0,
                "channelId": null,
                "channelName": null,
                "showAvatarKey": null,
                "showAvatarPath": null,
                "messageId": "recogStatus_DMCM021TYC21A00002_1640612948246",
                "age": null,
                "gender": null,
                "deviceLocation": "北京市海淀区马连洼街道",
                "createTime": null,
                "updateTime": null
            },
            {
                "logId": "61cc2622189758da8cb127f9",
                "userId": "",
                "internalNum": null,
                "name": null,
                "cardId": "xxxxxxxx", // 此处身份证号为使用AES加密后的密文
                "phoneNum": null,
                "identityType": "STRANGER",
                "avatarKey": null,
                "avatarPath": null,
                "groupId": null,
                "groupName": null,
                "groupList": null,
                "snapshotName": null,
                "snapshotKey": "162daa796a7a2d7427542100501d9a30",
                "snapshotPath": "https://test-aibp.baidu.com/chengfeng/api/v1/person/file/162daa796a7a2d7427542100501d9a30",
                "nirSnapshotName": null,
                "nirSnapshotKey": "fdd97bd43e9b6925faf9de12b39787d9",
                "nirSnapshotPath": "https://test-aibp.baidu.com/chengfeng/api/v1/person/file/fdd97bd43e9b6925faf9de12b39787d9",
                "backgroundKey": null,
                "backgroundPath": null,
                "checkTime": 1640612948000,
                "checkTimeDate": "2021-12-27T13:49:08Z",
                "checkType": "ICCARD",
                "passStatus": "DENYED",
                "noPassReason": "INVALID_ICCARD",
                "deviceId": "DMCM021TYC21A00002",
                "deviceName": "怕品牌品牌品牌品牌",
                "deviceType": "DMCM00211-T",
                "deviceCategory": "PAD",
                "temperature": "0.0",
                "temperatureStatus": null,
                "maskStatus": null,
                "healthStatus": null,
                "routeInfo": null,
                "customPersonId": null,
                "customExtends": null,
                "similarityScore": 0,
                "channelId": null,
                "channelName": null,
                "showAvatarKey": null,
                "showAvatarPath": null,
                "messageId": "recogStatus_DMCM021TYC21A00002_1640612948246",
                "age": null,
                "gender": null,
                "deviceLocation": "北京市海淀区马连洼街道",
                "createTime": null,
                "updateTime": null
                }
            }
        ]
    }
}
2.2.4 返回字段说明
参数名称 参数释义 数据类型 是否必须 默认值
success 请求是否成功 boolean true
error_code 状态码 Integer 0
error_msg 失败提示信息(只有当success为 false 时,接口才会返回message字段) json对象 ""
page page对象 map
+pageNo 页码 Integer 1
+pageSize 页大小 Integer 10
+totalCount 总条数 Integer
+result 结果详情描述 list
++userId 成员id String
++internalNum 成员编号 String
++name 姓名 String
++cardId 卡号 String
++identityType 识别身份 string
++avatarKey 注册照key String
++avatarPath 注册照Path string
++groupName 人员组 String
++snapshotKey 抓拍照key String
++snapshotPath 抓拍照 string
++checkTimeDate 核验时间(UTC格式) String
++checkType 校验方式 String
++passStatus 通行状态 String
++noPassReason 未通行原因 String
++deviceId 设备id string
++deviceName 设备名称 string
++deviceType 设备型号 string
++deviceCategory 设备类型 string
++temperature 体温 String
++temperatureStatus 体温状态 String
++maskStatus 口罩佩戴状态 String
++healthStatus 健康码状态 String
++customPersonId 开放接口用户方的人员ID String
++customExtends 开放接口用户扩展字段 String
++similarityScore 相似度分数 Integer
++channelId 渠道id String
++channelName 渠道名称 String
++messageId 消息id(唯一性) String
++age 年龄 Double
++gender 性别 String
++deviceLocation 设备位置 String
++routeInfo 行程信息 String
++natInfo 核酸检测信息 String
++antInfo 抗原检测信息 String
++vacInfo 疫苗接种信息 String

identityType-识别身份

参数key名称 参数释义
UNDEFINED 未定义
MEM 员工
VISITORS 访客
BLACK 黑名单
STRANGER 陌生人
NONLIVING 非活体
OTHER 其他(2.1新增,未进行人脸核验、质量未过,的记录可传该类型)

checkType-核验方式

参数key名称 参数释义
UNDEFINED 未定义
FACE 刷脸
ICCARD 刷卡
IDCARD 刷身份证
FACE_AND_ICCARD 刷脸且刷卡
FACE_AND_IDCARD 刷脸且刷身份证
QRCODE 刷二维码
REMOTE_OPEN 远程开门

passStatus-通行状态

参数key名称 参数释义
UNDEFINED 未定义
PASSED 已通行
DENYED 未通行

noPassReason-未通行原因

参数key名称 参数释义
UNDEFINED 未定义
IDCARD_MISMATCH 人证不匹配
ICCARD_MISMATCH 人卡不匹配
QRCODE_MISMATCH 人码不匹配
OUT_OF_VISITORPERIOD 访客不在有效期
OUT_OF_TIMETABLE 不在通行时间内
INVALID_IDCARD 无效身份证
INVALID_ICCARD 无效IC卡
INVALID_QRCODE 无效二维码
INVALID_FACE 人员不在库
BLACK 黑名单
ABNORMAL_TEMPERATURE 体温异常
NO_MASK_WEARING 未戴口罩
HEALTH_CODE_YELLOW 黄码
HEALTH_CODE_RED 红码
HEALTH_CODE_VERIFY_FAILED 健康核验失败
HEALTH_CODE_UNKNOWN 健康码-未知
QRCODE_OUT_OF_TIME 失效二维码
HEALTH_CODE_QRQUEST_TIMEOUT 网络请求超时
HEALTH_CODE_TASK_TIMEOUT 核验流程超时
HEALTH_CODE_DEVICE_UNAUTH 设备未授权
HEALTH_CODE_UNSUPPORTED_OP 不支持该操作
HEALTH_CODE_NAT_NOT_FOUND 无核酸检测结果
HEALTH_CODE_NAT_POSITIVE 核酸检测阳性
HEALTH_CODE_NAT_EXPIRED 核酸阴性已失效
HEALTH_CODE_ANT_NOT_FOUND 无抗原检测结果
HEALTH_CODE_ANT_POSITIVE 抗原检测阳性
HEALTH_CODE_ANT_INVALID 无效抗原结果
HEALTH_CODE_ANT_EXPIRED 抗原阴性已失效
HEALTH_CODE_VAC_NOT_FOUND 无疫苗接种信息
HEALTH_CODE_VAC_UNFINISHED 未完成疫苗接种
HEALTH_CODE_VAC_EXPIRED 疫苗接种已失效
HEALTH_CODE_TRAVEL_NOT_FOUND 无行程信息
HEALTH_CODE_TRAVEL_NOT_VFY 行程未核验
HEALTH_CODE_TRAVEL_ABNORMAL 14天内途径中高风险地区
REMOTE_GATE_TIMEOUT 远程核验超时
REMOTE_GATE_FAILURE 远程连接失败
REMOTE_GATE_DENIED 远程核验失败

temperatureStatus-体温状态

参数key名称 参数释义
UNDEFINED 未定义
NORMAL 正常
ABNORMAL 异常

maskStatus-口罩佩戴状态

参数key名称 参数释义
UNDEFINED 未定义
MASK_WEARING 佩戴
NO_MASK_WEARING 未戴

healthStatus-健康码状态

参数key名称 参数释义
UNDEFINED 无结果
GREEN 绿码
YELLOW 黄码
RED 红码

2.3 推送设备告警信息

2.3.1 基本信息

Method: post (推送地址还需要支持GET方式请求)

推送地址需要支持GET方式请求原因:基于安全考虑,在度目智能应用平台页面添加推送地址的时候会GET请求推送地址。在推送识别记录,告警记录等的时候只有POST请求。

接口描述: 将设备告警信息实时推送到订阅用户的接收地址

2.3.2 请求参数

Headers

参数名称 参数值 是否必须 示例 备注
Content-Type application/json
pushType WARNING
msgId 随机数

Path 变量

参数名称 说明 数据类型 是否必填

RequestParam

参数名 说明 数据类型 是否必填

Body(告警信息)

参数名 说明 数据类型 是否必填
warningTimeDate 告警时间(UTC格式) Date
deviceId 设备编号 String
deviceName 设备名称 String
deviceType 设备类型 String
deviceCode 设备型号 String
warningType 告警类型 String
warningStatus 告警状态 String
recoveryTime 告警恢复时间(暂未提供数据) Date

warningType-告警类型

参数key名称 参数释义 参数代码
UNDEFINED 未定义 0
OFFLINE 设备离线 -100
ONLINE 设备上线 -110
DISMANTLE 设备拆除 -101
FORCED_DOOR_OPENING 强制开门 -102
ENTRANCE_TIMEOUT 门禁超时 -103
PASSWORD_CRACKING 密码破解 -104
DIRTY_LENS 镜头污染 -105
INSUFFICIENT_STORAGE 存储空间不足 -106
LOW_BLUETOOTH_POWER 蓝牙电量不足 -107
UNAVAILABLE_TEMPERATURE_MODULE 测温模块失效 -108
TRIGGER_ALARM_INPUT 触发报警输入 -109

warningStatus-告警状态

参数key名称 参数释义 参数代码
WARNING 告警中 1
RECOVERED 已恢复 0

请求数据:

    "checkType": "FACE",
    "deviceType": "CM-mini5",
    "noPassReason": "ABNORMAL_TEMPERATURE",
    "temperatureStatus": "ABNORMAL",
    "userId": "MEM_12345_16",
    "deviceId": "123456",
    "deviceName": "百度科技园东北门1",
    "checkTime": "1618819224",
    "identityType": "OTHER",
    "passStatus": "DENYED",
    "appId": "692805283478",
    "temperature": "36.6",
    "maskStatus": "MASK_WEARING"
}
2.3.3 返回数据

Response

{
    "success":true,
    "error_code":0,
    "error_msg":"",
    "result":""
}
2.3.4 返回字段说明(用户方需按照以下要求返回字段和值)
参数名称 参数释义 数据类型 是否必须 默认值
success 请求结果 true-成功 false-失败 boolean
error_code 状态码(接收数据处理是否成功) 0-成功 Integer
error_msg 失败提示信息(只有当success为 false 时,接口返回message字段) json对象 ""
result 响应信息 String

2.4 识别记录手动补推

2.4.1基本信息

Path: https://aip.baidubce.com/rest/2.0/chengfeng/openapi/v1/incident/push/log/choose/repush

Method: post

接口描述: 按识别记录id列表进行识别记录补推

2.4.2 请求参数

Headers

参数名称 参数值 是否必须 示例 备注
Content-Type application/json

Path 变量

参数名称 说明 数据类型 是否必填

RequestParam

参数名 说明 数据类型 是否必填
access_token 请求接口token String

Body

参数名 说明 数据类型 是否必填 默认值
ids 记录id列表(限长50) List
+id 记录id,识别记录唯一主键 String

示例代码

package com.baidu.demo.test.incident;

import com.baidu.demo.request.ChooseRepushRequest;
import com.baidu.demo.request.OpenAPIRequest;
import com.baidu.demo.utils.GsonUtils;
import com.baidu.demo.utils.HttpUtil;
import com.baidu.demo.utils.SignUtil;

import java.util.ArrayList;
import java.util.List;

public class LogChooseRepush {
    /**
     * request,utils文件夹请从接口文档, 接口示例代码工程中下载
     *
     */
    public static void logChooseRepush() {
        // 1.定义参数
        // 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间, 客户端可自行缓存,过期后重新获取。
        String accessToken = "[调用鉴权接口获取的token]";
        String key = "[度目智能应用平台页面-个人中心-验签密钥]";
//        String groupName = "postman测试人员组6";
//        Integer groupType = 1;
        List<String> ids = new ArrayList<>();
        ids.add("LogId11111");
        ids.add("LogId22222");
        // 2.签名
        ChooseRepushRequest request = ChooseRepushRequest.builder()
                .ids(ids)
                .build();
        OpenAPIRequest sign = SignUtil.sign(request, key);
        // 3.转化参数
        String param = GsonUtils.toJson(sign);
        // 4.发送请求
        String url = "https://aip.baidubce.com/rest/2.0/chengfeng/openapi/v1/group/add?access_token="+ accessToken;
        String result = HttpUtil.post(url, param);
        // 5.获取结果
        System.out.println("响应结果: "+ result);
    }

    public static void main(String[] args){
        LogChooseRepush.logChooseRepush();
    }
}
2.4.3 返回数据

Response

{
    "success":true,
    "error_code":0,
    "error_msg":"",
    "result":"推送成功"
}
2.4.4 返回字段说明
参数名称 参数释义 数据类型 是否必须 默认值
success 请求是否成功 boolean true
error_code 状态码 Integer 0
error_msg 失败提示信息(只有当success为 false 时,接口才会返回message字段) json对象 ""
result 结果详情描述 String

3.人员同步失败(含超时)推送

3.1 人员同步失败

3.1.1 基本信息

Method: post

接口描述: 人员同步失败结果实时推送到订阅用户的接收地址

3.1.2 请求参数

Headers

参数名称 参数值 是否必须 示例 备注
Content-Type application/json
pushType SYNCRESULT
msgId 随机数

Path 变量

参数名称 说明 数据类型 是否必填

RequestParam

参数名 说明 数据类型 是否必填

Body(人员同步失败)

参数名 说明 数据类型 是否必填
id 度目智能应用平台人员唯一id String
personType 人员类型 1:成员 2:访客 3:黑名单 Integer
actionType 同步类型 0:人员添加或更新 -1:人员删除 Integer
suggest 建议的处理方案 0:更新 -1:重试 1:同步成功,不需要处理 Integer
appId 应用id String
deviceId 设备id String
customPersonId 用户方人员id String
finishTime 完成时间 Date(UTC格式)

请求数据:

{
    "id":"MEM_692805283478_4697",
    "personType":1,
    "appId":"692805283478",
    "actionType":0,
    "suggest":-1,
    "deviceId":"DEV123",
    "customPersonId":"",
    "":""
}
3.1.3 返回数据

Response

{
    "success":true,
    "error_code":0,
    "error_msg":"",
    "result":""
}
3.1.4 返回字段说明(用户方需按照以下要求返回字段和值)
参数名称 参数释义 数据类型 是否必须 默认值
success 请求结果 true-成功 false-失败 boolean
error_code 状态码(接收数据处理是否成功) 0-成功 Integer
error_msg 失败提示信息(只有当success为 false 时,接口返回message字段) json对象 ""
result 响应信息 String

三. 错误码对照表

人员与人员组接口

code message 说明
301 zip文件格式不正确
302 Excel文件格式不正确
303 获取本机ip失败
304 调用人脸服务出错
305 活体分数低
306 照片不清晰
307 照片质量不合格
308 人脸角度不正
309 人脸有遮挡
310 人脸不完整
311 缺少照片
312 照片人脸数目大于1
313 文件名不正确
314 文件上传失败
315 文件不存在
316 文件上传前的检查失败
317 文件分块合并失败
318 文件解压失败
319 文件格式有误
320 调用bos服务出错
321 Excel文件格式不正确
322 姓名为空
323 编号格式不正确
324 缺少appId
325 成员编号重复
326 卡号格式不正确
327 卡号重复
328 身份证号格式不正确
329 身份证号重复
330 手机号格式不正确
331 手机号重复
332 邮箱格式不正确
333 邮箱重复
334 密码格式不正确
335 成员不存在
336 头像已被注册
337 缺少组名
338 组名格式不正确
339 组名重复了
340 默认组名不能被修改或删除
341 成员组不存在
342 请选择访客的到访时间段
343 到访开始时间需早于结束时间
344 受访成员不存在
345 人员照片文件不存在
346 访客不存在
347 访客状态不合法
348 访客组不存在
349 黑名单人员不存在
350 黑名单组不存在
351 人员类型不合法
352 成员信息表无有效数据
353 检测到Excel表头被改动
354 缺少fileId
355 traceId不存在
356 任务已完成或即将完成,已无法取消
357 参数格式不正确
358 日期超出了允许范围
399 系统繁忙,请稍后再试
999 未知错误

设备接口

code message 说明
324 缺少appId
101 参数不合法
112 设备更新失败
113 设备未连接
114 设备心跳数据异常
115 设备配置信息为空
116 设备操作不存在
117 创建任务失败
118 设备已存在
119 绑定码错误
120 设备密钥错误
121 设备信息获取失败
122 设备注册失败
123 获取绑定码错误
124 刷新绑定码错误
125 操作执行失败,请稍候重试
919 获取分布式锁失败
918 人员同步接收失败
998 不支持的请求方法
999 未知错误

同步与事件接口

code message 说明
324 缺少appId
624 人员组列表为空
625 同步任务不存在
626 同步任务元数据保存失败
627 元数据发送失败
631 时间间隔太短
641 请求体数据为空
642 缺少抓拍图
643 缺少设备id
644 缺少时间戳
645 图像刚处理过,无需再次上传
999 未知错误
上一篇
使用手册
下一篇
度目硬件