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

接口文档

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

版本信息

版本号 变更时间 变更内容
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.