RESTFul接口

RESTFul接口可以查询一些授权的基本信息,比如产品信息,SN信息等。

安全验证

调用RESTFul接口时必须使用安全口令登录,安全口令的生成方式如下:

通过修改bit_service.xml文件

打开集团服务安装目录下的 bit_service.xml 文件,添加 RESTFUL 访问密码,此密码会在 URL 中用到,将<License></License>代码拷贝到 bit_service.xml 文件中,然后重启集团服务。

<?xml version="1.0" encoding="UTF-8"?>
<BitAnswerSrvConfig>
  <Users/>
  <RestFul>
  <License did="0" pid="0">bitanswer</License>
  </RestFul>
</BitAnswerSrvConfig>

通过命令行设置安全口令

命令:-r [-d ] [-p ] [-s ] [-c ] [-a ]

参数说明:

随机生成一串口令:bit_service -r

将生成的口令保存到文件:bit_service -r -p /xxx/

显示已有口令:bit_service -r -s

清空已有口令:bit_service -r -c

添加自定义口令:bit_service -r -a xxxx

示例:

./bit_service -r -a bitanswer

注意事项

需要先在集团授权管理中心中开启详细日志,用户使用信息和出错信息才会保存到log中。

接口说明

获取产品列表

  1. 请求地址:GET http://ip:port/rest/<pwd>/product

  2. 接口概述:

    获取产品列表

  3. 请求参数格式:

    • application/json:返回json
    • 其他:返回xml
  4. status:

    • code :INT 0标识成功,其它是错误码
    • errMsg :String 错误信息
  5. 返回信息:product:

    返回名称 返回类型 返回说明
    name String 产品名称
    pid(唯一) String 产品编号
  6. 请求示例

    GET 'http://ip:port/rest/<pwd>/product' 
  7. 响应格式

    <response>
    <status>
    <code>0</code>
    </status>
    <data>
    <product>
      <name>比特安索演示产品</name>
      <pid>DNLA-7BOQ</pid>
      <version>13.6.9.5</version>
    </product>
    </data>
    </response>

获取授权码列表

  1. 请求地址:GET http://ip:port/rest/<pwd>/sn

  2. 接口概述:

    获取授权码列表

  3. 请求参数

    参数名称 参数类型 参数说明
    product = [pid] String 获取指定pid下的sn信息
    sn = [sn] String 获取指定sn的信息
  4. 请求参数格式:

    • application/json:返回json
    • 其他:返回xml
  5. status:

    • code :INT 0标识成功,其它是错误码
    • errMsg :String 错误信息
  6. 返回信息:snInfo:

    返回名称 返回类型 返回说明
    activateDate String 激活日期
    endDate String 结束日期
    onlineUsers String 在线用户数
    product String 所属产品名称
    sn String 所属SN
    status String 所属SN的状态(错误码)
    users String 总的用户数
  7. 请求示例

    GET 'http://ip:port/rest/<pwd>/sn?pid=<pid>'

    8.响应示例

    <response>
    <status>
        <code>0</code>
    </status>
    <data>
        <snInfo>
            <activateDate>2025-03-18 07:46:11</activateDate>
            <endDate>Unlimited</endDate>
            <onlineUsers>0</onlineUsers>
            <product>比特安索演示产品</product>
            <sn>2SFAXZMJYYXWGGDP</sn>
            <status>0</status>
            <users>1</users>
        </snInfo>
    </data>
    </response>

获取特征项列表(建议使用获取分发设备的信息接口)

  1. 请求地址:GET http://ip:port/rest/ <pwd>/feature
  2. 接口概述:

    获取特征项列表

  3. 请求参数

    参数名称 参数类型 参数说明
    product = [pid] String 按pid筛选(必传)
  4. 请求参数格式:
    • application/json:返回json
    • 其他:返回xml
  5. status:
    • code :INT 0标识成功,其它是错误码
    • errMsg :String 错误信息
  6. 返回信息:feature:

    返回名称 返回类型 返回说明
    product String 所属产品名称
    sn String 所属SN
    endDateg String 结束日期
    users INT 总的用户数
    onlineUsers INT 在线用户数
    name String 特征项名称
    version String 版本

