Files
openrtb/bid.go
T
Max Cherry 4574bb1724 Updated to OpenRTB spec 2.5
http://www.iab.com/wp-content/uploads/2016/03/OpenRTB-API-Specification-Version-2-5-FINAL.pdf

Squashed commit of the following:

commit 40ffaaa76654096ff0a91101421cc36d54ef5968
Author: Max Cherry <mxmCherry@gmail.com>
Date:   Sun Jun 25 12:01:12 2017 +0300

    README: slight cosmetics

commit 5eb0358060f355dd120f66912de1e1b93f0f8772
Author: Max Cherry <mxmCherry@gmail.com>
Date:   Sun Jun 25 12:00:09 2017 +0300

    README: preparing for release

commit d62bda4a2d03462ed2b65a2f2600d13c88a43009
Author: Max Cherry <mxmCherry@gmail.com>
Date:   Sun Jun 25 11:59:23 2017 +0300

    README: review done

commit 7ba05ea615088fd6f284f1a9964291600bfa0b5c
Author: Max Cherry <mxmCherry@gmail.com>
Date:   Sun Jun 25 11:57:23 2017 +0300

    Review: added missing Audio.stitched property

commit be722248b554647522ce460fca2059d34def1dd8
Author: Max Cherry <mxmCherry@gmail.com>
Date:   Sun Jun 18 16:15:35 2017 +0300

    Travis: actually, better stick with 1.9 betas

commit d0b0c16a4539cc3bcc2bcbfd8946820788f05023
Author: Max Cherry <mxmCherry@gmail.com>
Date:   Sun Jun 18 16:14:16 2017 +0300

    Travis: master builds till 1.9 is out

commit 62635330272d14300a4240de984c45337680af65
Author: Max Cherry <mxmCherry@gmail.com>
Date:   Sun Jun 18 16:11:07 2017 +0300

    Travis: try Go 1.9beta1

commit 23e97c18636669930da5dbfe516faf29ed3a70a8
Author: Max Cherry <mxmCherry@gmail.com>
Date:   Sun Jun 18 16:06:18 2017 +0300

    Travis

commit d5c7d013c510ce3220a8ba8cd0d355ec5765491d
Author: Max Cherry <mxmCherry@gmail.com>
Date:   Sun Jun 18 15:57:08 2017 +0300

    README: v4.0.0 release date

commit 14d8158820032b11822f3b2cd981c16f5ccf2dfa
Author: Max Cherry <mxmCherry@gmail.com>
Date:   Sun Jun 18 15:55:55 2017 +0300

    Copied examples from OpenRTB 2.5, reformatted

commit e1fc9ebdc8a44d93b5aa48f7e61a7c9fdcdcc3dd
Author: Max Cherry <mxmCherry@gmail.com>
Date:   Sun Jun 18 15:30:22 2017 +0300

    README - TODOs

commit 0d014dea1020f02db82488a848bdbbf8fadcdc52
Author: Max Cherry <mxmCherry@gmail.com>
Date:   Sat Jun 17 17:45:01 2017 +0300

    README

commit 0d43a00d827670d39d83dfdab556a4153dfba1bb
Author: Max Cherry <mxmCherry@gmail.com>
Date:   Sat Jun 17 17:43:15 2017 +0300

    More README cosmetics

commit ce476e32eff212079e3732a5ec316beb7fe9790d
Author: Max Cherry <mxmCherry@gmail.com>
Date:   Sat Jun 17 17:42:38 2017 +0300

    README cosmetics

commit 8a78e95b19f31be264222e917c5672a8740d6475
Author: Max Cherry <mxmCherry@gmail.com>
Date:   Sat Jun 17 17:41:56 2017 +0300

    Minor renames

commit de717476525c2f91cdd7bcd11c292161f605c28d
Author: Max Cherry <mxmCherry@gmail.com>
Date:   Sat Jun 17 17:41:33 2017 +0300

    Minor comment fix

commit dc35a1d7bac2c8c26bf1e3d04c898ba7cab2ba96
Author: Max Cherry <mxmCherry@gmail.com>
Date:   Sat Jun 17 17:41:08 2017 +0300

    No more OpenRTB 2.3 references

commit 38de47098f2a57a93015ca71264afaa02d11d64b
Author: Max Cherry <mxmCherry@gmail.com>
Date:   Sat Jun 17 17:39:28 2017 +0300

    More README improvs, switch everything to OpenRTB 2.5

commit a739f31497a24467900af2980859c7c6ebcdd457
Author: Max Cherry <mxmCherry@gmail.com>
Date:   Sat Jun 17 17:36:11 2017 +0300

    AT - use int64; rewrite README - stricter numeric types usage + drop gopkg.in, recommend package manager

