通用测试地址:https://compliance-test.pinguo.cn 正式接入地址:联系管理员
1、http状态码=200时,响应body为接口对应响应数据
2、http状态码!=200时,响应body统一为如下结构
{
"code":403,
"message":"invalid authorization token"
}3、http状态码=450时,表示响应体的code值为自定义状态码,具有业务含义
| 状态码 | 描述 |
|---|---|
| 200 | 接口正常响应 |
| 400 | 请求参数错误 |
| 402 | 余额不足 |
| 403 | 身份认证Token无效 |
| 404 | 资源找不到 |
| 500 | 服务器异常 |
| 502 | 网关错误 |
注:以下所有接口请求均需要在Header中设置Authorization:Bearer JWTToken
POST /v1/token/jwt
header
"Content-Type":"application/json"
请求参数
{
"token":"b49dadca020b4a502aecd9e439290b8ffe21b9af1146c32abd17875b255528a8:wolqCUc8jHaeJdmgWnqrmJ2H:1694678794:72000:pg-xhs-go"
}| 字段 | 类型 | 描述 |
|---|---|---|
| token | string | 用于 JWT 签发的token字符串,计算方式见下 |
请求token是一个以冒号(:)分隔的字符串值,其基本形式为:
sig:AK:时间戳:JWT可用时长:JWT可用模型标识
其中:
- sig 为信息摘要,用于校验请求数据是否被修改
- 时间戳为当前时间的秒级时间戳,若请求时间戳与服务器时间相差过大将拒绝签发JWT
- JWT可用时长标识签发的JWT可以在多少秒内使用(目前最长支持3天)
- JWT可用模型标识限定了该JWT允许调用的模型,多个模型标识用逗号分隔
将 AK,当前时间戳,JWT 可用时长(单位为秒),JWT 可调用的模型进行字符串拼接,以冒号连接多个值,得到待签名数据,如:
info = wolqCUc8jHaeJdmgWnqrmJ2H:1694678794:72000:pg-xhs-go
使用 sha256 算法计算基本信息的摘要作为请求签名,其中 SK 作为 sha256 计算的 key。
hash_hmac("sha256", info, SK) // 输出16进制字符串
示例中的内容计算出的值为:
b49dadca020b4a502aecd9e439290b8ffe21b9af1146c32abd17875b255528a8
连接签名字符串和待签名的数据,以得到完整的请求 token
b49dadca020b4a502aecd9e439290b8ffe21b9af1146c32abd17875b255528a8:wolqCUc8jHaeJdmgWnqrmJ2H:1694678794:72000:pg-xhs-go
响应结果
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhayI6IndvbHFDVWM4akhhZUpkbWdXbnFybUoySCIsIm1zIjpbeyJtIjoicGcteGhzLWdvIiwicnMiOjEwLCJybSI6MH1dLCJ2dCI6IjE2OTQ1MzQ0MDAtMTg5OTA0MzIwMCIsImV4cCI6MTY5NDc1MDgxNSwiaWF0IjoxNjk0Njc4ODE1LCJpc3MiOiJwaW5ndW8uYWktcGxhdGZvcm0ifQ.6ID3yx-jAF-D-Gyujvxc8GmpAIjdOIe0g1WHwkyegp0"
}具体算法参考JWT Token接口,请求需替换当前
POST /v1/upload/token
header
"Content-Type":"application/json"
"Authorization":"Bearer 获取的jwttoken"
请求参数
{
"keys":["test001.jpg"]
}响应结果
{
"tokens": [
{
"key": "test001.jpg",
"token": "IAM-Ej1TW2KrVqRIOkIqZVEPta_yLmnUc8-1LySvtWCb:JiXTaUGjyzBGjlRwOSY0J8s8U3M=:eyJzY29wZSI6InFhLWMzNjA6dGVzdDAwMS5qcGciLCJkZWFkbGluZSI6MTY5NDY4MDY5OCwiaW5zZXJ0T25seSI6MSwicmV0dXJuQm9keSI6IntcIm1pbWVUeXBlXCI6JChtaW1lVHlwZSksXCJ3aWR0aFwiOiQoaW1hZ2VJbmZvLndpZHRoKSxcImhlaWdodFwiOiQoaW1hZ2VJbmZvLmhlaWdodCksXCJrZXlcIjpcIiQoa2V5KVwiLFwiaGFzaFwiOlwiJChldGFnKVwiLFwic2l6ZVwiOiQoZnNpemUpLFwiYnVja2V0XCI6XCIkKGJ1Y2tldClcIixcIm5hbWVcIjpcIiQoeDpuYW1lKVwifSIsImZzaXplTGltaXQiOjEwNDg1NzYsIm1pbWVMaW1pdCI6ImltYWdlL2pwZWcifQ=="
}
],
"baseURL": "https://cdn-qa-all.c360dn.com"
}| 字段 | 类型 | 描述 |
|---|---|---|
| token | string | qiniu文件上传token(只能上传jpg、1MB以内的的图片、30分钟有效期) |
| baseURL | string | 图片访问地址=baseURL/图片key |
POST /v1/image/task
header
"Authorization":"Bearer 获取的jwttoken"
"Content-Type":"application/json"
请求参数 body json
{
"keys":["test001.jpg"]
}| 字段 | 类型 | 描述 |
|---|---|---|
| keys | stringArray | 图片key集合(七牛的图片key) |
响应结果 body json
{
"data": [
{
"taskID": "6502c60b519e34746a3089a1",
"key": "test001.jpg"
}
]
}| 字段 | 类型 | 描述 |
|---|---|---|
| taskID | string | 图片处理的任务ID |
| key | string | 图片key |
GET /v1/image/watermark/{id:string}
header
"Authorization":"Bearer 获取的jwttoken"
请求参数 路径参数
| 字段 | 类型 | 描述 |
|---|---|---|
| id | string | 图片处理的任务ID |
响应结果
{
"taskStatus": "done",
"taskMessage": "完成",
"image": "https://cdn-qa-all.c360dn.com/watermark/f485b7e80593435dd75aefd2163a7eef.jpg",
"detectStatus": "pass",
"detectMessage": []
}| 字段 | 类型 | 描述 |
|---|---|---|
| taskStatus | enumeration | 任务状态 init:初始化、running:处理中、done:处理完成、failed:处理失败 |
| taskMessage | string | 任务状态所对应的消息 |
| image | string | 图片key |
| detectStatus | enumeration | 检测状态 pass:通过、failed:不通过、suspected:存疑 |
| detectMessage | stringArray | 检测状态所对应的纤细 |
此接口返回无水印图后会执行扣次数逻辑(同一个id只会扣一次)
POST /v1/image/unwatermark/{id:string}
header
"Content-Type":"application/json"
"Authorization":"Bearer 获取的jwttoken"
请求参数 路径参数
| 字段 | 类型 | 描述 |
|---|---|---|
| id | string | 图片处理任务的唯一标识ID |
响应结果
与获取水印图的响应结果一致
