openrtb_ext

package
v0.216.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 27, 2022 License: Apache-2.0 Imports: 12 Imported by: 301

Documentation

Overview

Package openrtb_ext defines all the input validation for Prebid Server's extensions to the OpenRTB 2.5 spec.

Most of these are defined by simple contract classes.

One notable exception is the bidder params, which have more complex validation rules. These are validated by a BidderParamValidator, which relies on the json-schemas from static/bidder-params/{bidder}.json

Index

Constants

View Source
const (
	HbpbConstantKey TargetingKey = "hb_pb"

	// HbEnvKey exists to support the Prebid Universal Creative. If it exists, the only legal value is mobile-app.
	// It will exist only if the incoming bidRequest defined request.app instead of request.site.
	HbEnvKey TargetingKey = "hb_env"

	// HbCacheHost and HbCachePath exist to supply cache host and path as targeting parameters
	HbConstantCacheHostKey TargetingKey = "hb_cache_host"
	HbConstantCachePathKey TargetingKey = "hb_cache_path"

	// HbBidderConstantKey is the name of the Bidder. For example, "appnexus" or "rubicon".
	HbBidderConstantKey TargetingKey = "hb_bidder"
	HbSizeConstantKey   TargetingKey = "hb_size"
	HbDealIDConstantKey TargetingKey = "hb_deal"

	// HbFormatKey is the format of the bid. For example, "video", "banner"
	HbFormatKey TargetingKey = "hb_format"

	// HbCacheKey and HbVastCacheKey store UUIDs which can be used to fetch things from prebid cache.
	// Callers should *never* assume that either of these exist, since the call to the cache may always fail.
	//
	// HbVastCacheKey's UUID will fetch the entire bid JSON, while HbVastCacheKey will fetch just the VAST XML.
	// HbVastCacheKey will only ever exist for Video bids.
	HbCacheKey     TargetingKey = "hb_cache_id"
	HbVastCacheKey TargetingKey = "hb_uuid"

	// This is not a key, but values used by the HbEnvKey
	HbEnvKeyApp string = "mobile-app"

	HbCategoryDurationKey TargetingKey = "hb_pb_cat_dur"
)
View Source
const (
	StoredRequestAttributes = "storedrequestattributes"
	OriginalBidCpmKey       = "origbidcpm"
	OriginalBidCurKey       = "origbidcur"
)
View Source
const FirstPartyDataContextExtKey = "context"

FirstPartyDataContextExtKey defines a field name within request.ext and request.imp.ext reserved for first party data.

View Source
const FirstPartyDataExtKey = "data"

FirstPartyDataExtKey defines a field name within request.ext and request.imp.ext reserved for first party data.

View Source
const GPIDKey = "gpid"

GPIDKey defines the field name within request.ext reserved for the Global Placement ID (GPID),

View Source
const MaxDecimalFigures int = 15
View Source
const NativeExchangeSpecificLowerBound = 500

NativeExchangeSpecificLowerBound defines the lower threshold of exchange specific types for native ads. There is no upper bound.

View Source
const PrebidExtBidderKey = "bidder"

PrebidExtBidderKey represents the field name within request.imp.ext.prebid reserved for bidder params.

View Source
const PrebidExtKey = "prebid"

PrebidExtKey represents the prebid extension key used in requests

View Source
const SKAdNExtKey = "skadn"

SKAdNExtKey defines the field name within request.ext reserved for Apple's SKAdNetwork.

Variables

This section is empty.

Functions

func BuildBidderMap

func BuildBidderMap() map[string]BidderName

BuildBidderMap builds a map of string to BidderName, to remain compatbile with the prebioud BidderMap variable.

func BuildBidderNameHashSet

func BuildBidderNameHashSet() map[string]struct{}

func BuildBidderStringSlice

func BuildBidderStringSlice() []string

BuildBidderStringSlice builds a slioce of strings for each BidderName.

func IsBidderNameReserved

func IsBidderNameReserved(name string) bool

IsBidderNameReserved returns true if the specified name is a case insensitive match for a reserved bidder name.

func IsKnownIOSAppTrackingStatus

func IsKnownIOSAppTrackingStatus(v int64) bool

IsKnownIOSAppTrackingStatus returns true if the value is a known iOS app tracking authorization status.

Types

type AdPod

type AdPod struct {
	PodId     int64            `json:"podid"`
	Targeting []VideoTargeting `json:"targeting"`
	Errors    []string         `json:"errors"`
}

type AppExt added in v0.169.0

type AppExt struct {
	// contains filtered or unexported fields
}

func (*AppExt) Dirty added in v0.169.0

func (ae *AppExt) Dirty() bool

func (*AppExt) GetExt added in v0.169.0

func (ae *AppExt) GetExt() map[string]json.RawMessage

func (*AppExt) GetPrebid added in v0.169.0

func (ae *AppExt) GetPrebid() *ExtAppPrebid

func (*AppExt) SetExt added in v0.169.0

func (ae *AppExt) SetExt(ext map[string]json.RawMessage)

func (*AppExt) SetPrebid added in v0.169.0

func (ae *AppExt) SetPrebid(prebid *ExtAppPrebid)

type BidRequestVideo

type BidRequestVideo struct {
	// Attribute:
	//   storedrequestid
	// Type:
	//   string; required
	// Description:
	//   Unique ID of the stored request
	StoredRequestId string `json:"storedrequestid"`

	// Attribute:
	//   podconfig
	// Type:
	//   object; required
	// Description:
	//   Container object for describing all the pod configurations
	PodConfig PodConfig `json:"podconfig"`

	// Attribute:
	//   app
	// Type:
	//   object; App or Site required
	// Description:
	//   Application where the impression will be shown
	App *openrtb2.App `json:"app"`

	// Attribute:
	//   site
	// Type:
	//   object; App or Site required
	// Description:
	//   Site where the impression will be shown
	Site *openrtb2.Site `json:"site"`

	// Attribute:
	//   user
	// Type:
	//   object; optional
	// Description:
	//   Container object for the user of of the actual device
	User *openrtb2.User `json:"user,omitempty"`

	// Attribute:
	//   device
	// Type:
	//   object; optional
	// Description:
	//   Device specific data
	Device openrtb2.Device `json:"device,omitempty"`

	// Attribute:
	//   includebrandcategory
	// Type:
	//   object; optional
	// Description:
	//   Indicates that the response requires an adserver specific content category
	IncludeBrandCategory *IncludeBrandCategory `json:"includebrandcategory,omitempty"`

	// Attribute:
	//   video
	// Type:
	//   object; required
	// Description:
	//   Player container object
	Video *openrtb2.Video `json:"video,omitempty"`

	// Attribute:
	//   content
	// Type:
	//   object; optional
	// Description:
	//  Misc content meta data that can be used for targeting the adPod(s)
	Content openrtb2.Content `json:"content,omitempty"`

	// Attribute:
	//   cacheconfig
	// Type:
	//   object; optional
	// Description:
	//  Container object for all Prebid Cache configs
	Cacheconfig Cacheconfig `json:"cacheconfig,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:
	//   pricegranularity
	// Type:
	//   object; optional
	// Description:
	//    Object to tell ad server how much money the “bidder” demand is worth to you
	PriceGranularity PriceGranularity `json:"pricegranularity,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:
	//   bcat
	// Type:
	//   string array
	// Description:
	//   Blocked advertiser categories using the IAB content
	//   categories. Refer to List 5.1.
	BCat []string `json:"bcat,omitempty"`

	// Attribute:
	//   badv
	// Type:
	//   string array
	// Description:
	//   Block list of advertisers by their domains (e.g., “ford.com”).
	BAdv []string `json:"badv,omitempty"`

	// Attribute:
	//   regs
	// Type:
	//   object; optional
	// Description:
	//   Contains the OpenRTB Regs object to be passed to OpenRTB request
	Regs *openrtb2.Regs `json:"regs,omitempty"`

	// Attribute:
	//   supportdeals
	// Type:
	//   bool; optional
	// Description:
	//   Indicates that the response should update key to include prefix and tier
	SupportDeals bool `json:"supportdeals,omitempty"`

	// Attribute:
	//   appendbiddernames
	// Type:
	//   boolean, optional
	//  Flag indicating if the bidder name will be added to the hb_pb_cat_dur. Default is false.
	AppendBidderNames bool `json:"appendbiddernames,omitempty"`
}

type BidResponseVideo

type BidResponseVideo struct {
	AdPods []*AdPod        `json:"adPods"`
	Ext    json.RawMessage `json:"ext,omitempty"`
}

type BidType

type BidType string

BidType describes the allowed values for bidresponse.seatbid.bid[i].ext.prebid.type

const (
	BidTypeBanner BidType = "banner"
	BidTypeVideo  BidType = "video"
	BidTypeAudio  BidType = "audio"
	BidTypeNative BidType = "native"
)

func BidTypes

func BidTypes() []BidType

func ParseBidType

func ParseBidType(bidType string) (BidType, error)

type BidderConfig added in v0.183.0

type BidderConfig struct {
	Bidders []string `json:"bidders,omitempty"`
	Config  *Config  `json:"config,omitempty"`
}

type BidderName

type BidderName string

BidderName refers to a core bidder id or an alias id.

const (
	BidderReservedAll     BidderName = "all"     // Reserved for the /info/bidders/all endpoint.
	BidderReservedContext BidderName = "context" // Reserved for first party data.
	BidderReservedData    BidderName = "data"    // Reserved for first party data.
	BidderReservedGeneral BidderName = "general" // Reserved for non-bidder specific messages when using a map keyed on the bidder name.
	BidderReservedGPID    BidderName = "gpid"    // Reserved for Global Placement ID (GPID).
	BidderReservedPrebid  BidderName = "prebid"  // Reserved for Prebid Server configuration.
	BidderReservedSKAdN   BidderName = "skadn"   // Reserved for Apple's SKAdNetwork OpenRTB extension.
)

Names of reserved bidders. These names may not be used by a core bidder or alias.