7.请求示例

GET 'http://ip:port/rest/<pwd>/feature'

8.响应示例

<response>
    <status>
        <code>0</code>
    </status>
    <data>
        <feature>
            <endDate>Unlimited</endDate>
            <id>6</id>
            <name>STA</name>
            <onlineUsers>0</onlineUsers>
            <product>比特安索演示产品</product>
            <sn>2SFAXZMJYYXWGGDP</sn>
            <users>1</users>
            <version>1.0</version>
        </feature>
    </data>
</response>

获取当前在线用户和排队用户信息

  1. 请求地址:GET http://ip:port/rest/<pwd>/user
  2. 接口概述:

    获取当前在线用户和排队用户信息

  3. 请求参数

    参数名称 参数类型 参数说明
    product = [pid] String 按product筛选
    feature=[featureName] String 特征项名称(必传)
    featureVer=[featureVer] String 特征项版本(必传)
    type=[all] String (必传all)表示同时获取在线和排队的用户信息
  4. 请求参数格式:
    • application/json:返回json
    • 其他:返回xml
  5. status:
    • code :INT 0标识成功,其它是错误码
    • errMsg :String 错误信息
  6. 返回信息:machine:

    返回名称 返回类型 返回说明
    id INT 用于显示id
    userName String 用户名
    computerName String 机器名
    account String 返回客户端设置的账号名
    featureName String 特征项名称
    featureVer String 特征项版本
    ip String Ip地址
    loginTime String 登录日期
    status String 用户的状态(online 使用中 || queue 排队中)

7.请求示例

GET 'http://ip:port/rest/<pwd>/user'

8.响应示例

<response>
  <status>
    <code>0</code>
  </status>
  <data>
    <machine>
      <account/>
      <computerName>hfm</computerName>
      <featureName>-</featureName>
      <featureVer>-</featureVer>
      <ip>114.246.96.4</ip>
      <loginTime>2025-03-25 06:48:28</loginTime>
      <product>比特安索演示产品</product>
      <sn>2SFAXZMJYYXWGGDP</sn>
      <status>online</status>
      <userName>Administrator</userName>
    </machine>
  </data>
</response>

获取用户使用信息

此信息的保存时间为两个月,每次调用接口显示最多不超过50000条数据。

  1. 请求地址:GET http://ip:port/rest/<pwd>/statistics
  2. 接口概述:

    获取用户使用信息

  3. 请求参数

    参数名称 参数类型 参数说明
    product = [pid] String 按product筛选(必传)
    feature=[featureName] String 特征项名称(必传)
    offset=[offset] String 查询数据的起始位置,不传默认为0
    limit=[limit] String 查询数据的条数,不传默认为10000,最大不能超过50000
    consumeFeatureVer=[consumeFeatureVer] String 特征项版本(必传)
    startTime=[startTime] String 获取这个时间段内login或者logout的用户的记录,此参数必须成对出现
    endTime=[endTime] String 获取这个时间段内login或者logout的用户的记录,此参数必须成对出现
  4. 请求参数格式:
    • application/json:返回json
    • 其他:返回xml
  5. status:
    • code :INT 0标识成功,其它是错误码
    • errMsg :String 错误信息
  6. 返回信息:data:

    返回名称 返回类型 返回说明
    id INT 当前记录的id
    pid String 产品编号
    sn String 所属SN
    userName String 用户名
    computerName String 机器名
    account String 返回客户端设置的账号名
    ip String Ip地址
    featureName String 特征项名称。如果为NULL,表示SN的使用记录
    featureVer String 客户端请求的特征项版本
    consumeFeatureVer String 客户端实际占用的特征项版本(服务端页面显示的版本)
    loginTime String 开始使用时间。
    logoutTime String 结束使用时间。如果为空,表示还没有退出

7.请求示例

GET 'http://ip:port/rest/<pwd>/statistics'

8.响应示例