commit 56adc1a89d74ccf30df1acea40b298395cd10dbf
Author: Max Cherry <mxmCherry@gmail.com>
Date:   Sat Jun 17 17:10:57 2017 +0300

    AuctionType - uint64, can be > 500

commit da45c3e8995152d06e777ed8bfc3ef83493633a6
Author: Max Cherry <mxmCherry@gmail.com>
Date:   Sat Jun 17 17:04:00 2017 +0300

    README: more TODOs

commit 931a2b07a693104a3387d6558d56ef996bb82dba
Author: Max Cherry <mxmCherry@gmail.com>
Date:   Sat Jun 17 17:00:41 2017 +0300

    Make sure everything time-related is int64

commit 720c1ce0b5aa48af58c7306c9f7369d60a2865fc
Author: Max Cherry <mxmCherry@gmail.com>
Date:   Sat Jun 17 14:46:12 2017 +0300

    README: more TODOs - copy more recent tests

commit b658fab7365772f2ba3a9ee55ba1616f842732b1
Author: Max Cherry <mxmCherry@gmail.com>
Date:   Sat Jun 17 14:44:56 2017 +0300

    More TODO

commit e5185fa5dc6958cbc5f49d5d9bb61b568da5e1f4
Author: Max Cherry <mxmCherry@gmail.com>
Date:   Sat Jun 17 14:43:10 2017 +0300

    Reviewed time/duration attributes - to use int64

commit cbb560af3063d10a95b5a26230b26ee25918dcfd
Author: Max Cherry <mxmCherry@gmail.com>
Date:   Sat Jun 17 14:37:08 2017 +0300

    README: Current TODO

commit b7d3f701884892a3e667b3f8c26ca7e2fbeb46bf
Author: Max Cherry <mxmCherry@gmail.com>
Date:   Sat Jun 17 14:35:54 2017 +0300

    OpenRTB 2.5: Video

commit 8d4824b8b8005fe8d67133493dd0b393a7416945
Author: Max Cherry <mxmCherry@gmail.com>
Date:   Sat Jun 17 14:26:10 2017 +0300

    OpenRTB 2.5: Native

commit d40367062fe4f4009bea0697dc2a77a7549b03f4
Author: Max Cherry <mxmCherry@gmail.com>
Date:   Sat Jun 17 14:23:51 2017 +0300

    OpenRTB 2.5: Banner

commit 18962c3c1ebdfc604ae564808ef4141d67fd90ed
Author: Max Cherry <mxmCherry@gmail.com>
Date:   Sat Jun 17 14:16:42 2017 +0300

    OpenRTB 2.5: Content

commit 58a840d97f7e16a447c065b5b7465367459baf0f
Author: Max Cherry <mxmCherry@gmail.com>
Date:   Sat Jun 17 14:07:35 2017 +0300

    OpenRTB 2.5: Device

commit 4a072229b874a93922eabfd003148b6186c2f1d4
Author: Max Cherry <mxmCherry@gmail.com>
Date:   Sat Jun 17 14:00:51 2017 +0300

    OpenRTB 2.5: Geo

commit 41d50bc6d2b760daecdb2296ad83bf4750a39ca6
Author: Max Cherry <mxmCherry@gmail.com>
Date:   Sat Jun 17 13:55:28 2017 +0300

    OpenRTB 2.5: Bid

commit f20f2a038580abe7a47d0285430140147af9bc38
Author: Max Cherry <mxmCherry@gmail.com>
Date:   Sat Jun 17 13:41:50 2017 +0300

    OpenRTB 2.5: SeatBid

commit cfd46a38a7f330853fd07e5fe5bf87c8aedc82f2
Author: Max Cherry <mxmCherry@gmail.com>
Date:   Sat Jun 17 13:40:40 2017 +0300

    OpenRTB 2.5: BidResponse

commit 8c165bb20ba9ff4bf237d5cf89a74db05495378a
Author: Max Cherry <mxmCherry@gmail.com>
Date:   Sat Jun 17 13:38:44 2017 +0300

    OpenRTB 2.5: Segment

commit 610a4ee4a799934bba1d5678b3acebfae6390cd2
Author: Max Cherry <mxmCherry@gmail.com>
Date:   Sat Jun 17 13:37:44 2017 +0300

    OpenRTB 2.5: Data

commit ac37bd4310a12c6e8311a62591cd8059c55e6390
Author: Max Cherry <mxmCherry@gmail.com>
Date:   Sat Jun 17 12:47:52 2017 +0300

    OpenRTB 2.5: User

commit 8a63daa5d6caea5677b7df304f40fd83c073bc9d
Author: Max Cherry <mxmCherry@gmail.com>
Date:   Sat Jun 17 12:44:06 2017 +0300

    OpenRTB 2.5: Producer

