蒲公英管理端API文档
更新日期:2023-08-01 17:09:40
蒲公英开放 API 文档
1. 开发者账号
使用 PGYAPI 之前,你需要先拥有一个 Oray 帐户,可以通过https://www.oray.com的右上角的注册按钮进行注册。如图:
拥有帐户后,进入http://open.oray.com(开放平台的网址),进入开发者认证页面,填写必要资料并提交开发者申请。如图:
注册后,进入我的应用页面创建应用,创建成功后,在应用详情中看到自己的APP ID,APP KEY和服务器地址,有了这些信息,就可以使用PGYAPI来开发自己的应用了。如图:
2. 接口简介
2.1 接口规范
API 采用 REST 风格编写,即查询(GET)创建(POST)修改(PUT/PATCH)删除(DELETE),其中 POST/PUT/PATCH/DELETE 的 Content-Type 使用 application/json; charset=utf-8,请使用 https 协议调用接口
HTTP StatusCode | 说明 |
---|---|
200 | OK: 请求成功且有数据返回,一般用于 GET/POST |
204 | No Content: 请求成员但没数据返回,一般用于 POST/PUT/PATCH/DELETE |
400 | Bad Request: 请求出错,一般指请求参数或请求内容有误 |
401 | Unauthorized: 授权未通过,一般指没有授权或授权过期 |
403 | Forbidden: 操作被拒绝,一般指越权操作或禁止操作 |
429 | Too Many Requests: 频率限制,一般指接口被限流 |
500 | Internal Server Error: 服务器出错:一般指接口报错或服务器内部出现错误 |
2.2 请求限流
默认 1000次/小时
2.3 错误码
code | 说明 |
---|---|
400007 | 目标被占用 |
400008 | 目标不存在 |
400009 | 目标已存在 |
400010 | 设备不存在 |
400011 | 网络不通 |
400012 | 下载升级包失败 |
400013 | 硬件接口无应答 |
400014 | 硬件接口请求超时 |
400015 | 参数错误 |
400016 | 缺少参数 |
400017 | 成员不在网络 |
400018 | 密码错误,尝试过多被禁 |
400019 | 设备未绑定 |
400020 | 设备未初始化 |
400021 | 验证码错误 |
400022 | 验证码过期 |
400023 | 业务超时 |
400024 | 验证码错误 |
400025 | 验证码已失效 |
400026 | 没有获取验证码 |
400027 | 消息通道忙 |
400028 | 已超过当天发送限制 |
400029 | 验证码发送失败 |
400030 | 创建网络受限 |
400032 | 虚拟IP资源不足 |
400033 | 成员已在网络中 |
400034 | 成员不在网络中 |
400035 | 成员数超限(组网成员数不足) |
400036 | 字符串长度错误 |
400037 | 已有客户端绑定了此手机号 |
400038 | 成员数不足(生成成员数不足) |
400039 | 路由器已被绑定 |
400043 | 密码不能含有中文 |
400044 | 设备未生产 |
400045 | 客户端未绑定手机 |
400046 | 绑定手机与解绑手机不一样 |
400047 | 此手机未绑定 |
400051 | 申请入网回复问题错误 |
400052 | 申请入网验证入网密码错误 |
400053 | 服务过期 |
400057 | MAC地址不匹配(客户端登陆限制MAC) |
400058 | 目标设备不在线 |
400059 | 目标设备密码错误 |
400060 | 未知设备上网IP |
400061 | 网络出口不支持国外IP的路由器 |
400063 | 你已绑定此路由器了 |
400064 | 账号已被注册 |
400065 | 分配带宽超出限制 |
400066 | 密码含有中文字符 |
400067 | 没有USB存储设备 |
400068 | IP不在网段内 |
400069 | 系统已经是最新版本 |
400070 | 字符串不能含有空格 |
400071 | 字符串不能有中文字符 |
400072 | 字符串不能含有特殊字符 |
400073 | 字符串只允许含有字母,数字,正划线和下划线 |
400074 | ip地址必须172开头 |
400076 | 分享授权过期 |
400077 | 新密码不能与初始密码或SN码相同 |
400078 | 设备名称重复 |
400079 | 含有非字母、数字或符号 |
400080 | 超过可下载次数 |
400081 | 系统版本过低 |
400082 | 无可导出日志 |
400083 | 批量生成限制 |
400084 | 组网数不足 |
400085 | 第三方授权失败 |
400086 | 个数受限等 |
400089 | 禁止入网 |
400090 | 上传文件错误 |
400091 | 文件解压失败 |
400092 | 路由器型号错误 |
400093 | 存储上传文件失败 |
400094 | 目标不匹配 |
400095 | 未知配置文件适用路由器型号 |
400096 | 更新配置失败 |
400097 | 为交互机,无需绑定 |
400098 | 监控成员数不足 |
400099 | 不允许加入零信任网络 |
403001 | 设备已禁用 |
403002 | 无权限操作 |
403003 | 无权操作此线路 |
403004 | 无权操作此定制包 |
403005 | 超时禁用编辑 |
403006 | 超数据被禁用操作 |
403009 | 无权操作设置MAC |
403010 | 客户端登录限制 |
403011 | 授权域名不允许 |
403012 | 授权类型不允许 |
403013 | 授权过期 |
403014 | 授权无效 |
403015 | 授权用户不允许 |
403016 | 非法授权 |
403017 | 服务禁用,服务不可用 |
403018 | 网络禁用 |
403019 | 授权作用域不运行 |
403020 | 访问控制权限不足 |
403021 | 个人版账号使用了企业版客户端 |
403022 | 未通过二次登录验证 |
403023 | 未通过敏感验证 |
404001 | 网络不存在 |
404002 | 公告不存在 |
404003 | 旁路不存在 |
404004 | 资源不存在 |
404005 | 成员不存在 |
404006 | 定制安装包不存在 |
404007 | 验证消息不存在 |
404008 | 客户端不存在 |
404009 | 用户不存在 |
404010 | 强制转发记录不存在 |
404011 | 路由器不存在 |
404012 | 嵌入式不存在 |
404013 | 渠道版路由器不存在 |
404014 | 第三方授权不存在 |
404015 | 没有购买带宽 |
404016 | 网页定制记录不存在 |
404017 | 服务不存在 |
404018 | DNS域名解析不存在 |
404019 | 备用旁路不存在 |
404020 | 云配置不存在 |
404021 | 批量部署模板不存在 |
404022 | 自定义IP服务不存在 |
404023 | 访问日志不存在 |
404024 | 监控平台服务不存在 |
404025 | 监控成员不存在 |
404026 | 访问策略不存在 |
404027 | 网络组不存在 |
404028 | 告警接收人不存在 |
404029 | 告警设置不存在 |
404030 | 告警消息不存在 |
404031 | 权限账号不存在 |
404032 | 浏览器记录不存在 |
429001 | 频率限制 |
429002 | 出错限制 |
429003 | 并发限制 |
3. 接口详情
除了刷新授权接口,其他接口的 API 域名地址是应用详情里的服务器地址
3.1 登录授权
3.1.1 获取授权
调用管理接口前需先完成授权获取 access_token
请求
POST /product/authorization HTTP/1.1Content-Type: application/json; charset=utf-8
...
{
// {必填} 贝锐账号
"account": "xxx",
// {必填} 贝锐账号密码md5格式
"password": "xxx",
// {必填} 开放者申请的应用ID
"appid": "xxx",
// {必填} 开发者申请的应用密钥
"appsecret": "xxx"
}
响应
HTTP/1.1 200 OKContent-Type: application/json
...
{
// 授权凭证,调用需授权的接口时使用
"access_token": "xxx",
// 授权有效时间,需在过期前完成刷新
"expires_in": 1800,
// 刷新授权凭证
"refresh_token": "xxx",
// 刷新授权地址
"refresh_addr": "xxx"
}
3.1.2 刷新授权
请求地址由 获取授权 中获取 refresh_addr,header 中的 X-ClientID 固定必传,刷新失败时需重新获取授权(指账号密码变更等授权信息失效)
请求
POST /authorize/refreshing HTTP/1.1Content-Type: application/json; charset=utf-8
X-ClientID: iXo0jmpBtB8OkbY93G9P
...
{
// {必填} 授权凭证
"access_token": "xxx",
// {必填} 刷新授权凭证
"refresh_token": "xxx"
}
响应
HTTP/1.1 200 OKContent-Type: application/json
...
{
// 授权凭证,调用需授权的接口时使用
"access_token": "xxx",
// 刷新授权凭证
"refresh_token": "xxx",
// 暂无用可忽略
"refresh_expires": xxx
}
3.2 组网管理
3.2.1 获取组网列表
请求
GET /product/network/list HTTP/1.1Authorization: Bearer xxx
...
响应
HTTP/1.1 200 OKContent-Type: application/json
...
[
{
// 组网ID
"networkid":xxx,
// 组网名称
"name":"xxx",
// 组网编号,加入网络ID
"serialnumber":"xxx",
// 组网类型 0:对等网络,1:集散网络
"type":0,
// 所属用户ID
"userid":xxx,
// 创建时间
"createtime":"xxx",
// 更新时间
"updatetime":"xxx",
// 是否是默认网络
"isdefault":true,
// 入网规则,详情查看创建组网
"authrule":{
"mold":"audit"
},
// 线路
"line":"east-bgp",
// 线路名称
"linename":"华东BGP线路",
// 硬件成员数
"routernum":0,
// 软件成员数
"clientnum":2,
// 旁路数
"bypassnum":0
}
]
3.2.2 创建组网
相关限制
组网数量: 获取用户服务 items[PGY-NETWORK-NUM] 配置参数获取最大可创建网络数 集散网络: 获取用户服务 items[PGY-STAPLE-NETWORK] || isstandard = true 零信任网络: 获取用户服务 items[PGY-TRUST-NETWORK]
请求
POST /product/network/create HTTP/1.1Content-Type: application/json; charset=utf-8
Authorization: Bearer xxx
...
{
// {必填} 网络名称,长度1-20不能含有特殊字符
"name": "xxx",
// [选填,默认:0] 网络类型 0:对等网络,1:集散网络
"type": 0,
// [选填,默认:"east-bgp"] 网络线路
"line": "east-bgp",
/* [选填,默认:"ban"] 入网规则
不允许任何人加入房间
{
"mold": "ban"
}
允许任何人加入并由房主审核
{
"mold": "audit"
}
允许任何人加入房间
{
"mold": "all"
}
需要房间密码
{
"mold" : "pwd",
"password" : "网络密码"
}
需要正确回答问题
{
"mold" : "answer",
"question" : "问题",
"answer" : "答案"
}*/
"authrule": {
"mold": "ban"
}
}
响应
HTTP/1.1 200 OKContent-Type: application/json
...
{
// 生成的组网ID
"networkid": xxx
}
3.2.3 修改组网
请求
POST /product/network/update HTTP/1.1Content-Type: application/json; charset=utf-8
Authorization: Bearer xxx
...
{
// {必填} 组网ID
"networkid": xxx,
// [选填] 组网名称
"name": "xxx",
// [选填] 网络类型 0:对等网络,1:集散网络,4:零信任网络
"name": "xxx",
}
响应
HTTP/1.1 204 No Content...
3.2.4 删除组网
请求
// networkid:{必填} 组网IDDELETE /product/network/:networkid HTTP/1.1
Content-Type: application/json; charset=utf-8
Authorization: Bearer xxx
...
响应
HTTP/1.1 204 No Content...
3.2.5 编辑成员
提交的成员即组网中的成员,没有提交的即是删除成员,清空成员则不用提交 body
请求
// networkid:{必填} 组网IDPATCH /product/networks/:networkid/members HTTP/1.1
Content-Type: application/json; charset=utf-8
Authorization: Bearer xxx
...
[
{
// {必填} 组网成员,对应 /vpnid/build 生成的单个 vpnids 或 设备SN
"member": "xxx",
// {必填} 成员类型 0:硬件成员(SN),1:访问端成员(UID),2:服务器端成员(SID)
"type": 1,
// [选填] 是否是中心成员,只有是集散网络时有效
"iscenter": true
}
]
响应
HTTP/1.1 204 No Content...
3.2.6 修改入网方式
请求
POST /product/network/set-rule HTTP/1.1Content-Type: application/json; charset=utf-8
Authorization: Bearer xxx
...
{
// {必填} 组网ID
"networkid":xxx,
/* {必填} 入网类型
ban: 不允许任何人进网
audit: 允许任何人进网并由管理员审核
all: 允许任何人进网
pwd: 需要网络密码
answer: 需要正确回答问题
*/
"mold":"answer",
// [选填,mold:answer时必传] 问题
"question":"xxx",
// [选填,mold:answer时必传] 问题答案
"answer":"xxx",
// [选填,mold:pwd时必传] 密码
"password": "xxx"
}
响应
HTTP/1.1 204 No Content...
3.2.7 获取组网成员
请求
// networkid:{必填} 组网IDGET /product/network/members/:networkid HTTP/1.1
Authorization: Bearer xxx
...
响应
HTTP/1.1 200 OKContent-Type: application/json
...
[
{
// 成员ID
"clientid":xxx,
// 组网ID
"networkid":xxx,
// 组网编号,加入网络ID
"serialnumber":"xxx",
// 组网类型 0:对等网络,1:集散网络
"networktype":0,
// 用户ID
"userid":xxx,
// 组网成员
"member":"xxx",
// 成员虚拟ID
"memberid":xxx,
// 成员类型 0:硬件成员,1:访问端成员,2:服务器端成员
"devicetype":1,
// 成员角色 0:普通成员,1:中心成员
"clienttype":0,
// 成员虚拟IP
"virtualip":"172.32.91.138",
// 成员虚拟MAC地址
"virtualmac":"00:25:00:20:5b:89",
// 成员备注
"clientmemo":"xxx",
// 成员信息
"clientinfo":{
/*
devicetype = 0 时:{
"ip":"10.168.1.1", // IP
"mac":"A0:C5:F2:B0:9F:4C", // MAC地址
"mask":"255.255.255.0", // 掩码
"name":null, // 别名
"type":1, // 类型 1:普通版,2:渠道版,3:项目版,4:嵌入式
"model": "X5-3353", // 型号
"statuscode":3, // 状态码
"isbypasser":false // 是否是旁路盒子
}
devicetype = 1或2 时:{
"mac":null, // MAC地址
"host":"xxx", // 主机名
"token":"xxx", // token
"mobile":null, // 绑定手机
"account":null, // 绑定账号
"associateid":xxx // 生成VPNID的用户ID
}
*/
"...": "..."
},
// 最后登录时间
"lastlogintime":"2020-01-09 09:44:48",
// 组网线路
"line":"east-bgp",
// 是否删除
"isdelete":false,
// 是否是协助者成员
"ishelper":false,
// 创建时间
"createtime":"2019-12-30 14:03:48",
// 是否是共享成员
"isshare":false,
// 平台、系统类型(ios,android,windows,linux等)
"platform": "ios"
}
]
3.2.8 添加成员
此接口只能一次提交一个成员,批量添加时需多次调用接口,成功后必需再调用一次 通知客户端成员变更
请求
POST /product/network/add-member HTTP/1.1Content-Type: application/json; charset=utf-8
Authorization: Bearer xxx
...
{
// {必填} 组网ID
"networkid":xxx,
// {必填} 组网成员,对应 /vpnid/build 生成的单个 vpnids 或 设备SN
"member":"xxx",
// {必填} 成员类型 0:硬件成员(SN),1:访问端成员(UID),2:服务器端成员(SID)
"type": 1,
// [选填] 是否是中心成员,只有是集散网络时有效
"iscenter":false,
// [选填] 网络组ID,有网络组时使用
"groupid": 0
}
响应
HTTP/1.1 204 No Content...
3.2.9 修改成员
此接口只能一次提交一个成员,批量修改时需多次调用接口,成功后必需再调用一次 通知客户端成员变更
请求
PUT /product/network/update-member HTTP/1.1Content-Type: application/json; charset=utf-8
Authorization: Bearer xxx
...
{
// {必填} 组网ID
"networkid":xxx,
// {必填} 组网成员,对应 /network/members 接口的member
"member":"xxx",
// [选填] 是否是中心成员,只有是集散网络时有效
"iscenter":false,
// [选填] 网络组ID,有网络组时使用
"groupid": 0
}
响应
HTTP/1.1 204 No Content...
3.2.10 删除成员
此接口只能一次提交一个成员,批量删除时需多次调用接口,成功后必需再调用一次 通知客户端成员变更
请求
POST /product/network/remove-member HTTP/1.1Content-Type: application/json; charset=utf-8
Authorization: Bearer xxx
...
{
// {必填} 组网ID
"networkid":xxx,
// {必填} 组网成员,对应 /network/members 接口的member
"member":"xxx"
}
响应
HTTP/1.1 204 No Content...
3.2.11 通知客户端成员变更
在调用了 "添加成员/修改成员/删除成员" 接口之后需调用一次此接口,不然客户端的成员不会变更
请求
POST /product/network/refresh HTTP/1.1Content-Type: application/json; charset=utf-8
Authorization: Bearer xxx
...
{
// {必填} 组网ID
"networkid":xxx
}
响应
HTTP/1.1 204 No Content...
3.3 成员管理
3.3.1 获取成员列表
请求
/*isnetworked: [选填,默认 全部] 是否组网 1:已组网,0:未组网
type: [选填,默认 全部] 成员类别 router:硬件成员,client:软件成员
*/
GET /product/member/list?isnetworked=0 HTTP/1.1
Authorization: Bearer xxx
...
响应
HTTP/1.1 200 OKContent-Type: application/json
...
[
{
// 路由器SN
"sn":"xxx",
// 成员类型 0:路由器,1:客户端
"devicetype":0,
// 路由器类型 1:普通版,2:渠道版,3:项目版,4:嵌入式
"modeltype":1,
// 路由器显示型号
"model":"X5-2253",
// 路由器实际型号
"originmodel":"X5-2253",
// 路由器IP
"ip":"10.168.2.1",
// 路由器掩码
"mask":"255.255.255.0",
// 备注
"memo":null,
// 版本号
"version": "3.4.1",
// 版本类型,statle稳定版,develop开发版
"versiontype": "develop",
// 所在网络名称
"networkname":null,
// 所在网络ID
"networkid": 0,
// 是否组网
"isnetworked":false,
// 成员ID
"clientid": null,
// VPN状态(0:关闭,1:开启)
"state": 0,
// 是否自定义IP
"isdiyip": false,
// 公网IP
"publicip": "172.18.0.1"
},
{
// VPNID
"vpnid":"xxx",
// 成员类型 0:路由器,1:客户端
"devicetype":1,
// 绑定手机号码
"mobile":null,
// 备注
"memo":"xxx",
// 绑定MAC地址
"mac":null,
// 是否是所属者
"isowner":true,
// 所属者名称
"owneraccount":"xxx",
// 是否已共享出去
"isshare":false,
// 虚拟IP
"virtualip":null,
// 所在网络名称
"networkname":null,
// 所在网络ID
"networkid": 0,
// 是否组网
"isnetworked":false,
// 虚拟ID
"memberid":null,
// 成员ID
"clientid": null,
// VPN状态(0:关闭,1:开启)
"state": 0,
// 是否自定义IP
"isdiyip": false,
// 是否webvpn账号
"iswebvpn": false,
// 公网IP
"publicip": null,
// 客户端平台
"platform": "windows",
// 客户端版本
"version": "3.1"
}
]
3.3.2 获取成员在线状态
路由器每次最多获取20个成员
请求
POST /product/member/status HTTP/1.1Authorization: Bearer xxx
...
{
// [选填] 路由器
"router": [
// {必填} SN码
"xxx"
],
// [选填] 客户端
"visitor": [
{
// {必填} 成员虚拟ID,对应 member/list 的 memberid
"id": xxx,
// {必填} 成员ID,对应 member/list 的 clientid
"clientid": xxx,
// {必填} 组网ID,对应 member/list 的 networkid
"networkid": xxx
}
]
}
响应
HTTP/1.1 200 OKContent-Type: application/json
...
// ONLINE:在线,OFFLINE:不在线
{
// 路由器,key 为 sn
"router": {
"xxx": "OFFLINE"
},
// 客户端,key 为 clientid
"visitor": {
"xxx": "OFFLINE"
}
}
3.3.3 修改成员备注
请求
POST /product/member/set-memo HTTP/1.1Content-Type: application/json; charset=utf-8
Authorization: Bearer xxx
...
{
// {必填} 成员类型 0:硬件,非0:UID/SID
"devicetype": "0",
// {必填} 成员 SN/UID/SID
"member": "xxx",
// [选填,空则去掉备注] 备注,长度0-20
"memo": "xxx"
}
响应
HTTP/1.1 204 No Content...
3.3.4 修改成员密码
请求
POST /product/member/set-password HTTP/1.1Content-Type: application/json; charset=utf-8
Authorization: Bearer xxx
...
{
// {必填} 成员类型 0:硬件,非0:UID/SID
"devicetype":1,
// {必填} 成员 SN/UID/SID
"member":"xxx",
// {必填} 新密码
"password":"xxx"
}
响应
HTTP/1.1 204 No Content...
3.3.5 修改成员VPN状态
请求
PUT /product/member/set-state HTTP/1.1Content-Type: application/json; charset=utf-8
Authorization: Bearer xxx
...
{
// {必填} 成员 SN/UID/SID
"member": "xxx",
// {必填} 状态 on:开启 off:关闭
"state": "on"
}
响应
HTTP/1.1 204 No Content...
3.3.6 生成UID/SID
请求
POST /product/vpnid/build HTTP/1.1Content-Type: application/json; charset=utf-8
Authorization: Bearer xxx
...
{
// {必填} 密码,长度8-16不能含有中文
"password": "xxx",
// [选填,默认 1] 生成数量
"number": 1,
// [选填,默认 0] 类型0:访问端,1:服务器端
"type": "0"
}
响应
HTTP/1.1 200 OKContent-Type: application/json
...
{
// 生成的UID/SID
"vpnids": [xxx],
// 成功数量
"success": 1,
// 失败数量
"fail": 0
}
3.3.7 重置UID/SID
请求
POST /product/vpnid/reset HTTP/1.1Content-Type: application/json; charset=utf-8
Authorization: Bearer xxx
...
{
// UID/SID,对应 /vpnid/build 生成的单个 vpnids
"vpnid": "xxx"
}
响应
HTTP/1.1 200 OKContent-Type: application/json
...
{
// 重置后的密码
"password": "xxx"
}
3.3.8 删除UID/SID
请求
DELETE /product/vpnid/delete HTTP/1.1Content-Type: application/json; charset=utf-8
Authorization: Bearer xxx
...
{
// UID/SID,对应 /vpnid/build 生成的单个 vpnids
"vpnid": "xxx"
}
响应
HTTP/1.1 204 No Content...
3.3.9 绑定硬件设备
请求
POST /product/oraybox/bind HTTP/1.1Content-Type: application/json; charset=utf-8
Authorization: Bearer xxx
...
{
// {必填} 设备SN
"sn": "xxx",
// [选填,默认 false] 是否强制绑定
"forced": false,
// [选填,forced: true时必传] 密码
"password": "xxx"
}
响应
HTTP/1.1 204 No Content...
3.3.10 解绑硬件设备
请求
// sn:{必填} 设备SNPOST /product/oraybox/unbind/:sn HTTP/1.1
Content-Type: application/json; charset=utf-8
Authorization: Bearer xxx
...
响应
HTTP/1.1 204 No Content...
3.3.11 修改成员IP
请求
POST /product/network/set-ip HTTP/1.1Content-Type: application/json; charset=utf-8
Authorization: Bearer xxx
...
{
// {必填} 成员ID,对应 member/list 的 clientid
"clientid": "xxx",
// {必填} IP地址,暂只支持设置:172.16.0.0-172.31.255.255或192.168.0.0-192.168.255.255
"ip": "192.168.2.3"
}
响应
HTTP/1.1 204 No Content...
3.4 服务管理
3.4.1 获取用户服务
请求
GET /product/service/info HTTP/1.1Authorization: Bearer xxx
...
响应
HTTP/1.1 200 OKContent-Type: application/json
...
{
// 服务等级0:免费版,1:专业版,2:商业版,3:旗舰版,4:独立服务器,5:铂金版,6:私有化,7:家庭版
"typeid": 5,
// 级别名称
"typename": "蒲公英铂金版",
// 级别缩写
"shorttype": "pt",
// 是否标准版
"isstandard": false,
// 是否过期
"isexpired": false,
// 是否无忧版
"islife": false,
// 是否体验版
"istry": false,
// 是否禁用
"isforbidden": false,
// 过期时间
"expiredtime": 1656345600,
// 剩余过期天数
"expiredays": 715,
// 服务开通时间
"createtime": 1593332057,
// 硬件成员数
"routernum": 10,
// 访问端成员数
"clientnum": 10,
// 服务器端成员数
"servernum": 10,
// 使用硬件成员数
"usedrouter": 3,
// 使用访问端成员数
"usedclient": 4,
// 使用服务器端成员数
"usedserver": 0,
// 服务基础带宽
"speed": 12,
/*
PGY-CUSTOMIZE 蒲公英软件定制
PGY-HARDWARE-MEMBER 蒲公英硬件成员
PGY-SOFTWARE-MEMBER 蒲公英软件成员
PGY-SERVER-MEMBER 蒲公英服务器成员
PGY-NETWORK-NUM 蒲公英网络数
PGY-VISUAL-MANAGE 蒲公英可视化管理
PGY-FW-BANDWIDTH 蒲公英转发带宽
PGY-STAPLE-NETWORK 蒲公英集散网络
PGY-TRUST-NETWORK 蒲公英零信任网络
PGY-TRANSPORT 蒲公英传输模式
PGY-NETWORK-EXPORT 蒲公英网络出口
PGY-MAC-BIND 蒲公英Mac地址绑定
PGY-SECURITY 蒲公英账号安全
PGY-WEB-VPN 蒲公英WebVPN
PGY-GROUP-QUANTITY 蒲公英网络组数
PGY-GROUP-LEVEL-QUANTITY 蒲公英网络组层数
PGY-USER-QUANTITY 蒲公英账号数
PGY-ROLE-QUANTITY 蒲公英角色数
*/
"items": {
"PGY-HARDWARE-MEMBER": 2,
"PGY-SOFTWARE-MEMBER": 3
},
// 服务ID
"serviceid": xxx,
// 产品ID
"productid": xxx
}
3.5 告警管理
3.5.1 添加接收人
请求
POST /product/webhook HTTP/1.1Authorization: Bearer xxx
...
{
// {必填} 接收人名称,长度0-20
"name": "xxx",
// {必填} 类型,WXWork(企业微信) DingTalk(钉钉) PgyMgr(蒲公英管理APP) Webhook(http钩子)
/* Webhook 类型时会收到
POST {webhook}
{
// 告警类型 0:设备上线/离线状态,1:网络状态
"type": 0,
// 告警级别 0:一般 1:严重
"grade": 1,
// 成员
"member": "xxx",
// 用户ID
"userid": xxx,
// 成员备注
"membermemo": "xxx",
// 有备注时为备注没有时为成员名称
"membername": "xxx",
// 成员类型 0:硬件成员,1:访问端成员,2:服务器端成员
"membertype": 1,
// 消息接收人类型
"webhooktype": "DingTalk",
// IN:上线 其他情况表示离线,type=0 时才返回
"action": "IN",
// 丢包率,type=1 时才返回
"delay_limit": "",
// 延迟,type=1 时才返回
"loss_rate_limit": "",
// 创建时间
"time": "2021-04-15 14:15:21"
}
*/
"type":"WXWork",
// {必填} 推送地址,WXWork/DingTalk/Webhook 时必传
"webhook": "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxx",
// [选填] 密钥,钉钉有设置密钥时传
"secret": "",
// [选填,默认:0] 接收状态,0:关闭 1:开启
"state": 1
}
响应
HTTP/1.1 200 OKContent-Type: application/json
...
{
// 新增接收人ID
"webhookid": xxx
}
3.5.2 修改接收人
请求
// webhookid:{必填} 接收人IDPUT /product/webhooks/:webhookid HTTP/1.1
Authorization: Bearer xxx
...
{
// 可提交的参数跟 "添加接收人" 接口一样,不传的参数表示不修改
...
}
响应
HTTP/1.1 204 No Content...
3.5.3 删除接收人
请求
// webhookid:{必填} 接收人IDDELETE /product/webhooks/:webhookid HTTP/1.1
Authorization: Bearer xxx
...
响应
HTTP/1.1 204 No Content...
3.5.4 获取接收人列表
请求
/*page: [选填,默认 1] 页码
pagesize: [选填,默认 20] 每页条数
*/
GET /product/webhookpages?page=1&pagesize=20 HTTP/1.1
Authorization: Bearer xxx
...
响应
HTTP/1.1 200 OKContent-Type: application/json
...
{
// 当前页数
"page": 1,
// 每页条目
"pagesize": 20,
// 总条数
"rowcount": 1,
// 列表数据
"list":[
{
// 接收人ID
"webhookid": xxx,
// 用户ID
"userid": xxx,
// 接收人名称
"name": "xxx",
// 类型
"type": "xxx",
// 推送地址
"webhook": "xxx",
// 密钥
"secret": null,
// 接收状态 0:关闭 1:开启
"state": 1,
// 创建时间
"createtime": "2020-10-19 15:37:13"
}
]
}
3.5.5 添加告警策略
请求
POST /product/notification HTTP/1.1Authorization: Bearer xxx
...
{
// {必填} 告警设备sn
"source": [
"xxx"
],
// {必填} 告警选项
"option": [
{
// 类型 0:设备上线/离线状态,1:网络状态
"type": 0,
// 级别 0:一般 1:严重
"grade": 1,
/* 选项
type=0时,
// on:设备上线,off:设备离线
"op": ["on", "off"]
type=1时,
// 检测主机名或者ip
"hosts": [
"114.114.114.114",
"www.oray.com"
],
// 超时时间(超时未回复视为丢包,单位秒)
"timeout": 3,
// 发包数量
"send_count": 6,
// 丢包率
"max_loss_rate": 49,
// 发包间隔
"send_interval": 3,
// 测试间隔
"test_interval": 60,
// 连续超时次数
"max_failed_count": 3
*/
"options": {
"op": ["on", "off"]
}
}
],
// {必填} 接收人ID,webhookid
"target": [
88
]
}
响应
HTTP/1.1 200 OKContent-Type: application/json
...
{
// 新增告警策略ID
"settingid": 3
}
3.5.6 修改告警策略
请求
// settingid:{必填} 告警策略IDPUT /product/notifications/:settingid HTTP/1.1
Authorization: Bearer xxx
...
{
// {必填} 告警选项,具体解释见:"添加告警策略" 接口
"option": [
{
// 类型 0:设备上线/离线状态,1:网络状态
"type": 0,
// 级别 0:一般 1:严重
"grade": 1,
// 选项
"options": {
"op": ["on", "off"]
}
}
]
}
响应
HTTP/1.1 204 No Content...
3.5.7 删除告警策略
请求
// settingid:{必填} 告警策略IDDELETE /product/notifications/:settingid HTTP/1.1
Authorization: Bearer xxx
...
响应
HTTP/1.1 204 No Content...
3.5.8 获取告警策略列表
请求
/*page: [选填,默认 1] 页码
pagesize: [选填,默认 20] 每页条数
*/
GET /product/notificationpages?page=1&pagesize=20 HTTP/1.1
Authorization: Bearer xxx
...
响应
HTTP/1.1 200 OKContent-Type: application/json
...
{
// 当前页数
"page": 1,
// 每页条目
"pagesize": 20,
// 总条数
"rowcount": 1,
// 列表数据
"list": [
{
// 设置ID
"settingid": 1,
// 用户ID
"userid": xxx,
// 设备SN
"sn": "xxx",
// 接收人ID
"webhookid": "xxx",
// 告警项数量
"optioncount": 1,
// 型号
"model": "X5-4253",
// 路由器类型 1:普通版,2:渠道版,3:项目版,4:嵌入式
"modeltype": 1,
// 备注
"memo": null,
// 接收人名称
"webhookname": "xxx",
// 创建时间
"createtime": "2021-04-13 11:32:06"
}
]
}
3.5.9 删除告警信息
请求
// messageid:{必填} 告警消息IDDELETE /product/notification-messages/:messageid HTTP/1.1
Authorization: Bearer xxx
...
响应
HTTP/1.1 204 No Content...
3.5.10 获取告警信息列表
请求
/*page: [选填,默认 1] 页码
pagesize: [选填,默认 20] 每页条数
*/
GET /product/notification-messagepages?page=1&pagesize=20 HTTP/1.1
Authorization: Bearer xxx
...
响应
HTTP/1.1 200 OKContent-Type: application/json
...
{
// 当前页码
"page": 1,
// 每页条数
"pagesize": 20,
// 总条数
"rowcount": 1,
// 列表数据
"list": [
{
// 消息ID
"messageid": 2,
// 用户ID
"userid": xxx,
// 路由器SN
"sn": "xxx",
// 类型 0:设备上线/离线状态,1:网络状态
"type": 0,
// 级别 0:一般 1:严重
"grade": 1,
// 消息内容
"content": "上线",
// 是否已读
"isread": true,
// 路由器型号
"model": "X5-4253",
// 路由器当前备注
"memo": null,
// 创建时间
"createtime": "2021-04-15 14:15:27"
}
]
}
3.6 企业+带宽设置
3.6.1 添加带宽设置
请求
PUT /product/bandwidth HTTP/1.1Content-Type: application/json; charset=utf-8
Authorization: Bearer xxx
...
{
// {必填} 组网成员,对应 /network/members 接口的member
"member": "xxx",
// {必填} 分配的带宽数
"bandwidth": 10
}
响应
HTTP/1.1 201 Created...
3.6.2 修改带宽设置
请求
// exclusiveid:{必填} 带宽设置IDPUT /product/bandwidths/:exclusiveid HTTP/1.1
Content-Type: application/json; charset=utf-8
Authorization: Bearer xxx
...
{
// {必填} 组网成员,对应 /network/members 接口的member
"member": "xxx",
// {必填} 分配的带宽数
"bandwidth": 10
}
响应
HTTP/1.1 204 No Content...
3.6.3 删除带宽设置
请求
// exclusiveid:{必填} 带宽设置IDDELETE /product/bandwidths/:exclusiveid HTTP/1.1
Content-Type: application/json; charset=utf-8
Authorization: Bearer xxx
...
响应
HTTP/1.1 204 No Content...
3.3.4 获取带宽设置列表
请求
GET /product/bandwidths HTTP/1.1Authorization: Bearer xxx
...
响应
HTTP/1.1 200 OKContent-Type: application/json
...
[
{
// 带宽设置ID
"exclusiveid": 1,
// 用户ID
"userid": xxx,
// 组网ID
"networkid": xxx,
// 网络名称
"networkname": "xxx",
// 成员
"member": "xxx",
// 成员备注
"clientmemo": "KNT-AL10",
// 带宽
"bandwidth": 10,
// 状态 (1为正常,0为超总带宽,需重新设置)
"state": 1,
// 创建时间
"createtime": "2021-03-19 14:32:12"
}
]
3.7 组网大屏
3.7.1 获取成员链路状态
请求
/*networkid: {必填} 组网ID
member: [选填] 成员,指定查某个成员时候的链路状态才需要传,缺省则查全部
*/
GET /product/network/:networkid/track-links?member=xxx HTTP/1.1
Authorization: Bearer xxx
...
响应
HTTP/1.1 200 OKContent-Type: application/json
...
{
// key 为 /network/members 中的 clientid
// value 为 0:TCP转发,1:P2P,2:P2P转发(强制转发),3:断开,4:未知
"6377595": {
"6377678": 1,
"6377612": 2
},
"6377678": {
"6377595": 3,
"6377612": 3
},
"6377612": {
"6377595": 4,
"6377678": 3
}
}
3.7.2 获取链路告警日志
请求
/*networkid: {必填} 组网ID
page: [选填,默认 1] 页码
pagesize: [选填,默认 20] 每页条数
*/
GET /product/log/track-links HTTP/1.1
Authorization: Bearer xxx
...
响应
HTTP/1.1 200 OKContent-Type: application/json
...
{
// 当前页码
"page": 1,
// 每页条数
"pagesize": 20,
// 总条数
"rowcount": 1,
// 日志数据
"loglist": [
{
// 日志ID
"logid": xxx,
// 用户ID
"userid": xxx,
// 组网ID
"networkid": xxx,
// 源成员
"source": "xxx",
// 源成员备注
"sourcememo": "xxx",
// 目标成员
"target": "xxx",
// 目标成员备注
"targetmemo": null,
// 原客户端类型
"platform": "android",
// 目标客户端类型
"targetplatform": "windows",
// 连接状态 0:TCP转发 1:P2P 2:P2P转发(强制转发)3:断开
"state": 2,
// 丢包率
"packetloss": 0,
// 延迟
"delay": 0,
// 抖动
"shake": 0,
// 创建时间
"createtime": "2020-12-08 17:42:18"
}
]
}
3.8 日志管理
3.8.1 获取成员上下线日志
请求
/*keyword: [选填] 查询关键字,
membertype: [选填,默认全部] 成员类型 0:硬件成员 1:访问端成员 2:服务器端成员
page: [选填,默认 1] 页码
pagesize: [选填,默认 20] 每页条数
starttime: [选填] 开始日期
endtime: [选填] 结束日期
*/
GET /product/log/onoff?keyword=123&membertype=1&page=1&pagesize=20&starttime=2021-03-20&endtime=2021-03-27 HTTP/1.1
Authorization: Bearer xxx
...
响应
HTTP/1.1 200 OKContent-Type: application/json
...
{
// 当前页码
"page": 1,
// 每页条数
"pagesize": 20,
// 总条数
"rowcount": 1,
// 日志数据
"loglist": [
{
// 用户ID
"userid": xxx,
// 组网ID
"networkid": xxx,
// 组网名称
"networkname": "",
// 成员名称
"member": "123xxx",
// 成员备注
"membermemo": null,
// 成员类型 0:硬件成员 1:访问端成员 2:服务器端成员
"membertype": 1,
// 状态 IN为上线,其他为下线
"action": "IN",
// 客户端IP
"clientip", "xxx",
// 客户端类型
"clienttype": "Windows"
// 客户端版本
"clientver": "4.6",
// 状态名称
"actionname": "上线",
// 成员类型名称
"membertypename": "软件成员",
// 创建时间
"createtime": "2021-03-20 17:52:26"
}
]
}
3.8.2 获取管理员操作日志
请求
/*page: [选填,默认 1] 页码
pagesize: [选填,默认 20] 每页条数
starttime: [选填] 开始日期
endtime: [选填] 结束日期
*/
GET /product/log/vpn?page=1&pagesize=20&starttime=2021-03-20&endtime=2021-03-27 HTTP/1.1
Authorization: Bearer xxx
...
响应
HTTP/1.1 200 OKContent-Type: application/json
...
{
// 当前页码
"page": 1,
// 每页条数
"pagesize": 20,
// 总条数
"rowcount": 1,
// 日志数据
"loglist": [
{
// 用户ID
"userid": xxx,
// 操作内容
"memo": "xxx",
// IP地址
"ip": "183.233.96.66",
// 创建时间
"createtime": "2021-03-23 10:43:36"
}
]
}
3.8.3 获取成员操作日志
请求
/*membertype: [选填,默认全部] 成员类型 0:硬件成员 1:访问端成员 2:服务器端成员
page: [选填,默认 1] 页码
pagesize: [选填,默认 20] 每页条数
starttime: [选填] 开始日期
endtime: [选填] 结束日期
*/
GET /product/log/operate?membertype=1&page=1&pagesize=20&starttime=2021-03-20&endtime=2021-03-27 HTTP/1.1
Authorization: Bearer xxx
...
响应
HTTP/1.1 200 OKContent-Type: application/json
...
{
// 当前页码
"page": 1,
// 每页条数
"pagesize": 20,
// 总条数
"rowcount": 1,
// 日志数据
"loglist": [
{
// 成员名称
"member": "xxx",
// 成员类型 0:硬件成员 1:访问端成员 2:服务器端成员
"membertype": 1,
// 成员备注
"membermemo": "xxx",
// 硬件型号,只有硬件成员有
"membermodel": null,
// 用户ID
"userid": xxx,
// 操作内容
"memo": "xxx",
// IP地址
"ip": "xxx",
// 操作时间
"createtime": "2020-10-14 13:53:26"
}
]
}
文档内容是否对您有帮助?
如果遇到产品相关问题,您可咨询 在线客服 寻求帮助。
本文导读
蒲公英开放 API 文档
1. 开发者账号
2. 接口简介
3. 接口详情