OpenRTB Extensions Protocol Buffer v.203

View raw content Back to Reference page

 // 
 Open 
 beta 
 protocol 
 version 
 : 
 v 
 .203 
 import 
  
 "openrtb.proto" 
 ; 
 option 
 java_outer_classname 
 = 
 "AdxExt" 
 ; 
 package 
 com 
 . 
 google 
 . 
 doubleclick 
 ; 
 import 
  
 "google/protobuf/struct.proto" 
 ; 
 // 
 Protocol 
 buffer 
 for 
 Ad 
 Exchange 
 OpenRTB 
 specification 
 . 
 message 
 ImpExt 
 { 
 // 
 The 
 eligible 
 billing 
 IDs 
 to 
 which 
 a 
 billable 
 impression 
 can 
 be 
 attributed 
 . 
 // 
 A 
 billing 
 ID 
 for 
 attributing 
 an 
 impression 
 resulting 
 from 
  
 a 
 winning 
 bid 
 can 
 // 
 be 
 specified 
 in 
 ` 
 BidResponse 
 . 
 seatbid 
 . 
 bid 
 . 
 ext 
 . 
 billing_id 
 ` 
 . 
 These 
 billing 
 IDs 
 // 
 can 
 represent 
 the 
 bidder 
 's matching pretargeting configurations, the 
 // 
 bidder 
 's deal billing ID, or eligible child seats. 
 // 
 [ 
 AdX 
 : 
 BidRequest 
 . 
 AdSlot 
 . 
 MatchingAdData 
 . 
 billing_id 
 ] 
 repeated 
 int64 
 billing_id 
 = 
 1 
 ; 
 // 
 [ 
 AdX 
 : 
 BidRequest 
 . 
 publisher_settings_list_id 
 ] 
 // 
 [ 
 AdX 
 : 
 BidRequest 
 . 
 AdSlot 
 . 
 publisher_settings_list_id 
 ] 
 repeated 
 fixed64 
 publisher_settings_list_id 
 = 
 2 
 ; 
 // 
 [ 
 AdX 
 : 
 BidRequest 
 . 
 AdSlot 
 . 
 allowed_vendor_type 
 ] 
 repeated 
 int32 
 allowed_vendor_type 
 = 
 3 
 [ 
 packed 
 = 
 true 
 ]; 
 // 
 A 
 creative 
 that 
 is 
 disallowed 
 to 
 bid 
 on 
 this 
 impression 
 due 
 to 
 Ad 
 // 
 Exchange 
 policies 
 or 
 creative 
 disapproval 
 , 
 excluded 
 creative 
 attributes 
 , 
 // 
 excluded 
 product 
 or 
 sensitive 
 categories 
 , 
 allowed 
 vendor 
 types 
 , 
 // 
 restricted 
 categories 
 or 
 languages 
 applicable 
 to 
 the 
 bid 
 request 
 . 
 message 
 ExcludedCreative 
 { 
 // 
 Buyer 
 creative 
 ID 
 of 
 the 
 disallowed 
 creative 
 . 
 optional 
 string 
 buyer_creative_id 
 = 
 1 
 ; 
 } 
 // 
 Creatives 
 that 
 are 
 disallowed 
 for 
 the 
 impression 
 . 
 Submitting 
 a 
 bid 
 with 
 // 
 one 
 of 
 the 
 creatives 
 in 
 this 
 list 
 will 
 result 
 in 
 such 
 bid 
 being 
 filtered 
 // 
 before 
 the 
 auction 
 . 
 Contact 
 your 
 account 
 manager 
 if 
 you 
 would 
 like 
 // 
 to 
 enable 
 this 
 feature 
 . 
 repeated 
 ExcludedCreative 
 excluded_creatives 
 = 
 10 
 ; 
 // 
 [ 
 AdX 
 : 
 BidRequest 
 . 
 AdSlot 
 . 
 dfp_ad_unit_code 
 ] 
 optional 
 string 
 dfp_ad_unit_code 
 = 
 6 
 ; 
 // 
 Deprecated 
 . 
 This 
 will 
 be 
 removed 
 in 
 July 
 2023. 
 Use 
 the 
 standard 
 field 
 // 
 BidRequest 
 . 
 imp 
 . 
 rwdd 
 instead 
 . 
 // 
 [ 
 AdX 
 : 
 BidRequest 
 . 
 AdSlot 
 . 
 is_rewarded 
 ] 
 optional 
 bool 
 is_rewarded_inventory 
 = 
 7 
 [ 
 deprecated 
 = 
 true 
 ]; 
 // 
 Possible 
 requirement 
 types 
 for 
 AMP 
 ads 
 . 
 enum 
 AmpAdRequirementType 
 { 
 // 
 AMP 
 ad 
 requirements 
 unknown 
 . 
 UNKNOWN_AMP_AD_REQUIREMENT_TYPE 
 = 
 1 
 ; 
 // 
 AMP 
 ads 
 are 
 not 
 allowed 
 . 
 AMP_AD_NOT_ALLOWED 
 = 
 2 
 ; 
 // 
 Either 
 AMP 
 ads 
 or 
 non 
 - 
 AMP 
 ads 
 are 
 allowed 
 ; 
 // 
 AMP 
 ads 
 are 
 not 
 early 
 rendered 
 . 
 AMP_AD_ALLOWED_AND_NOT_EARLY_RENDERED 
 = 
 3 
 ; 
 // 
 Either 
 AMP 
 ads 
 or 
 non 
 - 
 AMP 
 ads 
 are 
 allowed 
 ; 
 // 
 AMP 
 ads 
 are 
 early 
 rendered 
 . 
 AMP_AD_ALLOWED_AND_EARLY_RENDERED 
 = 
 4 
 ; 
 // 
 AMP 
 ads 
 are 
 required 
 . 
 // 
 Ads 
 that 
 are 
 non 
 - 
 AMP 
 may 
 be 
 rejected 
 by 
 the 
 publisher 
 . 
 AMP_AD_REQUIRED 
 = 
 5 
 ; 
 } 
 optional 
 AmpAdRequirementType 
 ampad 
 = 
 8 
 [ 
 default 
 = 
 UNKNOWN_AMP_AD_REQUIREMENT_TYPE 
 ]; 
 // 
 Secure 
 signals 
 passed 
 by 
 the 
 publisher 
 . 
 message 
 BuyerGeneratedRequestData 
 { 
 // 
 The 
 source 
 ( 
 provider 
 ) 
 of 
 the 
 signal 
 . 
 oneof 
 source 
 { 
 SourceApp 
 source_app 
 = 
 1 
 ; 
 } 
 // 
 The 
 source 
 of 
 the 
 signal 
 when 
 this 
 request 
 is 
 from 
  
 an 
 app 
 . 
 message 
 SourceApp 
 { 
 // 
 Identifier 
 for 
 the 
 SDK 
 that 
 generated 
 this 
 data 
 . 
 It 
 will 
 match 
 the 
 id 
 // 
 in 
 BidRequest 
 . 
 app 
 . 
 ext 
 . 
 installed_sdk 
 . 
 id 
 . 
 optional 
 string 
 id 
 = 
 1 
 ; 
 } 
 // 
 The 
 secure 
 signal 
 . 
 optional 
 string 
 data 
 = 
 2 
 ; 
 } 
 repeated 
 BuyerGeneratedRequestData 
 buyer_generated_request_data 
 = 
 9 
 ; 
 // 
 Deprecated 
 . 
 This 
 will 
 be 
 removed 
 in 
 Q1 
 2024. 
 This 
 field 
 has 
 been 
 // 
 deprecated 
 in 
 favor 
 of 
 the 
 repeated 
 field 
 // 
 ` 
 billable_event_rate_bid_adjustment 
 ` 
 below 
 . 
 // 
 For 
 ads 
 rendered 
 using 
 a 
 custom 
 SDK 
 only 
 : 
 multiplier 
 applied 
 to 
 bid 
 in 
 // 
 the 
 auction 
 . 
 The 
 adjustment 
 reflects 
 the 
 likelihood 
 that 
 your 
 bid 
 would 
 // 
 generate 
 a 
 billable 
 event 
 ( 
 meaning 
 the 
 ad 
 renders 
 successfully 
 ) 
 if 
 it 
 // 
 won 
 the 
 auction 
 , 
 relative 
 to 
 the 
 probability 
 that 
 other 
 bids 
 generate 
 a 
 // 
 billable 
 event 
 if 
 they 
 won 
 the 
 auction 
 . 
 This 
 adjustment 
 can 
 be 
 larger 
 or 
 // 
 smaller 
 than 
 1. 
 This 
 affects 
 the 
 final 
 ranking 
 in 
 the 
 auction 
 only 
 ; 
 in 
 // 
 particular 
 , 
 this 
 multiplier 
 does 
 not 
 affect 
 the 
 payment 
 . 
 optional 
 double 
 billable_event_rate_adjustment 
 = 
 16 
 [ 
 deprecated 
 = 
 true 
 , 
 default 
 = 
 1 
 ]; 
 // 
 The 
 billable 
 event 
 rate 
 bid 
 adjustment 
 of 
 an 
 ad 
 and 
 the 
 dependent 
 // 
 features 
 of 
 the 
 ad 
 the 
 adjustment 
 applies 
 to 
 , 
 such 
 as 
 the 
 format 
 or 
 the 
 // 
 SDK 
 used 
 to 
 render 
 the 
 ad 
 . 
 Each 
 feature 
 combination 
 may 
 have 
 a 
 unique 
 // 
 adjustment 
 , 
 each 
 adjustment 
 therefore 
 specifies 
 which 
 SDK 
 or 
 creative 
 // 
 format 
 it 
 applies 
 to 
 . 
 message 
 BillableEventRateBidAdjustment 
 { 
 // 
 A 
 multiplier 
 to 
 your 
 bid 
 to 
 adjust 
 for 
 the 
 likelihood 
 that 
 your 
 bid 
 // 
 would 
 result 
 in 
 a 
 billable 
 event 
 ( 
 namely 
 , 
 the 
 ad 
 renders 
 successfully 
 ) 
 // 
 if 
 it 
 won 
 the 
 auction 
 , 
 relative 
 to 
 the 
 average 
 probability 
 that 
 bids 
 // 
 from 
  
 other 
 buyers 
 would 
 result 
 in 
 a 
 billable 
 event 
 if 
 they 
 won 
 the 
 // 
 auction 
 . 
 This 
 adjustment 
 can 
 be 
 larger 
 or 
 smaller 
 than 
 1. 
 This 
 affects 
 // 
 the 
 final 
 ranking 
 in 
 the 
 auction 
 only 
 ; 
 in 
 particular 
 , 
 this 
 multiplier 
 // 
 does 
 not 
 affect 
 the 
 payment 
 or 
 whether 
 the 
 bid 
 clears 
 any 
 floor 
 price 
 . 
 optional 
 float 
 bid_adjustment 
 = 
 1 
 [ 
 default 
 = 
 1 
 ]; 
 // 
 The 
 types 
 of 
 creative 
 the 
 bid 
 adjustments 
 can 
 apply 
 to 
 . 
 enum 
 CreativeType 
 { 
 CREATIVE_TYPE_UNKNOWN 
 = 
 0 
 ; 
 // 
 Banner 
 ads 
 HTML_SNIPPET 
 = 
 1 
 ; 
 // 
 VAST 
 video 
 or 
 audio 
 ads 
 VIDEO_VAST 
 = 
 2 
 ; 
 // 
 Native 
 ads 
 NATIVE 
 = 
 3 
 ; 
 // 
 SDK 
 rendered 
 ad 
 SDK_RENDERED 
 = 
 4 
 ; 
 } 
 // 
 The 
 type 
 of 
 ads 
 to 
 which 
 the 
 above 
 bid 
 adjustment 
 applies 
 to 
 . 
 Each 
 type 
 // 
 corresponds 
 to 
 different 
 ways 
 of 
 how 
 the 
 ad 
 's creative is specified, as 
 // 
 described 
 in 
 // 
 https 
 : 
 // 
 developers 
 . 
 google 
 . 
 com 
 / 
 authorized 
 - 
 buyers 
 / 
 rtb 
 / 
 response 
 - 
 guide 
 #specify-creative. 
 // 
 If 
 the 
 ad 
 is 
 SDK 
 - 
 rendered 
 , 
 this 
 will 
 be 
 set 
 to 
 SDK_RENDERED 
 regardless 
 // 
 of 
 the 
 actual 
 creative 
 type 
 . 
 optional 
 CreativeType 
 creative_type 
 = 
 2 
 [ 
 default 
 = 
 CREATIVE_TYPE_UNKNOWN 
 ]; 
 // 
 The 
 SDK 
 used 
 to 
 render 
 the 
 ad 
 with 
 . 
 The 
 SDK 
 ID 
 will 
 match 
 the 
 one 
 sent 
 // 
 in 
 BidRequest 
 . 
 app 
 . 
 ext 
 . 
 installed_sdk 
 . 
 id 
 . 
 This 
 field 
 is 
 not 
 set 
 for 
 Google 
 // 
 SDK 
 . 
 optional 
 AppExt 
 . 
 InstalledSdk 
 sdk 
 = 
 3 
 ; 
 } 
 // 
 A 
 list 
 of 
 billable 
 event 
 rate 
 bid 
 adjustments 
 applicable 
 to 
 the 
 request 
 // 
 and 
 the 
 ad 
 features 
 associated 
 to 
 the 
 adjustment 
 . 
 Bid 
 adjustments 
 are 
 // 
 listed 
 here 
 only 
 if 
 they 
 are 
 not 
 equal 
 to 
 1.0 
 , 
 which 
 is 
 equivalent 
 to 
 // 
 having 
 no 
 adjustment 
 . 
 This 
 field 
 replaces 
 the 
 deprecated 
 field 
 // 
 billable_event_rate_adjustment 
 . 
 repeated 
 BillableEventRateBidAdjustment 
 billable_event_rate_bid_adjustment 
 = 
 65 
 ; 
 // 
 Parameters 
 related 
 to 
 Open 
 Bidding 
 . 
 message 
 OpenBidding 
 { 
 // 
 This 
 field 
 is 
 set 
 to 
 true 
 if 
 the 
 publisher 
 set 
 up 
 a 
 yield 
 group 
 or 
 a 
 // 
 mediation 
 group 
 that 
 targets 
 this 
 adslot 
 and 
 this 
 bidder 
 . 
 See 
 // 
 https 
 : 
 // 
 support 
 . 
 google 
 . 
 com 
 / 
 admanager 
 / 
 answer 
 / 
 7128453 
 for 
 information 
 on 
 // 
 Open 
 Bidding 
 and 
 its 
 effects 
 on 
 the 
 bidding 
 process 
 . 
 optional 
 bool 
 is_open_bidding 
 = 
 2 
 ; 
 } 
 optional 
 OpenBidding 
 open_bidding 
 = 
 12 
 ; 
 // 
 The 
 allowed 
 restricted 
 ad 
 categories 
 . 
 See 
 // 
 https 
 : 
 // 
 storage 
 . 
 googleapis 
 . 
 com 
 / 
 adx 
 - 
 rtb 
 - 
 dictionaries 
 / 
 ad 
 - 
 restricted 
 - 
 categories 
 . 
 txt 
 // 
 for 
 a 
 list 
 of 
 ids 
 . 
 If 
 you 
 bid 
 with 
 an 
 ad 
 in 
 a 
 restricted 
 category 
 , 
 you 
 MUST 
 // 
 ALWAYS 
 declare 
 the 
 category 
 in 
 the 
 bid 
 response 
 regardless 
 of 
 the 
 values 
 in 
 // 
 this 
 field 
 . 
 repeated 
 int32 
 allowed_restricted_category 
 = 
 13 
 ; 
 // 
 Publisher 
 's SKAdNetwork information to support app installation 
 // 
 attribution 
 for 
 iOS 
 14 
 and 
 later 
 . 
 Apple 
 's SKAdNetwork API helps 
 // 
 advertisers 
 measure 
 ad 
 - 
 driven 
 app 
 installation 
 by 
 sending 
 a 
 postback 
 // 
 to 
 the 
 ad 
 network 
 after 
 a 
 successful 
 install 
 . 
 Publishers 
 will 
 need 
 // 
 to 
 configure 
 supported 
 ad 
 networks 
 in 
 their 
 app 
 's property list 
 // 
 ( 
 Info 
 . 
 plist 
 ) 
 to 
 allow 
 an 
 install 
 to 
 be 
 attributed 
 to 
 the 
 ad 
 impression 
 . 
 // 
 For 
 more 
 info 
 visit 
 : 
 // 
 https 
 : 
 // 
 developer 
 . 
 apple 
 . 
 com 
 / 
 documentation 
 / 
 storekit 
 / 
 skadnetwork 
 message 
 SKAdNetworkRequest 
 { 
 // 
 List 
 of 
 all 
 SKAdNetwork 
 versions 
 supported 
 by 
 the 
 request 
 , 
 depending 
 on 
 // 
 the 
 OS 
 version 
 and 
 the 
 SDK 
 version 
 . 
 repeated 
 string 
 versions 
 = 
 4 
 ; 
 // 
 ID 
 of 
 publisher 
 app 
 in 
 Apple 
 's App Store. 
 optional 
 string 
 sourceapp 
 = 
 2 
 ; 
 // 
 SKAdNetworkIdentifier 
 entries 
 in 
 the 
 publisher 
 app 
 's Info.plist. 
 repeated 
 string 
 skadnetids 
 = 
 3 
 ; 
 // 
 List 
 of 
 fidelity 
 types 
 supported 
 , 
 depending 
 on 
 the 
 SKAdNetwork 
 API 
 // 
 version 
 supported 
 by 
 the 
 operating 
 system 
 and 
 SDK 
 as 
 well 
 as 
 ad 
 slot 
 // 
 properties 
 . 
 repeated 
 SKAdNetworkFidelityType 
 fidelities 
 = 
 5 
 [ 
 packed 
 = 
 true 
 ]; 
 // 
 Indicates 
 if 
 this 
 request 
 supports 
 SKOverlay 
 . 
 optional 
 bool 
 skoverlay 
 = 
 6 
 ; 
 } 
 // 
 [ 
 AdX 
 : 
 BidRequest 
 . 
 Mobile 
 . 
 skadn 
 ] 
 optional 
 SKAdNetworkRequest 
 skadn 
 = 
 14 
 ; 
 // 
 Indicates 
 the 
 creative 
 policy 
 and 
 publisher 
 blocks 
 that 
 applies 
 to 
 this 
 // 
 request 
 . 
 message 
 CreativeEnforcementSettings 
 { 
 // 
 Creative 
 policy 
 enforcement 
 level 
 that 
 applies 
 to 
 this 
 request 
 . 
 // 
 Creatives 
 that 
 don 
 't adhere to the specified policy will be filtered 
 // 
 before 
 the 
 auction 
 . 
 The 
 status 
 of 
 the 
 creatives 
 with 
 their 
 respective 
 // 
 policies 
 can 
 be 
 retrieved 
 through 
 Creative 
 API 
 . 
 // 
 https 
 : 
 // 
 developers 
 . 
 google 
 . 
 com 
 / 
 authorized 
 - 
 buyers 
 / 
 apis 
 / 
 guides 
 / 
 rtb 
 - 
 api 
 / 
 creatives 
 // 
 Bids 
 on 
 deals 
 may 
 override 
 the 
 policy 
 enforcement 
 applicable 
 to 
 the 
 // 
 request 
 . 
 enum 
 PolicyEnforcement 
 { 
 POLICY_ENFORCEMENT_UNKNOWN 
 = 
 0 
 ; 
 // 
 Baseline 
 policy 
 for 
 all 
 ads 
 serving 
 through 
 any 
 of 
 Google 
 's ads 
 // 
 platform 
 products 
 . 
 Learn 
 more 
 at 
 : 
 // 
 https 
 : 
 // 
 support 
 . 
 google 
 . 
 com 
 / 
 platformspolicy 
 / 
 answer 
 / 
 3013851. 
 // 
 The 
 status 
 of 
 the 
 creatives 
 with 
 platform 
 policies 
 can 
 be 
 found 
 at 
 // 
 the 
 platformPolicyCompliance 
 field 
 through 
 the 
 Creative 
 API 
 . 
 POLICY_ENFORCEMENT_PLATFORM_POLICY 
 = 
 1 
 ; 
 // 
 Policy 
 for 
 ads 
 serving 
 through 
 Google 
 's ad network. This includes the 
 // 
 baseline 
 policy 
 for 
 all 
 ads 
 serving 
 through 
 any 
 of 
 Google 
 's ads 
 // 
 platform 
 products 
 . 
 Learn 
 more 
 at 
 : 
 // 
 https 
 : 
 // 
 support 
 . 
 google 
 . 
 com 
 / 
 authorizedbuyers 
 / 
 answer 
 / 
 1325008. 
 // 
 The 
 status 
 of 
 the 
 creatives 
 with 
 platform 
 policies 
 can 
 be 
 found 
 at 
 // 
 the 
 platformPolicyCompliance 
 field 
 through 
 the 
 Creative 
 API 
 . 
 POLICY_ENFORCEMENT_NETWORK_AND_PLATFORM_POLICY 
 = 
 2 
 ; 
 } 
 optional 
 PolicyEnforcement 
 policy_enforcement 
 = 
 1 
 ; 
 // 
 Creative 
 publisher 
 blocks 
 enforcement 
 level 
 that 
 applies 
 to 
 this 
 // 
 request 
 . 
 Publisher 
 blocks 
 allow 
 publishers 
 to 
 control 
 which 
 creatives 
 // 
 can 
 be 
 shown 
 on 
 their 
 properties 
 . 
 // 
 Deals 
 may 
 also 
 override 
 publisher 
 blocks 
 . 
 Refer 
 to 
 // 
 Deals 
 . 
 ext 
 . 
 publisher_blocks_overridden 
 field 
 . 
 enum 
 PublisherBlocksEnforcement 
 { 
 PUBLISHER_BLOCKS_ENFORCEMENT_UNKNOWN 
 = 
 0 
 ; 
 // 
 The 
 publisher 
 's blocking controls are enforced on creatives 
 // 
 submitted 
 . 
 Publisher 
 blocks 
 enforcement 
 settings 
 are 
 provided 
 in 
 the 
 // 
 following 
 fields 
 : 
 // 
 - 
 Imp 
 . 
 ext 
 . 
 publisher_settings_list_id 
 // 
 - 
 bcat 
 // 
 - 
 Imp 
 . 
 ext 
 . 
 allowed_restricted_category 
 // 
 - 
 Imp 
 . 
 ext 
 . 
 allowed_vendor_type 
 // 
 - 
 Audio 
 . 
 battr 
 // 
 - 
 Video 
 . 
 battr 
 // 
 - 
 Banner 
 . 
 battr 
 // 
 - 
 Native 
 . 
 battr 
 PUBLISHER_BLOCKS_ENFORCEMENT_APPLIES 
 = 
 1 
 ; 
 // 
 The 
 publisher 
 's blocking controls are not enforced on creatives 
 // 
 submitted 
 . 
 PUBLISHER_BLOCKS_ENFORCEMENT_OVERRIDDEN 
 = 
 2 
 ; 
 } 
 optional 
 PublisherBlocksEnforcement 
 publisher_blocks_enforcement 
 = 
 3 
 ; 
 } 
 optional 
 CreativeEnforcementSettings 
 creative_enforcement_settings 
 = 
 15 
 ; 
 // 
 Describes 
 the 
 environment 
 where 
 the 
 ad 
 auction 
 is 
 run 
 . 
 enum 
 AuctionEnvironment 
 { 
 // 
 The 
 auction 
 determining 
 the 
 winning 
 ad 
 is 
 held 
 server 
 - 
 side 
 . 
 SERVER_SIDE_AUCTION 
 = 
 0 
 ; 
 // 
 The 
 contextual 
 auction 
 that 
 determines 
 a 
 winning 
 contextual 
 bid 
 is 
 held 
 // 
 server 
 - 
 side 
 , 
 and 
 bidding 
 functions 
 are 
 run 
 on 
 the 
 device 
 to 
 determine 
 // 
 interest 
 group 
 bids 
 . 
 Both 
 the 
 winning 
 contextual 
 bid 
 and 
 interest 
 // 
 group 
 bids 
 are 
 entered 
 into 
 a 
 final 
 auction 
 held 
 on 
 the 
 device 
 to 
 // 
 select 
 the 
 winning 
 ad 
 . 
 For 
 more 
 information 
 regarding 
 the 
 Protected 
 // 
 Audience 
 API 
 on 
 device 
 bidding 
 and 
 auction 
 , 
 see 
 : 
 // 
 https 
 : 
 // 
 github 
 . 
 com 
 / 
 WICG 
 / 
 turtledove 
 and 
 // 
 https 
 : 
 // 
 github 
 . 
 com 
 / 
 WICG 
 / 
 turtledove 
 / 
 blob 
 / 
 main 
 / 
 FLEDGE 
 . 
 md 
 ON_DEVICE_INTEREST_GROUP_AUCTION 
 = 
 1 
 ; 
 // 
 The 
 contextual 
 auction 
 that 
 determines 
 a 
 top 
 - 
 ranked 
 contextual 
 bid 
 is 
 // 
 held 
 server 
 - 
 side 
 , 
 and 
 the 
 bidding 
 logic 
 to 
 determine 
 interest 
 group 
 // 
 bids 
 and 
 the 
 scoring 
 logic 
 to 
 determine 
 the 
 final 
 winning 
 ad 
 among 
 // 
 interest 
 group 
 bids 
 and 
 the 
 top 
 contextual 
 bid 
 runs 
 are 
 executed 
 in 
 // 
 Bidding 
 and 
 Auction 
 servers 
 . 
 See 
 more 
 detail 
 in 
 // 
 https 
 : 
 // 
 github 
 . 
 com 
 / 
 privacysandbox 
 / 
 fledge 
 - 
 docs 
 / 
 blob 
 / 
 main 
 / 
 bidding_auction_services_api 
 . 
 md 
 SERVER_SIDE_INTEREST_GROUP_AUCTION 
 = 
 3 
 ; 
 } 
 // 
 Specifies 
 where 
 the 
 ad 
 auction 
 runs 
 . 
 // 
 Deprecated 
 . 
 This 
 will 
 be 
 removed 
 in 
 November 
 , 
 2023. 
 Use 
 ae 
 instead 
 . 
 optional 
 AuctionEnvironment 
 auction_environment 
 = 
 18 
 [ 
 deprecated 
 = 
 true 
 , 
 default 
 = 
 SERVER_SIDE_AUCTION 
 ]; 
 // 
 The 
 supported 
 auction 
 environment 
 for 
 this 
 impression 
 . 
 For 
 inventory 
 // 
 which 
 does 
 not 
 support 
 interest 
 group 
 bidding 
 , 
 this 
 will 
 always 
 be 
 set 
 to 
 // 
 SERVER_SIDE_AUCTION 
 . 
 For 
 inventory 
 which 
 does 
 support 
 interest 
 group 
 // 
 bidding 
 , 
 this 
 will 
 be 
 set 
 to 
 ON_DEVICE_INTEREST_GROUP_AUCTION 
 . 
 Note 
 that 
 // 
 this 
 only 
 indicates 
 that 
 the 
 interest 
 group 
 auction 
 is 
 supported 
 , 
 not 
 // 
 that 
 it 
 is 
 guaranteed 
 to 
 execute 
 . 
 If 
 no 
 buyer 
 chooses 
 to 
 participate 
 in 
 // 
 the 
 interest 
 group 
 auction 
 , 
 then 
 the 
 interest 
 group 
 auction 
 will 
 be 
 // 
 skipped 
 and 
 the 
 winner 
 of 
 the 
 contextual 
 auction 
 , 
 if 
 any 
 , 
 will 
 be 
 // 
 served 
 instead 
 . 
 optional 
 AuctionEnvironment 
 ae 
 = 
 66 
 [ 
 default 
 = 
 SERVER_SIDE_AUCTION 
 ]; 
 // 
 Indicates 
 whether 
 interest 
 group 
 bidding 
 is 
 allowed 
 for 
 the 
 bidder 
 . 
 // 
 Depending 
 on 
 account 
 settings 
 and 
 other 
 factors 
 , 
 a 
 bidder 
 might 
 be 
 // 
 disallowed 
 from 
  
 submitting 
 interest 
 group 
 bids 
 , 
 even 
 though 
 an 
 interest 
 // 
 group 
 auction 
 may 
 ultimately 
 decide 
 the 
 winning 
 ad 
 . 
 optional 
 bool 
 igbid 
 = 
 21 
 ; 
 // 
 Experimental 
 feature 
 ; 
 may 
 be 
 subject 
 to 
 change 
 . 
 // 
 Reach 
 out 
 to 
 your 
 account 
 manager 
 to 
 use 
 Protected 
 Audience 
 API 
 . 
 // 
 // 
 When 
 interest 
 group 
 bidding 
 is 
 allowed 
 for 
 the 
 bidder 
 ( 
 igbid 
 = 
 true 
 ), 
 // 
 this 
 object 
 contains 
 information 
 about 
 the 
 on 
 - 
 device 
 auction 
 . 
 message 
 InterestGroupAuction 
 { 
 // 
 The 
 adslot 
 size 
 ( 
 width 
 and 
 height 
 in 
 pixels 
 ) 
 for 
 the 
 Protected 
 Audience 
 // 
 API 
 on 
 - 
 device 
 interest 
 group 
 bids 
 . 
 The 
 on 
 - 
 device 
 interest 
 group 
 winning 
 // 
 bid 
 will 
 be 
 expected 
 to 
 fill 
 this 
 slot 
 size 
 . 
 // 
 // 
 Note 
 that 
 this 
 size 
 may 
 be 
 different 
 from 
  
 the 
 sizes 
 for 
 the 
 contextual 
 // 
 request 
 ( 
 described 
 by 
 imp 
 . 
 banner 
 . 
 w 
 and 
 imp 
 . 
 banner 
 . 
 h 
 or 
 by 
 // 
 imp 
 . 
 banner 
 . 
 format 
 ) 
 . 
 The 
 contextual 
 request 
 may 
 allow 
 multiple 
 sizes 
 ; 
 // 
 however 
 , 
 the 
 on 
 - 
 device 
 auction 
 is 
 expected 
 to 
 fill 
 only 
 a 
 single 
 fixed 
 // 
 slot 
 size 
 . 
 optional 
 int32 
 w 
 = 
 1 
 ; 
 optional 
 int32 
 h 
 = 
 2 
 ; 
 // 
 Indicates 
 whether 
 the 
 winner 
 of 
 the 
 interest 
 group 
 auction 
 will 
 be 
 // 
 rendered 
 . 
 If 
 true 
 , 
 then 
 the 
 on 
 - 
 device 
 auction 
 winner 
 will 
 be 
 rendered 
 // 
 and 
 the 
 impression 
 can 
 be 
 billable 
 . 
 If 
 false 
 , 
 the 
 top 
 - 
 ranked 
 contextual 
 // 
 bid 
 will 
 be 
 rendered 
 , 
 and 
 the 
 on 
 - 
 device 
 auction 
 winner 
 will 
 be 
 ignored 
 // 
 and 
 not 
 result 
 in 
 a 
 rendered 
 , 
 billable 
 impression 
 . 
 optional 
 bool 
 render_interest_group_ads 
 = 
 3 
 ; 
 // 
 Indicates 
 whether 
 the 
 on 
 - 
 device 
 auction 
 for 
 the 
 current 
 request 
 was 
 // 
 parallelized 
 . 
 // 
 // 
 To 
 learn 
 more 
 about 
 parallelized 
 auctions 
 , 
 see 
 // 
 https 
 : 
 // 
 developers 
 . 
 google 
 . 
 com 
 / 
 authorized 
 - 
 buyers 
 / 
 rtb 
 / 
 protected 
 - 
 audience 
 - 
 api 
 #parallelization 
 optional 
 bool 
 parallelized 
 = 
 4 
 ; 
 // 
 Interest 
 group 
 buyer 
 - 
 specific 
 information 
 related 
 to 
 parallelized 
 // 
 Protected 
 Audience 
 API 
 auctions 
 . 
 message 
 ParallelAuctionBuyer 
 { 
 // 
 The 
 origin 
 of 
 the 
 interest 
 group 
 buyer 
 which 
 was 
 included 
 // 
 in 
 the 
 parallelized 
 auction 
 . 
 // 
 // 
 If 
 a 
 ParallelAuctionBuyer 
 entry 
 for 
 a 
 particular 
 origin 
 is 
 // 
 included 
 in 
 the 
 ` 
 pbuyer 
 ` 
 list 
 , 
 then 
 that 
 origin 
 was 
 // 
 included 
 in 
 the 
 parallelized 
 auction 
 and 
 a 
 corresponding 
 buyer 
 // 
 trusted 
 server 
 call 
 was 
 made 
 for 
 that 
 origin 
 . 
 If 
 a 
 buyer 
 // 
 origin 
 is 
 not 
 included 
 but 
 ` 
 parallelized 
 ` 
 is 
 true 
 , 
 then 
 it 
 cannot 
 // 
 participate 
 in 
 the 
 current 
 client 
 - 
 side 
 auction 
 . 
 However 
 , 
 bidders 
 can 
 // 
 indicate 
 interest 
 in 
 participating 
 in 
 future 
 Protected 
 Audience 
 API 
 // 
 auctions 
 by 
 including 
 valid 
 InterestGroupBuyer 
 ( 
 s 
 ) 
 in 
 // 
 ` 
 BidResponse 
 . 
 ext 
 . 
 igbid 
 . 
 igbuyer 
 ` 
 . 
 Those 
 interest 
 group 
 buyers 
 will 
 be 
 // 
 eligible 
 for 
 future 
 parallelized 
 requests 
 from 
  
 the 
 same 
 browser 
 // 
 instance 
 and 
 domain 
 . 
 optional 
 string 
 origin 
 = 
 1 
 ; 
 } 
 // 
 Parallel 
 auction 
 data 
 for 
 each 
 of 
 the 
 bidder 
 's interest group buyer(s) 
 // 
 that 
 was 
 included 
 in 
 the 
 current 
 request 
 's parallel auction. 
 repeated 
 ParallelAuctionBuyer 
 pbuyer 
 = 
 5 
 ; 
 // 
 Allowed 
 creative 
 markup 
 types 
 for 
 interest 
 group 
 bids 
 . 
 This 
 may 
 be 
 a 
 // 
 subset 
 of 
 the 
 allowed 
 creative 
 markup 
 types 
 for 
 contextual 
 bids 
 , 
 as 
 // 
 indicated 
 by 
 the 
 presence 
 of 
 the 
 Banner 
 , 
 Native 
 , 
 Video 
 , 
 or 
 Audio 
 bid 
 // 
 request 
 objects 
 , 
 because 
 interest 
 group 
 bidding 
 may 
 support 
 fewer 
 ad 
 // 
 formats 
 than 
 contextual 
 bidding 
 in 
 some 
 cases 
 . 
 repeated 
 . 
 com 
 . 
 google 
 . 
 openrtb 
 . 
 CreativeMarkupType 
 mtypes 
 = 
 6 
 [ 
 packed 
 = 
 true 
 ]; 
 } 
 optional 
 InterestGroupAuction 
 interest_group_auction 
 = 
 20 
 ; 
 // 
 Indicates 
 whether 
 a 
 mobile 
 app 
 bid 
 request 
 is 
 for 
 an 
 app 
 open 
 ad 
 . 
 // 
 See 
 App 
 open 
 ad 
 guidance 
 at 
 // 
 https 
 : 
 // 
 support 
 . 
 google 
 . 
 com 
 / 
 admob 
 / 
 answer 
 / 
 9341964 
 for 
 more 
 information 
 . 
 // 
 [ 
 AdX 
 : 
 BidRequest 
 . 
 Mobile 
 . 
 is_app_open_ad 
 ] 
 optional 
 bool 
 is_app_open_ad 
 = 
 19 
 ; 
 // 
 AdUnitMapping 
 is 
 used 
 to 
 identify 
 publisher 
 inventory 
 units 
 in 
 the 
 // 
 bidder 
 's namespace. The mappings are only populated when 
 // 
 the 
 bidder 
 works 
 directly 
 with 
 a 
 publisher 
 , 
 and 
 provides 
 the 
 mapping 
 // 
 from 
  
 Google 
 's ad unit namespace to the bidder' 
 s 
 inventory 
 namespace 
 . 
 // 
 The 
 ad 
 unit 
 mapping 
 is 
 only 
 applicable 
 for 
 requests 
 that 
 use 
 a 
 custom 
 // 
 SDK 
 . 
 https 
 : 
 // 
 support 
 . 
 google 
 . 
 com 
 / 
 admanager 
 / 
 answer 
 / 
 9601810. 
 message 
 AdUnitMapping 
 { 
 // 
 Key 
 - 
 value 
 pair 
 used 
 to 
 specify 
 the 
 inventory 
 unit 
 in 
 the 
 bidder 
 's 
 // 
 namespace 
 . 
 message 
 Keyval 
 { 
 // 
 The 
 key 
 is 
 the 
 name 
 of 
 the 
 bidder 
 's inventory unit identifier for the 
 // 
 SDK 
 . 
 optional 
 string 
 key 
 = 
 1 
 ; 
 // 
 The 
 value 
 of 
 the 
 bidder 
 's inventory unit identifier for the given 
 // 
 format 
 . 
 optional 
 string 
 value 
 = 
 2 
 ; 
 } 
 // 
 Multiple 
 key 
 - 
 value 
 pairs 
 can 
 be 
 specified 
 in 
 order 
 to 
 support 
 // 
 bidders 
 whose 
 inventory 
 unit 
 space 
 is 
 hierarchical 
 and 
 has 
 multiple 
 // 
 identifiers 
 . 
 The 
 key 
 - 
 value 
 pairs 
 for 
 the 
 chosen 
 AdUnitMapping 
 should 
 be 
 // 
 sent 
 back 
 in 
 the 
 bid 
 response 
 as 
 // 
 BidResponse 
 . 
 seatbid 
 . 
 bid 
 . 
 ext 
 . 
 sdk_rendered_ad 
 . 
 sdk_params 
 . 
 This 
 is 
 passed 
 to 
 // 
 the 
 bidder 
 's SDK. 
 repeated 
 Keyval 
 keyvals 
 = 
 1 
 ; 
 // 
 Possible 
 ad 
 unit 
 formats 
 that 
 can 
 be 
 used 
 for 
 the 
 mapping 
 . 
 Corresponds 
 // 
 to 
 the 
 adapter 
 that 
 will 
 be 
 used 
 on 
 the 
 SDK 
 . 
 enum 
 FormatType 
 { 
 FORMAT_UNKNOWN 
 = 
 0 
 ; 
 // 
 Display 
 banner 
 ads 
 for 
 web 
 or 
 mobile 
 apps 
 . 
 For 
 example 
 , 
 a 
 320 
 x50 
 // 
 leaderboard 
 slot 
 . 
 This 
 includes 
 out 
 - 
 stream 
 video 
 . 
 FORMAT_BANNER 
 = 
 1 
 ; 
 // 
 A 
 full 
 - 
 screen 
 ad 
 to 
 be 
 displayed 
 inside 
 a 
 mobile 
 app 
 . 
 FORMAT_INTERSTITIAL 
 = 
 2 
 ; 
 // 
 Custom 
 display 
 or 
 video 
 ads 
 for 
 web 
 or 
 mobile 
 apps 
 that 
 match 
 the 
 // 
 user 
 experience 
 of 
 the 
 site 
 or 
 app 
 in 
 which 
 they 
  
 re 
 placed 
 . 
 FORMAT_NATIVE 
 = 
 3 
 ; 
 // 
 Video 
 ads 
 that 
 appear 
 before 
 , 
 during 
 , 
 or 
 after 
 video 
 content 
 // 
 streams 
 . 
 FORMAT_VIDEO_VAST 
 = 
 4 
 ; 
 // 
 Video 
 ads 
 for 
 mobile 
 apps 
 that 
 allow 
 users 
 to 
 voluntarily 
 watch 
 an 
 // 
 ad 
 in 
 exchange 
 for 
 an 
 in 
 - 
 app 
 reward 
 . 
 FORMAT_REWARDED 
 = 
 5 
 ; 
 // 
 Interstitial 
 ads 
 that 
 allow 
 users 
 to 
 watch 
 an 
 ad 
 in 
 exchange 
 for 
 // 
 an 
 in 
 - 
 app 
 reward 
 . 
 Does 
 not 
 require 
 opt 
 - 
 in 
 . 
 // 
 https 
 : 
 // 
 support 
 . 
 google 
 . 
 com 
 / 
 admanager 
 / 
 answer 
 / 
 7386053 
 FORMAT_REWARDED_INTERSTITIAL 
 = 
 6 
 ; 
 // 
 App 
 open 
 ads 
 shows 
 at 
 app 
 load 
 screens 
 . 
 App 
 open 
 ads 
 can 
 be 
 closed 
 // 
 at 
 any 
 time 
 , 
 and 
 are 
 designed 
 to 
 be 
 shown 
 when 
 the 
 users 
 bring 
 the 
 // 
 app 
 to 
 the 
 foreground 
 . 
 FORMAT_APP_OPEN 
 = 
 7 
 ; 
 } 
 // 
 The 
 mappings 
 are 
 targeted 
 through 
 a 
 format 
 , 
 which 
 is 
 expressed 
 in 
 the 
 // 
 Google 
 - 
 defined 
 taxonomy 
 . 
 Format 
 is 
 populated 
 in 
 the 
 bid 
 request 
 since 
 // 
 Google 
 supports 
 targeting 
 multiple 
 formats 
 with 
 a 
 single 
 ad 
 // 
 unit 
 , 
 and 
 Google 
 's definition of the format may not match the bidder' 
 s 
 // 
 definition 
 . 
 In 
 order 
 for 
 the 
 bidder 
 to 
 differentiate 
 which 
 format 
 // 
 matched 
 , 
 it 
 is 
 sent 
 in 
 the 
 bid 
 request 
 . 
 optional 
 FormatType 
 format 
 = 
 2 
 ; 
 } 
 // 
 Ad 
 unit 
 mappings 
 that 
 match 
 the 
 given 
 adslot 
 . 
 repeated 
 AdUnitMapping 
 ad_unit_mapping 
 = 
 64 
 ; 
 // 
 Global 
 placement 
 ID 
 ( 
 GPID 
 ) 
 is 
 a 
 distinct 
 , 
 persistent 
 ID 
 , 
 specified 
 by 
 the 
 // 
 publisher 
 , 
 which 
 is 
 consistent 
 across 
 supply 
 paths 
 for 
 each 
 ad 
 unit 
 on 
 a 
 // 
 page 
 . 
 See 
 // 
 https 
 : 
 // 
 github 
 . 
 com 
 / 
 InteractiveAdvertisingBureau 
 / 
 openrtb 
 / 
 blob 
 / 
 main 
 / 
 extensions 
 / 
 community_extensions 
 / 
 gpid 
 . 
 md 
 . 
 // 
 If 
 you 
 are 
 interested 
 in 
 receiving 
 GPID 
 , 
 contact 
 your 
 account 
 manager 
 . 
 optional 
 string 
 gpid 
 = 
 67 
 ; 
 // 
 The 
 version 
 of 
 the 
 JavaScript 
 library 
 used 
 by 
 the 
 Mobile 
 Ads 
 SDK 
 to 
 // 
 serve 
 the 
 ad 
 . 
 Only 
 set 
 for 
 mobile 
 app 
 inventory 
 . 
 optional 
 string 
 jsver 
 = 
 68 
 ; 
 // 
 Whether 
 this 
 request 
 enables 
 ad 
 experiences 
 that 
 drive 
 user 
 engagement 
 for 
 // 
 mobile 
 app 
 interstitial 
 and 
 rewarded 
 ads 
 . 
 Examples 
 of 
 such 
 experiences 
 // 
 include 
 increasing 
 the 
 required 
 viewing 
 time 
 , 
 requiring 
 more 
 steps 
 to 
 close 
 // 
 the 
 ads 
 , 
 adding 
 the 
 required 
 viewing 
 time 
 for 
 endcards 
 , 
 or 
 showing 
 a 
 // 
 Google 
 - 
 generated 
 endcard 
 after 
 the 
 ads 
 . 
 See 
 // 
 https 
 : 
 // 
 support 
 . 
 google 
 . 
 com 
 / 
 admob 
 / 
 answer 
 / 
 15525707 
 for 
 more 
 information 
 . 
 optional 
 bool 
 highengagement 
 = 
 70 
 ; 
 // 
 Possible 
 placements 
 of 
 the 
 ad 
 in 
 an 
 over 
 - 
 the 
 - 
 top 
 streaming 
 request 
 . 
 // 
 See 
 // 
 https 
 : 
 // 
 support 
 . 
 google 
 . 
 com 
 / 
 admanager 
 / 
 answer 
 / 
 10678356 
 ? 
 #ott_placement&zippy=%2Csee-a-clickable-alphabetical-index-of-all-parameters%2Cott-placement-ott-placement 
 enum 
 OttPlacement 
 { 
 OTT_PLACEMENT_UNKNOWN 
 = 
 0 
 ; 
 // 
 Out 
 - 
 stream 
 format 
 that 
 appears 
 using 
 an 
 overlay 
 on 
 top 
 of 
 video 
 content 
 // 
 when 
 a 
 user 
 pauses 
 content 
 playback 
 . 
 OTT_PLACEMENT_PAUSE 
 = 
 1 
 ; 
 // 
 Ad 
 that 
 appears 
 on 
 the 
 homescreen 
 of 
 a 
 CTV 
 device 
 or 
 OTT 
 app 
 . 
 This 
 // 
 includes 
 masthead 
 , 
 banner 
 , 
 and 
 tile 
 implementations 
 on 
 a 
 homescreen 
 . 
 OTT_PLACEMENT_HOMESCREEN 
 = 
 2 
 ; 
 // 
 In 
 - 
 stream 
 video 
 ad 
 played 
 in 
 a 
 separate 
 ad 
 video 
 player 
 beside 
 video 
 // 
 content 
 . 
 Typically 
 requires 
 squeezing 
 back 
 video 
 content 
 and 
 loading 
 a 
 // 
 second 
 video 
 player 
 . 
 OTT_PLACEMENT_PICTURE_IN_PICTURE 
 = 
 3 
 ; 
 // 
 In 
 - 
 stream 
 banner 
 ad 
 that 
 involves 
 squeezing 
 back 
 video 
 content 
 and 
 // 
 creating 
 an 
 ad 
 around 
 the 
 video 
 . 
 Typically 
 , 
 but 
 not 
 limited 
 to 
 , 
 an 
 // 
 L 
 - 
 shaped 
 ad 
 content 
 box 
 . 
 OTT_PLACEMENT_L_BANNER 
 = 
 4 
 ; 
 // 
 Any 
 in 
 - 
 stream 
 ad 
 format 
 that 
 appears 
 on 
 top 
 of 
 video 
 content 
 but 
 does 
 not 
 // 
 take 
 up 
 the 
 full 
 screen 
 . 
 Can 
 be 
 a 
 display 
 or 
 video 
 ad 
 . 
 OTT_PLACEMENT_OVERLAY 
 = 
 5 
 ; 
 // 
 Any 
 over 
 - 
 the 
 - 
 top 
 placement 
 that 
 isn 
 't one of the above. 
 OTT_PLACEMENT_CUSTOM 
 = 
 99 
 ; 
 } 
 // 
 The 
 placement 
 of 
 the 
 ad 
 in 
 an 
 over 
 - 
 the 
 - 
 top 
 streaming 
 request 
 . 
 optional 
 OttPlacement 
 ottplacement 
 = 
 71 
 ; 
 } 
 message 
 AppExt 
 { 
 // 
 Identification 
 of 
 and 
 information 
 about 
 an 
 SDK 
 installed 
 in 
 the 
 // 
 publisher 
 's app that the bidder has access to, often because it' 
 s 
 the 
 // 
 bidder 
 's SDK. 
 message 
 InstalledSdk 
 { 
 // 
 Identifier 
 for 
 the 
 installed 
 SDK 
 . 
 optional 
 string 
 id 
 = 
 1 
 ; 
 // 
 Semantic 
 version 
 of 
 the 
 installed 
 SDK 
 and 
 the 
 adapter 
 that 
 communicates 
 // 
 between 
 the 
 installed 
 SDK 
 and 
 Google 
 's SDK. 
 message 
 Version 
 { 
 optional 
 int32 
 major 
 = 
 1 
 [ 
 default 
 = 
 - 
 1 
 ]; 
 optional 
 int32 
 minor 
 = 
 2 
 [ 
 default 
 = 
 - 
 1 
 ]; 
 optional 
 int32 
 micro 
 = 
 3 
 [ 
 default 
 = 
 - 
 1 
 ]; 
 } 
 // 
 The 
 version 
 of 
 the 
 installed 
 SDK 
 . 
 optional 
 Version 
 sdk_version 
 = 
 2 
 ; 
 // 
 The 
 version 
 of 
 the 
 adapter 
 that 
 communicates 
 with 
 the 
 installed 
 SDK 
 . 
 optional 
 Version 
 adapter_version 
 = 
 3 
 ; 
 } 
 repeated 
 InstalledSdk 
 installed_sdk 
 = 
 1 
 ; 
 // 
 The 
 domain 
 of 
 the 
 partner 
 ( 
 of 
 the 
 site 
 / 
 app 
 owner 
 ) 
 with 
 ownership 
 of 
 some 
 // 
 portion 
 of 
 ad 
 inventory 
 on 
 the 
 site 
 / 
 app 
 . 
 The 
 partner 
 's ads.txt or 
 // 
 app 
 - 
 ads 
 . 
 txt 
 file 
 will 
 be 
 hosted 
 here 
 . 
 More 
 detail 
 at 
 // 
 http 
 : 
 // 
 iabtechlab 
 . 
 com 
 / 
 wp 
 - 
 content 
 / 
 uploads 
 / 
 2021 
 / 
 03 
 / 
 ctv 
 - 
 app 
 - 
 ads 
 - 
 explainer 
 - 
 guide 
 . 
 pdf 
 optional 
 string 
 inventorypartnerdomain 
 = 
 2 
 ; 
 } 
 message 
 BannerExt 
 { 
 // 
 Describes 
 collapsible 
 banner 
 inventory 
 // 
 ( 
 https 
 : 
 // 
 support 
 . 
 google 
 . 
 com 
 / 
 admanager 
 / 
 answer 
 / 
 14002717 
 ) 
 . 
 // 
 // 
 A 
 buyer 
 can 
 bid 
 into 
 a 
 collapsible 
 banner 
 slot 
 with 
 either 
 a 
 // 
 traditional 
 banner 
 ad 
 or 
 a 
 collapsible 
 banner 
 ad 
 . 
 A 
 traditional 
 banner 
 // 
 ad 
 needs 
 to 
 match 
 one 
 of 
 the 
 allowed 
 sizes 
 specified 
 in 
 // 
 BidRequest 
 . 
 imp 
 . 
 banner 
 . 
 format 
 . 
 { 
 w 
 , 
 h 
 } 
 . 
 // 
 // 
 A 
 collapsible 
 banner 
 ad 
 needs 
 to 
 support 
 two 
 sized 
 layouts 
 , 
 one 
 for 
 // 
 collapsed 
 state 
 , 
 one 
 for 
 expanded 
 state 
 . 
 The 
 final 
 ad 
 experience 
 // 
 is 
 rendered 
 by 
 Google 
 , 
 including 
 a 
 collapse 
 / 
 expand 
 button 
 . 
 The 
 ad 
 always 
 // 
 starts 
 in 
 the 
 expanded 
 state 
 and 
 can 
 be 
 collapsed 
 by 
 the 
 user 
 afterwards 
 . 
 // 
 Specify 
 BidResponse 
 . 
 seatbid 
 . 
 bid 
 . 
 ext 
 . 
 clpad 
 when 
 returning 
 // 
 a 
 collapsible 
 banner 
 ad 
 in 
 the 
 response 
 . 
 message 
 CollapsibleAdSlot 
 { 
 // 
 Maximum 
 width 
 of 
 the 
 collapsible 
 banner 
 ad 
 in 
 device 
 independent 
 // 
 pixels 
 ( 
 DIPS 
 ) 
 . 
 If 
 a 
 collapsible 
 creative 
 in 
 the 
 response 
 has 
 a 
 greater 
 // 
 width 
 in 
 the 
 expanded 
 state 
 , 
 it 
 will 
 be 
 filtered 
 before 
 the 
 auction 
 . 
 optional 
 int32 
 wmax 
 = 
 1 
 ; 
 // 
 Maximum 
 height 
 of 
 the 
 collapsible 
 banner 
 ad 
 in 
 device 
 independent 
 // 
 pixels 
 ( 
 DIPS 
 ) 
 . 
 If 
 a 
 collapsible 
 creative 
 in 
 the 
 response 
 has 
 a 
 greater 
 // 
 height 
 in 
 the 
 expanded 
 state 
 , 
 it 
 will 
 be 
 filtered 
 before 
 the 
 auction 
 . 
 optional 
 int32 
 hmax 
 = 
 2 
 ; 
 } 
 // 
 Contains 
 information 
 about 
 a 
 banner 
 ad 
 slot 
 's collapsibility, 
 // 
 if 
 supported 
 , 
 and 
 is 
 unset 
 otherwise 
 . 
 optional 
 CollapsibleAdSlot 
 clpadslot 
 = 
 1 
 ; 
 // 
 Indicates 
 the 
 acceptable 
 ad 
 width 
 and 
 height 
 ranges 
 for 
 impressions 
 which 
 // 
 support 
 flexible 
 ad 
 sizes 
 . 
 message 
 FlexSlot 
 { 
 // 
 The 
 minimum 
 acceptable 
 ad 
 width 
 in 
 device 
 - 
 independent 
 pixels 
 ( 
 DIPS 
 ) 
 . 
 optional 
 int32 
 wmin 
 = 
 1 
 ; 
 // 
 The 
 maximum 
 acceptable 
 ad 
 width 
 in 
 device 
 - 
 independent 
 pixels 
 ( 
 DIPS 
 ) 
 . 
 optional 
 int32 
 wmax 
 = 
 2 
 ; 
 // 
 The 
 minimum 
 acceptable 
 ad 
 height 
 in 
 device 
 - 
 independent 
 pixels 
 ( 
 DIPS 
 ) 
 . 
 optional 
 int32 
 hmin 
 = 
 3 
 ; 
 // 
 The 
 maximum 
 acceptable 
 ad 
 height 
 in 
 device 
 - 
 independent 
 pixels 
 ( 
 DIPS 
 ) 
 . 
 optional 
 int32 
 hmax 
 = 
 4 
 ; 
 } 
 // 
 This 
 field 
 contains 
 information 
 about 
 a 
 banner 
 impression 
 's flexible ad 
 // 
 size 
 ranges 
 , 
 if 
 supported 
 , 
 and 
 is 
 unset 
 otherwise 
 . 
 optional 
 FlexSlot 
 flexslot 
 = 
 2 
 ; 
 } 
 message 
 BidResponseExt 
 { 
 // 
 [ 
 AdX 
 : 
 BidResponse 
 . 
 processing_time_ms 
 ] 
 optional 
 int32 
 processing_time_ms 
 = 
 1 
 ; 
 // 
 Experimental 
 feature 
 ; 
 may 
 be 
 subject 
 to 
 change 
 . 
 // 
 // 
 Reach 
 out 
 to 
 your 
 account 
 manager 
 to 
 use 
 Protected 
 Audience 
 API 
 . 
 // 
 // 
 Contains 
 information 
 that 
 needs 
 to 
 be 
 specified 
 for 
 participating 
 in 
 the 
 // 
 interest 
 group 
 auction 
 for 
 a 
 given 
 ad 
 slot 
 . 
 message 
 InterestGroupBidding 
 { 
 // 
 ID 
 of 
 ad 
 slot 
 represented 
 by 
 the 
 corresponding 
 Imp 
 object 
 in 
 the 
 bid 
 // 
 request 
 to 
 link 
 information 
 to 
 be 
 used 
 in 
 the 
 interest 
 group 
 auction 
 to 
 // 
 the 
 specific 
 ad 
 slot 
 . 
 optional 
 string 
 impid 
 = 
 1 
 ; 
 // 
 Buyer 
 - 
 level 
 information 
 to 
 use 
 in 
 the 
 interest 
 group 
 auction 
 . 
 message 
 InterestGroupBuyer 
 { 
 // 
 Origin 
 of 
 the 
 interest 
 group 
 buyer 
 to 
 participate 
 in 
 the 
 // 
 in 
 - 
 browser 
 auction 
 . 
 For 
 more 
 info 
 regarding 
 the 
 origin 
 see 
 : 
 // 
 https 
 : 
 // 
 developer 
 . 
 mozilla 
 . 
 org 
 / 
 en 
 - 
 US 
 / 
 docs 
 / 
 Glossary 
 / 
 Origin 
 optional 
 string 
 origin 
 = 
 1 
 ; 
 // 
 Optional 
 buyer 
 - 
 specific 
 signals 
 to 
 pass 
 into 
 the 
 buyer 
 's 
 // 
 ` 
 generateBid 
 () 
 ` 
 function 
 as 
 the 
 ` 
 perBuyerSignals 
 ` 
 argument 
 . 
 This 
 // 
 object 
 can 
 be 
 in 
 any 
 bidder 
 - 
 defined 
 format 
 that 
 will 
 be 
 transformed 
 // 
 into 
 a 
 JSON 
 object 
 following 
 Proto3 
 JSON 
 representation 
 // 
 ( 
 https 
 : 
 // 
 developers 
 . 
 google 
 . 
 com 
 / 
 protocol 
 - 
 buffers 
 / 
 docs 
 / 
 proto3 
 #json). 
 // 
 Can 
 be 
 left 
 empty 
 if 
 no 
 perBuyerSignals 
 signals 
 are 
 required 
 by 
 the 
 // 
 bidding 
 function 
 . 
 optional 
 . 
 google 
 . 
 protobuf 
 . 
 Value 
 buyerdata 
 = 
 2 
 ; 
 // 
 Optional 
 maximum 
 interest 
 group 
 bid 
 price 
 expressed 
 in 
 CPM 
 currency 
 // 
 that 
 a 
 bidder 
 agrees 
 to 
 pay 
 if 
 they 
 win 
 an 
 in 
 - 
 browser 
 interest 
 group 
 // 
 auction 
 . 
 Actual 
 winning 
 bid 
 in 
 the 
 in 
 - 
 browser 
 auction 
 that 
 determines 
 // 
 the 
 amount 
 a 
 bidder 
 pays 
 for 
 the 
 impression 
 may 
 be 
 lower 
 than 
 this 
 // 
 amount 
 . 
 This 
 constraint 
 allows 
 to 
 reduce 
 the 
 risks 
 from 
  
 in 
 - 
 browser 
 // 
 auction 
 bids 
 submitted 
 in 
 error 
 or 
 reported 
 due 
 to 
 fraud 
 and 
 abuse 
 . 
 optional 
 double 
 maxbid 
 = 
 3 
 ; 
 // 
 Currency 
 used 
 for 
 the 
 maxbid 
 value 
 . 
 optional 
 string 
 maxbidcur 
 = 
 4 
 [ 
 default 
 = 
 "USD" 
 ]; 
 // 
 Modes 
 by 
 which 
 the 
 cost 
 of 
 a 
 winning 
 Protected 
 Audience 
 impression 
 can 
 // 
 be 
 attributed 
 to 
 a 
 billing 
 ID 
 . 
 enum 
 BillingAttributionMode 
 { 
 // 
 Unspecified 
 attribution 
 mode 
 . 
 This 
 value 
 should 
 never 
 be 
 used 
 . 
 BILLING_ATTRIBUTION_MODE_UNSPECIFIED 
 = 
 0 
 ; 
 // 
 The 
 cost 
 of 
 the 
 impression 
 will 
 be 
 attributed 
 to 
 the 
 billing 
 ID 
 // 
 indicated 
 by 
 the 
 ` 
 billing_id 
 ` 
 field 
 . 
 If 
 this 
 mode 
 is 
 chosen 
 and 
 the 
 // 
 ` 
 billing_id 
 ` 
 field 
 doesn 
 't contain one of the available billing IDs 
 // 
 from 
  
 the 
 bid 
 request 
 , 
 then 
 the 
 interest 
 group 
 buyer 
 won 
 't be 
 // 
 eligible 
 to 
 participate 
 in 
 the 
 on 
 - 
 device 
 auction 
 . 
 BID_RESPONSE 
 = 
 1 
 ; 
 // 
 The 
 billing 
 ID 
 will 
 be 
 specified 
 by 
 the 
 ` 
 GoogleBillingId 
 ` 
 HTTP 
 query 
 // 
 parameter 
 in 
 the 
 ad 
 's render URL. If the render URL for the bid 
 // 
 returned 
 from 
  
 ` 
 generateBid 
 () 
 ` 
 doesn 
 't contain a billing ID present on 
 // 
 the 
 bid 
 request 
 in 
 the 
 query 
 parameter 
 , 
 the 
 submitted 
 bid 
 will 
 be 
 // 
 filtered 
 from 
  
 the 
 Protected 
 Audience 
 API 
 auction 
 . 
 RENDER_URL_PARAMETER 
 = 
 2 
 ; 
 } 
 // 
 Specifies 
 the 
 method 
 by 
 which 
 the 
 interest 
 group 
 buyer 
 will 
 select 
 the 
 // 
 billing 
 ID 
 to 
 attribute 
 spend 
 . 
 optional 
 BillingAttributionMode 
 billattr 
 = 
 10 
 ; 
 // 
 Billing 
 ID 
 that 
 the 
 interest 
 group 
 impression 
 will 
 be 
 attributed 
 to 
 . 
 // 
 If 
 set 
 , 
 the 
 value 
 must 
 be 
 in 
 the 
 set 
 of 
 billing 
 IDs 
 for 
 this 
 impression 
 // 
 that 
 were 
 sent 
 in 
 BidRequest 
 . 
 imp 
 . 
 ext 
 . 
 billing_id 
 . 
 If 
 this 
 // 
 field 
 is 
 not 
 set 
 , 
 the 
 interest 
 group 
 buyer 
 will 
 be 
 unable 
 to 
 // 
 participate 
 in 
 the 
 Protected 
 Audience 
 API 
 auction 
 . 
 optional 
 int64 
 billing_id 
 = 
 5 
 ; 
 // 
 Indicates 
 the 
 currency 
 in 
 which 
 interest 
 group 
 bids 
 will 
 be 
 placed 
 . 
 The 
 // 
 value 
 must 
 be 
 a 
 three 
 digit 
 ISO 
 4217 
 alpha 
 currency 
 code 
 ( 
 e 
 . 
 g 
 . 
 "USD" 
 ) 
 . 
 optional 
 string 
 cur 
 = 
 6 
 ; 
 // 
 Buyer 
 experiment 
 group 
 ID 
 ( 
 EGID 
 ) 
 to 
 be 
 specified 
 in 
 the 
 trusted 
 // 
 bidding 
 signals 
 request 
 URL 
 . 
 This 
 experiment 
 ID 
 will 
 be 
 added 
 to 
 the 
 // 
 ` 
 perBuyerExperimentGroupIds 
 ` 
 map 
 , 
 keyed 
 by 
 the 
 interest 
 group 
 owner 
 , 
 // 
 in 
 the 
 ` 
 auctionConfig 
 ` 
 . 
 See 
 // 
 https 
 : 
 // 
 github 
 . 
 com 
 / 
 WICG 
 / 
 turtledove 
 / 
 blob 
 / 
 main 
 / 
 FLEDGE 
 . 
 md 
 #31-fetching-real-time-data-from-a-trusted-server 
 optional 
 uint32 
 buyer_experiment_group_id 
 = 
 7 
 ; 
 // 
 Render 
 - 
 time 
 buyer 
 signals 
 that 
 will 
 be 
 expanded 
 into 
 the 
 winning 
 // 
 interest 
 group 
 ad 
 render 
 URL 
 using 
 the 
 // 
 ` 
 deprecatedRenderURLReplacements 
 ` 
 auction 
 configuration 
 field 
 for 
 macro 
 // 
 expansion 
 . 
 // 
 // 
 To 
 be 
 eligible 
 for 
 macro 
 replacement 
 , 
 render 
 URLs 
 must 
 contain 
 a 
 macro 
 // 
 in 
 the 
 form 
 of 
 `$ 
 { 
 RENDER_DATA_buyer 
 . 
 origin 
 . 
 example_OPTIONAL_SUFFIX 
 } 
 ` 
 , 
 // 
 where 
 ` 
 buyer 
 . 
 origin 
 . 
 example 
 ` 
 is 
 the 
 origin 
 of 
 the 
 interest 
 group 
 buyer 
 // 
 specified 
 by 
 the 
 ` 
 InterestGroupBuyer 
 . 
 origin 
 ` 
 field 
 , 
 and 
 // 
 ` 
 OPTIONAL_SUFFIX 
 ` 
 is 
 an 
 optional 
 suffix 
 that 
 can 
 be 
 specified 
 by 
 the 
 // 
 ` 
 RenderingSignals 
 . 
 suffix 
 ` 
 field 
 for 
 distinguishing 
 different 
 // 
 signals 
 . 
 If 
 the 
 ` 
 suffix 
 ` 
 is 
 omitted 
 , 
 then 
 the 
 macro 
 name 
 will 
 be 
 // 
 `$ 
 { 
 RENDER_DATA_buyer 
 . 
 origin 
 . 
 example 
 } 
 ` 
 . 
 // 
 // 
 See 
 specification 
 in 
 // 
 https 
 : 
 // 
 wicg 
 . 
 github 
 . 
 io 
 / 
 turtledove 
 / 
 #dom-auctionadconfig-deprecatedrenderurlreplacements 
 message 
 RenderingSignals 
 { 
 // 
 URL 
 - 
 safe 
 string 
 according 
 to 
 RFC 
 3986 
 section 
 2.3 
 which 
 will 
 replace 
 // 
 the 
 macro 
 in 
 the 
 render 
 URL 
 . 
 Each 
 ` 
 InterestGroupBuyer 
 ` 
 with 
 a 
 non 
 - 
 URL 
 // 
 safe 
 ` 
 data 
 ` 
 string 
 will 
 not 
 be 
 allowed 
 to 
 participate 
 in 
 the 
 interest 
 // 
 group 
 auction 
 . 
 optional 
 string 
 data 
 = 
 1 
 ; 
 // 
 Optional 
 macro 
 suffix 
 that 
 will 
 be 
 appended 
 to 
 RENDER_DATA 
 macro 
 // 
 name 
 to 
 distinguish 
 different 
 signals 
 . 
 optional 
 string 
 suffix 
 = 
 2 
 ; 
 } 
 // 
 List 
 of 
 rendering 
 signals 
 for 
 macro 
 expansion 
 on 
 the 
 winning 
 interest 
 // 
 group 
 ad 
 render 
 URL 
 , 
 limited 
 to 
 3 
 macros 
 per 
 buyer 
 . 
 Each 
 // 
 ` 
 InterestGroupBuyer 
 ` 
 with 
 more 
 than 
 3 
 rendering 
 signals 
 will 
 not 
 be 
 // 
 allowed 
 to 
 participate 
 in 
 the 
 interest 
 group 
 auction 
 . 
 repeated 
 RenderingSignals 
 rsig 
 = 
 8 
 ; 
 // 
 Indicates 
 that 
 the 
 buyer 
 will 
 render 
 their 
 own 
 DSA 
 transparency 
 // 
 information 
 inside 
 the 
 creative 
 delivered 
 through 
 the 
 Protected 
 // 
 Audience 
 API 
 . 
 See 
 https 
 : 
 // 
 support 
 . 
 google 
 . 
 com 
 / 
 admanager 
 / 
 answer 
 / 
 14335032. 
 optional 
 bool 
 dsaadrender 
 = 
 9 
 ; 
 } 
 // 
 Interest 
 group 
 buyers 
 that 
 the 
 bidder 
 requests 
 to 
 enter 
 into 
 the 
 // 
 interest 
 group 
 auction 
 . 
 Interest 
 groups 
 that 
 are 
 owned 
 by 
 a 
 buyer 
 // 
 without 
 a 
 corresponding 
 entry 
 here 
 will 
 not 
 participate 
 in 
 the 
 auction 
 . 
 repeated 
 InterestGroupBuyer 
 igbuyer 
 = 
 2 
 ; 
 } 
 // 
 Contains 
 information 
 that 
 needs 
 to 
 be 
 specified 
 for 
 participating 
 in 
 the 
 // 
 interest 
 group 
 auctions 
 . 
 repeated 
 InterestGroupBidding 
 igbid 
 = 
 4 
 ; 
 } 
 message 
 BidExt 
 { 
 // 
 [ 
 AdX 
 : 
 BidResponse 
 . 
 Ad 
 . 
 impression_tracking_url 
 ] 
 repeated 
 string 
 impression_tracking_url 
 = 
 1 
 ; 
 // 
 [ 
 AdX 
 : 
 BidResponse 
 . 
 Ad 
 . 
 ad_choices_destination_url 
 ] 
 optional 
 string 
 ad_choices_destination_url 
 = 
 2 
 ; 
 // 
 The 
 URLs 
 to 
 call 
 when 
 the 
 user 
 clicks 
 on 
 the 
 ad 
 . 
 Currently 
 supported 
 only 
 // 
 for 
 Programmatic 
 Guaranteed 
 deals 
 with 
 publisher 
 - 
 managed 
 creatives 
 , 
 where 
 // 
 these 
 click 
 trackers 
 will 
 be 
 sent 
 to 
 the 
 bidder 
 server 
 to 
 server 
 . 
 For 
 more 
 // 
 information 
 on 
 publisher 
 - 
 managed 
 creatives 
 , 
 see 
 // 
 https 
 : 
 // 
 support 
 . 
 google 
 . 
 com 
 / 
 admanager 
 / 
 answer 
 / 
 9243220. 
 // 
 [ 
 AdX 
 : 
 BidResponse 
 . 
 Ad 
 . 
 click_tracking_urls 
 ] 
 repeated 
 string 
 click_tracking_urls 
 = 
 22 
 ; 
 // 
 [ 
 AdX 
 : 
 BidResponse 
 . 
 Ad 
 . 
 AdSlot 
 . 
 exchange_deal_type 
 ] 
 enum 
 ExchangeDealType 
 { 
 OPEN_AUCTION 
 = 
 0 
 ; 
 PRIVATE_AUCTION 
 = 
 1 
 ; 
 PREFERRED_DEAL 
 = 
 2 
 ; 
 EXCHANGE_AUCTION_PACKAGE 
 = 
 3 
 ; 
 } 
 optional 
 ExchangeDealType 
 exchange_deal_type 
 = 
 4 
 [ 
 default 
 = 
 OPEN_AUCTION 
 ]; 
 // 
 [ 
 AdX 
 : 
 BidResponse 
 . 
 Ad 
 . 
 attribute 
 ] 
 // 
 See 
 buyer 
 - 
 declarable 
 - 
 creative 
 - 
 attributes 
 . 
 txt 
 in 
 the 
 technical 
 documentation 
 // 
 for 
 a 
 list 
 of 
 ids 
 . 
 Note 
 that 
 not 
 all 
 declarable 
 attributes 
 come 
 through 
 in 
 // 
 the 
 BidRequest 
 in 
 the 
 various 
 ` 
 battr 
 ` 
 fields 
 . 
 repeated 
 int32 
 attribute 
 = 
 5 
 [ 
 packed 
 = 
 true 
 ]; 
 // 
 The 
 URL 
 to 
 fetch 
 an 
 AMPHTML 
 ad 
 . 
 Only 
 one 
 of 
 the 
 following 
 should 
 be 
 set 
 : 
 // 
 html_snippet 
 , 
 video_url 
 , 
 amp_ad_url 
 , 
 native_ad 
 . 
 optional 
 string 
 amp_ad_url 
 = 
 6 
 ; 
 // 
 An 
 ad 
 that 
 will 
 be 
 rendered 
 by 
 an 
 SDK 
 known 
 to 
 the 
 buyer 
 . 
 This 
 can 
 only 
 // 
 be 
 used 
 when 
 the 
 BidRequest 
 included 
 a 
 // 
 BidRequest 
 . 
 app 
 . 
 ext 
 . 
 installed_sdk 
 submessage 
 . 
 message 
 SdkRenderedAd 
 { 
 // 
 The 
 identifier 
 for 
 the 
 SDK 
 that 
 will 
 render 
 the 
 ad 
 . 
 Must 
 match 
 a 
 // 
 BidRequest 
 . 
 app 
 . 
 ext 
 . 
 installed_sdk 
 . 
 id 
 sent 
 in 
 the 
 corresponding 
 bid 
 // 
 request 
 . 
 optional 
 string 
 id 
 = 
 1 
 ; 
 // 
 Data 
 to 
 pass 
 to 
 the 
 SDK 
 in 
 order 
 to 
 render 
 the 
 ad 
 . 
 This 
 data 
 is 
 opaque 
 // 
 to 
 the 
 publisher 
 and 
 to 
 Google 
 . 
 optional 
 string 
 rendering_data 
 = 
 2 
 ; 
 // 
 Declared 
 ad 
 assets 
 to 
 support 
 creative 
 scanning 
 , 
 classification 
 , 
 and 
 // 
 enforcement 
 of 
 ad 
 policy 
 and 
 publisher 
 blocks 
 for 
 ads 
 rendered 
 with 
 a 
 // 
 custom 
 SDK 
 . 
 message 
 DeclaredAd 
 { 
 // 
 Ad 
 content 
 used 
 by 
 SDK 
 to 
 render 
 ad 
 . 
 oneof 
 content 
 { 
 // 
 The 
 HTML 
 snippet 
 representative 
 of 
 the 
 SDK 
 - 
 rendered 
 ad 
 . 
 string 
 html_snippet 
 = 
 1 
 ; 
 // 
 The 
 URL 
 to 
 the 
 VAST 
 asset 
 used 
 in 
 the 
 SDK 
 - 
 rendered 
 ad 
 . 
 string 
 video_url 
 = 
 2 
 ; 
 // 
 The 
 VAST 
 document 
 used 
 to 
 render 
 custom 
 SDK 
 - 
 rendered 
 ad 
 . 
 This 
 // 
 document 
 should 
 conform 
 to 
 the 
 VAST 
 2.0 
 or 
 3.0 
 standard 
 . 
 string 
 video_vast_xml 
 = 
 4 
 ; 
 // 
 The 
 content 
 of 
 a 
 native 
 ad 
 . 
 Native 
 ads 
 consist 
 of 
 multiple 
 building 
 // 
 blocks 
 ( 
 such 
 as 
 image 
 and 
 text 
 ), 
 which 
 are 
 rendered 
 by 
 the 
 buyer 
 SDK 
 . 
 // 
 This 
 field 
 is 
 only 
 required 
 for 
 creative 
 scanning 
 . 
 The 
 assets 
 you 
 // 
 include 
 don 
 't need to match assets specified in a native request 
 // 
 object 
 ( 
 if 
 any 
 ) 
 in 
 the 
 bid 
 request 
 . 
 NativeResponse 
 . 
 assets 
 . 
 id 
 is 
 // 
 optional 
 and 
 doesn 
 't need to match an asset on the native request 
 // 
 object 
 . 
 NativeResponse 
 . 
 assets 
 . 
 img 
 . 
 type 
 is 
 required 
 . 
 . 
 com 
 . 
 google 
 . 
 openrtb 
 . 
 NativeResponse 
 native_response 
 = 
 5 
 ; 
 } 
 // 
 The 
 final 
 landing 
 pages 
 of 
 the 
 SDK 
 - 
 rendered 
 ad 
 . 
 repeated 
 string 
 click_through_url 
 = 
 3 
 ; 
 } 
 optional 
 DeclaredAd 
 declared_ad 
 = 
 6 
 ; 
 } 
 optional 
 SdkRenderedAd 
 sdk_rendered_ad 
 = 
 7 
 ; 
 message 
 EventNotificationToken 
 { 
 // 
 The 
 content 
 of 
 the 
 token 
 , 
 which 
 will 
 be 
 ignored 
 if 
 longer 
 than 
 128 
 // 
 bytes 
 . 
 optional 
 string 
 payload 
 = 
 1 
 ; 
 } 
 // 
 A 
 token 
 set 
 by 
 bidders 
 for 
 troubleshooting 
 which 
 will 
 be 
 included 
 in 
 the 
 // 
 real 
 - 
 time 
 feedback 
 for 
 the 
 Bid 
 it 
 is 
 sent 
 in 
 . 
 The 
 contents 
 of 
 the 
 token 
 // 
 will 
 not 
 be 
 logged 
 . 
 optional 
 EventNotificationToken 
 event_notification_token 
 = 
 8 
 ; 
 // 
 All 
 restricted 
 categories 
 for 
 the 
 ads 
 that 
 may 
 be 
 shown 
 from 
  
 this 
 snippet 
 . 
 // 
 See 
 ad 
 - 
 restricted 
 - 
 categories 
 . 
 txt 
 in 
 the 
 technical 
 documentation 
 for 
 a 
 list 
 // 
 of 
 ids 
 . 
 If 
 you 
 are 
 bidding 
 with 
 ads 
 in 
 restricted 
 categories 
 , 
 you 
 must 
 // 
 always 
 declare 
 them 
 here 
 . 
 repeated 
 int32 
 restricted_category 
 = 
 9 
 ; 
 // 
 The 
 billing 
 ID 
 to 
 attribute 
 this 
 impression 
 to 
 . 
 The 
 value 
 must 
 be 
 in 
 the 
 // 
 repeated 
 BidRequest 
 . 
 imp 
 . 
 ext 
 . 
 billing_id 
 field 
 sent 
 for 
 this 
 impression 
 . 
 // 
 If 
 the 
 length 
 of 
 BidRequest 
 . 
 imp 
 . 
 ext 
 . 
 billing_id 
 is 
 exactly 
 1 
 // 
 and 
 the 
 bidder 
 does 
 not 
 have 
 any 
 active 
 child 
 seats 
 , 
 this 
 field 
 // 
 is 
 not 
 required 
 and 
 its 
 contents 
 will 
 be 
 ignored 
 . 
 optional 
 int64 
 billing_id 
 = 
 10 
 ; 
 // 
 Token 
 used 
 to 
 identify 
 end 
 third 
 party 
 buyer 
 information 
 if 
 an 
 // 
 exchange 
 as 
 an 
 open 
 bidder 
 is 
 an 
 intermediary 
 . 
 This 
 is 
 obtained 
 from 
  
 the 
 // 
 third 
 party 
 buyer 
 and 
 must 
 be 
 passed 
 to 
 Google 
 unaltered 
 in 
 the 
 bid 
 // 
 response 
 . 
 optional 
 string 
 third_party_buyer_token 
 = 
 14 
 ; 
 // 
 Buyer 
 declared 
 ID 
 which 
 will 
 be 
 used 
 to 
 break 
 down 
 cost 
 transparency 
 // 
 metrics 
 in 
 Reporting 
 . 
 Note 
 that 
 IDs 
 with 
 fewer 
 than 
 1000 
 impressions 
 will 
 // 
 not 
 be 
 used 
 to 
 break 
 down 
 metrics 
 . 
 IDs 
 longer 
 than 
 64 
 bytes 
 will 
 be 
 // 
 ignored 
 . 
 optional 
 string 
 buyer_reporting_id 
 = 
 17 
 ; 
 // 
 Experimental 
 feature 
 ; 
 may 
 be 
 subject 
 to 
 change 
 . 
 See 
 // 
 https 
 : 
 // 
 support 
 . 
 google 
 . 
 com 
 / 
 authorizedbuyers 
 / 
 answer 
 / 
 10890762 
 for 
 more 
 // 
 information 
 . 
 // 
 // 
 Specifies 
 frequency 
 capping 
 to 
 be 
 applied 
 to 
 the 
 bid 
 . 
 Impressions 
 for 
 each 
 // 
 user 
 are 
 capped 
 at 
 the 
 level 
 specified 
 by 
 fcap_id 
 . 
 A 
 bid 
 will 
 not 
 // 
 participate 
 in 
 the 
 auction 
 if 
 an 
 additional 
 impression 
 for 
 the 
 user 
 would 
 // 
 violate 
 any 
 of 
 the 
 specified 
 caps 
 . 
 Multiple 
 frequency 
 caps 
 can 
 be 
 specified 
 // 
 for 
 the 
 same 
 fcap_id 
 . 
 // 
 // 
 A 
 bid 
 is 
 filtered 
 before 
 the 
 auction 
 if 
 the 
 frequency 
 cap 
 is 
 malformed 
 . 
 // 
 Instances 
 where 
 the 
 cap 
 is 
 malformed 
 include 
 : 
 // 
 - 
 fcap_id 
 is 
 empty 
 or 
 is 
 very 
 long 
 // 
 - 
 max_mpressions 
 or 
 time_range 
 are 
 non 
 - 
 positive 
 // 
 - 
 there 
 are 
 a 
 large 
 number 
 of 
 frequency 
 caps 
 for 
 a 
 single 
 bid 
 // 
 - 
 time_unit 
 is 
 not 
 specified 
 // 
 // 
 Note 
 that 
 if 
 a 
 subsequent 
 bid 
 with 
 the 
 same 
 fcap_id 
 uses 
 a 
 different 
 // 
 duration 
 ( 
 represented 
 by 
 time_unit 
 and 
 time_range 
 ) 
 then 
 impressions 
 counted 
 // 
 against 
 the 
 old 
 frequency 
 cap 
 will 
 not 
 count 
 against 
 the 
 new 
 one 
 and 
 vice 
 // 
 versa 
 . 
 message 
 FrequencyCap 
 { 
 // 
 An 
 ID 
 that 
 can 
 represent 
 a 
 bidder 
 's use-case for frequency capping; for 
 // 
 example 
 , 
 it 
 could 
 represent 
 their 
 campaign 
 , 
 ad 
 , 
 line 
 item 
 , 
 or 
 some 
 // 
 other 
 entity 
 . 
 It 
 should 
 not 
 contain 
 any 
 user 
 - 
 specific 
 information 
 or 
 // 
 identifiers 
 and 
 should 
 not 
 be 
 longer 
 than 
 64 
 characters 
 . 
 optional 
 string 
 fcap_id 
 = 
 1 
 ; 
 // 
 The 
 time 
 units 
 for 
 which 
 frequency 
 caps 
 can 
 be 
 enforced 
 . 
 enum 
 TimeUnit 
 { 
 UNKNOWN_TIME_UNIT 
 = 
 0 
 ; 
 MINUTE 
 = 
 1 
 ; 
 DAY 
 = 
 2 
 ; 
 WEEK 
 = 
 3 
 ; 
 MONTH 
 = 
 4 
 ; 
 // 
 When 
 INDEFINITE 
 is 
 used 
 , 
 time_range 
 will 
 be 
 ignored 
 . 
 INDEFINITE 
 means 
 // 
 the 
 frequency 
 cap 
 will 
 be 
 applied 
 for 
 a 
 long 
 period 
 of 
 time 
 , 
 ( 
 longer 
 // 
 than 
 a 
 month 
 ) 
 but 
 not 
 necessarily 
 forever 
 . 
 INDEFINITE 
 = 
 5 
 ; 
 } 
 // 
 The 
 unit 
 of 
 time 
 used 
 to 
 specify 
 the 
 time 
 window 
 for 
 which 
 a 
 frequency 
 // 
 cap 
 applies 
 . 
 optional 
 TimeUnit 
 time_unit 
 = 
 2 
 ; 
 // 
 The 
 length 
 of 
 the 
 time 
 window 
 , 
 in 
 units 
 specified 
 by 
 time_unit 
 , 
 for 
 which 
 // 
 the 
 frequency 
 cap 
 applies 
 . 
 For 
 instance 
 , 
 if 
 time_unit 
 = 
 WEEK 
 and 
 // 
 time_range 
 = 
 3 
 , 
 then 
 capping 
 is 
 applied 
 for 
 a 
 three 
 week 
 period 
 . 
 If 
 the 
 // 
 time_unit 
 = 
 INDEFINITE 
 , 
 this 
 will 
 be 
 ignored 
 . 
 optional 
 int32 
 time_range 
 = 
 3 
 [ 
 default 
 = 
 1 
 ]; 
 // 
 The 
 maximum 
 number 
 of 
 impressions 
 allowed 
 to 
 be 
 shown 
 to 
 a 
 user 
 for 
 // 
 the 
 provided 
 frequency_cap_id 
 within 
 the 
 time 
 window 
 described 
 by 
 // 
 time_unit 
 and 
 time_range 
 . 
 optional 
 int32 
 max_imp 
 = 
 4 
 ; 
 } 
 repeated 
 FrequencyCap 
 fcap 
 = 
 18 
 ; 
 // 
 Advertiser 
 's SKAdNetwork information to support app installation 
 // 
 attribution 
 for 
 iOS 
 14 
 and 
 later 
 . 
 Apple 
 's SKAdNetwork API helps 
 // 
 advertisers 
 measure 
 ad 
 - 
 driven 
 app 
 installation 
 by 
 sending 
 a 
 postback 
 // 
 to 
 the 
 ad 
 network 
 after 
 a 
 successful 
 install 
 . 
 Ad 
 networks 
 will 
 need 
 // 
 to 
 send 
 their 
 network 
 ID 
 and 
 signed 
 advertiser 
 information 
 to 
 allow 
 // 
 an 
 install 
 to 
 be 
 attributed 
 to 
 the 
 ad 
 impression 
 . 
 // 
 For 
 more 
 info 
 visit 
 : 
 // 
 https 
 : 
 // 
 developer 
 . 
 apple 
 . 
 com 
 / 
 documentation 
 / 
 storekit 
 / 
 skadnetwork 
 message 
 SKAdNetworkResponse 
 { 
 // 
 Version 
 of 
 SKAdNetwork 
 supported 
 by 
 the 
 advertiser 
 . 
 Also 
 used 
 to 
 // 
 specify 
 how 
 the 
 signature 
 was 
 generated 
 by 
 the 
 advertiser 
 . 
 This 
 // 
 should 
 match 
 the 
 version 
 from 
  
 BidRequest.imp.ext.skad.version. 
 optional 
 string 
 version 
 = 
 1 
 ; 
 // 
 Ad 
 network 
 identifier 
 used 
 in 
 signature 
 . 
 This 
 should 
 match 
 one 
 of 
 the 
 // 
 items 
 in 
 BidRequest 
 . 
 imp 
 . 
 ext 
 . 
 skad 
 . 
 skadnetids 
 . 
 optional 
 string 
 network 
 = 
 2 
 ; 
 // 
 Campaign 
 ID 
 compatible 
 with 
 Apple 
 's spec. Used in SKAdNetwork 3.0 and 
 // 
 below 
 . 
 Replaced 
 by 
 Source 
 Identifier 
 ( 
 ` 
 sourceidentifier 
 ` 
 field 
 ) 
 in 
 // 
 SKAdNetwork 
 4.0 
 and 
 above 
 . 
 optional 
 string 
 campaign 
 = 
 3 
 ; 
 // 
 A 
 four 
 - 
 digit 
 integer 
 that 
 ad 
 networks 
 define 
 to 
 represent 
 the 
 ad 
 // 
 campaign 
 . 
 Used 
 in 
 SKAdNetwork 
 4.0 
 + 
 and 
 replaces 
 the 
 ` 
 campaign 
 ` 
 field 
 . 
 optional 
 string 
 sourceidentifier 
 = 
 11 
 ; 
 // 
 ID 
 of 
 advertiser 
 's app in Apple' 
 s 
 app 
 store 
 . 
 optional 
 string 
 itunesitem 
 = 
 4 
 ; 
 // 
 ID 
 of 
 custom 
 product 
 page 
 to 
 display 
 ( 
 for 
 iOS 
 15 
 or 
 later 
 ) 
 . 
 // 
 If 
 not 
 specified 
 , 
 default 
 product 
 page 
 will 
 be 
 displayed 
 . 
 // 
 See 
 https 
 : 
 // 
 developer 
 . 
 apple 
 . 
 com 
 / 
 app 
 - 
 store 
 / 
 custom 
 - 
 product 
 - 
 pages 
 / 
 // 
 for 
 more 
 details 
 about 
 custom 
 product 
 pages 
 . 
 optional 
 string 
 productpageid 
 = 
 12 
 ; 
 // 
 SKAdNetwork 
 API 
 starting 
 from 
  
 version 
 2.2 
 supports 
 multiple 
 ad 
 // 
 presentation 
 options 
 specified 
 by 
 the 
 ` 
 fidelity 
 - 
 type 
 ` 
 parameter 
 of 
 the 
 // 
 SKAdNetwork 
 signature 
 . 
 This 
 holds 
 parameters 
 used 
 to 
 generate 
 the 
 // 
 signature 
 that 
 would 
 be 
 different 
 for 
 each 
 fidelity 
 type 
 supported 
 . 
 // 
 For 
 more 
 info 
 visit 
 : 
 // 
 https 
 : 
 // 
 developer 
 . 
 apple 
 . 
 com 
 / 
 documentation 
 / 
 storekit 
 / 
 skadnetwork 
 / 
 signing_and_providing_ads 
 message 
 Fidelity 
 { 
 // 
 The 
 fidelity 
 type 
 of 
 the 
 attribution 
 to 
 track 
 . 
 optional 
 SKAdNetworkFidelityType 
 fidelity 
 = 
 1 
 [ 
 default 
 = 
 STOREKIT_RENDERED_ADS 
 ]; 
 // 
 A 
 unique 
 all 
 - 
 lowercase 
 UUID 
 generated 
 by 
 the 
 advertiser 
 to 
 use 
 for 
 // 
 generating 
 the 
 signature 
 . 
 optional 
 string 
 nonce 
 = 
 2 
 ; 
 // 
 Unix 
 time 
 in 
 millis 
 used 
 at 
 the 
 time 
 of 
 signature 
 generation 
 . 
 optional 
 string 
 timestamp 
 = 
 3 
 ; 
 // 
 SKAdNetwork 
 signature 
 as 
 specified 
 by 
 Apple 
 . 
 optional 
 string 
 signature 
 = 
 4 
 ; 
 } 
 repeated 
 Fidelity 
 fidelities 
 = 
 9 
 ; 
 // 
 A 
 unique 
 all 
 - 
 lowercase 
 UUID 
 generated 
 by 
 the 
 advertiser 
 to 
 use 
 for 
 // 
 generating 
 the 
 signature 
 . 
 // 
 Note 
 : 
 This 
 field 
 will 
 be 
 deprecated 
 in 
 favor 
 of 
 the 
 // 
 BidResponse 
 . 
 bid 
 . 
 ext 
 . 
 skadn 
 . 
 fidelities 
 . 
 nonce 
 field 
 to 
 support 
 multiple 
 // 
 fidelity 
 types 
 . 
 optional 
 string 
 nonce 
 = 
 5 
 ; 
 // 
 ID 
 of 
 publisher 
 's app in Apple' 
 s 
 app 
 store 
 . 
 This 
 should 
 match 
 the 
 ID 
 // 
 from 
  
 BidRequest.imp.ext.skad.sourceapp. 
 optional 
 string 
 sourceapp 
 = 
 6 
 ; 
 // 
 Unix 
 time 
 in 
 millis 
 used 
 at 
 the 
 time 
 of 
 signature 
 generation 
 . 
 // 
 Note 
 : 
 This 
 field 
 will 
 be 
 deprecated 
 in 
 favor 
 of 
 the 
 // 
 BidResponse 
 . 
 bid 
 . 
 ext 
 . 
 skadn 
 . 
 fidelities 
 . 
 timestamp 
 field 
 to 
 support 
 multiple 
 // 
 fidelity 
 types 
 . 
 optional 
 string 
 timestamp 
 = 
 7 
 ; 
 // 
 SKAdNetwork 
 signature 
 as 
 specified 
 by 
 Apple 
 . 
 // 
 Note 
 : 
 This 
 field 
 will 
 be 
 deprecated 
 in 
 favor 
 of 
 the 
 // 
 BidResponse 
 . 
 bid 
 . 
 ext 
 . 
 skadn 
 . 
 fidelities 
 . 
 signature 
 field 
 to 
 support 
 multiple 
 // 
 fidelity 
 types 
 . 
 optional 
 string 
 signature 
 = 
 8 
 ; 
 // 
 These 
 options 
 indicate 
 how 
 to 
 present 
 SKOverlay 
 recommending 
 the 
 // 
 advertised 
 app 
 . 
 // 
 Supported 
 by 
 iOS 
 14 
 and 
 later 
 . 
 // 
 // 
 For 
 more 
 info 
 visit 
 : 
 // 
 https 
 : 
 // 
 developer 
 . 
 apple 
 . 
 com 
 / 
 documentation 
 / 
 storekit 
 / 
 skoverlay 
 message 
 SKOverlay 
 { 
 // 
 Delay 
 in 
 seconds 
 after 
 the 
 ad 
 begins 
 before 
 presenting 
 the 
 overlay 
 . 
 // 
 If 
 this 
 field 
 is 
 set 
 to 
 0 
 , 
 the 
 overlay 
 will 
 be 
 shown 
 immediately 
 // 
 after 
 the 
 ad 
 begins 
 . 
 If 
 this 
 field 
 is 
 unset 
 , 
 the 
 overlay 
 will 
 not 
 // 
 be 
 shown 
 for 
 the 
 ad 
 . 
 optional 
 int32 
 delay 
 = 
 1 
 ; 
 // 
 Delay 
 in 
 seconds 
 after 
 the 
 endcard 
 shows 
 before 
 presenting 
 the 
 // 
 overlay 
 . 
 ( 
 This 
 field 
 only 
 applies 
 to 
 rewarded 
 or 
 interstitial 
 video 
 // 
 creatives 
 . 
 ) 
 If 
 this 
 field 
 is 
 set 
 to 
 0 
 , 
 the 
 overlay 
 will 
 be 
 shown 
 // 
 immediately 
 after 
 the 
 endcard 
 shows 
 . 
 If 
 this 
 field 
 is 
 unset 
 , 
 // 
 the 
 overlay 
 will 
 not 
 be 
 shown 
 for 
 the 
 endcard 
 . 
 // 
 If 
 both 
 ` 
 delay 
 ` 
 and 
 ` 
 endcarddelay 
 ` 
 are 
 set 
 , 
 the 
 overlay 
 will 
 be 
 // 
 automatically 
 dismissed 
 when 
 the 
 ad 
 ends 
 , 
 and 
 shown 
 again 
 after 
 // 
 the 
 endcard 
 shows 
 . 
 optional 
 int32 
 endcarddelay 
 = 
 2 
 ; 
 // 
 Whether 
 this 
 overlay 
 can 
 be 
 dismissed 
 by 
 the 
 user 
 . 
 optional 
 bool 
 dismissible 
 = 
 3 
 [ 
 default 
 = 
 true 
 ]; 
 } 
 optional 
 SKOverlay 
 skoverlay 
 = 
 13 
 ; 
 // 
 Deprecated 
 . 
 This 
 message 
 will 
 be 
 removed 
 in 
 July 
 2025. 
 // 
 Google 
 Mobile 
 Ads 
 SDK 
 options 
 for 
 SKAdNetwork 
 handling 
 . 
 message 
 SKAdNetworkOptions 
 { 
 // 
 Deprecated 
 . 
 This 
 field 
 will 
 be 
 removed 
 in 
 July 
 2025. 
 // 
 By 
 default 
 , 
 SKAdNetwork 
 attribution 
 will 
 only 
 be 
 initiated 
 if 
 the 
 // 
 click 
 - 
 through 
 URL 
 lands 
 on 
 the 
 app 
 store 
 , 
 either 
 as 
 a 
 direct 
 link 
 to 
 // 
 the 
 app 
 store 
 or 
 as 
 the 
 final 
 destination 
 of 
 a 
 server 
 - 
 side 
 redirect 
 // 
 chain 
 . 
 This 
 option 
 enables 
 GMA 
 SDK 
 to 
 always 
 initiate 
 SKAdNetwork 
 // 
 attribution 
 on 
 - 
 click 
 regardless 
 of 
 the 
 detected 
 click 
 's final 
 // 
 destination 
 URL 
 . 
 Note 
 that 
 enabling 
 this 
 will 
 launch 
 the 
 app 
 store 
 // 
 even 
 for 
 clicks 
 that 
 are 
 not 
 meant 
 to 
 open 
 the 
 app 
 store 
 , 
 for 
 example 
 // 
 clicks 
 on 
 Ad 
 Choices 
 icon 
 . 
 For 
 more 
 info 
 , 
 see 
 : 
 // 
 https 
 : 
 // 
 developers 
 . 
 google 
 . 
 com 
 / 
 authorized 
 - 
 buyers 
 / 
 rtb 
 / 
 skadnetwork 
 optional 
 bool 
 always_open_appstore 
 = 
 1 
 [ 
 deprecated 
 = 
 true 
 , 
 default 
 = 
 false 
 ]; 
 } 
 // 
 Deprecated 
 . 
 This 
 field 
 will 
 be 
 removed 
 in 
 July 
 2025. 
 // 
 [ 
 AdX 
 : 
 BidResponse 
 . 
 Ad 
 . 
 skadn_options 
 ] 
 optional 
 SKAdNetworkOptions 
 skadn_opts 
 = 
 10 
 [ 
 deprecated 
 = 
 true 
 ]; 
 } 
 // 
 [ 
 AdX 
 : 
 BidResponse 
 . 
 Ad 
 . 
 skadn 
 ] 
 optional 
 SKAdNetworkResponse 
 skadn 
 = 
 19 
 ; 
 // 
 Possible 
 types 
 of 
 app 
 promotion 
 . 
 enum 
 AppPromotionType 
 { 
 UNKNOWN_APP_PROMOTION_TYPE 
 = 
 0 
 ; 
 // 
 For 
 encouraging 
 new 
 users 
 to 
 download 
 and 
 install 
 the 
 advertised 
 app 
 . 
 // 
 Clicking 
 this 
 ad 
 will 
 show 
 the 
 app 
 store 
 listing 
 as 
 an 
 overlay 
 ( 
 for 
 // 
 supported 
 formats 
 ), 
 without 
 leaving 
 the 
 publisher 
 app 
 . 
 // 
 Click 
 through 
 URL 
 for 
 this 
 ad 
 points 
 to 
 the 
 app 
 store 
 listing 
 . 
 INSTALLS 
 = 
 1 
 ; 
 // 
 For 
 re 
 - 
 engaging 
 existing 
 users 
 who 
 have 
 installed 
 the 
 advertised 
 app 
 . 
 // 
 Click 
 through 
 URL 
 for 
 this 
 ad 
 points 
 to 
 the 
 installed 
 app 
 directly 
 . 
 ENGAGEMENT 
 = 
 2 
 ; 
 // 
 Other 
 types 
 of 
 app 
 promotion 
 that 
 do 
 not 
 fall 
 into 
 the 
 categories 
 // 
 above 
 . 
 No 
 features 
 specific 
 to 
 app 
 promotion 
 types 
 will 
 apply 
 . 
 OTHER 
 = 
 3 
 ; 
 } 
 // 
 [ 
 AdX 
 : 
 BidResponse 
 . 
 Ad 
 . 
 app_promotion_type 
 ] 
 // 
 Type 
 of 
 the 
 app 
 promotion 
 corresponding 
 to 
 the 
 advertised 
 app 
 specified 
 // 
 in 
 the 
 seatbid 
 . 
 bid 
 . 
 bundle 
 field 
 . 
 // 
 If 
 the 
 advertised 
 app 
 is 
 not 
 specified 
 , 
 this 
 field 
 will 
 be 
 ignored 
 . 
 // 
 // 
 Setting 
 BidResponse 
 . 
 seatbid 
 . 
 bid 
 . 
 bundle 
 field 
 without 
 this 
 field 
 will 
 be 
 // 
 treated 
 as 
 if 
 this 
 field 
 were 
 set 
 to 
 OTHER 
 . 
 optional 
 AppPromotionType 
 app_promotion_type 
 = 
 28 
 ; 
 // 
 Whether 
 to 
 show 
 the 
 full 
 app 
 store 
 listing 
 for 
 // 
 BidResponse 
 . 
 seatbid 
 . 
 bid 
 . 
 bundle 
 field 
 ( 
 or 
 skadn 
 . 
 itunesitem 
 field 
 on 
 iOS 
 ) 
 // 
 within 
 the 
 publisher 
 app 
 , 
 after 
 the 
 video 
 playback 
 completes 
 and 
 before 
 the 
 // 
 endcard 
 ( 
 if 
 any 
 ) 
 appears 
 . 
 This 
 field 
 only 
 applies 
 to 
 rewarded 
 or 
 // 
 interstitial 
 video 
 ads 
 . 
 // 
 Contact 
 your 
 account 
 manager 
 if 
 you 
 would 
 like 
 to 
 enable 
 this 
 feature 
 . 
 optional 
 bool 
 auto_inline_install 
 = 
 29 
 ; 
 // 
 All 
 bids 
 with 
 the 
 same 
 bid_group_id 
 will 
 be 
 won 
 or 
 lost 
 as 
 a 
 group 
 . 
 // 
 Bids 
 must 
 have 
 a 
 non 
 - 
 empty 
 bid_group_id 
 to 
 allow 
 an 
 ad 
 to 
 be 
 played 
 // 
 as 
 part 
 of 
 a 
 pod 
 . 
 // 
 This 
 field 
 is 
 currently 
 only 
 supported 
 for 
 rewarded 
 video 
 pods 
 requests 
 . 
 // 
 Note 
 that 
 if 
 there 
 are 
 multiple 
 bids 
 for 
 the 
 same 
 ad 
 , 
 each 
 bid 
 must 
 have 
 // 
 different 
 bid_group_id 
 . 
 For 
 example 
 , 
 if 
 a 
 bidder 
 wants 
 to 
 bid 
 creative_1 
 // 
 for 
 first 
 position 
 and 
 last 
 position 
 in 
 the 
 pod 
 and 
 creative_2 
 for 
 any 
 // 
 position 
 and 
 want 
 to 
 ensure 
 either 
 both 
 win 
 at 
 the 
 same 
 time 
 or 
 neither 
 // 
 of 
 those 
 wins 
 , 
 bidder 
 needs 
 to 
 submit 
 : 
 // 
 { 
 // 
 "seatbid" 
 : 
 [ 
 // 
 { 
 // 
 "bid" 
 : 
 [ 
 // 
 { 
 // 
 "crid" 
 : 
 "creative_1" 
 , 
 // 
 "slotinpod" 
 : 
 1 
 , 
 // 
 "ext" 
 : 
 { 
 // 
 "bid_group_id" 
 : 
 "group1" 
 // 
 } 
 // 
 }, 
 // 
 { 
 // 
 "crid" 
 : 
 "creative_1" 
 , 
 // 
 "slotinpod" 
 : 
 - 
 1 
 , 
 // 
 "ext" 
 : 
 { 
 // 
 "bid_group_id" 
 : 
 "group2" 
 // 
 } 
 // 
 }, 
 // 
 { 
 // 
 "crid" 
 : 
 "creative_2" 
 , 
 // 
 "slotinpod" 
 : 
 0 
 , 
 // 
 "ext" 
 : 
 { 
 // 
 "bid_group_id" 
 : 
 "group1" 
 // 
 } 
 // 
 }, 
 // 
 { 
 // 
 "crid" 
 : 
 "creative_2" 
 , 
 // 
 "slotinpod" 
 : 
 0 
 , 
 // 
 "ext" 
 : 
 { 
 // 
 "bid_group_id" 
 : 
 "group2" 
 // 
 } 
 // 
 } 
 // 
 ] 
 // 
 } 
 // 
 ] 
 // 
 } 
 optional 
 string 
 bid_group_id 
 = 
 26 
 ; 
 // 
 The 
 Digital 
 Services 
 Act 
 ( 
 DSA 
 ) 
 transparency 
 declarations 
 . 
 See 
 // 
 https 
 : 
 // 
 support 
 . 
 google 
 . 
 com 
 / 
 admanager 
 / 
 answer 
 / 
 14335032. 
 message 
 Dsa 
 { 
 // 
 Free 
 text 
 string 
 describing 
 the 
 name 
 of 
 the 
 advertiser 
 on 
 whose 
 behalf 
 // 
 the 
 ad 
 is 
 shown 
 . 
 Bids 
 will 
 not 
 be 
 accepted 
 if 
 this 
 value 
 is 
 longer 
 // 
 than 
 100 
 characters 
 . 
 optional 
 string 
 behalf 
 = 
 1 
 ; 
 // 
 Free 
 text 
 string 
 describing 
 the 
 advertiser 
 who 
 paid 
 for 
 the 
 ad 
 . 
 Must 
 // 
 always 
 be 
 included 
 even 
 if 
 it 
 's the same as what is listed in the 
 // 
 displayed_on_behalf 
 attribute 
 . 
 Bids 
 will 
 not 
 be 
 accepted 
 if 
 this 
 value 
 // 
 is 
 longer 
 than 
 100 
 characters 
 . 
 optional 
 string 
 paid 
 = 
 2 
 ; 
 // 
 Indicates 
 that 
 the 
 buyer 
 will 
 render 
 their 
 own 
 DSA 
 transparency 
 // 
 information 
 inside 
 the 
 creative 
 . 
 optional 
 bool 
 adrender 
 = 
 3 
 ; 
 } 
 // 
 DSA 
 Ad 
 Transparency 
 information 
 provided 
 by 
 the 
 buyer 
 . 
 optional 
 Dsa 
 dsa 
 = 
 30 
 ; 
 // 
 Collapsible 
 banner 
 ad 
 information 
 . 
 In 
 collapsible 
 banner 
 format 
 , 
 the 
 // 
 ad 
 will 
 start 
 in 
 an 
 expanded 
 state 
 and 
 can 
 be 
 manually 
 collapsed 
 by 
 // 
 the 
 user 
 . 
 To 
 learn 
 more 
 about 
 collapsible 
 banner 
 ads 
 , 
 see 
 : 
 // 
 https 
 : 
 // 
 support 
 . 
 google 
 . 
 com 
 / 
 admanager 
 / 
 answer 
 / 
 14002717 
 ? 
 hl 
 = 
 en 
 . 
 message 
 CollapsibleAd 
 { 
 // 
 Width 
 of 
 the 
 creative 
 in 
 the 
 expanded 
 state 
 in 
 device 
 independent 
 // 
 pixels 
 ( 
 DIPS 
 ) 
 . 
 The 
 width 
 of 
 the 
 creative 
 in 
 the 
 collapsed 
 state 
 // 
 is 
 represented 
 by 
 BidResponse 
 . 
 seatbid 
 . 
 bid 
 . 
 w 
 . 
 If 
 wexp 
 is 
 greater 
 // 
 than 
 BidRequest 
 . 
 imp 
 . 
 banner 
 . 
 ext 
 . 
 clpadslot 
 . 
 wmax 
 , 
 the 
 ad 
 will 
 be 
 // 
 filtered 
 before 
 the 
 auction 
 . 
 optional 
 int32 
 wexp 
 = 
 1 
 ; 
 // 
 Height 
 of 
 the 
 creative 
 in 
 the 
 expanded 
 state 
 in 
 device 
 independent 
 // 
 pixels 
 ( 
 DIPS 
 ) 
 . 
 The 
 height 
 of 
 the 
 creative 
 in 
 the 
 collapsed 
 state 
 // 
 is 
 represented 
 by 
 BidResponse 
 . 
 seatbid 
 . 
 bid 
 . 
 h 
 . 
 If 
 hexp 
 is 
 greater 
 than 
 // 
 BidRequest 
 . 
 imp 
 . 
 banner 
 . 
 ext 
 . 
 clpadslot 
 . 
 hmax 
 , 
 the 
 ad 
 will 
 be 
 filtered 
 before 
 // 
 the 
 auction 
 . 
 optional 
 int32 
 hexp 
 = 
 2 
 ; 
 } 
 // 
 If 
 bidding 
 on 
 a 
 collapsible 
 banner 
 ad 
 slot 
 // 
 ( 
 see 
 : 
 BidRequest 
 . 
 imp 
 . 
 banner 
 . 
 ext 
 . 
 clpadslot 
 ), 
 you 
 may 
 populate 
 this 
 // 
 if 
 you 
 want 
 to 
 place 
 a 
 bid 
 with 
 a 
 collapsible 
 banner 
 ad 
 . 
 If 
 not 
 set 
 , 
 // 
 the 
 bid 
 will 
 be 
 rendered 
 as 
 a 
 traditional 
 banner 
 ad 
 . 
 optional 
 CollapsibleAd 
 clpad 
 = 
 31 
 ; 
 // 
 The 
 URLs 
 that 
 the 
 user 
 could 
 be 
 directed 
 to 
 when 
 clicking 
 on 
 this 
 ad 
 . 
 Do 
 // 
 not 
 include 
 URLs 
 for 
 intermediate 
 calls 
 to 
 an 
 ad 
 server 
 that 
 are 
 unrelated 
 // 
 to 
 the 
 final 
 landing 
 page 
 . 
 All 
 bids 
 must 
 declare 
 either 
 a 
 click 
 URL 
 using 
 // 
 this 
 field 
 , 
 the 
 advertiser 
 domain 
 in 
 the 
 ` 
 BidResponse 
 . 
 seatbid 
 . 
 bid 
 . 
 adomain 
 ` 
 // 
 field 
 , 
 or 
 both 
 . 
 We 
 recommend 
 that 
 bidders 
 use 
 this 
 field 
 , 
 possibly 
 in 
 // 
 addition 
 to 
 ` 
 BidResponse 
 . 
 seatbid 
 . 
 bid 
 . 
 adomain 
 ` 
 , 
 for 
 more 
 accurate 
 // 
 enforcement 
 of 
 publisher 
 and 
 user 
 protections 
 , 
 for 
 instance 
 so 
 that 
 your 
 // 
 bid 
 is 
 not 
 incorrectly 
 filtered 
 . 
 // 
 This 
 field 
 maps 
 to 
 BidResponse 
 . 
 ad 
 . 
 click_through_url 
 . 
 repeated 
 string 
 clickurl 
 = 
 32 
 ; 
 } 
 message 
 NativeRequestExt 
 { 
 // 
 [ 
 AdX 
 : 
 BidRequest 
 . 
 AdSlot 
 . 
 native_ad_template 
 [ 
 0 
 ] 
 . 
 style_id 
 ] 
 optional 
 int32 
 style_id 
 = 
 1 
 ; 
 // 
 [ 
 AdX 
 : 
 BidRequest 
 . 
 AdSlot 
 . 
 native_ad_template 
 [ 
 0 
 ] 
 . 
 style_height 
 ] 
 optional 
 int32 
 style_height 
 = 
 2 
 ; 
 // 
 [ 
 AdX 
 : 
 BidRequest 
 . 
 AdSlot 
 . 
 native_ad_template 
 [ 
 0 
 ] 
 . 
 style_width 
 ] 
 optional 
 int32 
 style_width 
 = 
 3 
 ; 
 // 
 [ 
 AdX 
 : 
 BidRequest 
 . 
 AdSlot 
 . 
 native_ad_template 
 [ 
 0 
 ] 
 . 
 style_layout_type 
 ] 
 enum 
 LayoutType 
 { 
 PIXEL 
 = 
 0 
 ; 
 FLUID 
 = 
 1 
 ; 
 } 
 optional 
 LayoutType 
 style_layout_type 
 = 
 4 
 [ 
 default 
 = 
 PIXEL 
 ]; 
 // 
 Ad 
 position 
 on 
 screen 
 . 
 optional 
 . 
 com 
 . 
 google 
 . 
 openrtb 
 . 
 AdPosition 
 pos 
 = 
 6 
 ; 
 } 
 message 
 EventTrackerExt 
 { 
 // 
 Parameters 
 associated 
 with 
 the 
 resource 
 that 
 will 
 be 
 passed 
 to 
 the 
 // 
 resource 
 when 
 it 
 is 
 loaded 
 . 
 The 
 format 
 of 
 the 
 parameters 
 is 
 dependent 
 // 
 on 
 the 
 script 
 vendor 
 . 
 optional 
 string 
 verification_parameters 
 = 
 2 
 ; 
 // 
 Used 
 to 
 uniquely 
 identify 
 the 
 verification 
 script 
 provider 
 . 
 optional 
 string 
 vendorKey 
 = 
 3 
 ; 
 } 
 message 
 PublisherExt 
 { 
 // 
 The 
 billing 
 address 
 country 
 code 
 of 
 the 
 publisher 
 . 
 This 
 may 
 be 
 different 
 // 
 from 
  
 the 
 hosting 
 country 
 of 
 the 
 website 
 . 
 For 
 a 
 complete 
 list 
 of 
 country 
 // 
 codes 
 , 
 refer 
 to 
 // 
 https 
 : 
 // 
 developers 
 . 
 google 
 . 
 com 
 / 
 adwords 
 / 
 api 
 / 
 docs 
 / 
 appendix 
 / 
 codes 
 - 
 formats 
 #country-codes 
 optional 
 string 
 country 
 = 
 1 
 ; 
 // 
 The 
 ID 
 of 
 the 
 host 
 publisher 
 . 
 When 
 populated 
 , 
 indicates 
 that 
 the 
 host 
 // 
 publisher 
 participated 
 in 
 revenue 
 sharing 
 , 
 and 
 the 
 ID 
 can 
 be 
 used 
 to 
 // 
 authorize 
 ads 
 . 
 txt 
 . 
 optional 
 string 
 host_publisher_id 
 = 
 2 
 ; 
 // 
 If 
 true 
 , 
 the 
 bidder 
 is 
 responsible 
 for 
 paying 
 the 
 publisher 
 directly 
 for 
 // 
 this 
 impression 
 . 
 optional 
 bool 
 directpay 
 = 
 3 
 ; 
 } 
 message 
 SiteExt 
 { 
 enum 
 AmpPage 
 { 
 // 
 This 
 is 
 not 
 an 
 AMP 
 page 
 . 
 DIALECT_HTML 
 = 
 0 
 ; 
 // 
 This 
 is 
 an 
 Amp 
 page 
 . 
 DIALECT_HTML_AMP 
 = 
 1 
 ; 
 } 
 // 
 Whether 
 this 
 is 
 an 
 AMP 
 page 
 or 
 not 
 . 
 Omitted 
 if 
 unknown 
 . 
 optional 
 AmpPage 
 amp 
 = 
 1 
 ; 
 enum 
 VisibilityState 
 { 
 VISIBILITY_STATE_UNKNOWN 
 = 
 0 
 ; 
 // 
 The 
 page 
 is 
 at 
 least 
 partially 
 visible 
 . 
 For 
 example 
 , 
 in 
 the 
 foreground 
 // 
 tab 
 of 
 a 
 non 
 - 
 minimized 
 window 
 . 
 VISIBILITY_STATE_VISIBLE 
 = 
 1 
 ; 
 // 
 The 
 page 
 is 
 not 
 visible 
 to 
 users 
 . 
 For 
 example 
 , 
 when 
 the 
 page 
 is 
 in 
 a 
 // 
 background 
 browser 
 tab 
 , 
 or 
 in 
 a 
 minimized 
 window 
 . 
 VISIBILITY_STATE_HIDDEN 
 = 
 2 
 ; 
 } 
 // 
 The 
 visibility 
 state 
 of 
 the 
 web 
 page 
 containing 
 the 
 ad 
 slot 
 . 
 // 
 See 
 https 
 : 
 // 
 www 
 . 
 w3 
 . 
 org 
 / 
 TR 
 / 
 page 
 - 
 visibility 
 /. 
 // 
 [ 
 AdX 
 : 
 BidRequest 
 . 
 page_visibility 
 ] 
 optional 
 VisibilityState 
 page_visibility 
 = 
 2 
 [ 
 default 
 = 
 VISIBILITY_STATE_UNKNOWN 
 ]; 
 // 
 Information 
 about 
 a 
 browser 
 window 
 's user activation state. See 
 // 
 https 
 : 
 // 
 html 
 . 
 spec 
 . 
 whatwg 
 . 
 org 
 / 
 multipage 
 / 
 interaction 
 . 
 html 
 #the-useractivation-interface. 
 message 
 UserActivation 
 { 
 // 
 Indicates 
 whether 
 a 
 user 
 has 
 completed 
 an 
 interaction 
 since 
 page 
 load 
 . 
 optional 
 bool 
 wasact 
 = 
 1 
 ; 
 // 
 Indicates 
 whether 
 a 
 user 
 is 
 currently 
 interacting 
 with 
 the 
 page 
 . 
 optional 
 bool 
 isact 
 = 
 2 
 ; 
 } 
 // 
 User 
 activation 
 information 
 from 
  
 the 
 browser 
 for 
 the 
 current 
 request 
 , 
 if 
 // 
 the 
 request 
 is 
 for 
 a 
 web 
 page 
 . 
 optional 
 UserActivation 
 uact 
 = 
 5 
 ; 
 // 
 The 
 set 
 of 
 possible 
 web 
 navigation 
 types 
 that 
 predicate 
 a 
 page 
 load 
 . 
 Each 
 // 
 of 
 these 
 types 
 may 
 have 
 different 
 performance 
 characteristics 
 . 
 For 
 example 
 , 
 // 
 users 
 going 
 back 
 and 
 forth 
 might 
 experience 
 a 
 faster 
 site 
 than 
 users 
 // 
 performing 
 navigation 
 for 
 the 
 first 
 time 
 or 
 submitting 
 forms 
 . 
 See 
 // 
 https 
 : 
 // 
 w3c 
 . 
 github 
 . 
 io 
 / 
 navigation 
 - 
 timing 
 / 
 #dom-performancenavigationtiming-type. 
 enum 
 NavigationType 
 { 
 NAVIGATION_TYPE_UNKNOWN 
 = 
 0 
 ; 
 // 
 Navigation 
 started 
 by 
 clicking 
 a 
 link 
 , 
 entering 
 the 
 URL 
 in 
 the 
 browser 
 's 
 // 
 address 
 bar 
 , 
 form 
 submission 
 , 
 or 
 initializing 
 through 
 a 
 script 
 operation 
 // 
 other 
 than 
 reload 
 and 
 back_forward 
 . 
 NAVIGATION_TYPE_NAVIGATE 
 = 
 1 
 ; 
 // 
 Navigation 
 is 
 through 
 the 
 browser 
 's reload operation, location.reload(), 
 // 
 or 
 a 
 Refresh 
 pragma 
 directive 
 like 
 // 
< meta 
 http 
 - 
 equiv 
 = 
 "refresh" 
 content 
 = 
 "300" 
> . 
 NAVIGATION_TYPE_RELOAD 
 = 
 2 
 ; 
 // 
 Navigation 
 is 
 through 
 the 
 browser 
 's history traversal operation. 
 NAVIGATION_TYPE_BACK_FORWARD 
 = 
 3 
 ; 
 // 
 Navigation 
 is 
 initiated 
 by 
 a 
 prerender 
 hint 
 ( 
 deprecated 
 ) 
 . 
 See 
 // 
 https 
 : 
 // 
 developer 
 . 
 mozilla 
 . 
 org 
 / 
 en 
 - 
 US 
 / 
 docs 
 / 
 Web 
 / 
 HTML 
 / 
 Attributes 
 / 
 rel 
 / 
 prerender 
 . 
 NAVIGATION_TYPE_PRERENDER 
 = 
 4 
 ; 
 } 
 // 
 The 
 type 
 of 
 browser 
 navigation 
 that 
 led 
 to 
 the 
 current 
 page 
 . 
 Unset 
 for 
 // 
 non 
 - 
 web 
 ad 
 requests 
 . 
 optional 
 NavigationType 
 ntype 
 = 
 6 
 ; 
 // 
 Indicates 
 that 
 the 
 request 
 is 
 using 
 semi 
 - 
 transparent 
 branding 
 , 
 // 
 which 
 means 
 only 
 a 
 truncated 
 version 
 of 
 the 
 request 
 URL 
 will 
 // 
 be 
 provided 
 . 
 This 
 decision 
 is 
 made 
 by 
 the 
 publisher 
 , 
 see 
 // 
 https 
 : 
 // 
 support 
 . 
 google 
 . 
 com 
 / 
 admanager 
 / 
 answer 
 / 
 4584891 
 #urls for context. 
 optional 
 bool 
 is_semi_transparent_request 
 = 
 3 
 ; 
 // 
 The 
 domain 
 of 
 the 
 partner 
 ( 
 of 
 the 
 site 
 owner 
 ) 
 with 
 ownership 
 // 
 of 
 some 
 portion 
 of 
 ad 
 inventory 
 on 
 the 
 site 
 . 
 The 
 partner 
 's ads.txt file 
 // 
 will 
 be 
 hosted 
 here 
 . 
 More 
 detail 
 at 
 // 
 http 
 : 
 // 
 iabtechlab 
 . 
 com 
 / 
 wp 
 - 
 content 
 / 
 uploads 
 / 
 2021 
 / 
 03 
 / 
 ctv 
 - 
 app 
 - 
 ads 
 - 
 explainer 
 - 
 guide 
 . 
 pdf 
 optional 
 string 
 inventorypartnerdomain 
 = 
 4 
 ; 
 } 
 message 
 BidRequestExt 
 { 
 // 
 Feedback 
 on 
 bids 
 submitted 
 in 
 previous 
 responses 
 . 
 This 
 is 
 only 
 set 
 if 
 // 
 real 
 - 
 time 
 feedback 
 is 
 enabled 
 for 
 your 
 bidder 
 . 
 Contact 
 your 
 // 
 account 
 manager 
 if 
 you 
 want 
 to 
 enable 
 real 
 - 
 time 
 feedback 
 . 
 message 
 BidFeedback 
 { 
 // 
 The 
 unique 
 id 
 from 
  
 BidRequest.id. 
 optional 
 string 
 request_id 
 = 
 1 
 ; 
 // 
 The 
 status 
 code 
 for 
 the 
 ad 
 . 
 See 
 creative 
 - 
 status 
 - 
 codes 
 . 
 txt 
 in 
 the 
 // 
 technical 
 documentation 
 for 
 a 
 list 
 of 
 ids 
 . 
 optional 
 int32 
 creative_status_code 
 = 
 2 
 ; 
 // 
 Deprecated 
 . 
 This 
 field 
 is 
 not 
 populated 
 and 
 will 
 be 
 removed 
 after 
 March 
 , 
 // 
 2025. 
 If 
 the 
 bid 
 won 
 the 
 auction 
 , 
 this 
 is 
 the 
 price 
 paid 
 in 
 your 
 account 
 // 
 currency 
 . 
 If 
 the 
 bid 
 participated 
 in 
 the 
 auction 
 but 
 was 
 out 
 - 
 bid 
 , 
 this 
 // 
 is 
 the 
 CPM 
 that 
 should 
 have 
 been 
 exceeded 
 in 
 order 
 to 
 win 
 . 
 This 
 is 
 not 
 // 
 set 
 if 
 the 
 bid 
 was 
 filtered 
 prior 
 to 
 the 
 auction 
 , 
 if 
 the 
 publisher 
 or 
 // 
 winning 
 bidder 
 has 
 opted 
 out 
 of 
 price 
 feedback 
 or 
 if 
 your 
 account 
 has 
 // 
 opted 
 out 
 of 
 sharing 
 winning 
 prices 
 with 
 other 
 bidders 
 . 
 For 
 first 
 - 
 price 
 // 
 auctions 
 , 
 minimum_bid_to_win 
 is 
 populated 
 instead 
 of 
 this 
 field 
 . 
 optional 
 double 
 price 
 = 
 3 
 [ 
 deprecated 
 = 
 true 
 ]; 
 // 
 The 
 minimum 
 bid 
 value 
 necessary 
 to 
 have 
 won 
 the 
 auction 
 , 
 in 
 your 
 account 
 // 
 currency 
 . 
 If 
 your 
 bid 
 won 
 the 
 auction 
 , 
 this 
 is 
 the 
 second 
 highest 
 bid 
 // 
 that 
 was 
 not 
 filtered 
 ( 
 including 
 the 
 floor 
 price 
 ) 
 . 
 If 
 your 
 bid 
 didn 
 't win 
 // 
 the 
 auction 
 , 
 this 
 is 
 the 
 winning 
 candidate 
 's bid. This field will only be 
 // 
 populated 
 if 
 your 
 bid 
 participated 
 in 
 a 
 first 
 - 
 price 
 auction 
 , 
 and 
 will 
 not 
 // 
 be 
 populated 
 if 
 your 
 bid 
 was 
 filtered 
 prior 
 to 
 the 
 auction 
 . 
 optional 
 double 
 minimum_bid_to_win 
 = 
 6 
 ; 
 // 
 The 
 minimum 
 bid 
 value 
 necessary 
 to 
 have 
 won 
 the 
 server 
 - 
 side 
 component 
 of 
 // 
 the 
 overall 
 auction 
 given 
 that 
 there 
 was 
 also 
 an 
 interest 
 group 
 bidding 
 // 
 component 
 to 
 the 
 overall 
 auction 
 which 
 ran 
 using 
 the 
 Protected 
 Audience 
 // 
 API 
 . 
 The 
 value 
 is 
 expressed 
 in 
 CPM 
 of 
 the 
 buyer 
 account 
 currency 
 . 
 The 
 // 
 minimum 
 bid 
 to 
 win 
 for 
 the 
 overall 
 auction 
 , 
 including 
 bids 
 from 
  
 the 
 // 
 server 
 - 
 side 
 and 
 the 
 on 
 - 
 device 
 interest 
 group 
 components 
 , 
 is 
 populated 
 in 
 // 
 the 
 minimum_bid_to_win 
 field 
 of 
 the 
 same 
 BidFeedback 
 object 
 . 
 optional 
 double 
 sscminbidtowin 
 = 
 14 
 ; 
 // 
 Billable 
 event 
 rate 
 multiplier 
 that 
 was 
 applied 
 to 
 this 
 bid 
 during 
 // 
 ranking 
 . 
 The 
 adjustment 
 reflects 
 the 
 likelihood 
 that 
 your 
 bid 
 would 
 // 
 generate 
 a 
 billable 
 event 
 ( 
 namely 
 , 
 the 
 ad 
 renders 
 successfully 
 ) 
 if 
 it 
 won 
 // 
 the 
 auction 
 , 
 relative 
 to 
 the 
 probability 
 that 
 other 
 bids 
 generate 
 a 
 // 
 billable 
 event 
 if 
 they 
 won 
 the 
 auction 
 . 
 This 
 adjustment 
 can 
 be 
 larger 
 or 
 // 
 smaller 
 than 
 1. 
 This 
 affects 
 the 
 final 
 ranking 
 in 
 the 
 auction 
 only 
 ; 
 in 
 // 
 particular 
 , 
 this 
 multiplier 
 does 
 not 
 affect 
 the 
 payment 
 or 
 whether 
 the 
 // 
 bid 
 clears 
 any 
 floor 
 price 
 . 
 optional 
 float 
 billable_event_rate_bid_adjustment 
 = 
 13 
 [ 
 default 
 = 
 1 
 ]; 
 // 
 When 
 a 
 publisher 
 uses 
 an 
 RTB 
 auction 
 and 
 waterfall 
 - 
 based 
 SDK 
 mediation 
 on 
 // 
 the 
 same 
 query 
 , 
 the 
 winner 
 of 
 the 
 real 
 - 
 time 
 auction 
 must 
 also 
 compete 
 in 
 // 
 a 
 mediation 
 waterfall 
 ( 
 which 
 is 
 ordered 
 by 
 price 
 ) 
 to 
 win 
 the 
 impression 
 . 
 // 
 If 
 the 
 bid 
 participated 
 in 
 the 
 auction 
 and 
 there 
 was 
 no 
 waterfall 
 , 
 the 
 // 
 value 
 of 
 this 
 field 
 is 
 0. 
 If 
 the 
 bid 
 participated 
 in 
 the 
 auction 
 and 
 // 
 there 
 was 
 a 
 waterfall 
 , 
 the 
 value 
 of 
 this 
 field 
 is 
 a 
 price 
 representing 
 a 
 // 
 sample 
 bid 
 from 
  
 the 
 eligible 
 mediation 
 networks 
 that 
 were 
 higher 
 than 
 the 
 // 
 auction 
 winner 
 , 
 weighted 
 by 
 expected 
 fill 
 rate 
 . 
 This 
 field 
 can 
 be 
 used 
 // 
 in 
 conjunction 
 with 
 minimum_bid_to_win 
 to 
 train 
 bidding 
 models 
 . 
 The 
 CPM 
 // 
 is 
 in 
 your 
 account 
 currency 
 . 
 optional 
 double 
 sampled_mediation_cpm_ahead_of_auction_winner 
 = 
 8 
 ; 
 message 
 EventNotificationToken 
 { 
 // 
 The 
 contents 
 of 
 the 
 token 
 . 
 optional 
 string 
 payload 
 = 
 1 
 ; 
 } 
 // 
 The 
 token 
 included 
 in 
 the 
 corresponding 
 bid 
 . 
 optional 
 EventNotificationToken 
 event_notification_token 
 = 
 4 
 ; 
 // 
 The 
 creative 
 ID 
 included 
 in 
 the 
 corresponding 
 bid 
 . 
 optional 
 string 
 buyer_creative_id 
 = 
 5 
 ; 
 // 
 Possible 
 types 
 of 
 bid 
 response 
 feedback 
 objects 
 . 
 enum 
 FeedbackType 
 { 
 FEEDBACK_TYPE_UNSPECIFIED 
 = 
 0 
 ; 
 // 
 Feedback 
 for 
 a 
 bid 
 that 
 was 
 submitted 
 on 
 a 
 bid 
 response 
 . 
 BID_FEEDBACK 
 = 
 1 
 ; 
 // 
 Feedback 
 for 
 an 
 interest 
 group 
 buyer 
 submitted 
 on 
 a 
 bid 
 response 
 to 
 // 
 particpate 
 in 
 an 
 interest 
 group 
 bidding 
 component 
 of 
 the 
 auction 
 run 
 // 
 using 
 the 
 Protected 
 Audience 
 API 
 . 
 INTEREST_GROUP_BUYER_FEEDBACK 
 = 
 2 
 ; 
 } 
 // 
 The 
 type 
 of 
 the 
 BidFeedback 
 message 
 . 
 Google 
 will 
 send 
 separate 
 // 
 BidFeedback 
 objects 
 for 
 : 
 // 
 a 
 ) 
 Each 
 bid 
 submitted 
 on 
 a 
 bid 
 response 
 // 
 b 
 ) 
 Each 
 buyer 
 submitted 
 on 
 a 
 bid 
 response 
 to 
 particpate 
 in 
 an 
 interest 
 // 
 group 
 bidding 
 component 
 of 
 the 
 auction 
 run 
 using 
 the 
 Protected 
 Audience 
 // 
 API 
 . 
 optional 
 FeedbackType 
 feedbacktype 
 = 
 15 
 ; 
 // 
 Origin 
 of 
 an 
 interest 
 group 
 buyer 
 that 
 was 
 included 
 in 
 the 
 bid 
 response 
 . 
 // 
 This 
 field 
 is 
 populated 
 only 
 for 
 feedback 
 where 
 a 
 bidder 
 opted 
 in 
 an 
 // 
 interest 
 group 
 buyer 
 to 
 participate 
 in 
 the 
 interest 
 group 
 bidding 
 // 
 component 
 of 
 the 
 overall 
 auction 
 run 
 using 
 the 
 Protected 
 Audience 
 API 
 . 
 // 
 To 
 learn 
 more 
 about 
 origins 
 , 
 see 
 https 
 : 
 // 
 www 
 . 
 rfc 
 - 
 editor 
 . 
 org 
 / 
 rfc 
 / 
 rfc6454 
 . 
 // 
 To 
 learn 
 more 
 about 
 interest 
 group 
 bidding 
 and 
 the 
 Protected 
 Audience 
 // 
 API 
 , 
 see 
 // 
 https 
 : 
 // 
 developers 
 . 
 google 
 . 
 com 
 / 
 authorized 
 - 
 buyers 
 / 
 rtb 
 / 
 fledge 
 - 
 origin 
 - 
 trial 
 . 
 optional 
 string 
 buyerorigin 
 = 
 16 
 ; 
 // 
 The 
 status 
 code 
 for 
 the 
 submitted 
 interest 
 group 
 buyer 
 . 
 This 
 field 
 is 
 // 
 only 
 populated 
 in 
 the 
 feedback 
 for 
 an 
 interest 
 group 
 buyer 
 that 
 a 
 bidder 
 // 
 requested 
 to 
 enter 
 into 
 the 
 interest 
 group 
 auction 
 through 
 the 
 bid 
 // 
 response 
 . 
 Individual 
 creative 
 status 
 codes 
 of 
 bids 
 submitted 
 by 
 the 
 buyer 
 // 
 in 
 the 
 on 
 - 
 device 
 interest 
 group 
 auction 
 are 
 not 
 available 
 . 
 See 
 // 
 https 
 : 
 // 
 storage 
 . 
 googleapis 
 . 
 com 
 / 
 adx 
 - 
 rtb 
 - 
 dictionaries 
 / 
 interest 
 - 
 group 
 - 
 buyer 
 - 
 status 
 - 
 codes 
 . 
 txt 
 // 
 for 
 a 
 list 
 of 
 interest 
 group 
 buyer 
 status 
 codes 
 . 
 optional 
 int32 
 igbuyerstatus 
 = 
 17 
 ; 
 } 
 repeated 
 BidFeedback 
 bid_feedback 
 = 
 1 
 ; 
 // 
 This 
 represents 
 a 
 unique 
 ID 
 for 
 the 
 overall 
 query 
 . 
 In 
 the 
 event 
 // 
 that 
 there 
 are 
 multiple 
 callouts 
 for 
 a 
 query 
 , 
 all 
 callout 
 requests 
 for 
 that 
 // 
 query 
 will 
 contain 
 the 
 same 
 google_query_id 
 . 
 optional 
 string 
 google_query_id 
 = 
 2 
 ; 
 // 
 Experimental 
 feature 
 ; 
 may 
 be 
 subject 
 to 
 change 
 . 
 See 
 // 
 https 
 : 
 // 
 support 
 . 
 google 
 . 
 com 
 / 
 authorizedbuyers 
 / 
 answer 
 / 
 10890762 
 for 
 more 
 // 
 information 
 . 
 // 
 // 
 Describes 
 the 
 scope 
 of 
 frequency 
 cap 
 enforcement 
 available 
 for 
 this 
 // 
 request 
 . 
 Frequency 
 caps 
 to 
 be 
 enforced 
 for 
 a 
 bid 
 can 
 be 
 specified 
 in 
 the 
 // 
 Bid 
 . 
 ext 
 . 
 fcap 
 field 
 . 
 enum 
 FrequencyCappingScope 
 { 
 // 
 Default 
 value 
 which 
 should 
 not 
 be 
 used 
 , 
 or 
 which 
 can 
 indicate 
 that 
 // 
 frequency 
 cap 
 scope 
 could 
 not 
 be 
 reliably 
 determined 
 . 
 FREQUENCY_CAPPING_SCOPE_UNKNOWN 
 = 
 0 
 ; 
 // 
 Frequency 
 capping 
 based 
 on 
 bid 
 response 
 specifications 
 is 
 not 
 available 
 // 
 for 
 this 
 request 
 . 
 A 
 frequency 
 - 
 capped 
 bid 
 for 
 a 
 bid 
 request 
 with 
 no 
 // 
 frequency 
 cap 
 availability 
 will 
 be 
 filtered 
 prior 
 to 
 the 
 auction 
 . 
 FREQUENCY_CAPPING_SCOPE_NONE 
 = 
 1 
 ; 
 // 
 Frequency 
 capping 
 enforcement 
 is 
 available 
 across 
 multiple 
 sites 
 within 
 // 
 the 
 same 
 browser 
 . 
 FREQUENCY_CAPPING_SCOPE_BROWSER 
 = 
 2 
 ; 
 // 
 Frequency 
 capping 
 enforcement 
 is 
 available 
 across 
 multiple 
 apps 
 on 
 the 
 // 
 device 
 , 
 excluding 
 browsers 
 . 
 FREQUENCY_CAPPING_SCOPE_DEVICE 
 = 
 3 
 ; 
 // 
 Frequency 
 capping 
 enforcement 
 is 
 available 
 within 
 a 
 single 
 app 
 . 
 FREQUENCY_CAPPING_SCOPE_APP 
 = 
 4 
 ; 
 // 
 Frequency 
 capping 
 enforcement 
 is 
 available 
 within 
 a 
 single 
 site 
 . 
 FREQUENCY_CAPPING_SCOPE_SITE 
 = 
 5 
 ; 
 } 
 optional 
 FrequencyCappingScope 
 fcap_scope 
 = 
 4 
 ; 
 // 
 Privacy 
 treatments 
 . 
 Some 
 fields 
 in 
 the 
 bid 
 request 
 can 
 be 
 coarsened 
 or 
 // 
 redacted 
 in 
 order 
 to 
 protect 
 user 
 privacy 
 . 
 This 
 message 
 provides 
 // 
 information 
 about 
 privacy 
 treatments 
 that 
 apply 
 to 
 an 
 ad 
 opportunity 
 // 
 offered 
 through 
 this 
 request 
 . 
 message 
 PrivacyTreatments 
 { 
 // 
 Generalization 
 that 
 can 
 be 
 applied 
 to 
 an 
 IP 
 address 
 field 
 . 
 enum 
 IpGeneralization 
 { 
 // 
 The 
 IP 
 address 
 field 
 is 
 truncated 
 : 
 IPv4 
 to 
 / 
 24 
 or 
 IPv6 
 to 
 / 
 48. 
 // 
 The 
 truncated 
 octets 
 are 
 replaced 
 by 
 zeros 
 so 
 the 
 field 
 still 
 parses 
 // 
 as 
 a 
 valid 
 IP 
 address 
 , 
 for 
 example 
 "xxx.yyy.zzz.0" 
 for 
 IPv4 
 . 
 IP_TRUNCATED 
 = 
 0 
 ; 
 // 
 The 
 IP 
 address 
 field 
 is 
 redacted 
 . 
 IP_REDACTED 
 = 
 2 
 ; 
 } 
 // 
 Generalization 
 applied 
 to 
 the 
 IP 
 address 
 field 
 populated 
 in 
 the 
 request 
 // 
 ( 
 either 
 BidRequest 
 . 
 device 
 . 
 ip 
 or 
 BidRequest 
 . 
 device 
 . 
 ipv6 
 ) 
 . 
 optional 
 IpGeneralization 
 ip 
 = 
 1 
 ; 
 // 
 Generalization 
 that 
 can 
 be 
 applied 
 to 
 the 
 BidRequest 
 . 
 device 
 . 
 ua 
 and 
 // 
 BidRequest 
 . 
 device 
 . 
 sua 
 fields 
 . 
 enum 
 UserAgentGeneralization 
 { 
 // 
 The 
 BidRequest 
 . 
 device 
 . 
 ua 
 and 
 BidRequest 
 . 
 device 
 . 
 sua 
 fields 
 are 
 provided 
 // 
 in 
 full 
 . 
 USER_AGENT_FULL 
 = 
 0 
 ; 
 // 
 The 
 BidRequest 
 . 
 device 
 . 
 ua 
 and 
 BidRequest 
 . 
 device 
 . 
 sua 
 fields 
 are 
 // 
 generalized 
 , 
 which 
 can 
 include 
 limiting 
 browser 
 and 
 OS 
 version 
 // 
 information 
 to 
 major 
 versions 
 only 
 and 
 other 
 changes 
 to 
 protect 
 user 
 // 
 privacy 
 . 
 USER_AGENT_COARSE 
 = 
 1 
 ; 
 } 
 // 
 Generalization 
 that 
 was 
 applied 
 to 
 the 
 BidRequest 
 . 
 device 
 . 
 ua 
 and 
 // 
 BidRequest 
 . 
 device 
 . 
 sua 
 fields 
 , 
 if 
 any 
 . 
 optional 
 UserAgentGeneralization 
 user_agent 
 = 
 2 
 ; 
 // 
 Specifies 
 the 
 reasons 
 that 
 ads 
 returned 
 in 
 response 
 to 
 this 
 request 
 // 
 should 
 not 
 be 
 personalized 
 . 
 This 
 signal 
 does 
 not 
 reflect 
 user 
 decisions 
 // 
 on 
 surfaces 
 including 
 iOS 
 App 
 Tracking 
 Transparency 
 // 
 ( 
 https 
 : 
 // 
 developer 
 . 
 apple 
 . 
 com 
 / 
 documentation 
 / 
 apptrackingtransparency 
 ) 
 or 
 // 
 Android 
 advertising 
 ID 
 // 
 ( 
 https 
 : 
 // 
 support 
 . 
 google 
 . 
 com 
 / 
 googleplay 
 / 
 android 
 - 
 developer 
 / 
 answer 
 / 
 6048248 
 ) 
 . 
 // 
 See 
 BidRequest 
 . 
 device 
 . 
 lmt 
 and 
 BidRequest 
 . 
 device 
 . 
 ext 
 . 
 atts 
 fields 
 for 
 more 
 // 
 information 
 . 
 enum 
 NonPersonalizedAdsReason 
 { 
 UNKNOWN 
 = 
 0 
 ; 
 // 
 The 
 publisher 
 has 
 declared 
 that 
 this 
 request 
 should 
 serve 
 // 
 non 
 - 
 personalized 
 ads 
 independent 
 of 
 other 
 signals 
 . 
 // 
 https 
 : 
 // 
 support 
 . 
 google 
 . 
 com 
 / 
 admanager 
 / 
 answer 
 / 
 9005435 
 #npa 
 PUBLISHER_DECLARED_NPA 
 = 
 1 
 ; 
 // 
 The 
 publisher 
 has 
 requested 
 restricted 
 data 
 processing 
 for 
 this 
 // 
 request 
 . 
 https 
 : 
 // 
 support 
 . 
 google 
 . 
 com 
 / 
 authorizedbuyers 
 / 
 answer 
 / 
 11121285 
 RESTRICT_DATA_PROCESSING 
 = 
 2 
 ; 
 // 
 The 
 user 
 has 
 opted 
 out 
 of 
 ads 
 personalization 
 . 
 USER_OPT_OUT 
 = 
 3 
 ; 
 } 
 repeated 
 NonPersonalizedAdsReason 
 non_personalized_ads_reason 
 = 
 6 
 [ 
 packed 
 = 
 true 
 ]; 
 // 
 True 
 if 
 publisher 
 grants 
 the 
 permission 
 to 
 allow 
 the 
 bidder 
 to 
 use 
 bid 
 // 
 request 
 data 
 to 
 build 
 user 
 profiles 
 for 
 uses 
 such 
 as 
 interest 
 - 
 based 
 ads 
 // 
 and 
 remarketing 
 . 
 To 
 use 
 this 
 data 
 to 
 build 
 user 
 profiles 
 , 
 a 
 bidder 
 must 
 // 
 also 
 win 
 a 
 given 
 impression 
 . 
 // 
 Learn 
 more 
 about 
 data 
 collection 
 controls 
 : 
 // 
 https 
 : 
 // 
 support 
 . 
 google 
 . 
 com 
 / 
 admanager 
 / 
 answer 
 / 
 11956152 
 optional 
 bool 
 allow_user_data_collection 
 = 
 7 
 ; 
 // 
 Reasons 
 why 
 on 
 - 
 device 
 storage 
 access 
 could 
 be 
 restricted 
 during 
 the 
 // 
 delivery 
 of 
 a 
 winning 
 ad 
 . 
 enum 
 DeviceStorageRestrictionReason 
 { 
 DEVICE_STORAGE_RESTRICTION_UNKNOWN 
 = 
 0 
 ; 
 // 
 This 
 request 
 is 
 subject 
 to 
 user 
 consent 
 requirements 
 to 
 allow 
 for 
 // 
 device 
 storage 
 access 
 for 
 advertising 
 use 
 cases 
 such 
 as 
 ads 
 // 
 measurement 
 , 
 frequency 
 capping 
 , 
 or 
 profiling 
 , 
 but 
 consent 
 was 
 // 
 insufficient 
 or 
 not 
 provided 
 . 
 INSUFFICIENT_USER_CONSENT 
 = 
 1 
 ; 
 } 
 // 
 Indicates 
 the 
 reason 
 why 
 access 
 of 
 local 
 device 
 storage 
 during 
 winning 
 ad 
 // 
 rendering 
 and 
 measurement 
 is 
 restricted 
 . 
 optional 
 DeviceStorageRestrictionReason 
 storagerestrict 
 = 
 8 
 ; 
 } 
 optional 
 PrivacyTreatments 
 privacy_treatments 
 = 
 5 
 ; 
 // 
 Contains 
 labels 
 indicating 
 the 
 experiment 
 or 
 control 
 groups 
 that 
 are 
 // 
 active 
 for 
 this 
 request 
 . 
 Work 
 with 
 your 
 account 
 manager 
 to 
 opt 
 in 
 to 
 an 
 // 
 experiment 
 . 
 The 
 exact 
 set 
 of 
 experiments 
 available 
 , 
 their 
 meaning 
 , 
 and 
 // 
 whether 
 there 
 is 
 any 
 action 
 required 
 from 
  
 the 
 bidder 
 varies 
 from 
  
 experiment 
 // 
 to 
 experiment 
 and 
 will 
 be 
 communicated 
 separately 
 . 
 // 
 // 
 If 
 empty 
 , 
 then 
 this 
 request 
 is 
 not 
 part 
 of 
 any 
 experiment 
 or 
 control 
 group 
 , 
 // 
 or 
 your 
 bidder 
 is 
 not 
 participating 
 in 
 any 
 experiments 
 . 
 repeated 
 string 
 expids 
 = 
 6 
 ; 
 } 
 message 
 UserExt 
 { 
 message 
 ConsentedProvidersSettings 
 { 
 // 
 Set 
 of 
 IDs 
 corresponding 
 to 
 ad 
 tech 
 providers 
 ( 
 ATPs 
 ) 
 for 
 whom 
 the 
 // 
 publisher 
 has 
 specified 
 to 
 Google 
 that 
 its 
 EEA 
 users 
 have 
 given 
 legally 
 // 
 valid 
 consent 
 to 
 : 
 1 
 ) 
 the 
 use 
 of 
 cookies 
 or 
 other 
 local 
 storage 
 where 
 // 
 legally 
 required 
 ; 
 and 
 2 
 ) 
 the 
 collection 
 , 
 sharing 
 , 
 and 
 use 
 of 
 personal 
 // 
 data 
 for 
 personalization 
 of 
 ads 
 by 
 an 
 ATP 
 in 
 accordance 
 with 
 Google 
 's EU 
 // 
 User 
 Consent 
 Policy 
 . 
 // 
 // 
 If 
 a 
 publisher 
 is 
 using 
 the 
 IAB 
 Transparency 
 and 
 Consent 
 Framework 
 ( 
 TCF 
 ) 
 // 
 v2 
 to 
 manage 
 user 
 consent 
 , 
 this 
 is 
 the 
 set 
 of 
 ATPs 
 consented 
 through 
 the 
 // 
 Additional 
 Consent 
 string 
 ( 
 see 
 // 
 https 
 : 
 // 
 support 
 . 
 google 
 . 
 com 
 / 
 admanager 
 / 
 answer 
 / 
 9681920 
 for 
 details 
 about 
 // 
 Google 
 's Additional Consent mode). ATPs consented through the TCF v2 
 // 
 consent 
 string 
 are 
 represented 
 in 
 the 
 UserExt 
 . 
 consent 
 field 
 . 
 // 
 // 
 A 
 mapping 
 of 
 ATP 
 ID 
 to 
 ATP 
 name 
 is 
 posted 
 at 
 providers 
 . 
 csv 
 . 
 repeated 
 int64 
 consented_providers 
 = 
 2 
 [ 
 packed 
 = 
 true 
 ]; 
 // 
 The 
 raw 
 Additional 
 Consent 
 string 
 , 
 which 
 contains 
 a 
 list 
 of 
 certain 
 // 
 Google 
 Ad 
 Tech 
 Providers 
 ( 
 ATPs 
 ) 
 . 
 These 
 ATPs 
 are 
 not 
 registered 
 with 
 IAB 
 // 
 TCF 
 v2 
 , 
 but 
 publishers 
 or 
 their 
 Consent 
 Management 
 Providers 
 ( 
 CMPs 
 ) 
 have 
 // 
 ensured 
 that 
 certain 
 disclosures 
 are 
 given 
 to 
 , 
 and 
 consents 
 are 
 obtained 
 // 
 from 
 , 
 end 
 users 
 , 
 as 
 required 
 by 
 Google 
 's EU User Consent Policy. This 
 // 
 field 
 is 
 only 
 populated 
 with 
 the 
 use 
 of 
 CMPs 
 that 
 are 
 integrated 
 with 
 IAB 
 // 
 TCF 
 v2 
 . 
 Such 
 CMPs 
 use 
 the 
 raw 
 Additional 
 Consent 
 string 
 to 
 indicate 
 // 
 vendors 
 that 
 are 
 not 
 registered 
 with 
 IAB 
 , 
 and 
 communicate 
 end 
 users 
 ' CMP 
 // 
 choices 
 to 
 those 
 vendors 
 . 
 The 
 consented_providers 
 field 
 contains 
 the 
 set 
 // 
 of 
 vendors 
 that 
 mirrors 
 the 
 one 
 represented 
 by 
 the 
 additional_consent 
 // 
 field 
 , 
 which 
 is 
 in 
 the 
 raw 
 form 
 . 
 Vendors 
 or 
 any 
 other 
 third 
 - 
 party 
 service 
 // 
 providers 
 must 
 not 
 create 
 AC 
 strings 
 themselves 
 . 
 // 
 // 
 See 
 https 
 : 
 // 
 support 
 . 
 google 
 . 
 com 
 / 
 admanager 
 / 
 answer 
 / 
 9681920 
 for 
 more 
 details 
 // 
 about 
 this 
 field 
 . 
 optional 
 string 
 additional_consent 
 = 
 3 
 ; 
 } 
 // 
 Information 
 about 
 the 
 ad 
 tech 
 providers 
 for 
 whom 
 the 
 publisher 
 has 
 // 
 specified 
 to 
 Google 
 that 
 its 
 EEA 
 user 
 has 
 consented 
 to 
 the 
 use 
 of 
 their 
 // 
 personal 
 data 
 for 
 ads 
 personalization 
 in 
 accordance 
 with 
 Google 
 's EU User 
 // 
 Consent 
 Policy 
 . 
 This 
 field 
 will 
 only 
 be 
 populated 
 when 
 RegsExt 
 . 
 gdpr 
 is 
 // 
 true 
 . 
 optional 
 ConsentedProvidersSettings 
 consented_providers_settings 
 = 
 1 
 ; 
 // 
 The 
 web 
 - 
 safe 
 base64 
 - 
 encoded 
 IAB 
 Transparency 
 and 
 Consent 
 Framework 
 ( 
 TCF 
 ) 
 v2 
 // 
 consent 
 string 
 fetched 
 from 
  
 the 
 publisher 
 's IAB Consent Management Platform 
 // 
 ( 
 CMP 
 ) 
 . 
 The 
 structure 
 of 
 the 
 string 
 is 
 defined 
 by 
 the 
 IAB 
 TCF 
 v2 
 . 
 This 
 field 
 // 
 will 
 be 
 populated 
 if 
 the 
 publisher 
 has 
 integrated 
 with 
 a 
 CMP 
 for 
 TCF 
 v2 
 and 
 // 
 that 
 CMP 
 indicates 
 that 
 GDPR 
 applies 
 to 
 this 
 ad 
 request 
 and 
 provides 
 a 
 // 
 valid 
 consent 
 string 
 . 
 See 
 // 
 https 
 : 
 // 
 support 
 . 
 google 
 . 
 com 
 / 
 authorizedbuyers 
 / 
 answer 
 / 
 9789378 
 for 
 additional 
 // 
 information 
 about 
 the 
 Google 
 TCF 
 v2 
 integration 
 . 
 // 
 // 
 See 
 the 
 IAB 
 Global 
 Vendor 
 List 
 at 
 // 
 https 
 : 
 // 
 vendor 
 - 
 list 
 . 
 consensu 
 . 
 org 
 / 
 v2 
 / 
 vendor 
 - 
 list 
 . 
 json 
 for 
 details 
 about 
 the 
 // 
 vendors 
 listed 
 in 
 the 
 consent 
 string 
 . 
 optional 
 string 
 consent 
 = 
 2 
 ; 
 // 
 Data 
 made 
 available 
 by 
 the 
 publisher 
 , 
 such 
 as 
 secure 
 signals 
 . 
 // 
 https 
 : 
 // 
 github 
 . 
 com 
 / 
 InteractiveAdvertisingBureau 
 / 
 openrtb 
 / 
 blob 
 / 
 master 
 / 
 extensions 
 / 
 2. 
 x_official_extensions 
 / 
 eids 
 . 
 md 
 repeated 
 . 
 com 
 . 
 google 
 . 
 openrtb 
 . 
 BidRequest 
 . 
 User 
 . 
 EID 
 eids 
 = 
 5 
 ; 
 // 
 Describes 
 a 
 user 
 session 
 in 
 a 
 given 
 app 
 or 
 site 
 . 
 The 
 session 
 is 
 reset 
 after 
 // 
 a 
 sufficiently 
 long 
 break 
 in 
 user 
 activity 
 . 
 message 
 Session 
 { 
 // 
 Time 
 in 
 seconds 
 since 
 the 
 first 
 ad 
 request 
 in 
 the 
 session 
 . 
 Currently 
 the 
 // 
 session 
 duration 
 is 
 only 
 supported 
 for 
 mobile 
 app 
 requests 
 . 
 optional 
 int32 
 duration 
 = 
 1 
 ; 
 // 
 Previous 
 number 
 of 
 total 
 user 
 ad 
 requests 
 made 
 during 
 the 
 session 
 . 
 Scoped 
 // 
 to 
 the 
 app 
 and 
 resets 
 at 
 the 
 same 
 time 
 as 
 duration 
 . 
 Currently 
 , 
 available 
 // 
 on 
 mobile 
 app 
 requests 
 and 
 webview 
 requests 
 , 
 where 
 webview 
 is 
 configured 
 // 
 with 
 WebView 
 API 
 for 
 Ads 
 . 
 See 
 // 
 https 
 : 
 // 
 developers 
 . 
 google 
 . 
 com 
 / 
 admob 
 / 
 android 
 / 
 browser 
 / 
 webview 
 / 
 api 
 - 
 for 
 - 
 ads 
 optional 
 int32 
 depth 
 = 
 2 
 ; 
 // 
 Previous 
 number 
 of 
 total 
 user 
 ad 
 requests 
 since 
 the 
 time 
 the 
 current 
 app 
 // 
 was 
 last 
 started 
 . 
 Scoped 
 to 
 the 
 app 
 and 
 resets 
 on 
 app 
 open 
 . 
 Currently 
 , 
 // 
 available 
 on 
 mobile 
 app 
 requests 
 and 
 webview 
 requests 
 , 
 where 
 webview 
 is 
 // 
 configured 
 with 
 WebView 
 API 
 for 
 Ads 
 . 
 See 
 // 
 https 
 : 
 // 
 developers 
 . 
 google 
 . 
 com 
 / 
 admob 
 / 
 android 
 / 
 browser 
 / 
 webview 
 / 
 api 
 - 
 for 
 - 
 ads 
 optional 
 int32 
 requestssinceappopen 
 = 
 3 
 ; 
 // 
 Prior 
 number 
 of 
 clicks 
 within 
 the 
 app 
 as 
 measured 
 by 
 Google 
 Mobile 
 Ads 
 // 
 SDK 
 from 
  
 the 
 time 
 the 
 current 
 app 
 was 
 last 
 started 
 . 
 optional 
 int32 
 priorclicks 
 = 
 4 
 ; 
 } 
 // 
 The 
 current 
 user 
 session 
 . 
 optional 
 Session 
 session 
 = 
 6 
 ; 
 // 
 The 
 amount 
 of 
 time 
 , 
 in 
 seconds 
 , 
 since 
 the 
 ID 
 in 
 ` 
 BidRequest 
 . 
 user 
 . 
 id 
 ` 
 was 
 // 
 created 
 . 
 optional 
 int32 
 idage 
 = 
 7 
 ; 
 } 
 message 
 UIDExt 
 { 
 // 
 The 
 source 
 type 
 of 
 the 
 UID 
 . 
 See 
 details 
 at 
 // 
 https 
 : 
 // 
 developers 
 . 
 google 
 . 
 com 
 / 
 authorized 
 - 
 buyers 
 / 
 rtb 
 / 
 openrtb 
 - 
 guide 
 #uid-stype 
 optional 
 string 
 stype 
 = 
 1 
 ; 
 } 
 message 
 DataExt 
 { 
 // 
 Identifies 
 the 
 taxonomy 
 that 
 the 
 segment 
 IDs 
 belong 
 to 
 . 
 // 
 Google 
 supports 
 the 
 following 
 taxonomies 
 : 
 // 
 https 
 : 
 // 
 github 
 . 
 com 
 / 
 InteractiveAdvertisingBureau 
 / 
 Taxonomies 
 / 
 blob 
 / 
 main 
 / 
 Audience 
 % 
 20 
 Taxonomies 
 / 
 Audience 
 % 
 20 
 Taxonomy 
 % 
 201.1 
 . 
 tsv 
 // 
 IAB 
 Tech 
 Lab 
 Audience 
 Taxonomy 
 1.1 
 = 
 4 
 // 
 https 
 : 
 // 
 github 
 . 
 com 
 / 
 InteractiveAdvertisingBureau 
 / 
 Taxonomies 
 / 
 blob 
 / 
 main 
 / 
 Content 
 % 
 20 
 Taxonomies 
 / 
 Content 
 % 
 20 
 Taxonomy 
 % 
 202.2 
 . 
 tsv 
 // 
 IAB 
 Tech 
 Lab 
 Content 
 Taxonomy 
 2.2 
 = 
 6 
 // 
 https 
 : 
 // 
 github 
 . 
 com 
 / 
 InteractiveAdvertisingBureau 
 / 
 Taxonomies 
 / 
 blob 
 / 
 main 
 / 
 Content 
 % 
 20 
 Taxonomies 
 / 
 Content 
 % 
 20 
 Taxonomy 
 % 
 203.0 
 . 
 tsv 
 // 
 IAB 
 Tech 
 Lab 
 Content 
 Taxonomy 
 3.0 
 = 
 7 
 // 
 https 
 : 
 // 
 github 
 . 
 com 
 / 
 patcg 
 - 
 individual 
 - 
 drafts 
 / 
 topics 
 / 
 blob 
 / 
 main 
 / 
 taxonomy_v1 
 . 
 md 
 // 
 Chromium 
 Topics 
 API 
 = 
 600 
 // 
 https 
 : 
 // 
 github 
 . 
 com 
 / 
 patcg 
 - 
 individual 
 - 
 drafts 
 / 
 topics 
 / 
 blob 
 / 
 main 
 / 
 taxonomy_v2 
 . 
 md 
 // 
 Chromium 
 Topics 
 API 
 V2 
 = 
 601 
 optional 
 int32 
 segtax 
 = 
 1 
 ; 
 // 
 The 
 version 
 of 
 the 
 classifier 
 which 
 produced 
 the 
 segment 
 IDs 
 within 
 the 
 // 
 taxonomy 
 . 
 For 
 example 
 , 
 in 
 the 
 case 
 of 
 Chrome 
 Topics 
 API 
 ( 
 segtax 
 = 
 600 
 ), 
 this 
 // 
 is 
 the 
 version 
 of 
 the 
 classifier 
 used 
 by 
 the 
 browser 
 to 
 map 
 hostnames 
 to 
 // 
 topics 
 in 
 the 
 taxonomy 
 . 
 optional 
 string 
 segclass 
 = 
 2 
 ; 
 } 
 message 
 DeviceExt 
 { 
 // 
 Represents 
 a 
 short 
 - 
 lived 
 user 
 session 
 on 
 CTV 
 / 
 OTT 
 devices 
 , 
 // 
 with 
 a 
 maximum 
 session 
 duration 
 of 
 6 
 hours 
 . 
 // 
 The 
 use 
 of 
 session_id 
 is 
 never 
 allowed 
 for 
 ads 
 personalization 
 . 
 // 
 session_id 
 may 
 only 
 be 
 used 
 for 
 frequency 
 capping 
 , 
 competitive 
 exclusions 
 // 
 or 
 related 
 purposes 
 . 
 This 
 field 
 is 
 populated 
 with 
 web 
 - 
 safe 
 base64 
 alphabet 
 . 
 optional 
 string 
 session_id 
 = 
 1 
 ; 
 // 
 ( 
 iOS 
 Only 
 ) 
 An 
 integer 
 passed 
 to 
 represent 
 the 
 app 
 's app tracking 
 // 
 authorization 
 status 
 , 
 where 
 0 
 = 
 not 
 determined 
 , 
 1 
 = 
 restricted 
 , 
 2 
 = 
 denied 
 , 
 // 
 3 
 = 
 authorized 
 . 
 This 
 value 
 is 
 retrieved 
 from 
  
 ATTrackingManager 
 and 
 // 
 provided 
 as 
 is 
 . 
 See 
 // 
 https 
 : 
 // 
 github 
 . 
 com 
 / 
 InteractiveAdvertisingBureau 
 / 
 openrtb 
 / 
 blob 
 / 
 master 
 / 
 extensions 
 / 
 community_extensions 
 / 
 skadnetwork 
 . 
 md 
 #bid-request-1 
 // 
 // 
 For 
 more 
 information 
 about 
 iOS 
 's app tracking authorization status, see: 
 // 
 https 
 : 
 // 
 developer 
 . 
 apple 
 . 
 com 
 / 
 documentation 
 / 
 apptrackingtransparency 
 / 
 attrackingmanager 
 / 
 authorizationstatus 
 optional 
 int32 
 atts 
 = 
 3 
 ; 
 // 
 Indicates 
 whether 
 the 
 user 
 's device is on a metered connection. 
 // 
 // 
 Currently 
 only 
 available 
 for 
 Android 
 app 
 and 
 WebView 
 requests 
 , 
 and 
 is 
 // 
 determined 
 by 
 the 
 isActiveNetworkMetered 
 () 
 function 
 on 
 // 
 ConnectivityManager 
 : 
 // 
 https 
 : 
 // 
 developer 
 . 
 android 
 . 
 com 
 / 
 reference 
 / 
 android 
 / 
 net 
 / 
 ConnectivityManager 
 #isActiveNetworkMetered() 
 optional 
 bool 
 metereddata 
 = 
 6 
 ; 
 // 
 Chrome 
 - 
 facilitated 
 cookie 
 deprecation 
 testing 
 label 
 as 
 received 
 from 
  
 // 
 Chrome 
 . 
 // 
 https 
 : 
 // 
 developer 
 . 
 chrome 
 . 
 com 
 / 
 en 
 / 
 docs 
 / 
 privacy 
 - 
 sandbox 
 / 
 chrome 
 - 
 testing 
 / 
 optional 
 string 
 cdep 
 = 
 7 
 ; 
 // 
 The 
 remaining 
 battery 
 life 
 of 
 the 
 device 
 represented 
 as 
 a 
 float 
 , 
 where 
 1 
 // 
 indicates 
 a 
 fully 
 charged 
 battery 
 and 
 0 
 means 
 the 
 device 
 is 
 on 
 reserve 
 // 
 capacity 
 and 
 is 
 about 
 to 
 shut 
 down 
 . 
 Currently 
 only 
 available 
 for 
 Android 
 // 
 mobile 
 app 
 and 
 webview 
 requests 
 . 
 optional 
 float 
 chargelevel 
 = 
 8 
 ; 
 // 
 Indicates 
 whether 
 the 
 device 
 is 
 currently 
 being 
 charged 
 . 
 // 
 Currently 
 only 
 available 
 for 
 Android 
 mobile 
 app 
 and 
 webview 
 requests 
 . 
 optional 
 bool 
 charging 
 = 
 9 
 ; 
 // 
 The 
 remaining 
 disk 
 space 
 , 
 in 
 megabytes 
 , 
 in 
 the 
 data 
 partition 
 available 
 for 
 // 
 application 
 installation 
 , 
 rounded 
 to 
 the 
 nearest 
 100 
 MB 
 to 
 protect 
 user 
 // 
 privacy 
 ( 
 https 
 : 
 // 
 source 
 . 
 android 
 . 
 com 
 / 
 docs 
 / 
 core 
 / 
 architecture 
 / 
 partitions 
 ) 
 . 
 // 
 Currently 
 only 
 available 
 for 
 Android 
 mobile 
 app 
 and 
 webview 
 requests 
 . 
 optional 
 int32 
 diskspace 
 = 
 10 
 ; 
 // 
 Describes 
 the 
 state 
 of 
 the 
 device 
 audio 
 output 
 . 
 enum 
 AudioOutputMethod 
 { 
 AUDIO_UNKNOWN 
 = 
 0 
 ; 
 // 
 Audio 
 is 
 playing 
 through 
 the 
 device 
 's speakers. 
 AUDIO_SPEAKER 
 = 
 1 
 ; 
 // 
 Audio 
 is 
 playing 
 through 
 a 
 device 
 plugged 
 into 
 the 
 headphone 
 // 
 jack 
 . 
 AUDIO_HEADPHONE 
 = 
 2 
 ; 
 // 
 Device 
 is 
 set 
 to 
 silent 
 . 
 AUDIO_SILENT 
 = 
 3 
 ; 
 // 
 Any 
 other 
 output 
 such 
 as 
 playing 
 from 
  
 a 
 docking 
 station 
 or 
 Bluetooth 
 . 
 AUDIO_OTHER 
 = 
 5 
 ; 
 } 
 // 
 The 
 device 
 audio 
 state 
 . 
 Available 
 for 
 both 
 Android 
 and 
 iOS 
 . 
 optional 
 AudioOutputMethod 
 audioout 
 = 
 11 
 [ 
 default 
 = 
 AUDIO_UNKNOWN 
 ]; 
 // 
 DOOH 
 device 
 information 
 . 
 message 
 Dooh 
 { 
 // 
 The 
 venue 
 type 
 ID 
 of 
 the 
 DOOH 
 device 
 . 
 // 
 Uses 
 the 
 OpenOOH 
 venue 
 type 
 taxonomy 
 // 
 ( 
 https 
 : 
 // 
 github 
 . 
 com 
 / 
 openooh 
 / 
 venue 
 - 
 taxonomy 
 / 
 blob 
 / 
 main 
 / 
 specification 
 - 
 1.1 
 . 
 md 
 ) 
 . 
 // 
 For 
 more 
 information 
 , 
 see 
 : 
 // 
 https 
 : 
 // 
 support 
 . 
 google 
 . 
 com 
 / 
 admanager 
 / 
 answer 
 / 
 10678356 
 ? 
 #venuetype&zippy=%2Cvenuetype-venue-type 
 optional 
 int64 
 venuetypeid 
 = 
 1 
 ; 
 } 
 // 
 If 
 present 
 , 
 describes 
 a 
 DOOH 
 device 
 that 
 will 
 render 
 the 
 impression 
 . 
 optional 
 Dooh 
 dooh 
 = 
 12 
 ; 
 } 
 message 
 RegsExt 
 { 
 // 
 This 
 field 
 will 
 be 
 set 
 to 
 true 
 in 
 either 
 of 
 the 
 two 
 following 
 cases 
 : 
 // 
 1. 
 Google 
 receives 
 a 
 valid 
 IAB 
 Transparency 
 and 
 Consent 
 Framework 
 ( 
 TCF 
 ) 
 // 
 v2 
 consent 
 string 
 and 
 the 
 Consent 
 Management 
 Platform 
 indicates 
 that 
 // 
 GDPR 
 applies 
 to 
 this 
 ad 
 request 
 . 
 // 
 2. 
 Google 
 does 
 not 
 receive 
 an 
 IAB 
 TCF 
 v2 
 consent 
 string 
 and 
 , 
 based 
 on 
 // 
 information 
 available 
 to 
 Google 
 , 
 this 
 impression 
 will 
 serve 
 to 
 an 
 // 
 EEA 
 user 
 . 
 // 
 It 
 does 
 not 
 constitute 
 legal 
 guidance 
 on 
 GDPR 
 . 
 optional 
 bool 
 gdpr 
 = 
 1 
 ; 
 // 
 This 
 field 
 will 
 be 
 set 
 to 
 true 
 when 
 , 
 based 
 on 
 information 
 available 
 to 
 // 
 Google 
 , 
 this 
 impression 
 will 
 serve 
 to 
 a 
 user 
 in 
 Brazil 
 . 
 See 
 // 
 https 
 : 
 // 
 storage 
 . 
 googleapis 
 . 
 com 
 / 
 adx 
 - 
 rtb 
 - 
 dictionaries 
 / 
 lgpd 
 - 
 providers 
 . 
 csv 
 for 
 // 
 the 
 list 
 of 
 ad 
 tech 
 providers 
 that 
 are 
 allowed 
 to 
 serve 
 on 
 LGPD 
 - 
 enforced 
 // 
 requests 
 . 
 // 
 // 
 See 
 https 
 : 
 // 
 support 
 . 
 google 
 . 
 com 
 / 
 authorizedbuyers 
 / 
 answer 
 / 
 9928204 
 for 
 more 
 // 
 information 
 on 
 LGPD 
 . 
 optional 
 bool 
 lgpd 
 = 
 2 
 ; 
 // 
 The 
 Digital 
 Services 
 Act 
 ( 
 DSA 
 ) 
 transparency 
 requirements 
 . 
 See 
 // 
 https 
 : 
 // 
 support 
 . 
 google 
 . 
 com 
 / 
 admanager 
 / 
 answer 
 / 
 14335032. 
 message 
 Dsa 
 { 
 // 
 Values 
 indicating 
 whether 
 DSA 
 declarations 
 should 
 be 
 included 
 in 
 the 
 bid 
 // 
 response 
 and 
 , 
 if 
 so 
 , 
 whether 
 or 
 not 
 the 
 publisher 
 is 
 an 
 Online 
 Platform 
 // 
 ( 
 OP 
 ) 
 or 
 Very 
 Large 
 Online 
 Platform 
 ( 
 VLOP 
 ), 
 as 
 defined 
 by 
 the 
 DSA 
 . 
 enum 
 DsaSupport 
 { 
 // 
 DSA 
 declarations 
 are 
 not 
 required 
 in 
 the 
 bid 
 response 
 . 
 NOT_REQUIRED 
 = 
 0 
 ; 
 // 
 DSA 
 declarations 
 are 
 supported 
 , 
 but 
 not 
 required 
 in 
 the 
 bid 
 response 
 . 
 SUPPORTED 
 = 
 1 
 ; 
 // 
 DSA 
 declarations 
 are 
 required 
 in 
 the 
 bid 
 response 
 . 
 REQUIRED 
 = 
 2 
 ; 
 // 
 DSA 
 declarations 
 are 
 required 
 in 
 the 
 bid 
 response 
 and 
 the 
 publisher 
 is 
 // 
 an 
 OP 
 or 
 VLOP 
 . 
 REQUIRED_BY_ONLINE_PLATFORM 
 = 
 3 
 ; 
 } 
 // 
 Indicates 
 if 
 DSA 
 declarations 
 should 
 be 
 included 
 in 
 the 
 bid 
 response 
 . 
 // 
 Bids 
 where 
 DSA 
 declarations 
 are 
 required 
 but 
 not 
 included 
 will 
 not 
 be 
 // 
 accepted 
 . 
 optional 
 DsaSupport 
 dsarequired 
 = 
 1 
 ; 
 // 
 Options 
 describing 
 a 
 publisher 
 's ability to render DSA transparency 
 // 
 declarations 
 . 
 enum 
 PublisherRenderingSupport 
 { 
 // 
 Publisher 
 can 
 't render. 
 PUBLISHER_UNABLE_TO_RENDER 
 = 
 0 
 ; 
 // 
 Publisher 
 could 
 render 
 depending 
 on 
 the 
 buyer 
 's rendering capability as 
 // 
 described 
 in 
 the 
 Bid 
 . 
 ext 
 . 
 dsa 
 . 
 adrender 
 field 
 . 
 PUBLISHER_CAN_RENDER 
 = 
 1 
 ; 
 // 
 Publisher 
 will 
 render 
 regardless 
 of 
 the 
 buyer 
 's rendering capability as 
 // 
 described 
 in 
 the 
 Bid 
 . 
 ext 
 . 
 dsa 
 . 
 adrender 
 field 
 . 
 PUBLISHER_WILL_RENDER 
 = 
 2 
 ; 
 } 
 // 
 Indicates 
 if 
 the 
 publisher 
 will 
 render 
 the 
 DSA 
 Transparency 
 info 
 . 
 This 
 // 
 will 
 signal 
 if 
 the 
 publisher 
 is 
 able 
 to 
 and 
 intends 
 to 
 render 
 the 
 icon 
 // 
 or 
 other 
 appropriate 
 user 
 - 
 facing 
 symbol 
 and 
 display 
 the 
 DSA 
 transparency 
 // 
 info 
 to 
 the 
 end 
 user 
 . 
 optional 
 PublisherRenderingSupport 
 pubrender 
 = 
 2 
 ; 
 // 
 Options 
 describing 
 if 
 a 
 publisher 
 requires 
 DSA 
 transparency 
 declarations 
 . 
 enum 
 DataToPublisher 
 { 
 // 
 Do 
 not 
 send 
 transparency 
 data 
 . 
 DO_NOT_SEND 
 = 
 0 
 ; 
 // 
 Optional 
 to 
 send 
 transparency 
 data 
 . 
 OPTIONAL 
 = 
 1 
 ; 
 // 
 Send 
 transparency 
 data 
 . 
 SEND 
 = 
 2 
 ; 
 } 
 // 
 Indicates 
 whether 
 the 
 bidder 
 should 
 provide 
 DSA 
 transparency 
 declarations 
 // 
 in 
 the 
 bid 
 response 
 . 
 A 
 publisher 
 may 
 need 
 this 
 information 
 for 
 audit 
 or 
 // 
 other 
 purposes 
 , 
 even 
 if 
 they 
 will 
 not 
 render 
 the 
 transparency 
 // 
 declarations 
 themselves 
 . 
 optional 
 DataToPublisher 
 datatopub 
 = 
 3 
 ; 
 } 
 // 
 The 
 Digital 
 Services 
 Act 
 ( 
 DSA 
 ) 
 transparency 
 information 
 requirements 
 . 
 optional 
 Dsa 
 dsa 
 = 
 3 
 ; 
 } 
 message 
 DealExt 
 { 
 // 
 The 
 type 
 of 
 the 
 deal 
 . 
 Note 
 that 
 Authorized 
 Buyers 
 policy 
 overrides 
 apply 
 to 
 // 
 all 
 Programmatic 
 Guaranteed 
 and 
 Preferred 
 Deal 
 bids 
 , 
 and 
 do 
 not 
 apply 
 to 
 // 
 bids 
 for 
 other 
 deal 
 types 
 . 
 enum 
 DealType 
 { 
 UNKNOWN_DEAL_TYPE 
 = 
 0 
 ; 
 // 
 Bids 
 are 
 fixed 
 - 
 price 
 and 
 evaluated 
 before 
 the 
 Open 
 Auction 
 . 
 Bidders 
 are 
 // 
 not 
 required 
 to 
 bid 
 with 
 Preferred 
 Deals 
 when 
 they 
 are 
 present 
 on 
 the 
 bid 
 // 
 request 
 . 
 See 
 https 
 : 
 // 
 support 
 . 
 google 
 . 
 com 
 / 
 authorizedbuyers 
 / 
 answer 
 / 
 2604595 
 // 
 for 
 more 
 information 
 . 
 PREFERRED_DEAL 
 = 
 1 
 ; 
 // 
 Bids 
 participate 
 in 
 a 
 Private 
 Auction 
 against 
 a 
 select 
 list 
 of 
 buyers 
 // 
 with 
 specific 
 floors 
 . 
 See 
 // 
 https 
 : 
 // 
 support 
 . 
 google 
 . 
 com 
 / 
 authorizedbuyers 
 / 
 answer 
 / 
 2839853 
 for 
 more 
 // 
 information 
 . 
 PRIVATE_AUCTION 
 = 
 2 
 ; 
 // 
 Bids 
 are 
 fixed 
 - 
 price 
 and 
 evaluated 
 before 
 the 
 Open 
 Auction 
 . 
 Bidders 
 are 
 // 
 expected 
 to 
 bid 
 with 
 Programmatic 
 Guaranteed 
 deals 
 whenever 
 they 
 are 
 // 
 present 
 on 
 a 
 bid 
 request 
 and 
 the 
 must_bid 
 field 
 is 
 true 
 in 
 order 
 to 
 // 
 ensure 
 that 
 the 
 number 
 of 
 impressions 
 agreed 
 upon 
 for 
 a 
 given 
 deal 
 are 
 // 
 served 
 . 
 See 
 https 
 : 
 // 
 support 
 . 
 google 
 . 
 com 
 / 
 authorizedbuyers 
 / 
 answer 
 / 
 7174589 
 // 
 for 
 more 
 information 
 . 
 PROGRAMMATIC_GUARANTEED 
 = 
 3 
 ; 
 // 
 The 
 deal 
 ID 
 is 
 an 
 identifier 
 for 
 a 
 collection 
 of 
 Open 
 Auction 
 inventory 
 // 
 matching 
 a 
 given 
 set 
 of 
 targeting 
 criteria 
 . 
 See 
 // 
 https 
 : 
 // 
 support 
 . 
 google 
 . 
 com 
 / 
 authorizedbuyers 
 / 
 answer 
 / 
 7516884 
 for 
 more 
 // 
 information 
 . 
 AUCTION_PACKAGE 
 = 
 4 
 ; 
 // 
 Package 
 of 
 inventory 
 that 
 a 
 publisher 
 makes 
 available 
 to 
 either 
 all 
 // 
 buyers 
 or 
 selected 
 bidders 
 . 
 Bids 
 participate 
 in 
 auction 
 in 
 the 
 same 
 way 
 // 
 as 
 private 
 auction 
 candidates 
 . 
 See 
 // 
 https 
 : 
 // 
 support 
 . 
 google 
 . 
 com 
 / 
 authorizedbuyers 
 / 
 answer 
 / 
 12817370 
 for 
 more 
 // 
 information 
 . 
 MARKETPLACE_PACKAGE 
 = 
 5 
 ; 
 } 
 optional 
 DealType 
 deal_type 
 = 
 1 
 [ 
 default 
 = 
 UNKNOWN_DEAL_TYPE 
 ]; 
 // 
 This 
 field 
 is 
 only 
 applicable 
 to 
 Programmatic 
 Guaranteed 
 deals 
 . 
 The 
 // 
 buyer 
 is 
 allowed 
 to 
 skip 
 bidding 
 on 
 the 
 impression 
 if 
 this 
 field 
 is 
 // 
 false 
 . 
 When 
 it 
 is 
 true 
 , 
 the 
 buyer 
 is 
 required 
 to 
 bid 
 on 
 this 
 deal 
 for 
 // 
 this 
 impression 
 opportunity 
 . 
 This 
 field 
 will 
 always 
 be 
 filled 
 explicitly 
 // 
 for 
 the 
 JSON 
 wire 
 format 
 . 
 optional 
 bool 
 must_bid 
 = 
 2 
 [ 
 default 
 = 
 true 
 ]; 
 // 
 Whether 
 the 
 publisher 
 has 
 exempted 
 this 
 deal 
 from 
  
 configured 
 blocks 
 . 
 This 
 // 
 setting 
 does 
 not 
 override 
 AdX 
 policies 
 or 
 Ad 
 Review 
 Center 
 decisions 
 . 
 See 
 // 
 https 
 : 
 // 
 support 
 . 
 google 
 . 
 com 
 / 
 authorizedbuyers 
 / 
 answer 
 / 
 6114194 
 for 
 more 
 // 
 information 
 . 
 optional 
 bool 
 publisher_blocks_overridden 
 = 
 3 
 ; 
 // 
 Experimental 
 field 
 ; 
 subject 
 to 
 change 
 . 
 // 
 An 
 enum 
 declaring 
 the 
 host 
 of 
 the 
 creative 
 , 
 which 
 will 
 only 
 be 
 // 
 populated 
 for 
 Programmatic 
 Guaranteed 
 deals 
 . 
 // 
 Currently 
 , 
 this 
 field 
 should 
 only 
 ever 
 be 
 set 
 to 
 // 
 CREATIVE_SOURCE_ADVERTISER 
 . 
 enum 
 CreativeSourceType 
 { 
 CREATIVE_SOURCE_UNKNOWN 
 = 
 0 
 ; 
 // 
 The 
 creative 
 is 
 hosted 
 by 
 the 
 advertiser 
 , 
 which 
 means 
 the 
 bidder 
 is 
 // 
 required 
 to 
 provide 
 a 
 creative 
 in 
 the 
 bid 
 response 
 . 
 CREATIVE_SOURCE_ADVERTISER 
 = 
 1 
 ; 
 // 
 The 
 creative 
 is 
 hosted 
 by 
 the 
 publisher 
 , 
 which 
 means 
 the 
 bidder 
 // 
 does 
 not 
 need 
 to 
 include 
 a 
 creative 
 in 
 the 
 bid 
 response 
 . 
 // 
 For 
 more 
 information 
 on 
 publisher 
 - 
 hosted 
 creatives 
 , 
 see 
 // 
 https 
 : 
 // 
 support 
 . 
 google 
 . 
 com 
 / 
 admanager 
 / 
 answer 
 / 
 9243220. 
 // 
 This 
 feature 
 isn 
 't currently supported for RTB bidders. 
 CREATIVE_SOURCE_PUBLISHER 
 = 
 2 
 ; 
 } 
 optional 
 CreativeSourceType 
 creative_source 
 = 
 4 
 [ 
 default 
 = 
 CREATIVE_SOURCE_ADVERTISER 
 ]; 
 // 
 Constraints 
 for 
 creatives 
 that 
 can 
 apply 
 when 
 bidding 
 on 
 a 
 deal 
 . 
 message 
 CreativeConstraints 
 { 
 // 
 The 
 allowed 
 ad 
 types 
 of 
 the 
 deal 
 . 
 If 
 empty 
 , 
 there 
 are 
 no 
 deal 
 - 
 specific 
 // 
 allowed 
 ad 
 type 
 restrictions 
 for 
 the 
 deal 
 . 
 In 
 that 
 case 
 , 
 bidders 
 should 
 // 
 refer 
 to 
 the 
 presence 
 of 
 Banner 
 , 
 Video 
 , 
 Audio 
 or 
 Native 
 objects 
 in 
 the 
 // 
 BidRequest 
 to 
 check 
 the 
 allowed 
 formats 
 . 
 repeated 
 . 
 com 
 . 
 google 
 . 
 openrtb 
 . 
 CreativeMarkupType 
 mtypes 
 = 
 1 
 [ 
 packed 
 = 
 true 
 ]; 
 // 
 Possible 
 creative 
 skippability 
 requirements 
 . 
 enum 
 SkippabilityConstraint 
 { 
 // 
 Skippable 
 and 
 non 
 - 
 skippable 
 creatives 
 are 
 allowed 
 . 
 ALLOW_SKIPPABLE 
 = 
 0 
 ; 
 // 
 Only 
 skippable 
 creatives 
 are 
 allowed 
 . 
 REQUIRE_SKIPPABLE 
 = 
 1 
 ; 
 // 
 Only 
 non 
 - 
 skippable 
 creatives 
 are 
 allowed 
 . 
 BLOCK_SKIPPABLE 
 = 
 2 
 ; 
 } 
 // 
 Whether 
 skippable 
 creatives 
 are 
 allowed 
 . 
 For 
 PROGRAMMATIC_GUARANTEED 
 or 
 // 
 PREFERRED_DEAL 
 deals 
 that 
 specifically 
 allow 
 video 
 or 
 audio 
 ad 
 types 
 , 
 it 
 // 
 is 
 always 
 set 
 . 
 For 
 the 
 skippability 
 setting 
 of 
 other 
 deal 
 types 
 or 
 open 
 // 
 auction 
 bidding 
 , 
 refer 
 to 
 the 
 corresponding 
 BidRequest 
 - 
 level 
 field 
 // 
 video 
 . 
 skip 
 . 
 optional 
 SkippabilityConstraint 
 skippability 
 = 
 2 
 [ 
 default 
 = 
 ALLOW_SKIPPABLE 
 ]; 
 // 
 Maximum 
 video 
 ad 
 duration 
 in 
 seconds 
 . 
 For 
 PROGRAMMATIC_GUARANTEED 
 or 
 // 
 PREFERRED_DEAL 
 deals 
 that 
 specifically 
 allow 
 video 
 or 
 audio 
 ad 
 types 
 , 
 it 
 // 
 is 
 always 
 set 
 . 
 For 
 the 
 allowed 
 max 
 duration 
 of 
 other 
 deal 
 types 
 or 
 open 
 // 
 auction 
 bidding 
 , 
 refer 
 to 
 the 
 corresponding 
 BidRequest 
 - 
 level 
 field 
 // 
 video 
 . 
 maxduration 
 . 
 optional 
 int32 
 maxduration 
 = 
 3 
 ; 
 } 
 // 
 Creative 
 constraints 
 for 
 this 
 deal 
 . 
 If 
 this 
 is 
 not 
 set 
 , 
 bidders 
 should 
 // 
 refer 
 to 
 the 
 BidRequest 
 - 
 level 
 setting 
 of 
 each 
 field 
 . 
 optional 
 CreativeConstraints 
 creative_constraints 
 = 
 5 
 ; 
 // 
 Indicates 
 the 
 eligible 
 billing 
 IDs 
 for 
 this 
 deal 
 . 
 If 
 this 
 list 
 is 
 not 
 // 
 empty 
 , 
 the 
 billing 
 ID 
 selected 
 in 
 ` 
 BidResponse 
 . 
 seatbid 
 . 
 bid 
 . 
 ext 
 . 
 billing_id 
 ` 
 // 
 must 
 be 
 one 
 of 
 these 
 IDs 
 when 
 submitting 
 a 
 bid 
 on 
 this 
 deal 
 . 
 If 
 this 
 list 
 // 
 is 
 empty 
 , 
 then 
 the 
 bid 
 on 
 this 
 deal 
 can 
 be 
 attributed 
 to 
 any 
 of 
 the 
 billing 
 // 
 IDs 
 in 
 ` 
 BidRequest 
 . 
 imp 
 . 
 ext 
 . 
 billing_id 
 ` 
 . 
 repeated 
 int64 
 billing_id 
 = 
 6 
 [ 
 packed 
 = 
 true 
 ]; 
 } 
 message 
 SourceExt 
 { 
 // 
 Identifier 
 of 
 the 
 OM 
 SDK 
 integration 
 . 
 Equivalent 
 to 
 // 
 BidRequest 
 . 
 AdSlot 
 . 
 omidpn 
 in 
 the 
 Google 
 protocol 
 . 
 For 
 more 
 info 
 , 
 // 
 see 
 the 
 OpenRTB 
 Advisory 
 for 
 Open 
 Measurement 
 SDK 
 : 
 // 
 https 
 : 
 // 
 github 
 . 
 com 
 / 
 InteractiveAdvertisingBureau 
 / 
 AdCOM 
 / 
 blob 
 / 
 master 
 / 
 OpenRTB 
 % 
 20 
 support 
 % 
 20 
 for 
 % 
 20 
 OMSDK 
 . 
 md 
 #openrtb-and-adcom. 
 optional 
 string 
 omidpn 
 = 
 1 
 ; 
 // 
 Version 
 of 
 the 
 OM 
 SDK 
 integration 
 . 
 Equivalent 
 to 
 BidRequest 
 . 
 AdSlot 
 . 
 omidpv 
 // 
 in 
 the 
 Google 
 protocol 
 . 
 For 
 more 
 info 
 , 
 see 
 the 
 OpenRTB 
 Advisory 
 for 
 // 
 Open 
 Measurement 
 SDK 
 : 
 // 
 https 
 : 
 // 
 github 
 . 
 com 
 / 
 InteractiveAdvertisingBureau 
 / 
 AdCOM 
 / 
 blob 
 / 
 master 
 / 
 OpenRTB 
 % 
 20 
 support 
 % 
 20 
 for 
 % 
 20 
 OMSDK 
 . 
 md 
 #openrtb-and-adcom. 
 optional 
 string 
 omidpv 
 = 
 2 
 ; 
 } 
 message 
 GeoExt 
 { 
 // 
 The 
 device 
 's approximate geographic location. See the geo-table.csv table 
 // 
 available 
 at 
 https 
 : 
 // 
 developers 
 . 
 google 
 . 
 com 
 / 
 authorized 
 - 
 buyers 
 / 
 rtb 
 / 
 data 
 for 
 // 
 a 
 list 
 of 
 IDs 
 . 
 This 
 field 
 is 
 provisional 
 , 
 intended 
 only 
 to 
 help 
 with 
 // 
 migration 
 from 
  
 the 
 Google 
 Authorized 
 Buyers 
 protocol 
 to 
 OpenRTB 
 ; 
 it 
 will 
 // 
 be 
 removed 
 in 
 the 
 future 
 . 
 The 
 standard 
 fields 
 in 
 BidRequest 
 . 
 device 
 . 
 geo 
 // 
 should 
 be 
 used 
 instead 
 ; 
 they 
 contain 
 the 
 same 
 location 
 as 
 the 
 // 
 geo_criteria_id 
 and 
 both 
 are 
 subject 
 to 
 the 
 same 
 privacy 
 treatments 
 . 
 // 
 See 
 Geotargeting 
 Guide 
 : 
 // 
 https 
 : 
 // 
 developers 
 . 
 google 
 . 
 com 
 / 
 authorized 
 - 
 buyers 
 / 
 rtb 
 / 
 geotargeting 
 optional 
 int32 
 geo_criteria_id 
 = 
 1 
 ; 
 } 
 message 
 VideoExt 
 { 
 // 
 Video 
 placement 
 type 
 inferred 
 by 
 Google 
 for 
 this 
 impression 
 . 
 This 
 field 
 // 
 is 
 always 
 filled 
 and 
 can 
 be 
 different 
 from 
  
 BidRequest.imp.video.plcmt 
 ( 
 the 
 // 
 publisher 
 - 
 declared 
 placement 
 type 
 ) 
 . 
 optional 
 . 
 com 
 . 
 google 
 . 
 openrtb 
 . 
 Plcmt 
 inferredplcmt 
 = 
 3 
 [ 
 default 
 = 
 PLCMT_UNKNOWN 
 ]; 
 // 
 If 
 true 
 , 
 the 
 video 
 is 
 embedded 
 on 
 a 
 page 
 outside 
 the 
 publisher 
 's domain. 
 // 
 When 
 this 
 is 
 set 
 , 
 BidRequest 
 . 
 { 
 app 
 / 
 site 
 } 
 . 
 content 
 . 
 producer 
 . 
 domain 
 points 
 to 
 // 
 the 
 domain 
 of 
 the 
 content 
 producer 
 , 
 and 
 the 
 BidRequest 
 . 
 { 
 app 
 / 
 site 
 } 
 . 
 page 
 // 
 field 
 is 
 the 
 page 
 in 
 which 
 the 
 video 
 is 
 embedded 
 . 
 optional 
 bool 
 embeddedoffsite 
 = 
 4 
 ; 
 // 
 Indicates 
 that 
 this 
 bid 
 request 
 is 
 fetching 
 impressions 
 in 
 advance 
 of 
 a 
 // 
 future 
 ad 
 break 
 in 
 a 
 live 
 video 
 stream 
 . 
 The 
 impression 
 may 
 not 
 be 
 rendered 
 // 
 if 
 , 
 for 
 example 
 , 
 the 
 user 
 closes 
 the 
 video 
 player 
 before 
 the 
 ad 
 break 
 // 
 begins 
 . 
 The 
 bid 
 request 
 for 
 the 
 same 
 opportunity 
 may 
 also 
 be 
 retried 
 in 
 // 
 some 
 cases 
 , 
 such 
 as 
 updated 
 publisher 
 settings 
 . 
 optional 
 bool 
 prefetch 
 = 
 5 
 ; 
 } 
 // 
 SKAdNetwork 
 API 
 starting 
 from 
  
 version 
 2.2 
 supports 
 multiple 
 ad 
 // 
 presentation 
 options 
 specified 
 by 
 the 
 ` 
 fidelity 
 - 
 type 
 ` 
 parameter 
 of 
 the 
 // 
 SKAdNetwork 
 signature 
 . 
 The 
 following 
 are 
 the 
 fidelity 
 types 
 supported 
 by 
 // 
 Apple 
 . 
 For 
 more 
 info 
 visit 
 : 
 // 
 https 
 : 
 // 
 developer 
 . 
 apple 
 . 
 com 
 / 
 documentation 
 / 
 storekit 
 / 
 skadnetwork 
 / 
 signing_and_providing_ads 
 enum 
 SKAdNetworkFidelityType 
 { 
 // 
 Attribution 
 for 
 app 
 installs 
 within 
 24 
 hours 
 of 
 viewing 
 an 
 ad 
 for 
 at 
 least 
 // 
 3 
 seconds 
 . 
 Supported 
 for 
 SKAdnetwork 
 version 
 2.2 
 and 
 up 
 . 
 For 
 more 
 info 
 see 
 : 
 // 
 https 
 : 
 // 
 developer 
 . 
 apple 
 . 
 com 
 / 
 documentation 
 / 
 storekit 
 / 
 skadnetwork 
 / 
 generating_the_signature_to_validate_view 
 - 
 through_ads 
 VIEW_THROUGH_ADS 
 = 
 0 
 ; 
 // 
 Attribution 
 for 
 app 
 installs 
 initiated 
 from 
  
 the 
 StoreKit 
 - 
 rendered 
 App 
 Store 
 // 
 product 
 page 
 driven 
 by 
 ad 
 clicks 
 . 
 Supported 
 for 
 all 
 SKAdNetwork 
 versions 
 . 
 // 
 For 
 more 
 info 
 see 
 : 
 // 
 https 
 : 
 // 
 developer 
 . 
 apple 
 . 
 com 
 / 
 documentation 
 / 
 storekit 
 / 
 skadnetwork 
 / 
 generating_the_signature_to_validate_storekit 
 - 
 rendered_ads 
 STOREKIT_RENDERED_ADS 
 = 
 1 
 ; 
 } 
 extend 
 . 
 com 
 . 
 google 
 . 
 openrtb 
 . 
 BidRequest 
 . 
 Imp 
 { 
 optional 
 ImpExt 
 imp 
 = 
 1009 
 ; 
 } 
 extend 
 . 
 com 
 . 
 google 
 . 
 openrtb 
 . 
 BidRequest 
 . 
 App 
 { 
 optional 
 AppExt 
 app 
 = 
 1011 
 ; 
 } 
 extend 
 . 
 com 
 . 
 google 
 . 
 openrtb 
 . 
 BidRequest 
 . 
 Imp 
 . 
 Banner 
 { 
 optional 
 BannerExt 
 banner_ext 
 = 
 1014 
 ; 
 } 
 extend 
 . 
 com 
 . 
 google 
 . 
 openrtb 
 . 
 BidResponse 
 { 
 optional 
 BidResponseExt 
 bid_response 
 = 
 1005 
 ; 
 } 
 extend 
 . 
 com 
 . 
 google 
 . 
 openrtb 
 . 
 BidResponse 
 . 
 SeatBid 
 . 
 Bid 
 { 
 optional 
 BidExt 
 bid 
 = 
 1014 
 ; 
 } 
 extend 
 . 
 com 
 . 
 google 
 . 
 openrtb 
 . 
 NativeRequest 
 { 
 optional 
 NativeRequestExt 
 native_ext 
 = 
 1001 
 ; 
 } 
 extend 
 . 
 com 
 . 
 google 
 . 
 openrtb 
 . 
 NativeResponse 
 . 
 EventTracker 
 { 
 optional 
 EventTrackerExt 
 eventtrackers 
 = 
 1000 
 ; 
 } 
 extend 
 . 
 com 
 . 
 google 
 . 
 openrtb 
 . 
 BidRequest 
 . 
 Publisher 
 { 
 optional 
 PublisherExt 
 publisher 
 = 
 1002 
 ; 
 } 
 extend 
 . 
 com 
 . 
 google 
 . 
 openrtb 
 . 
 BidRequest 
 . 
 Site 
 { 
 optional 
 SiteExt 
 site 
 = 
 1010 
 ; 
 } 
 extend 
 . 
 com 
 . 
 google 
 . 
 openrtb 
 . 
 BidRequest 
 { 
 optional 
 BidRequestExt 
 bid_request 
 = 
 1018 
 ; 
 } 
 extend 
 . 
 com 
 . 
 google 
 . 
 openrtb 
 . 
 BidRequest 
 . 
 User 
 { 
 optional 
 UserExt 
 user 
 = 
 1007 
 ; 
 } 
 extend 
 . 
 com 
 . 
 google 
 . 
 openrtb 
 . 
 BidRequest 
 . 
 User 
 . 
 EID 
 . 
 UID 
 { 
 optional 
 UIDExt 
 uids 
 = 
 1001 
 ; 
 } 
 extend 
 . 
 com 
 . 
 google 
 . 
 openrtb 
 . 
 BidRequest 
 . 
 Data 
 { 
 optional 
 DataExt 
 data 
 = 
 1000 
 ; 
 } 
 extend 
 . 
 com 
 . 
 google 
 . 
 openrtb 
 . 
 BidRequest 
 . 
 Device 
 { 
 optional 
 DeviceExt 
 device 
 = 
 1066 
 ; 
 } 
 extend 
 . 
 com 
 . 
 google 
 . 
 openrtb 
 . 
 BidRequest 
 . 
 Regs 
 { 
 optional 
 RegsExt 
 regs 
 = 
 1001 
 ; 
 } 
 extend 
 . 
 com 
 . 
 google 
 . 
 openrtb 
 . 
 BidRequest 
 . 
 Imp 
 . 
 Pmp 
 . 
 Deal 
 { 
 optional 
 DealExt 
 deal 
 = 
 1010 
 ; 
 } 
 extend 
 . 
 com 
 . 
 google 
 . 
 openrtb 
 . 
 BidRequest 
 . 
 Source 
 { 
 optional 
 SourceExt 
 source 
 = 
 1059 
 ; 
 } 
 extend 
 . 
 com 
 . 
 google 
 . 
 openrtb 
 . 
 BidRequest 
 . 
 Geo 
 { 
 optional 
 GeoExt 
 geo 
 = 
 1004 
 ; 
 } 
 extend 
 . 
 com 
 . 
 google 
 . 
 openrtb 
 . 
 BidRequest 
 . 
 Imp 
 . 
 Video 
 { 
 optional 
 VideoExt 
 video 
 = 
 1031 
 ; 
 } 
Create a Mobile Website
View Site in Mobile | Classic
Share by: