Skip to main content

开发者后台管理API

1 权限申请#

请向TradPlus申请开发者后台管理API权限,开通成功后会线下向开发者提供secret。

2 API接入#

说明,所有请求都采用post方式,请求域名为:https://api-developer.tradplusad.com

2.1 请求公参

参数说明传递方式样例
bear报表API keyHTTP Header157E4A5D-3877-1236-DE06-457FT3F70C4
sign签名(生成规则见2.2)GET5DE008C88087D8556D276A9E5B8E37E6
timestamp时间戳,当前时间的秒数GET1629525680
nonce16位长度随机字符,数字与字母组合GET5c672d4e9628d0a7

2.2 生成签名

具体规则如下:

  1. 拼接secret,timestamp,nonce和请求路径
  2. md5加密并且转换为大写
$sign = strtoupper(md5($secret.$timestamp.$nonce.$path));

2.3 返回参数

返回json格式

成功

{ code: 200, status: 0,data: {} }

失败

{ code: 1001, status: -1, error_message: "" }

3 应用管理#

3.1 获取应用分类#

请求路径: /api/app/allcategory

请求参数:无

返回字段

字段类型必传说明
first_categoryArrayY一级分类
first_category.idIntY分类id
first_category.name_cnStringY中文名
first_category.name_enIntY英文名
sub_categoryIntY二级分类
sub_category.idIntY二级分类id
sub_category.pidIntY对应的一级分类id
sub_category.name_cnStringY中文名
sub_category.name_enStringY英文名

返回样例:

{
"code": 200,
"status": 0,
"data": {
"first_category": [
{
"id": "1",
"name_cn": "游戏",
"name_en": "Game"
},
{
"id": "2",
"name_cn": "应用",
"name_en": "App"
}
],
"sub_category": [
{
"id": "101",
"name_cn": "动作",
"name_en": "Action",
"pid": "1"
},
{
"id": "102",
"name_cn": "冒险",
"name_en": "Adventure",
"pid": "1"
}
...
]
}
}

3.2 获取应用#

请求路径: /api/app/apps

请求参数

如果传了app_uuids则忽略page,只有在app_uuids不传的情况下才返回has_more和total

字段类型必传说明备注
app_uuidsStirngN应用uuid每次最多接受100个
pageIntN页数 默认1 每页100条

返回字段

字段类型必传说明备注
totalIntN总数
has_moreIntN是否还有更多
app_listArrayY应用信息
app_list.app_uuidStringY开发者应用ID
app_list.app_nameStringY应用名称
app_list.category_idIntY二级分类
app_list.app_urlStringY应用商店链接
app_list.package_nameStringY应用包名
app_list.osIntY应用平台1:安卓 2:iOS
app_list.is_releaseIntY是否上架1:未上架 2:已上架

返回样例

{
"code": 200,
"status": 0,
"data": {
"has_more": 0,
"total": "25",
"app_list": [
{
"app_uuid": "A741926221D7FEFBCB179D08B4477713",
"app_name": "test1",
"os": 1,
"is_release": 2,
"package_name": "com.test1",
"app_url": "http://www.test1.com",
"category_id": 102
},
{
"app_uuid": "4F1E43B002376A505FFFB03F04C170E5",
"app_name": "test2",
"os": 1,
"is_release": 2,
"package_name": "com.test.4iphone",
"app_url": "http://www.test2.com",
"category_id": 111
},
...
]
}
}

3.3 创建和编辑应用#

请求路径: /api/app/store

请求参数

字段类型必传说明备注
app_listArrayYapp信息每次最多10个,超过会被丢弃
app_list.app_uuidStringN开发者应用ID 编辑必传
app_list.app_nameStringN应用名称 编辑必传
app_list.osIntN应用平台 1:安卓 2:iOS 创建后不可编辑
app_list.package_nameStringN应用包名 创建必传
app_list.app_urlStringN应用商店链接 如果传递代表应用已经上架,并且会自动使用上架的app信息(所以此时app_name,package_name可以不传),如果传了则会覆盖。
app_list.category_idIntN分类参考 3.1 获取应用分类 创建必传

返回字段

字段类型必传说明
listArrayY应用信息
list.app_uuidStirngN开发者应用ID
list.app_nameStirngN应用名称
list.error_messageStirngN错误信息,空字符表示成功

返回样例

{
"code": 200,
"status": 0,
"data": {
"list": [
{
"app_uuid": "",
"app_name": "a1",
"error_message": "应用名称已存在"
},
{
"app_uuid": "A741926221D7FEFBCB179D08B4477713",
"app_name": "test1",
"error_message": ""
}
]
}
}

4 广告位#

4.1 获取广告位#

请求路径: /api/seat/seats

请求参数

字段类型必传说明备注
app_uuidStirngN单个应用ID,可以获取某个应用下的所有广告位app_uuid和adseat_uuid 互斥 都传只取app_uuid
adseat_uuidsStringN广告位ID,多个逗号分割, 最多返回100 
pageStringN页数 默认1  每页100条

返回字段

