forked from PubMatic-OpenWrap/prebid-openrtb
-
Notifications
You must be signed in to change notification settings - Fork 0
/
bid_request.go
242 lines (217 loc) · 7.34 KB
/
bid_request.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
package openrtb2
import (
"encoding/json"
"github.com/prebid/openrtb/v17/adcom1"
)
// 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.4).
// 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.4) 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.13) about the publisher’s
// website. Only applicable and recommended for websites.
Site *Site `json:"site,omitempty"`
// Attribute:
// app
// Type:
// object; recommended
// Description:
// Details via an App object (Section 3.2.14) about the publisher’s
// app (i.e., non-browser applications). Only applicable and
// recommended for apps.
App *App `json:"app,omitempty"`
// Attribute:
// device
// Type:
// object; recommended
// Description:
// Details via a Device object (Section 3.2.18) about the user’s
// device to which the impression will be delivered.
Device *Device `json:"device,omitempty"`
// Attribute:
// user
// Type:
// object; recommended
// Description:
// Details via a User object (Section 3.2.20) about the human
// user of the device; the advertising audience.
User *User `json:"user,omitempty"`
// 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,omitempty"`
// 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
// 500 and greater.
AT int64 `json:"at,omitempty"`
// Attribute:
// tmax
// Type:
// integer
// Description:
// Maximum time in milliseconds the exchange allows for bids to
// be received including Internet latency to avoid timeout. This
// value supersedes any a priori guidance from the exchange.
TMax int64 `json:"tmax,omitempty"`
// Attribute:
// wseat
// Type:
// string array
// Description:
// Allowed list of buyer seats (e.g., advertisers, agencies)
// allowed to 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. At
// most, only one of wseat and bseat should be used in the
// same request. Omission of both implies no seat restrictions.
WSeat []string `json:"wseat,omitempty"`
// Attribute:
// bseat
// Type:
// string array
// Description:
// Block list of buyer seats (e.g., 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.
BSeat []string `json:"bseat,omitempty"`
// 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,omitempty"`
// 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,omitempty"`
// Attribute:
// wlang
// Type:
// string array
// Description:
// 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.
WLang []string `json:"wlang,omitempty"`
// Attribute:
// wlangb
// Type:
// string array
// Description:
// 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.
WLangB []string `json:"wlangb,omitempty"`
// Attribute:
// bcat
// Type:
// string array
// Description:
// Blocked advertiser categories using the specified
// category taxonomy.
// The taxonomy to be used is defined by the cattax field. If no
// cattax field is supplied IAB Content Category Taxonomy 1.0 is
// assumed.
BCat []string `json:"bcat,omitempty"`
// Attribute:
// cattax
// Type:
// integer; default 1
// Description:
// The taxonomy in use for bcat. Refer to the AdCOM
// 1.0 list List: Category Taxonomies for values
CatTax adcom1.CategoryTaxonomy `json:"cattax,omitempty"`
// Attribute:
// badv
// Type:
// string array
// Description:
// Block list of advertisers by their domains (e.g., “ford.com”).
BAdv []string `json:"badv,omitempty"`
// Attribute:
// bapp
// Type:
// string array
// Description:
// Block list of applications by their app store IDs. 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
// (e.g. com.foo.mygame). For apps in Apple App Store, these
// should be a numeric ID.
BApp []string `json:"bapp,omitempty"`
// Attribute:
// source
// Type:
// object
// Description:
// A Sorce object (Section 3.2.2) that provides data about the
// inventory source and which entity makes the final decision.
Source *Source `json:"source,omitempty"`
// Attribute:
// regs
// Type:
// object
// Description:
// A Regs object (Section 3.2.3) that specifies any industry, legal,
// or governmental regulations in force for this request.
Regs *Regs `json:"regs,omitempty"`
// Attribute:
// ext
// Type:
// object
// Description:
// Placeholder for exchange-specific extensions to OpenRTB.
Ext json.RawMessage `json:"ext,omitempty"`
}