View raw content Back to Reference page
option java_outer_classname = "OpenRtb"; package com.google.openrtb; // OpenRTB extensions ("ext" fields in the spec & JSON representation) // are represented here by Protocol Buffer extensions. This proto only // reserves the range of IDs 100-9999 at every extensible object. // Reserved ranges: // 100-199: Reserved for Google. // 200-299: Reserved for IAB's formal standard extensions. // 300-999: Free for use with other exchanges or projects. // 1000-1999: Reserved for Google. // 2000-9999: Free for use with other exchanges or projects. // // OpenRTB 2.0: The top-level bid request object contains a globally unique // bid request or auction ID. This id attribute is required as is at least one // impression object (Section 3.2.2). Other attributes in this top-level object // establish rules and restrictions that apply to all impressions being offered. // // There are also several subordinate objects that provide detailed data to // potential buyers. Among these are the Site and App objects, which describe // the type of published media in which the impression(s) appear. // These objects are highly recommended, but only one applies to a given // bid request depending on whether the media is browser-based web content // or a non-browser application, respectively. message BidRequest { oneof distributionchannel_oneof { // Information about the publisher's website. Only applicable and // recommended for websites. // Supported by Google. Site site = 3; // Information about the publisher's app // (non-browser applications). Only applicable and recommended for apps. // Supported by Google. App app = 4; } // Unique ID of the bid request, provided by the exchange. // REQUIRED by the OpenRTB specification. // Supported by Google. required string id = 1; // OpenRTB 2.0: This object describes an ad placement or impression // being auctioned. A single bid request can include multiple Imp objects, // a use case for which might be an exchange that supports selling all // ad positions on a given page. Each Imp object has a required ID so that // bids can reference them individually. // // The presence of Banner (Section 3.2.3), Video (Section 3.2.4), // and/or Native (Section 3.2.5) objects subordinate to the Imp object // indicates the type of impression being offered. The publisher can choose // one such type which is the typical case or mix them at their discretion. // Any given bid for the impression must conform to one of the offered types. message Imp { // A unique identifier for this impression within the context of the bid // request (typically, value starts with 1, and increments up to n // for n impressions). // Supported by Google. required string id = 1; // OpenRTB 2.0: This object represents the most general type of // impression. Although the term "banner" may have very specific meaning // in other contexts, here it can be many things including a simple static // image, an expandable ad unit, or even in-banner video (refer to the Video // object in Section 3.2.4 for the more generalized and full featured video // ad units). An array of Banner objects can also appear within the Video // to describe optional companion ads defined in the VAST specification. // // The presence of a Banner as a subordinate of the Imp object indicates // that this impression is offered as a banner type impression. // At the publisher's discretion, that same impression may also be offered // as video and/or native by also including as Imp subordinates the Video // and/or Native objects, respectively. However, any given bid for the // impression must conform to one of the offered types. message Banner { // Exact width in device-independent pixels (DIPS); recommended if no // format objects are specified. // Supported by Google. optional int32 w = 1; // Exact height in device-independent pixels (DIPS); recommended if no // format objects are specified. // Supported by Google. optional int32 h = 2; // OpenRTB 2.4: This object represents an allowed size ( // height and width combination) for a banner impression. // These are typically used in an array for an impression where // multiple sizes are permitted. message Format { // Width in device independent pixels (DIPS). // Supported by Google. optional int32 w = 1; // Height in device independent pixels (DIPS). // Supported by Google. optional int32 h = 2; // Relative width when expressing size as a ratio. // Not supported by Google. optional int32 wratio = 3; // Relative height when expressing size as a ratio. // Not supported by Google. optional int32 hratio = 4; // The minimum width in device independent pixels (DIPS) at // which the ad will be displayed when the size is expressed as a ratio. // Not supported by Google. optional int32 wmin = 5; extensions 100 to 9999; } // Array of format objects representing the banner sizes permitted. // If none are specified, then use of the h and w attributes // is highly recommended. // Supported by Google. repeated Format format = 15; // Unique identifier for this banner object. Recommended when Banner // objects are used with a Video object (Section 3.2.4) to represent // an array of companion ads. Values usually start at 1 and increase // with each object; should be unique within an impression. // Not supported by Google. optional string id = 3; // Ad position on screen. // Supported by Google. optional AdPosition pos = 4; // Blocked banner ad types. // Not supported by Google. repeated BannerAdType btype = 5 [packed = true]; // Blocked creative attributes. See the full list of available attributes: // https://github.com/InteractiveAdvertisingBureau/AdCOM/blob/main/AdCOM%20v1.0%20FINAL.md#list--creative-attributes- // Supported by Google. repeated CreativeAttribute battr = 6 [packed = true]; // Allowlist of content MIME types supported. Popular MIME types include, // but are not limited to "image/jpg", "image/gif" and // "application/x-shockwave-flash". // Supported by Google. repeated string mimes = 7; // Specify if the banner is delivered in the top frame (true) // or in an iframe (false). // Supported by Google. optional bool topframe = 8; // Directions in which the banner may expand. // Supported by Google. repeated ExpandableDirection expdir = 9 [packed = true]; // List of supported API frameworks for this impression. // If an API is not explicitly listed, it is assumed not to be supported. // Supported by Google. repeated APIFramework api = 10 [packed = true]; // Relevant only for Banner objects used with a Video object // (Section 3.2.7) in an array of companion ads. Indicates the // companion banner rendering mode relative to the associated // video, where false = concurrent, true = end-card. // Supported by Google. optional bool vcm = 16; // DEPRECATED in OpenRTB 2.4+, REMOVED in 2.6+; prefer the field format. // Maximum width in device independent pixels (DIPS). // Supported by Google. optional int32 wmax = 11 [deprecated = true]; // DEPRECATED in OpenRTB 2.4+, REMOVED in 2.6+; prefer the field format. // Maximum height in device independent pixels (DIPS). // Supported by Google. optional int32 hmax = 12 [deprecated = true]; // DEPRECATED in OpenRTB 2.4+, REMOVED in 2.6+; prefer the field format. // Minimum width in device independent pixels (DIPS). // Supported by Google. optional int32 wmin = 13 [deprecated = true]; // DEPRECATED in OpenRTB 2.4+, REMOVED in 2.6+; prefer the field format. // Minimum height in device independent pixels (DIPS). // Supported by Google. optional int32 hmin = 14 [deprecated = true]; extensions 100 to 9999; } // A Banner object (Section 3.2.3); required if this impression is // offered as a banner ad opportunity. // Supported by Google. optional Banner banner = 2; // OpenRTB 2.0: This object represents an in-stream video impression. // Many of the fields are non-essential for minimally viable transactions, // but are included to offer fine control when needed. Video in OpenRTB // generally assumes compliance with the VAST standard. As such, the notion // of companion ads is supported by optionally including an array of Banner // objects (refer to the Banner object in Section 3.2.3) that define these // companion ads. // // The presence of a Video as a subordinate of the Imp object indicates // that this impression is offered as a video type impression. At the // publisher's discretion, that same impression may also be offered as // banner and/or native by also including as Imp subordinates the Banner // and/or Native objects, respectively. However, any given bid for the // impression must conform to one of the offered types. message Video { // Allowlist of content MIME types supported. Popular MIME types include, // but are not limited to "image/jpg", "image/gif" and // "application/x-shockwave-flash". // REQUIRED by the OpenRTB specification: at least 1 element. // Supported by Google. repeated string mimes = 1; // Minimum video ad duration in seconds. // This field is mutually exclusive with rqddurs; only one of // minduration and rqddurs may be in a bid request. // Supported by Google. optional int32 minduration = 3 [default = 0]; // Maximum video ad duration in seconds. // This field is mutually exclusive with rqddurs; only one of // maxduration and rqddurs may be in a bid request. // Supported by Google. optional int32 maxduration = 4; // Indicates the start delay in seconds for pre-roll, mid-roll, or // post-roll ad placements. // Refer to enum StartDelay for generic values. // Supported by Google. optional int32 startdelay = 8; // Indicates the maximum number of ads that may be served into a // "dynamic" video ad pod (where the precise number of ads is not // predetermined by the seller). // This field is currently only supported by Google for // rewarded video pods requests. optional int32 maxseq = 28; // Indicates the total amount of time in seconds that advertisers may // fill for a "dynamic" video ad pod, or the dynamic portion of a // "hybrid" ad pod. This field is required only for the dynamic // portion(s) of video ad pods. This field refers to the length of the // entire ad break, whereas minduration/maxduration/rqddurs are // constraints relating to the slots that make up the pod. // This field is currently only supported for rewarded video pods // requests. optional int32 poddur = 29; // Array of supported video bid response protocols. // At least one supported protocol must be specified. // Supported by Google. repeated Protocol protocols = 21 [packed = true]; // Width of the video player in device independent pixels (DIPS). // Supported by Google. optional int32 w = 6; // Height of the video player in device independent pixels (DIPS). // Supported by Google. optional int32 h = 7; // Unique identifier indicating that an impression opportunity // belongs to a video ad pod. If multiple impression opportunities // within a bid request share the same podid, this indicates that // those impression opportunities belong to the same video ad pod. // Not supported by Google. optional string podid = 30; // The sequence (position) of the video ad pod within a content stream. // Not supported by Google. optional PodSequence podseq = 31 [default = POD_SEQUENCE_ANY]; // Precise acceptable durations for video creatives in // seconds. This field specifically targets the Live TV use case // where non-exact ad durations would result in undesirable ‘dead air’. // This field is mutually exclusive with minduration and maxduration; // if rqddurs is specified, minduration and maxduration must not be // specified and the other way around. // Not supported by Google. repeated int32 rqddurs = 32 [packed = true]; // Deprecated. This will be removed in January 2025 per the IAB here: // https://github.com/InteractiveAdvertisingBureau/AdCOM/blob/main/AdCOM%20v1.0%20FINAL.md#list--placement-subtypes---video- // Placement type for the impression. // Supported by Google. optional VideoPlacementType placement = 26 [deprecated = true]; // Video placement type declared by the publisher for this impression. // Introduced in OpenRTB 2.6 to reflect updated industry definitions // around different types of video ad placements. This field supersedes // the Video.placement field. May be unset if the publisher did not // declare a video placement type. // Supported by Google. optional Plcmt plcmt = 35 [default = PLCMT_UNKNOWN]; // Indicates if the impression must be linear or nonlinear. If none // specified, assume all are allowed. // Supported by Google. optional VideoLinearity linearity = 2; // Indicates if the player will allow the video to be skipped. // If a bidder sends markup/creative that is itself skippable, the // Bid object should include the attr array with an element of // AD_CAN_BE_SKIPPED indicating skippable video. // Supported by Google. optional bool skip = 23; // Videos of total duration greater than this number of seconds // can be skippable; only applicable if the ad is skippable. // Not supported by Google. optional int32 skipmin = 24; // Number of seconds a video must play before skipping is // enabled; only applicable if the ad is skippable. // Not supported by Google. optional int32 skipafter = 25; // DEPRECATED in OpenRTB 2.6+; prefer the field podseq. // If multiple ad impressions are offered in the same bid request, // the sequence number will allow for the coordinated delivery of // multiple creatives. // Not supported by Google. optional int32 sequence = 9 [deprecated = true, default = 1]; // For video ad pods, this value indicates that the seller can // guarantee delivery against the indicated slot position in the pod. // Not supported by Google. optional SlotPositionInPod slotinpod = 33 [default = SLOT_POSITION_POD_ANY]; // Minimum CPM per second. This is a price floor for the // "dynamic" portion of a video ad pod, relative to the duration // of bids an advertiser may submit. // Not supported by Google. optional double mincpmpersec = 34; // Blocked creative attributes. See the full list of available attributes: // https://github.com/InteractiveAdvertisingBureau/AdCOM/blob/main/AdCOM%20v1.0%20FINAL.md#list--creative-attributes- // Supported by Google. repeated CreativeAttribute battr = 10 [packed = true]; // Maximum extended video ad duration, if extension is allowed. // If blank or 0, extension is not allowed. If -1, extension is allowed, // and there is no time limit imposed. If greater than 0, then the value // represents the number of seconds of extended play supported beyond // the maxduration value. // Not supported by Google. optional int32 maxextended = 11; // Minimum bit rate in Kbps. // Supported by Google. optional int32 minbitrate = 12; // Maximum bit rate in Kbps. // Supported by Google. optional int32 maxbitrate = 13; // Indicates if letter-boxing of 4:3 content into a 16:9 window is // allowed. // Not supported by Google. optional bool boxingallowed = 14 [default = true]; // Playback methods that may be in use. If none are specified, any // method may be used. Only one method is typically used in practice. // As a result, this array may be converted to an integer in a future // version of the specification. It is strongly advised to use only // the first element of this array in preparation for this change. // Supported by Google. repeated PlaybackMethod playbackmethod = 15 [packed = true]; // The event that causes playback to end. // Supported by Google. optional PlaybackCessationMode playbackend = 27; // Supported delivery methods (for example, streaming, progressive). // Supported by Google. repeated ContentDeliveryMethod delivery = 16 [packed = true]; // Ad position on screen. // Supported by Google. optional AdPosition pos = 17; // Array of Banner objects (Section 3.2.3) if companion ads are available. // Supported by Google. repeated Banner companionad = 18; // List of supported API frameworks for this impression. // If an API is not explicitly listed, it is assumed not to be supported. // Supported by Google. repeated APIFramework api = 19 [packed = true]; // Supported VAST companion ad types. Recommended if companion Banner // objects are included through the companionad array. // Supported by Google. repeated CompanionType companiontype = 20 [packed = true]; // DEPRECATED in OpenRTB 2.3+, REMOVED in 2.6. // Use the field <code>protocols</code>. // Not supported by Google. optional Protocol protocol = 5 [deprecated = true]; extensions 100 to 9999; } // A Video object (Section 3.2.4); required if this impression is // offered as a video ad opportunity. // Supported by Google. optional Video video = 3; // This object represents an audio type impression. Many of the fields // are non-essential for minimally viable transactions, but are included // to offer fine control when needed. Audio in OpenRTB generally assumes // compliance with the DAAST standard. As such, the notion of companion // ads is supported by optionally including an array of Banner objects // that define these companion ads. // // The presence of a Audio as a subordinate of the Imp object indicates // that this impression is offered as an audio type impression. // At the publisher's discretion, that same impression may also be offered // as banner, video, and/or native by also including as Imp subordinates // objects of those types. However, any given bid for the impression must // conform to one of the offered types. message Audio { // Content MIME types supported (for example, "audio/mp4"). // REQUIRED by the OpenRTB specification: at least 1 element. // Supported by Google. repeated string mimes = 1; // Minimum audio ad duration in seconds. // This field is mutually exclusive with rqddurs; only one of minduration // and rqddurs may be in a bid request. // Supported by Google. optional int32 minduration = 2 [default = 0]; // Maximum audio ad duration in seconds. // This field is mutually exclusive with rqddurs; only one of maxduration // and rqddurs may be in a bid request. // Supported by Google. optional int32 maxduration = 3; // Indicates the total amount of time in seconds that advertisers may // fill for a "dynamic" audio ad pod, or the dynamic portion of a // "hybrid" ad pod. This field is required only for the dynamic // portion(s) of audio ad pods. This field refers to the length of the // entire ad break, whereas minduration/maxduration/rqddurs are // constraints relating to the slots that make up the pod. // Not supported by Google. optional int32 poddur = 25; // Array of supported audio protocols. // Supported by Google. repeated Protocol protocols = 4 [packed = true]; // Indicates the start delay in seconds for pre-roll, mid-roll, or // post-roll ad placements. // Refer to enum StartDelay for generic values. // Supported by Google. optional int32 startdelay = 5; // Precise acceptable durations for audio creatives in seconds. // This field specifically targets the live audio/radio use case where // non-exact ad durations would result in undesirable ‘dead air’. // This field is mutually exclusive with minduration and // maxduration; if rqddurs is specified, minduration and // maxduration must not be specified and the other way around. // Not supported by Google. repeated int32 rqddurs = 26 [packed = true]; // Unique identifier indicating that an impression opportunity // belongs to an audio ad pod. If multiple impression opportunities // within a bid request share the same podid, this indicates that // those impression opportunities belong to the same audio ad pod. // Not supported by Google. optional string podid = 27; // The sequence (position) of the audio ad pod within a content stream. // Not supported by Google. optional PodSequence podseq = 28 [default = POD_SEQUENCE_ANY]; // DEPRECATED in OpenRTB 2.6+; prefer the field podseq. // If multiple ad impressions are offered in the same bid request, // the sequence number will allow for the coordinated delivery of // multiple creatives. // Not supported by Google. optional int32 sequence = 6 [deprecated = true, default = 1]; // For audio ad pods, this value indicates that the seller can // guarantee delivery against the indicated sequence. // Not supported by Google. optional SlotPositionInPod slotinpod = 29 [default = SLOT_POSITION_POD_ANY]; // Minimum CPM per second. This is a price floor for the // "dynamic" portion of an audio ad pod, relative to the duration // of bids an advertiser may submit. // Not supported by Google. optional double mincpmpersec = 30; // Blocked creative attributes. See the full list of available attributes: // https://github.com/InteractiveAdvertisingBureau/AdCOM/blob/main/AdCOM%20v1.0%20FINAL.md#list--creative-attributes- // Supported by Google. repeated CreativeAttribute battr = 7 [packed = true]; // Maximum extended video ad duration, if extension is allowed. // If blank or 0, extension is not allowed. If -1, extension is allowed, // and there is no time limit imposed. If greater than 0, then the value // represents the number of seconds of extended play supported beyond // the maxduration value. // Not supported by Google. optional int32 maxextended = 8; // Minimum bit rate in Kbps. // Not supported by Google. optional int32 minbitrate = 9; // Maximum bit rate in Kbps. // Not supported by Google. optional int32 maxbitrate = 10; // Supported delivery methods (for example, streaming, progressive). // Supported by Google. repeated ContentDeliveryMethod delivery = 11 [packed = true]; // Array of Banner objects if companion ads are available. // Supported by Google. repeated Banner companionad = 12; // List of supported API frameworks for this impression. // If an API is not explicitly listed, it is assumed not to be supported. // Supported by Google. repeated APIFramework api = 13 [packed = true]; // Supported DAAST companion ad types. Recommended if companion Banner // objects are included through the companionad array. // Supported by Google. repeated CompanionType companiontype = 20 [packed = true]; // The maximum number of ads that can be played in an ad pod. // Not supported by Google. optional int32 maxseq = 21; // Type of audio feed. // Supported by Google. optional FeedType feed = 22; // Indicates if the ad is stitched with audio content or delivered // independently. // Not supported by Google. optional bool stitched = 23; // Volume normalization mode. // Not supported by Google. optional VolumeNormalizationMode nvol = 24; extensions 100 to 9999; } // An Audio object; required if this impression is offered // as an audio ad opportunity. // Supported by Google. optional Audio audio = 15; // Name of ad mediation partner, SDK technology, or player responsible // for rendering ad (typically video or mobile). Used by some ad servers // to customize ad code by partner. Recommended for video and/or apps. // Supported by Google. optional string displaymanager = 4; // Version of ad mediation partner, SDK technology, or player responsible // for rendering ad (typically video or mobile). Used by some ad servers // to customize ad code by partner. Recommended for video and/or apps. // Supported by Google. optional string displaymanagerver = 5; // true = the ad is interstitial or full screen, false = not interstitial. // Supported by Google. optional bool instl = 6; // Identifier for specific ad placement or ad tag that was used to // initiate the auction. This can be useful for debugging of any issues, // or for optimization by the buyer. // Supported by Google. optional string tagid = 7; // Minimum bid for this impression expressed in CPM. // Supported by Google. optional double bidfloor = 8 [default = 0]; // The currency in which the bid floor is expressed. Specified using // ISO 4217 alpha codes. // Supported by Google. optional string bidfloorcur = 9 [default = "USD"]; // Indicates the type of browser opened upon clicking the // creative in an app, where false = embedded, true = native. // Note that the Safari View Controller in iOS 9.x devices is considered // a native browser for purposes of this attribute. // Supported by Google. optional bool clickbrowser = 16; // Indicates if the impression requires secure HTTPS URL creative // assets and markup. If omitted, the secure state is unknown, but // non-secure HTTP support can be assumed. // Supported by Google. optional bool secure = 12; // Array of exchange-specific names of supported iframe busters. // Not supported by Google. repeated string iframebuster = 10; // Indicates whether the user receives a reward for viewing the ad. // Typically video ad implementations allow users to read an additional news // article for free, receive an extra life in a game, or get a sponsored // ad-free music session. The reward is typically distributed after the // video ad is completed. // Supported by Google. optional bool rwdd = 18 [default = false]; // Indicates if server-side ad insertion (e.g., stitching an ad into an // audio or video stream) is in use and the impact of this on asset // and tracker retrieval. // Not supported by Google. optional ServerSideAdInsertionType ssai = 19 [default = SERVER_SIDE_AD_INSERTION_TYPE_UNKNOWN]; // OpenRTB 2.2: This object is the private marketplace container for // direct deals between buyers and sellers that may pertain to this // impression. The actual deals are represented as a collection of // Deal objects. Refer to Section 7.2 for more details. message Pmp { // Indicator of auction eligibility to seats named in the Direct Deals // object, where false = all bids are accepted, true = bids are restricted // to the deals specified and the terms thereof. // Supported by Google. optional bool private_auction = 1 [default = false]; // OpenRTB 2.2: This object constitutes a specific deal that was struck // a priori between a buyer and a seller. Its presence with the Pmp // collection indicates that this impression is available under the terms // of that deal. Refer to Section 7.2 for more details. message Deal { // A unique identifier for the direct deal. // REQUIRED by the OpenRTB specification. // Supported by Google. required string id = 1; // Minimum bid for this deal expressed in CPM. // Supported by Google. optional double bidfloor = 2 [default = 0]; // The currency in which the deal floor is expressed. Specified using // ISO 4217 alpha codes. // Supported by Google. optional string bidfloorcur = 3 [default = "USD"]; // Allowlist of buyer seats (for example, advertisers, agencies) that // can bid on this deal. IDs of seats and knowledge of the buyer's // customers to which they refer must be coordinated between bidders and // the exchange a priori. Omission implies no seat restrictions. // Supported by Google. repeated string wseat = 4; // Array of advertiser domains (for example, advertiser.com) allowed to // bid on this deal. Omission implies no advertiser restrictions. // Not supported by Google. repeated string wadomain = 5; // Optional override of the overall auction type of the bid request. // Supports the additional value FIXED_PRICE: the value passed in // bidfloor is the agreed upon deal price. // Supported by Google. optional AuctionType at = 6; extensions 100 to 9999; } // Array of Deal (Section 3.2.18) objects that convey the specific deals // applicable to this impression. // Supported by Google. repeated Deal deals = 2; extensions 100 to 9999; } // A Pmp object (Section 3.2.17) containing any private marketplace deals // in effect for this impression. // Supported by Google. optional Pmp pmp = 11; // OpenRTB 2.3: This object represents a native type impression. // Native ad units are intended to blend seamlessly into the surrounding // content (for example, a sponsored Twitter or Facebook post). As such, the // response must be well-structured to afford the publisher fine-grained // control over rendering. // // The Native Subcommittee has developed a companion specification to // OpenRTB called the Native Ad Specification. It defines the request // parameters and response markup structure of native ad units. // This object provides the means of transporting request parameters as an // opaque string so that the specific parameters can evolve separately // under the auspices of the Native Ad Specification. Similarly, the // ad markup served will be structured according to that specification. // // The presence of a Native as a subordinate of the Imp object indicates // that this impression is offered as a native type impression. // At the publisher's discretion, that same impression may also be offered // as banner and/or video by also including as Imp subordinates the Banner // and/or Video objects, respectively. However, any given bid for the // impression must conform to one of the offered types. message Native { oneof request_oneof { // Request payload complying with the Native Ad Specification. // Exactly one of {request, request_native} should be used; // this is the OpenRTB-compliant field for JSON serialization. string request = 1; // Request payload complying with the Native Ad Specification. // Exactly one of {request, request_native} should be used; // this is an alternate field preferred for Protobuf serialization. NativeRequest request_native = 50; } // Version of the Native Ad Specification to which request complies. optional string ver = 2; // List of supported API frameworks for this impression. // If an API is not explicitly listed, it is assumed not to be supported. repeated APIFramework api = 3 [packed = true]; // Blocked creative attributes. See the full list of available attributes: // https://github.com/InteractiveAdvertisingBureau/AdCOM/blob/main/AdCOM%20v1.0%20FINAL.md#list--creative-attributes- repeated CreativeAttribute battr = 4 [packed = true]; extensions 100 to 9999; } // A Native object (Section 3.2.5); required if this impression is // offered as a native ad opportunity. // Supported by Google. optional Native native = 13; // Advisory as to the number of seconds that may elapse // between the auction and the actual impression. // Supported by Google. optional int32 exp = 14; // OpenRTB 2.5: This object is associated with an impression as // an array of metrics. These metrics can offer insight into // the impression to assist with decisioning such as average recent // viewability, click-through rate, or another metric. Each metric is // identified by its type, reports the value of the metric, and optionally // identifies the source or vendor measuring the value. message Metric { // Type of metric being presented using exchange curated string // names which should be published to bidders a priori. // REQUIRED by the OpenRTB specification. // Supported by Google. optional string type = 1; // Number representing the value of the metric. // Probabilities must be in the range 0.0 - 1.0. // REQUIRED by the OpenRTB specification. // Supported by Google. optional double value = 2; // Source of the value using exchange curated string names // which should be published to bidders a priori. // If the exchange itself is the source versus a third party, // "EXCHANGE" is recommended. // Supported by Google. optional string vendor = 3; extensions 100 to 9999; } // An array of Metric object. // Supported by Google. repeated Metric metric = 17; // Details on automatic ad slot refreshes: frequency, triggers, and refresh // count since last page load for this specific slot. message Refresh { // Information on how often and what triggers an ad slot being refreshed. message RefSettings { // The type of the declared auto refresh. Refer to List: Auto Refresh // Trigger in AdCOM 1.0: // https://github.com/InteractiveAdvertisingBureau/AdCOM/blob/develop/AdCOM%20v1.0%20FINAL.md#list-auto-refresh-triggers-. // Supported by Google. optional int32 reftype = 1; // The minimum refresh interval in seconds. This applies to all refresh // types. This is the (uninterrupted) time the ad creative will be // rendered before refreshing to the next creative. If the field is // absent, the exposure time is unknown. This field does not account for // viewability or external factors such as a user leaving a page. // Supported by Google. optional int32 minint = 2; } // Describes the mechanics of how an ad placement automatically refreshes. // Supported by Google. repeated RefSettings refsettings = 1; // The number of times this ad slot had been refreshed since last page // load. // Supported by Google. optional int32 count = 2; extensions 100 to 9999; } // Details about ad slots being refreshed automatically. // Supported by Google. optional Refresh refresh = 20; extensions 100 to 9999; } // Array of Imp objects (Section 3.2.2) representing the impressions offered. // At least 1 Imp object is required. // Supported by Google. repeated Imp imp = 2; // OpenRTB 2.0: This object describes the publisher of the media in which // the ad will be displayed. The publisher is typically the seller // in an OpenRTB transaction. message Publisher { // Exchange-specific publisher ID. // Supported by Google. optional string id = 1; // Publisher name (may be aliased at publisher's request). // Not supported by Google. optional string name = 2; // The taxonomy in use for cat. // Not supported by Google. optional CategoryTaxonomy cattax = 5 [default = IAB_CONTENT_1_0]; // Array of IAB content categories that describe the publisher. // The taxonomy to be used is defined by the cattax field. // Not supported by Google. repeated string cat = 3; // Highest level domain of the publisher (for example, "publisher.com"). // Not supported by Google. optional string domain = 4; extensions 100 to 9999; } // OpenRTB 2.0: This object describes the content in which the impression // will appear, which may be syndicated or non-syndicated content. // This object may be useful when syndicated content contains impressions and // does not necessarily match the publisher's general content. // The exchange might or might not have knowledge of the page where the // content is running, as a result of the syndication method. // For example might be a video impression embedded in an iframe on an // unknown web property or device. message Content { // ID uniquely identifying the content. // Not supported by Google. optional string id = 1; // Content episode number (typically applies to video content). // Not supported by Google. optional int32 episode = 2; // Content title. // Video Examples: "Search Committee" (television), "A New Hope" (movie), // or "Endgame" (made for web). // Non-Video Example: "Why an Antarctic Glacier Is Melting So Quickly" // (Time magazine article). // Not supported by Google. optional string title = 3; // Content series. // Video Examples: "The Office" (television), "Star Wars" (movie), // or "Arby 'N' The Chief" (made for web). // Non-Video Example: "Ecocentric" (Time Magazine blog). // Not supported by Google. optional string series = 4; // Content season; typically for video content (for example, "Season 3"). // Not supported by Google. optional string season = 5; // Artist credited with the content. // Not supported by Google. optional string artist = 21; // Genre that best describes the content (for example, rock, pop, etc). // Not supported by Google. optional string genre = 22; // Album to which the content belongs; typically for audio. // Not supported by Google. optional string album = 23; // International Standard Recording Code conforming to ISO-3901. // Not supported by Google. optional string isrc = 24; // OpenRTB 2.0: This object defines the producer of the content in which // the ad will be shown. This is particularly useful when the content is // syndicated and may be distributed through different publishers and thus // when the producer and publisher are not necessarily the same entity. message Producer { // Content producer or originator ID. Useful if content is syndicated, // and may be posted on a site using embed tags. // Not supported by Google. optional string id = 1; // Content producer or originator name (for example, "Warner Bros"). // Not supported by Google. optional string name = 2; // The taxonomy in use for cat. // Not supported by Google. optional CategoryTaxonomy cattax = 5 [default = IAB_CONTENT_1_0]; // Array of IAB content categories that describe the content producer. // The taxonomy to be used is defined by the cattax field. // Not supported by Google. repeated string cat = 3; // Highest level domain of the content producer (for example, // "producer.com"). // Supported by Google. optional string domain = 4; extensions 100 to 9999; } // Details about the content Producer (Section 3.2.10). // Supported by Google. optional Producer producer = 15; // URL of the content, for buy-side contextualization or review. // Supported by Google. optional string url = 6; // The taxonomy in use for cat. // Not supported by Google. optional CategoryTaxonomy cattax = 27 [default = IAB_CONTENT_1_0]; // Array of IAB content categories that describe the content. // The taxonomy to be used is defined by the cattax field. // Not supported by Google. repeated string cat = 7; // Production quality. // Supported by Google. optional ProductionQuality prodq = 25; // Type of content (for example, game, video or text). // Not supported by Google. optional ContentContext context = 20; // Content rating. // Possible values: "DV-G", "DV-PG", "DV-T", "DV-MA". // Supported by Google. optional string contentrating = 10; // User rating of the content (for example, number of stars or likes). // Supported by Google. optional string userrating = 11; // Media rating per QAG guidelines. // Not supported by Google. optional QAGMediaRating qagmediarating = 17; // Comma separated list of keywords describing the content. // Not supported by Google. optional string keywords = 9; // false = not live, true = content is live (for example, stream, live // blog). // Supported by Google. optional bool livestream = 13; // false = indirect, true = direct. // Not supported by Google. optional bool sourcerelationship = 14; // Length of content in seconds; appropriate for video or audio. // Supported by Google. optional int32 len = 16; // Content language using ISO-639-1-alpha-2. // Only one of language or langb should be present. // Supported by Google. optional string language = 19; // Content language using IETF BCP 47. // Only one of language or langb should be present. // Not supported by Google. optional string langb = 29; // Indicator of whether or not the content is embeddable (for example, an // embeddable video player). // Not supported by Google. optional bool embeddable = 18; // Additional content data. Each object represents a different data source. // Supported by Google. Used for Publisher Provided Signals: // https://support.google.com/admanager/answer/12451124 repeated Data data = 28; // This object describes the network an ad will be displayed on. // A Network is defined as the parent entity of the Channel object's entity // for the purposes of organizing Channels. Examples are companies that own // and/or license a collection of content channels (Viacom, Discovery, CBS, // WarnerMedia, Turner and others), or studio that creates such content and // self-distributes content. Name is a human-readable field while domain and // id can be used for reporting and targeting purposes. message Network { // A unique identifier assigned by the publisher, for example "net-123". // This may not be a unique identifier across all supply sources. // Not supported by Google. optional string id = 1; // Network the content is on (e.g., a TV network like "ABC"). // Not supported by Google. optional string name = 2; // The primary domain of the network (e.g. "abc.com" in the case // of the network ABC). It is recommended to include the top // private domain (PSL+1) for DSP targeting normalization purposes. // Not supported by Google. optional string domain = 3; extensions 100 to 9999; } // Details about the network the content is on. // Not supported by Google. optional Network network = 30; // This object describes the channel an ad will be displayed on. // A Channel is defined as the entity that curates a content library, // or stream within a brand name for viewers. Examples are specific view // selectable 'channels' within linear and streaming television // (MTV, HGTV, CNN, BBC One, etc) or a specific stream of audio content // commonly called 'stations.' Name is a human-readable field while domain // and id can be used for reporting and targeting purposes. message Channel { // A unique identifier assigned by the publisher, for example "ch-456". // This may not be a unique identifier across all supply sources. // Not supported by Google. optional string id = 1; // Channel the content is on (e.g., a local channel like "WABC-TV"). // Not supported by Google. optional string name = 2; // The primary domain of the channel (e.g. "abc7ny.com" in the // case of the local channel WABC-TV). It is recommended to // include the top private domain (PSL+1) for DSP targeting // normalization purposes. // Not supported by Google. optional string domain = 3; extensions 100 to 9999; } // Details about the channel the content is on. // Not supported by Google. optional Channel channel = 31; // DEPRECATED in OpenRTB 2.4+. Prefer the field <code>prodq</code>. // Video quality per IAB's classification. // Not supported by Google. optional ProductionQuality videoquality = 8 [deprecated = true]; extensions 100 to 9999; } // OpenRTB 2.0: This object should be included if the ad supported content // is a website as opposed to a non-browser application. A bid request must // not contain both a Site and an App object. At a minimum, it is useful to // provide a site ID or page URL, but this is not strictly required. message Site { // Site ID on the exchange. // Not supported by Google. optional string id = 1; // Site name (may be masked at publisher's request). // Not supported by Google. optional string name = 2; // Domain of the site, used for advertiser side blocking. // For example, "foo.com". // Not supported by Google. optional string domain = 3; // The taxonomy in use for cat, sectioncat and pagecat. // Not supported by Google. optional CategoryTaxonomy cattax = 16 [default = IAB_CONTENT_1_0]; // Array of IAB content categories of the site. // The taxonomy to be used is defined by the cattax field. // Not supported by Google. repeated string cat = 4; // Array of IAB content categories that describe the current section // of the site. // The taxonomy to be used is defined by the cattax field. // Not supported by Google. repeated string sectioncat = 5; // Array of IAB content categories that describe the current page or view // of the site. // The taxonomy to be used is defined by the cattax field. // Not supported by Google. repeated string pagecat = 6; // URL of the page where the impression will be shown. // Supported by Google. optional string page = 7; // Indicates if the site has a privacy policy. // Not supported by Google. optional bool privacypolicy = 8; // Referrer URL that caused navigation to the current page. // Not supported by Google. optional string ref = 9; // Search string that caused navigation to the current page. // Not supported by Google. optional string search = 10; // Details about the Publisher (Section 3.2.8) of the site. // Supported by Google. optional Publisher publisher = 11; // Details about the Content (Section 3.2.9) within the site. // Supported by Google. optional Content content = 12; // Comma separated list of keywords about this site. // Not supported by Google. optional string keywords = 13; // Indicates if the site has been programmed to optimize layout // when viewed on mobile devices. // Supported by Google. optional bool mobile = 15; extensions 100 to 9999; } // OpenRTB 2.0: This object should be included if the ad supported content // is a non-browser application (typically in mobile) as opposed to a website. // A bid request must not contain both an App and a Site object. // At a minimum, it is useful to provide an App ID or bundle, // but this is not strictly required. message App { // Application ID on the exchange. // Not supported by Google. optional string id = 1; // Application name (may be aliased at publisher's request). App names for // SDK-less requests (mostly from connected TVs) can be provided by the // publisher directly in the request. // Supported by Google. optional string name = 2; // Domain of the application. For example, "mygame.foo.com". // Not supported by Google. optional string domain = 3; // The taxonomy in use for cat, sectioncat and pagecat. // Not supported by Google. optional CategoryTaxonomy cattax = 17 [default = IAB_CONTENT_1_0]; // Array of IAB content categories of the app. // The taxonomy to be used is defined by the cattax field. // Not supported by Google. repeated string cat = 4; // Array of IAB content categories that describe the current section // of the app. // The taxonomy to be used is defined by the cattax field. // Not supported by Google. repeated string sectioncat = 5; // Array of IAB content categories that describe the current page or view // of the app. // The taxonomy to be used is defined by the cattax field. // Not supported by Google. repeated string pagecat = 6; // Version of the application specified in the bundle field (for example, // "2.0.1"). // Supported by Google. optional string ver = 7; // A platform-specific application identifier intended to be // unique to the app and independent of the exchange. On Android, // this should be a bundle or package name (for example, com.foo.mygame). // On iOS, it is a numeric ID. For SDK-less requests (mostly from connected // TVs), it can be provided by the publisher directly in the request. // Supported by Google. optional string bundle = 8; // Indicates if the app has a privacy policy. // Not supported by Google. optional bool privacypolicy = 9; // false = app is free, true = the app is a paid version. // Not supported by Google. optional bool paid = 10; // Details about the Publisher (Section 3.2.8) of the app. // Supported by Google. optional Publisher publisher = 11; // Details about the Content (Section 3.2.9) within the app. // Supported by Google. optional Content content = 12; // Comma separated list of keywords about the app. // Not supported by Google. optional string keywords = 13; // App store URL for an installed app; for QAG 1.5 compliance. // Supported by Google. optional string storeurl = 16; extensions 100 to 9999; } // OpenRTB 2.0: This object encapsulates various methods for specifying a // geographic location. When subordinate to a Device object, it indicates the // location of the device which can also be interpreted as the user's current // location. When subordinate to a User object, it indicates the location of // the user's home base (for example, not necessarily their current location). // // Google: In Google's implementation of OpenRTB, coarse geolocation // information is approximated based on the IP address of the device the ad // request originated from. This information will typically–but not always–be // included in the bid request with lat/lon representing the center point of // a circle, where accuracy is its radius. To learn more about geolocation, // see the geotargeting guide: // https://developers.google.com/authorized-buyers/rtb/geotargeting. message Geo { // Approximate latitude from -90.0 to +90.0, where negative is south. // Supported by Google. optional double lat = 1; // Approximate longitude from -180.0 to +180.0, where negative is west. // Supported by Google. optional double lon = 2; // Country using ISO-3166-1 Alpha-3. // Supported by Google. optional string country = 3; // Region code using ISO-3166-2; 2-letter state code if USA. // Supported by Google. optional string region = 4; // Region of a country using FIPS 10-4 notation. While OpenRTB supports // this attribute, it has been withdrawn by NIST in 2008. // Not supported by Google. optional string regionfips104 = 5; // Google metro code; similar to but not exactly Nielsen DMAs. // See Appendix A for a link to the codes. // (http://code.google.com/apis/adwords/docs/appendix/metrocodes.html). // Supported by Google. optional string metro = 6; // City using United Nations Code for Trade & Transport Locations. // See Appendix A for a link to the codes. // (http://www.unece.org/cefact/locode/service/location.htm). // Supported by Google. optional string city = 7; // Zip/postal code. // Supported by Google. optional string zip = 8; // Source of location data; recommended when passing lat/lon. // Supported by Google. optional LocationType type = 9; // Estimated location accuracy in meters; recommended when lat/lon are // specified and derived from a device's location services (for example, // type = 1). Note that this is the accuracy as reported from the device. // Consult OS specific documentation (for example, Android, iOS) for exact // interpretation. // // Google: The radius in meters of a circle approximating the location of a // device, where the center point is defined by lat/lon. This field is // populated based on coarse IP-based geolocation. // Supported by Google. optional int32 accuracy = 11; // Number of seconds since this geolocation fix was established. // Note that devices may cache location data across multiple fetches. // Ideally, this value should be from the time the actual fix was taken. // Not supported by Google. optional int32 lastfix = 12; // Service or provider used to determine geolocation from IP // address if applicable (for example, type = 2). // Not supported by Google. optional LocationService ipservice = 13; // Local time as the number +/- of minutes from UTC. // Supported by Google. optional int32 utcoffset = 10; extensions 100 to 9999; } // OpenRTB 2.0: This object provides information pertaining to the device // through which the user is interacting. Device information includes its // hardware, platform, location, and carrier data. The device can refer to a // mobile handset, a desktop computer, set top box, or other digital device. message Device { // Location of the device assumed to be the user's current location defined // by a Geo object (Section 3.2.12). // Supported by Google. optional Geo geo = 4; // Standard "Do Not Track" option as set in the header by the browser, // where false = tracking is unrestricted, true = do not track. // Not supported by Google. optional bool dnt = 1; // "Limit Ad Tracking" is a commercially endorsed signal based on the // operating system or device settings, where `false` indicates that // tracking is unrestricted and `true` indicates that tracking must be // limited per commercial guidelines. // // This signal reflects user decisions on surfaces including iOS App // Tracking Transparency: // https://developer.apple.com/documentation/apptrackingtransparency // See also lmt and App Tracking Transparency guidance: // https://github.com/InteractiveAdvertisingBureau/openrtb/blob/master/extensions/community_extensions/skadnetwork.md#dnt-lmt-and-app-tracking-transparency-guidance // and Android advertising ID: // https://support.google.com/googleplay/android-developer/answer/6048248 // // Supported by Google. optional bool lmt = 23; // Browser user agent string. Certain data may be redacted or replaced. // Supported by Google. optional string ua = 2; // Structured user agent information, which can be used when a client // supports User-Agent Client Hints: https://wicg.github.io/ua-client-hints/ // // Note: When available, fields are sourced from Client Hints HTTP headers // or equivalent JavaScript accessors from the NavigatorUAData interface. // For agents that have no support for User-Agent Client Hints, an exchange // can also extract information from the parsed User-Agent header, so this // object can always be used as the source of the user agent information. message UserAgent { // Identifies a device's browser or similar software component, and the // user agent's execution platform or operating system. message BrandVersion { // A brand identifier, for example, "Chrome" or "Windows". The value may // be sourced from the User-Agent Client Hints headers, representing // either the user agent brand (from the Sec-CH-UA-Full-Version header) // or the platform brand (from the Sec-CH-UA-Platform header). // Not supported by Google. optional string brand = 1; // A sequence of version components, in descending hierarchical order // (major, minor, micro, ...). // Not supported by Google. repeated string version = 2; } // Each BrandVersion object identifies a browser or similar software // component. Exchanges should send brands and versions derived from // the Sec-CH-UA-Full-Version-List header. // Not supported by Google. repeated BrandVersion browsers = 1; // Identifies the user agent's execution platform / OS. Exchanges should // send a brand derived from the Sec-CH-UA-Platform header, and version // derived from the Sec-CH-UAPlatform-Version header. // Not supported by Google. optional BrandVersion platform = 2; // true if the agent prefers a "mobile" version of the content if // available, meaning optimized for small screens or touch input. false if // the agent prefers the "desktop" or "full" content. Exchanges should // derive this value from the Sec-CH-UAMobile header. // Not supported by Google. optional bool mobile = 3; // Device's major binary architecture, for example, "x86" or "arm". // Exchanges should retrieve this value from the Sec-CH-UA-Arch header. // Not supported by Google. optional string architecture = 4; // Device's bitness, for example, "64" for 64-bit architecture. Exchanges // should retrieve this value from the Sec-CH-UA-Bitness header. // Not supported by Google. optional string bitness = 5; // Device model. Exchanges should retrieve this value from the // Sec-CH-UAModel header. // Not supported by Google. optional string model = 6; // The source of data for the User Agent information. // Supported by Google. optional UserAgentSource source = 7; } // Structured user agent information. If both Device.ua and Device.sua are // present in the bid request, Device.sua should be considered the more // accurate representation of the device attributes. This is because // Device.ua may contain a frozen or reduced user agent string. // Supported by Google. optional UserAgent sua = 31; // IPv4 address closest to device. // Supported by Google. Truncated to the first 3 octets: "X.X.X.0". optional string ip = 3; // IPv6 address closest to device. // Supported by Google. Truncated to the first 6 octets: "X:X:X:::::". optional string ipv6 = 9; // The general type of device. // Supported by Google. optional DeviceType devicetype = 18; // Device make (for example, "Apple" or "Samsung"). // Supported by Google. optional string make = 12; // Device model (for example, "pixel 7 pro"). For iPhone/iPad, this // field contains Apple's model identifier string (such as "iPhone12,1" and // "iPad13,8") if available. Otherwise this field contains the generic model // (either "iphone" or "ipad"). // Supported by Google. optional string model = 13; // Device operating system (for example, "iOS"). // Supported by Google. optional string os = 14; // Device operating system version (for example, "3.1.2"). // Supported by Google. optional string osv = 15; // Hardware version of the device. For iPhone/iPad, this field contains // Apple's model identifier string (such as "iPhone12,1" and "iPad13,8") if // available. // Supported by Google. optional string hwv = 24; // Physical width of the screen in pixels. // Supported by Google. optional int32 w = 25; // Physical height of the screen in pixels. // Supported by Google. optional int32 h = 26; // Screen size as pixels per linear inch. // Not supported by Google. optional int32 ppi = 27; // The ratio of physical pixels to device independent pixels. // Supported by Google. optional double pxratio = 28; // Support for JavaScript. // Not supported by Google. optional bool js = 16; // Indicates if the geolocation API will be available to JavaScript // code running in the banner. // Not supported by Google. optional bool geofetch = 29; // Version of Flash supported by the browser. // Not supported by Google. optional string flashver = 19; // Browser language using ISO-639-1-alpha-2. // Only one of language or langb should be present. // Not supported by Google. optional string language = 11; // Browser language using IETF BCP 47. // Only one of language or langb should be present. // Not supported by Google. optional string langb = 32; // Carrier or ISP (for example, "VERIZON") using exchange curated string // names which should be published to bidders a priori. // Supported by Google. optional string carrier = 10; // Mobile carrier as the concatenated MCC-MNC code (for example, // "310-005" identifies Verizon Wireless CDMA in the USA). // Refer to https://en.wikipedia.org/wiki/Mobile_country_code // for further examples. Note that the dash between the MCC // and MNC parts is required to remove parsing ambiguity. // The MCC-MNC values represent the SIM installed on the device and // do not change when a device is roaming. Roaming may be inferred by // a combination of the MCC-MNC, geo, IP and other data signals. // Not supported by Google. optional string mccmnc = 30; // Network connection type. // // Google: For 5G connection type, we send CELL_4G instead of CELL_5G. // Supported by Google. optional ConnectionType connectiontype = 17; // ID sanctioned for advertiser use in the clear (meaning, not hashed). // Supported by Google. optional string ifa = 20; // DEPRECATED in OpenRTB 2.6+. No replacement. // Hardware device ID (for example, IMEI); hashed through SHA1. // Not supported by Google. optional string didsha1 = 5 [deprecated = true]; // DEPRECATED in OpenRTB 2.6+. No replacement. // Hardware device ID (for example, IMEI); hashed through MD5. // Not supported by Google. optional string didmd5 = 6 [deprecated = true]; // DEPRECATED in OpenRTB 2.6+. No replacement. // Platform device ID (for example, Android ID); hashed through SHA1. // Not supported by Google. optional string dpidsha1 = 7 [deprecated = true]; // DEPRECATED in OpenRTB 2.6+. No replacement. // Platform device ID (for example, Android ID); hashed through MD5. // Supported by Google. optional string dpidmd5 = 8 [deprecated = true]; // DEPRECATED in OpenRTB 2.6+. No replacement. // MAC address of the device; hashed through SHA1. // Not supported by Google. optional string macsha1 = 21 [deprecated = true]; // DEPRECATED in OpenRTB 2.6+. No replacement. // MAC address of the device; hashed through MD5. // Not supported by Google. optional string macmd5 = 22 [deprecated = true]; extensions 100 to 9999; } // Information about the device the impression will be delivered to. // Supported by Google. optional Device device = 5; // OpenRTB 2.2: This object contains any legal, governmental, or industry // regulations that apply to the request. The coppa field signals whether // or not the request falls under the United States Federal Trade Commission's // regulations for the United States Children's Online Privacy Protection Act // ("COPPA"). Refer to Section 7.1 for more information. message Regs { // Indicates if this request is subject to the COPPA regulations // established by the USA FTC. // Not supported by Google. optional bool coppa = 1; // Contains the Global Privacy Platform's consent string. See the Global // Privacy Platform specification for more details: // https://github.com/InteractiveAdvertisingBureau/Global-Privacy-Platform // Not supported by Google. optional string gpp = 2; // Each section represents a unique privacy signal, usually a unique // jurisdiction. Below are the supported discrete sections. enum GppSectionId { // EU TCF v1 section (deprecated) TCFEUV1 = 1; // EU TCF v2 section (see note below) TCFEUV2 = 2; // GPP Header section (REQUIRED, see note below) GPP_HEADER = 3; // GPP signal integrity section GPP_SIGNAL = 4; // Canadian TCF section TCFCA = 5; // USPrivacy String (Unencoded Format) USPV1 = 6; // US - national section USNAT = 7; // US - California section USCA = 8; // US - Virginia section USVA = 9; // US - Colorado section USCO = 10; // US - Utah section USUT = 11; // US - Connecticut section USCT = 12; } // Array of the section(s) of the string which should be applied for this // transaction. Generally will contain one and only one value, but there are // edge cases where more than one may apply. GPP Section 3 (Header) and 4 // (Signal Integrity) do not need to be included. See enum GppSectionId. // Not supported by Google. repeated GppSectionId gpp_sid = 3 [packed = true]; extensions 100 to 9999; } // A Regs object (Section 3.2.16) that specifies any industry, legal, // or governmental regulations in force for this request. // Supported by Google. optional Regs regs = 14; // OpenRTB 2.0: The data and segment objects together allow additional data // about the user to be specified. This data may be from multiple sources // whether from the exchange itself or third party providers as specified by // the id field. A bid request can mix data objects from multiple providers or // can have multiple data objects. The specific data providers in use should // be published by the exchange a priori to its bidders. // // Google: This is used to send Publisher Provided Signals and Topics to // bidders. message Data { // The Google assigned ID of the data provider. Only set for Data segments // from Publisher Provided Signals. For the list of data providers, see // https://storage.googleapis.com/adx-rtb-dictionaries/data_providers.txt. // Supported by Google. optional string id = 1; // Exchange-specific name for the data provider. // Not supported by Google. optional string name = 2; // OpenRTB 2.0: Segment objects are essentially key-value pairs that // convey specific units of data about the user. The parent Data object // is a collection of such values from a given data provider. // The specific segment names and value options must be published by the // exchange a priori to its bidders. message Segment { // ID of the data segment specific to the data provider. // Supported by Google. optional string id = 1; // Name of the data segment specific to the data provider. // Not supported by Google. optional string name = 2; // String representation of the data segment value. // Not supported by Google. optional string value = 3; extensions 100 to 9999; } // Array of Segment (Section 3.2.15) objects that contain the actual // data values. // Supported by Google. repeated Segment segment = 3; extensions 100 to 9999; } // OpenRTB 2.0: This object contains information known or derived about // the human user of the device (for example, the audience for advertising). // The user id is an exchange artifact and may be subject to rotation or other // privacy policies. However, this user ID must be stable long enough to serve // reasonably as the basis for frequency capping and retargeting. message User { // Exchange-specific ID for the user. At least one of id or buyeruid // is recommended. // Supported by Google. optional string id = 1; // Buyer-specific ID for the user as mapped by the exchange for the buyer. // At least one of buyeruid or id is recommended. // Supported by Google. Populated with hosted match data. optional string buyeruid = 2; // DEPRECATED in OpenRTB 2.6+; no replacement. // Year of birth as a 4-digit integer. // Not supported by Google. optional int32 yob = 3 [deprecated = true]; // DEPRECATED in OpenRTB 2.6+; no replacement. // Gender as "M" male, "F" female, "O" Other. (Null indicates unknown) // Not supported by Google. optional string gender = 4 [deprecated = true]; // Comma separated list of keywords, interests, or intent. // Only one of 'keywords' or 'kwarray' may be present. // Not supported by Google. optional string keywords = 5; // Array of keywords about the user. // Only one of 'keywords' or 'kwarray' may be present. // Not supported by Google. repeated string kwarray = 9; // Optional feature to pass bidder data set in the exchange's cookie. // The string must be in base85 cookie safe characters and be in any format. // Proper JSON encoding must be used to include "escaped" quotation marks. // Supported by Google. Populated with hosted match data. optional string customdata = 6; // Location of the user's home base defined by a Geo object // (Section 3.2.12). This is not necessarily their current location. // Not supported by Google. optional Geo geo = 7; // Additional user data. Each Data object (Section 3.2.14) represents a // different data source. // Supported by Google. // Used for Chrome Topics API and for Publisher Provided Signals: // https://developers.google.com/authorized-buyers/rtb/topics // https://support.google.com/admanager/answer/12451124 repeated Data data = 8; // 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. // Not supported by Google. Google supports the IAB TCFv2 consent string // with the extension BidRequest.user.ext.consent. optional string consent = 10; // Extended data, such as a publisher-provided identifier, that allows // buyers to use data made available by the publisher in real-time bidding. // This object can contain one or more UIDs from a single source or a // technology provider. message EID { // Source or technology provider responsible for the set of included data. // Supported by Google. optional string source = 1; // This object contains a single data item, such as a publisher-provided // identifier, provided as part of extended identifiers. message UID { // The data value, such as a publisher-provided identifier. // Supported by Google. optional string id = 1; // Type of user agent the ID is from. // Not supported by Google. optional AgentType atype = 2; extensions 100 to 9999; } // Array of extended ID UID objects from the given source. // Supported by Google. repeated UID uids = 2; // The canonical domain name of the entity // (publisher, publisher monetization company, SSP, Exchange, Header // Wrapper, etc.) that caused the ID array element to be added. This may // be the operational domain of the system, if that is different from the // parent corporate domain, to facilitate WHOIS and reverse IP lookups to // establish clear ownership of the delegate system. This should be the // same value as used to identify sellers in an ads.txt file if one // exists. For ad tech intermediaries, this would be the domain as used in // ads.txt. For publishers, this would match the domain in the site or app // object. // Not supported by Google. optional string inserter = 3; // Technology providing the match method as defined in mm. // In some cases, this may be the same value as inserter. // When blank, it is assumed that the matcher is equal to the source // May be omitted when mm=0, 1, or 2. // Not supported by Google. optional string matcher = 4; // Match method used by the matcher. // Refer to List: ID Match Methods in AdCOM 1.0 // https://github.com/InteractiveAdvertisingBureau/AdCOM/blob/develop/AdCOM%20v1.0%20FINAL.md#list-id-match-methods- // Not supported by Google. optional int32 mm = 5; extensions 100 to 9999; } // Data made available by the publisher, such as publisher-provided // identifiers. // Supported by Google. For Secure Signals, see extension // BidRequest.user.ext.eids. repeated EID eids = 11; extensions 100 to 9999; } // Information about the user of the device or the advertising audience. // Supported by Google. optional User user = 6; // Auction type: one of FIRST_PRICE or SECOND_PRICE. // Supported by Google. optional AuctionType at = 7 [default = SECOND_PRICE]; // Maximum time in milliseconds to submit a bid to avoid timeout. // This value is commonly communicated offline. // Supported by Google. optional int32 tmax = 8; // Allowlist of buyer seats (for example, advertisers, agencies) that can bid // on this impression. IDs of seats and knowledge of the buyer's customers to // which they refer must be coordinated between bidders and the exchange a // priori. Omission implies no seat restrictions. // Supported by Google. repeated string wseat = 9; // Indicates if Exchange can verify that the impressions offered // represent all of the impressions available in context (for example, all on // the web page, all