<response>
  <status>
    <code>0</code>
  </status>
  <data>
    <record>
      <account/>
      <computerName>HFM</computerName>
      <consumeFeatureVer/>
      <featureId>0</featureId>
      <featureName/>
      <featureVer/>
      <ip>114.246.96.4</ip>
      <loginTime>2025-03-18 07:57:57</loginTime>
      <logoutTime>2025-03-18 07:57:57</logoutTime>
      <pid>DNLA-7BOQ</pid>
      <sn>2SFAXZMJYYXWGGDP</sn>
      <type>Login</type>
      <userName>Administrator</userName>
    </record>
  </data>
</response>

获取log信息

  1. 请求地址:GET http://ip:port/rest/<pwd>/log

  2. 接口概述:

    获取log信息

  3. 请求参数

    参数名称 参数类型 参数说明
    product=[pid] String 按product筛选
    featureName=[featureName featureVer] String 特征项名称 特征项版本
    startTime=[startTime] String 传入一个时间段
    endTime=[endTime] String 传入一个时间段
    type =[type] String 想要获取上述时间段内信息的类型
    type=Login表示获取这段时间内Login的用户信息
    type=Logout表示获取这段时间内Logout的用户信息
    type=Query表示获取这段时间内Query的用户信息
    type=QueryAction表示单次Query请求的用户信息,同时会返回userNum字段,表示这次Query请求的用户数
    type=Release表示获取这段时间内Release的用户信息
    type=ReleaseAction表示单次Release请求的用户信息
    type= Checkout表示获取这段时间内Checkout的用户信息
    type=Checkin表示获取这段时间内Checkin的用户信息
    type可以多选,以空格的形式追加,不传默认返回当前时间段内上述所有信息|
  4. 请求参数格式:

    • application/json:返回json
    • 其他:返回xml
  5. status:

    • code :INT 0标识成功,其它是错误码
    • errMsg :String 错误信息
  6. 返回信息:data:

    返回名称 返回类型 返回说明
    pid String 产品编号
    sn String 所属SN
    userName String 用户名
    computerName String 机器名
    account String 返回客户端设置的账号名
    ip String Ip地址
    featureName String 特征项名称。如果为NULL,表示SN的使用记录
    featureVer String 客户端实际占 用的特征项版本
    id INT 当前记录的id
    parentId INT 当前记录的父id
    time String log的记录时间
    时间格式:“YYYY-MM-DD HH:MM:SS”
    type String log信息的类型,包括Login、Logout、Query、Release、Checkout、Checkin

    7.请求示例

GET 'http://ip:port/rest/<pwd>/log'

8.响应示例

<response>
  <status>
    <code>0</code>
  </status>
  <data>
    <record>
      <computerName>HFM</computerName>
      <featureId>0</featureId>
      <featureName/>
      <featureVer/>
      <id>191</id>
      <ip>114.246.96.4</ip>
      <parentId>0</parentId>
      <pid>DNLA-7BOQ</pid>
      <platformName>Windows</platformName>
      <sn>2SFAXZMJYYXWGGDP</sn>
      <time>2025-03-18 07:57:57</time>
      <type>Login</type>
      <userName>Administrator</userName>
    </record>
  </data>
</response>

删除log信息

  1. 请求地址:POST http://ip:port/rest/<pwd>/log

  2. 接口概述:

    删除log信息

  3. 请求参数

    参数名称 参数类型 参数说明
    method=[delete] String 必传delete表示删除数据
    product=[pid] String 按product删除,不传表示删除所有产品的log
    startTime=[startTime] String 传入一个时间段,不传代表删除所有数据
    endTime=[endTime] String 传入一个时间段,不传代表删除所有数据
  4. 请求参数格式:

    • application/json:返回json
    • 其他:返回xml
  5. status:

    • code :INT 0标识成功,其它是错误码
    • errMsg :String 错误信息
  6. 返回信息:data:

    返回名称 返回类型 返回说明
    numDeleted INT 成功删除数据的条数

7.请求示例