commit 8ad8a1880b970044d3312efa0482b9136fab2abf
Author: Max Cherry <mxmCherry@gmail.com>
Date:   Sat Jun 17 12:42:54 2017 +0300

    OpenRTB 2.5: Publisher

commit 59c859c7249238c56a571183376aadd1adbe8394
Author: Max Cherry <mxmCherry@gmail.com>
Date:   Sat Jun 17 12:41:39 2017 +0300

    OpenRTB 2.5: App

commit 14756ddf66fd0fc42d89ddaa521cd6054c39bd21
Author: Max Cherry <mxmCherry@gmail.com>
Date:   Sat Jun 17 12:39:10 2017 +0300

    OpenRTB 2.5: Site

commit 9bbb35253de1d1df21165b8d320c2bebfbc01542
Author: Max Cherry <mxmCherry@gmail.com>
Date:   Sat Jun 17 12:36:25 2017 +0300

    OpenRTB 2.5: Deal

commit 8f88319a83b472c92f3ddc13fa2dabc9c7319c4c
Author: Max Cherry <mxmCherry@gmail.com>
Date:   Sat Jun 17 12:33:41 2017 +0300

    OpenRTB 2.5: PMP

commit 3be39a13e1c480b1ca1462a526d9e041631773a9
Author: Max Cherry <mxmCherry@gmail.com>
Date:   Sat Jun 17 12:31:43 2017 +0300

    OpenRTB 2.5: Imp, Audio

commit 36c9487ad5255dbd027e10b7379663e643b2b50c
Author: Max Cherry <mxmCherry@gmail.com>
Date:   Sat Jun 17 12:12:32 2017 +0300

    Added OpenRTB 2.5 Metric and Format objects

commit e1205cf8701e91c782e3397e8f780be872544780
Author: Max Cherry <mxmCherry@gmail.com>
Date:   Sat Jun 17 12:04:25 2017 +0300

    README update

commit 325778b755bc9e3ba084a726dae5e9c622c1f2fc
Author: Max Cherry <mxmCherry@gmail.com>
Date:   Sat Jun 17 12:03:33 2017 +0300

    Started working on OpenRTB 2.5 compliance - BidRequest, Source, Regs updated
2017-06-25 12:03:32 +03:00

285 lines
8.7 KiB
Go

