基本格式
Pano Cloud提供了一组RESTful API用于申请Token、录制、CDN推流等。HTTP请求示例:
POST /path/to/resource
Host: api.pano.video
Content-Type: application/json
Authorization: PanoSign <PanoSign>
Tracking-Id: ef9b2acc8e1f4d598090eb6d9cbe8596
{
...... // JSON string
}
HTTP协议
必须为HTTPS协议,不支持HTTP协议。
HTTP method
遵循RESTful最佳实践,使用标准的HTTP 方法来对应 CRUD 操作:
- GET:读取(Read)
- POST:新建(Create)
- PUT:更新(Update)
- PATCH:更新(Update),通常是部分更新
- DELETE:删除(Delete)
根据 HTTP 规范,动词一律大写。
Host
Host必须为api.pano.video
。
Content-Type
Content-Type必须为application/json
,表示请求和响应都为JSON数据格式。
Authorization
所有请求里都必须带上Authorization请求头,类型为PanoSign
,后面带上具体的PanoSign值。Pano服务器端使用PanoSign进行权限校验,关于PanoSign的格式和如何校验PanoSign请参考权限控制。
下面是一个Authorization头的例子:
Authorization: PanoSign e7d3fb36131345f0a922b27c8c5c2019.1570498816.c31f97d3797de14f9d8e2c17f3ab165f070f9dc6547aadb5e9706763dc29a0c8
Tracking ID
这是一个可选的请求头,但是建议开发者在请求头中带上 Tracking-Id 方便后续协助排查问题,值可以为 UUID 等唯一值。
返回状态码
HTTP 状态码是一个三位数,分成五个类别。
- 1xx:相关信息
- 2xx:操作成功
- 3xx:重定向
- 4xx:客户端错误
- 5xx:服务器错误
HTTP状态码 | 错误码 | 描述 |
---|---|---|
200 | 正常返回 | |
400 | App.Name.Duplicated | 应用名称重复 |
403 | Exceed.Limit | 新增超出限制 |
403 | Callback.Error | 回调不可达 |
403 | Perm.NotAllowed | 操作不允许,请检查功能是否开通 |
403 | Authorization.Type.Invalid | HTTP请求头Authorization类型不对 |
403 | Authorization.Signature.Invalid | HTTP请求头Authorization 值有误,请检查signature签名信息 |
403 | Org.Status.Error | 公司信息状态不对,请检查是否欠费 |
403 | App.Status.Error | 应用状态不对 |
403 | Invalid.Parameter.Value | 请求参数不合法,请检查是否按文档规定传递参数 |
404 | InvalidEntity.NotFound | 信息找不到,请查看入参是否正确 |
406 | Sign.Error | 请检查Authorization的credentials 部分 是否按照规定生成签名信息 |
500 | Server.Error | 服务器内部错误 |
每个API的详细格式请参考对应文档,部分请求出现错误时的返回示例如下:
403 AuthorizationTypeError
{
"error": "Authorization.Type.Invalid",
"msg": "your authorization type is invalid"
}
403 AuthorizationSignatureError
{
"error": "authorization.Signature.Invalid",
"msg": "your authorization signature is invalid"
}
403 AppStatusError
{
"error": "App.Status.Error",
"msg": "your app status is not correct"
}
403 OrgStatusError
{
"error": "Org.Status.Error",
"msg": "your organization status is abnormal"
}
403 PermNotNotAllowed
{
"error": "Perm.NotAllowed",
"msg": "The function needs to be opened, please contact technical support"
}
404 EntityNotFoundError
{
"error": "InvalidEntity.NotFound",
"msg": "could not find this entity"
}
406 AppSecretEmptyError
{
"error": "App.Secret.Empty",
"msg": "your appSecret is empty"
}
406 PanoSignError
{
"error": "Sign.Error",
"msg": "fix your signature value"
}
500 ServerError
{
"error": "Server.Error",
"msg": "server error, please contact the administrator"
}