POST 'http://ip:port/rest/<pwd>/log?method=delete'

8.响应示例

<response>
  <status>
    <code>0</code>
  </status>
  <data>
    <numDeleted>202</numDeleted>
  </data>
</response>

获取错误列表

此信息的保存时间为48小时,每次调用接口显示最多不超过10000条数据。

  1. 请求地址:GET http://ip:port/rest/<pwd>/errors
  2. 接口概述:

    获取错误列表

  3. 请求参数
参数名称 参数类型 参数说明
product=[pid] String
feature=[featureName]
featureVer=[featureVer]
startTime=[startTime] String 获取一个时间段内[startTime, endTime]的错误信息,不传表示全部
endTime=[endTime] String 获取一个时间段内[startTime, endTime]的错误信息,不传表示全部
  1. 请求参数格式:
    • application/json:返回json
    • 其他:返回xml
  2. status:
    • code :INT 0标识成功,其它是错误码
    • errMsg :String 错误信息
  3. 返回信息:data:

    返回名称 返回类型 返回说明
    SN String 所属SN
    userName String 用户名
    computerName String 机器名
    account String 返回客户端设置的账号名
    type String 类型
    ip String Ip地址
    featureName String 特征项名称
    featureVer String 特征项版本
    time String 出错时间
    result INT result结果

    7.请求示例

GET  'http://ip:port/rest/<pwd>/errors'

8.响应示例

<response>
  <status>
    <code>0</code>
  </status>
</response>

可能出现的错误码如下

|错误码|错误信息|
|------|--------------|
|269|参数错误,输入的参数为空|
|290|内存分配失败|
|317|Query参数错误|
|530|该用户被集团服务管理员踢出,几分钟后才能再次登录|
|531|授权码由于连接服务器过于频繁被列入黑名单,或集团授权客户端被访问规则禁止|
|1283|指定的特征项没有找到|
|1289|特征项已过期|
|1793|授权码已经过期|
|1794|SN的在线设备数超过限制|
|1798|指定的授权码没有找到,请确认授权码格式、服务器地址是否正确以及授权码与产品是否一致|
|1810|特征项容量已用尽,需要等待其它进程或客户端释放|
|1811|特征项还没有被使用,无需释放|
|1813|用户数超过最大计数|
|2623|授权码已停用|

添加访问规则

  1. 请求地址:POST http://ip:port/rest/<pwd>/product/<pid>/rule

2.接口概述:

添加访问规则 3.请求参数

参数名称 参数类型 参数说明
rules String rules=allow 127.0.0.1,规则为字符串格式,多条规则以换行符分隔
  1. 请求参数格式:
    • application/json:返回json
    • 其他:返回xml
  2. status:
    • code :INT 0标识成功,其它是错误码
    • errMsg :String 错误信息

删除访问规则

  1. 请求地址:DELETE http://ip:port/rest/<pwd>/product/<pid>/rule

2.接口概述:

删除访问规则

  1. 请求参数格式:
    • application/json:返回json
    • 其他:返回xml
  2. status:
    • code :INT 0标识成功,其它是错误码
    • errMsg :String 错误信息

添加全局用户组

  1. 请求地址:POST http://ip:port/rest/<pwd>/ruleGroup

  2. 接口概述:

    添加全局用户组

  3. 请求参数

参数名称 参数类型 参数说明
name String name={组名}&users={用户标识}用户标识:ip(127.0.0.1),或用户名(userName),或(@machineName),一次可以传多个,用\n分隔
  1. 请求参数格式:
    • application/json:返回json
    • 其他:返回xml
  2. status:
    • code :INT 0标识成功,其它是错误码
    • errMsg :String 错误信息

删除用户组里的用户

  1. 请求地址:DELETE http://ip:port/rest/<pwd>/ruleGroup
  2. 接口概述:

    删除用户组里的用户

  3. 请求参数
参数名称 参数类型 参数说明
name String name={组名}&users={用户标识}用户标识:ip(127.0.0.1),或用户名(userName),或(@machineName),一次可以传多个,用\n分隔
  1. 请求参数格式:
    • application/json:返回json
    • 其他:返回xml
  2. status:
    • code :INT 0标识成功,其它是错误码
    • errMsg :String 错误信息

