跳转到内容

竞价请求

AppLovin RTB 竞价请求始终带有单个展示 (这点与 OpenRTB schema 不同)。每个请求都只包含一个展示对象 (imp)。

席位

AppLovin RTB Exchange 不支持单个竞价方占有多个席位 (seat)。席位白名单 wseat 数组将被忽略。

竞价请求对象

属性描述是否始终传递
app开发者应用详情,通过应用对象 (请参阅应用对象)。
at竞价类型。1 代表第一价格竞价;2 代表第二价格竞价。AppLovin 始终为 1
bapp应用程序屏蔽列表,按对应平台、独立于交易平台的应用程序标识符排列。在 Android 端为 bundle 或包名 (如 “com.foo.mygame”);在 iOS 端为数字 ID。提示: 此字段的发送需要许可授权。如果您希望启用该字段的发送,请联系您的客户经理。Bundle 发送上限为 30 个。如果竞价中包含被开发者屏蔽的其他 Bundle ID,那么竞价将作废,无法参与竞价。否,仅发送至 DSP 竞价方
badv广告主屏蔽列表,按广告主顶层域名 (如 “ford.com”) 屏蔽。域名发送上限为 30 个。如果竞价中包含被开发者屏蔽的其他域名,那么竞价将作废,无法参与竞价。否,仅发送至 DSP 竞价方
bcat该展示屏蔽的 IAB 类别。请参阅被屏蔽的类别列表。否,仅发送至 DSP 竞价方
device接收投放展示的用户设备的详情,通过设备对象提供 (请参阅设备对象)。
ext用于 OpenRTB 的平台专用扩展的占位符。
id竞价请求的唯一 ID
imp代表所提供展示的展示对象数组 (请参阅展示对象)。仅发送一个展示对象。
regs该对象会说明能管辖该请求的行业、法律或政府法规。
regs.ext.ccpa指示该请求是否受 CCPA 规定约束的标记。其中 0 = 否,1 = 是。是 (如果传递 regs)
regs.ext.consent指示用户是否已授予许可的标记。其中 0 = 否,1 = 是。
regs.ext.gdpr指示该请求是否受 GDPR 规定约束的标记。0 = 否,1 = 是。是 (如果传递 regs)
regs.ext.us_privacy请参阅 OpenRTB Extension for US Privacy (针对美国隐私规定的 OpenRTB 拓展)
source该对象可提供关于广告资源来源的数据,以及做出最终决策的实体。
source.ext用于 OpenRTB 的平台专用扩展的占位符。AppLovin 会在拓展中传递带有子对象 vercompletenodesschain。请参考 IAB 的规范。是 (如果传递 source)
tmax为避免超时提交竞价的最长时间 (以毫秒计)。默认 500 毫秒。
user设备真实用户——即广告受众的详细信息。
user.data包含 名称idsegment 对象。
user.data.name包含开发者在 MAX 控制面板中输入的广告单元特定数据 (如适用)。
user.data.segment包含 signal 字段,其中含有 SDK 竞价方收集并通过适配器传递给 MAX SDK 的任何自定义数据 (例如:平台必需的身份识别码,以帮助平台或竞价方响应竞价请求)。否,仅发送至 SDK 竞价方
user.ext用于 OpenRTB 的平台专用扩展的占位符。
user.ext.consent用户未授予许可:0;用户授予许可:1
user.ext.gdpr用户适用 GDPR 管辖:0;用户不适用 GDPR 管辖:1
user.id每位用户在每个应用中的 AppLovin 特定设备 ID。

应用对象