const (
	Bidder33Across          BidderName = "33across"
	BidderAax               BidderName = "aax"
	BidderAceex             BidderName = "aceex"
	BidderAcuityAds         BidderName = "acuityads"
	BidderAdf               BidderName = "adf"
	BidderAdform            BidderName = "adform"
	BidderAdgeneration      BidderName = "adgeneration"
	BidderAdhese            BidderName = "adhese"
	BidderAdkernel          BidderName = "adkernel"
	BidderAdkernelAdn       BidderName = "adkernelAdn"
	BidderAdman             BidderName = "adman"
	BidderAdmixer           BidderName = "admixer"
	BidderAdnuntius         BidderName = "adnuntius"
	BidderAdOcean           BidderName = "adocean"
	BidderAdoppler          BidderName = "adoppler"
	BidderAdot              BidderName = "adot"
	BidderAdpone            BidderName = "adpone"
	BidderAdprime           BidderName = "adprime"
	BidderAdtarget          BidderName = "adtarget"
	BidderAdtelligent       BidderName = "adtelligent"
	BidderAdvangelists      BidderName = "advangelists"
	BidderAdView            BidderName = "adview"
	BidderAdxcg             BidderName = "adxcg"
	BidderAdyoulike         BidderName = "adyoulike"
	BidderAJA               BidderName = "aja"
	BidderAlgorix           BidderName = "algorix"
	BidderAMX               BidderName = "amx"
	BidderApacdex           BidderName = "apacdex"
	BidderApplogy           BidderName = "applogy"
	BidderAppnexus          BidderName = "appnexus"
	BidderAudienceNetwork   BidderName = "audienceNetwork"
	BidderAutomatad         BidderName = "automatad"
	BidderAvocet            BidderName = "avocet"
	BidderAxonix            BidderName = "axonix"
	BidderBeachfront        BidderName = "beachfront"
	BidderBeintoo           BidderName = "beintoo"
	BidderBetween           BidderName = "between"
	BidderBidmachine        BidderName = "bidmachine"
	BidderBidmyadz          BidderName = "bidmyadz"
	BidderBidsCube          BidderName = "bidscube"
	BidderBizzclick         BidderName = "bizzclick"
	BidderBliink            BidderName = "bliink"
	BidderBmtm              BidderName = "bmtm"
	BidderBrightroll        BidderName = "brightroll"
	BidderCoinzilla         BidderName = "coinzilla"
	BidderColossus          BidderName = "colossus"
	BidderCompass           BidderName = "compass"
	BidderConnectAd         BidderName = "connectad"
	BidderConsumable        BidderName = "consumable"
	BidderConversant        BidderName = "conversant"
	BidderCpmstar           BidderName = "cpmstar"
	BidderCriteo            BidderName = "criteo"
	BidderDatablocks        BidderName = "datablocks"
	BidderDmx               BidderName = "dmx"
	BidderDecenterAds       BidderName = "decenterads"
	BidderDeepintent        BidderName = "deepintent"
	BidderEmxDigital        BidderName = "emx_digital"
	BidderEngageBDR         BidderName = "engagebdr"
	BidderEPlanning         BidderName = "eplanning"
	BidderEpom              BidderName = "epom"
	BidderEVolution         BidderName = "e_volution"
	BidderGamma             BidderName = "gamma"
	BidderGamoshi           BidderName = "gamoshi"
	BidderGrid              BidderName = "grid"
	BidderGroupm            BidderName = "groupm"
	BidderGumGum            BidderName = "gumgum"
	BidderHuaweiAds         BidderName = "huaweiads"
	BidderImpactify         BidderName = "impactify"
	BidderImprovedigital    BidderName = "improvedigital"
	BidderInMobi            BidderName = "inmobi"
	BidderInteractiveoffers BidderName = "interactiveoffers"
	BidderInvibes           BidderName = "invibes"
	BidderIQZone            BidderName = "iqzone"
	BidderIx                BidderName = "ix"
	BidderJANet             BidderName = "janet"
	BidderJixie             BidderName = "jixie"
	BidderKayzen            BidderName = "kayzen"
	BidderKidoz             BidderName = "kidoz"
	BidderKrushmedia        BidderName = "krushmedia"
	BidderKubient           BidderName = "kubient"
	BidderLockerDome        BidderName = "lockerdome"
	BidderLogicad           BidderName = "logicad"
	BidderLunaMedia         BidderName = "lunamedia"
	BidderSaLunaMedia       BidderName = "sa_lunamedia"
	BidderMadvertise        BidderName = "madvertise"
	BidderMarsmedia         BidderName = "marsmedia"
	BidderMediafuse         BidderName = "mediafuse"
	BidderMgid              BidderName = "mgid"
	BidderMobfoxpb          BidderName = "mobfoxpb"
	BidderMobileFuse        BidderName = "mobilefuse"
	BidderMedianet          BidderName = "medianet"
	BidderNanoInteractive   BidderName = "nanointeractive"
	BidderNextMillennium    BidderName = "nextmillennium"
	BidderNinthDecimal      BidderName = "ninthdecimal"
	BidderNoBid             BidderName = "nobid"
	BidderOneTag            BidderName = "onetag"
	BidderOpenWeb           BidderName = "openweb"
	BidderOpenx             BidderName = "openx"
	BidderOperaads          BidderName = "operaads"
	BidderOrbidder          BidderName = "orbidder"
	BidderOutbrain          BidderName = "outbrain"
	BidderPangle            BidderName = "pangle"
	BidderPGAM              BidderName = "pgam"
	BidderPubmatic          BidderName = "pubmatic"
	BidderPubnative         BidderName = "pubnative"
	BidderPulsepoint        BidderName = "pulsepoint"
	BidderQuantumdex        BidderName = "quantumdex"
	BidderRevcontent        BidderName = "revcontent"
	BidderRhythmone         BidderName = "rhythmone"
	BidderRichaudience      BidderName = "richaudience"
	BidderRTBHouse          BidderName = "rtbhouse"
	BidderRubicon           BidderName = "rubicon"
	BidderSharethrough      BidderName = "sharethrough"
	BidderSilverMob         BidderName = "silvermob"
	BidderSmaato            BidderName = "smaato"
	BidderSmartAdserver     BidderName = "smartadserver"
	BidderSmartHub          BidderName = "smarthub"
	BidderSmartRTB          BidderName = "smartrtb"
	BidderSmartyAds         BidderName = "smartyads"
	BidderSmileWanted       BidderName = "smilewanted"
	BidderSonobi            BidderName = "sonobi"
	BidderSovrn             BidderName = "sovrn"
	BidderStreamkey         BidderName = "streamkey"
	BidderStroeerCore       BidderName = "stroeerCore"
	BidderSynacormedia      BidderName = "synacormedia"
	BidderTappx             BidderName = "tappx"
	BidderTelaria           BidderName = "telaria"
	BidderTrafficGate       BidderName = "trafficgate"
	BidderTriplelift        BidderName = "triplelift"
	BidderTripleliftNative  BidderName = "triplelift_native"
	BidderTrustX            BidderName = "trustx"
	BidderUcfunnel          BidderName = "ucfunnel"
	BidderUnicorn           BidderName = "unicorn"
	BidderUnruly            BidderName = "unruly"
	BidderValueImpression   BidderName = "valueimpression"
	BidderVerizonMedia      BidderName = "verizonmedia"
	BidderVideoByte         BidderName = "videobyte"
	BidderVidoomy           BidderName = "vidoomy"
	BidderVisx              BidderName = "visx"
	BidderViewdeos          BidderName = "viewdeos"
	BidderVrtcal            BidderName = "vrtcal"
	BidderYahooSSP          BidderName = "yahoossp"
	BidderYeahmobi          BidderName = "yeahmobi"
	BidderYieldlab          BidderName = "yieldlab"
	BidderYieldmo           BidderName = "yieldmo"
	BidderYieldone          BidderName = "yieldone"
	BidderYSSP              BidderName = "yssp"
	BidderZeroClickFraud    BidderName = "zeroclickfraud"
)

Names of core bidders. These names *must* match the bidder code in Prebid.js if an adapter also exists in that project. You may *not* use the name 'general' as that is reserved for general error messages nor 'context' as that is reserved for first party data.

Please keep this list alphabetized to minimize merge conflicts.

func CoreBidderNames

func CoreBidderNames() []BidderName

CoreBidderNames returns a slice of all core bidders.

func NormalizeBidderName

func NormalizeBidderName(name string) (BidderName, bool)

func (BidderName) MarshalJSON

func (name BidderName) MarshalJSON() ([]byte, error)

func (*BidderName) String

func (name *BidderName) String() string

type BidderParamValidator

type BidderParamValidator interface {
	Validate(name BidderName, ext json.RawMessage) error
	// Schema returns the JSON schema used to perform validation.
	Schema(name BidderName) string
}

The BidderParamValidator is used to enforce bidrequest.imp[i].ext.{anyBidder} values.

This is treated differently from the other types because we rely on JSON-schemas to validate bidder params.

func NewBidderParamsValidator

func NewBidderParamsValidator(schemaDirectory string) (BidderParamValidator, error)

NewBidderParamsValidator makes a BidderParamValidator, assuming all the necessary files exist in the filesystem. This will error if, for example, a Bidder gets added but no JSON schema is written for them.

type Cacheconfig

type Cacheconfig struct {
	// Attribute:
	//   ttl
	// Type:
	//   int; optional
	//  Time to Live for a cache entry specified in seconds
	Ttl int `json:"ttl"`
}

type Config added in v0.183.0

type Config struct {
	ORTB2 *ORTB2 `json:"ortb2,omitempty"`
}

type CookieStatus

type CookieStatus string

CookieStatus describes the allowed values for bidresponse.ext.usersync.{bidder}.status

const (
	CookieNone      CookieStatus = "none"
	CookieExpired   CookieStatus = "expired"
	CookieAvailable CookieStatus = "available"
)

type DealTier

type DealTier struct {
	// Prefix specifies the beginning of the hb_pb_cat_dur targeting key value. Must be non-empty.
	Prefix string `json:"prefix"`

	// MinDealTier specifies the minimum deal priority value (inclusive) that must be met for the targeting
	// key value to be modified. Must be greater than 0.
	MinDealTier int `json:"minDealTier"`
}

DealTier defines the configuration of a deal tier.

type DealTierBidderMap

type DealTierBidderMap map[BidderName]DealTier

DealTierBidderMap defines a correlation between bidders and deal tiers.

func ReadDealTiersFromImp

func ReadDealTiersFromImp(imp openrtb2.Imp) (DealTierBidderMap, error)

ReadDealTiersFromImp returns a map of bidder deal tiers read from the impression of an original request (not split / cleaned).

type DeviceExt added in v0.169.0

type DeviceExt struct {
	// contains filtered or unexported fields
}

func (*DeviceExt) Dirty added in v0.169.0

func (de *DeviceExt) Dirty() bool

func (*DeviceExt) GetExt added in v0.169.0

func (de *DeviceExt) GetExt() map[string]json.RawMessage

func (*DeviceExt) GetPrebid added in v0.169.0

func (de *DeviceExt) GetPrebid() *ExtDevicePrebid

