新闻资讯

蒲公英管理端API文档

2021-03-31

蒲公英开放 API 文档

  1. 开放者账号
  2. 接口简介
  3. 接口详情

1. 开发者账号

使用 PGYAPI 之前,你需要先拥有一个 Oray 帐户,可以通过https://www.oray.com的右上角的注册按钮进行注册。如图:

img

拥有帐户后,进入http://open.oray.com(开放平台的网址),进入开发者认证页面,填写必要资料并提交开发者申请。如图:

img

注册后,进入我的应用页面创建应用,创建成功后,在应用详情中看到自己的APP ID,APP KEY和服务器地址,有了这些信息,就可以使用PGYAPI来开发自己的应用了。如图:

img

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.1
Content-Type: application/json; charset=utf-8
...

{
    // {必填} 贝锐账号
    "account": "xxx",

    // {必填} 贝锐账号密码md5格式
    "password": "xxx",

    // {必填} 开放者申请的应用ID
    "appid": "xxx",

    // {必填} 开发者申请的应用密钥
    "appsecret": "xxx"
}

响应

HTTP/1.1 200 OK
Content-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.1
Content-Type: application/json; charset=utf-8
X-ClientID: iXo0jmpBtB8OkbY93G9P
...

{
    // {必填} 授权凭证
    "access_token": "xxx",

    // {必填} 刷新授权凭证
    "refresh_token": "xxx"
}

响应

HTTP/1.1 200 OK
Content-Type: application/json
...

{
    // 授权凭证,调用需授权的接口时使用
    "access_token": "xxx",

    // 刷新授权凭证
    "refresh_token": "xxx",

    // 暂无用可忽略
    "refresh_expires": xxx
}

3.2 组网管理

3.2.1 获取组网列表

请求

GET /product/network/list HTTP/1.1
Authorization: Bearer xxx
...

响应

HTTP/1.1 200 OK
Content-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.1
Content-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 OK
Content-Type: application/json
...

{
    // 生成的组网ID
    "networkid": xxx
}
3.2.3 修改组网

请求

POST /product/network/update HTTP/1.1
Content-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:{必填} 组网ID
DELETE /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:{必填} 组网ID
PATCH /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.1
Content-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:{必填} 组网ID
GET /product/network/members/:networkid HTTP/1.1
Authorization: Bearer xxx
...

响应

HTTP/1.1 200 OK
Content-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.1
Content-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.1
Content-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.1
Content-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.1
Content-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 OK
Content-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.1
Authorization: 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 OK
Content-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.1
Content-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.1
Content-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.1
Content-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.1
Content-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 OK
Content-Type: application/json
...

{
    // 生成的UID/SID
    "vpnids": [xxx],

    // 成功数量
    "success": 1,

    // 失败数量
    "fail": 0
}
3.3.7 重置UID/SID

请求

POST /product/vpnid/reset HTTP/1.1
Content-Type: application/json; charset=utf-8
Authorization: Bearer xxx
...

{
    // UID/SID,对应 /vpnid/build 生成的单个 vpnids
    "vpnid": "xxx"
}

响应

HTTP/1.1 200 OK
Content-Type: application/json
...

{
    // 重置后的密码
    "password": "xxx"
}
3.3.8 删除UID/SID

请求

DELETE /product/vpnid/delete HTTP/1.1
Content-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.1
Content-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:{必填} 设备SN
POST /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.1
Content-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.1
Authorization: Bearer xxx
...

响应

HTTP/1.1 200 OK
Content-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.1
Authorization: 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 OK
Content-Type: application/json
...

{
    // 新增接收人ID
    "webhookid": xxx
}
3.5.2 修改接收人

请求

// webhookid:{必填} 接收人ID
PUT /product/webhooks/:webhookid HTTP/1.1
Authorization: Bearer xxx
...

{
    // 可提交的参数跟 "添加接收人" 接口一样,不传的参数表示不修改
    ...
}

响应

HTTP/1.1 204 No Content
...
3.5.3 删除接收人

请求

// webhookid:{必填} 接收人ID
DELETE /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 OK
Content-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.1
Authorization: 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 OK
Content-Type: application/json
...

{
    // 新增告警策略ID
    "settingid": 3
}
3.5.6 修改告警策略

请求

// settingid:{必填} 告警策略ID
PUT /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:{必填} 告警策略ID
DELETE /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 OK
Content-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:{必填} 告警消息ID
DELETE /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 OK
Content-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.1
Content-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:{必填} 带宽设置ID
PUT /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:{必填} 带宽设置ID
DELETE /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.1
Authorization: Bearer xxx
...

响应

HTTP/1.1 200 OK
Content-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 OK
Content-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 OK
Content-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 OK
Content-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 OK
Content-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 OK
Content-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"
        }
    ]
}
上一篇: 下一篇:
新闻资讯
热门专题
最新专题
友情链接