属性描述是否始终传递
bundle应用程序 iTunes ID 或包名。在 Android 端应当是包名,例如 com.example.app;在 iOS 端可以是 Bundle ID,也可以是 iTunes ID,例如 628677149
cat应用程序的 IAB 内容类别。请参阅 OpenRTB 规范 2.5 版本第 5.1 中表格了解详情。
content该对象会描述投放展示会针对特定请求出现的内容,包括 CTV 库存。符合 OpenRTB 规范第 3.2.16 条要求。
content.ext用于 OpenRTB 的平台专用扩展的占位符,包括 CTV 库存。
content.url内容的 URL,用于买方上下文分析或查看。
ext用于 OpenRTB 的平台专用扩展的占位符。
ext.orientation_lock指示设备方向:portraitlandscape
idAppLovin RTB 中的应用程序 ID。
名称AppLovin RTB 中的应用程序名称。
publisher关于应用开发者的详细信息。
publisher.ext包含额外开发者信息的拓展对象。其中包含带有 id 字段的 installed_sdk 对象和带有 SDK 竞价方名称和版本详细信息的子对象 SDK_version。对于需求方平台 (DSP) 竞价方,id 将始终为 "APPLOVIN_EXCHANGE"
publisher.id开发者的 AppLovin ID。开发者应将此值添加至其 app-ads.txt 文件。
publisher.name开发者名称。
storeurlApp Store 或 Google Play 商店中应用的 URL。用于 app-ads.txt 合规。是,仅发送至 DSP 竞价方
ver应用程序版本,可用时发送。

设备对象

属性描述是否始终传递
carrier (可选)设备移动蜂窝网络的运营商,或 WiFi 无线网络的 ISP。
connectiontype连接类型
  • 0 未知 —如果 SDK 信号缺失,则始终为 0
  • 1 以太网 — 如果设备通过以太网连接 (仅限 Android)
  • 2 Wifi — 如果设备通过 WiFi 无线网连接 (Android / iOS)
  • 3 蜂窝网络 — 未知连接 (Android / iOS)
  • 4 蜂窝网络 — 2G (Android / iOS)
  • 5 蜂窝网络 — 3G (Android / iOS)
  • 6 蜂窝网络 — 4G (Android / iOS)
  • 7 蜂窝网络 — 5G (Android / iOS)
devicetype设备的一般类型。针对移动设备和平板电脑设置为 1。请查看 OpenRTB 规范 2.5 版本中 第 5.21 中的表格了解详情。
dnt指示设备的 “Do Not Track” (请勿追踪) 功能是否启用。0:DNT 设置为 false;1:DNT 设置为 true。如果 SDK 未发送 DNT,或设备操作系统版本为 iOS 5 或更低,那么该参数会被省略。
ext用于 OpenRTB 的平台专用扩展的占位符。
ext.atts(仅限 iOS) 发送的整数,代表应用的应用跟踪授权状态:
  • 0 = 待定
  • 1 = 受限
  • 2 = 被拒
  • 3 = 已授权
ext.ifv该开发者的设备 IDFV。仅在 IDFA 不可用或全部为 0 时才会被传递。
geo设备位置,假定为用户当前位置,由地理对象 (Geo object)定义。
h屏幕高度 (物理像素),可能取决于设备的方向。提示: 可能与 banner.h 不同。
hwv设备硬件版本
ifa (可选)Apple IFA 或 Google 广告 ID。 Google 广告 ID (Android) 默认为小写;IFA (iOS) 默认为大写。如果原始数据不可用,则不会传递该属性。对于受 GDPR 管辖的国家/地区,如果用户未授予数据跟踪许可,那么该属性就不会被传递。
ip设备的 IPv4 地址。对于受 GDPR 管辖的国家/地区,如果用户未授予数据跟踪许可,那么该属性就不会被传递。
ipv6 (可选)设备的 IPv6 地址。ipv6 存在时,ip 默认为 255.255.255.255。对于受 GDPR 管辖的国家/地区,如果用户未授予数据跟踪许可,那么该属性就不会被传递。
js设备支持 JavaScript:1;设备不支持 JavaScript:0。(始终为 1。)
languageISO-639-1-alpha-2 表示的浏览器语言。
lmt经过商业平台认可 (如 iOS、Android) 的 “限制广告跟踪” 信号,其中 0 = 跟踪不受限制,1 = 跟踪必须遵守商业平台规则指南
make设备制造商 (如 "Apple")。
mccmnc移动设备国家代码和移动网络代码,以连接号连接 (例如 310-005)。请参阅移动设备国家代码列表了解详情。
model设备型号。iOS 会显示设备型号名称,例如 "iphone""iPhone 10,1";Android 设备会展示型号信息,如 "SAMSUNG-SM-G900A"
os设备的操作系统。提示:AppLovin 会针对 Amazon 设备发送 fireos
osv设备的操作系统版本,例如 "3.1.2"
pxratio物理像素与设备独立像素的比率,为 0.74 - 4.0 之间的浮点值。
uaHTTP 标头中未处理的 User-Agent 字符串。
w屏幕宽度 (物理像素),可能取决于设备的方向。提示: 可能与 banner.w 不同。