查询用户组里的用户

  1. 请求地址:GET http://ip:port/rest/<pwd>/ruleGroup/{组名}

  2. 接口概述:

    查询用户组里的用户

  3. 请求参数格式:

    • application/json:返回json
    • 其他:返回xml
  4. status:

    • code :INT 0标识成功,其它是错误码
    • errMsg :String 错误信息
  5. 返回信息:users

返回名称 返回类型 返回说明
user String 用户

踢出

  1. 请求地址:POST http://ip:port/rest/<pwd>/product/<pid>/killList

  2. 接口概述:

    踢出

  3. 请求参数

参数名称 参数类型 参数说明
featureName String 特征项名称
user String 用户标识
  1. 请求参数格式:
    • application/json:返回json
    • 其他:返回xml
  2. status:
    • code :INT 0标识成功,其它是错误码
    • errMsg :String 错误信息

在线激活

  1. 请求地址:GET http://ip:port/rest/<pwd>/product/<pid>/activate/<sn>
    sn:要激活的授权

  2. 接口概述:

    在线激活

  3. status:

    • code :M Element 0表示成功
    • errMsg :O Element 错误信息

在线升级

  1. 请求地址:GET http://ip:port/rest/<pwd>/product/<pid>/update/<sn>

    sn:要升级的授权

  2. 接口概述:

    在线升级

  3. status:

    • code :M Element 0表示成功
    • errMsg :O Element 错误信息

获取请求文件

  1. 请求地址:GET http://ip:port/rest/<pwd>/ product/<pid>/requestCode/<sn>
  2. 接口概述:

    获取请求文件

  3. 请求参数格式:
    • application/json:返回json
    • 其它:返回xml
  4. status:
    • code :INT 0表示成功,其它是错误码
    • errMsg :String 错误信息
  5. 返回信息:data:

    返回名称 返回类型 返回说明
    data String 请求码

使用升级文件

  1. 请求地址:POST http://ip:port/rest/<pwd>/ product/<pid>/applyUpdateCode

  2. 接口概述:

    使用升级文件

  3. 请求参数

    参数名称 参数类型 参数说明
    code=[code] String 升级串
  4. 请求参数格式:

    • application/json:返回json
    • 其他:返回xml
  5. status:

    • code :INT 0标识成功,其它是错误码
    • errMsg :String 错误信息
  6. 返回信息:snInfo:

    返回名称 返回类型 返回说明
    receipt String 确认码

获取设备码

  1. 请求地址:GET http://ip:port/rest/<pwd>/ product/<pid>/ deviceCode
  2. 接口概述:

    获取设备码

  3. 请求参数格式:
    • application/json:返回json
    • 其他:返回xml
  4. status:
    • code :INT 0标识成功,其它是错误码
    • errMsg :String 错误信息
  5. 返回信息:data:

    返回名称 返回类型 返回说明
    code String 设备码

获取借出串

  1. 请求地址:POST http://ip:port/rest/<pwd>/ product/<pid>/ borrow
  2. 接口概述:

    获取借出串

  3. 请求参数

    参数名称 参数类型 参数说明
    borrowRequest=[ borrowRequest] String 借出请求串
    referenceId=[ referenceId] String 编号
  4. 请求参数格式:
    • application/json:返回json
    • 其他:返回xml
  5. status:
    • code :INT 0标识成功,其它是错误码
    • errMsg :String 错误信息
  6. 返回信息:data:

    返回名称 返回类型 返回说明
    data String 借出串

