adcom1: use exact types instead of interface{} placeholders

This commit is contained in:
Max Cherry
2018-12-27 15:18:20 +02:00
parent f2b08cfc8a
commit c8f0fbc7db
36 changed files with 156 additions and 127 deletions
+7 -7
View File
@@ -56,7 +56,7 @@ type Ad struct {
// Definition:
// The taxonomy in use for the cat attribute.
// Refer to List: Category Taxonomies.
CatTax interface{} `json:"cattax,omitempty"`
CatTax CategoryTaxonomy `json:"cattax,omitempty"`
// Attribute:
// lang
@@ -75,7 +75,7 @@ type Ad struct {
// Definition:
// Set of attributes describing the creative.
// Refer to List: Creative Attributes.
Attr []interface{} `json:"attr,omitempty"`
Attr []CreativeAttribute `json:"attr,omitempty"`
// Attribute:
// secure
@@ -94,7 +94,7 @@ type Ad struct {
// Definition:
// Media rating per IQG guidelines.
// Refer to List: Media Ratings.
MRating interface{} `json:"mrating,omitempty"`
MRating MediaRating `json:"mrating,omitempty"`
// Attribute:
// init
@@ -120,7 +120,7 @@ type Ad struct {
// Media Subtype Object that indicates this is a display ad and provides additional detail as such.
// Refer to Object: Display.
// * Required if no other media subtype object is specified.
Display interface{} `json:"display,omitempty"`
Display *Display `json:"display,omitempty"`
// Attribute:
// video
@@ -130,7 +130,7 @@ type Ad struct {
// Media Subtype Object that indicates this is a video ad and provides additional detail as such.
// Refer to Object: Video.
// * Required if no other media subtype object is specified.
Video interface{} `json:"video,omitempty"`
Video *Video `json:"video,omitempty"`
// Attribute:
// audio
@@ -140,7 +140,7 @@ type Ad struct {
// Media Subtype Object that indicates this is an audio ad and provides additional detail as such.
// Refer to Object: Audio.
// * Required if no other media subtype object is specified.
Audio interface{} `json:"audio,omitempty"`
Audio *Audio `json:"audio,omitempty"`
// Attribute:
// audit
@@ -149,7 +149,7 @@ type Ad struct {
// Definition:
// An object depicting the audit status of the ad; typically part of a quality/safety review process.
// Refer to Object: Audit.
Audit interface{} `json:"audit,omitempty"`
Audit *Audit `json:"audit,omitempty"`
// Attribute:
// ext
+1 -1
View File
@@ -46,7 +46,7 @@ type App struct {
// Definition:
// The taxonomy in use for the cat, sectcat and pagecat attributes.
// Refer to List: Category Taxonomies.
CatTax interface{} `json:"cattax,omitempty"`
CatTax CategoryTaxonomy `json:"cattax,omitempty"`
// Attribute:
// privpolicy
+5 -5
View File
@@ -29,7 +29,7 @@ type Asset struct {
// Asset Subtype Object that indicates this is a title asset and provides additional detail as such.
// Refer to Object: TitleAsset.
// * Required if no other asset subtype object is specified.
Title interface{} `json:"title,omitempty"`
Title *TitleAsset `json:"title,omitempty"`
// Attribute:
// image
@@ -39,7 +39,7 @@ type Asset struct {
// Asset Subtype Object that indicates this is an image asset and provides additional detail as such.
// Refer to Object: ImageAsset.
// * Required if no other asset subtype object is specified.
Image interface{} `json:"image,omitempty"`
Image *ImageAsset `json:"image,omitempty"`
// Attribute:
// video
@@ -49,7 +49,7 @@ type Asset struct {
// Asset Subtype Object that indicates this is a video asset and provides additional detail as such.
// Refer to Object: VideoAsset.
// * Required if no other asset subtype object is specified.
Video interface{} `json:"video,omitempty"`
Video *VideoAsset `json:"video,omitempty"`
// Attribute:
// data
@@ -59,7 +59,7 @@ type Asset struct {
// Asset Subtype Object that indicates this is a data asset and provides additional detail as such.
// Refer to Object: DataAsset.
// * Required if no other asset subtype object is specified.
Data interface{} `json:"data,omitempty"`
Data *DataAsset `json:"data,omitempty"`
// Attribute:
// link
@@ -69,7 +69,7 @@ type Asset struct {
// Asset Subtype Object that indicates this is a link asset and provides additional detail as such.
// Refer to Object: LinkAsset.
// * Required if no other asset subtype object is specified.
Link interface{} `json:"link,omitempty"`
Link *LinkAsset `json:"link,omitempty"`
// Attribute:
// ext
+4 -4
View File
@@ -30,7 +30,7 @@ type AssetFormat struct {
// Asset Format Subtype Object that indicates this is specifying a title asset and provides additional detail as such.
// Refer to Object: TitleAssetFormat.
// * Required if no other asset format subtype object is specified.
Title interface{} `json:"title,omitempty"`
Title *TitleAssetFormat `json:"title,omitempty"`
// Attribute:
// img
@@ -40,7 +40,7 @@ type AssetFormat struct {
// Asset Format Subtype Object that indicates this is specifying an image asset and provides additional detail as such.
// Refer to Object: ImageAssetFormat.
// * Required if no other asset format subtype object is specified.
Img interface{} `json:"img,omitempty"`
Img *ImageAssetFormat `json:"img,omitempty"`
// Attribute:
// video
@@ -50,7 +50,7 @@ type AssetFormat struct {
// Asset Format Subtype Object, which leverages the VideoPlacement object, that indicates this is specifying a video asset and provides additional detail as such.
// Refer to Object: VideoPlacement.
// * Required if no other asset format subtype object is specified.
Video interface{} `json:"video,omitempty"`
Video *VideoPlacement `json:"video,omitempty"`
// Attribute:
// data
@@ -60,7 +60,7 @@ type AssetFormat struct {
// Asset Format Subtype Object that indicates this is specifying a data asset and provides additional detail as such.
// Refer to Object: DataAssetFormat.
// * Required if no other asset format subtype object is specified.
Data interface{} `json:"data,omitempty"`
Data *DataAssetFormat `json:"data,omitempty"`
// Attribute:
// ext
+2 -2
View File
@@ -19,7 +19,7 @@ type Audio struct {
// Definition:
// API required by the ad if applicable.
// Refer to List: API Frameworks.
API []interface{} `json:"api,omitempty"`
API []APIFramework `json:"api,omitempty"`
// Attribute:
// ctype
@@ -28,7 +28,7 @@ type Audio struct {
// Definition:
// Subtype of audio creative.
// Refer to List: Creative Subtypes - Audio/Video.
CType interface{} `json:"ctype,omitempty"`
CType CreativeSubtypeAV `json:"ctype,omitempty"`
// Attribute:
// dur
+9 -9
View File
@@ -44,7 +44,7 @@ type AudioPlacement struct {
// Definition:
// Playback method in use for this placement.
// Refer to List: Playback Methods.
PlayMethod interface{} `json:"playmethod,omitempty"`
PlayMethod PlaybackMethod `json:"playmethod,omitempty"`
// Attribute:
// playend
@@ -53,7 +53,7 @@ type AudioPlacement struct {
// Definition:
// The event that causes playback to end for this placement.
// Refer to List: Playback Cessation Modes.
PlayEnd interface{} `json:"playend,omitempty"`
PlayEnd PlaybackCessationMode `json:"playend,omitempty"`
// Attribute:
// feed
@@ -62,7 +62,7 @@ type AudioPlacement struct {
// Definition:
// Type of audio feed of this placement.
// Refer to List: Feed Types.
Feed interface{} `json:"feed,omitempty"`
Feed FeedType `json:"feed,omitempty"`
// Attribute:
// nvol
@@ -71,7 +71,7 @@ type AudioPlacement struct {
// Definition:
// Volume normalization mode of this placement.
// Refer to List: Volume Normalization Modes.
NVol interface{} `json:"nvol,omitempty"`
NVol VolumeNormalizationMode `json:"nvol,omitempty"`
// Attribute:
// mime
@@ -90,7 +90,7 @@ type AudioPlacement struct {
// 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 []interface{} `json:"api,omitempty"`
API []APIFramework `json:"api,omitempty"`
// Attribute:
// ctype
@@ -99,7 +99,7 @@ type AudioPlacement struct {
// Definition:
// Creative subtypes permitted for this placement.
// Refer to List: Creative Subtypes - Audio/Video.
CType []interface{} `json:"ctype,omitempty"`
CType []CreativeSubtypeAV `json:"ctype,omitempty"`
// Attribute:
// mindur
@@ -152,7 +152,7 @@ type AudioPlacement struct {
// Array of supported creative delivery methods.
// If omitted, all can be assumed.
// Refer to List: Delivery Methods.
Delivery []interface{} `json:"delivery,omitempty"`
Delivery []DeliveryMethod `json:"delivery,omitempty"`
// Attribute:
// maxseq
@@ -169,7 +169,7 @@ type AudioPlacement struct {
// Definition:
// Array of objects indicating that companion ads are available and providing the specifications thereof.
// Refer to Object: Companion.
Comp []interface{} `json:"comp,omitempty"`
Comp []Companion `json:"comp,omitempty"`
// Attribute:
// comptype
@@ -178,7 +178,7 @@ type AudioPlacement struct {
// Definition:
// Supported companion ad types; recommended if companion ads are specified in comp.
// Refer to List: Companion Types.
CompType []interface{} `json:"comptype,omitempty"`
CompType []CompanionType `json:"comptype,omitempty"`
// Attribute:
// ext
+2 -2
View File
@@ -12,7 +12,7 @@ type Audit struct {
// Definition:
// The audit status of the ad.
// Refer to List: Audit Status Codes.
Status interface{} `json:"status,omitempty"`
Status AuditStatus `json:"status,omitempty"`
// Attribute:
// feedback
@@ -45,7 +45,7 @@ type Audit struct {
// Definition:
// Correction object wherein the auditor can specify changes to attributes of the Ad object or its children they believe to be proper.
// For example, if the original Ad indicated a category of “IAB3”, but the auditor deems the correct category to be “IAB13”, then corr could include a sparse Ad object including just the cat array indicating “IAB13”.
Corr interface{} `json:"corr,omitempty"`
Corr *Ad `json:"corr,omitempty"` // TODO: probably, this won't work due to "omitempty" stuff. Probably, will need an all-pointer Ad equivalent.
// Attribute:
// ext
+1 -1
View File
@@ -20,7 +20,7 @@ type Banner struct {
// Definition:
// Destination link if the image is activated (e.g., clicked); not applicable in some contexts (e.g., DOOH) and its inclusion does not guarantee it will be supported.
// Refer to Object: LinkAsset.
Link interface{} `json:"link,omitempty"`
Link *LinkAsset `json:"link,omitempty"`
// Attribute:
// ext
+1 -1
View File
@@ -29,7 +29,7 @@ type Companion struct {
// Definition:
// Display specification object representing the companion ad.
// Refer to Object: DisplayPlacement.
Display interface{} `json:"display,omitempty"`
Display *DisplayPlacement `json:"display,omitempty"`
// Attribute:
// ext
+6 -6
View File
@@ -105,7 +105,7 @@ type Content struct {
// Definition:
// The taxonomy in use for the cat attribute.
// Refer to List: Category Taxonomies.
CatTax interface{} `json:"cattax,omitempty"`
CatTax CategoryTaxonomy `json:"cattax,omitempty"`
// Attribute:
// prodq
@@ -114,7 +114,7 @@ type Content struct {
// Definition:
// Production quality.
// Refer to List: Production Qualities.
ProdQ interface{} `json:"prodq,omitempty"`
ProdQ ProductionQuality `json:"prodq,omitempty"`
// Attribute:
// context
@@ -123,7 +123,7 @@ type Content struct {
// Definition:
// Type of content (game, video, text, etc.).
// Refer to List: Content Contexts.
Context interface{} `json:"context,omitempty"`
Context ContentContext `json:"context,omitempty"`
// Attribute:
// rating
@@ -148,7 +148,7 @@ type Content struct {
// Definition:
// Media rating per IQG guidelines.
// Refer to List: Media Ratings.
MRating interface{} `json:"mrating,omitempty"`
MRating MediaRating `json:"mrating,omitempty"`
// Attribute:
// keywords
@@ -205,7 +205,7 @@ type Content struct {
// Definition:
// Details about the content producer.
// Refer to Object: Producer.
Producer interface{} `json:"producer,omitempty"`
Producer *Producer `json:"producer,omitempty"`
// Attribute:
// data
@@ -215,7 +215,7 @@ type Content struct {
// Additional user data.
// Each Data object represents a different data source.
// Refer to Object: Data.
Data []interface{} `json:"data,omitempty"`
Data []Data `json:"data,omitempty"`
// Attribute:
// ext
+1 -1
View File
@@ -1,7 +1,7 @@
package adcom
// CreativeSubtypeAV represents subtypes of audio and video ad creatives.
type CreativeSubtypeAV int8
type CreativeSubtypeAV int8 // TODO: rename to smth like AudioVideoCreativeSubtype? (sounds more natural)
// Subtypes of audio and video ad creatives.
const (
+1 -1
View File
@@ -1,7 +1,7 @@
package adcom
// CreativeSubtypeDisplay represents subtypes of display ad creatives.
type CreativeSubtypeDisplay int8
type CreativeSubtypeDisplay int8 // TODO: rename to smth like DisplayCreativeSubtype? (sounds more natural)
// Subtypes of display ad creatives.
const (
+1 -1
View File
@@ -29,7 +29,7 @@ type Data struct {
// Definition:
// Array of Segment objects that contain the actual data values.
// Refer to Object: Segment.
Segment []interface{} `json:"segment,omitempty"`
Segment []Segment `json:"segment,omitempty"`
// Attribute:
// ext
+1 -1
View File
@@ -30,7 +30,7 @@ type DataAsset struct {
// Definition:
// The type of data represented by this asset.
// Refer to List: Native Data Asset Types.
Type interface{} `json:"type,omitempty"`
Type NativeDataAssetType `json:"type,omitempty"`
// Attribute:
// ext
+3 -2
View File
@@ -11,8 +11,9 @@ type DataAssetFormat struct {
// Type:
// integer; required
// Definition:
// The type of data asset supported. Refer to List: Native Data Asset Types.
Type interface{} `json:"type,omitempty"`
// The type of data asset supported.
// Refer to List: Native Data Asset Types.
Type NativeDataAssetType `json:"type,omitempty"`
// Attribute:
// len
+4 -4
View File
@@ -13,7 +13,7 @@ type Device struct {
// Definition:
// The general type of device.
// Refer to List: Device Types.
Type interface{} `json:"type,omitempty"`
Type DeviceType `json:"type,omitempty"`
// Attribute:
// ua
@@ -71,7 +71,7 @@ type Device struct {
// Definition:
// Device operating system.
// Refer to List: Operating Systems.
OS interface{} `json:"os,omitempty"`
OS OperatingSystem `json:"os,omitempty"`
// Attribute:
// osv
@@ -204,7 +204,7 @@ type Device struct {
// Definition:
// Network connection type.
// Refer to List: Connection Types.
ConType interface{} `json:"contype,omitempty"`
ConType ConnectionType `json:"contype,omitempty"`
// Attribute:
// geofetch
@@ -221,7 +221,7 @@ type Device struct {
// Definition:
// Location of the device (i.e., typically the user's current location).
// Refer to Object: Geo.
Geo interface{} `json:"geo,omitempty"`
Geo *Geo `json:"geo,omitempty"`
// Attribute:
// ext
+5 -5
View File
@@ -22,7 +22,7 @@ type Display struct {
// Definition:
// API required by the ad if applicable.
// Refer to List: API Frameworks.
API []interface{} `json:"api,omitempty"`
API []APIFramework `json:"api,omitempty"`
// Attribute:
// ctype
@@ -31,7 +31,7 @@ type Display struct {
// Definition:
// Subtype of display creative.
// Refer to List: Creative Subtypes - Display.
CType interface{} `json:"ctype,omitempty"`
CType CreativeSubtypeDisplay `json:"ctype,omitempty"`
// Attribute:
// w
@@ -103,7 +103,7 @@ type Display struct {
// Definition:
// Structured banner image object, recommended for simple banner creatives.
// Refer to Object: Banner.
Banner interface{} `json:"banner,omitempty"`
Banner *Banner `json:"banner,omitempty"`
// Attribute:
// native
@@ -112,7 +112,7 @@ type Display struct {
// Definition:
// Structured native object, recommended for native ads.
// Refer to Object: Native.
Native interface{} `json:"native,omitempty"`
Native *Native `json:"native,omitempty"`
// Attribute:
// event
@@ -121,7 +121,7 @@ type Display struct {
// Definition:
// Array of events that the advertiser or buying platform wants to track.
// Refer to Object: Event.
Event []interface{} `json:"event,omitempty"`
Event []Event `json:"event,omitempty"`
// Attribute:
// ext
+1 -1
View File
@@ -47,7 +47,7 @@ type DisplayFormat struct {
// Definition:
// Directions in which the creative is permitted to expand.
// Refer to List: Expandable Directions.
ExpDir []interface{} `json:"expdir,omitempty"`
ExpDir []ExpandableDirection `json:"expdir,omitempty"`
// Attribute:
// ext
+10 -10
View File
@@ -12,7 +12,7 @@ type DisplayPlacement struct {
// Definition:
// Placement position on screen.
// Refer to List: Placement Positions.
Pos interface{} `json:"pos,omitempty"`
Pos PlacementPosition `json:"pos,omitempty"`
// Attribute:
// instl
@@ -47,7 +47,7 @@ type DisplayPlacement struct {
// Definition:
// Indicates the click type of this placement.
// Refer to List: Click Types.
ClkType interface{} `json:"clktype,omitempty"`
ClkType ClickType `json:"clktype,omitempty"`
// Attribute:
// ampren
@@ -64,7 +64,7 @@ type DisplayPlacement struct {
// Definition:
// The display placement type.
// Refer to List: Display Placement Types.
PType interface{} `json:"ptype,omitempty"`
PType DisplayPlacementType `json:"ptype,omitempty"`
// Attribute:
// context
@@ -73,7 +73,7 @@ type DisplayPlacement struct {
// Definition:
// The context of the placement.
// Refer to List: Display Context Types.
Context interface{} `json:"context,omitempty"`
Context DisplayContextType `json:"context,omitempty"`
// Attribute:
// mime
@@ -92,7 +92,7 @@ type DisplayPlacement struct {
// List of supported APIs.
// If an API is not explicitly listed, it is assumed to be unsupported.
// Refer to List: API Frameworks.
API []interface{} `json:"api,omitempty"`
API []APIFramework `json:"api,omitempty"`
// Attribute:
// ctype
@@ -101,7 +101,7 @@ type DisplayPlacement struct {
// Definition:
// Creative subtypes permitted.
// Refer to List: Creative Subtypes - Display.
CType []interface{} `json:"ctype,omitempty"`
CType []CreativeSubtypeDisplay `json:"ctype,omitempty"`
// Attribute:
// w
@@ -128,7 +128,7 @@ type DisplayPlacement struct {
// Definition:
// Unit of size used for placement size (i.e., w and h attributes).
// Refer to List: Size Units.
Unit interface{} `json:"unit,omitempty"`
Unit SizeUnit `json:"unit,omitempty"`
// Attribute:
// priv
@@ -145,7 +145,7 @@ type DisplayPlacement struct {
// Definition:
// Array of objects that govern the attributes (e.g., sizes) of a banner display placement.
// Refer to Object: DisplayFormat.
DisplayFmt []interface{} `json:"displayfmt,omitempty"`
DisplayFmt []DisplayFormat `json:"displayfmt,omitempty"`
// Attribute:
// nativefmt
@@ -154,7 +154,7 @@ type DisplayPlacement struct {
// Definition:
// This object specified the required and permitted assets and attributes of a native display placement.
// Refer to Object: NativeFormat.
NativeFmt interface{} `json:"nativefmt,omitempty"`
NativeFmt *NativeFormat `json:"nativefmt,omitempty"`
// Attribute:
// event
@@ -163,7 +163,7 @@ type DisplayPlacement struct {
// Definition:
// Array of supported ad tracking events.
// Refer to Object: EventSpec.
Event []interface{} `json:"event,omitempty"`
Event []EventSpec `json:"event,omitempty"`
// Attribute:
// ext
+2 -2
View File
@@ -30,7 +30,7 @@ type DistributionChannel struct {
// Definition:
// Details about the publisher of the distribution channel.
// Refer to Object: Publisher.
Pub interface{} `json:"pub,omitempty"`
Pub *Publisher `json:"pub,omitempty"`
// Attribute:
// content
@@ -39,5 +39,5 @@ type DistributionChannel struct {
// Definition:
// Details about the content within the distribution channel.
// Refer to Object: Content.
Content interface{} `json:"content,omitempty"`
Content *Content `json:"content,omitempty"`
}
+1 -1
View File
@@ -14,7 +14,7 @@ type DOOH struct {
// Definition:
// The type of out-of-home venue.
// Refer to List: DOOH Venue TypesList: DOOH Venue Types.
Venue interface{} `json:"venue,omitempty"`
Venue DOOHVenueType `json:"venue,omitempty"`
// Attribute:
// fixed
+3 -3
View File
@@ -11,7 +11,7 @@ type Event struct {
// Definition:
// Type of event to track.
// Refer to List: Event Types.
Type interface{} `json:"type"`
Type EventType `json:"type"`
// Attribute:
// method
@@ -20,7 +20,7 @@ type Event struct {
// Definition:
// Method of tracking requested.
// Refer to List: Event Tracking Methods.
Method interface{} `json:"method"`
Method EventTrackingMethod `json:"method"`
// Attribute:
// api
@@ -29,7 +29,7 @@ type Event struct {
// Definition:
// The APIs being used by the tracker; only relevant when the tracking method is JavaScript.
// Refer to List: API Frameworks.
API []interface{} `json:"api,omitempty"`
API []APIFramework `json:"api,omitempty"`
// Attribute:
// url
+3 -3
View File
@@ -12,7 +12,7 @@ type EventSpec struct {
// Definition:
// Type of supported ad tracking event.
// Refer to List: Event Types.
Type interface{} `json:"type,omitempty"`
Type EventType `json:"type,omitempty"`
// Attribute:
// method
@@ -21,7 +21,7 @@ type EventSpec struct {
// Definition:
// Array of supported event tracking methods for this event type.
// Refer to List: Event Tracking Methods.
Method []interface{} `json:"method,omitempty"`
Method []EventTrackingMethod `json:"method,omitempty"`
// Attribute:
// api
@@ -30,7 +30,7 @@ type EventSpec struct {
// Definition:
// Event tracking APIs available for use; only relevant for JavaScript method trackers.
// Refer to List: API Frameworks.
API []interface{} `json:"api,omitempty"`
API []APIFramework `json:"api,omitempty"`
// Attribute:
// jstrk
+2 -2
View File
@@ -16,7 +16,7 @@ type Geo struct {
// Definition:
// Source of location data; recommended when passing lat/lon.
// Refer to List: Location Types.
Type interface{} `json:"type,omitempty"`
Type LocationType `json:"type,omitempty"`
// Attribute:
// lat
@@ -61,7 +61,7 @@ type Geo struct {
// Definition:
// Service or provider used to determine geolocation from IP address if applicable (i.e., type = 2).
// Refer to List: IP Location Services.
IPServ interface{} `json:"ipserv,omitempty"`
IPServ IPLocationService `json:"ipserv,omitempty"`
// Attribute:
// country
+1 -1
View File
@@ -36,7 +36,7 @@ type ImageAsset struct {
// Definition:
// The type of image represented by this asset.
// Refer to List: Native Image Asset Types.
Type interface{} `json:"type,omitempty"`
Type NativeImageAssetType `json:"type,omitempty"`
// Attribute:
// ext
+17 -9
View File
@@ -10,15 +10,17 @@ type ImageAssetFormat struct {
// Type:
// integer
// Definition:
// The type of image asset supported. Refer to List: Native Image Asset Types.
Type interface{} `json:"type,omitempty"`
// The type of image asset supported.
// Refer to List: Native Image Asset Types.
Type NativeImageAssetType `json:"type,omitempty"`
// Attribute:
// mime
// Type:
// string array
// Definition:
// Array of supported mime types (e.g., “image/jpeg”, “image/gif”). If omitted, all types are assumed.
// Array of supported mime types (e.g., “image/jpeg”, “image/gif”).
// If omitted, all types are assumed.
MIME []string `json:"mime,omitempty"`
// Attribute:
@@ -26,7 +28,8 @@ type ImageAssetFormat struct {
// Type:
// integer
// Definition:
// Absolute width of the image asset in device independent pixels (DIPS). Note that mixing absolute and relative sizes is not recommended.
// Absolute width of the image asset in device independent pixels (DIPS).
// Note that mixing absolute and relative sizes is not recommended.
W int `json:"w,omitempty"`
// Attribute:
@@ -34,7 +37,8 @@ type ImageAssetFormat struct {
// Type:
// integer
// Definition:
// Absolute height of the image asset in device independent pixels (DIPS). Note that mixing absolute and relative sizes is not recommended.
// Absolute height of the image asset in device independent pixels (DIPS).
// Note that mixing absolute and relative sizes is not recommended.
H int `json:"h,omitempty"`
// Attribute:
@@ -42,7 +46,8 @@ type ImageAssetFormat struct {
// Type:
// integer
// Definition:
// The minimum requested absolute width of the image in device independent pixels (DIPS). This option should be used for any scaling of images by the client.
// The minimum requested absolute width of the image in device independent pixels (DIPS).
// This option should be used for any scaling of images by the client.
WMin int `json:"wmin,omitempty"`
// Attribute:
@@ -50,7 +55,8 @@ type ImageAssetFormat struct {
// Type:
// integer
// Definition:
// The minimum requested absolute height of the image in device independent pixels (DIPS). This option should be used for any scaling of images by the client.
// The minimum requested absolute height of the image in device independent pixels (DIPS).
// This option should be used for any scaling of images by the client.
HMin int `json:"hmin,omitempty"`
// Attribute:
@@ -58,7 +64,8 @@ type ImageAssetFormat struct {
// Type:
// integer
// Definition:
// Relative width of the image asset when expressing size as a ratio. Note that mixing absolute and relative sizes is not recommended.
// Relative width of the image asset when expressing size as a ratio.
// Note that mixing absolute and relative sizes is not recommended.
WRatio int `json:"wratio,omitempty"`
// Attribute:
@@ -66,7 +73,8 @@ type ImageAssetFormat struct {
// Type:
// integer
// Definition:
// Relative height of the image asset when expressing size as a ratio. Note that mixing absolute and relative sizes is not recommended.
// Relative height of the image asset when expressing size as a ratio.
// Note that mixing absolute and relative sizes is not recommended.
HRatio int `json:"hratio,omitempty"`
// Attribute:
+2 -2
View File
@@ -11,7 +11,7 @@ type Native struct {
// Definition:
// Default destination link for the native ad overall; used if an asset is activated (e.g., clicked) that doesn't specify it's own destination link.
// Refer to Object: LinkAsset.
Link interface{} `json:"link,omitempty"`
Link *LinkAsset `json:"link,omitempty"`
// Attribute:
// asset
@@ -20,7 +20,7 @@ type Native struct {
// Definition:
// Array of assets that comprise the native ad.
// Refer to Object: Asset.
Asset []interface{} `json:"asset,omitempty"`
Asset []Asset `json:"asset,omitempty"`
// Attribute:
// ext
+1 -1
View File
@@ -12,7 +12,7 @@ type NativeFormat struct {
// Definition:
// Array of objects that specify the set of native assets and their permitted formats.
// Refer to Object: AssetFormat.
Asset []interface{} `json:"asset"`
Asset []AssetFormat `json:"asset"`
// Attribute:
// ext
+3 -3
View File
@@ -92,7 +92,7 @@ type Placement struct {
// Placement Subtype Object that indicates that this may be a display placement and provides additional detail related thereto.
// Refer to Object: DisplayPlacement.
// * At least one placement subtype object is required.
Display interface{} `json:"display,omitempty"`
Display *DisplayPlacement `json:"display,omitempty"`
// Attribute:
// video
@@ -102,7 +102,7 @@ type Placement struct {
// Placement Subtype Object that indicates that this may be a video placement and provides additional detail related thereto.
// Refer to Object: VideoPlacement.
// * At least one placement subtype object is required.
Video interface{} `json:"video,omitempty"`
Video *VideoPlacement `json:"video,omitempty"`
// Attribute:
// audio
@@ -112,7 +112,7 @@ type Placement struct {
// Placement Subtype Object that indicates that this may be an audio placement and provides additional detail related thereto.
// Refer to Object: AudioPlacement.
// * At least one placement subtype object is required.
Audio interface{} `json:"audio,omitempty"`
Audio *AudioPlacement `json:"audio,omitempty"`
// Attribute:
// ext
+1 -1
View File
@@ -45,7 +45,7 @@ type Producer struct {
// Definition:
// The taxonomy in use for the cat attribute.
// Refer to List: Category Taxonomies.
CatTax interface{} `json:"cattax,omitempty"`
CatTax CategoryTaxonomy `json:"cattax,omitempty"`
// Attribute:
// ext
+1 -1
View File
@@ -43,7 +43,7 @@ type Publisher struct {
// Definition:
// The taxonomy in use for the cat attribute.
// Refer to List: Category Taxonomies.
CatTax interface{} `json:"cattax,omitempty"`
CatTax CategoryTaxonomy `json:"cattax,omitempty"`
// Attribute:
// ext
+2 -2
View File
@@ -19,7 +19,7 @@ type Restrictions struct {
// Definition:
// The taxonomy in use for the bcat attribute
// Refer to List: Category Taxonomies.
CatTax interface{} `json:"cattax,omitempty"`
CatTax CategoryTaxonomy `json:"cattax,omitempty"`
// Attribute:
// badv
@@ -45,7 +45,7 @@ type Restrictions struct {
// Definition:
// Block list of creative attributes
// Refer to List: Creative Attributes.
BAttr []interface{} `json:"battr,omitempty"`
BAttr []CreativeAttribute `json:"battr,omitempty"`
// Attribute:
// ext
+1 -1
View File
@@ -46,7 +46,7 @@ type Site struct {
// Definition:
// The taxonomy in use for the cat, sectcat and pagecat attributes.
// Refer to List: Category Taxonomies.
CatTax interface{} `json:"cattax,omitempty"`
CatTax CategoryTaxonomy `json:"cattax,omitempty"`
// Attribute:
// privpolicy
+2 -2
View File
@@ -63,7 +63,7 @@ type User struct {
// Definition:
// Location of the user's home base (i.e., not necessarily their current location).
// Refer to Object: Geo.
Geo interface{} `json:"geo,omitempty"`
Geo *Geo `json:"geo,omitempty"`
// Attribute:
// data
@@ -73,7 +73,7 @@ type User struct {
// Additional user data.
// Each Data object represents a different data source.
// Refer to Object: Data.
Data []interface{} `json:"data,omitempty"`
Data []Data `json:"data,omitempty"`
// Attribute:
// ext
+2 -2
View File
@@ -19,7 +19,7 @@ type Video struct {
// Definition:
// API required by the ad if applicable.
// Refer to List: API Frameworks.
API []interface{} `json:"api,omitempty"`
API []APIFramework `json:"api,omitempty"`
// Attribute:
// ctype
@@ -28,7 +28,7 @@ type Video struct {
// Definition:
// Subtype of video creative.
// Refer to List: Creative Subtypes - Audio/Video.
CType interface{} `json:"ctype,omitempty"`
CType CreativeSubtypeAV `json:"ctype,omitempty"`
// Attribute:
// dur
+47 -27
View File
@@ -9,23 +9,26 @@ type VideoPlacement struct {
// Type:
// integer
// Definition:
// Placement subtype. Refer to List: Placement Subtypes - Video.
PType interface{} `json:"ptype,omitempty"`
// 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 interface{} `json:"pos,omitempty"`
// 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.
// 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 int64 `json:"delay,omitempty"`
// Attribute:
@@ -57,31 +60,35 @@ type VideoPlacement struct {
// Type:
// integer
// Definition:
// Playback method in use for this placement. Refer to List: Playback Methods.
PlayMethod interface{} `json:"playmethod,omitempty"`
// 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 interface{} `json:"playend,omitempty"`
// 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 interface{} `json:"clktype,omitempty"`
// 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.
// Array of supported mime types (e.g., “video/mp4”).
// If omitted, all types are assumed.
MIME []string `json:"mime,omitempty"`
// Attribute:
@@ -89,16 +96,19 @@ type VideoPlacement struct {
// 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 []interface{} `json:"api,omitempty"`
// 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 []interface{} `json:"ctype,omitempty"`
// Creative subtypes permitted for this placement.
// Refer to List: Creative Subtypes - Audio/Video.
CType []CreativeSubtypeAV `json:"ctype,omitempty"`
// Attribute:
// w
@@ -121,8 +131,9 @@ type VideoPlacement struct {
// Type:
// integer; default 1
// Definition:
// Units of size used for w and h attributes. Refer to List: Size Units.
Unit interface{} `json:"unit,omitempty"`
// Units of size used for w and h attributes.
// Refer to List: Size Units.
Unit SizeUnit `json:"unit,omitempty"`
// Attribute:
// mindur
@@ -145,7 +156,10 @@ type VideoPlacement struct {
// 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.
// 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:
@@ -169,8 +183,10 @@ type VideoPlacement struct {
// Type:
// integer array
// Definition:
// Array of supported creative delivery methods. If omitted, all can be assumed. Refer to List: Delivery Methods.
Delivery []interface{} `json:"delivery,omitempty"`
// Array of supported creative delivery methods.
// If omitted, all can be assumed.
// Refer to List: Delivery Methods.
Delivery []DeliveryMethod `json:"delivery,omitempty"`
// Attribute:
// maxseq
@@ -185,8 +201,10 @@ type VideoPlacement struct {
// 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 interface{} `json:"linear,omitempty"`
// 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
@@ -201,16 +219,18 @@ type VideoPlacement struct {
// Type:
// object array
// Definition:
// Array of objects indicating that companion ads are available and providing the specifications thereof. Refer to Object: Companion.
Comp []interface{} `json:"comp,omitempty"`
// 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 []interface{} `json:"comptype,omitempty"`
// Supported companion ad types; recommended if companion ads are specified in comp.
// Refer to List: Companion Types.
CompType []CompanionType `json:"comptype,omitempty"`
// Attribute:
// ext