地理位置对象

属性描述是否始终传递
city设备所在城市。基于 IP 地址和 Maxmind 数据库。
country设备所在的国家/地区。基于 IP 地址和 Maxmind 数据库。以 ISO-639-1-alpha-3 国家代码形式传递。
dma基于 IP 地址的尼尔森 DMA (指定市场区域) 代码。
ext用于 OpenRTB 的平台专用扩展的占位符。
ext.isp互联网服务提供商名称。
ext.org互联网服务提供商名称。
ipservice服务或提供商,用于根据 IP 地址确定地理位置 (如适用,即 type = 2 时)。请参阅 OpenRTB 规范 2.5 版本中 第 5.23 的列表,了解更多详情。
locale设备的语言和国家/地区。例如,us_en 代表语言为英语,国家/地区为美国。
metro设备的邮政编码。基于 IP 地址和 Maxmind 数据库。
region以 ISO-3166-2 表示的地区代码;如果是美国,则为两个字母组成的州代码。提取自 IP 地址。
type位置数据的来源。请参阅 OpenRTB 规范 2.5 版本中 第 5.20 条的列表,了解更多详情。
zip (可选)用户的邮政编码。

展示对象

AppLovin RTB 竞价请求始终带有单个展示 (这点与 OpenRTB schema 不同)。每个请求都只包含一个展示对象 (imp)。

如果请求的展示对象中包含横幅对象,那么该展示就符合 HTML 和 MRAID 广告的要求。如果请求中包含视频对象,那么该展示符合 VAST 广告的要求。展示对象可以只包含横幅或视频子对象,也可以同时包含两者。

属性描述是否始终传递
banner横幅对象,请参阅横幅对象。如果展示是作为横幅广告机会提供,那么就必须传递该属性。仅针对横幅展示
bidfloorCPM 最低竞价金额。出价必须高于竞价下限才能参与竞价。默认货币为 USD (美元)。
displaymanagerSDK 存在时为 “applovin”。
displaymanagerverSDK 发送的 AppLovin SDK 版本。如 SDK 未提供该版本信息,则不发送。
exp竞价和实际展示之间可能流失的时间参考 (以秒计)。14400 的固定值 = 4 小时 × 3600 秒/小时。
ext用于 OpenRTB 的平台专用扩展的占位符。
ext.skadn针对 Apple SKAdNetwork 的支持。请查看 OpenRTB SKAdNetwork 扩展版块了解更多详情。否,仅发送至 DSP 竞价方
ext.skadn.skadnetids开发者应用 Info.plist 中与 DSP 相关的 SKAdNetworkItem 条目子集。是 (如果传递 ext.skadn)
ext.skadn.skadnetlist.maxIABTL 列表,包含 SKAdNetwork ID 的最大条目 ID。 
ext.skadn.skadnetlist.excl要从 IABTL 共享列表中排除的整数 IABTL 注册 ID 列表,通过逗号分隔。 
ext.skadn.sourceappApple 的 App Store 中开发者应用的 ID。与 app.bundle 相同。是 (如果传递 ext.skadn)
ext.skadn.version受支持的 SKAdNetwork 版本。始终为 "2.0" 或更高。取决于 OS 版本和 SDK 版本。提示: SKAdNetwork 2.1 发布后,该字段已被弃用,改为支持版本号数组的 BidRequest.imp.ext.skadn.versions是 (如果传递 ext.skadn)
ext.skadn.version包含受支持 SKAdNetwork 版本的字符串数组。始终为 "2.0" 或更高。取决于 OS 版本和 SDK 版本。是 (如果传递 ext.skadn)
ext.skadnetids仅与高级竞价方相关的 ID。
id竞价请求中广告展示的唯一标识符。该值通常以 1 开头,然后递增至 «n» (展示次数为 «n»)。
instl指示展示是否作为插屏广告机会提供。全屏 (插屏) 设置为 1;插屏广告不可用,则设为 0
metric指标对象数组 (请参阅指标对象)。否,仅发送至 DSP 竞价方
native原生对象 (请参阅原生对象)。如果展示是作为原生广告机会提供,那么就必须传递该属性。仅针对原生展示
rwdd指示用户是否通过观看广告而获得奖励。其中 0 = 否,1 = 是。
secure该标记会指示展示是否需要安全的 HTTPS URL 素材资源和标记。其中 0 = 非安全,1 = 安全。如果省略,则安全状态未知,但可以假定不需要安全的 HTTP 支持。针对 iOS 竞价,该字段始终为 1 = 安全。
tagid用于启动竞价的特定广告位或广告标签标识符。针对 SDK 竞价方,该标识符为此展示的平台广告位 ID。
video视频对象 (请参阅视频对象)。如果展示是作为视频广告机会提供,那么就必须传递该属性。仅针对视频展示

