Repository navigation
Expand file tree
/
Copy pathopenrtb-xapi.proto
More file actions
616 lines (486 loc) · 19.6 KB
/
Copy pathopenrtb-xapi.proto
File metadata and controls
616 lines (486 loc) · 19.6 KB
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
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
//
// File for XAPI AdEngine endpoint integration extensions
//
// XAPI integration fields
// Use extension IDs in 5100-5299 range for XAPI
syntax = "proto2";
import "openrtb.proto";
option java_outer_classname = "OpenRtbXapi";
package com.magnite.openrtb.v2;
message KeyValuePair {
// Generic key.
optional string key = 1;
// List of generic values.
repeated string value = 2;
}
message Window {
// Referrer url of the highest accessible window.
optional string url = 1;
// The iframe depth.
optional int32 depth = 2;
// Minimum width of any iframe traversed between the video player and window.top.
optional uint32 w = 3;
// Minimum height of any iframe traversed between the video player and window.top.
optional uint32 h = 4;
}
message BidRequestExt {
message Rp {
// ID for the bid object chosen by the ad server for tracking and
// debugging purposes.
optional int32 zone_id = 1;
// Blocked advertisers IDs (max 20).
repeated int32 badvid = 2;
// Blocked advertiser industry IDs (max 50).
repeated int32 baindid = 3;
}
// Additions specific to DV+.
optional Rp rp = 1;
}
extend com.iabtechlab.openrtb.v2.BidRequest {
// Extension key for xAPI BidRequest.ext
optional BidRequestExt bid_request = 5101;
}
message ImpExt {
message ProxyBid {
// ID for the bid object chosen by the ad server for tracking and
// debugging purposes.
optional string id = 1;
// Proxy bid price in CPM (US dollars). All input and output prices are
// either gross (default) or net of Publisher fees, by prior
// arrangement with us.
optional double price = 2;
}
message ProxyDemand {
// Expected average market rate CPMs (US dollars) from the primary ad
// server’s native demand. May be configured to act as a floor price.
optional double marketrate = 1;
// The proxy bids object represents a simple id and bid price for any
// native demand the Ad Server wants to have represented in the
// auction. These bids will be treated as “house bids” for which no
// revenue is recorded.
repeated ProxyBid bids = 2;
}
message Floor {
// RTB rule identifier.
optional string id = 1;
// RTB rule price floor.
optional double price = 2;
// DEPRECATED: no longer supported
// Flag to indicate whether or not Dynamic Price Floors should be active
// for this floor.
optional bool dpf = 3 [deprecated = true];
// RTB rule private marketplace (PMP) tier, where 1 and 2 are reserved
// for future use, 3 = Private marketplace, 4 = First Right marketplace.
optional int32 pmptier = 4;
// RTB rule private marketplace (PMP) priority level.
optional int32 pmppriority = 5;
}
message Rp {
// ID for the bid object chosen by the ad server for tracking and
// debugging purposes.
optional int32 zone_id = 1;
// Set to “url” to URL encode ad.
optional string enc = 2;
// The caller may configure slots in our system, and associate them with
// multiple size IDs. Rather than specify the size ID(s) at request time,
// another option is to specify the slot name here, thus allowing the set
// of sizes to be varied outside of code.
optional string slot = 3;
// Inventory-specific targeting. The target object contains an
// arbitrary set of keys with values comprising of arrays of strings
// used for Deals (Private Marketplace) targeting, utilized to target
// first party inventory data. First party inventory data consists of
// data about the inventory (i.e. category of page, price of item,
// etc.).
repeated KeyValuePair target = 4;
// Inventory-specific tracking/reporting.
repeated KeyValuePair track = 5;
// Optional parameters that will be passed to DSPs, and logged by Magnite.
repeated KeyValuePair rtb = 6;
// Optional parameters that will passed to DSPs, though not logged within Magnite.
repeated KeyValuePair nolog = 7;
// The proxy demand object contains a parent object for usage where the
// primary ad server wants to represent native demand in the auction.
// These bids will be treated as “house bids” for which no revenue is
// recorded.
optional ProxyDemand proxydemand = 8;
// Floor data used to synthesize RTB rules.
repeated Floor floors = 9;
// Global Placement ID. The unique identifier of the placement that is sent
// to all participants in buying impressions for this placement. In general,
// this field should be populated with one of the DFP Ad Unit Code, Prebid Ad Slot,
// or some value provided by the publisher or ad server.
optional string gpid = 10;
}
// Additions specific to DV+.
optional Rp rp = 1;
// For greater transparency around video inventory, some buyers require this
// additional data relating to the content and the video player.
optional Window window = 2;
// Supported viewability vendors. For list of supported vendors, visit:
// https://help.magnite.com/help/xapi-specifications-xapi-specifications.
repeated string viewabilityvendors = 3;
// Global Placement ID. The unique identifier of the placement that is sent
// to all participants in buying impressions for this placement. In general,
// this field should be populated with one of the DFP Ad Unit Code, Prebid Ad Slot,
// or some value provided by the publisher or ad server.
optional string gpid = 4;
}
extend com.iabtechlab.openrtb.v2.BidRequest.Imp {
// Extension key for xAPI BidRequest.ext
optional ImpExt imp = 5102;
}
message VideoExt {
message Rp {
// DV+ size ID. Refer to
// https://help.magnite.com/help/supported-ad-formats.
optional uint32 size_id = 1;
}
message Ad {
// Width of ad render area.
optional int32 w = 1;
// Height of ad render area.
optional int32 h = 2;
}
// The orientation of the video player, so the buyer can adjust accordingly.
// Allowed values are "h" (horizontal) and "v" (vertical).
optional string orientation = 1;
// Addtions specific to DV+.
optional Rp rp = 2;
// For greater transparency around video inventory, some buyers require this
// additional data relating to the video player.
optional Ad ad = 3;
// DEPRECATED: Use “skip” field from the video object.
optional bool skip = 4 [deprecated = true];
// DEPRECATED: Replaced by “skipafter” in the video object.
optional int32 skipdelay = 5 [deprecated = true];
// Placement type for the impression. Refer to IAB OpenRTB
// VideoPlacementType enum.
optional int32 placement = 6;
}
extend com.iabtechlab.openrtb.v2.BidRequest.Imp.Video {
// Extension key for xAPI Video.ext
optional VideoExt video = 5103;
}
message BannerExt {
message Rp {
// DV+ size ID. Refer to
// https://help.magnite.com/help/supported-ad-formats.
optional uint32 size_id = 1;
// Alternate size IDs. Refer to
// https://help.magnite.com/help/supported-ad-formats.
repeated uint32 alt_size_ids = 2;
// Specify the content type of ad markup (“adm” property) in the
// response. Supported MIME types are “application/javascript” and
// “text/html”. The default returned format can be specified at
//integration time. The “text/html” format corresponds to an HTML
// fragment.
optional string mime = 3;
// DEPRECATED: no longer supported
// Flag to indicate usage of nurl (Magnite billable pixel) in
// bid response.
optional bool usenurl = 4 [deprecated = true];
// Flag to indicate usage of imptrackers (DSP impression tracking
// pixels) in bid response.
optional bool useimptrackers = 5;
}
// Additions specific to DV+.
optional Rp rp = 1;
}
extend com.iabtechlab.openrtb.v2.BidRequest.Imp.Banner {
// Extension key for xAPI Banner.ext
optional BannerExt banner = 5104;
}
message AdQuality {
// Signal the sensitivity of this slot to ad quality. Allowed values are
// "high" (which results in the blocking of creatives that have been
// tagged as low-quality), or "low".
optional string sensitivity = 1;
}
message AppExt {
message Rp {
// DV+ site ID.
optional uint32 site_id = 1;
// Our Creative Audit process allows for the caller to tag creatives in
// our responses as high or low quality and then, at request time,
// specify limitations on which of these creatives are allowed to serve.
optional AdQuality aq = 2;
// An array of string identifiers denoting the advertiser blocklist
// relevant for this impression. See the DV+ Blocklist API for details:
// https://help.magnite.com/help/blocklist-sync-api.
repeated string blocklists = 3;
}
// Additions specific to DV+.
optional Rp rp = 1;
}
extend com.iabtechlab.openrtb.v2.BidRequest.App {
// Extension key for xAPI App.ext
optional AppExt app = 5105;
}
message SiteExt {
message Rp {
// DV+ site ID.
optional uint32 site_id = 1;
// Our Creative Audit process allows for the caller to tag creatives in
// our responses as high or low quality and then, at request time,
// specify limitations on which of these creatives are allowed to serve.
optional AdQuality aq = 2;
// An array of string identifiers denoting the advertiser blocklist
// relevant for this impression. See the DV+ Blocklist API for details:
// https://help.magnite.com/help/blocklist-sync-api.
repeated string blocklists = 3;
}
// Additions specific to DV+.
optional Rp rp = 1;
// For greater transparency around video inventory, some buyers require this
// additional data relating to the content and the video player.
optional Window window = 2;
}
extend com.iabtechlab.openrtb.v2.BidRequest.Site {
// Extension key for xAPI Site.ext
optional SiteExt site = 5106;
}
message PublisherExt {
message Rp {
// DV+ account ID.
optional int32 account_id = 1;
}
// Additions specific to DV+.
optional Rp rp = 1;
}
extend com.iabtechlab.openrtb.v2.BidRequest.Publisher {
// Extension key for xAPI Publisher.ext
optional PublisherExt publisher = 5107;
}
message DeviceExt {
message Rp {
// Screen size (width “x” height).
optional string res = 1;
// The ratio of physical pixels to device independent pixels (dips) on
// the device, e.g., 1 for non-retina iOS, 2 for Retina Display.
optional double pixelratio = 2;
// This is the X-Forwarded-For header that the caller received from the
// end device. The field is omitted if that header was not received. If
// the end device called Magnite directly, we should expect the calling
// IP address and X-Forwarded-For header to match the “ip” and "xff"
// values in this request.
optional string xff = 3;
}
message Dooh {
// Multiplier that applies to all fees, prices, and floors.
optional double impmultiply = 1;
}
// Additions specific to DV+.
optional Rp rp = 1;
// Indicates whether user IP addresses should be masked before sending to
// DSPs. Note that this feature is only enabled for select accounts.
optional bool ipmask = 2;
// Additional information specific to Digital Out of Home (DOOH).
optional Dooh dooh = 3;
}
extend com.iabtechlab.openrtb.v2.BidRequest.Device {
// Extension key for xAPI Device.ext
optional DeviceExt device = 5108;
}
message GeoExt {
message Rp {
// Indicates whether or not the app has asked the user for permission
// to read fine-grained location data (GPS). A value of 1 indicates
// “yes”; 0 indicates “no”. If the field is not present, this is
// unknown.
optional int32 consent = 1;
}
// Additions specific to DV+.
optional Rp rp = 1;
}
extend com.iabtechlab.openrtb.v2.BidRequest.Geo {
// Extension key for xAPI Geo.ext
optional GeoExt geo = 5109;
}
message UserExt {
message Dt {
// The user ID, encrypted.
optional string id = 1;
// User consent for sharing/recording the user ID, 0 (default)
// indicates consent, 1 indicates no consent.
optional uint64 pref = 2;
// The version of the key used to encrypt the user ID (not the key
// itself). This allows the receiver to make a quick determination
// that the key has been rotated.
optional uint32 keyv = 3 [default = 1];
}
message Rp {
// User-specific targeting. The target object contains an arbitrary set
// of keys with values comprising of arrays of strings used for Deals
// (Private Marketplace) targeting, utilized to target first party
// visitor data. First party visitor data consists of non-PII data
// about the user (i.e. demographic data).
repeated KeyValuePair target = 1;
}
// DEPRECATED: DigiTrust user ID and context.
optional Dt dt = 1 [deprecated = true];
// Additions specific to DV+.
optional Rp rp = 3;
// LiveRamp IdentityLink (IDL) envelope.
optional string liveramp_idl = 4;
}
extend com.iabtechlab.openrtb.v2.BidRequest.User {
// Extension key for xAPI User.ext
optional UserExt user = 5110;
}
message RegsExt {
// Flag indicating whether or not this request falls under California Cal
// Bus & Prof Code s22580 regulation.
optional bool s22580 = 1;
}
extend com.iabtechlab.openrtb.v2.BidRequest.Regs {
// Extension key for xAPI Regs.ext
optional RegsExt regs = 5111;
}
message SourceExt {
// Specifies a Server-Side Ad Insertion (SSAI) request where a server will
// render the creative and execute any trackers. When true, calls directly
// from the server will convey device context in new “X-Device” HTTP
// headers per the VAST 4.1 specification.
optional bool ssreq = 1;
}
extend com.iabtechlab.openrtb.v2.BidRequest.Source {
// Extension key for xAPI Source.ext
optional SourceExt source = 5112;
}
message NativeExt {
message Rp {
// DEPRECATED: no longer supported
// DV+ size ID. Refer to
// https://help.magnite.com/help/supported-ad-formats.
optional uint32 size_id = 1 [deprecated = true];
}
// Additions specific to DV+.
optional Rp rp = 1;
}
extend com.iabtechlab.openrtb.v2.BidRequest.Imp.Native {
// Extension key for xAPI Native.ext
optional NativeExt native = 5113;
}
message NativeRequestExt {
// Flag to declare support for Native Ad Choices.
optional bool privacy = 1;
}
extend com.iabtechlab.openrtb.v2.NativeRequest {
// Extension key for xAPI NativeRequest.ext
optional NativeRequestExt native_request = 5114;
}
message AudioExt {
message Rp {
// DV+ size ID. Refer to
// https://help.magnite.com/help/supported-ad-formats.
optional uint32 size_id = 1;
}
// Additions specific to DV+.
optional Rp rp = 1;
}
extend com.iabtechlab.openrtb.v2.BidRequest.Imp.Audio {
// Extension key for xAPI Audio.ext
optional AudioExt audio = 5115;
}
message BidResponseExt {
message Rp {
// Status code set to 0 if the bid array will contain an ad.
// Status code set to 32 for proxy bid wins.
optional int32 statuscode = 1;
// If status code is set, this field can be used to provide additional
// information.
optional string statusmsg = 2;
// Response time, rounded up to the next multiple of 10 milliseconds.
optional int32 time = 3;
}
// Additions specific to DV+.
optional Rp rp = 1;
}
extend com.iabtechlab.openrtb.v2.BidResponse {
// Extension key for xAPI BidResponse.ext
optional BidResponseExt bid_response = 5201;
}
message SeatBidExt {
message Rp {
// DV+ ID of the bidder on whose behalf the bid(s) are made.
optional string buyer = 1;
}
// Additions specific to DV+.
optional Rp rp = 1;
}
extend com.iabtechlab.openrtb.v2.BidResponse.SeatBid {
// Extension key for xAPI SeatBid.ext
optional SeatBidExt seatbid = 5202;
}
message BidExt {
message Rp {
// DV+ advertiser ID for the bid, corresponding to the "adomain" field.
optional int32 advid = 1;
// The MIME content type with which the "adm" property of the bid is
// encoded for Banner objects only.
optional string mime = 2;
// The type of creative returned. This can be one of banner or video.
// For banner and video, the creative is sent as part of adm.
optional string adtype = 3;
// DV+ size ID of winning ad size. Refer to
// https://help.magnite.com/help/supported-ad-formats.
optional uint32 size_id = 4;
// Custom key/values used for targeting line items in a publisher ad
// server.
repeated KeyValuePair targeting = 5;
// Supported API framework for this impression. Refer to the IAB
// OpenRTB ApiFramework enum.
optional uint32 creativeapi = 6;
// Supported viewability vendors. For list of supported vendors, visit:
// https://help.magnite.com/help/xapi-specifications-xapi-specifications.
repeated string viewabilityvendors = 7;
// Indicates if the price is estimated (e.g., where pricing is not
// CPM-based), 0 = not estimated, 1 = estimated.
optional int32 estimated = 8;
// Bid price net of all fees.
optional double adjustbid = 9;
// DEPRECATED: Temporary field to allow for transition period moving from string to int
optional string deprecated_pmptier = 10 [deprecated = true];
// RTB ad quality ID.
optional string aqid = 11;
// Advertiser industry ID.
repeated int32 aindid = 12;
// URL to be called to signal the billable event.
optional string burl = 13;
// DSP provided impression tracking pixels. If the request indicates a
// secure environment via the imp.secure flag, all URLs must be secure.
repeated string imptrackers = 14;
// Field for pmptier to allow for type int
// Indicates the private marketplace (PMP) tier of the bid, where 1 and
// 2 are reserved for future use, 3 = Private marketplace, 4 = First
// Right marketplace. Omitted for open auction.
optional int32 pmptier = 15;
// Response format if MEM
enum ResponseFormat_E {
UNKNOWN = 0;
BANNER = 1;
VIDEO = 2;
NATIVE = 3;
AUDIO = 4;
}
// Field indicating MEM response (value mapped as above enum)
optional uint32 response_format = 16;
}
// Additions specific to DV+.
optional Rp rp = 1;
}
extend com.iabtechlab.openrtb.v2.BidResponse.SeatBid.Bid {
// Extension key for xAPI Bid.ext
optional BidExt bid = 5203;
}
message EventTrackerExt {
// Open Measurement verification parameters.
optional string verification_parameters = 1;
// Open Measurement vendor key (camelCase per IAB spec).
optional string vendorKey = 2;
}
extend com.iabtechlab.openrtb.v2.NativeResponse.EventTracker {
// Extension key for xAPI EventTracker.ext
optional EventTrackerExt eventtracker = 5204;
}