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 protocols
.
// 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 prodq
.
// 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 video spots such as pre/mid/post roll) to support
// road-blocking. false = no or unknown, true = yes, the impressions offered
// represent all that are available.
// Not supported by Google.
optional bool allimps = 10 [default = false];
// Array of allowed currencies for bids on this bid request using ISO-4217
// alpha codes. Recommended only if the exchange accepts multiple currencies.
// Supported by Google.
repeated string cur = 11;
// Blocked advertiser categories using the IAB content categories.
// The taxonomy to be used is defined by the cattax field.
// Supported by Google.
repeated string bcat = 12;
// The taxonomy in use for bcat.
// Not supported by Google.
optional CategoryTaxonomy cattax = 21 [default = IAB_CONTENT_1_0];
// Block list of advertisers by their domains (for example, "ford.com").
// Not supported by Google.
repeated string badv = 13;
// Block list of applications by their platform-specific exchange
// independent application identifiers. On Android, these should
// be bundle or package names (for example, com.foo.mygame).
// On iOS, these are numeric IDs.
// Supported by Google.
repeated string bapp = 16;
// Indicator of test mode in which auctions are not billable,
// where false = live mode, true = test mode.
// Supported by Google.
optional bool test = 15 [default = false];
// Block list of buyer seats (for example, advertisers, agencies) restricted
// from bidding 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.
// At most, only one of wseat and bseat should be used in the
// same request. Omission of both implies no seat restrictions.
// Supported by Google.
repeated string bseat = 17;
// Allowed list of languages for creatives using ISO-639-1-alpha-2.
// Omission implies no specific restrictions, but buyers would be
// advised to consider language attribute in the Device and/or
// Content objects if available.
// Only one of wlang or wlangb should be present.
// Supported by Google.
repeated string wlang = 18;
// Allowed list of languages for creatives using IETF BCP 47I.
// Omission implies no specific restrictions, but buyers would be
// advised to consider language attribute in the Device and/or
// Content objects if available.
// Only one of wlang or wlangb should be present.
// Not supported by Google.
repeated string wlangb = 20;
// OpenRTB 2.5: This object describes the nature and behavior of the entity
// that is the source of the bid request upstream from the exchange.
// The primary purpose of this object is to define post-auction or upstream
// decisioning when the exchange itself does not control the final decision.
// A common example of this is header bidding, but it can also apply to
// upstream server entities such as another RTB exchange, a mediation
// platform, or an ad server combines direct campaigns with 3rd party
// demand in decisioning.
message Source {
// Entity responsible for the final impression sale decision,
// where false = exchange, true = upstream source
// Not supported by Google.
optional bool fd = 1;
// Transaction ID that must be common across all participants in
// this bid request (for example, potentially multiple exchanges).
// Not supported by Google.
optional string tid = 2;
// Payment ID chain string containing embedded syntax
// described in the TAG Payment ID Protocol v1.0.
// Not supported by Google.
optional string pchain = 3;
// This object is composed of a set of nodes where each node represents a
// specific entity that participates in the transacting of inventory.
// The entire chain of nodes from beginning to end represents all entities
// who are involved in the direct flow of payment for inventory. Detailed
// implementation examples can be found here:
// https://github.com/InteractiveAdvertisingBureau/openrtb/blob/master/supplychainobject.md
message SupplyChain {
// Indicates whether the chain contains all nodes involved in the
// transaction leading back to the owner of the site, app or other medium
// of the inventory.
// REQUIRED by the OpenRTB specification.
// Supported by Google.
optional bool complete = 1;
// The identity of an entity participating in the supply chain.
message SupplyChainNode {
// The canonical domain name of the SSP, Exchange, Header Wrapper, etc
// system that bidders connect to. This may be the operational domain of
// the system, if that is different than 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.
// REQUIRED by the OpenRTB specification.
// Supported by Google.
optional string asi = 1;
// The identifier associated with the seller or reseller account
// within the advertising system. This must contain the same value
// used in transactions (OpenRTB bid requests) in the field
// specified by the SSP/exchange. Typically, in OpenRTB, this is
// publisher.id. For OpenDirect it is typically the publisher's
// organization ID. Should be limited to 64 characters in length.
// REQUIRED by the OpenRTB specification.
// Supported by Google.
optional string sid = 2;
// The OpenRTB RequestId of the request as issued by this seller.
// Not supported by Google.
optional string rid = 3;
// The name of the company (the legal entity) that has paid for
// inventory transacted under the given seller_ID. This value is
// optional and should NOT be included if it exists in the
// advertising system’s sellers.json file.
// Supported for SupplyChain nodes upstream of Google if available.
optional string name = 4;
// The business domain name of the entity represented by this
// node. This value is optional and should NOT be included if it
// exists in the advertising system’s sellers.json file.
// Supported for SupplyChain nodes upstream of Google if available.
optional string domain = 5;
// Indicates whether this node will be involved in the flow of payment
// for the inventory. When set to true, the advertising system in the
// asi field pays the seller in the sid field, who is responsible for
// paying the previous node in the chain. When set to false, this node
// is not involved in the flow of payment for the inventory.
// For version 1.0 of SupplyChain, this property should always be true.
// Implementers should ensure that they propagate this field onwards
// when constructing SupplyChain objects in bid requests sent to a
// downstream advertising system.
// Supported by Google.
optional bool hp = 6;
extensions 100 to 9999;
}
// Array of SupplyChainNode objects in the order of the chain.
// In a complete supply chain, the first node represents the initial
// advertising system and seller ID involved in the transaction, that is,
// the owner of the site, app, or other medium. In an incomplete
// supply chain, it represents the first known node. The last node
// represents the entity sending this bid request.
// REQUIRED by the OpenRTB specification.
// Supported by Google.
repeated SupplyChainNode nodes = 2;
// Version of the supply chain specification in use, in the format
// of "major.minor". For example, for version 1.0 of the spec,
// use the string "1.0".
// REQUIRED by the OpenRTB specification.
// Supported by Google.
optional string ver = 3;
extensions 100 to 9999;
}
// This object represents both the links in the supply chain as
// well as an indicator whether or not the supply chain is complete.
// Supported by Google.
optional SupplyChain schain = 4;
extensions 100 to 9999;
}
// A Source object (Section 3.2.2) that provides data about the
// inventory source and which entity makes the final decision.
// Supported by Google.
optional Source source = 19;
extensions 100 to 9999;
}
// OpenRTB 2.0: This object is the top-level bid response object (for example,
// the unnamed outer JSON object). The id attribute is a reflection of the bid
// request ID for logging purposes. Similarly, bidid is an optional response
// tracking ID for bidders. If specified, it can be included in the subsequent
// win notice call if the bidder wins. At least one seatbid object is required,
// which contains at least one bid for an impression. Other attributes are
// optional. To express a "no-bid", the options are to return an empty response
// with HTTP 204. Alternately if the bidder wants to convey to the exchange a
// reason for not bidding, just a BidResponse object is returned with a
// reason code in the nbr attribute.
message BidResponse {
// ID of the bid request to which this is a response.
// REQUIRED by the OpenRTB specification.
// Supported by Google.
required string id = 1;
// OpenRTB 2.0: A bid response can contain multiple SeatBid objects, each on
// behalf of a different bidder seat and each containing one or more
// individual bids. If multiple impressions are presented in the request, the
// group attribute can be used to specify if a seat is willing to accept any
// impressions that it can win (default) or if it is only interested in
// winning any if it can win them all as a group.
message SeatBid {
// OpenRTB 2.0: A SeatBid object contains one or more Bid objects,
// each of which relates to a specific impression in the bid request
// through the impid attribute and constitutes an offer to buy that
// impression for a given price.
message Bid {
oneof adm_oneof {
// Optional means of conveying ad markup in case the bid wins;
// supersedes the win notice if markup is included in both.
// For native ad bids, exactly one of {adm, adm_native} should be used.
// Supported by Google. Standard field, should be used for OpenRTB/JSON.
string adm = 6;
// Native ad response.
// For native ad bids, exactly one of {adm, adm_native} should be used.
// Supported by Google. Extension, should be used for OpenRTB/Protobuf.
NativeResponse adm_native = 50;
}
// Bidder generated bid ID to assist with logging/tracking.
// REQUIRED by the OpenRTB specification.
// Supported by Google.
required string id = 1;
// ID of the Imp object in the related bid request.
// REQUIRED by the OpenRTB specification.
// Supported by Google.
required string impid = 2;
// Bid price expressed as CPM although the actual transaction is for a
// unit impression only. Note that while the type indicates float, integer
// math is highly recommended when handling currencies
// (for example, BigDecimal in Java).
// REQUIRED by the OpenRTB specification.
// Supported by Google.
required double price = 3;
// Win notice URL called by the exchange if the bid wins; optional means
// of serving ad markup.
// Ignored by Google.
optional string nurl = 5;
// Billing notice URL called by the exchange when a winning bid
// becomes billable based on exchange-specific business policy
// (for example, delivered or viewed).
// Substitution macros (Section 4.4) may be included.
// Supported by Google.
optional string burl = 22;
// Loss notice URL called by the exchange when a bid is known to
// have been lost. Substitution macros (Section 4.4) may be
// included. Exchange-specific policy may preclude support for
// loss notices or the disclosure of winning clearing prices
// resulting in ${AUCTION_PRICE} macros being removed (meaning,
// replaced with a zero-length string).
// Ignored by Google.
optional string lurl = 23;
// ID of a preloaded ad to serve if the bid wins.
// Ignored by Google.
optional string adid = 4;
// Advertiser domain for block list checking (for example, "ford.com").
// This can be an array of for the case of rotating creatives. Exchanges
// can mandate that only one domain is allowed.
// Supported by Google.
repeated string adomain = 7;
// The store ID of the app in an app store such as Apple App Store, Google
// Play. See OTT/CTV Store Assigned App Identification Guidelines for
// more details about expected strings for CTV app stores. For mobile apps
// in Google Play Store, these should be bundle or package names, such as
// com.foo.mygame. For apps in Apple App Store, these should be a numeric
// ID.
//
// Google: In addition to this field, set bid.ext.app_promotion_type field
// to take advantage of features specific to app promotion types.
// Supported by Google.
optional string bundle = 14;
// URL without cache-busting to an image that is representative of the
// content of the campaign for ad quality/safety checking.
// Ignored by Google.
optional string iurl = 8;
// Campaign ID to assist with ad quality checking; the collection of
// creatives for which iurl should be representative.
// Ignored by Google.
optional string cid = 9;
// Creative ID to assist with ad quality checking.
// Supported by Google.
optional string crid = 10;
// Tactic ID to enable buyers to label bids for reporting to the
// exchange the tactic through which their bid was submitted.
// The specific usage and meaning of the tactic ID should be
// communicated between buyer and exchanges a priori.
// Ignored by Google.
optional string tactic = 24;
// The taxonomy in use for cat.
// Ignored by Google.
optional CategoryTaxonomy cattax = 30 [default = IAB_CONTENT_1_0];
// IAB content categories of the creative.
// The taxonomy to be used is defined by the cattax field.
// Supported by Google.
repeated string cat = 15;
// Set of attributes describing the creative.
// Supported by Google.
repeated CreativeAttribute attr = 11 [packed = true];
// List of supported APIs for the markup. If an API is not explicitly
// listed, it is assumed to be unsupported.
// Ignored by Google.
repeated APIFramework apis = 31 [packed = true];
// DEPRECATED in OpenRTB 2.6+; prefer the field apis.
// API required by the markup if applicable.
// Supported by Google.
optional APIFramework api = 18 [deprecated = true];
// Video response protocol of the markup if applicable.
// Ignored by Google.
optional Protocol protocol = 19;
// Creative media rating per QAG guidelines.
// Ignored by Google.
optional QAGMediaRating qagmediarating = 20;
// Language of the creative using ISO-639-1-alpha-2. The nonstandard
// code "xx" may also be used if the creative has no
// linguistic content (for example, a banner with just a company logo).
// Only one of language or langb should be present.
// Ignored by Google.
optional string language = 25;
// Language of the creative using IETF BCP 47.
// Only one of language or langb should be present.
// Ignored by Google.
optional string langb = 29;
// Reference to the deal.id from the bid request if this bid pertains to a
// private marketplace direct deal.
// Supported by Google.
optional string dealid = 13;
// Width of the creative in device independent pixels (DIPS).
// Supported by Google.
optional int32 w = 16;
// Height of the creative in device independent pixels (DIPS).
// Supported by Google.
optional int32 h = 17;
// Relative width of the creative when expressing size as a ratio.
// Required for Flex Ads.
// Ignored by Google.
optional int32 wratio = 26;
// Relative height of the creative when expressing size as a ratio.
// Required for Flex Ads.
// Ignored by Google.
optional int32 hratio = 27;
// Advisory as to the number of seconds the bidder is willing to
// wait between the auction and the actual impression.
// Ignored by Google.
optional int32 exp = 21;
// Duration of the video or audio creative in seconds.
// Ignored by Google.
optional int32 dur = 32;
// Indicates that the bid is only eligible
// for a specific position within the pod.
// This field is currently only supported for rewarded video pods
// requests.
optional SlotPositionInPod slotinpod = 28;
// Type of the creative markup so that it can properly be
// associated with the right sub-object of the BidRequest.Imp.
// Ignored by Google.
optional CreativeMarkupType mtype = 33;
extensions 100 to 9999;
}
// Array of 1+ Bid objects (Section 4.2.3) each related to an impression.
// Multiple bids can relate to the same impression.
// Supported by Google.
repeated Bid bid = 1;
// ID of the buyer seat (for example, advertiser, agency) on whose behalf
// this bid is made.
//
// This ID will be used to breakdown spend and invalid traffic metrics in
// IVT transparency reporting, given that it is no longer than 64 bytes.
// Supported by Google.
optional string seat = 2;
// false = impressions can be won individually;
// true = impressions must be won or lost as a group.
// Ignored by Google.
optional bool group = 3 [default = false];
extensions 100 to 9999;
}
// Array of seatbid objects; 1+ required if a bid is to be made.
// Supported by Google.
repeated SeatBid seatbid = 2;
// Bidder generated response ID to assist with logging/tracking.
// Supported by Google.
optional string bidid = 3;
// Bid currency using ISO-4217 alpha codes.
//
// Supported by Google. If this field is populated, the specified currency
// will be used to interpret the bid. Otherwise, the default bidding currency
// will be used, which is determined in the following priority:
// 1. The bidder-level currency, if configured in RTB account settings.
// 2. The buyer-level currency. The buyer will be determined by the billing
// ID specified in the BidResponse.seatbid.bid.ext.billing_id extension
// field if it is populated, otherwise it will be based on the sole billing
// ID sent in the bid request.
//
// The currency of a buyer account is set on account creation and can be
// checked by contacting a Technical Account Manager.
optional string cur = 4;
// Optional feature to allow a bidder to set data 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.
// Ignored by Google.
optional string customdata = 5;
// Reason for not bidding.
// Supported by Google.
optional NoBidReason nbr = 6;
extensions 100 to 9999;
}
// OpenRTB Native 1.0: The Native Object defines the native advertising
// opportunity available for bid through this bid request. It must be included
// directly in the impression object if the impression offered for auction
// is a native ad format.
message NativeRequest {
// Version of the Native Markup version in use.
optional string ver = 1;
// The context in which the ad appears.
optional ContextType context = 7;
// A more detailed context in which the ad appears.
optional ContextSubtype contextsubtype = 8;
// The design/format/layout of the ad unit being offered.
optional PlacementType plcmttype = 9;
// The number of identical placements in this Layout.
optional int32 plcmtcnt = 4 [default = 1];
// 0 for the first ad, 1 for the second ad, and so on. Note this would
// generally NOT be used in combination with plcmtcnt - either you are
// auctioning multiple identical placements (in which case
// plcmtcnt>1, seq=0) or you are holding separate auctions for distinct
// items in the feed (in which case plcmtcnt=1, seq>=1).
optional int32 seq = 5 [default = 0];
// OpenRTB Native 1.0: The main container object for each asset requested or
// supported by Exchange on behalf of the rendering client.
// Any object that is required is to be flagged as such. Only one of the
// {title,img,video,data} objects should be present in each object.
// All others should be null/absent. The id is to be unique within the
// Asset array so that the response can be aligned.
message Asset {
oneof asset_oneof {
// Title object for title assets.
Title title = 3;
// Image object for image assets.
Image img = 4;
// Video object for video assets.
// Note that in-stream video ads are not part of Native.
// Native ads may contain a video as the ad creative itself.
BidRequest.Imp.Video video = 5;
// Data object for brand name, description, ratings, prices or other
// similar elements.
Data data = 6;
}
// Unique asset ID, assigned by exchange. Typically a counter for the array.
// REQUIRED by the OpenRTB Native specification.
required int32 id = 1;
// Set to true if asset is required
// (exchange will not accept a bid without it).
optional bool required = 2 [default = false];
// OpenRTB Native 1.0: The Title object is to be used for title element
// of the Native ad.
message Title {
// Maximum length of the text in the title element.
// RECOMMENDED that the value be either of: 25, 90, 140.
// REQUIRED by the OpenRTB Native specification.
required int32 len = 1;
extensions 100 to 9999;
}
// OpenRTB Native 1.0: The Image object to be used for all image elements
// of the Native ad, such as Icons or Main Image.
// RECOMMENDED sizes and aspect ratios are included in ImageAssetType.
message Image {
// Type ID of the image element supported by the publisher.
// The publisher can display this information in an appropriate format.
optional ImageAssetType type = 1;
// Width of the image in pixels.
optional int32 w = 2;
// Height of the image in pixels.
optional int32 h = 3;
// The minimum requested width of the image in pixels. This option should
// be used for any rescaling of images by the client. Either w or wmin
// should be transmitted. If only w is included, it should be considered
// an exact requirement.
optional int32 wmin = 4;
// The minimum requested height of the image in pixels. This option should
// be used for any rescaling of images by the client. Either h or hmin
// should be transmitted. If only h is included, it should be considered
// an exact requirement.
optional int32 hmin = 5;
// Allowlist of content MIME types supported. Popular MIME types include,
// but are not limited to "image/jpg" and "image/gif". Each implementing
// Exchange should have their own list of supported types in the
// integration docs. See Wikipedia's MIME page for more information and
// links to all IETF RFCs. If blank, assume all types are allowed.
repeated string mimes = 6;
extensions 100 to 9999;
}
// OpenRTB Native 1.0: The Data Object is to be used for all non-core
// elements of the native unit, such as Ratings, Review Count, Stars,
// Download count, descriptions or other similar elements. It is also
// generic for future of Native elements not contemplated at the time of the
// writing of this specification.
message Data {
// Type ID of the element supported by the publisher. The publisher can
// display this information in an appropriate format.
// REQUIRED by the OpenRTB Native specification.
required DataAssetType type = 1;
// Maximum length of the text in the element's response. Longer strings
// may be truncated and ellipsized by Ad Exchange or the publisher during
// rendering.
optional int32 len = 2;
extensions 100 to 9999;
}
extensions 100 to 9999;
}
// Any bid must comply with the array of elements expressed by the Exchange.
// REQUIRED by the OpenRTB Native specification: at least 1 element.
repeated Asset assets = 6;
// Whether the supply source / impression supports returning an assetsurl
// instead of an asset object. false or the absence of the field indicates no
// such support.
optional bool aurlsupport = 11;
// Whether the supply source / impression supports returning a DCO URL
// instead of an asset object. false or the absence of the field indicates no
// such support. Beta feature.
optional bool durlsupport = 12;
// OpenRTB Native 1.2: The EventTrackers object specifies the type of events
// the bidder can request to be tracked in the bid response, and which types
// of tracking are available for each event type, and is included as an array
// in the request.
message EventTrackers {
// Type of event available for tracking.
// REQUIRED by the OpenRTB Native specification.
required EventType event = 1;
// Array of types of tracking available for the given event.
// REQUIRED by the OpenRTB Native specification.
repeated EventTrackingMethod methods = 2;
extensions 100 to 9999;
}
// Specifies what type of event tracking is supported.
repeated EventTrackers eventtrackers = 13;
// Set to true when the native ad supports buyer-specific privacy notice.
// Set to false (or field absent) when the native ad doesn't support custom
// privacy links or if support is unknown.
optional bool privacy = 14;
// DEPRECATED in OpenRTB Native 1.1, REMOVED in 1.2+.
// Use field plcmttype
.
optional LayoutId layout = 2 [deprecated = true];
// DEPRECATED in OpenRTB Native 1.1, REMOVED in 1.2+.
// Use fields context
and contextsubtype
.
optional AdUnitId adunit = 3 [deprecated = true];
extensions 100 to 9999;
}
// OpenRTB Native 1.0: The native response object is the top level JSON object
// which identifies an native response.
message NativeResponse {
// Version of the Native Markup version in use.
optional string ver = 1;
// OpenRTB Native 1.0: Used for "call to action" assets, or other links from
// the Native ad. This Object should be associated to its peer object in the
// parent Asset Object or as the primary link in the top level NativeResponse
// object. When that peer object is activated (clicked) the action should take
// the user to the location of the link.
message Link {
// Landing URL of the clickable link.
// REQUIRED by the OpenRTB Native specification.
required string url = 1;
// List of third-party tracker URLs to be fired on click of the URL.
repeated string clicktrackers = 2;
// Fallback URL for deeplink. To be used if the URL given in url is not
// supported by the device.
optional string fallback = 3;
extensions 100 to 9999;
}
// OpenRTB Native 1.0: Corresponds to the Asset Object in the request.
// The main container object for each asset requested or supported by Exchange
// on behalf of the rendering client. Any object that is required is to be
// flagged as such. Only one of the {title,img,video,data} objects should be
// present in each object. All others should be null/absent. The id is to be
// unique within the Asset array so that the response can be aligned.
message Asset {
oneof asset_oneof {
// Title object for title assets.
Title title = 3;
// Image object for image assets.
Image img = 4;
// Video object for video assets.
// Note that in-stream video ads are not part of Native.
// Native ads may contain a video as the ad creative itself.
Video video = 5;
// Data object for ratings, prices or other similar elements.
Data data = 6;
}
// Unique asset ID, assigned by exchange, must match one of the asset IDs
// in request.
// REQUIRED in 1.0, or in 1.2 if embedded asset is being used.
required int32 id = 1;
// Set to true if asset is required. (bidder requires it to be displayed).
optional bool required = 2 [default = false];
// OpenRTB Native 1.0: Corresponds to the Title Object in the request,
// with the value filled in.
// If using assetsurl or dcourl response rather than embedded asset
// response, it is recommended that three title objects be provided, the
// length of each is less than or equal to the three recommended maximum
// title lengths (25,90,140).
message Title {
// The text associated with the text element.
// REQUIRED by the OpenRTB Native specification.
required string text = 1;
// The length of the title being provided.
// REQUIRED if using assetsurl/dcourl representation.
optional int32 len = 2;
extensions 100 to 9999;
}
// OpenRTB Native 1.0: Corresponds to the Image Object in the request.
// The Image object to be used for all image elements of the Native ad,
// such as Icons or Main Image.
// It is recommended that if assetsurl/dcourl is being used rather than
// embbedded assets, that an image of each recommended aspect ratio
// (per ImageType enum) be provided for image type 3 (MAIN_IMAGE).
message Image {
// The type of image element being submitted from the ImageType enum.
// REQUIRED for assetsurl or dcourl responses,
// not required to embedded asset responses.
optional ImageAssetType type = 4;
// URL of the image asset.
// REQUIRED by the OpenRTB Native specification.
required string url = 1;
// Width of the image in pixels.
// RECOMMENDED in 1.0, 1.1, or in 1.2 for embedded asset responses.
// REQUIRED in 1.2 for assetsurl or dcourl if multiple assets
// of the same type submitted.
optional int32 w = 2;
// Height of the image in pixels.
// RECOMMENDED in 1.0, 1.1, or in 1.2 for embedded asset responses.
// REQUIRED in 1.2 for assetsurl or dcourl if multiple assets
// of the same type submitted.
optional int32 h = 3;
extensions 100 to 9999;
}
// OpenRTB Native 1.0: Corresponds to the Video Object in the request,
// yet containing a value of a conforming VAST tag as a value.
message Video {
// VAST xml.
// REQUIRED by the OpenRTB Native specification.
required string vasttag = 1;
extensions 100 to 9999;
}
// OpenRTB Native 1.0: Corresponds to the Data Object in the request, with
// the value filled in. The Data Object is to be used for all miscellaneous
// elements of the native unit such as Brand Name, Ratings, Review Count,
// Stars, Downloads, and other elements. It is also generic for future of
// native elements not contemplated at the time of the writing of this
// document.
message Data {
// The type of data element being submitted from the DataAssetTypes enum.
// REQUIRED in 1.2 for assetsurl or dcourl responses.
optional DataAssetType type = 3;
// The length of the data element being submitted. Where applicable, must
// comply with the recommended maximum lengths in the DataAssetType enum.
// REQUIRED in 1.2 for assetsurl or dcourl responses.
optional int32 len = 4;
// DEPRECATED in OpenRTB Native 1.2+. No replacement.
// The optional formatted string name of the data type to be displayed.
optional string label = 1 [deprecated = true];
// The formatted string of data to be displayed. Can contain a formatted
// value such as "5 stars" or "$10" or "3.4 stars out of 5".
// REQUIRED by the OpenRTB Native specification.
required string value = 2;
extensions 100 to 9999;
}
// Link object for call to actions.
// This link object applies if the asset item is activated (clicked).
// If there is no link object on the asset, the parent link object on the
// bid response apply.
optional Link link = 7;
extensions 100 to 9999;
}
// List of native ad's assets.
// RECOMMENDED in 1.0, 1.1, or in 1.2 as a fallback if assetsurl is provided.
// REQUIRED in 1.2, if not assetsurl is provided.
repeated Asset assets = 2;
// URL of alternate source for the assets object. The expected response is a
// JSON object mirroring the asset object in the bid response, subject to
// certain requirements as specified in the individual objects.
// Where present, overrides the assets object in the response.
optional string assetsurl = 6;
// URL where a dynamic creative specification may be found for populating this
// ad, per the Dynamic Content Ads Specification.
// Note this is a beta option as the interpretation of the Dynamic Content Ads
// Specification and how to assign those elementes into a native ad is outside
// the scope of this spec and must be agreed offline between parties or as may
// be specified in a future revision of the Dynamic Content Ads spec.
// Where present, overrides the assets object in the response.
optional string dcourl = 7;
// Destination Link. This is default link object for the ad.
// Individual assets can also have a link object which applies if the asset is
// activated (clicked). If the asset doesn't have a link object, the parent
// link object applies.
// See ResponseLink definition.
// REQUIRED by the OpenRTB Native specification.
required Link link = 3;
// DEPRECATED in OpenRTB Native 1.2+. Prefer object EventTracker
.
// Array of impression tracking URLs, expected to return a 1x1 image or
// 204 response - typically only passed when using 3rd party trackers.
repeated string imptrackers = 4 [deprecated = true];
// DEPRECATED in OpenRTB Native 1.2+. Prefer object EventTracker
.
// Optional javascript impression tracker. Contains