公共API
简介
Bitdefender 控制中心 API允许开发者自动化业务流程。
这些API通过 JSON-RPC 2.0协议 进行暴露。
每个API调用都针对一个方法并传递一组参数。
参数分为两种类型:
-
必选参数 - 必须始终传递给被调用的方法。
-
可选参数 - 具有默认值,可从参数列表中省略。任何可选参数均可跳过,无论其在参数列表中的位置如何。
API请求
API调用通过HTTP请求执行,其中JSON-RPC消息作为负载。每个API调用必须使用HTTP POST方法。此外,每个HTTP请求必须包含
Content-Type
请求头设置为
application/json
.
注意
该API限制每个密钥
每秒的请求数量
。若超出限制,后续请求将被拒绝并返回
429HTTP
状态码,同时附有Retry-After标头标明可重新发起请求的剩余秒数。
控制中心
提供面向产品不同领域的多个API。每个API提供与特定产品领域相关的方法集。所有API的基础URL为安装
GravityZone
的主机名、域名或IP地址:
https://YOUR-HOSTNAME/api/v1.0/jsonrpc/
。获取完整API URL需在基础URL后追加API名称。
重要提示
-
请确保访问URL(即通用的API端点)是安全的。安全URL始终以
https://协议开头。 -
若使用应用程序自动化调用API,请确保其验证SSL/TLS证书,这有助于防范中间人攻击。
-
使用支持现代TLS协议的最新库或框架。
当前开放的API如下:
-
账户 ,其API URL为:
https://YOUR-HOSTNAME/api/v1.0/jsonrpc/accounts
-
通用 ,其API URL为:
https://YOUR-HOSTNAME/api/v1.0/jsonrpc/general
-
维护窗口 ,其API URL为:
https://YOUR-HOSTNAME/api/v1.0/jsonrpc/maintenanceWindows
-
网络 ,对应的API URL为:
https://YOUR-HOSTNAME/api/v1.0/jsonrpc/network
-
软件包 ,对应的API URL为:
https://YOUR-HOSTNAME/api/v1.0/jsonrpc/packages
-
策略 ,对应的API URL为:
https://YOUR-HOSTNAME/api/v1.0/jsonrpc/policies
-
隔离区 ,对应的API URL为:
https://YOUR-HOSTNAME/api/v1.0/jsonrpc/quarantine
-
报告 ,对应的API URL为:
https://YOUR-HOSTNAME/api/v1.0/jsonrpc/reports
-
沙箱 ,对应的API URL为:
https://YOUR-HOSTNAME/api/v1.0/jsonrpc/sandbox
-
沙箱门户 ,对应的API URL为:
https://SANDBOX-IP/api/v1
可通过向每个API URL发送包含JSON RPC 2.0的HTTP请求来调用其公开的功能接口。
注意
当前 控制中心 .
API密钥
API密钥是在 我的账户 的 控制中心 每个API密钥允许应用程序调用一个或多个API公开的方法。生成API密钥时可选择允许访问的API。
生成API密钥步骤:
-
登录
https://YOUR-HOSTNAME/使用管理员账户,该账户需具备以下权限: 管理网络 , 管理用户 , 管理公司 以及 查看分析数据 . -
点击控制台右上角的用户名并选择 我的账户 :
-
进入 API密钥 分区后点击 添加 按钮:
-
输入密钥描述并选择该密钥需启用的API:
-
点击 生成 .
注意
将显示包含新生成API密钥的窗口及警告提示——该密钥仅在窗口打开时可查看。关闭窗口后,您将无法在 GravityZone .
-
点击
按钮将密钥复制到剪贴板并保存在安全位置。
-
关闭 API密钥 窗口。
新密钥将以模糊格式添加到 API密钥 部分,同时显示其描述、创建日期及已启用的API列表。
重要提示
通过API密钥,开发者可访问包裹和库存等敏感信息。请勿共享或分发您生成的API密钥,以防敏感信息泄露!
控制中心 还允许您删除不再需要的历史API密钥:
-
从列表中选择API密钥。
-
点击 删除 按钮:
-
选择 是 确认删除。
警告
密钥将立即失效,所有使用该密钥的第三方应用连接将被终止。
身份验证
对 控制中心 的API调用需通过HTTP协议层的 HTTP基本认证 机制进行验证(详见 此处 .
客户端应用每次调用API时都必须发送Authorization请求头。
该 Authorization 请求头包含以下元素:
-
授权方法及空格前缀;在本例中,该前缀始终为
Basic. -
由
用户名:密码组合字符串生成的Base64编码字符串。本例中,API密钥作为用户名,密码设为空字符串。
例如,若API密钥为
N8KzwcqVUxAI1RoPi5jyFJPkPlkDl9vF,则需对以下字符串进行Base64编码:N8KzwcqVUxAI1RoPi5jyFJPkPlkDl9vF:。此时发送至授权请求头的内容为BasicTjhLendjcVZVeEFJMVJvUGk1anlGSlBrUGxrRGw5dkY6.
错误报告
控制中心 当请求的API方法无法执行目标操作时会返回错误。
以下是一个失败API调用的错误响应示例:
{
"id":"4d77e2d9-f760-4c8a-ba19-53728f868d98",
"jsonrpc" : "2.0",
"error" : {
"code" : -32601,
"message" : "方法未找到",
"data" : {
"details" : "所选API不可用"
}
}
}
错误代码与错误信息均按 JSON-RPC 2.0规范 :
|
错误 |
代码 |
信息 |
|---|---|---|
|
解析错误 |
|
解析错误 |
|
无效请求 |
|
无效请求 |
|
方法未找到 |
|
方法未找到 |
|
无效参数 |
|
无效参数 |
|
服务器错误 |
|
服务器错误 |
错误的完整描述存放于
data.details
错误消息中的成员字段内。
同时,HTTP状态码会根据错误类型进行设置:
|
HTTP状态码 |
描述 |
|---|---|
|
|
当请求认证失败时设置(例如API密钥错误或缺失)。 |
|
|
当请求未被授权使用目标功能时设置(例如当前API密钥未启用该API)。 |
|
|
使用了非POST的HTTP方法。 |
|
|
同一API密钥每秒发出超过10次请求。 |
|
|
该状态码表示请求成功,或由于服务器错误导致请求失败(例如未传递必填参数)。 |