字段类型必传说明备注
has_moreIntN
totalIntN
adseat_listArray
adseat_list.app_uuidStringY开发者应用ID
adseat_list.seat_nameStringY广告位名称
adseat_list.adseat_uuidStringY广告位ID
adseat_list.cache_numIntY缓存数
adseat_list.ad_typeIntY广告类型:1 原生 2 插屏 3 开屏 4 横幅 5 激励视频
adseat_list.use_frequencyIntY是否设置展示频次上线:1 是 0 否
adseat_list.frequency_limitIntY展示数上限 
adseat_list.frequency_unit_countIntY单位间隔
adseat_list.frequency_unitIntY次数单位:1 分钟 2 小时 3 天eg: 每5(frequency_unit_count) 分钟(frequency_unit)展示10次(frequency_limit)
adseat_list.ad_type_templateIntN原生模版类型 标准原生: 1 原生横幅: 2 Draw信息流: 3 原生开屏: 4原生类型返回
adseat_list.refresh_timeIntN刷新时间原生横幅,横幅返回
adseat_list.skip_timeIntNn 秒后显示跳过按钮原生开屏类型返回
adseat_list.countdown_timeIntN倒计时总时长原生开屏类型返回
adseat_list.is_skipIntN是否可跳过原生开屏字类型返回
adseat_list.monetary_nameStringN奖励项目激励视频类型返回
adseat_list.monetaryIntN奖励数量激励视频类型返回

返回样例

{
"code": 200,
"status": 0,
"data": {
"has_more": 0,
"total": "58",
"adseat_list": [
{
"app_uuid": "A741926221D7FEFBCB179D08B4477713",
"seat_name": "cp1",
"adseat_uuid": "E1FF0FF0BFF1EBDB61C0FED50E66229D",
"ad_type": 2,
"cache_num": 2,
"use_frequency": 0,
"frequency_limit": 0,
"frequency_unit_count": 0,
"frequency_unit": 0
},
{
"app_uuid": "1BCEFCAD3011A276134CC6225E724064",
"seat_name": "bzys",
"adseat_uuid": "D202406D331F32A5BBD1231065BAD7A0",
"ad_type": 1,
"cache_num": 2,
"use_frequency": 0,
"frequency_limit": 0,
"frequency_unit_count": 0,
"frequency_unit": 0,
"ad_type_template": 1
},
...
]
}
}

4.2 创建和编辑广告位#

请求路径: /api/seat/store

请求参数

字段类型必传说明备注
adseat_listArrayY最多10个超过会被丢弃
adseat_list.app_uuidStringY开发者应用ID开发者应用ID ,创建后不可编辑。
adseat_list.seat_nameStringY广告位名称 创建必传
adseat_list.adseat_uuidStringN广告位ID 编辑必传
adseat_list.cache_numIntN广告缓存数, 默认2创建必传 开屏范围:1~5 其他范围:1~20
adseat_list.ad_typeIntY广告类型: 1 原生 2 插屏 3 开屏 4 横幅 5 激励视频广告类型,创建必传,创建后不可编辑。
adseat_list.use_frequencyIntN是否设置展示频次上线:默认否1 是 0 否
adseat_list.frequency_limitIntN展示数上限 n 次展示,默认 1 
adseat_list.frequency_unit_countIntN单位间隔, 默认 1 
adseat_list.frequency_unitIntN次数单位, 分钟:1 小时: 2 天:3 默认 1
adseat_list.ad_type_templateIntN1 标准 2 原生横幅 3 Draw信息流 4 原生拼接开屏创建原生类型必传,创建后不可编辑。ios应用没有Draw信息流
adseat_list.refresh_timeIntN自动刷新,范围:15~150秒仅对横幅与原生横幅生效,可以不传,表示不刷新
adseat_list.skip_timeIntNn 秒后显示跳过按钮,范围:0~10秒 默认为2创建原生开屏必传,仅对原生开屏生效
adseat_list.countdown_timeIntN倒计时总时长,范围:3~10秒, 默认 5创建原生开屏必传,仅对原生开屏生效,倒计时总时长必须大于skip_time
adseat_list.is_skipIntN是否可跳过, 是:1 否:默认是创建原生开屏必传,仅对原生开屏生效
adseat_list.monetary_nameStringN奖励项目仅对激励视频生效
adseat_list.monetaryIntN奖励数量仅对激励视频生效

返回字段

字段类型必传说明备注
listArrayY
list.adseat_uuidStringY
list.seat_nameStringY
list.error_messageStringY错误信息,空字符表示成功

返回样例

{
"code": 200,
"status": 0,
"data": {
"list": [
{
"adseat_uuid": "9D0A151A3B9169369CB75873FD86713E",
"seat_name": "test原生横幅",
"error_message": ""
},
{
"adseat_uuid": "",
"seat_name": "",
"error_message": "应用id必填"
}
]
}
}

5 中介组#

5.1 查询中介组广告网络列表 (只返回自动排序区域)#

请求路径: /api/intermediary/get_ad_group_placement

请求参数

字段类型必传说明
adseat_uuidStirngY广告位ID
group_idIntN中介组ID,默认0表示默认组
ab_testIntN0:对照组 1:测试组

返回字段