func (*DeviceExt) SetExt added in v0.169.0

func (de *DeviceExt) SetExt(ext map[string]json.RawMessage)

func (*DeviceExt) SetPrebid added in v0.169.0

func (de *DeviceExt) SetPrebid(prebid *ExtDevicePrebid)

type ExtAceex added in v0.175.0

type ExtAceex struct {
	AccountID string `json:"accountid"`
}

type ExtAcuityAds

type ExtAcuityAds struct {
	Host      string `json:"host"`
	AccountID string `json:"accountid"`
}

type ExtAdpone

type ExtAdpone struct {
	PlacementId string `json:"placementId,omitempty"`
}

type ExtApp

type ExtApp struct {
	Prebid ExtAppPrebid `json:"prebid"`
}

ExtApp defines the contract for bidrequest.app.ext

type ExtAppPrebid

type ExtAppPrebid struct {
	Source  string `json:"source"`
	Version string `json:"version"`
}

ExtAppPrebid further defines the contract for bidrequest.app.ext.prebid. We are only enforcing that these two properties be strings if they are provided. They are optional with no current constraints on value, so we don't need a custom UnmarshalJSON() method at this time.

type ExtBid

type ExtBid struct {
	Prebid *ExtBidPrebid `json:"prebid,omitempty"`
}

ExtBid defines the contract for bidresponse.seatbid.bid[i].ext

type ExtBidPrebid

type ExtBidPrebid struct {
	Cache             *ExtBidPrebidCache  `json:"cache,omitempty"`
	DealPriority      int                 `json:"dealpriority,omitempty"`
	DealTierSatisfied bool                `json:"dealtiersatisfied,omitempty"`
	Meta              *ExtBidPrebidMeta   `json:"meta,omitempty"`
	Targeting         map[string]string   `json:"targeting,omitempty"`
	Type              BidType             `json:"type"`
	Video             *ExtBidPrebidVideo  `json:"video,omitempty"`
	Events            *ExtBidPrebidEvents `json:"events,omitempty"`
	BidId             string              `json:"bidid,omitempty"`
}

ExtBidPrebid defines the contract for bidresponse.seatbid.bid[i].ext.prebid DealPriority represents priority of deal bid. If its non deal bid then value will be 0 DealTierSatisfied true represents corresponding bid has satisfied the deal tier

type ExtBidPrebidCache

type ExtBidPrebidCache struct {
	Key  string                 `json:"key"`
	Url  string                 `json:"url"`
	Bids *ExtBidPrebidCacheBids `json:"bids,omitempty"`
}

ExtBidPrebidCache defines the contract for bidresponse.seatbid.bid[i].ext.prebid.cache

type ExtBidPrebidCacheBids

type ExtBidPrebidCacheBids struct {
	Url     string `json:"url"`
	CacheId string `json:"cacheId"`
}

type ExtBidPrebidEvents

type ExtBidPrebidEvents struct {
	Win string `json:"win,omitempty"`
	Imp string `json:"imp,omitempty"`
}

ExtBidPrebidEvents defines the contract for bidresponse.seatbid.bid[i].ext.prebid.events

type ExtBidPrebidMeta

type ExtBidPrebidMeta struct {
	AdvertiserDomains    []string        `json:"advertiserDomains,omitempty"`
	AdvertiserID         int             `json:"advertiserId,omitempty"`
	AdvertiserName       string          `json:"advertiserName,omitempty"`
	AgencyID             int             `json:"agencyId,omitempty"`
	AgencyName           string          `json:"agencyName,omitempty"`
	BrandID              int             `json:"brandId,omitempty"`
	BrandName            string          `json:"brandName,omitempty"`
	DemandSource         string          `json:"demandSource,omitempty"`
	DChain               json.RawMessage `json:"dchain,omitempty"`
	MediaType            string          `json:"mediaType,omitempty"`
	NetworkID            int             `json:"networkId,omitempty"`
	NetworkName          string          `json:"networkName,omitempty"`
	PrimaryCategoryID    string          `json:"primaryCatId,omitempty"`
	SecondaryCategoryIDs []string        `json:"secondaryCatIds,omitempty"`
	AdapterCode          string          `json:"adaptercode,omitempty"`
}

ExtBidPrebidMeta defines the contract for bidresponse.seatbid.bid[i].ext.prebid.meta

type ExtBidPrebidVideo

type ExtBidPrebidVideo struct {
	Duration        int    `json:"duration"`
	PrimaryCategory string `json:"primary_category"`
}

ExtBidPrebidVideo defines the contract for bidresponse.seatbid.bid[i].ext.prebid.video

type ExtBidResponse

type ExtBidResponse struct {
	Debug *ExtResponseDebug `json:"debug,omitempty"`
	// Errors defines the contract for bidresponse.ext.errors
	Errors   map[BidderName][]ExtBidderMessage `json:"errors,omitempty"`
	Warnings map[BidderName][]ExtBidderMessage `json:"warnings,omitempty"`
	// ResponseTimeMillis defines the contract for bidresponse.ext.responsetimemillis
	ResponseTimeMillis map[BidderName]int `json:"responsetimemillis,omitempty"`
	// RequestTimeoutMillis returns the timeout used in the auction.
	// This is useful if the timeout is saved in the Stored Request on the server.
	// Clients can run one auction, and then use this to set better connection timeouts on future auction requests.
	RequestTimeoutMillis int64 `json:"tmaxrequest,omitempty"`
	// ResponseUserSync defines the contract for bidresponse.ext.usersync
	Usersync map[BidderName]*ExtResponseSyncData `json:"usersync,omitempty"`
	// Prebid defines the contract for bidresponse.ext.prebid
	Prebid *ExtResponsePrebid `json:"prebid,omitempty"`
}

ExtBidResponse defines the contract for bidresponse.ext

type ExtBidderMessage

type ExtBidderMessage struct {
	Code    int    `json:"code"`
	Message string `json:"message"`
}

ExtBidderMessage defines an error object to be returned, consiting of a machine readable error code, and a human readable error message string.

type ExtBizzclick added in v0.187.0

type ExtBizzclick struct {
	AccountID   string `json:"accountId"`
	PlacementID string `json:"placementId"`
}

type ExtDevice

type ExtDevice struct {
	// Attribute:
	//   atts
	// Type:
	//   integer; optional - iOS Only
	// Description:
	//   iOS app tracking authorization status.
	// Extension Spec:
	//   https://github.com/InteractiveAdvertisingBureau/openrtb/blob/master/extensions/community_extensions/skadnetwork.md
	ATTS *IOSAppTrackingStatus `json:"atts"`

	// Attribute:
	//   prebid
	// Type:
	//   object; optional
	// Description:
	//   Prebid extensions for the Device object.
	Prebid ExtDevicePrebid `json:"prebid"`
}

ExtDevice defines the contract for bidrequest.device.ext

type ExtDeviceInt

type ExtDeviceInt struct {
	MinWidthPerc  int64 `json:"minwidtheperc"`
	MinHeightPerc int64 `json:"minheightperc"`
}

ExtDeviceInt defines the contract for bidrequest.device.ext.prebid.interstitial

func (*ExtDeviceInt) UnmarshalJSON

func (edi *ExtDeviceInt) UnmarshalJSON(b []byte) error

type ExtDevicePrebid

type ExtDevicePrebid struct {
	Interstitial *ExtDeviceInt `json:"interstitial"`
}

ExtDevicePrebid defines the contract for bidrequest.device.ext.prebid

type ExtHttpCall

type ExtHttpCall struct {
	Uri            string              `json:"uri"`
	RequestBody    string              `json:"requestbody"`
	RequestHeaders map[string][]string `json:"requestheaders"`
	ResponseBody   string              `json:"responsebody"`
	Status         int                 `json:"status"`
}

ExtHttpCall defines the contract for a bidresponse.ext.debug.httpcalls.{bidder}[i]

type ExtImp33across

type ExtImp33across struct {
	SiteId    string `json:"siteId"`
	ZoneId    string `json:"zoneId,omitempty"`
	ProductId string `json:"productId,omitempty"`
}

ExtImp33across defines the contract for bidrequest.imp[i].ext.33across

type ExtImpAJA

type ExtImpAJA struct {
	AdSpotID string `json:"asi"`
}

type ExtImpAMX

type ExtImpAMX struct {
	TagID    string `json:"tagId,omitempty"`
	AdUnitID string `json:"adUnitId,omitempty"`
}

ExtImpAMX is the imp.ext format for the AMX bidder

type ExtImpAax added in v0.208.0

type ExtImpAax struct {
	Cid  string `json:"cid"`
	Crid string `json:"crid"`
}

type ExtImpAdOcean

type ExtImpAdOcean struct {
	EmitterDomain string `json:"emiter"`
	MasterID      string `json:"masterId"`
	SlaveID       string `json:"slaveId"`
}

type ExtImpAdView added in v0.176.0

type ExtImpAdView struct {
	MasterTagID string `json:"placementId"`
	AccountID   string `json:"accountId"`
}

type ExtImpAdf

type ExtImpAdf struct {
	MasterTagID       json.Number `json:"mid,omitempty"`
	InventorySourceID int         `json:"inv,omitempty"`
	PlacementName     string      `json:"mname,omitempty"`
	PriceType         string      `json:"priceType,omitempty"`
}

type ExtImpAdgeneration

type ExtImpAdgeneration struct {
	Id string `json:"id"`
}

type ExtImpAdhese

type ExtImpAdhese struct {
	Account  string          `json:"account"`
	Location string          `json:"location"`
	Format   string          `json:"format"`
	Keywords json.RawMessage `json:"targets,omitempty"`
}

type ExtImpAdkernel

type ExtImpAdkernel struct {
	ZoneId int `json:"zoneId"`
}

ExtImpAdkernel defines the contract for bidrequest.imp[i].ext.adkernel

type ExtImpAdkernelAdn

type ExtImpAdkernelAdn struct {
	PublisherID int `json:"pubId"`
}

ExtImpAdkernelAdn defines the contract for bidrequest.imp[i].ext.adkernelAdn

type ExtImpAdman

type ExtImpAdman struct {
	TagID string `json:"TagID"`
}

ExtImpAdman defines adman specifiec param

type ExtImpAdmixer

type ExtImpAdmixer struct {
	ZoneId         string                 `json:"zone"`
	CustomBidFloor float64                `json:"customFloor"`
	CustomParams   map[string]interface{} `json:"customParams"`
}

type ExtImpAdoppler

type ExtImpAdoppler struct {
	Client string `json:"client"`
	AdUnit string `json:"adunit"`
}

type ExtImpAdot