指标对象

属性类型描述
type字符串使用交易平台指定字符串名称显示的指标类型。会话时长 (session_duration) 指用户在特定应用中花费的总时间 (以秒计)。会话深度 (session_depth) 指用户在一次应用会话中看到的广告总数。用户关闭应用,会话即告结束。会话深度和广告格式会话深度都会显示在竞价请求中。下方列出了用户在应用会话中看到的每种格式的广告总数:
  • session_depth_banner
  • session_depth_full
  • session_depth_medium_rectangle
  • session_depth_native
  • session_depth_rewarded
value浮点数代表指标值的数字。不适用于可见度 (Viewability) 类型。会话深度:如果用户在当前应用会话中尚未观看广告,或用户处于非活跃状态已超过 30 分钟,则设置为 0.0
vendor字符串该值的来源,使用交易平台指定字符串名称表示。如果交易平台本身就是值的来源,而非第三方,那么除非另有说明,否则始终为 EXCHANGE。可见度:针对 Integral Ad Science (IAS) 设置为 ias;针对 Moat 设置为 moat。视开发者支持的合作伙伴而定。如果仅支持其中 1 个,就只发送 1 个;如果两者都支持,那么就发送 2 个。不适用于开放式监测可见度 (Open Measurement Viewability)。

视频对象

属性描述是否始终传递
api该展示支持的 API 框架列表。请参阅 OpenRTB 规范 2.5 版本 第 5.6 条中的表格了解详情。如果 API 未明确列出,则假定该 API 不受支持。
battr被屏蔽的素材属性。请参阅 OpenRTB 规范 2.5 版本第 5.3 条中的表格了解详情。
companiontype受支持的 VAST 伴随广告类型。请参阅 OpenRTB 规范 2.5 版本第 5.14 条中的表格了解详情。有些库存支持所有类型的伴随广告,有些则仅支持静态伴随广告。是,仅发送至 DSP 竞价方
ext.videotype如果是奖励请求,则为 "rewarded"
h以像素为单位的播放器高度。
linearity指示展示是否必须为线性。所有请求均设为 1
maxbitrate最高比特率 (Kbps)。
maxduration视频广告最长时长 (以秒计)。
mimes受支持的内容 MIME 类型。支持 video/mp4
minbitrate最低比特率 (Kbps)。
minduration最短视频广告时长 (以秒计)。
placement展示的广告位类型。请参阅 OpenRTB 规范 2.5 版本第 5.9 条中的表格了解详情。
playbackmethod允许的播放方法。如果未指定,则假定全部允许。请参阅 OpenRTB 规范 2.5 版本第 5.10 条中的表格了解详情。
plcmt展示的视频广告位子类型。请参阅 AdCOM 规范 1.0 版本中的 List: Plcmt Subtypes — Video 版块。是,仅发送至 DSP 竞价方
pos屏幕上的广告位置。请参阅 OpenRTB 规范 2.5 版本第 5.4 条中的表格了解详情。
protocols受支持的视频竞价响应协议的数组。支持 VAST 2、VAST 3 和 VAST 4。由于有的库存仅支持 2.0 版本,有的则能同时支持 2.0 和 3.0 版本,因此协议会反映具体广告资源来源支持的版本。请参阅 OpenRTB 规范 2.5 版本第 5.8 条中的表格了解详情。是,仅发送至 DSP 竞价方
skipafter视频必须播放多少秒,“跳过” 功能才可用。该设置仅适用于可跳过的广告。
skipmin总时长超过此值的视频可以被跳过。该设置仅适用于可跳过的广告。
startdelay指示前贴片、中贴片或后贴片广告位的开始延迟时间 (以秒计)。请参阅 OpenRTB 规范 2.5 版本第 5.12 条中的表格了解详情。
w以像素为单位的播放器宽度。