字段类型必传说明
adseat_uuidStringY广告位ID
group_idIntY中介组ID
ab_testIntY0:对照组 1:测试组
adsource_listArrayY广告源信息列表
adsource_list.ad_group_placement_idIntY广告网络id
adsource_list.rate_cnyStringY排序价格CNY
adsource_list.rateStringY排序价格USD
adsource_list.is_auto_priceIntY1:表示开启自动价格 2:表示不开启自动价格
adsource_list.adsource_idIntY广告源ID
adsource_list.auto_optimizationIntYWaterfall区域1 自动排序
adsource_list.capping_dayIntY频次控制 展示上限(天)  0 表示无限制
adsource_list.capping_hourIntY频次控制 展示上限(小时) 0 表示无限制
adsource_list.pacing_minIntY频次控制 展示间隔(分钟) 0 表示无限制

返回样例

{
"code": 200,
"status": 0,
"data": {
"adseat_uuid": "E1FF0FF0BFF1EBDB61C0FED50E66229D",
"group_id": 0,
"ab_test": 0,
"currency": "CNY",
"adsource_list": [
{
"ad_group_placement_id": 5535,
"rate_cny": "1",
"rate": "6.39",
"is_auto_price": 2,
"adsource_id": 7,
"auto_optimization": 1,
"capping_hour": 0,
"capping_day": 0,
"pacing_min": 0
}
],
"disabled_adsource_list": []
}
}

5.2 批量修改广告源在中介组的属性#

请求路径: /api/intermediary/set_ad_group_placement

请求参数

字段类型必传说明备注
adseat_uuidStirngY广告位ID
adsource_listArrayY中介组广告源信息
adsource_list.ad_group_placement_idIntY广告源id
adsource_list.rateFloatN排序价格请根据币种填写
adsource_list.currencyStringNecpm币种单位CNY或USD
adsource_list.is_auto_priceIntN1:表示开启自动价格 2:表示不开启自动价格
adsource_list.capping_hourIntN传0表示无限制,传入正整数表示具体的Cap值capping_hour和capping_day和pacing_min必须都传生效
adsource_list.capping_dayIntN传0表示无限制,传入正整数表示具体的Cap值
adsource_list.pacing_minIntN传0表示无限制,传入正整数表示具体的Cap值

返回字段

字段类型必传说明
success_idsArrayY保存成功的广告源id
fail_idsArrayY未保存成功的广告网络id

返回样例

{
"code": 200,
"status": 0,
"data": {
"success_ids":["112","113"],
"fail_ids": ["114"]
}
}

6 广告平台管理#

6.1 查询国家信息#

请求路径: /api/info/region

请求参数:无

返回字段

字段类型必传说明
listArrayY
nameStringY中文名
name_enStringY英文名
isoStringY国家二位码(短码)

返回样例:

{
"code": 200,
"status": 0,
"data": {
"list": [
{
"name": "比利时",
"name_en": "Belgium"
"iso": "BE"
},
{
"name": "利比亚",
"name_en": "Libya"
"iso": "LY"
},
...
]
}
}

6.2 查询广告平台信息#

请求路径: /api/info/network

请求参数:无

返回字段

字段类型必传说明
listArrayY
nameStringY广告平台名称
network_idIntYtradplus广告平台id

返回样例:

{
"code": 200,
"status": 0,
"data": {
"list": [
{
"name": "Meta",
"network_id": 1
},
{
"name": "Admob",
"network_id": 2
},
...
]
}
}

7 报表#

7.1 提交对外收益信息#

请求路径: /api/report/submit

请求参数

字段类型必传说明备注
report_data_listArrayY最多10个超过会被丢弃
report_data_list.dayStringY日期,仅支持到天Y-m-d格式 示例:2021-02-01
report_data_list.isoStringY国家二位码(短码) 示例:GE 见:6.1
report_data_list.network_idIntYtradplus广告平台ID 见:6.2
report_data_list.placement_idStringY三方广告平台广告位ID Mintegral需要用 "_" 拼接AD Unit ID 示例:placementID_adUnitID
report_data_list.currencyStringN币种单位CNY或USD,不传默认CNY 
report_data_list.bidding_requestIntN竞价请求 
report_data_list.bidding_responseIntN竞价响应
report_data_list.requestIntN请求
report_data_list.fillIntN填充
report_data_list.impressionIntN展示
report_data_list.clickIntN点击
report_data_list.incomeIntN收入

返回字段

字段类型必传说明
errorArrayY错误信息列表
error.messageStringN错误信息
error.report_dataArrayN错误信息详情(同请求数据)

返回样例:

{
"code": 200,
"status": 0,
"data": {
"error": [
{
"message": "国家二位码(短码) 缺失或者错误",
"report_data": {
"day": "2022-01-18",
"iso": "USA",
"network_id": "16",
"placement_id": "abc123",
"currency": "CNY",
"income": "50",
"fill": "800"
}
},
{
"message": "广告网络ID 缺失或者错误",
"report_data": {
"day": "2022-01-19",
"iso": "CN",
"network_id": "475",
"placement_id": "22",
"currency": "CNY",
"income": "20",
"fill": "600",
"impression": "100"
}
}
]
}
}