type ExtImpAdot struct {
	Parallax      bool   `json:"parallax,omitempty"`
	PlacementId   string `json:"placementId,omitempty"`
	PublisherPath string `json:"publisherPath,omitempty"`
}

type ExtImpAdprime

type ExtImpAdprime struct {
	TagID     string   `json:"TagID"`
	Keywords  []string `json:"keywords"`
	Audiences []string `json:"audiences"`
}

ExtImpAdprime defines adprime specifiec param

type ExtImpAdtarget

type ExtImpAdtarget struct {
	SourceId    int     `json:"aid"`
	PlacementId int     `json:"placementId,omitempty"`
	SiteId      int     `json:"siteId,omitempty"`
	BidFloor    float64 `json:"bidFloor,omitempty"`
}

ExtImpAdtarget defines the contract for bidrequest.imp[i].ext.adtarget

type ExtImpAdtelligent

type ExtImpAdtelligent struct {
	SourceId    int     `json:"aid"`
	PlacementId int     `json:"placementId,omitempty"`
	SiteId      int     `json:"siteId,omitempty"`
	BidFloor    float64 `json:"bidFloor,omitempty"`
}

ExtImpAdtelligent defines the contract for bidrequest.imp[i].ext.adtelligent

type ExtImpAdvangelists

type ExtImpAdvangelists struct {
	PublisherID string `json:"pubid"`
	Placement   string `json:"placement,omitempty"`
}

type ExtImpAdyoulike

type ExtImpAdyoulike struct {
	// placementId, only mandatory field
	PlacementId string `json:"placement"`

	// Id of the forced campaign
	Campaign string `json:"campaign"`
	// Id of the forced track
	Track string `json:"track"`
	// Id of the forced creative
	Creative string `json:"creative"`
	// Context of the campaign values [SSP|AdServer]
	Source string `json:"source"`
	// Abitrary Id used for debug purpose
	Debug string `json:"debug"`
}

ExtImpAdyoulike defines the contract for bidrequest.imp[i].ext.adyoulike

type ExtImpAlgorix added in v0.163.0

type ExtImpAlgorix struct {
	Sid         string `json:"sid"`
	Token       string `json:"token"`
	PlacementId string `json:"placementId"`
	AppId       string `json:"appId"`
	Region      string `json:"region"`
}

ExtImpAlgoriX defines the contract for bidrequest.imp[i].ext.algorix

type ExtImpApacdex added in v0.188.0

type ExtImpApacdex struct {
	PlacementID string  `json:"placementId"`
	SiteID      string  `json:"siteId"`
	FloorPrice  float64 `json:"floorPrice"`
}

type ExtImpApplogy

type ExtImpApplogy struct {
	Token string `json:"token"`
}

type ExtImpAppnexus

type ExtImpAppnexus struct {
	LegacyPlacementId       int                     `json:"placementId"`
	LegacyInvCode           string                  `json:"invCode"`
	LegacyTrafficSourceCode string                  `json:"trafficSourceCode"`
	PlacementId             int                     `json:"placement_id"`
	InvCode                 string                  `json:"inv_code"`
	Member                  string                  `json:"member"`
	Keywords                []*ExtImpAppnexusKeyVal `json:"keywords"`
	TrafficSourceCode       string                  `json:"traffic_source_code"`
	Reserve                 float64                 `json:"reserve"`
	Position                string                  `json:"position"`
	UsePmtRule              *bool                   `json:"use_pmt_rule"`
	// At this time we do no processing on the private sizes, so just leaving it as a JSON blob.
	PrivateSizes json.RawMessage `json:"private_sizes"`
	AdPodId      bool            `json:"generate_ad_pod_id"`
}

ExtImpAppnexus defines the contract for bidrequest.imp[i].ext.appnexus

type ExtImpAppnexusKeyVal

type ExtImpAppnexusKeyVal struct {
	Key    string   `json:"key,omitempty"`
	Values []string `json:"value,omitempty"`
}

ExtImpAppnexusKeyVal defines the contract for bidrequest.imp[i].ext.appnexus.keywords[i]

type ExtImpAvocet

type ExtImpAvocet struct {
	Placement     string `json:"placement,omitempty"`
	PlacementCode string `json:"placement_code,omitempty"`
}

ExtImpAvocet defines the contract for bidrequest.imp[i].ext.avocet

type ExtImpAxonix added in v0.167.0

type ExtImpAxonix struct {
	SupplyId string `json:"supplyId"`
}

type ExtImpBeachfront

type ExtImpBeachfront struct {
	AppId             string                 `json:"appId"`
	AppIds            ExtImpBeachfrontAppIds `json:"appIds"`
	BidFloor          float64                `json:"bidfloor"`
	VideoResponseType string                 `json:"videoResponseType,omitempty"`
}

type ExtImpBeachfrontAppIds

type ExtImpBeachfrontAppIds struct {
	Video  string `json:"video,omitempty"`
	Banner string `json:"banner,omitempty"`
}

type ExtImpBeintoo

type ExtImpBeintoo struct {
	TagID    string `json:"tagid"`
	BidFloor string `json:"bidfloor,omitempty"`
}

type ExtImpBetween

type ExtImpBetween struct {
	Host        string `json:"host"`
	PublisherID string `json:"publisher_id"`
}

type ExtImpBidmachine

type ExtImpBidmachine struct {
	Host     string `json:"host"`
	Path     string `json:"path"`
	SellerID string `json:"seller_id"`
}

type ExtImpBidsCube

type ExtImpBidsCube struct {
	PlacementID string `json:"placementId"`
}

type ExtImpBrightroll

type ExtImpBrightroll struct {
	Publisher string `json:"publisher"`
}

ExtImpBrightroll defines the contract for bidrequest.imp[i].ext.brightroll

type ExtImpColossus

type ExtImpColossus struct {
	TagID string `json:"TagID"`
}

ExtImpColossus defines colossus specifiec param

type ExtImpConnectAd

type ExtImpConnectAd struct {
	NetworkID int     `json:"networkId"`
	SiteID    int     `json:"siteId"`
	Bidfloor  float64 `json:"bidfloor,omitempty"`
}

type ExtImpConsumable

type ExtImpConsumable struct {
	NetworkId int `json:"networkId,omitempty"`
	SiteId    int `json:"siteId,omitempty"`
	UnitId    int `json:"unitId,omitempty"`
	/* UnitName gets used as a classname and in the URL when building the ad markup */
	UnitName string `json:"unitName,omitempty"`
}

ExtImpConsumable defines the contract for bidrequest.imp[i].ext.consumable

type ExtImpConversant

type ExtImpConversant struct {
	SiteID      string   `json:"site_id"`
	Secure      *int8    `json:"secure"`
	TagID       string   `json:"tag_id"`
	Position    *int8    `json:"position"`
	BidFloor    float64  `json:"bidfloor"`
	MIMEs       []string `json:"mimes"`
	API         []int8   `json:"api"`
	Protocols   []int8   `json:"protocols"`
	MaxDuration *int64   `json:"maxduration"`
}

type ExtImpCpmstar

type ExtImpCpmstar struct {
	PoolId    int `json:"placementId"`
	SubPoolId int `json:"subpoolId,omitempty"`
}

type ExtImpCriteo

type ExtImpCriteo struct {
	ZoneID    int64 `json:"zoneId"`
	NetworkID int64 `json:"networkId"`
}

ExtImpCriteo defines the contract for bidrequest.imp[i].ext.criteo

type ExtImpDatablocks

type ExtImpDatablocks struct {
	SourceId int    `json:"sourceId"`
	Host     string `json:"host"`
}

ExtImpDatablocks defines the contract for bidrequest.imp[i].ext.datablocks

type ExtImpDecenterAds

type ExtImpDecenterAds struct {
	PlacementID string `json:"placementId"`
}

type ExtImpDeepintent

type ExtImpDeepintent struct {
	TagID string `json:tagId`
}

type ExtImpEPlanning

type ExtImpEPlanning struct {
	ClientID   string `json:"ci"`
	AdUnitCode string `json:"adunit_code"`
	SizeString string
}

ExtImpEPlanning defines the contract for bidrequest.imp[i].ext.eplanning

type ExtImpEmxDigital

type ExtImpEmxDigital struct {
	TagID    string `json:"tagid"`
	BidFloor string `json:"bidfloor,omitempty"`
}

type ExtImpEngageBDR

type ExtImpEngageBDR struct {
	Sspid string `json:"sspid"`
}

ExtImpEngageBDR defines the contract for bidrequest.imp[i].ext.engagebdr

type ExtImpFacebook

type ExtImpFacebook struct {
	PlacementId string `json:"placementId"`
	PublisherId string `json:"publisherId"`
}

type ExtImpGamma

type ExtImpGamma struct {
	PartnerID string `json:"id"`
	ZoneID    string `json:"zid"`
	WebID     string `json:"wid"`
}

ExtImpGamma defines the contract for bidrequest.imp[i].ext.gamma

type ExtImpGamoshi

type ExtImpGamoshi struct {
	SupplyPartnerId  string `json:"supplyPartnerId"`
	FavoredMediaType string `json:"favoredMediaType"`
}

ExtImpGamoshi defines the contract for bidrequest.imp[i].ext.gamoshi

type ExtImpGrid

type ExtImpGrid struct {
	Uid      int             `json:"uid"`
	Keywords json.RawMessage `json:"keywords,omitempty"`
}

ExtImpGrid defines the contract for bidrequest.imp[i].ext.grid

type ExtImpGumGum

type ExtImpGumGum struct {
	Zone   string  `json:"zone,omitempty"`
	PubID  float64 `json:"pubId,omitempty"`
	IrisID string  `json:"irisid,omitempty"`
	Slot   float64 `json:"slot,omitempty"`
}

ExtImpGumGum defines the contract for bidrequest.imp[i].ext.gumgum Either Zone or PubId must be present, others are optional parameters

type ExtImpGumGumBanner added in v0.172.0

type ExtImpGumGumBanner struct {
	Si   float64 `json:"si,omitempty"`
	MaxW float64 `json:"maxw,omitempty"`
	MaxH float64 `json:"maxh,omitempty"`
}

ExtImpGumGumBanner defines the contract for bidresponse.seatbid.bid[i].ext.gumgum.banner

type ExtImpGumGumVideo

type ExtImpGumGumVideo struct {
	IrisID string `json:"irisid,omitempty"`
}

ExtImpGumGumVideo defines the contract for bidresponse.seatbid.bid[i].ext.gumgum.video

type ExtImpHuaweiAds added in v0.174.0