横幅对象

属性描述是否始终传递
api该展示支持的 API 框架列表。请参阅 OpenRTB 规范 2.5 版本 第 5.6 条中的表格了解详情。如果 API 未明确列出,则假定该 API 不受支持。
battr针对横幅广告被屏蔽的素材属性。请参阅 OpenRTB 规范 2.5 版本第 5.3 条中的表格了解详情。
btype整数数组,指示被屏蔽的横幅类型。请参阅 OpenRTB 规范 2.5 版本第 5.2 条中的表格了解详情。
ext.bannertype如果是奖励请求,则为 "rewarded"
format格式对象数组,指示可允许的横幅尺寸。可传递高度 (h) 和宽度 (w)。如果未指定,AppLovin 建议您使用 Bidrequest.imp.banner.hBidrequest.imp.w 属性。
h以像素为单位的展示高度。
id该对象的唯一标识符。该值通常从 1 开始,随每个对象而增加。在同一个展示中应当是唯一的。
pos屏幕上的广告位置。请参阅 OpenRTB 规范 2.5 版本第 5.4 条中的表格了解详情。AppLovin RTB 将始终传递 1 = 屏幕上半部分。
w以像素为单位的展示宽度。

原生对象

AppLovin 原生广告使用 OpenRTB Dynamic Native Ads API Specification Version 1.2,即动态原生广告 API 规范 1.2 版本。展示对象包含原生对象。原生对象包含一个请求字段,该字段以 JSON 字符串表示原生请求。AppLovin 不支持视频资源。

属性描述是否始终传递
api该展示支持的 API 框架列表。请参阅 OpenRTB 规范 2.5 版本 第 5.6 条中的表格了解详情。如果 API 未明确列出,则假定该 API 不受支持。
battr针对原生广告被屏蔽的素材属性。请参阅 OpenRTB 规范 2.5 版本第 5.3 条中的表格了解详情。
eventtrackers随广告一起运行的跟踪对象数组,响应请求中声明的受支持方法。取代已弃用的 imptrackersjstracker。请参阅 OpenRTB 规范 1.2 版本 第 4.7 条:Event Trackers Request Object (事件跟踪请求对象)。
request符合原生广告规格的请求负载。请注意:该属性为字符串。
request.assets资源对象数组。所有竞价都必须符合 Exchange 给出的元素数组。
request.assets[«n»].data评分、价格等数据对象。
request.assets[«n»].id唯一资源 ID,由交易平台分配。
request.assets[«n»].img.hmin请求的最低图片高度 (以像素为单位)。如果客户需要调整大小,请使用此选项。请传输 hhmin。如果仅包含 h,则应将其视为完全必要条件。图标图片值应当设置为 80, 要求长宽比为 1:1。主图片值设为 417,要求长宽比为 1.91:1 (推荐 1200×627、1200×628 和 800×418)。
request.assets[«n»].img.type开发者支持的图片元素类型 ID。开发者可以以恰当格式展示该信息。请参阅 OpenRTB 原生规范 1.2 版本第 7.4 条和第 7.5 条中的表格,了解详情。
request.assets[«n»].img.wmin请求的最低图片宽度 (以像素为单位)。如果客户需要调整大小,请使用此选项。请传输 wwmin。如果仅包含 w,则应将其视为完全必要条件。图标图片值应当设置为 80, 要求长宽比为 1:1。主图片值设为 800,要求长宽比为 1.91:1 (推荐 1200×627、1200×628 和 800×418)。
request.assets[«n»].required如果需要资源,则设置为 1 (交易平台不会接受缺失该属性的竞价)。
request.context广告出现的上下文,设置为 1501
request.privacy如果原生广告支持买方特定的隐私声明,则设置为 1。如果原生广告不支持自定义隐私链接,或支持情况未知,则该字段缺失。
request.seq(参见布局类型)。第一则广告为 0,第二则广告为 1,以此类推。请注意:这并非内容流中内容的序列号。
ver请求遵循的原生广告规格版本,设置为 1.2