获取分发的设备信息

  1. 请求地址:GET http://ip:port/rest/<pwd>/ product/<pid>/borrowclient
  2. 接口概述:

    获取分发的设备信息

  3. 请求参数

    参数名称 参数类型 参数说明
    product=[pid] String 获取指定product下的用户使用信息
    startTime=[ startTime] String 查询的起始借出日期(包括)
    endTime=[ endTime] String 查询的借出日期(不包含)
  4. 请求参数格式:
    • application/json:返回json
    • 其他:返回xml
  5. status:
    • code :INT 0标识成功,其它是错误码
    • errMsg :String 错误信息
  6. 返回信息:record:

    返回名称 返回类型 返回说明
    id INT 当前记录的id
    sn String 借出的SN
    userName String 用户名
    computerName String 机器名
    account String 返回客户端设置的账号名
    mid String 借出的指纹
    referenceId String 编号
    durationDays INT 借出的天数
    featured INT 借出的特征项ID
    featureName String 借出的特征项名称
    featureVer String 借出的特征项版本
    time String 借出的时间
    时间格式:“YYYY-MM-DD HH:MM:SS”

添加代理

  1. 请求地址:POST http://ip:port/rest/<pwd>/ product/<pid>/ addAgent
  2. 接口概述:

    添加代理

  3. 请求参数

    参数名称 参数类型 参数说明
    fid=[featureId] String 特征项ID
    featureName=[featureName] String 特征项名称(与fid可二选一)
    featureUserNumber=[ featureUserNumber] String 特征项用户数
    mode=[mode] String 代理模式(increase:增加,share:共享)
  4. 请求参数格式:
    • application/json:返回json
    • 其他:返回xml
  5. status:
    • code :INT 0标识成功,其它是错误码
    • errMsg :String 错误信息

释放代理

  1. 请求地址:POST http://ip:port/rest/<pwd>/ product/<pid>/ releaseAgent
  2. 接口概述:

    释放代理

  3. 请求参数

    参数名称 参数类型 参数说明
    fid=[featureId] String 特征项ID
    featureName=[featureName] String 特征项名称(与fid可二选一)
    featureUserNumber=[ featureUserNumber] String 特征项用户数
  4. 请求参数格式:
    • application/json:返回json
    • 其他:返回xml
  5. status:
    • code :INT 0标识成功,其它是错误码
    • errMsg :String 错误信息

获取代理信息

  1. 请求地址:GET http://ip:port/rest/<pwd>/ product/<pid>/ getAgent
  2. 接口概述:

    获取代理信息

  3. 请求参数格式:
    • application/json:返回json
    • 其他:返回xml
  4. status:
    • code :INT 0标识成功,其它是错误码
    • errMsg :String 错误信息

获取特征项列表并可查峰值信息

  1. 请求地址:GET http://ip:port/rest/<pwd>/product/<pid>/featuresV2
  2. 接口概述:

    获取特征项列表并可查峰值信息

  3. 请求参数

    参数名称 参数类型 参数说明
    peakType String 峰值类型,月峰值或日峰值,month或day
    peakStartDate String 查询起始日期
    peakEndDate String 查询结束日期,不指定则为当月或当日

    以上3个参数均为可选参数,不输入则返回特征项列表,和获取特征项列表接口的返回结果类似,唯一区别是在只指定产品ID时返回聚合的特征项列表。建议用户使用此接口代替获取特征项列表接口

  4. 请求参数格式:
    • application/json:返回json
    • 其他:返回xml
  5. status:
    • code :INT 0标识成功,其它是错误码
    • errMsg :String 错误信息
  6. 返回信息:feature:

    返回名称 返回类型 返回说明
    product String 所属产品名称
    sn String 所属SN
    endDate String 结束日期
    users INT 总的用户数
    onlineUsers INT 在线用户数
    name String 特征项名称
    version String 版本
    date String 查询峰值的日期
    peak INT 指定月或日的峰值
  7. 响应示例:
<feature>
    <endDate>2025-04-30 23:59:59</endDate>
    <id>18086</id>
    <name>计算</name>
    <onlineUsers>0</onlineUsers>
    <product> demo </product>
    <sn>GNT****************Z</sn>
    <users>10</users>// 计算
    <version>2.0</version>
    <peaks>
        <peak date="2025-02">3</peak>
        <peak date="2025-03">2</peak> 
    </peaks>
</feature>