type ExtImpHuaweiAds struct {
	SlotId              string `json:"slotid"`
	Adtype              string `json:"adtype"`
	PublisherId         string `json:"publisherid"`
	SignKey             string `json:"signkey"`
	KeyId               string `json:"keyid"`
	IsTestAuthorization string `json:"isTestAuthorization,omitempty"`
}

type ExtImpImpactify added in v0.180.0

type ExtImpImpactify struct {
	AppID  string `json:"appId"`
	Format string `json:"format"`
	Style  string `json:"style"`
}

ExtImpImpactify defines the contract for bidrequest.imp[i].ext.impactify

type ExtImpInMobi

type ExtImpInMobi struct {
	Plc string `json:"plc"`
}

type ExtImpInteractiveoffers

type ExtImpInteractiveoffers struct {
	PartnerId string `json:"partnerId"`
}

type ExtImpInvibes

type ExtImpInvibes struct {
	PlacementID string             `json:"placementId,omitempty"`
	DomainID    int                `json:"domainId"`
	Debug       ExtImpInvibesDebug `json:"debug,omitempty"`
}

type ExtImpInvibesDebug

type ExtImpInvibesDebug struct {
	TestBvid string `json:"testBvid,omitempty"`
	TestLog  bool   `json:"testLog,omitempty"`
}

type ExtImpIx

type ExtImpIx struct {
	SiteId string `json:"siteId"`
	Size   []int  `json:"size"`
}

ExtImpIx defines the contract for bidrequest.imp[i].ext.ix

type ExtImpJixie

type ExtImpJixie struct {
	Unit      string `json:"unit"`
	AccountId string `json:"accountid,omitempty"`
	JxProp1   string `json:"jxprop1,omitempty"`
	JxProp2   string `json:"jxprop2,omitempty"`
}

type ExtImpKidoz

type ExtImpKidoz struct {
	AccessToken string `json:"access_token"`
	PublisherID string `json:"publisher_id"`
}

type ExtImpKubient

type ExtImpKubient struct {
	ZoneID string `json:"zoneid"`
}

ExtImpKubient defines the contract for bidrequest.imp[i].ext.kubient

type ExtImpLockerDome

type ExtImpLockerDome struct {
	// LockerDome params
	AdUnitId string `json:"adUnitId"`
}

ExtImpLockerDome defines the contract for bidrequest.imp[i].ext.lockerdome

type ExtImpLogicad

type ExtImpLogicad struct {
	Tid string `json:"tid"`
}

type ExtImpLunaMedia

type ExtImpLunaMedia struct {
	PublisherID string `json:"pubid"`
	Placement   string `json:"placement,omitempty"`
}

type ExtImpMadvertise

type ExtImpMadvertise struct {
	ZoneID string `json:"zoneId"`
}

ExtImpMadvertise defines the contract for bidrequest.imp[i].ext.madvertise

type ExtImpMarsmedia

type ExtImpMarsmedia struct {
	ZoneID json.Number `json:"zoneId"`
}

ExtImpMarsmedia defines the contract for bidrequest.imp[i].ext.marsmedia

type ExtImpMedianet added in v0.195.0

type ExtImpMedianet struct {
	Cid  string `json:"cid"`
	Crid string `json:"crid"`
}

type ExtImpMgid

type ExtImpMgid struct {
	AccountId   string  `json:"accountId"`
	PlacementId string  `json:"placementId,omitempty"`
	Cur         string  `json:"cur"`
	Currency    string  `json:"currency"`
	BidFloor    float64 `json:"bidfloor"`
	BidFloor2   float64 `json:"bidFloor"`
}

ExtImpMgid defines the contract for bidrequest.imp[i].ext.mgid

type ExtImpMobileFuse

type ExtImpMobileFuse struct {
	PlacementId int    `json:"placement_id"`
	PublisherId int    `json:"pub_id"`
	TagidSrc    string `json:"tagid_src"`
}

ExtImpMobileFuse defines the contract for bidrequest.imp[i].ext.mobilefuse

type ExtImpNanoInteractive

type ExtImpNanoInteractive struct {
	Pid      string   `json:"pid"`
	Nq       []string `json:"nq,omitempty"`
	Category string   `json:"category,omitempty"`
	SubId    string   `json:"subId,omitempty"`
	Ref      string   `json:"ref,omitempty"`
}

ExtImpNanoInteractive defines the contract for bidrequest.imp[i].ext.nanointeractive

type ExtImpNinthDecimal

type ExtImpNinthDecimal struct {
	PublisherID string `json:"pubid"`
	Placement   string `json:"placement,omitempty"`
}

type ExtImpNoBid

type ExtImpNoBid struct {
	SiteID      string `json:"siteId"`
	PlacementID string `json:"placementId"`
}

type ExtImpOnetag

type ExtImpOnetag struct {
	PubId string          `json:"pubId"`
	Ext   json.RawMessage `json:"ext"`
}

type ExtImpOpenWeb added in v0.175.0

type ExtImpOpenWeb struct {
	SourceID    int     `json:"aid"`
	PlacementID int     `json:"placementId,omitempty"`
	SiteID      int     `json:"siteId,omitempty"`
	BidFloor    float64 `json:"bidFloor,omitempty"`
}

ExtImpOpenWeb defines the contract for bidrequest.imp[i].ext.openweb

type ExtImpOpenx

type ExtImpOpenx struct {
	Unit         string                 `json:"unit"`
	Platform     string                 `json:"platform"`
	DelDomain    string                 `json:"delDomain"`
	CustomFloor  float64                `json:"customFloor"`
	CustomParams map[string]interface{} `json:"customParams"`
}

ExtImpOpenx defines the contract for bidrequest.imp[i].ext.openx

type ExtImpOrbidder

type ExtImpOrbidder struct {
	AccountId   string  `json:"accountId"`
	PlacementId string  `json:"placementId"`
	BidFloor    float64 `json:"bidfloor"`
}

ExtImpOrbidder defines the contract for bidrequest.imp[i].ext.openx

type ExtImpOutbrain

type ExtImpOutbrain struct {
	Publisher ExtImpOutbrainPublisher `json:"publisher"`
	TagId     string                  `json:"tagid"`
	BCat      []string                `json:"bcat"`
	BAdv      []string                `json:"badv"`
}

ExtImpOutbrain defines the contract for bidrequest.imp[i].ext.outbrain

type ExtImpOutbrainPublisher

type ExtImpOutbrainPublisher struct {
	Id     string `json:"id"`
	Name   string `json:"name"`
	Domain string `json:"domain"`
}

type ExtImpPrebid

type ExtImpPrebid struct {
	// StoredRequest specifies which stored impression to use, if any.
	StoredRequest *ExtStoredRequest `json:"storedrequest"`

	// StoredResponse specifies which stored impression to use, if any.
	StoredAuctionResponse *ExtStoredAuctionResponse `json:"storedauctionresponse,omitempty"`

	// Stored bid response determines if imp has stored bid response for bidder
	StoredBidResponse []ExtStoredBidResponse `json:"storedbidresponse,omitempty"`

	// IsRewardedInventory is a signal intended for video impressions. Must be 0 or 1.
	IsRewardedInventory int8 `json:"is_rewarded_inventory"`

	// Bidder is the preferred approach for providing paramters to be interepreted by the bidder's adapter.
	Bidder map[string]json.RawMessage `json:"bidder"`

	Options *Options `json:"options,omitempty"`
}

ExtImpPrebid defines the contract for bidrequest.imp[i].ext.prebid

type ExtImpPubmatic

type ExtImpPubmatic struct {
	PublisherId string                  `json:"publisherId"`
	AdSlot      string                  `json:"adSlot"`
	Dctr        string                  `json:"dctr"`
	PmZoneID    string                  `json:"pmzoneid"`
	WrapExt     json.RawMessage         `json:"wrapper,omitempty"`
	Keywords    []*ExtImpPubmaticKeyVal `json:"keywords,omitempty"`
	Kadfloor    string                  `json:"kadfloor,omitempty"`
}

type ExtImpPubmaticKeyVal

type ExtImpPubmaticKeyVal struct {
	Key    string   `json:"key,omitempty"`
	Values []string `json:"value,omitempty"`
}

ExtImpPubmaticKeyVal defines the contract for bidrequest.imp[i].ext.pubmatic.keywords[i]

type ExtImpPubnative

type ExtImpPubnative struct {
	ZoneID       int    `json:"zone_id"`
	AppAuthToken string `json:"app_auth_token"`
}

type ExtImpPulsePoint

type ExtImpPulsePoint struct {
	PubID int `json:"cp"`
	TagID int `json:"ct"`
}

type ExtImpRhythmone

type ExtImpRhythmone struct {
	PlacementId string `json:"placementId"`
	Zone        string `json:"zone"`
	Path        string `json:"path"`
	S2S         bool
}

ExtImpRhythmone defines the contract for bidrequest.imp[i].ext.rhythmone

type ExtImpRichaudience added in v0.182.0

type ExtImpRichaudience struct {
	Pid         string  `json:"pid"`
	SupplyType  string  `json:"supplyType"`
	BidFloor    float64 `json:"bidfloor"`
	BidFloorCur string  `json:"bidfloorcur"`
	Test        bool    `json:"test"`
}

type ExtImpRubicon

type ExtImpRubicon struct {
	AccountId json.Number        `json:"accountId"`
	SiteId    json.Number        `json:"siteId"`
	ZoneId    json.Number        `json:"zoneId"`
	Inventory json.RawMessage    `json:"inventory,omitempty"`
	Keywords  []string           `json:"keywords,omitempty"`
	Visitor   json.RawMessage    `json:"visitor,omitempty"`
	Video     rubiconVideoParams `json:"video"`
	Debug     impExtRubiconDebug `json:"debug,omitempty"`
}

ExtImpRubicon defines the contract for bidrequest.imp[i].ext.rubicon

type ExtImpSaLunamedia added in v0.166.0

type ExtImpSaLunamedia struct {
	Key  string `json:"key"`
	Type string `json:"type,omitempty"`
}

type ExtImpSharethrough

type ExtImpSharethrough struct {
	Pkey string   `json:"pkey"`
	BAdv []string `json:"badv,omitempty"`
	BCat []string `json:"bcat,omitempty"`
}

type ExtImpSmaato

type ExtImpSmaato struct {
	PublisherID string `json:"publisherId"`
	AdSpaceID   string `json:"adspaceId"`
	AdBreakID   string `json:"adbreakId"`
}