竞价请求示例

{
"app": {
"bundle": "com.example.game",
"cat": ["IAB9-30"],
"id": "188e1f4c72744d3da3134a25",
"name": "Example Game",
"publisher": {
"id": "41c8cd761e099946e85842c11debfb4d"
},
"storeurl": "https://play.google.com/store/apps/details?id=com.example.game"
},
"at": 2,
"bcat": ["IAB8-5","IAB8-18","IAB11-4","IAB25","IAB26"],
"device": {
"carrier": "telekomde",
"connectiontype": 3,
"devicetype": 4,
"dnt": 0,
"geo": {
"city": "Barrington",
"country": "USA",
"metro": "",
"type": 2,
"zip": ""
},
"h": 1280,
"hwv": "hllte",
"ifa": "e1020eb8-fc74-454d-b420-a9763d8bc556",
"ip": "203.0.113.12",
"js": 1,
"language": "de",
"lmt": 0,
"make": "samsung",
"model": "SM-N7505",
"os": "Android",
"osv": "5.1.1",
"ua": "Mozilla/5.0 (Linux; Android 4.3; SM-N7505 Build/JSS15J) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.89 Mobile Safari/537.36",
"w": 720
},
"id": "94dedeadbeefc4b8fcba406639bbf15912766bdc",
"imp": [
{
"banner": {
"api": [
3,
5
],
"battr": [
1,
2,
5,
8,
9,
14,
17
],
"btype": [
1,
4
],
"h": 480,
"pos": 1,
"w": 320
},
"displaymanager": "applovin",
"displaymanagerver": "6.1.4",
"id": "1",
"instl": 1,
"secure": 0,
"tagid": "0652dbc39a23edfd",
"video": {
"battr": [
1,
2,
3,
7,
8,
9,
14,
13
],
"companiontype": [
1,
2,
3
],
"h": 480,
"linearity": 1,
"mimes": [
"video/mp4"
],
"protocols": [
2,
3
],
"w": 320
}
}
]
}

原生竞价请求示例

{
"app": {
"bundle": "com.example.game",
"cat": [
"IAB24"
],
"id": "81a292321de8ed119cb833e0a80c4231",
"name": "Example Game",
"publisher": {
"id": "41c8cd761e099946e85842c11debfb4d"
},
"storeurl": "https://play.google.com/store/apps/details?id=com.example.game"
},
"at": 2,
"badv": [
],
"device": {
"carrier": "verizon",
"connectiontype": 2,
"devicetype": 4,
"dnt": 0,
"geo": {
"city": "Redwood City",
"country": "USA",
"metro": "",
"type": 2
},
"h": 0,
"hwv": "",
"ifa": "12341234-1234-1234-1234-123412341234",
"ip": "255.255.255.255",
"ipv6": "2a00:79e1:abc:6b01:d516:20e2:582d:339a",
"js": 1,
"language": "en",
"lmt": 0,
"make": "",
"model": "",
"os": "Android",
"osv": "8.0.0",
"ua": "Mozilla/5.0 (Linux; Android 8.0.0; en_US; Moto Z (2) Build/ODXS27.000-00-00) AppleWebKit/000.00 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Mobile Safari/000.00",
"w": 0
},
"id": "d628d2709c061c14ea4a2e17a52da1778534d1f5",
"imp": [
{
"displaymanager": "applovin",
"displaymanagerver": "6.0.0",
"ext": { },
"id": "1",
"native": {
"api": [],
"battr": [
1,
2,
5,
8,
9,
14,
17,
3,
4,
13
],
"request": "{"native":{"assets":[{"id":1,"required":1,"title":{"len":140}},{"id":2,"img":{"hmin":800,"type":3,"wmin":417},"required":1},{"id":3,"img":{"hmin":50,"type":1,"wmin":50},"required":1},{"data":{"len":140,"type":2},"id":4,"required":0},{"data":{"len":15,"type":12},"id":5,"required":1},"context":1501,"plcmtcnt":1,"plcmttype":1,"ver":"1.2"}}",
"ver": "1.2"
},
"secure": 0,
"tagid": "5ba489fc7ec59a27:NOTIFYCLEAN"
}
]
}