package openrtb
// 4.2.3 Object: Bid
//
// A SeatBid object contains one or more Bid objects, each of which relates to a specific impression in the
// bid request via the impid attribute and constitutes an offer to buy that impression for a given price.
//
// For each bid, the nurl attribute contains the win notice URL. If the bidder wins the impression, the
// exchange calls this notice URL to inform the bidder of the win and to convey certain information using
// substitution macros (see Section 4.4) such as the clearing price. The win notice return or the adm
// attribute can be used to serve markup (see Section 4.3). In either case, the exchange will also apply the
// aforementioned substitution to any macros found in the markup.
//
// BEST PRACTICE: The essential function of the win notice is to inform a bidder that they won an auction. It
// does not necessarily imply ad delivery, creative viewability, or billability. Exchanges are highly
// encouraged to publish to their bidders their event triggers, billing policies, and any other meaning they
// attach to the win notice. Also, please refer to Section 7.2 for additional guidance on expirations.
//
// BEST PRACTICE: Firing of the billing notice should be server-side and as “close” as possible to where the
// exchange books revenue in order to minimize discrepancies between exchange and bidder.
//
// BEST PRACTICE: For VAST Video, the IAB prescribes that the VAST impression event is the official signal
// that the impression is billable. If the burl attribute is specified, it too should be fired at the same time if
// the exchange is adhering to this policy. However, subtle technical issues may lead to additional
// discrepancies and bidders are cautioned to avoid this scenario.
//
// Several other attributes are used for ad quality checks or enforcing publisher restrictions. These include
// the advertiser domain via adomain, a non-cache-busted URL to an image representative of the content
// of the campaign via iurl, an ID of the campaign and of the creative within the campaign via cid and
// crid respectively, an array of creative attribute via attr, and the dimensions via h and w. If the bid
// pertains to a private marketplace deal, the dealid attribute is used to reference that agreement from
// the bid request.
type Bid struct {
// Attribute:
// id
// Type:
// string; required
// Description:
// Bidder generated bid ID to assist with logging/tracking.
ID string `json:"id"`
// Attribute:
// impid
// Type:
// string; required
// Description:
// ID of the Imp object in the related bid request.
ImpID string `json:"impid"`
// Attribute:
// price
// Type:
// float; required
// Description:
// 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 (e.g., BigDecimal in Java).
Price float64 `json:"price"`
// Attribute:
// nurl
// Type:
// string
// Description:
// Win notice URL called by the exchange if the bid wins (not
// necessarily indicative of a delivered, viewed, or billable ad);
// optional means of serving ad markup. Substitution macros
// (Section 4.4) may be included in both the URL and optionally
// returned markup.
NURL string `json:"nurl,omitempty"`
// Attribute:
// burl
// Type:
// string
// Description:
// Billing notice URL called by the exchange when a winning bid
// becomes billable based on exchange-specific business policy
// (e.g., typically delivered, viewed, etc.). Substitution macros
// (Section 4.4) may be included.
BURL string `json:"burl,omitempty"`
// Attribute:
// lurl
// Type:
// string
// Description:
// 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 (i.e.,
// replaced with a zero-length string).
LURL string `json:"lurl,omitempty"`
// Attribute:
// adm
// Type:
// string
// Description:
// Optional means of conveying ad markup in case the bid wins;
// supersedes the win notice if markup is included in both.
// Substitution macros (Section 4.4) may be included.
AdM string `json:"adm,omitempty"`
// Attribute:
// adid
// Type:
// string
// Description:
// ID of a preloaded ad to be served if the bid wins.
AdID string `json:"adid,omitempty"`
// Attribute:
// adomain
// Type:
// string array
// Description:
// Advertiser domain for block list checking (e.g., “ford.com”).
// This can be an array of for the case of rotating creatives.
// Exchanges can mandate that only one domain is allowed.
ADomain []string `json:"adomain,omitempty"`
// Attribute:
// bundle
// Type:
// string
// Description:
// 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 (e.g.,
// com.foo.mygame). On iOS, it is a numeric ID.
Bundle string `json:"bundle,omitempty"`
// Attribute:
// iurl
// Type:
// string
// Description:
// URL without cache-busting to an image that is representative
// of the content of the campaign for ad quality/safety checking.
IURL string `json:"iurl,omitempty"`
// Attribute:
// cid
// Type:
// string
// Description:
// Campaign ID to assist with ad quality checking; the collection
// of creatives for which iurl should be representative.
CID string `json:"cid,omitempty"`
// Attribute:
// crid
// Type:
// string
// Description:
// Creative ID to assist with ad quality checking
CrID string `json:"crid,omitempty"`
// Attribute:
// tactic
// Type:
// string
// Description:
// 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.
Tactic string `json:"tactic,omitempty"`
// Attribute:
// cat
// Type:
// string array
// Description:
// IAB content categories of the creative. Refer to List 5.1.
Cat []string `json:"cat,omitempty"`
// Attribute:
// attr
// Type:
// integer array
// Description:
// Set of attributes describing the creative. Refer to List 5.3.
Attr []int8 `json:"attr,omitempty"`
// Attribute:
// api
// Type:
// integer
// Description:
// API required by the markup if applicable. Refer to List 5.6.
API int8 `json:"api,omitempty"`
// Attribute:
// protocol
// Type:
// integer
// Description:
// Video response protocol of the markup if applicable. Refer to
// List 5.8.
Protocol int8 `json:"protocol,omitempty"`
// Attribute:
// qagmediarating
// Type:
// integer
// Description:
// Creative media rating per IQG guidelines. Refer to List 5.19.
QAGMediaRating int8 `json:"qagmediarating,omitempty"`
// Attribute:
// language
// Type:
// string
// Description:
// 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 (e.g., a banner with just a company logo).
Language string `json:"language,omitempty"`
// Attribute:
// dealid
// Type:
// string
// Description:
// Reference to the deal.id from the bid request if this bid
// pertains to a private marketplace direct deal.
DealID string `json:"dealid,omitempty"`
// Attribute:
// w
// Type:
// integer
// Description:
// Width of the creative in device independent pixels (DIPS).
W uint64 `json:"w,omitempty"`
// Attribute:
// h
// Type:
// integer
// Description:
// Height of the creative in device independent pixels (DIPS).
H uint64 `json:"h,omitempty"`
// Attribute:
// wratio
// Type:
// integer
// Description:
// Relative width of the creative when expressing size as a ratio.
// Required for Flex Ads.
WRatio uint64 `json:"wratio,omitempty"`
// Attribute:
// hratio
// Type:
// integer
// Description:
// Relative height of the creative when expressing size as a ratio.
// Required for Flex Ads.
HRatio uint64 `json:"hratio,omitempty"`
// Attribute:
// exp
// Type:
// integer
// Description:
// Advisory as to the number of seconds the bidder is willing to
// wait between the auction and the actual impression.
Exp int64 `json:"exp,omitempty"`
// Attribute:
// ext
// Type:
// object
// Description:
// Placeholder for bidder-specific extensions to OpenRTB
Ext RawJSON `json:"ext,omitempty"`
}