ExtImpSmaato defines the contract for bidrequest.imp[i].ext.smaato PublisherId and AdSpaceId are mandatory parameters for non adpod (long-form video) requests, others are optional parameters PublisherId and AdBreakId are mandatory parameters for adpod (long-form video) requests, others are optional parameters AdSpaceId is identifier for specific ad placement or ad tag AdBreakId is identifier for specific ad placement or ad tag

type ExtImpSmartRTB

type ExtImpSmartRTB struct {
	PubID    string `json:"pub_id,omitempty"`
	MedID    string `json:"med_id,omitempty"`
	ZoneID   string `json:"zone_id,omitempty"`
	ForceBid bool   `json:"force_bid,omitempty"`
}

type ExtImpSmartadserver

type ExtImpSmartadserver struct {
	SiteID    int `json:"siteId"`
	PageID    int `json:"pageId"`
	FormatID  int `json:"formatId"`
	NetworkID int `json:"networkId"`
}

ExtImpSmartadserver defines the contract for bidrequest.imp[i].ext.smartadserver

type ExtImpSonobi

type ExtImpSonobi struct {
	TagID string `json:"tagid"`
}

type ExtImpSovrn

type ExtImpSovrn struct {
	TagId    string  `json:"tagId,omitempty"`
	Tagid    string  `json:"tagid,omitempty"`
	BidFloor float64 `json:"bidfloor"`
}

type ExtImpStroeerCore added in v0.212.0

type ExtImpStroeerCore struct {
	Sid string `json:"sid,omitempty"`
}

type ExtImpSynacormedia

type ExtImpSynacormedia struct {
	SeatId string `json:"seatId"`
	TagId  string `json:"tagId"`
}

ExtImpSynacormedia defines the contract for bidrequest.imp[i].ext.synacormedia

type ExtImpTappx

type ExtImpTappx struct {
	Host     string   `json:"host,omitempty"` //DEPRECATED
	TappxKey string   `json:"tappxkey"`
	Endpoint string   `json:"endpoint"`
	BidFloor float64  `json:"bidfloor,omitempty"`
	Mktag    string   `json:"mktag,omitempty"`
	Bcid     []string `json:"bcid,omitempty"`
	Bcrid    []string `json:"bcrid,omitempty"`
}

type ExtImpTelaria

type ExtImpTelaria struct {
	AdCode   string          `json:"adCode,omitempty"`
	SeatCode string          `json:"seatCode"`
	Extra    json.RawMessage `json:"extra,omitempty"`
}

type ExtImpTrafficGate added in v0.212.0

type ExtImpTrafficGate struct {
	PlacementID string `json:"placementId"`
	Host        string `json:"host"`
}

type ExtImpTriplelift

type ExtImpTriplelift struct {
	InvCode string   `json:"inventoryCode"`
	Floor   *float64 `json:"floor"`
}

ExtImpTriplelift defines the contract for bidrequest.imp[i].ext.triplelift

type ExtImpUcfunnel

type ExtImpUcfunnel struct {
	AdUnitId  string `json:"adunitid"`
	PartnerId string `json:"partnerid"`
}

ExtImpUcfunnel defines the contract for bidrequest.imp[i].ext.ucfunnel

type ExtImpUnicorn

type ExtImpUnicorn struct {
	PlacementID string `json:"placementId,omitempty"`
	PublisherID int    `json:"publisherId,omitempty"`
	MediaID     string `json:"mediaId"`
	AccountID   int    `json:"accountId,omitempty"`
}

ExtImpUnicorn defines the contract for bidrequest.imp[i].ext.unicorn

type ExtImpUnruly

type ExtImpUnruly struct {
	SiteID int `json:"siteid"`
}

type ExtImpVerizonMedia

type ExtImpVerizonMedia struct {
	Dcn string `json:"dcn"`
	Pos string `json:"pos"`
}

ExtImpVerizonMedia defines the contract for bidrequest.imp[i].ext.verizonmedia

type ExtImpVideoByte added in v0.184.0

type ExtImpVideoByte struct {
	PublisherId string `json:"pubId"`
	PlacementId string `json:"placementId"`
	NetworkId   string `json:"nid"`
}

ExtImpVideoByte defines the contract for bidrequest.imp[i].ext.videobyte

type ExtImpVrtcal

type ExtImpVrtcal struct {
	Just_an_unused_vrtcal_param string `json:"Just_an_unused_vrtcal_param"`
}

ExtImpVrtcal defines the contract for bidrequest.imp[i].ext.vrtcal

type ExtImpYahooSSP added in v0.178.0

type ExtImpYahooSSP struct {
	Dcn string `json:"dcn"`
	Pos string `json:"pos"`
}

ExtImpYahooSSP defines the contract for bidrequest.imp[i].ext.yahoossp

type ExtImpYeahmobi

type ExtImpYeahmobi struct {
	PubId  string `json:"pubId"`
	ZoneId string `json:"zoneId"`
}

ExtImpYeahmobi defines the contract for bidrequest.imp[i].ext.yeahmobi

type ExtImpYieldlab

type ExtImpYieldlab struct {
	AdslotID  string            `json:"adslotId"`
	SupplyID  string            `json:"supplyId"`
	AdSize    string            `json:"adSize"`
	Targeting map[string]string `json:"targeting"`
	ExtId     string            `json:"extId"`
}

ExtImpYieldlab defines the contract for bidrequest.imp[i].ext.yieldlab

type ExtImpYieldmo

type ExtImpYieldmo struct {
	PlacementId string `json:"placementId"`
}

ExtImpYieldmo defines the contract for bidrequest.imp[i].ext.yieldmo

type ExtImpYieldone

type ExtImpYieldone struct {
	PlacementId string `json:"placementId"`
}

ExtImpYieldone defines the contract for bidrequest.imp[i].ext.yieldone

type ExtImpZeroClickFraud

type ExtImpZeroClickFraud struct {
	SourceId int    `json:"sourceId"`
	Host     string `json:"host"`
}

ExtImpZeroClickFraud defines the contract for bidrequest.imp[i].ext.datablocks

type ExtIncludeBrandCategory

type ExtIncludeBrandCategory struct {
	PrimaryAdServer     int    `json:"primaryadserver"`
	Publisher           string `json:"publisher"`
	WithCategory        bool   `json:"withcategory"`
	TranslateCategories *bool  `json:"translatecategories,omitempty"`
}

type ExtKayzen

type ExtKayzen struct {
	Zone     string `json:"zone"`
	Exchange string `json:"exchange"`
}

ExtKayzen defines the contract for bidrequest.imp[i].ext.kayzen

type ExtKrushmedia

type ExtKrushmedia struct {
	AccountID string `json:"key"`
}

ExtKrushmedia defines imp[0].ext object structure

type ExtPublisher

type ExtPublisher struct {
	Prebid *ExtPublisherPrebid `json:"prebid"`
}

ExtPublisher defines the contract for ...publisher.ext (found in both bidrequest.site and bidrequest.app)

type ExtPublisherPrebid

type ExtPublisherPrebid struct {
	// parentAccount would define the legal entity (publisher owner or network) that has the direct relationship with the PBS
	// host. As such, the definition depends on the PBS hosting entity.
	ParentAccount *string `json:"parentAccount,omitempty"`
}

ExtPublisherPrebid defines the contract for publisher.ext.prebid

type ExtRegs

type ExtRegs struct {

	// GDPR should be "1" if the caller believes the user is subject to GDPR laws, "0" if not, and undefined
	// if it's unknown. For more info on this parameter, see: https://iabtechlab.com/wp-content/uploads/2018/02/OpenRTB_Advisory_GDPR_2018-02.pdf
	GDPR *int8 `json:"gdpr,omitempty"`

	// USPrivacy should be a four character string, see: https://iabtechlab.com/wp-content/uploads/2019/11/OpenRTB-Extension-U.S.-Privacy-IAB-Tech-Lab.pdf
	USPrivacy string `json:"us_privacy,omitempty"`
}

ExtRegs defines the contract for bidrequest.regs.ext

type ExtRequest

type ExtRequest struct {
	Prebid ExtRequestPrebid              `json:"prebid"`
	SChain *ExtRequestPrebidSChainSChain `json:"schain,omitempty"`
}

ExtRequest defines the contract for bidrequest.ext

type ExtRequestCurrency added in v0.163.0

type ExtRequestCurrency struct {
	ConversionRates map[string]map[string]float64 `json:"rates"`
	UsePBSRates     *bool                         `json:"usepbsrates"`
}

type ExtRequestPrebid

type ExtRequestPrebid struct {
	Aliases              map[string]string         `json:"aliases,omitempty"`
	AliasGVLIDs          map[string]uint16         `json:"aliasgvlids,omitempty"`
	BidAdjustmentFactors map[string]float64        `json:"bidadjustmentfactors,omitempty"`
	Cache                *ExtRequestPrebidCache    `json:"cache,omitempty"`
	Channel              *ExtRequestPrebidChannel  `json:"channel,omitempty"`
	Data                 *ExtRequestPrebidData     `json:"data,omitempty"`
	Debug                bool                      `json:"debug,omitempty"`
	Integration          string                    `json:"integration,omitempty"`
	Events               json.RawMessage           `json:"events,omitempty"`
	SChains              []*ExtRequestPrebidSChain `json:"schains,omitempty"`
	StoredRequest        *ExtStoredRequest         `json:"storedrequest,omitempty"`
	SupportDeals         bool                      `json:"supportdeals,omitempty"`
	Targeting            *ExtRequestTargeting      `json:"targeting,omitempty"`
	BidderParams         json.RawMessage           `json:"bidderparams,omitempty"`

	// NoSale specifies bidders with whom the publisher has a legal relationship where the
	// passing of personally identifiable information doesn't constitute a sale per CCPA law.
	// The array may contain a single sstar ('*') entry to represent all bidders.
	NoSale []string `json:"nosale,omitempty"`

	CurrencyConversions *ExtRequestCurrency `json:"currency,omitempty"`
	BidderConfigs       []BidderConfig      `json:"bidderconfig,omitempty"`
}

ExtRequestPrebid defines the contract for bidrequest.ext.prebid

type ExtRequestPrebidCache

type ExtRequestPrebidCache struct {
	Bids    *ExtRequestPrebidCacheBids `json:"bids"`
	VastXML *ExtRequestPrebidCacheVAST `json:"vastxml"`
}

ExtRequestPrebidCache defines the contract for bidrequest.ext.prebid.cache

func (*ExtRequestPrebidCache) UnmarshalJSON

func (ert *ExtRequestPrebidCache) UnmarshalJSON(b []byte) error

UnmarshalJSON prevents nil bids arguments.

type ExtRequestPrebidCacheBids

