mirror of
https://github.com/prebid/openrtb.git
synced 2026-06-15 22:46:34 +03:00
1973 lines
51 KiB
Go
1973 lines
51 KiB
Go
// rtb package provides common OpenRTB's Object types and constants,
|
||
// according to OpenRTB API Specification Version 2.3:
|
||
// http://openrtb.github.io/OpenRTB/
|
||
package rtb
|
||
|
||
// Gender, where “M” = male, “F” = female, “O” = known to be
|
||
// other (i.e., omitted is unknown).
|
||
const (
|
||
UserGenderMale string = "M" // “M” = male
|
||
UserGenderFemale string = "F" // “F” = female
|
||
UserGenderOther string = "O" // “O” = known to be other
|
||
UserGenderUnknown string = "" // omitted is unknown
|
||
)
|
||
|
||
// 5.16 Location Type
|
||
// The following table lists the options to indicate how the geographic information was determined.
|
||
const (
|
||
GeoTypeGPS uint8 = 1 // 1 GPS/Location Services
|
||
GeoTypeIP uint8 = 2 // 2 IP Address
|
||
GeoTypeUserProvided uint8 = 3 // 3 User provided (e.g., registration data)
|
||
)
|
||
|
||
// Mobile-optimized signal, where 0 = no, 1 = yes.
|
||
const (
|
||
SiteMobileNo uint8 = 0 // 0 = no
|
||
SiteMobileYes uint8 = 1 // 1 = yes
|
||
)
|
||
|
||
// Indicates if the site has a privacy policy, where 0 = no, 1 = yes.
|
||
const (
|
||
SitePrivacyPolicyNo uint8 = 0 // 0 = no
|
||
SitePrivacyPolicyYes uint8 = 1 // 1 = yes
|
||
)
|
||
|
||
// Indicates if the app has a privacy policy, where 0 = no, 1 = yes.
|
||
const (
|
||
AppPrivacyPolicyNo uint8 = 0 // 0 = no
|
||
AppPrivacyPolicyYes uint8 = 1 // 1 = yes
|
||
)
|
||
|
||
// 0 = not live, 1 = content is live (e.g., stream, live blog).
|
||
const (
|
||
ContentLiveStreamNo uint8 = 0 // 0 = not live
|
||
ContentLiveStreamYes uint8 = 1 // 1 = content is live (e.g., stream, live blog)
|
||
)
|
||
|
||
// 0 = indirect, 1 = direct.
|
||
const (
|
||
ContentSourceRelationshipIndirect uint8 = 0 // 0 = indirect
|
||
ContentSourceRelationshipDirect uint8 = 1 // 1 = direct
|
||
)
|
||
|
||
// Indicator of whether or not the content is embeddable (e.g.,
|
||
// an embeddable video player), where 0 = no, 1 = yes.
|
||
const (
|
||
ContentEmbeddableNo uint8 = 0 // 0 = no
|
||
ContentEmbeddableYes uint8 = 1 // 1 = yes
|
||
)
|
||
|
||
// Standard “Do Not Track” flag as set in the header by the
|
||
// browser, where 0 = tracking is unrestricted, 1 = do not track.
|
||
const (
|
||
DeviceDNTUnrestricted uint8 = 0 // 0 = tracking is unrestricted
|
||
DeviceDNT uint8 = 1 // 1 = do not track
|
||
)
|
||
|
||
// “Limit Ad Tracking” signal commercially endorsed (e.g., iOS,
|
||
// Android), where 0 = tracking is unrestricted, 1 = tracking must
|
||
// be limited per commercial guidelines.
|
||
const (
|
||
DeviceLmtUnrestricted uint8 = 0 // 0 = tracking is unrestricted
|
||
DeviceLmtLimited uint8 = 1 // 1 = tracking must be limited per commercial guidelines.
|
||
)
|
||
|
||
// Support for JavaScript, where 0 = no, 1 = yes.
|
||
const (
|
||
DeviceJSNo uint8 = 0 // 0 = no
|
||
DeviceJSYes uint8 = 1 // 1 = yes
|
||
)
|
||
|
||
// Flag indicating if this request is subject to the COPPA
|
||
// regulations established by the USA FTC, where 0 = no, 1 = yes.
|
||
const (
|
||
RegsCOPPANo int8 = 0 // 0 = no
|
||
RegsCOPPAYes int8 = 1 // 1 = yes
|
||
)
|
||
|
||
// Indicator of auction eligibility to seats named in the Direct Deals object, where 0 = all bids are accepted,
|
||
// 1 = bids are restricted to the deals specified and the terms thereof.
|
||
const (
|
||
PMPPrivateAuctionUnrestricted uint8 = 0 // 0 = all bids are accepted
|
||
PMPPrivateAuctionRestricted uint8 = 1 // 1 = bids are restricted to the deals specified and the terms thereof
|
||
)
|
||
|
||
// Optional override of the overall auction type of the bid request, where 1 = First Price,
|
||
// 2 = Second Price Plus, 3 = the value passed in bidfloor is the agreed upon deal price. Additional
|
||
// auction types can be defined by the exchange.
|
||
const (
|
||
DealATFirstPrice uint8 = 1 // 1 = First Price
|
||
DealATSecondPricePlus uint8 = 2 // 2 = Second Price Plus
|
||
DealATAgreed uint8 = 3 // 3 = the value passed in bidfloor is the agreed upon deal price
|
||
)
|
||
|
||
// Placeholder for exchange-specific extensions to OpenRTB.
|
||
type Ext interface{}
|
||
|
||
// 3.2.1 Object: BidRequest
|
||
// 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.
|
||
type BidRequest struct {
|
||
|
||
// Attribute:
|
||
// id
|
||
// Type:
|
||
// string; required
|
||
// Description:
|
||
// Unique ID of the bid request, provided by the exchange.
|
||
ID string `json:"id"`
|
||
|
||
// Attribute:
|
||
// imp
|
||
// Type:
|
||
// object array; required
|
||
// Description:
|
||
// Array of Imp objects (Section 3.2.2) representing the
|
||
// impressions offered. At least 1 Imp object is required.
|
||
Imp []Imp `json:"imp"`
|
||
|
||
// Attribute:
|
||
// site
|
||
// Type:
|
||
// object; recommended
|
||
// Description:
|
||
// Details via a Site object (Section 3.2.6) about the publisher's
|
||
// website. Only applicable and recommended for websites.
|
||
Site Site `json:"site"`
|
||
|
||
// Attribute:
|
||
// app
|
||
// Type:
|
||
// object; recommended
|
||
// Description:
|
||
// Details via an App object (Section 3.2.7) about the publisher's
|
||
// app (i.e. non-browser applications). Only applicable and recommended for apps.
|
||
App App `json:"app"`
|
||
|
||
// Attribute:
|
||
// device
|
||
// Type:
|
||
// object; recommended
|
||
// Description:
|
||
// Details via a Device object (Section 3.2.11) about the user’s device to which the impression will be delivered.
|
||
Device Device `json:"device"`
|
||
|
||
// Attribute:
|
||
// user
|
||
// Type:
|
||
// object; recommended
|
||
// Description:
|
||
// Details via a User object (Section 3.2.13) about the human user of the device; the advertising audience.
|
||
User User `json:"user"`
|
||
|
||
// Attribute:
|
||
// test
|
||
// Type:
|
||
// integer; default 0
|
||
// Description:
|
||
// Indicator of test mode in which auctions are not billable, where 0 = live mode, 1 = test mode.
|
||
Test int8 `json:"test"`
|
||
|
||
// Attribute:
|
||
// at
|
||
// Type:
|
||
// integer; default 2
|
||
// Description:
|
||
// Auction type, where 1 = First Price, 2 = Second Price Plus.
|
||
// Exchange-specific auction types can be defined using values
|
||
// greater than 500.
|
||
AT int8 `json:"at"`
|
||
|
||
// Attribute:
|
||
// tmax
|
||
// Type:
|
||
// integer
|
||
// Description:
|
||
// Maximum time in milliseconds to submit a bid to avoid timeout. This value is commonly communicated offline.
|
||
TMax int64 `json:"tmax"`
|
||
|
||
// Attribute:
|
||
// wseat
|
||
// Type:
|
||
// string array
|
||
// Description:
|
||
// Whitelist of buyer seats allowed to bid on this deal. Seat IDs must be
|
||
// communicated between bidders and the exchange a priori. Omission implies no seat restrictions.
|
||
WSeat []string `json:"wseat"`
|
||
|
||
// Attribute:
|
||
// allimps
|
||
// Type:
|
||
// integer; default 0
|
||
// Description:
|
||
// Flag to indicate if Exchange can verify that the impressions
|
||
// offered represent all of the impressions available in context
|
||
// (e.g., all on the web page, all video spots such as pre/mid/post
|
||
// roll) to support road-blocking. 0 = no or unknown, 1 = yes, the
|
||
// impressions offered represent all that are available.
|
||
AllImps int8 `json:"allimps"`
|
||
|
||
// Attribute:
|
||
// cur
|
||
// Type:
|
||
// string array
|
||
// Description:
|
||
// Array of allowed currencies for bids on this bid request using ISO-4217 alpha codes. Recommended only if
|
||
// the exchange accepts multiple currencies.
|
||
Cur []string `json:"cur"`
|
||
|
||
// Attribute:
|
||
// bcat
|
||
// Type:
|
||
// string array
|
||
// Description:
|
||
// Blocked advertiser categories using the IAB content categories. Refer to List 5.1.
|
||
BCat []string `json:"bcat"`
|
||
|
||
// Attribute:
|
||
// badv
|
||
// Type:
|
||
// string array
|
||
// Description:
|
||
// Blocked advertiser categories using the IAB content categories. Refer to List 5.1.
|
||
BAdv []string `json:"badv"`
|
||
|
||
// Attribute:
|
||
// regs
|
||
// Type:
|
||
// object
|
||
// Description:
|
||
// Blocked advertiser categories using the IAB content categories. Refer to List 5.1. or governmental
|
||
// regulations in force for this request.
|
||
Regs Regs `json:"regs"`
|
||
|
||
// Attribute:
|
||
// ext
|
||
// Type:
|
||
// object
|
||
// Description:
|
||
// Placeholder for exchange-specific extensions to OpenRTB.
|
||
Ext Ext `json:"ext"`
|
||
}
|
||
|
||
// 3.2.2 Object: Imp
|
||
// 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. However, any given bid for the
|
||
// impression must conform to one of the offered types.
|
||
type Imp struct {
|
||
|
||
// Attribute:
|
||
// id
|
||
// Type:
|
||
// string; required
|
||
// Description:
|
||
// A unique identifier for this impression within the context of the bid request (typically, starts
|
||
// with 1 and increments.
|
||
ID string `json:"id"`
|
||
|
||
// Attribute:
|
||
// banner
|
||
// Type:
|
||
// object
|
||
// Description:
|
||
// A Banner object (Section 3.2.3); required if this impression is
|
||
// offered as a banner ad opportunity.
|
||
Banner Banner `json:"banner"`
|
||
|
||
// Attribute:
|
||
// video
|
||
// Type:
|
||
// object
|
||
// Description:
|
||
// A Video object (Section 3.2.4); required if this impression is
|
||
// offered as a video ad opportunity.
|
||
Video Video `json:"video"`
|
||
|
||
// Attribute:
|
||
// native
|
||
// Type:
|
||
// object
|
||
// Description:
|
||
// A Native object (Section 3.2.5); required if this impression is
|
||
// offered as a native ad opportunity
|
||
Native Native `json:"native"`
|
||
|
||
// Attribute:
|
||
// displaymanager
|
||
// Type:
|
||
// string
|
||
// Description:
|
||
// 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.
|
||
DisplayManager string `json:"displaymanager"`
|
||
|
||
// Attribute:
|
||
// instl
|
||
// Type:
|
||
// int; default 0
|
||
// Description:
|
||
// 1 = the ad is interstitial or full screen, 0 = not interstitial.
|
||
Instl int8 `json:"instl"`
|
||
|
||
// Attribute:
|
||
// tagid
|
||
// Type:
|
||
// string
|
||
// Description:
|
||
// 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.
|
||
TagID string `json:"tagid"`
|
||
|
||
// Attribute:
|
||
// bidfloor
|
||
// Type:
|
||
// float; default 0
|
||
// Description:
|
||
// Minimum bid for this impression expressed in CPM.
|
||
BidFloor float64 `json:"bidfloor"`
|
||
|
||
// Attribute:
|
||
// bidfloorcur
|
||
// Type:
|
||
// string; default “USD”
|
||
// Description:
|
||
// Currency specified using ISO-4217 alpha codes. This may be
|
||
// different from bid currency returned by bidder if this is
|
||
// allowed by the exchange.
|
||
BidFloorCur float64 `json:"bidfloorcur"`
|
||
|
||
// Attribute:
|
||
// secure
|
||
// Type:
|
||
// integer
|
||
// Description:
|
||
// Flag to indicate if the impression requires secure HTTPS URL
|
||
// creative assets and markup, where 0 = non-secure, 1 = secure.
|
||
// If omitted, the secure state is unknown, but non-secure HTTP
|
||
// support can be assumed.
|
||
Secure int8 `json:"secure"`
|
||
|
||
// Attribute:
|
||
// iframebuster
|
||
// Type:
|
||
// string array
|
||
// Description:
|
||
// Array of exchange-specific names of supported iframe busters.
|
||
IframeBuster []string `json:"iframebuster"`
|
||
|
||
// Attribute:
|
||
// pmp
|
||
// Type:
|
||
// object
|
||
// Description:
|
||
// A Pmp object (Section 3.2.17) containing any private marketplace deals in effect for this impression.
|
||
PMP PMP `json:"pmp"`
|
||
|
||
// Attribute:
|
||
// ext
|
||
// Type:
|
||
// object
|
||
// Description:
|
||
// Placeholder for exchange-specific extensions to OpenRTB.
|
||
Ext Ext `json:"ext"`
|
||
}
|
||
|
||
// 3.2.3 Object: Banner
|
||
// 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.
|
||
type Banner struct {
|
||
|
||
// Attribute:
|
||
// w
|
||
// Type:
|
||
// integer; recommended
|
||
// Description:
|
||
// Width of the impression in pixels.
|
||
// If neither wmin nor wmax are specified, this value is an exact
|
||
// width requirement. Otherwise it is a preferred width.
|
||
W int64 `json:"w"`
|
||
|
||
// Attribute:
|
||
// h
|
||
// Type:
|
||
// integer; recommended
|
||
// Description:
|
||
// Height of the impression in pixels.
|
||
// If neither hmin nor hmax are specified, this value is an exact
|
||
// height requirement. Otherwise it is a preferred height.
|
||
H int64 `json:"h"`
|
||
|
||
// Attribute:
|
||
// wmax
|
||
// Type:
|
||
// integer
|
||
// Description:
|
||
// Maximum width of the impression in pixels.
|
||
// If included along with a w value then w should be interpreted
|
||
// as a recommended or preferred width.
|
||
WMax int64 `json:"wmax"`
|
||
|
||
// Attribute:
|
||
// hmax
|
||
// Type:
|
||
// integer
|
||
// Description:
|
||
// Maximum height of the impression in pixels.
|
||
// If included along with an h value then h should be interpreted
|
||
// as a recommended or preferred height.
|
||
HMax int64 `json:"hmax"`
|
||
|
||
// Attribute:
|
||
// wmin
|
||
// Type:
|
||
// integer
|
||
// Description:
|
||
// Minimum width of the impression in pixels.
|
||
// If included along with a w value then w should be interpreted
|
||
// as a recommended or preferred width.
|
||
WMin int64 `json:"wmin"`
|
||
|
||
// Attribute:
|
||
// hmin
|
||
// Type:
|
||
// integer
|
||
// Description:
|
||
// Minimum height of the impression in pixels.
|
||
// If included along with an h value then h should be interpreted
|
||
// as a recommended or preferred height.
|
||
HMin int64 `json:"hmin"`
|
||
|
||
// Attribute:
|
||
// id
|
||
// Type:
|
||
// string
|
||
// Description:
|
||
// 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.
|
||
ID string `json:"id"`
|
||
|
||
// Attribute:
|
||
// btype
|
||
// Type:
|
||
// integer array
|
||
// Description:
|
||
// Blocked banner ad types. Refer to List 5.2.
|
||
BType []int64 `json:"btype"`
|
||
|
||
// Attribute:
|
||
// battr
|
||
// Type:
|
||
// integer array
|
||
// Description:
|
||
// Blocked creative attributes. Refer to List 5.3.
|
||
BAttr []int64 `json:"battr"`
|
||
|
||
// Attribute:
|
||
// pos
|
||
// Type:
|
||
// integer
|
||
// Description:
|
||
// Ad position on screen. Refer to List 5.4
|
||
Pos int64 `json:"pos"`
|
||
|
||
// Attribute:
|
||
// mimes
|
||
// Type:
|
||
// string array
|
||
// Description:
|
||
// Content MIME types supported. Popular MIME types may
|
||
// include “application/x-shockwave-flash”, “image/jpg”, and “image/gif”.
|
||
MIMEs []string `json:"mimes"`
|
||
|
||
// Attribute:
|
||
// topframe
|
||
// Type:
|
||
// integer
|
||
// Description:
|
||
// Indicates if the banner is in the top frame as opposed to an
|
||
// iframe, where 0 = no, 1 = yes.
|
||
TopFrame int8 `json:"topframe"`
|
||
|
||
// Attribute:
|
||
// expdir
|
||
// Type:
|
||
// integer array
|
||
// Description:
|
||
// Directions in which the banner may expand. Refer to List 5.5.
|
||
ExpDir []int64 `json:"expdir"`
|
||
|
||
// Attribute:
|
||
// api
|
||
// Type:
|
||
// integer array
|
||
// Description:
|
||
// List of supported API frameworks for this impression. Refer to
|
||
// List 5.6. If an API is not explicitly listed, it is assumed not to be supported.
|
||
API []int64 `json:"api"`
|
||
|
||
// Attribute:
|
||
// ext
|
||
// Type:
|
||
// object
|
||
// Description:
|
||
// Placeholder for exchange-specific extensions to OpenRTB.
|
||
Ext Ext `json:"ext"`
|
||
}
|
||
|
||
// 3.2.4 Object: Video
|
||
// 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.
|
||
type Video struct {
|
||
|
||
// Attribute:
|
||
// mimes
|
||
// Type:
|
||
// string array
|
||
// Description:
|
||
// Content MIME types supported. Popular MIME types may include “video/x-ms-wmv” for Windows Media and
|
||
// “video/x-flv” for Flash Video.
|
||
MIMEs []string `json:"mimes"`
|
||
|
||
// Attribute:
|
||
// minduration
|
||
// Type:
|
||
// integer; recommended
|
||
// Description:
|
||
// Minimum video ad duration in seconds.
|
||
MinDuration int64 `json:"minduration"`
|
||
|
||
// Attribute:
|
||
// maxduration
|
||
// Type:
|
||
// integer; recommended
|
||
// Description:
|
||
// Maximum video ad duration in seconds.
|
||
MaxDuration int64 `json:"maxduration"`
|
||
|
||
// Attribute:
|
||
// protocol
|
||
// Type:
|
||
// integer array; DEPRECATED
|
||
// Description:
|
||
// NOTE: Use of protocols instead is highly recommended.
|
||
// Supported video bid response protocol. Refer to List 5.8. At
|
||
// least one supported protocol must be specified in either the
|
||
// protocol or protocols attribute.
|
||
Protocol []int64 `json:"protocol"`
|
||
|
||
// Attribute:
|
||
// protocols
|
||
// Type:
|
||
// integer array; recommended
|
||
// Description:
|
||
// Array of supported video bid response protocols. Refer to List
|
||
// 5.8. At least one supported protocol must be specified in
|
||
// either the protocol or protocols attribute.
|
||
Protocols []int64 `json:"protocols"`
|
||
|
||
// Attribute:
|
||
// w
|
||
// Type:
|
||
// integer; recommended
|
||
// Description:
|
||
// Width of the video player in pixels.
|
||
W int64 `json:"w"`
|
||
|
||
// Attribute:
|
||
// h
|
||
// Type:
|
||
// integer; recommended
|
||
// Description:
|
||
// Height of the video player in pixels.
|
||
H int64 `json:"h"`
|
||
|
||
// Attribute:
|
||
// startdelay
|
||
// Type:
|
||
// integer; recommended
|
||
// Description:
|
||
// Indicates the start delay in seconds for pre-roll, mid-roll, or
|
||
// post-roll ad placements. Refer to List 5.10 for additional
|
||
// generic values.
|
||
StartDely int64 `json:"startdelay"`
|
||
|
||
// Attribute:
|
||
// linearity
|
||
// Type:
|
||
// integer
|
||
// Description:
|
||
// Indicates if the impression must be linear, nonlinear, etc. If
|
||
// none specified, assume all are allowed. Refer to List 5.7.
|
||
Linearity int8 `json:"linearity"`
|
||
|
||
// Attribute:
|
||
// sequence
|
||
// Type:
|
||
// integer
|
||
// Description:
|
||
// If multiple ad impressions are offered in the same bid request,
|
||
// the sequence number will allow for the coordinated delivery
|
||
// of multiple creatives.
|
||
Sequence int64 `json:"sequence"`
|
||
|
||
// Attribute:
|
||
// sequence
|
||
// Type:
|
||
// integer array
|
||
// Description:
|
||
// Blocked creative attributes. Refer to List 5.3.
|
||
BAttr []int64 `json:"battr"`
|
||
|
||
// Attribute:
|
||
// maxextended
|
||
// Type:
|
||
// integer
|
||
// Description:
|
||
// 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.
|
||
MaxExtended int64 `json:"maxextended"`
|
||
|
||
// Attribute:
|
||
// minbitrate
|
||
// Type:
|
||
// integer
|
||
// Description:
|
||
// Minimum bit rate in Kbps. Exchange may set this dynamically
|
||
// or universally across their set of publishers.
|
||
MinBitRate int64 `json:"minbitrate"`
|
||
|
||
// Attribute:
|
||
// maxbitrate
|
||
// Type:
|
||
// integer
|
||
// Description:
|
||
// Maximum bit rate in Kbps. Exchange may set this dynamically
|
||
// or universally across their set of publishers.
|
||
MaxBitRate int64 `json:"maxbitrate"`
|
||
|
||
// Attribute:
|
||
// boxingallowed
|
||
// Type:
|
||
// integer; default 1
|
||
// Description:
|
||
// Indicates if letter-boxing of 4:3 content into a 16:9 window is
|
||
// allowed, where 0 = no, 1 = yes.
|
||
BoxingAllowed int8 `json:"boxingallowed"`
|
||
|
||
// Attribute:
|
||
// playbackmethod
|
||
// Type:
|
||
// integer array
|
||
// Description:
|
||
// Allowed playback methods. If none specified, assume all are
|
||
// allowed. Refer to List 5.9.
|
||
PlaybackMethod []int64 `json:"playbackmethod"`
|
||
|
||
// Attribute:
|
||
// delivery
|
||
// Type:
|
||
// integer array
|
||
// Description:
|
||
// Supported delivery methods (e.g., streaming, progressive). If
|
||
// none specified, assume all are supported. Refer to List 5.13.
|
||
Delivery []int64 `json:"delivery"`
|
||
|
||
// Attribute:
|
||
// pos
|
||
// Type:
|
||
// integer
|
||
// Description:
|
||
// Ad position on screen. Refer to List 5.4
|
||
Pos int64 `json:"pos"`
|
||
|
||
CompanionAd []Banner `json:"companionad"`
|
||
|
||
// Attribute:
|
||
// api
|
||
// Type:
|
||
// integer array
|
||
// Description:
|
||
// List of supported API frameworks for this impression. Refer to
|
||
// List 5.6. If an API is not explicitly listed, it is assumed not to be supported.
|
||
API []int64 `json:"api"`
|
||
|
||
// Attribute:
|
||
// companiontype
|
||
// Type:
|
||
// integer array
|
||
// Description:
|
||
// Supported VAST companion ad types. Refer to List 5.12.
|
||
// Recommended if companion Banner objects are included via
|
||
// the companionad array.
|
||
CompanionType []int64 `json:"companiontype"`
|
||
|
||
// Attribute:
|
||
// ext
|
||
// Type:
|
||
// object
|
||
// Description:
|
||
// Placeholder for exchange-specific extensions to OpenRTB.
|
||
Ext Ext `json:"ext"`
|
||
}
|
||
|
||
// 3.2.5 Object: Native
|
||
// This object represents a native type impression. Native ad units are intended to blend seamlessly into
|
||
// the surrounding content (e.g., 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.
|
||
type Native struct {
|
||
|
||
// Attribute:
|
||
// request
|
||
// Type:
|
||
// string; required
|
||
// Description:
|
||
// Request payload complying with the Native Ad Specification.
|
||
request string `json:"request"`
|
||
|
||
// Attribute:
|
||
// ver
|
||
// Type:
|
||
// string; recommended
|
||
// Description:
|
||
// Version of the Native Ad Specification to which request
|
||
// complies; highly recommended for efficient parsing
|
||
Ver string `json:"ver"`
|
||
|
||
// Attribute:
|
||
// api
|
||
// Type:
|
||
// integer array
|
||
// Description:
|
||
// List of supported API frameworks for this impression. Refer to
|
||
// List 5.6. If an API is not explicitly listed, it is assumed not to be supported.
|
||
API []int64 `json:"api"`
|
||
|
||
// Attribute:
|
||
// sequence
|
||
// Type:
|
||
// integer array
|
||
// Description:
|
||
// Blocked creative attributes. Refer to List 5.3.
|
||
BAttr []int64 `json:"battr"`
|
||
|
||
// Attribute:
|
||
// ext
|
||
// Type:
|
||
// object
|
||
// Description:
|
||
// Placeholder for exchange-specific extensions to OpenRTB.
|
||
Ext Ext `json:"ext"`
|
||
}
|
||
|
||
// 3.2.6 Object: Site
|
||
// 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.
|
||
type Site struct {
|
||
|
||
// Attribute:
|
||
// id
|
||
// Type:
|
||
// string; recommended
|
||
// Description:
|
||
// Exchange-specific site ID.
|
||
ID string `json:"id"`
|
||
|
||
// Attribute:
|
||
// name
|
||
// Type:
|
||
// string
|
||
// Description:
|
||
// Site name (may be aliased at the publisher’s request).
|
||
Name string `json:"name"`
|
||
|
||
// Attribute:
|
||
// domain
|
||
// Type:
|
||
// string
|
||
// Description:
|
||
// Domain of the site (e.g., “mysite.foo.com”).
|
||
Domain string `json:"domain"`
|
||
|
||
// Attribute:
|
||
// cat
|
||
// Type:
|
||
// string array
|
||
// Description:
|
||
// Array of IAB content categories of the site. Refer to List 5.1.
|
||
Cat []string `json:"cat"`
|
||
|
||
// Attribute:
|
||
// sectioncat
|
||
// Type:
|
||
// string array
|
||
// Description:
|
||
// Array of IAB content categories that describe the current
|
||
// section of the site. Refer to List 5.1.
|
||
SectionCat []string `json:"sectioncat"`
|
||
|
||
// Attribute:
|
||
// pagecat
|
||
// Type:
|
||
// string array
|
||
// Description:
|
||
// Array of IAB content categories that describe the current page
|
||
// or view of the site. Refer to List 5.1.
|
||
PageCat []string `json:"pagecat"`
|
||
|
||
// Attribute:
|
||
// page
|
||
// Type:
|
||
// string
|
||
// Description:
|
||
// URL of the page where the impression will be shown.
|
||
Page string `json:"page"`
|
||
|
||
// Attribute:
|
||
// ref
|
||
// Type:
|
||
// string
|
||
// Description:
|
||
// Referrer URL that caused navigation to the current page.
|
||
Ref string `json:"ref"`
|
||
|
||
// Attribute:
|
||
// search
|
||
// Type:
|
||
// string
|
||
// Description:
|
||
// Search string that caused navigation to the current page.
|
||
Search string `json:"search"`
|
||
|
||
// Attribute:
|
||
// mobile
|
||
// Type:
|
||
// integer
|
||
// Description:
|
||
// Mobile-optimized signal, where 0 = no, 1 = yes.
|
||
Mobile uint8 `json:"mobile"`
|
||
|
||
// Attribute:
|
||
// privacypolicy
|
||
// Type:
|
||
// integer
|
||
// Description:
|
||
// Indicates if the site has a privacy policy, where 0 = no, 1 = yes.
|
||
PrivacyPolicy uint8 `json:"privacypolicy"`
|
||
|
||
// Attribute:
|
||
// publisher
|
||
// Type:
|
||
// object
|
||
// Description:
|
||
// Details about the Publisher (Section 3.2.8) of the site.
|
||
Publisher Publisher `json:"publisher"`
|
||
|
||
// Attribute:
|
||
// content
|
||
// Type:
|
||
// object
|
||
// Description:
|
||
// Details about the Content (Section 3.2.9) within the site.
|
||
Content Content `json:"content"`
|
||
|
||
// Attribute:
|
||
// keywords
|
||
// Type:
|
||
// string
|
||
// Description:
|
||
// Comma separated list of keywords about the site.
|
||
Keywords string `json:"keywords"`
|
||
|
||
// Attribute:
|
||
// ext
|
||
// Type:
|
||
// object
|
||
// Description:
|
||
// Placeholder for exchange-specific extensions to OpenRTB.
|
||
Ext Ext `json:"ext"`
|
||
}
|
||
|
||
// 3.2.7 Object: App
|
||
// 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.
|
||
type App struct {
|
||
|
||
// Attrubute:
|
||
// id
|
||
// Type:
|
||
// string; recommended
|
||
// Description:
|
||
// Exchange-specific app ID.
|
||
ID string `json:"id"`
|
||
|
||
// Attribute:
|
||
// name
|
||
// Tyoe:
|
||
// string
|
||
// Description:
|
||
// App name (may be aliased at the publisher’s request).
|
||
Name string `json:"name"`
|
||
|
||
// Attribute:
|
||
// bundle
|
||
// Type:
|
||
// string
|
||
// Description:
|
||
// Application bundle or package name (e.g., com.foo.mygame);
|
||
// intended to be a unique ID across exchanges.
|
||
Bundle string `json:"bundle"`
|
||
|
||
// Attribute:
|
||
// domain
|
||
// Type:
|
||
// string
|
||
// Description:
|
||
// Domain of the app (e.g., “mygame.foo.com”).
|
||
Domain string `json:"domain"`
|
||
|
||
// Attribute:
|
||
// storeurl
|
||
// Type:
|
||
// string
|
||
// Description:
|
||
// App store URL for an installed app; for QAG 1.5 compliance.
|
||
StoreURL string `json:"storeurl"`
|
||
|
||
// Attribute:
|
||
// cat
|
||
// Type:
|
||
// string array
|
||
// Description:
|
||
// Array of IAB content categories of the app. Refer to List 5.1.
|
||
Cat []string `json:"cat"`
|
||
|
||
// Attribute:
|
||
// sectioncat
|
||
// Type:
|
||
// string array
|
||
// Description:
|
||
// Array of IAB content categories that describe the current
|
||
// section of the app. Refer to List 5.1.
|
||
SectionCat []string `json:"sectioncat"`
|
||
|
||
// Attribute:
|
||
// pagecat
|
||
// Type:
|
||
// string array
|
||
// Description:
|
||
// Array of IAB content categories that describe the current page
|
||
// or view of the app. Refer to List 5.1.
|
||
PageCat []string `json:"pagecat"`
|
||
|
||
// Attribute:
|
||
// ver
|
||
// Type:
|
||
// string
|
||
// Description:
|
||
// Application version.
|
||
Ver string `json:"ver"`
|
||
|
||
// Attribute:
|
||
// privacypolicy
|
||
// Type:
|
||
// integer
|
||
// Description:
|
||
// Indicates if the app has a privacy policy, where 0 = no, 1 = yes.
|
||
PrivacyPolicy uint8 `json:"privacypolicy"`
|
||
|
||
// Attribute:
|
||
// paid
|
||
// Type:
|
||
// integer
|
||
// Description:
|
||
// 0 = app is free, 1 = the app is a paid version.
|
||
Paid uint8 `json:"paid"`
|
||
|
||
// Attribute:
|
||
// publisher
|
||
// Type:
|
||
// object
|
||
// Description:
|
||
// Details about the Publisher (Section 3.2.8) of the app.
|
||
Publisher Publisher `json:"publisher"`
|
||
|
||
// Attribute:
|
||
// content
|
||
// Type:
|
||
// object
|
||
// Description:
|
||
// Details about the Content (Section 3.2.9) within the app.
|
||
Content Content `json:"content"`
|
||
|
||
// Attribute:
|
||
// keywords
|
||
// Type:
|
||
// string
|
||
// Description:
|
||
// Comma separated list of keywords about the app.
|
||
Keywords string `json:"keywords"`
|
||
|
||
// Attribute:
|
||
// ext
|
||
// Type:
|
||
// object
|
||
// Description:
|
||
// Placeholder for exchange-specific extensions to OpenRTB.
|
||
Ext Ext `json:"ext"`
|
||
}
|
||
|
||
// 3.2.8 Object: Publisher
|
||
// 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.
|
||
type Publisher struct {
|
||
|
||
// Attribute:
|
||
// id
|
||
// Type:
|
||
// string
|
||
// Description:
|
||
// Exchange-specific publisher ID.
|
||
ID string `json:"id"`
|
||
|
||
// Attribute:
|
||
// name
|
||
// Type:
|
||
// string
|
||
// Description:
|
||
// Publisher name (may be aliased at the publisher’s request).
|
||
Name string `json:"name"`
|
||
|
||
// Attribute:
|
||
// cat
|
||
// Type:
|
||
// string array
|
||
// Description:
|
||
// Array of IAB content categories that describe the publisher.
|
||
// Refer to List 5.1.
|
||
Cat []string `json:"cat"`
|
||
|
||
// Attribute:
|
||
// domain
|
||
// Type:
|
||
// string
|
||
// Description:
|
||
// Highest level domain of the publisher (e.g., “publisher.com”).
|
||
Domain string `json:"domain"`
|
||
|
||
// Attribute:
|
||
// ext
|
||
// Type:
|
||
// object
|
||
// Description:
|
||
// Placeholder for exchange-specific extensions to OpenRTB.
|
||
Ext Ext `json:"ext"`
|
||
}
|
||
|
||
// 3.2.9 Object: Content
|
||
// This object describes the content in which the impression will appear, which may be syndicated or nonsyndicated
|
||
// 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.
|
||
type Content struct {
|
||
|
||
// Attribute:
|
||
// id
|
||
// Type:
|
||
// string
|
||
// Description:
|
||
// ID uniquely identifying the content.
|
||
ID string `json:"id"`
|
||
|
||
// Attribute:
|
||
// episode
|
||
// Type:
|
||
// integer
|
||
// Description:
|
||
// Episode number (typically applies to video content).
|
||
Episode uint64 `json:"episode"`
|
||
|
||
// Attribute:
|
||
// title
|
||
// Type:
|
||
// string
|
||
// Description:
|
||
// 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).
|
||
Title string `json:"title"`
|
||
|
||
// Attribute:
|
||
// series
|
||
// Type:
|
||
// string
|
||
// Description:
|
||
// 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).
|
||
Series string `json:"series"`
|
||
|
||
// Attribute:
|
||
// season
|
||
// Type:
|
||
// string
|
||
// Description:
|
||
// Content season; typically for video content (e.g., “Season 3”).
|
||
Season string `json:"season"`
|
||
|
||
// Attribute:
|
||
// producer
|
||
// Type:
|
||
// object
|
||
// Description:
|
||
// Details about the content Producer (Section 3.2.10).
|
||
Producer Producer `json:"producer"`
|
||
|
||
// Attribute:
|
||
// url
|
||
// Type:
|
||
// string
|
||
// Description:
|
||
// URL of the content, for buy-side contextualization or review.
|
||
URL string `json:"url"`
|
||
|
||
// Attribute:
|
||
// cat
|
||
// Type:
|
||
// string array
|
||
// Description:
|
||
// Array of IAB content categories that describe the content
|
||
// producer. Refer to List 5.1.
|
||
Cat []string `json:"cat"`
|
||
|
||
// Attribute:
|
||
// videoquality
|
||
// Type:
|
||
// integer
|
||
// Description:
|
||
// Video quality per IAB’s classification. Refer to List 5.11.
|
||
VideoQuality uint64 `json:"videoquality"`
|
||
|
||
// Attribute:
|
||
// context
|
||
// Type:
|
||
// integer
|
||
// Description:
|
||
// Type of content (game, video, text, etc.). Refer to List 5.14.
|
||
Context uint64 `json:"context"`
|
||
|
||
// Attribute:
|
||
// contentrating
|
||
// Type:
|
||
// string
|
||
// Description:
|
||
// Content rating (e.g., MPAA).
|
||
ContentRating string `json:"contentrating"`
|
||
|
||
// Attribute:
|
||
// userrating
|
||
// Type:
|
||
// string
|
||
// Description:
|
||
// User rating of the content (e.g., number of stars, likes, etc.).
|
||
UserRating string `json:"userrating"`
|
||
|
||
// Attribute:
|
||
// qagmediarating
|
||
// Type:
|
||
// integer
|
||
// Description:
|
||
// Media rating per QAG guidelines. Refer to List 5.15.
|
||
QAGMediaRating uint64 `json:"qagmediarating"`
|
||
|
||
// Attribute:
|
||
// keywords
|
||
// Type:
|
||
// string
|
||
// Description:
|
||
// Comma separated list of keywords describing the content.
|
||
Keywords string `json:"keywords"`
|
||
|
||
// Attribute:
|
||
// livestream
|
||
// Type:
|
||
// integer
|
||
// Description:
|
||
// 0 = not live, 1 = content is live (e.g., stream, live blog).
|
||
LiveStream uint8 `json:"livestream"`
|
||
|
||
// Attribute:
|
||
// sourcerelationship
|
||
// Type:
|
||
// integer
|
||
// Description:
|
||
// 0 = indirect, 1 = direct.
|
||
SourceRelationship uint8 `json:"sourcerelationship"`
|
||
|
||
// Attribute:
|
||
// len
|
||
// Type:
|
||
// integer
|
||
// Description:
|
||
// Length of content in seconds; appropriate for video or audio.
|
||
Len uint64 `json:"len"`
|
||
|
||
// Attribute:
|
||
// language
|
||
// Type:
|
||
// string
|
||
// Description:
|
||
// Content language using ISO-639-1-alpha-2.
|
||
Language string `json:"language"`
|
||
|
||
// Attribute:
|
||
// embeddable
|
||
// Type:
|
||
// integer
|
||
// Description:
|
||
// Indicator of whether or not the content is embeddable (e.g.,
|
||
// an embeddable video player), where 0 = no, 1 = yes.
|
||
Embeddable uint8 `json:"embeddable"`
|
||
|
||
// Attribute:
|
||
// ext
|
||
// Type:
|
||
// object
|
||
// Description:
|
||
// Placeholder for exchange-specific extensions to OpenRTB.
|
||
Ext Ext `json:"ext"`
|
||
}
|
||
|
||
// 3.2.10 Object: Producer
|
||
// 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.
|
||
type Producer struct {
|
||
|
||
// Attribute:
|
||
// id
|
||
// Type:
|
||
// string
|
||
// Description:
|
||
// Content producer or originator ID. Useful if content is
|
||
// syndicated and may be posted on a site using embed tags.
|
||
ID string `json:"id"`
|
||
|
||
// Attribute:
|
||
// name
|
||
// Type:
|
||
// string
|
||
// Description:
|
||
// Content producer or originator name (e.g., “Warner Bros”).
|
||
Name string `json:"name"`
|
||
|
||
// Attribute:
|
||
// cat
|
||
// Type:
|
||
// string array
|
||
// Description:
|
||
// Array of IAB content categories that describe the content
|
||
// producer. Refer to List 5.1.
|
||
Cat []string `json:"cat"`
|
||
|
||
// Attribute:
|
||
// domain
|
||
// Type:
|
||
// string
|
||
// Description:
|
||
// Highest level domain of the content producer (e.g.,
|
||
// “producer.com”).
|
||
Domain string `json:"domain"`
|
||
|
||
// Attribute:
|
||
// ext
|
||
// Type:
|
||
// object
|
||
// Description:
|
||
// Placeholder for exchange-specific extensions to OpenRTB.
|
||
Ext Ext `json:"ext"`
|
||
}
|
||
|
||
// 3.2.11 Object: Device
|
||
// 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.
|
||
type Device struct {
|
||
|
||
// Attribute:
|
||
// ua
|
||
// Type:
|
||
// string; recommended
|
||
// Description:
|
||
// Browser user agent string.
|
||
UA string `json:"ua"`
|
||
|
||
// Attribute:
|
||
// geo
|
||
// Type:
|
||
// object; recommended
|
||
// Description:
|
||
// Location of the device assumed to be the user’s current
|
||
// location defined by a Geo object (Section 3.2.12).
|
||
Geo Geo `json:"geo"`
|
||
|
||
// Attribute:
|
||
// dnt
|
||
// Type:
|
||
// integer; recommended
|
||
// Description:
|
||
// Standard “Do Not Track” flag as set in the header by the
|
||
// browser, where 0 = tracking is unrestricted, 1 = do not track.
|
||
DNT uint8 `json:"dnt"`
|
||
|
||
// Attribute:
|
||
// lmt
|
||
// Type:
|
||
// integer; recommended
|
||
// Description:
|
||
// “Limit Ad Tracking” signal commercially endorsed (e.g., iOS,
|
||
// Android), where 0 = tracking is unrestricted, 1 = tracking must
|
||
// be limited per commercial guidelines.
|
||
Lmt uint8 `json:"lmt"`
|
||
|
||
// Attribute:
|
||
// ip
|
||
// Type:
|
||
// string; recommended
|
||
// Description:
|
||
// IPv4 address closest to device.
|
||
IP string `json:"ip"`
|
||
|
||
// Attribute:
|
||
// ipv6
|
||
// Type:
|
||
// string
|
||
// Description:
|
||
// IP address closest to device as IPv6.
|
||
IPv6 string `json:"ipv6"`
|
||
|
||
// Attribute:
|
||
// devicetype
|
||
// Type:
|
||
// integer
|
||
// Description:
|
||
// The general type of device. Refer to List 5.17.
|
||
DeviceType uint64 `json:"devicetype"`
|
||
|
||
// Attribute:
|
||
// make
|
||
// Type:
|
||
// string
|
||
// Description:
|
||
// Device make (e.g., “Apple”).
|
||
Make string `json:"make"`
|
||
|
||
// Attribute:
|
||
// model
|
||
// Type:
|
||
// string
|
||
// Description:
|
||
// Device model (e.g., “iPhone”).
|
||
Model string `json:"model"`
|
||
|
||
// Attribute:
|
||
// os
|
||
// Type:
|
||
// string
|
||
// Description:
|
||
// Device operating system (e.g., “iOS”).
|
||
OS string `json:"os"`
|
||
|
||
// Attribute:
|
||
// osv
|
||
// Type:
|
||
// string
|
||
// Description:
|
||
// Device operating system version (e.g., “3.1.2”).
|
||
OSV string `json:"osv"`
|
||
|
||
// Attribute:
|
||
// hwv
|
||
// Type:
|
||
// string
|
||
// Description:
|
||
// Hardware version of the device (e.g., “5S” for iPhone 5S).
|
||
HWV string `json:"hwv"`
|
||
|
||
// Attribute:
|
||
// h
|
||
// Type:
|
||
// integer
|
||
// Description:
|
||
// Physical height of the screen in pixels.
|
||
H uint64 `json:"h"`
|
||
|
||
// Attribute:
|
||
// w
|
||
// Type:
|
||
// integer
|
||
// Description:
|
||
// Physical width of the screen in pixels.
|
||
W uint64 `json:"w"`
|
||
|
||
// Attribute:
|
||
// ppi
|
||
// Type:
|
||
// integer
|
||
// Description:
|
||
// Screen size as pixels per linear inch.
|
||
PPI uint64 `json:"ppi"`
|
||
|
||
// Attribute:
|
||
// pxratio
|
||
// Type:
|
||
// float
|
||
// Description:
|
||
// The ratio of physical pixels to device independent pixels.
|
||
PxRatio float64 `json:"pxratio"`
|
||
|
||
// Attribute:
|
||
// js
|
||
// Type:
|
||
// integer
|
||
// Description:
|
||
// Support for JavaScript, where 0 = no, 1 = yes.
|
||
JS uint8 `json:"js"`
|
||
|
||
// Attribute:
|
||
// flashver
|
||
// Type:
|
||
// string
|
||
// Description:
|
||
// Version of Flash supported by the browser.
|
||
FlashVer string `json:"flashver"`
|
||
|
||
// Attribute:
|
||
// language
|
||
// Type:
|
||
// string
|
||
// Description:
|
||
// Browser language using ISO-639-1-alpha-2.
|
||
Language string `json:"language"`
|
||
|
||
// Attribute:
|
||
// carrier
|
||
// Type:
|
||
// string
|
||
// Description:
|
||
// Carrier or ISP (e.g., “VERIZON”). “WIFI” is often used in mobile
|
||
// to indicate high bandwidth (e.g., video friendly vs. cellular).
|
||
// connectiontype integer Network connection type. Refer to List 5.18.
|
||
Carrier string `json:"carrier"`
|
||
|
||
// Attribute:
|
||
// ifa
|
||
// Type:
|
||
// string
|
||
// Description:
|
||
// ID sanctioned for advertiser use in the clear (i.e., not hashed).
|
||
IFA string `json:"ifa"`
|
||
|
||
// Attribute:
|
||
// didsha1
|
||
// Type:
|
||
// string
|
||
// Description:
|
||
// Hardware device ID (e.g., IMEI); hashed via SHA1.
|
||
DIDSHA1 string `json:"didsha1"`
|
||
|
||
// Attribute:
|
||
// didmd5
|
||
// Type:
|
||
// string
|
||
// Description:
|
||
// Hardware device ID (e.g., IMEI); hashed via MD5.
|
||
DIDMD5 string `json:"didmd5"`
|
||
|
||
// Attribute:
|
||
// dpidsha1
|
||
// Type:
|
||
// string
|
||
// Description:
|
||
// Platform device ID (e.g., Android ID); hashed via SHA1.
|
||
DPIDSHA1 string `json:"dpidsha1"`
|
||
|
||
// Attribute:
|
||
// dpidmd5
|
||
// Type:
|
||
// string
|
||
// Description:
|
||
// Platform device ID (e.g., Android ID); hashed via MD5.
|
||
DPIDMD5 string `json:"dpidmd5"`
|
||
|
||
// Attribute:
|
||
// macsha1
|
||
// Type:
|
||
// string
|
||
// Description:
|
||
// MAC address of the device; hashed via SHA1.
|
||
MACSHA1 string `json:"macsha1"`
|
||
|
||
// Attribute:
|
||
// macmd5
|
||
// Type:
|
||
// string
|
||
// Description:
|
||
// MAC address of the device; hashed via MD5.
|
||
MACMD5 string `json:"macmd5"`
|
||
|
||
// Attribute:
|
||
// ext
|
||
// Type:
|
||
// object
|
||
// Description:
|
||
// Placeholder for exchange-specific extensions to OpenRTB.
|
||
Ext Ext `json:"ext"`
|
||
}
|
||
|
||
// 3.2.12 Object: Geo
|
||
// 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 (i.e., not
|
||
// necessarily their current location).
|
||
// The lat/lon attributes should only be passed if they conform to the accuracy depicted in the type
|
||
// attribute. For example, the centroid of a geographic region such as postal code should not be passed.
|
||
type Geo struct {
|
||
|
||
// Attribute:
|
||
// lat
|
||
// Type:
|
||
// float
|
||
// Description:
|
||
// Latitude from -90.0 to +90.0, where negative is south.
|
||
Lat float64 `json:"lat"`
|
||
|
||
// Attribute:
|
||
// lon
|
||
// Type:
|
||
// float
|
||
// Description:
|
||
// Longitude from -180.0 to +180.0, where negative is west.
|
||
Lon float64 `json:"lon"`
|
||
|
||
// Attribute:
|
||
// type
|
||
// Type:
|
||
// integer
|
||
// Description:
|
||
// Source of location data; recommended when passing
|
||
// lat/lon. Refer to List 5.16.
|
||
Type uint8 `json:"type"`
|
||
|
||
// Attribute:
|
||
// country
|
||
// Type:
|
||
// string
|
||
// Description:
|
||
// Country code using ISO-3166-1-alpha-3.
|
||
Country string `json:"country"`
|
||
|
||
// Attribute:
|
||
// region
|
||
// Type:
|
||
// string
|
||
// Description:
|
||
// Region code using ISO-3166-2; 2-letter state code if USA.
|
||
Region string `json:"region"`
|
||
|
||
// Attribute:
|
||
// regionfips104
|
||
// Type:
|
||
// string
|
||
// Description:
|
||
// Region of a country using FIPS 10-4 notation. While OpenRTB
|
||
// supports this attribute, it has been withdrawn by NIST in 2008.
|
||
RegionFIPS104 string `json:"regionfips104"`
|
||
|
||
// Attribute:
|
||
// metro
|
||
// Type:
|
||
// string
|
||
// Description:
|
||
// Google metro code; similar to but not exactly Nielsen DMAs.
|
||
// See Appendix A for a link to the codes.
|
||
Metro string `json:"metro"`
|
||
|
||
// Attribute:
|
||
// city
|
||
// Type:
|
||
// string
|
||
// Description:
|
||
// City using United Nations Code for Trade & Transport
|
||
// Locations. See Appendix A for a link to the codes.
|
||
City string `json:"city"`
|
||
|
||
// Attribute:
|
||
// zip
|
||
// Type:
|
||
// string
|
||
// Description:
|
||
// Zip or postal code.
|
||
ZIP string `json:"zip"`
|
||
|
||
// Attribute:
|
||
// utcoffset
|
||
// Type:
|
||
// integer
|
||
// Description:
|
||
// Local time as the number +/- of minutes from UTC.
|
||
UTCOffset int8 `json:"utcoffset"`
|
||
|
||
// Attribute:
|
||
// ext
|
||
// Type:
|
||
// object
|
||
// Description:
|
||
// Placeholder for exchange-specific extensions to OpenRTB.
|
||
Ext Ext `json:"ext"`
|
||
}
|
||
|
||
// 3.2.13 Object: User
|
||
// This object contains information known or derived about the human user of the device (i.e., 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.
|
||
type User struct {
|
||
|
||
// Attribute:
|
||
// id
|
||
// Type:
|
||
// string; recommended
|
||
// Description:
|
||
// Exchange-specific ID for the user. At least one of id or
|
||
// buyerid is recommended.
|
||
ID string `json:"id"`
|
||
|
||
// Attribute:
|
||
// buyerid
|
||
// Type:
|
||
// string; recommended
|
||
// Description:
|
||
// Buyer-specific ID for the user as mapped by the exchange for
|
||
// the buyer. At least one of buyerid or id is recommended.
|
||
BuyerID string `json:"buyerid"`
|
||
|
||
// Attribute:
|
||
// yob
|
||
// Type:
|
||
// integer
|
||
// Description:
|
||
// Year of birth as a 4-digit integer.
|
||
Yob uint16 `json:"yob"`
|
||
|
||
// Attribute:
|
||
// gender
|
||
// Type:
|
||
// string
|
||
// Description:
|
||
// Gender, where “M” = male, “F” = female, “O” = known to be
|
||
// other (i.e., omitted is unknown).
|
||
Gender string `json:"gender"`
|
||
|
||
// Attribute:
|
||
// keywords
|
||
// Type:
|
||
// string
|
||
// Description:
|
||
// Comma separated list of keywords, interests, or intent.
|
||
Keywords string `json:"keywords"`
|
||
|
||
// Attribute:
|
||
// customdata
|
||
// Type:
|
||
// string
|
||
// Description:
|
||
// Optional feature to pass bidder data that was 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.
|
||
CustomData string `json:"customdata"`
|
||
|
||
// Attribute:
|
||
// geo
|
||
// Type
|
||
// object
|
||
// Description:
|
||
// Location of the user’s home base defined by a Geo object
|
||
// (Section 3.2.12). This is not necessarily their current location.
|
||
Geo Geo `json:"geo"`
|
||
|
||
// Attribute:
|
||
// data
|
||
// Type:
|
||
// object array
|
||
// Description:
|
||
// Additional user data. Each Data object (Section 3.2.14)
|
||
// represents a different data source.
|
||
Data Data `json:"data"`
|
||
|
||
// Attribute:
|
||
// ext
|
||
// Type:
|
||
// object
|
||
// Description:
|
||
// Placeholder for exchange-specific extensions to OpenRTB.
|
||
Ext Ext `json:"ext"`
|
||
}
|
||
|
||
// 3.2.14 Object: Data
|
||
// 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. The specific data providers in
|
||
// use should be published by the exchange a priori to its bidders.
|
||
type Data struct {
|
||
|
||
// Attribute:
|
||
// id
|
||
// Type:
|
||
// string
|
||
// Description:
|
||
// Exchange-specific ID for the data provider.
|
||
ID string `json:"id"`
|
||
|
||
// Attribute:
|
||
// name
|
||
// Type:
|
||
// string
|
||
// Description:
|
||
// Exchange-specific name for the data provider.
|
||
Name string `json:"name"`
|
||
|
||
// Attribute:
|
||
// segment
|
||
// Type:
|
||
// object array
|
||
// Description:
|
||
// Array of Segment (Section 3.2.15) objects that contain the
|
||
// actual data values.
|
||
Segment []Segment `json:"segment"`
|
||
|
||
// Attribute:
|
||
// ext
|
||
// Type:
|
||
// object
|
||
// Description:
|
||
// Placeholder for exchange-specific extensions to OpenRTB.
|
||
Ext Ext `json:"ext"`
|
||
}
|
||
|
||
// 3.2.15 Object: Segment
|
||
// 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.
|
||
type Segment struct {
|
||
|
||
// Attribute:
|
||
// id
|
||
// Type:
|
||
// string
|
||
// Description:
|
||
// ID of the data segment specific to the data provider.
|
||
ID string `json:"id"`
|
||
|
||
// Attribute:
|
||
// name
|
||
// Type:
|
||
// string
|
||
// Description:
|
||
// Name of the data segment specific to the data provider.
|
||
Name string `json:"name"`
|
||
|
||
// Attribute:
|
||
// value
|
||
// Type:
|
||
// string
|
||
// Description:
|
||
// String representation of the data segment value.
|
||
Value string `json:"value"`
|
||
|
||
// Attribute:
|
||
// ext
|
||
// Type:
|
||
// object
|
||
// Description:
|
||
// Placeholder for exchange-specific extensions to OpenRTB.
|
||
Ext Ext `json:"ext"`
|
||
}
|
||
|
||
// 3.2.16 Object: Regs
|
||
// This object contains any legal, governmental, or industry regulations that apply to the request. The coppa flag
|
||
// 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.
|
||
type Regs struct {
|
||
|
||
// Attribute:
|
||
// coppa
|
||
// Type:
|
||
// integer
|
||
// Description:
|
||
// Flag indicating if this request is subject to the COPPA
|
||
// regulations established by the USA FTC, where 0 = no, 1 = yes.
|
||
COPPA int8 `json:"coppa"`
|
||
|
||
// Attribute:
|
||
// ext
|
||
// Type:
|
||
// object
|
||
// Description:
|
||
// Placeholder for exchange-specific extensions to OpenRTB.
|
||
Ext Ext `json:"ext"`
|
||
}
|
||
|
||
// 3.2.17 Object: Pmp
|
||
// 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.
|
||
type PMP struct {
|
||
|
||
// Attribute:
|
||
// private_auction
|
||
// Type:
|
||
// integer
|
||
// Description:
|
||
// Indicator of auction eligibility to seats named in the Direct Deals object, where 0 = all bids are accepted,
|
||
// 1 = bids are restricted to the deals specified and the terms thereof.
|
||
PrivateAuction int8 `json:"private_auction"`
|
||
|
||
// Attribute:
|
||
// id
|
||
// Type:
|
||
// integer
|
||
// Description:
|
||
// Array of Deal (Section 3.2.18) objects that convey the specific deals applicable to this impression.
|
||
Deals []Deal `json:"deals"`
|
||
|
||
// Attribute:
|
||
// ext
|
||
// Type:
|
||
// object
|
||
// Description:
|
||
// Placeholder for exchange-specific extensions to OpenRTB.
|
||
Ext Ext `json:"ext"`
|
||
}
|
||
|
||
// 3.2.18 Object: Deal
|
||
// 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.
|
||
type Deal struct {
|
||
|
||
// Attribute:
|
||
// id
|
||
// Type:
|
||
// string
|
||
// Description:
|
||
// A unique identifier for the direct deal.
|
||
ID string `json:"id"`
|
||
|
||
// Attribute:
|
||
// bidfloor
|
||
// Type:
|
||
// float
|
||
// Description:
|
||
// Minimum bid for this impression expressed in CPM.
|
||
BidFloor float64 `json:"bidfloor"`
|
||
|
||
// Attribute:
|
||
// bidfloorcur
|
||
// Type:
|
||
// string
|
||
// Description:
|
||
// Currency specified using ISO-4217 alpha codes. This may be different from bid currency returned
|
||
// by bidder if this is allowed by the exchange.
|
||
BidFloorCur string `json:"bidfloorcur"`
|
||
|
||
// Attribute:
|
||
// at
|
||
// Type:
|
||
// integer
|
||
// Description:
|
||
// Optional override of the overall auction type of the bid request, where 1 = First Price,
|
||
// 2 = Second Price Plus, 3 = the value passed in bidfloor is the agreed upon deal price. Additional
|
||
// auction types can be defined by the exchange.
|
||
AT int8 `json:"at"`
|
||
|
||
// Attribute:
|
||
// wseat
|
||
// Type:
|
||
// string array
|
||
// Description:
|
||
// Whitelist of buyer seats allowed to bid on this deal. Seat IDs must be
|
||
// communicated between bidders and the exchange a priori. Omission implies no seat restrictions.
|
||
WSeat []string `json:"wseat"`
|
||
|
||
// Attribute:
|
||
// wadomain
|
||
// Type:
|
||
// string array
|
||
// Description:
|
||
// Array of advertiser domains (e.g., advertiser.com) allowed to bid on this deal. Omission implies
|
||
// no advertiser restrictions.
|
||
WADomain []string `json:"wadomain"`
|
||
|
||
// Attribute:
|
||
// ext
|
||
// Type:
|
||
// object
|
||
// Description:
|
||
// Placeholder for exchange-specific extensions to OpenRTB.
|
||
Ext Ext `json:"ext"`
|
||
}
|