CTV 竞价请求示例

{
  "id": "eb3ebe82eb5223c2525d46bd3bef213649466b0a",
  "at": 1,
  "bcat": [
    "IAB11-4",
    "IAB8-5",
    "test1",
    "IAB8-18",
    "IAB25-7",
    "IAB25-1",
    "IAB25-5",
    "IAB25-2",
    "IAB25-3",
    "IAB26-1",
    "IAB25-4",
    "IAB26-4",
    "IAB26-2",
    "IAB26-3",
    "IAB25-6",
    "test2"
  ],
  "tmax": 500,
  "badv": [
    "test2",
    "test1"
  ],
  "app": {
    "name": "APPINT",
    "bundle": "com.applovin.appint",
    "cat": [],
    "id": "a9dad9c29f02533c9462db5555561e79",
    "publisher": {
      "id": "61310",
      "ext": {}
    },
    "content": {
      "contentrating": "TV-PG",
      "genre": "Documentary,Science",
      "episode": 2,
      "season": "7",
      "ext": {
        "channel": "AppLovin Test"
      }
    },
    "storeurl": "https://channelstore.roku.com/details/196460",
    "ext": {}
  },
  "device": {
    "ifa": "66dcd4a1-a0ed-b2b8-7e1a-3d2ea2ecc889",
    "ip": "204.14.60.221",
    "language": "en",
    "devicetype": 3,
    "js": 0,
    "geo": {
      "type": 2,
      "ipservice": 3,
      "city": "Sidney Center",
      "country": "USA",
      "region": "ny",
      "dma": "502",
      "metro": "502",
      "zip": "13839",
      "ext": {
        "org": "DTC Cable",
        "isp": "DTC Cable"
      }
    },
    "ext": {},
    "make": "Roku",
    "model": "DVP",
    "os": "Roku OS",
    "dnt": 0,
    "lmt": 0
  },
  "imp": [
    {
      "id": "1",
      "displaymanager": "applovin",
      "instl": 0,
      "secure": 1,
      "tagid": "2f850a687d1acfdb:",
      "bidfloor": 22.58823529411765,
      "bidfloorcur": "USD",
      "exp": 14400,
      "video": {
        "w": 1920,
        "h": 1080,
        "battr": [
          1,
          2,
          5,
          8,
          9,
          14,
          17,
          3,
          4,
          13
        ],
        "mimes": [
          "video/mp4",
          "video/ogg",
          "video/webm"
        ],
        "placement": 1,
        "pos": 1,
        "minduration": 1,
        "maxduration": 120,
        "startdelay": -1,
        "minbitrate": 1,
        "maxbitrate": 280000,
        "linearity": 1,
        "sequence": 1,
        "protocols": [
          1,
          2,
          3,
          4,
          5,
          6
        ],
        "podid": "pod_1",
        "podseq": 0,
        "slotinpod": 0,
        "ext": {
          "maxsequence": 1
        }
      },
      "rwdd": 0,
      "ext": {}
    }
  ],
  "user": {
    "ext": {
      "gdpr": 0
    },
    "id": "66dcd4a1-a0ed-b2b8-7e1a-3d2ea2ecc889"
  },
  "regs": {
    "ext": {
      "ccpa": 0,
      "gdpr": 0
    }
  },
  "source": {
    "ext": {
      "schain": {
        "ver": "1.0",
        "complete": 1,
        "nodes": [
          {
            "asi": "applovin.com",
            "sid": "61310",
            "rid": "eb3ebe82eb5223c2525d46bd3bef213649466b0a",
            "hp": 1
          }
        ]
      }
    }
  }
}