type ExtRequestPrebidCacheBids struct {
	ReturnCreative *bool `json:"returnCreative"`
}

ExtRequestPrebidCacheBids defines the contract for bidrequest.ext.prebid.cache.bids

type ExtRequestPrebidCacheVAST

type ExtRequestPrebidCacheVAST struct {
	ReturnCreative *bool `json:"returnCreative"`
}

ExtRequestPrebidCacheVAST defines the contract for bidrequest.ext.prebid.cache.vastxml

type ExtRequestPrebidChannel added in v0.177.0

type ExtRequestPrebidChannel struct {
	Name    string `json:"name"`
	Version string `json:"version"`
}

ExtRequestPrebidChannel defines the contract for bidrequest.ext.prebid.channel

type ExtRequestPrebidData

type ExtRequestPrebidData struct {
	EidPermissions []ExtRequestPrebidDataEidPermission `json:"eidpermissions"`
	Bidders        []string                            `json:"bidders,omitempty"`
}

ExtRequestPrebidData defines Prebid's First Party Data (FPD) and related bid request options.

type ExtRequestPrebidDataEidPermission

type ExtRequestPrebidDataEidPermission struct {
	Source  string   `json:"source"`
	Bidders []string `json:"bidders"`
}

ExtRequestPrebidDataEidPermission defines a filter rule for filter user.ext.eids

type ExtRequestPrebidSChain

type ExtRequestPrebidSChain struct {
	Bidders []string                     `json:"bidders,omitempty"`
	SChain  ExtRequestPrebidSChainSChain `json:"schain"`
}

ExtRequestPrebid defines the contract for bidrequest.ext.prebid.schains

type ExtRequestPrebidSChainSChain

type ExtRequestPrebidSChainSChain struct {
	Complete int                                 `json:"complete"`
	Nodes    []*ExtRequestPrebidSChainSChainNode `json:"nodes"`
	Ver      string                              `json:"ver"`
	Ext      json.RawMessage                     `json:"ext,omitempty"`
}

ExtRequestPrebidSChainSChain defines the contract for bidrequest.ext.prebid.schains[i].schain

type ExtRequestPrebidSChainSChainNode

type ExtRequestPrebidSChainSChainNode struct {
	ASI    string          `json:"asi"`
	SID    string          `json:"sid"`
	RID    string          `json:"rid,omitempty"`
	Name   string          `json:"name,omitempty"`
	Domain string          `json:"domain,omitempty"`
	HP     int             `json:"hp"`
	Ext    json.RawMessage `json:"ext,omitempty"`
}

ExtRequestPrebidSChainSChainNode defines the contract for bidrequest.ext.prebid.schains[i].schain[i].nodes

type ExtRequestTargeting

type ExtRequestTargeting struct {
	PriceGranularity     PriceGranularity         `json:"pricegranularity"`
	IncludeWinners       bool                     `json:"includewinners"`
	IncludeBidderKeys    bool                     `json:"includebidderkeys"`
	IncludeBrandCategory *ExtIncludeBrandCategory `json:"includebrandcategory"`
	IncludeFormat        bool                     `json:"includeformat"`
	DurationRangeSec     []int                    `json:"durationrangesec"`
	PreferDeals          bool                     `json:"preferdeals"`
	AppendBidderNames    bool                     `json:"appendbiddernames,omitempty"`
}

ExtRequestTargeting defines the contract for bidrequest.ext.prebid.targeting

func (*ExtRequestTargeting) UnmarshalJSON

func (ert *ExtRequestTargeting) UnmarshalJSON(b []byte) error

Make an unmarshaller that will set a default PriceGranularity

type ExtResponseDebug

type ExtResponseDebug struct {
	// HttpCalls defines the contract for bidresponse.ext.debug.httpcalls
	HttpCalls map[BidderName][]*ExtHttpCall `json:"httpcalls,omitempty"`
	// Request after resolution of stored requests and debug overrides
	ResolvedRequest json.RawMessage `json:"resolvedrequest,omitempty"`
}

ExtResponseDebug defines the contract for bidresponse.ext.debug

type ExtResponsePrebid

type ExtResponsePrebid struct {
	AuctionTimestamp int64 `json:"auctiontimestamp,omitempty"`
}

ExtResponsePrebid defines the contract for bidresponse.ext.prebid

type ExtResponseSyncData

type ExtResponseSyncData struct {
	Status CookieStatus `json:"status"`
	// Syncs must have length > 0
	Syncs []*ExtUserSync `json:"syncs"`
}

ExtResponseSyncData defines the contract for bidresponse.ext.usersync.{bidder}

type ExtSilverMob

type ExtSilverMob struct {
	ZoneID string `json:"zoneid"`
	Host   string `json:"host"`
}

ExtSilverMob defines the contract for bidrequest.imp[i].ext.silvermob

type ExtSite

type ExtSite struct {
	// AMP should be 1 if the request comes from an AMP page, and 0 if not.
	AMP int8 `json:"amp"`
}

ExtSite defines the contract for bidrequest.site.ext

func (*ExtSite) UnmarshalJSON

func (es *ExtSite) UnmarshalJSON(b []byte) error

type ExtSmartHub added in v0.172.0

type ExtSmartHub struct {
	PartnerName string `json:"partnerName,omitempty"`
	Seat        string `json:"seat,omitempty"`
	Token       string `json:"token,omitempty"`
}

type ExtSmartyAds

type ExtSmartyAds struct {
	AccountID string `json:"accountid"`
	SourceID  string `json:"sourceid"`
	Host      string `json:"host"`
}

ExtSmartyAds defines the contract for bidrequest.imp[i].ext.smartyads

type ExtSource added in v0.190.0

type ExtSource struct {
	SChain *ExtRequestPrebidSChainSChain `json:"schain"`
}

ExtSource defines the contract for bidrequest.source.ext

type ExtStoredAuctionResponse added in v0.199.0

type ExtStoredAuctionResponse struct {
	ID string `json:"id"`
}

ExtStoredAuctionResponse defines the contract for bidrequest.imp[i].ext.prebid.storedauctionresponse

type ExtStoredBidResponse added in v0.208.0

type ExtStoredBidResponse struct {
	ID     string `json:"id"`
	Bidder string `json:"bidder"`
}

ExtStoredBidResponse defines the contract for bidrequest.imp[i].ext.prebid.storedbidresponse

type ExtStoredRequest

type ExtStoredRequest struct {
	ID string `json:"id"`
}

ExtStoredRequest defines the contract for bidrequest.imp[i].ext.prebid.storedrequest

type ExtUser

type ExtUser struct {
	// Consent is a GDPR consent string. See "Advised Extensions" of
	// https://iabtechlab.com/wp-content/uploads/2018/02/OpenRTB_Advisory_GDPR_2018-02.pdf
	Consent string `json:"consent,omitempty"`

	Prebid *ExtUserPrebid `json:"prebid,omitempty"`

	Eids []ExtUserEid `json:"eids,omitempty"`
}

ExtUser defines the contract for bidrequest.user.ext

type ExtUserDataDeviceIdHuaweiAds added in v0.174.0

type ExtUserDataDeviceIdHuaweiAds struct {
	Imei       []string `json:"imei,omitempty"`
	Oaid       []string `json:"oaid,omitempty"`
	Gaid       []string `json:"gaid,omitempty"`
	ClientTime []string `json:"clientTime,omitempty"`
}

type ExtUserDataHuaweiAds added in v0.174.0

type ExtUserDataHuaweiAds struct {
	Data ExtUserDataDeviceIdHuaweiAds `json:"data,omitempty"`
}

type ExtUserEid

type ExtUserEid struct {
	Source string          `json:"source"`
	ID     string          `json:"id,omitempty"`
	Uids   []ExtUserEidUid `json:"uids,omitempty"`
	Ext    json.RawMessage `json:"ext,omitempty"`
}

ExtUserEid defines the contract for bidrequest.user.ext.eids Responsible for the Universal User ID support: establishing pseudonymous IDs for users. See https://github.com/prebid/Prebid.js/issues/3900 for details.

type ExtUserEidUid

type ExtUserEidUid struct {
	ID    string          `json:"id"`
	Atype int             `json:"atype,omitempty"`
	Ext   json.RawMessage `json:"ext,omitempty"`
}

ExtUserEidUid defines the contract for bidrequest.user.ext.eids[i].uids[j]

type ExtUserPrebid

type ExtUserPrebid struct {
	BuyerUIDs map[string]string `json:"buyeruids,omitempty"`
}

ExtUserPrebid defines the contract for bidrequest.user.ext.prebid

type ExtUserSync

type ExtUserSync struct {
	Url  string       `json:"url"`
	Type UserSyncType `json:"type"`
}

ExtUserSync defines the contract for bidresponse.ext.usersync.{bidder}.syncs[i]

type GranularityRange

type GranularityRange struct {
	Min       float64 `json:"min"`
	Max       float64 `json:"max"`
	Increment float64 `json:"increment"`
}

GranularityRange struct defines a range of prices used by PriceGranularity

type IOSAppTrackingStatus

type IOSAppTrackingStatus int

IOSAppTrackingStatus describes the values for iOS app tracking authorization status.

const (
	IOSAppTrackingStatusNotDetermined IOSAppTrackingStatus = 0
	IOSAppTrackingStatusRestricted    IOSAppTrackingStatus = 1
	IOSAppTrackingStatusDenied        IOSAppTrackingStatus = 2
	IOSAppTrackingStatusAuthorized    IOSAppTrackingStatus = 3
)

Values of the IOSAppTrackingStatus enumeration.

func ParseDeviceExtATTS

func ParseDeviceExtATTS(deviceExt json.RawMessage) (*IOSAppTrackingStatus, error)

ParseDeviceExtATTS parses the ATTS value from the request.device.ext OpenRTB field.

type ImpExtAdnunitus added in v0.183.0

type ImpExtAdnunitus struct {
	Auid    string `json:"auId"`
	Network string `json:"network"`
}

type ImpExtBmtm added in v0.163.0

type ImpExtBmtm struct {
	PlacementID int `json:"placement_id"`
}

type ImpExtCompass added in v0.188.0

type ImpExtCompass struct {
	PlacementID string `json:"placementId"`
	EndpointID  string `json:"endpointId"`
}

type ImpExtEpom

type ImpExtEpom struct {
}

type ImpExtIQZone added in v0.173.0

type ImpExtIQZone struct {
	PlacementID string `json:"placementId"`
	EndpointID  string `json:"endpointId"`
}

type ImpExtNextMillennium added in v0.181.0

