本文档主要是介绍当贝点金的开放接口,目的是满足传媒类公司的广告系统对接当贝点金系统的需求。如果对接过程中出现问题,请参照最后的异常说明检查数据或联系我们及时处理。如您有新的需求和建议,请告知我方,我们将根据自身情况完善服务。
| 参数名 | 类型 | 描述 | 说明 |
|---|---|---|---|
| id | int | 项目编号 | |
| name | String | 项目名称 | |
| position | int | 项目类型 | 参数:1.开屏广告 2.屏保广告 3.贴片广告 4.暂停广告 5.角标广告 |
| adType | int | 素材类型 | 参数:1.图片 2.视频 3.GIF |
| clickable | int | 是否可点击 | 默认为0-不可点击。如果为点击跳转广告,值为1,同时填写clickInfo,详见下面表格 |
| price | int | CPM单价 | 单位(分) |
| budget | int | 总预算 | 单位(分) |
| status | int | 广告状态 | 参数说明: 0.运行中 1.已结束 2.暂停中 3.待审核 4.未通过审核 |
| materials | Array | 素材地址 | 广告物料的地址 |
| startDate | Date | 开始日期 | 格式yyyy-MM-dd |
| endDate | Date | 结束日期 | 格式yyyy-MM-dd |
clickInfo参数如下:
| 参数名 | 类型 | 属性 | 描述 | 说明 |
|---|---|---|---|---|
| class | String | 选填 | 类名 | 和actionName、h5Name互斥,三者必选一 |
| actionName | String | 选填 | android action | 和class、h5Name互斥,三者必选一 |
| packageName | String | 必填 | 应用包名 | |
| params | String | 选填 | 参数 | 参数之间用引文分号隔开,最后一个不加分号。例id:402878;from_ad:true |
| h5Name | String | 选填 | H5页面名称 | 和class、actionName互斥,三者必选一 |
| h5Prefix | String | 选填 | H5URL前缀 | |
| h5Url | String | 选填 | H5的URL | 需要加密处理 |
| h5Suffix | String | 选填 | H5URL后缀 |
clickInfo拼接如下:
class:,actionName:com.tv.kuaisou.action.DetailActivity,packageName:com.tv.kuaisou,params:id:578549;from_ad:true,h5Name:,h5Prefix:,h5Url:,h5Suffix:
| 参数名 | 类型 | 描述 | 说明 |
|---|---|---|---|
| campaignId | int | 项目ID | 广告位所在项目ID |
| placementId | int | 广告位ID | 广告位ID |
| city | String | 地区定向 | 默认为0-不限,如果指定投放城市,请参考城市列表 |
| freqType | int | 频控类型 | 默认为0-不限,1-app频控,2-设备维度频控。同一个广告项目下所有的广告位,只能有一种频控类型。 |
| dailyFreq | int | 每日最大展示频率 | 默认为0-不限,不能和totalFreq共同设置 |
| totalFreq | int | 周期最大展示频率 | 默认为0-不限。不能和dailyFreq共同设置 |
| status | int | 广告位状态 | 0上线 1暂停 |
| monitorName | String | 第三方监控者名称 | 例:MiaoZhen,Admaster,XiuShi |
| impUrl | String | 曝光监控URL | 第三方曝光监控代码 |
| clickUrl | String | 点击监控URL | 第三方点击监控代码 |
| 参数名 | 类型 | 描述 | 说明 |
|---|---|---|---|
| id | int | 应用ID | 应用ID |
| name | String | 应用名称 | 应用名称 |
| 参数名 | 类型 | 描述 | 说明 |
|---|---|---|---|
| id | int | 参数ID | 系统参数编号 |
| name | String | 参数名称 | 系统参数名称 |
在所有接口的请求过程中,除了接口要求的参数之外,下面表格中的参数也都必须携带,否则无法通过校验。
| 参数名 | 类型 | 描述 | 说明 |
|---|---|---|---|
| appKey | String | 必填 | 申请获取的key |
| timestamp | String | 必填 | 发起请求时的系统时间戳,如1489980371111 |
| signature | String | 必填 | 计算获得的签名 |
签名规则:
URL + 方法路径 + "\n" + 排序后的参数
签名步骤:
- 所有参数按照名字进行升序排列
- 根据签名规则,构造被签名串
- 计算签名
- 如果参数中出现空格,以“%20”代替
- 使用HmacSHA256算法获取签名,加密秘钥APP_SECRET和appKey是唯一对应,联系后台申请获取
- 将签名进行Base64编码,使用“+”替换其中的空格
- 将编码后的结果进行Url编码,获取最终签名值
- 构造URL请求
例:获取指定项目信息:
参数列表:
{"timestamp": 1489986317971,"appKey": "1887d011e00163e0","id": 2019,}
按参数名进行升序排序,构造参与加密字符串,结果如下:
https://eopenapi.dangbei.com/v2/campaign/info.do\nappKey=1887d011e0016ae1&id=2190×tamp=1518052373456
对上面字符串加密,获取签名:
gQYtPAlYDIx%2F21kSutTMJbDYS3NRoiz6l12ey7NKi14%3D
根据上面获取到的签名,生成最终的URL:
https://eopenapi.dangbei.com/v2/campaign/info.do\nappKey=1887d011e0016ae1&id=2190×tamp=15180523734561&signature=gQYtPAlYDIx%2F21kSutTMJbDYS3NRoiz6l12ey7NKi14%3D
访问地址
请求方式
GET
| 参数名 | 类型 | 长度 | 属性 | 描述 |
|---|---|---|---|---|
| pageIndex | int | - | 选填 | 起始页码,默认为1 |
| pageSize | int | - | 选填 | 每页个数,默认为10 |
| sort | String | 15 | 选填 | 排序字段,如id。前面加负号,代表倒序排列,如"-id",只能选择一个字段 |
{"code": 0,"message": "success","result": {"totalRecordNo": 711,"totalPageNo": 143,"campaigns": [{"adType": 1,"endDate": "2017-05-28","price": "1300","clickable": 0,"name": "丝蕴","id": 1291,"position": 1,"clickInfo": "","startDate": "2017-04-08","budget": "100000000","status": 1},{"adType": 1,"endDate": "2017-04-25","price": "1000","clickable": 0,"name": "唯品会","id": 1059,"position": 1,"clickInfo": "","startDate": "2017-04-19","budget": "50000000","status": 1}]}}
| 名称 | 类型 | 描述 |
|---|---|---|
| totalRecordNo | int | 总记录数 |
| totalPageNo | int | 总页数 |
| id | int | 活动id |
| name | String | 活动名称 |
| position | int | 广告位置 |
| adType | int | 物料类型 |
| price | int | CPM单价(分) |
| budget | int | 总预算(分) |
| clickable | int | 是否可点击 |
| clickInfo | String | 跳转信息 |
| status | int | 广告状态 |
| startDate | String | 开始日期 |
| endDate | String | 结束日期 |
访问地址
请求方式
GET
| 参数名 | 类型 | 长度 | 属性 | 描述 |
|---|---|---|---|---|
| id | int | - | 必填 | 项目ID |
{"code": 0,"message": "success","result": {"adType": 1,"endDate": "2017-03-21","price": 1500,"clickable": 1,"name": "佳沛奇异果","id": 925,"position": 1,"clickInfo": "class:,actionName:com.tv.kuaisou.action.DetailActivity,packageName:com.tv.kuaisou,params:id:578549;from_ad:true,h5Name:,h5Prefix:,h5Url:,h5Suffix:","startDate": "2017-03-20","budget": 1000000,"status": 1,"materials":["http://imge.dangbei.net/advertImage/20170617/8d6b4179fa5cc77072894471040f4f53.jpg","http://imge.dangbei.net/advertImage/20170617/3af4a09617253742f663fb1bf3dda3ab.jpg"]}}
| 名称 | 类型 | 描述 |
|---|---|---|
| id | int | 活动id |
| name | String | 活动名称 |
| position | int | 广告位置 |
| adType | int | 广告类型 |
| price | int | CPM单价 |
| budget | int | 总预算 |
| clickable | int | 是否可点击 |
| clickInfo | String | 跳转参数 |
| status | int | 广告状态 |
| materials | Array | 广告素材地址 |
| startDate | String | 开始日期 |
| endDate | String | 结束日期 |
访问地址
请求方式
POST
| 参数名 | 类型 | 长度 | 属性 | 描述 |
|---|---|---|---|---|
| name | String | 30 | 必填 | 项目名称 |
| position | int | - | 必填 | 项目类型 |
| adType | int | - | 必填 | 素材类型 |
| price | int | - | 必填 | CPM单价,单位(分) |
| budget | int | - | 必填 | 总预算,单位(分) |
| clickable | int | - | 必填 | 是否可点击 |
| clickInfo | String | - | 选填 | 跳转参数 |
| startDate | Date | - | 必填 | 开始时间需大于今天(yyyy-MM-dd) |
| endDate | Date | - | 必填 | 结束时间需大于开始时间(yyyy-MM-dd) |
{"code": 0,"message": "success","result": {"campaignId": 123}}
| 名称 | 类型 | 描述 |
|---|---|---|
| campaignId | int | 项目id |
访问地址
请求方式
POST
| 参数名 | 类型 | 长度 | 属性 | 描述 |
|---|---|---|---|---|
| id | int | - | 必填 | 项目ID |
| name | String | 30 | 选填 | 项目名称 |
| startDate | Date | - | 选填 | 开始时间需大于今天(yyyy-MM-dd),审核之后不能修改起始日期 |
| endDate | Date | - | 选填 | 结束时间需大于开始时间(yyyy-MM-dd) |
{"code": 0,"message": "success","result": {"campaignId": 123}}
| 名称 | 类型 | 描述 |
|---|---|---|
| campaignId | int | 项目id |
访问地址
请求方式
POST
功能描述
为创建的广告项目上传素材。如果项目已有素材,就不能再上传。暂不支持接口修改素材。目前仅开屏广告支持多张素材,且素材必须为静态图片。其他类型广告只能上传一个素材,不同类型广告支持的素材类型格式如下表。
| 广告形式 | 单图(png/jpg/gif) | 多图(png/jpg) | 视频 (mp4) |
|---|---|---|---|
| 开屏广告 | √ | √ | √ |
| 屏保广告 | √ | ||
| 贴片广告 | √ | √ | |
| 暂停广告 | √ | ||
| 角标广告 | √ |
图片最大为500KB,尺寸1920*1080px,GIF最大为5M,视频最大为20M。
| 参数名 | 属性 | 描述 |
|---|---|---|
| campaignId | 必填 | 项目id |
| timestamp | 必填 | 时间戳 |
| material[i].data | 必填 | 素材文件 |
| material[i].dataMd5 | 必填 | 素材文件MD5 |
| material[i].cover | 必填 | 视频素材封面 |
| material[i].coverMd5 | 必填 | 视频素材封面MD5 |
参数详细说明:参数名中i表示表示素材次序,i为正整数。 各part header必须包含Content-Disposition(描述),描述中指定name为参数名、filename为文件名;header必须包含Content-Type(类型),类型为part body的MIME类型,避免乱码请指定part body的编码格式charset=UTF-8。
举例说明
传输项目id的header,参数名称:campaignId
Content-Disposition: form-data; name="campaignId",
Content-Type: text/plain; charset=UTF-8
传输第二个素材文件的header,参数名称:material[2].data,文件名:开机视频2.mp4
Content-Disposition: form-data; name="material[2].data"; filename="开机视频2.mp4",
Content-Type: video/mp4
传输第二个素材文件MD5的header,参数名称:material[2].dataMd5
Content-Disposition: form-data; name="material[2].dataMd5"
Content-Type: videotext/plain; charset=UTF-8
传输第二个素材文件封面的header,参数名称:material[2].cover,文件名:开机视频2封面.png
Content-Disposition: form-data; name="material[2].cover"; filename="开机视频2封面.png"
Content-Type: image/png
{"code": 0,"message": "success","result": {"campaignId": 123}}
| 名称 | 类型 | 描述 |
|---|---|---|
| campaignId | int | 项目id |
访问地址
请求方式
POST
功能描述
功能描述 为创建的广告项目上传素材。如果项目已有素材,就不能再上传。暂不支持接口修改素材。图标包括启动页提示图(选填)和H5页面提示图(选填)。不上传提示图的H5广告使用默认的提示图片。
| 参数名 | 属性 | 描述 |
|---|---|---|
| campaignId | 必填 | 项目id |
| timestamp | 必填 | 时间戳 |
| homeGuide | 必填 | 启动页提示图文件 |
| homeGuideMd5 | 必填 | 启动页提示图文件MD5 |
| h5Guide | 必填 | H5页面提示图文件 |
| h5GuideMd5 | 必填 | H5页面提示图文件MD5 |
各part header必须包含Content-Disposition(描述),描述中指定name为参数名、filename为文件名;header必须包含Content-Type(类型),类型为part body的MIME类型,避免乱码请指定part body的编码格式charset=UTF-8。
{"code": 0,"message": "success","result": {"campaignId": 123}}
| 名称 | 类型 | 描述 |
|---|---|---|
| campaignId | int | 项目id |
访问地址
请求方式
GET
| 参数名 | 类型 | 长度 | 属性 | 描述 |
|---|---|---|---|---|
| pageIndex | int | - | 选填 | 起始页码,默认为1 |
| pageSize | int | - | 选填 | 每页个数,默认为10 |
| sort | String | - | 选填 | 排序字段,如placementId。前面加负号,代表倒序排列,如"-placementId "。只能选择一个字段排序 |
| campaignId | int | - | 必填 | 项目ID |
{"code": 0,"message": "success","result": {"totalRecordNo": 20,"totalPageNo": 1,"campaignId": 123,"placements": [{"placementId": 1000,"city": "0","dailyFreq": 8,"totalFreq": 0,"status": 0,"monitors": [{"clickUrl": "http://click11","impUrl": "http://impl11","monitorName": "MiaoZhen"},{"clickUrl": "http://click22","impUrl": "http://impl22","monitorName": "AdMaster"}]},{"placementId": 1000,"city": "0","dailyFreq": 8,"totalFreq": 0,"status": 0,"monitors": []}]}}
| 名称 | 类型 | 描述 |
|---|---|---|
| totalRecordNo | int | 总记录数 |
| totalPageNo | int | 总页数 |
| campaignId | int | 项目id |
| placements | Arrays | 广告位信息 |
广告位placements参数:
| 名称 | 类型 | 描述 |
|---|---|---|
| placementId | int | 广告位id |
| city | String | 投放城市 |
| status | int | 广告位状态 |
| dailyFreq | int | 每日频控 |
| totalFreq | int | 周期频控 |
| monitors | Arrays | 第三方监控 |
监控者monitors参数:
| 名称 | 类型 | 描述 |
|---|---|---|
| monitorName | String | 监控者名称 |
| impUrl | String | 曝光监控代码 |
| clickUrl | String | 点击监控代码 |
访问地址
请求方式
POST
| 参数名 | 类型 | 长度 | 属性 | 描述 |
|---|---|---|---|---|
| campaignId | int | - | 必填 | 项目ID |
| city | String | 5000 | 必填 | 城市定向,多个城市时以英文逗号隔开,0代表不限。例如投放北京和上海两个城市,则传入值为"1156110000,1156310000",城市编码获取详见参数接口 |
| freqType | int | - | 必填 | 频控类型,0代表不限频控,1代表按app频控,2代表按设备频控。同一个广告项目下的广告位,不能同时设置两种频控类型 |
| dailyFreq | int | - | 必填 | 每日最大展示频率,0代表不限次数 |
| totalFreq | int | - | 必填 | 周期最大展示频率,0代表不限次数 |
| monitors | Arrays | - | 选填 | 监控集合 |
monitors中的字段信息:
| 参数名 | 类型 | 长度 | 属性 | 描述 |
|---|---|---|---|---|
| monitorName | String | 15 | 必填 | 第三方监控者名称 |
| impUrl | String | 500 | 必填 | 曝光监控URL |
| clickUrl | String | 500 | 必填 | 点击监控URL,如果没有请填写impUrl |
组合方式如下:
[{"monitorName": "MiaoZhen","implUrl": "http://impl1","clickUrl": "http://click1"},{"monitorName": "AdMaster","implUrl": "http://impl2","clickUrl": "http://click2"}]
{"code": 0,"message": "success","result": {"placementId": "1000,1001,1002"}}
| 名称 | 类型 | 描述 |
|---|---|---|
| placementId | int | 创建成功的广告位id |
访问地址
请求方式
POST
| 参数名 | 类型 | 长度 | 属性 | 描述 |
|---|---|---|---|---|
| placementId | int | - | 必填 | 广告位ID |
| freqType | int | - | 选填 | 频控类型,0代表不限频控,1代表按app频控,2代表按设备频控。同一个广告项目下的广告位,不能同时设置两种频控类型 |
| dailyFreq | int | - | 选填 | 每日频控,0-不限,最大值255 |
| totalFreq | int | - | 选填 | 周期频控,0-不限,最大值255 |
| status | int | - | 选填 | 状态,0上线,1暂停 |
{"code": 0,"message": "success"}
访问地址
请求方式
GET
| 参数名 | 类型 | 长度 | 属性 | 描述 |
|---|---|---|---|---|
| campaignId | int | - | 必填 | 项目ID |
| type | int | - | 必填 | 类别:0.按天 1.按小时 |
| createDate | Date | - | 选填 | 查询日期,格式yyyy-MM-dd |
{"code": 0,"message": "success","result": [{"createDate": "2017-08-16","imps": 0,"clicks": 0,"createTime": "00:00:00"},{"createDate": "2017-08-16","imps": 0,"clicks": 0,"createTime": "01:00:00"},{"createDate": "2017-08-16","imps": 0,"clicks": 0,"createTime": "02:00:00"}]}
| 名称 | 类型 | 描述 |
|---|---|---|
| createDate | Date | 日期 |
| createTime | Time | 时间点 |
| imps | int | 展现量 |
| clicks | int | 点击量 |
访问地址
请求方式
GET
| 参数名 | 类型 | 长度 | 属性 | 描述 |
|---|---|---|---|---|
| campaignId | int | - | 必填 | 项目ID |
| placementId | int | - | 必填 | 广告位ID |
| type | int | - | 必填 | 类别: 0.按天 1.按小时 |
| createDate | Date | - | 选填 | 查询日期,格式yyyy-MM-dd |
{"code": 0,"message": "success","result": [{"createDate": "2017-08-16","imps": 0,"clicks": 0,"createTime": "00:00:00"},{"createDate": "2017-08-16","imps": 0,"clicks": 0,"createTime": "01:00:00"},{"createDate": "2017-08-16","imps": 0,"clicks": 0,"createTime": "02:00:00"}]}
| 名称 | 类型 | 描述 |
|---|---|---|
| createDate | Date | 日期 |
| createTime | Time | 时间点 |
| imps | int | 展现量 |
| clicks | int | 点击量 |
访问地址
请求方式
GET
| 参数名 | 类型 | 长度 | 属性 | 描述 |
|---|---|---|---|---|
| pageIndex | int | - | 选填 | 起始页码,默认为1 |
| pageSize | int | - | 选填 | 每页个数,默认为10 |
| name | String | 15 | 选填 | 城市名称,支持模糊查询 |
| sort | String | 10 | 选填 | 排序字段,如id。前面加负号,代表倒序排列,如"-id",只能选择一个字段 |
{"code": 0,"message": "success","result": {"totalRecordNo": 369,"totalPageNo": 37,"params": [{"name": "北京市","id": 1156110000},{"name": "张家口市","id": 1156130700},//...]}}
| 名称 | 类型 | 描述 |
|---|---|---|
| totalRecordNo | int | 总数 |
| totalPageNo | int | 总页数 |
| params | Arrays | 参数集合 |
| id | int | 城市编号 |
| name | String | 城市名称 |
访问地址
请求方式
GET
| 参数名 | 类型 | 长度 | 属性 | 描述 |
|---|---|---|---|---|
| id | int | - | 选填 | 城市ID |
| name | String | 25 | 选填 | 城市名称,不支持模糊查询 |
{"code": 0,"message": "success","result": {"name": "北京市","id": 1156110000}}
| 名称 | 类型 | 描述 |
|---|---|---|
| id | int | 城市ID |
| name | String | 城市名称 |
| 错误码 | 错误信息 | 解释 | 描述 |
|---|---|---|---|
| 400 | Bad Request | 请求错误 | 非法请求 |
| 401 | Unauthorized | 未授权 | 请求没有携带身份验证,或者身份验证失败 |
| 404 | Not Found | 未找到 | 请求的资源不存在 |
| 405 | Method Not Allowed | 请求方式错误 | 发送的请求方式不匹配 |
| 408 | Require Timeout | 请求超时 | 发起请求的时间和服务器接受到请求时间相差大于±1分钟 |
| 412 | Parameter Deficiency | 参数缺失 | 缺少必要的参数 |
| 422 | Unprocessable Entity | 无法处理的实体 | 传递至接口的内容验证不通过 |
| 428 | Signature Error | 签名认证失败 | 签名和加密字符串不符合 |
| 429 | Too Many Requests | 请求次数太多 | 请求次数达到频控限制 |
| 435 | Parameter Error | 参数值有误 | 传递的参数值不符合规定 |
| 436 | File Md5 Error | 上传文件有误 | 上传文件的MD5和服务端接受到文件的MD5不一致 |
| 500 | Internal Server Error | 服务器内部错误 | 遇到这种情况,请及时联系我们 |
| 502 | Bad Gateway | 网关错误 | API 服务临时关闭,或在升级中 |
| 503 | Service Unavailable | 服务不可用 | API 服务器在运行,请求太多,请稍后重试 |
| 504 | Gateway Timeout | 网关超时 | API 服务器在运行,请求不能被响应,请稍后重试 |
| 版本号 | 日期 | 更改内容 |
|---|---|---|
| V1.0 | 2017-03-09 | 起稿 |
| V2.0 | 2017-06-06 | 1.去除广告位中第三方监控项目ID和广告位ID字段; 2.新增获取广告位列表和修改广告位功能; 3.新增设备列表和查询单个设备功能。 |
| V2.1 | 2017-08-21 | 1.新增获取广告项目数据接口; 2.新增获取广告位数据接口; 3.修改素材上传接口,新增上传视频封面。 |
| V2.2 | 2019-05-18 | 1.新增H5广告提示图素材上传; 2.修改广告位相关接口。 |