This repository has been archived by the owner on Oct 6, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 61
/
video_placement.go
325 lines (289 loc) · 8.78 KB
/
video_placement.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
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
package adcom1
import (
"encoding/json"
)
// VideoPlacement object signals that the placement may be a video placement and provides additional detail about permitted video ads (e.g., VAST).
type VideoPlacement struct {
// Attribute:
// ptype
// Type:
// integer
// Definition:
// Placement subtype.
// Refer to List: Placement Subtypes - Video.
PType VideoPlacementSubtype `json:"ptype,omitempty"`
// Attribute:
// pos
// Type:
// integer
// Definition:
// Placement position on screen.
// Refer to List: Placement Positions.
Pos PlacementPosition `json:"pos,omitempty"`
// Attribute:
// delay
// Type:
// integer
// Definition:
// Indicates the start delay in seconds for pre-roll, mid-roll, or post-roll placements.
// For additional generic values, refer to List: Start Delay Modes.
Delay StartDelay `json:"delay,omitempty"`
// Attribute:
// skip
// Type:
// integer
// Definition:
// Indicates if the placement imposes ad skippability, where 0 = no, 1 = yes.
Skip int8 `json:"skip,omitempty"`
// Attribute:
// skipmin
// Type:
// integer; default 0
// Definition:
// The placement allows creatives of total duration greater than this number of seconds to be skipped; only applicable if the ad is skippable.
SkipMin int64 `json:"skipmin,omitempty"`
// Attribute:
// skipafter
// Type:
// integer; default 0
// Definition:
// Number of seconds a creative must play before the placement enables skipping; only applicable if the ad is skippable.
SkipAfter int64 `json:"skipafter,omitempty"`
// Attribute:
// playmethod
// Type:
// integer
// Definition:
// Playback method in use for this placement.
// Refer to List: Playback Methods.
PlayMethod PlaybackMethod `json:"playmethod,omitempty"`
// Attribute:
// playend
// Type:
// integer
// Definition:
// The event that causes playback to end for this placement.
// Refer to List: Playback Cessation Modes.
PlayEnd PlaybackCessationMode `json:"playend,omitempty"`
// Attribute:
// clktype
// Type:
// integer
// Definition:
// Indicates the click type of the placement.
// Refer to List: Click Types.
ClkType ClickType `json:"clktype,omitempty"`
// Attribute:
// mime
// Type:
// string array; required
// Definition:
// Array of supported mime types (e.g., “video/mp4”).
// If omitted, all types are assumed.
MIME []string `json:"mime,omitempty"`
// Attribute:
// api
// Type:
// integer array
// Definition:
// List of supported APIs for this placement.
// If an API is not explicitly listed, it is assumed to be unsupported.
// Refer to List: API Frameworks.
API []APIFramework `json:"api,omitempty"`
// Attribute:
// ctype
// Type:
// integer array
// Definition:
// Creative subtypes permitted for this placement.
// Refer to List: Creative Subtypes - Audio/Video.
CType []MediaCreativeSubtype `json:"ctype,omitempty"`
// Attribute:
// w
// Type:
// integer
// Definition:
// Width of the placement in units specified by unit.
W int64 `json:"w,omitempty"`
// Attribute:
// h
// Type:
// integer
// Definition:
// Height of the placement in units specified by unit.
H int64 `json:"h,omitempty"`
// Attribute:
// unit
// Type:
// integer; default 1
// Definition:
// Units of size used for w and h attributes.
// Refer to List: Size Units.
Unit SizeUnit `json:"unit,omitempty"`
// Attribute:
// mindur
// Type:
// integer
// Definition:
// Minimum creative duration in seconds.
MinDur int64 `json:"mindur,omitempty"`
// Attribute:
// maxdur
// Type:
// integer
// Definition:
// Maximum creative duration in seconds.
MaxDur int64 `json:"maxdur,omitempty"`
// Attribute:
// rqddurs
// Type:
// integer array
// Definition:
// Precise acceptable durations for video creatives in seconds. This field specifically
// targets the Live TV use case where non-exact ad durations would result in undesirable
// 'dead air'. This field is mutually exclusive with mindur and maxdur; if rqddurs is
// specified, mindur and maxdur must not be specified and vice versa.
RqdDurs []int64 `json:"rqddurs,omitempty"`
// Attribute:
// maxext
// Type:
// integer; default 0
// Definition:
// Maximum extended creative duration if extension is allowed.
// If 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 maxdur value.
MaxExt int64 `json:"maxext,omitempty"`
// Attribute:
// minbitr
// Type:
// integer
// Definition:
// Minimum bit rate of the creative in Kbps.
MinBitR int64 `json:"minbitr,omitempty"`
// Attribute:
// maxbitr
// Type:
// integer
// Definition:
// Maximum bit rate of the creative in Kbps.
MaxBitR int64 `json:"maxbitr,omitempty"`
// Attribute:
// delivery
// Type:
// integer array
// Definition:
// Array of supported creative delivery methods.
// If omitted, all can be assumed.
// Refer to List: Delivery Methods.
Delivery []DeliveryMethod `json:"delivery,omitempty"`
// Attribute:
// maxseq
// Type:
// integer
// Definition:
// The maximum number of ads that can be played in an ad pod.
MaxSeq int64 `json:"maxseq,omitempty"`
// Attribute:
// poddur
// Type:
// integer
// Definition:
// Indicates the total amount of time in seconds that advertisers may fill
// for a “dynamic” video ad pod, or the dynamic portion of a “hybrid” ad pod.
// This field is required only for the dynamic portion(s) of video ad pods.
// This field refers to the length of the entire ad break, whereas
// mindur/maxdur/rqddurs are constraints relating to the slots that make up the pod.
PodDur int64 `json:"poddur,omitempty"`
// Attribute:
// podid
// Type:
// integer
// Definition:
// Unique identifier indicating that an impression opportunity belongs to a
// video ad pod. If multiple impression opportunities within a bid request
// share the same podid, this indicates that those impression opportunities
// belong to the same video ad pod.
PodID int64 `json:"podid,omitempty"`
// Attribute:
// podseq
// Type:
// integer; default 0
// Definition:
// The sequence (position) of the video ad pod within a content stream.
// Refer to List: Pod Sequence for guidance on the use of this field.
PodSeq PodSequence `json:"podseq,omitempty"`
// Attribute:
// slotinpod
// Type:
// integer; default 0
// Definition:
// For video ad pods, this value indicates that the seller can guarantee delivery
// against the indicated slot position in the pod.
// Refer to List: Slot Position in Pod for guidance on the use of this field.
SlotInPod SlotPositionInPod `json:"slotinpod,omitempty"`
// Attribute:
// mincpmpersec
// Type:
// float
// Definition:
// Minimum CPM per second. This is a price floor for the “dynamic” portion of a
// video ad pod, relative to the duration of bids an advertiser may submit.
MinCPMPerSec float64 `json:"mincpmpersec,omitempty"`
// Attribute:
// linear
// Type:
// integer
// Definition:
// Indicates if the creative must be linear, nonlinear, etc.
// If none specified, no restrictions are assumed.
// Refer to List: Linearity Modes.
Linear LinearityMode `json:"linear,omitempty"`
// Attribute:
// boxing
// Type:
// integer; default 1
// Definition:
// Indicates if letterboxing of 4:3 creatives into a 16:9 window is allowed, where 0 = no, 1 = yes.
Boxing int8 `json:"boxing,omitempty"`
// Attribute:
// comp
// Type:
// object array
// Definition:
// Array of objects indicating that companion ads are available and providing the specifications thereof.
// Refer to Object: Companion.
Comp []Companion `json:"comp,omitempty"`
// Attribute:
// comptype
// Type:
// integer array
// Definition:
// Supported companion ad types; recommended if companion ads are specified in comp.
// Refer to List: Companion Types.
CompType []CompanionType `json:"comptype,omitempty"`
// Attribute:
// expdir
// Type:
// integer array
// Definition:
// Directions in which the creative (video placement) is permitted to expand.
// Refer to List: Expandable Directions.
ExpDir []ExpandableDirection `json:"expdir,omitempty"`
// Attribute:
// overlayexpdir
// Type:
// integer array
// Definition:
// Directions in which the creative (video overlay) is permitted to expand.
// This is primarily used for non-linear videos.
// Refer to List: Expandable Directions.
OverlayExpDir []ExpandableDirection `json:"overlayexpdir,omitempty"`
// Attribute:
// ext
// Type:
// object
// Definition:
// Optional vendor-specific extensions.
Ext json.RawMessage `json:"ext,omitempty"`
}