type ImpExtNextMillennium struct {
	GroupID     string `json:"group_id,omitempty"`
	PlacementID string `json:"placement_id"`
}

type ImpExtOperaads added in v0.169.0

type ImpExtOperaads struct {
	PlacementID string `json:"placementId"`
	EndpointID  string `json:"endpointId"`
	PublisherID string `json:"publisherId"`
}

type ImpExtPangle

type ImpExtPangle struct {
	Token       string `json:"token"`
	AppID       string `json:"appid,omitempty"`
	PlacementID string `json:"placementid,omitempty"`
}

type ImpExtVidoomy added in v0.190.0

type ImpExtVidoomy struct {
	ZoneID string `json:"zoneId"`
}

type IncludeBrandCategory

type IncludeBrandCategory struct {
	// Attribute:
	//   primaryadserver
	// Type:
	//   int; optional
	//  The ad server used by the publisher. Supported Values 1- Freewheel , 2- DFP
	PrimaryAdserver int `json:"primaryadserver"`

	// Attribute:
	//   publisher
	// Type:
	//   string; optional
	//  Identifier for the Publisher
	Publisher string `json:"publisher"`

	// Attribute:
	//   translatecategories
	// Type:
	//   *bool; optional
	// Description:
	//   Indicates if IAB categories should be translated to adserver category
	TranslateCategories *bool `json:"translatecategories,omitempty"`
}

type ORTB2 added in v0.183.0

type ORTB2 struct {
	Site map[string]json.RawMessage `json:"site,omitempty"`
	App  map[string]json.RawMessage `json:"app,omitempty"`
	User map[string]json.RawMessage `json:"user,omitempty"`
}

type Options added in v0.175.0

type Options struct {
	EchoVideoAttrs bool `json:"echovideoattrs"`
}

type Pod

type Pod struct {
	// Attribute:
	//   podid
	// Type:
	//   integer; required
	//  Unique id of the pod within a particular request.
	PodId int `json:"podid"`

	// Attribute:
	//   adpoddurationsec
	// Type:
	//   integer; required
	//  Duration of the adPod
	AdPodDurationSec int `json:"adpoddurationsec"`

	// Attribute:
	//   configid
	// Type:
	//   string; required
	//  ID of the stored config that corresponds to a single pod request
	ConfigId string `json:"configid"`
}

type PodConfig

type PodConfig struct {
	// Attribute:
	//   durationrangesec
	// Type:
	//  int array, required
	// Description:
	//  Range of ad durations allowed in the response
	DurationRangeSec []int `json:"durationrangesec"`

	// Attribute:
	//   requireexactduration
	// Type:
	//   boolean, optional
	//  Flag indicating exact ad duration requirement. Default is false.
	RequireExactDuration bool `json:"requireexactduration,omitempty"`

	// Attribute:
	//   pods
	// Type:
	//   object; required
	//  Container object for describing the adPod(s) to be requested.
	Pods []Pod `json:"pods"`
}

type PriceGranularity

type PriceGranularity struct {
	Precision int                `json:"precision,omitempty"`
	Ranges    []GranularityRange `json:"ranges,omitempty"`
}

PriceGranularity defines the allowed values for bidrequest.ext.prebid.targeting.pricegranularity

func PriceGranularityFromString

func PriceGranularityFromString(gran string) PriceGranularity

PriceGranularityFromString converts a legacy string into the new PriceGranularity

func (*PriceGranularity) UnmarshalJSON

func (pg *PriceGranularity) UnmarshalJSON(b []byte) error

UnmarshalJSON : custom unmarshaller to handle legacy string granularites.

type PriceGranularityRaw

type PriceGranularityRaw PriceGranularity

type RegExt added in v0.169.0

type RegExt struct {
	// contains filtered or unexported fields
}

func (*RegExt) Dirty added in v0.169.0

func (re *RegExt) Dirty() bool

func (*RegExt) GetExt added in v0.169.0

func (re *RegExt) GetExt() map[string]json.RawMessage

func (*RegExt) GetUSPrivacy added in v0.169.0

func (re *RegExt) GetUSPrivacy() string

func (*RegExt) SetExt added in v0.169.0

func (re *RegExt) SetExt(ext map[string]json.RawMessage)

func (*RegExt) SetUSPrivacy added in v0.169.0

func (re *RegExt) SetUSPrivacy(uSPrivacy string)

type RequestExt added in v0.169.0

type RequestExt struct {
	// contains filtered or unexported fields
}

func (*RequestExt) Dirty added in v0.169.0

func (re *RequestExt) Dirty() bool

func (*RequestExt) GetExt added in v0.169.0

func (re *RequestExt) GetExt() map[string]json.RawMessage

func (*RequestExt) GetPrebid added in v0.169.0

func (re *RequestExt) GetPrebid() *ExtRequestPrebid

func (*RequestExt) GetSChain added in v0.190.0

func (re *RequestExt) GetSChain() *ExtRequestPrebidSChainSChain

These schain methods on the request.ext are only for ORTB 2.4 backwards compatibility and should not be used for any other purposes. To access ORTB 2.5 schains, see source.ext.schain or request.ext.prebid.schains.

func (*RequestExt) SetExt added in v0.169.0

func (re *RequestExt) SetExt(ext map[string]json.RawMessage)

func (*RequestExt) SetPrebid added in v0.169.0

func (re *RequestExt) SetPrebid(prebid *ExtRequestPrebid)

func (*RequestExt) SetSChain added in v0.190.0

func (re *RequestExt) SetSChain(schain *ExtRequestPrebidSChainSChain)

type RequestWrapper added in v0.169.0

type RequestWrapper struct {
	*openrtb2.BidRequest
	// contains filtered or unexported fields
}

func (*RequestWrapper) GetAppExt added in v0.169.0

func (rw *RequestWrapper) GetAppExt() (*AppExt, error)

func (*RequestWrapper) GetDeviceExt added in v0.169.0

func (rw *RequestWrapper) GetDeviceExt() (*DeviceExt, error)

func (*RequestWrapper) GetRegExt added in v0.169.0

func (rw *RequestWrapper) GetRegExt() (*RegExt, error)

func (*RequestWrapper) GetRequestExt added in v0.169.0

func (rw *RequestWrapper) GetRequestExt() (*RequestExt, error)

func (*RequestWrapper) GetSiteExt added in v0.169.0

func (rw *RequestWrapper) GetSiteExt() (*SiteExt, error)

func (*RequestWrapper) GetSourceExt added in v0.190.0

func (rw *RequestWrapper) GetSourceExt() (*SourceExt, error)

func (*RequestWrapper) GetUserExt added in v0.169.0

func (rw *RequestWrapper) GetUserExt() (*UserExt, error)

func (*RequestWrapper) RebuildRequest added in v0.169.0

func (rw *RequestWrapper) RebuildRequest() error

type SiteExt added in v0.169.0

type SiteExt struct {
	// contains filtered or unexported fields
}

func (*SiteExt) Dirty added in v0.169.0

func (se *SiteExt) Dirty() bool

func (*SiteExt) GetAmp added in v0.169.0

func (se *SiteExt) GetAmp() int8

func (*SiteExt) GetExt added in v0.169.0

func (se *SiteExt) GetExt() map[string]json.RawMessage

func (*SiteExt) SetExt added in v0.169.0

func (se *SiteExt) SetExt(ext map[string]json.RawMessage)

func (*SiteExt) SetUSPrivacy added in v0.169.0

func (se *SiteExt) SetUSPrivacy(amp int8)

type SourceExt

type SourceExt struct {
	// contains filtered or unexported fields
}

func (*SourceExt) Dirty added in v0.190.0

func (se *SourceExt) Dirty() bool

func (*SourceExt) GetExt added in v0.190.0

func (se *SourceExt) GetExt() map[string]json.RawMessage

func (*SourceExt) GetSChain added in v0.190.0

func (se *SourceExt) GetSChain() *ExtRequestPrebidSChainSChain

func (*SourceExt) SetExt added in v0.190.0

func (se *SourceExt) SetExt(ext map[string]json.RawMessage)

func (*SourceExt) SetSChain added in v0.190.0

func (se *SourceExt) SetSChain(schain *ExtRequestPrebidSChainSChain)

type TargetingKey

type TargetingKey string

TargetingKeys are used throughout Prebid as keys which can be used in an ad server like DFP. Clients set the values we assign on the request to the ad server, where they can be substituted like macros into Creatives.

Removing one of these, or changing the semantics of what we store there, will probably break the line item setups for many publishers.

These are especially important to Prebid Mobile. It's much more cumbersome for a Mobile App to update code than it is for a website. As a result, they rely heavily on these targeting keys so that any changes can be made on Prebid Server and the Ad Server's line items.

func (TargetingKey) BidderKey

func (key TargetingKey) BidderKey(bidder BidderName, maxLength int) string

func (TargetingKey) TruncateKey added in v0.206.0

func (key TargetingKey) TruncateKey(maxLength int) string

type UserExt added in v0.169.0

type UserExt struct {
	// contains filtered or unexported fields
}

func (*UserExt) Dirty added in v0.169.0

func (ue *UserExt) Dirty() bool

func (*UserExt) GetConsent added in v0.169.0

func (ue *UserExt) GetConsent() *string

func (*UserExt) GetEid added in v0.169.0

func (ue *UserExt) GetEid() *[]ExtUserEid

func (*UserExt) GetExt added in v0.169.0

func (ue *UserExt) GetExt() map[string]json.RawMessage

func (*UserExt) GetPrebid added in v0.169.0

func (ue *UserExt) GetPrebid() *ExtUserPrebid

func (*UserExt) SetConsent added in v0.169.0

func (ue *UserExt) SetConsent(consent *string)

func (*UserExt) SetEid added in v0.169.0

func (ue *UserExt) SetEid(eid *[]ExtUserEid)

func (*UserExt) SetExt added in v0.169.0

func (ue *UserExt) SetExt(ext map[string]json.RawMessage)

func (*UserExt) SetPrebid added in v0.169.0

func (ue *UserExt) SetPrebid(prebid *ExtUserPrebid)

type UserSyncType

type UserSyncType string

UserSyncType describes the allowed values for bidresponse.ext.usersync.{bidder}.syncs[i].type

const (
	UserSyncIframe UserSyncType = "iframe"
	UserSyncPixel  UserSyncType = "pixel"
)

type VideoTargeting

type VideoTargeting struct {
	HbPb       string `json:"hb_pb,omitempty"`
	HbPbCatDur string `json:"hb_pb_cat_dur,omitempty"`
	HbCacheID  string `json:"hb_cache_id,omitempty"`
}

Source Files

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL