EventHub
CITV 合规业务接口
CITV 合规业务接口定义与接入说明
CITV 合规业务接口
本文档定义了 SaaS 平台向 CITV 开放的合规业务接口,用于封禁特定内容。
一、接口概要
1. 接口开发与开放
- 本文档所列明的接口,均需 SaaS 平台客户自行开发,并向 CITV 开放
- 为了接口安全,可将 CITV IP 地址列表加入接口访问白名单
2. 接口地址 BaseUrl
建议在请求路径中使用 v2 以区分 api 版本
范例:https://saas.com/api/v2
3. 接口一览
| 名称 | 接口 | 说明 |
|---|---|---|
| 封禁 | ban | 触发限时整改、即刻封禁操作 |
二、请求规则
1. 必填请求头
客户端请求必须包含以下 HTTP 头信息:
| 参数名称 | 必填 | 说明 |
|---|---|---|
| token | 是 | 客户端生成的签名令牌,有效期 10 分钟 |
| timestamp | 是 | 请求时间戳(Unix 时间戳格式,13 位) |
| appid | 是 | 应用唯一标识,由 CITV 方提供 |
2. 签名生成方式
按照固定格式拼接以下参数生成签名源串:
appid=配置中的 AppIdtimestamp=生成的时间戳key=私钥,由接口提供方颁发
签名源串格式示例:
appid=your_app_id×tamp=1630000000000&key=your_api_key对签名源串进行 MD5 加密处理:
- 将源串转换为 UTF-8 字节数组
- 使用 MD5 算法计算哈希值
- 将哈希值转换为 16 进制字符串表示
- 将所有字符转换为大写
TypeScript 示例
import crypto from "crypto";
function generateToken(appid: string, timestamp: number, key: string): string {
const signString = `appid=${appid}×tamp=${timestamp}&key=${key}`;
return crypto
.createHash("md5")
.update(signString, 'utf8')
.digest("hex")
.toUpperCase();
}3. 错误处理
当鉴权失败时,服务端会返回统一格式的错误响应:
{
"isok": false,
"msg": "错误描述",
"code": 错误码,
"dataObj": null
}常见错误码说明:
| 错误码 | 说明 |
|---|---|
| -100 | 签名为空 |
| -101 | 时间戳为空 |
| -102 | AppId 为空 |
| -104 | AppId 非法 |
| -103 | 签名验证失败 |
三、接口列表
1. 封禁特定内容
描述: 对特定内容实行限时整改、封禁、解封等操作
请求方式: POST
请求路径: /ban
请求参数
| 参数名 | 类型 | 必填 | 默认值 | 描述 |
|---|---|---|---|---|
| ccid | string | 是 | 封禁专用(全局唯一)ID | |
| casn | string | 是 | CITV 内部审核单号 | |
| action | int | 是 | -1=立即封禁1~24=限期(小时)整改127=解封 | |
| code | int | 是 | 处置代码:0=接口测试1=涉黄2=涉暴3=涉政4=应监管部门要求5=应协同部门要求10=版权纠纷11=诱导打赏12=夸大宣传13=涉老欺诈14=诈骗嫌疑15=投诉高发100=重点防范 | |
| message | string | 是 | CITV 通知文本 |
请求示例
{
"ccid": "cc123456",
"casn": "ca1234567890",
"action": -1,
"code": 4,
"message": "详情已发送邮件通知到:abc@company.com"
}响应参数
| 参数名 | 类型 | 描述 |
|---|---|---|
| ticket | string | 处理追踪编号 |
响应示例
{
"isok": true,
"msg": "",
"code": 0,
"dataObj": {
"ticket": "NzajVXCK6vxsiVyh7y"
}
}