openrtb_ext

package
v2.3.0 Latest Latest
Warning

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

Go to latest
Published: Jan 8, 2024 License: Apache-2.0 Imports: 17 Imported by: 0

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"
	Passthrough             = "passthrough"
)
View Source
const (
	FetchSuccess    = "success"
	FetchTimeout    = "timeout"
	FetchError      = "error"
	FetchInprogress = "inprogress"
	FetchNone       = "none"
)

Defines strings for FetchStatus

View Source
const (
	NoDataLocation  = "noData"
	RequestLocation = "request"
	FetchLocation   = "fetch"
)

Defines strings for PriceFloorLocation

View Source
const AuctionEnvironmentKey = string(BidderReservedAE)

AuctionEnvironmentKey is the json key under imp[].ext for ExtImp.AuctionEnvironment

View Source
const DefaultBidLimit = 1
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 IsRewardedInventoryKey = "is_rewarded_inventory"

IsRewardedInventoryKey is the json key for ExtImpPrebid.IsRewardedInventory

View Source
const MaxBidLimit = 9
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 OptionsKey = "options"

OptionsKey is the json key for ExtImpPrebid.Options

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.

View Source
const TIDKey = "tid"

TIDKey reserved for Per-Impression Transactions IDs for Multi-Impression Bid Requests.

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 ConvertDownTo25

func ConvertDownTo25(r *RequestWrapper) error

func ConvertUpTo26

func ConvertUpTo26(r *RequestWrapper) error

func GetAliasBidderToParent

func GetAliasBidderToParent() map[BidderName]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.

func ParseConsentedProvidersString

func ParseConsentedProvidersString(cps string) []int

ParseConsentedProvidersString takes a string formatted as Google's Additional Consent format and returns a list with its elements. For instance, the following string "1~1.35.41.101" would result in []int{1, 35, 41, 101}

func SetAliasBidderName

func SetAliasBidderName(aliasBidderName string, parentBidderName BidderName) error

Types

type AdPod

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

type AdServerTarget

type AdServerTarget struct {
	Key    string `json:"key,omitempty"`
	Source string `json:"source,omitempty"`
	Value  string `json:"value,omitempty"`
}

type Adjustment

type Adjustment struct {
	Type     string  `json:"adjtype,omitempty"`
	Value    float64 `json:"value,omitempty"`
	Currency string  `json:"currency,omitempty"`
}

Adjustment defines the object that will be present in the slice of bid adjustments found from MediaType map

type AdjustmentsByDealID

type AdjustmentsByDealID map[string][]Adjustment

AdjustmentsByDealID maps a dealID to a slice of bid adjustments

type AdsCert

type AdsCert struct {
	Enabled bool `json:"enabled,omitempty"`
}

AdsCert defines if Call Sign feature is enabled for request

type AppExt

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

func (*AppExt) Clone

func (ae *AppExt) Clone() *AppExt

func (*AppExt) Dirty

func (ae *AppExt) Dirty() bool

func (*AppExt) GetExt

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

func (*AppExt) GetPrebid

func (ae *AppExt) GetPrebid() *ExtAppPrebid

func (*AppExt) SetExt

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

func (*AppExt) SetPrebid

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

type AuctionEnvironmentType

type AuctionEnvironmentType int8

AuctionEnvironmentType is a Google Privacy Sandbox flag indicating where the auction may take place

const (
	// 0 Standard server-side auction
	ServerSideAuction AuctionEnvironmentType = 0
	// 1 On-device interest group auction (FLEDGE)
	OnDeviceIGAuctionFledge AuctionEnvironmentType = 1
	// 2 Server-side with interest group simulation
	ServerSideWithIGSimulation AuctionEnvironmentType = 2
)

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

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.
	BidderReservedTID     BidderName = "tid"     // Reserved for Per-Impression Transactions IDs for Multi-Impression Bid Requests.
	BidderReservedAE      BidderName = "ae"      // Reserved for FLEDGE Auction Environment
)

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"
	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"
	BidderAdquery           BidderName = "adquery"
	BidderAdrino            BidderName = "adrino"
	BidderAdsinteractive    BidderName = "adsinteractive"
	BidderAdtarget          BidderName = "adtarget"
	BidderAdtrgtme          BidderName = "adtrgtme"
	BidderAdtelligent       BidderName = "adtelligent"
	BidderAdvangelists      BidderName = "advangelists"
	BidderAdView            BidderName = "adview"
	BidderAdxcg             BidderName = "adxcg"
	BidderAdyoulike         BidderName = "adyoulike"
	BidderAidem             BidderName = "aidem"
	BidderAJA               BidderName = "aja"
	BidderAlgorix           BidderName = "algorix"
	BidderAlkimi            BidderName = "alkimi"
	BidderAMX               BidderName = "amx"
	BidderApacdex           BidderName = "apacdex"
	BidderAppnexus          BidderName = "appnexus"
	BidderAppush            BidderName = "appush"
	BidderAudienceNetwork   BidderName = "audienceNetwork"
	BidderAutomatad         BidderName = "automatad"
	BidderAvocet            BidderName = "avocet"
	BidderAxis              BidderName = "axis"
	BidderAxonix            BidderName = "axonix"
	BidderBeachfront        BidderName = "beachfront"
	BidderBeintoo           BidderName = "beintoo"
	BidderBematterfull      BidderName = "bematterfull"
	BidderBetween           BidderName = "between"
	BidderBeyondMedia       BidderName = "beyondmedia"
	BidderBidmachine        BidderName = "bidmachine"
	BidderBidmyadz          BidderName = "bidmyadz"
	BidderBidsCube          BidderName = "bidscube"
	BidderBidstack          BidderName = "bidstack"
	BidderBizzclick         BidderName = "bizzclick"
	BidderBliink            BidderName = "bliink"
	BidderBlue              BidderName = "blue"
	BidderBluesea           BidderName = "bluesea"
	BidderBmtm              BidderName = "bmtm"
	BidderBoldwin           BidderName = "boldwin"
	BidderBrave             BidderName = "brave"
	BidderCadentApertureMX  BidderName = "cadent_aperture_mx"
	BidderCcx               BidderName = "ccx"
	BidderCoinzilla         BidderName = "coinzilla"
	BidderColossus          BidderName = "colossus"
	BidderCompass           BidderName = "compass"
	BidderConnectAd         BidderName = "connectad"
	BidderConsumable        BidderName = "consumable"
	BidderConversant        BidderName = "conversant"
	BidderCpmstar           BidderName = "cpmstar"
	BidderCriteo            BidderName = "criteo"
	BidderCWire             BidderName = "cwire"
	BidderDatablocks        BidderName = "datablocks"
	BidderDecenterAds       BidderName = "decenterads"
	BidderDeepintent        BidderName = "deepintent"
	BidderDefinemedia       BidderName = "definemedia"
	BidderDianomi           BidderName = "dianomi"
	BidderEdge226           BidderName = "edge226"
	BidderDmx               BidderName = "dmx"
	BidderDXKulture         BidderName = "dxkulture"
	BidderEmtv              BidderName = "emtv"
	BidderEmxDigital        BidderName = "emx_digital"
	BidderEPlanning         BidderName = "eplanning"
	BidderEpom              BidderName = "epom"
	BidderEVolution         BidderName = "e_volution"
	BidderFlipp             BidderName = "flipp"
	BidderFreewheelSSP      BidderName = "freewheelssp"
	BidderFRVRAdNetwork     BidderName = "frvradn"
	BidderGamma             BidderName = "gamma"
	BidderGamoshi           BidderName = "gamoshi"
	BidderGlobalsun         BidderName = "globalsun"
	BidderGothamads         BidderName = "gothamads"
	BidderGrid              BidderName = "grid"
	BidderGumGum            BidderName = "gumgum"
	BidderHuaweiAds         BidderName = "huaweiads"
	BidderImds              BidderName = "imds"
	BidderImpactify         BidderName = "impactify"
	BidderImprovedigital    BidderName = "improvedigital"
	BidderInfyTV            BidderName = "infytv"
	BidderInMobi            BidderName = "inmobi"
	BidderInteractiveoffers BidderName = "interactiveoffers"
	BidderInvibes           BidderName = "invibes"
	BidderIQX               BidderName = "iqx"
	BidderIQZone            BidderName = "iqzone"
	BidderIx                BidderName = "ix"
	BidderJixie             BidderName = "jixie"
	BidderKargo             BidderName = "kargo"
	BidderKayzen            BidderName = "kayzen"
	BidderKidoz             BidderName = "kidoz"
	BidderKiviads           BidderName = "kiviads"
	BidderLmKiviads         BidderName = "lm_kiviads"
	BidderKrushmedia        BidderName = "krushmedia"
	BidderLemmadigital      BidderName = "lemmadigital"
	BidderLiftoff           BidderName = "liftoff"
	BidderLimelightDigital  BidderName = "limelightDigital"
	BidderLockerDome        BidderName = "lockerdome"
	BidderLogan             BidderName = "logan"
	BidderLogicad           BidderName = "logicad"
	BidderLunaMedia         BidderName = "lunamedia"
	BidderMabidder          BidderName = "mabidder"
	BidderMadvertise        BidderName = "madvertise"
	BidderMarsmedia         BidderName = "marsmedia"
	BidderMediafuse         BidderName = "mediafuse"
	BidderMedianet          BidderName = "medianet"
	BidderMgid              BidderName = "mgid"
	BidderMgidX             BidderName = "mgidX"
	BidderMobfoxpb          BidderName = "mobfoxpb"
	BidderMobileFuse        BidderName = "mobilefuse"
	BidderMotorik           BidderName = "motorik"
	BidderNextMillennium    BidderName = "nextmillennium"
	BidderNoBid             BidderName = "nobid"
	BidderOms               BidderName = "oms"
	BidderOneTag            BidderName = "onetag"
	BidderOpenWeb           BidderName = "openweb"
	BidderOpenx             BidderName = "openx"
	BidderOperaads          BidderName = "operaads"
	BidderOrbidder          BidderName = "orbidder"
	BidderOutbrain          BidderName = "outbrain"
	BidderOwnAdx            BidderName = "ownadx"
	BidderPangle            BidderName = "pangle"
	BidderPGAMSsp           BidderName = "pgamssp"
	BidderPubmatic          BidderName = "pubmatic"
	BidderPubnative         BidderName = "pubnative"
	BidderPulsepoint        BidderName = "pulsepoint"
	BidderPWBid             BidderName = "pwbid"
	BidderRelevantDigital   BidderName = "relevantdigital"
	BidderRevcontent        BidderName = "revcontent"
	BidderRichaudience      BidderName = "richaudience"
	BidderRise              BidderName = "rise"
	BidderRTBHouse          BidderName = "rtbhouse"
	BidderRubicon           BidderName = "rubicon"
	BidderSeedingAlliance   BidderName = "seedingAlliance"
	BidderSaLunaMedia       BidderName = "sa_lunamedia"
	BidderScreencore        BidderName = "screencore"
	BidderSharethrough      BidderName = "sharethrough"
	BidderSilverMob         BidderName = "silvermob"
	BidderSilverPush        BidderName = "silverpush"
	BidderSmaato            BidderName = "smaato"
	BidderSmartAdserver     BidderName = "smartadserver"
	BidderSmartHub          BidderName = "smarthub"
	BidderSmartRTB          BidderName = "smartrtb"
	BidderSmartx            BidderName = "smartx"
	BidderSmartyAds         BidderName = "smartyads"
	BidderSmileWanted       BidderName = "smilewanted"
	BidderSonobi            BidderName = "sonobi"
	BidderSovrn             BidderName = "sovrn"
	BidderSovrnXsp          BidderName = "sovrnXsp"
	BidderSspBC             BidderName = "sspBC"
	BidderStroeerCore       BidderName = "stroeerCore"
	BidderTaboola           BidderName = "taboola"
	BidderTappx             BidderName = "tappx"
	BidderTeads             BidderName = "teads"
	BidderTelaria           BidderName = "telaria"
	BidderTpmn              BidderName = "tpmn"
	BidderTrafficGate       BidderName = "trafficgate"
	BidderTriplelift        BidderName = "triplelift"
	BidderTripleliftNative  BidderName = "triplelift_native"
	BidderUcfunnel          BidderName = "ucfunnel"
	BidderUndertone         BidderName = "undertone"
	BidderUnicorn           BidderName = "unicorn"
	BidderUnruly            BidderName = "unruly"
	BidderVideoByte         BidderName = "videobyte"
	BidderVideoHeroes       BidderName = "videoheroes"
	BidderVidoomy           BidderName = "vidoomy"
	BidderVisibleMeasures   BidderName = "visiblemeasures"
	BidderVisx              BidderName = "visx"
	BidderVox               BidderName = "vox"
	BidderVrtcal            BidderName = "vrtcal"
	BidderXeworks           BidderName = "xeworks"
	BidderYahooAds          BidderName = "yahooAds"
	BidderYeahmobi          BidderName = "yeahmobi"
	BidderYieldlab          BidderName = "yieldlab"
	BidderYieldmo           BidderName = "yieldmo"
	BidderYieldone          BidderName = "yieldone"
	BidderZeroClickFraud    BidderName = "zeroclickfraud"
	BidderZetaGlobalSsp     BidderName = "zeta_global_ssp"
)

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 NormalizeBidderNameOrUnchanged

func NormalizeBidderNameOrUnchanged(name string) BidderName

NormalizeBidderNameOrUnchanged returns the normalized name of known bidders, otherwise returns the name exactly as provided.

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.prebid.bidder.{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

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

type ConsentedProvidersSettingsIn

type ConsentedProvidersSettingsIn struct {
	ConsentedProvidersString string `json:"consented_providers,omitempty"`
}

type ConsentedProvidersSettingsOut

type ConsentedProvidersSettingsOut struct {
	ConsentedProvidersList []int `json:"consented_providers,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 DOOHExt

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

func (*DOOHExt) Clone

func (de *DOOHExt) Clone() *DOOHExt

func (*DOOHExt) Dirty

func (de *DOOHExt) Dirty() bool

func (*DOOHExt) GetExt

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

func (*DOOHExt) SetExt

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

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

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

func (*DeviceExt) Clone

func (de *DeviceExt) Clone() *DeviceExt

func (*DeviceExt) Dirty

func (de *DeviceExt) Dirty() bool

func (*DeviceExt) GetExt

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

func (*DeviceExt) GetPrebid

func (de *DeviceExt) GetPrebid() *ExtDevicePrebid

func (*DeviceExt) SetExt

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

func (*DeviceExt) SetPrebid

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

type Experiment

type Experiment struct {
	AdsCert *AdsCert `json:"adscert,omitempty"`
}

Experiment defines if experimental features are available for the request

type ExtAceex

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

type ExtAcuityAds

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

type ExtAdapterAlternateBidderCodes

type ExtAdapterAlternateBidderCodes struct {
	Enabled            bool     `mapstructure:"enabled" json:"enabled"`
	AllowedBidderCodes []string `mapstructure:"allowedbiddercodes" json:"allowedbiddercodes"`
}

type ExtAdpone

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

type ExtAlternateBidderCodes

type ExtAlternateBidderCodes struct {
	Enabled bool                                      `mapstructure:"enabled" json:"enabled"`
	Bidders map[string]ExtAdapterAlternateBidderCodes `mapstructure:"bidders" json:"bidders"`
}

ExtAlternateBidderCodes defines list of alternate bidder codes allowed by adatpers. This overrides host level configs.

func (*ExtAlternateBidderCodes) IsBidderInAlternateBidderCodes

func (bidderCodes *ExtAlternateBidderCodes) IsBidderInAlternateBidderCodes(bidder string) (ExtAdapterAlternateBidderCodes, bool)

IsBidderInAlternateBidderCodes tries to find bidder in the altBidderCodes.Bidders map in a case sensitive manner first. If no match is found it'll try it in a case insensitive way in linear time

func (*ExtAlternateBidderCodes) IsValidBidderCode

func (bidderCodes *ExtAlternateBidderCodes) IsValidBidderCode(bidder, alternateBidder string) (bool, error)

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,omitempty"`
	Version string `json:"version,omitempty"`
}

ExtAppPrebid further defines the contract for bidrequest.app.ext.prebid.

type ExtBematterfull

type ExtBematterfull struct {
	Env string `json:"env"`
	Pid string `json:"pid"`
}

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"`
	TargetBidderCode  string              `json:"targetbiddercode,omitempty"`
	Type              BidType             `json:"type,omitempty"`
	Video             *ExtBidPrebidVideo  `json:"video,omitempty"`
	Events            *ExtBidPrebidEvents `json:"events,omitempty"`
	BidId             string              `json:"bidid,omitempty"`
	Passthrough       json.RawMessage     `json:"passthrough,omitempty"`
	Floors            *ExtBidPrebidFloors `json:"floors,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 ExtBidPrebidFloors

type ExtBidPrebidFloors struct {
	FloorRule      string  `json:"floorRule,omitempty"`
	FloorRuleValue float64 `json:"floorRuleValue,omitempty"`
	FloorValue     float64 `json:"floorValue,omitempty"`
	FloorCurrency  string  `json:"floorCurrency,omitempty"`
}

ExtBidPrebidFloors defines the contract for bidresponse.seatbid.bid[i].ext.prebid.floors

type ExtBidPrebidMeta

type ExtBidPrebidMeta struct {
	AdapterCode          string          `json:"adaptercode,omitempty"`
	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"`
	DChain               json.RawMessage `json:"dchain,omitempty"`
	DemandSource         string          `json:"demandSource,omitempty"`
	MediaType            string          `json:"mediaType,omitempty"`
	NetworkID            int             `json:"networkId,omitempty"`
	NetworkName          string          `json:"networkName,omitempty"`
	PrimaryCategoryID    string          `json:"primaryCatId,omitempty"`
	RendererName         string          `json:"rendererName,omitempty"`
	RendererVersion      string          `json:"rendererVersion,omitempty"`
	RendererData         json.RawMessage `json:"rendererData,omitempty"`
	RendererUrl          string          `json:"rendererUrl,omitempty"`
	SecondaryCategoryIDs []string        `json:"secondaryCatIds,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

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:"minwidthperc"`
	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 ExtGothamAds

type ExtGothamAds struct {
	AccountID string `json:"accountId"`
}

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 ExtIQX

type ExtIQX struct {
	Env string `json:"env"`
	Pid string `json:"pid"`
}

type ExtImp

type ExtImp struct {
	Prebid *ImpExtPrebid `json:"prebid,omitempty"`
}

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.prebid.bidder.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

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

type ExtImpAdOcean

type ExtImpAdOcean struct {
	EmitterPrefix string `json:"emitterPrefix"`
	MasterID      string `json:"masterId"`
	SlaveID       string `json:"slaveId"`
}

type ExtImpAdView

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.prebid.bidder.adkernel

type ExtImpAdkernelAdn

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

ExtImpAdkernelAdn defines the contract for bidrequest.imp[i].ext.prebid.bidder.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 ExtImpAdrino

type ExtImpAdrino struct {
	Hash string `json:"hash"`
}

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.prebid.bidder.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.prebid.bidder.adtelligent

type ExtImpAdtrgtme

type ExtImpAdtrgtme struct {
	SiteID uint64 `json:"site_id"`
}

ExtImpAdtrgtme defines the contract for bidrequest.imp[i].ext.prebid.bidder.adtrgtme

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.prebid.bidder.adyoulike

type ExtImpAlgorix

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.prebid.bidder.algorix

type ExtImpAlkimi added in v2.1.0

type ExtImpAlkimi struct {
	Token      string  `json:"token"`
	BidFloor   float64 `json:"bidFloor"`
	Instl      int8    `json:"instl"`
	Exp        int64   `json:"exp"`
	AdUnitCode string  `json:"adUnitCode"`
}

type ExtImpApacdex

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

type ExtImpAppnexus

type ExtImpAppnexus struct {
	DeprecatedPlacementId    jsonutil.StringInt     `json:"placementId"`
	LegacyInvCode            string                 `json:"invCode"`
	LegacyTrafficSourceCode  string                 `json:"trafficSourceCode"`
	PlacementId              jsonutil.StringInt     `json:"placement_id"`
	InvCode                  string                 `json:"inv_code"`
	Member                   string                 `json:"member"`
	Keywords                 ExtImpAppnexusKeywords `json:"keywords"`
	TrafficSourceCode        string                 `json:"traffic_source_code"`
	Reserve                  float64                `json:"reserve"`
	Position                 string                 `json:"position"`
	UsePaymentRule           *bool                  `json:"use_pmt_rule"`
	DeprecatedUsePaymentRule *bool                  `json:"use_payment_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"`
	ExtInvCode    string          `json:"ext_inv_code"`
	ExternalImpId string          `json:"external_imp_id"`
}

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

type ExtImpAppnexusKeywords

type ExtImpAppnexusKeywords string

func (*ExtImpAppnexusKeywords) String

func (ks *ExtImpAppnexusKeywords) String() string

func (*ExtImpAppnexusKeywords) UnmarshalJSON

func (ks *ExtImpAppnexusKeywords) UnmarshalJSON(b []byte) error

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.prebid.bidder.avocet

type ExtImpAxonix

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 ExtImpBluesea

type ExtImpBluesea struct {
	PubId string `json:"pubid"`
	Token string `json:"token"`
}

type ExtImpBrave

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

type ExtImpCadentApertureMX

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

type ExtImpCcx

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

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"`
	PlacementId string `json:"placementid,omitempty"`
}

ExtImpConsumable defines the contract for bidrequest.imp[i].ext.prebid.bidder.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.prebid.bidder.criteo

type ExtImpDXKulture

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

ExtImpDXKulture defines the contract for bidrequest.imp[i].ext.prebid.bidder.dxkulture

type ExtImpData

type ExtImpData struct {
	PbAdslot string              `json:"pbadslot,omitempty"`
	AdServer *ExtImpDataAdServer `json:"adserver,omitempty"`
}

type ExtImpDataAdServer

type ExtImpDataAdServer struct {
	Name   string `json:"name"`
	AdSlot string `json:"adslot"`
}

type ExtImpDatablocks

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

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

type ExtImpDecenterAds

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

type ExtImpDeepintent

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

type ExtImpDianomi

type ExtImpDianomi struct {
	SmartadId json.Number `json:"smartadId,omitempty"`
	PriceType string      `json:"priceType,omitempty"`
}

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.prebid.bidder.eplanning

type ExtImpExtraDataSmaato

type ExtImpExtraDataSmaato struct {
	Skadn json.RawMessage `json:"skadn,omitempty"`
}

ExtImpExtraDataSmaato defines extra properties from imp[i].ext object

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.prebid.bidder.gamma

type ExtImpGamoshi

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

ExtImpGamoshi defines the contract for bidrequest.imp[i].ext.prebid.bidder.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.prebid.bidder.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"`
	Product string  `json:"product,omitempty"`
}

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

type ExtImpGumGumBanner

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.prebid.bidder.gumgum.banner

type ExtImpGumGumVideo

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

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

type ExtImpHuaweiAds

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 ExtImpImds

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

ExtImpImds defines the contract for bidrequest.imp[i].ext.prebid.bidder.imds

type ExtImpImpactify

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

ExtImpImpactify defines the contract for bidrequest.imp[i].ext.prebid.bidder.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"`
	Sid    string `json:"sid"`
}

ExtImpIx defines the contract for bidrequest.imp[i].ext.prebid.bidder.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 ExtImpLockerDome

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

ExtImpLockerDome defines the contract for bidrequest.imp[i].ext.prebid.bidder.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.prebid.bidder.madvertise

type ExtImpMarsmedia

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

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

type ExtImpMedianet

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.prebid.bidder.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.prebid.bidder.mobilefuse

type ExtImpNoBid

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

type ExtImpOms added in v2.1.0

type ExtImpOms struct {
	PublisherID string `json:"pid"`
}

ExtImpOms defines the contract for bidrequest.imp[i].ext.prebid.bidder.oms

type ExtImpOnetag

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

type ExtImpOpenWeb

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.prebid.bidder.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.prebid.bidder.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.prebid.bidder.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.prebid.bidder.outbrain

type ExtImpOutbrainPublisher

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

type ExtImpOwnAdx

type ExtImpOwnAdx struct {
	SspId   string `json:"sspId"`
	SeatId  string `json:"seatId"`
	TokenId string `json:"tokenId"`
}

type ExtImpPrebid

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

	// 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,omitempty"`

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

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

	Passthrough json.RawMessage `json:"passthrough,omitempty"`

	Floors *ExtImpPrebidFloors `json:"floors,omitempty"`
}

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

type ExtImpPrebidFloors

type ExtImpPrebidFloors struct {
	FloorRule      string  `json:"floorrule,omitempty"`
	FloorRuleValue float64 `json:"floorrulevalue,omitempty"`
	FloorValue     float64 `json:"floorvalue,omitempty"`
	FloorMin       float64 `json:"floormin,omitempty"`
	FloorMinCur    string  `json:"floorminCur,omitempty"`
}

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.prebid.bidder.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 ExtImpPwbid

type ExtImpPwbid struct {
	SiteId   string  `json:"siteId"`
	BidFloor float32 `json:"bidFloor"`
	IsTest   bool    `json:"isTest"`
}

type ExtImpRTBHouse

type ExtImpRTBHouse struct {
	PublisherId string `json:"publisherId"`
	Region      string `json:"region"`

	BidFloor float64 `json:"bidfloor,omitempty"`
	Channel  string  `json:"channel,omitempty"`
}

ExtImpRTBHouse defines the contract for bidrequest.imp[i].ext.prebid.bidder.rtbhouse

type ExtImpRichaudience

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"`
	BidOnMultiformat bool               `json:"bidonmultiformat,omitempty"`
	Keywords         []string           `json:"keywords,omitempty"`
	Visitor          json.RawMessage    `json:"visitor,omitempty"`
	Video            rubiconVideoParams `json:"video"`
	Debug            impExtRubiconDebug `json:"debug,omitempty"`
	PChain           string             `json:"pchain,omitempty"`
}

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

type ExtImpSaLunamedia

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

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.prebid.bidder.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 the identifier for specific ad placement or ad tag AdBreakId is the 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.prebid.bidder.smartadserver

type ExtImpSmartclip

type ExtImpSmartclip struct {
	TagID       string `json:"tagId"`
	PublisherID string `json:"publisherId"`
	SiteID      string `json:"siteId"`
	AppID       string `json:"appId"`
	BundleID    string `json:"bundleId"`
	StoreURL    string `json:"storeUrl"`
}

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,omitempty"`
	AdUnitCode string  `json:"adunitcode,omitempty"`
}

type ExtImpSovrnXsp added in v2.3.0

type ExtImpSovrnXsp 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 ExtImpSspbc

type ExtImpSspbc struct {
	SiteId string `json:"siteId"`
	Id     string `json:"id"`
	IsTest int    `json:"test"`
}

type ExtImpStroeerCore

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

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 ExtImpTeads

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

type ExtImpTelaria

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

type ExtImpTpmn

type ExtImpTpmn struct {
	InventoryId int `json:"inventoryId"`
}

ExtImpTpmn defines TPMN specifiec param

type ExtImpTrafficGate

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.prebid.bidder.triplelift

type ExtImpUcfunnel

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

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

type ExtImpUndertone

type ExtImpUndertone struct {
	PublisherID int `json:"publisherId"`
	PlacementID int `json:"placementId"`
}

type ExtImpUnicorn

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

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

type ExtImpUnruly

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

type ExtImpVideoByte

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

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

type ExtImpVideoHeroes

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

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.prebid.bidder.vrtcal

type ExtImpYahooAds

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

ExtImpYahooAds defines the contract for bidrequest.imp[i].ext.prebid.bidder.yahooAds

type ExtImpYahooAdvertising

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

ExtImpYahooAdvertising defines the contract for bidrequest.imp[i].ext.prebid.bidder.yahooAdvertising

type ExtImpYahooSSP

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

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

type ExtImpYeahmobi

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

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

type ExtImpYieldlab

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

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

type ExtImpYieldmo

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

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

type ExtImpYieldone

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

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

type ExtImpZeroClickFraud

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

ExtImpZeroClickFraud defines the contract for bidrequest.imp[i].ext.prebid.bidder.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.prebid.bidder.kayzen

type ExtKrushmedia

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

ExtKrushmedia defines imp[0].ext object structure

type ExtLmKiviads

type ExtLmKiviads struct {
	Env string `json:"env"`
	Pid string `json:"pid"`
}

type ExtMotorik

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

type ExtMultiBid

type ExtMultiBid struct {
	Bidder                 string   `json:"bidder,omitempty"`
	Bidders                []string `json:"bidders,omitempty"`
	MaxBids                *int     `json:"maxbids,omitempty"`
	TargetBidderCodePrefix string   `json:"targetbiddercodeprefix,omitempty"`
}

func ValidateAndBuildExtMultiBid

func ValidateAndBuildExtMultiBid(prebid *ExtRequestPrebid) ([]*ExtMultiBid, []error)

func (ExtMultiBid) String

func (m ExtMultiBid) String() string

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 ExtRelevantDigital added in v2.2.0

type ExtRelevantDigital struct {
	AccountId   string `json:"accountId"`
	PlacementId string `json:"placementId"`
	Host        string `json:"pbsHost"`
	PbsBufferMs int    `json:"pbsBufferMs"`
}

type ExtRequest

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

ExtRequest defines the contract for bidrequest.ext

type ExtRequestCurrency

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

type ExtRequestPrebid

type ExtRequestPrebid struct {
	AdServerTargeting    []AdServerTarget                `json:"adservertargeting,omitempty"`
	Aliases              map[string]string               `json:"aliases,omitempty"`
	AliasGVLIDs          map[string]uint16               `json:"aliasgvlids,omitempty"`
	BidAdjustmentFactors map[string]float64              `json:"bidadjustmentfactors,omitempty"`
	BidAdjustments       *ExtRequestPrebidBidAdjustments `json:"bidadjustments,omitempty"`
	BidderConfigs        []BidderConfig                  `json:"bidderconfig,omitempty"`
	BidderParams         json.RawMessage                 `json:"bidderparams,omitempty"`
	Cache                *ExtRequestPrebidCache          `json:"cache,omitempty"`
	Channel              *ExtRequestPrebidChannel        `json:"channel,omitempty"`
	CurrencyConversions  *ExtRequestCurrency             `json:"currency,omitempty"`
	Data                 *ExtRequestPrebidData           `json:"data,omitempty"`
	Debug                bool                            `json:"debug,omitempty"`
	Events               json.RawMessage                 `json:"events,omitempty"`
	Experiment           *Experiment                     `json:"experiment,omitempty"`
	Floors               *PriceFloorRules                `json:"floors,omitempty"`
	Integration          string                          `json:"integration,omitempty"`
	MultiBid             []*ExtMultiBid                  `json:"multibid,omitempty"`
	MultiBidMap          map[string]ExtMultiBid          `json:"-"`
	Passthrough          json.RawMessage                 `json:"passthrough,omitempty"`
	SChains              []*ExtRequestPrebidSChain       `json:"schains,omitempty"`
	Sdk                  *ExtRequestSdk                  `json:"sdk,omitempty"`
	Server               *ExtRequestPrebidServer         `json:"server,omitempty"`
	StoredRequest        *ExtStoredRequest               `json:"storedrequest,omitempty"`
	SupportDeals         bool                            `json:"supportdeals,omitempty"`
	Targeting            *ExtRequestTargeting            `json:"targeting,omitempty"`

	//AlternateBidderCodes is populated with host's AlternateBidderCodes config if not defined in request
	AlternateBidderCodes *ExtAlternateBidderCodes `json:"alternatebiddercodes,omitempty"`

	// Macros specifies list of custom macros along with the values. This is used while forming
	// the tracker URLs, where PBS will replace the Custom Macro with its value with url-encoding
	Macros map[string]string `json:"macros,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"`

	// ReturnAllBidStatus if true populates bidresponse.ext.prebid.seatnonbid with all bids which was
	// either rejected, nobid, input error
	ReturnAllBidStatus bool `json:"returnallbidstatus,omitempty"`

	// Trace controls the level of detail in the output information returned from executing hooks.
	// There are two options:
	// - verbose: sets maximum level of output information
	// - basic: excludes debugmessages and analytic_tags from output
	// any other value or an empty string disables trace output at all.
	Trace string `json:"trace,omitempty"`
}

ExtRequestPrebid defines the contract for bidrequest.ext.prebid

func (*ExtRequestPrebid) Clone

func (erp *ExtRequestPrebid) Clone() *ExtRequestPrebid

type ExtRequestPrebidBidAdjustments

type ExtRequestPrebidBidAdjustments struct {
	MediaType MediaType `json:"mediatype,omitempty"`
}

ExtRequestPrebidBidAdjustments defines the contract for bidrequest.ext.prebid.bidadjustments

type ExtRequestPrebidCache

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

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

type ExtRequestPrebidCacheBids

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

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

type ExtRequestPrebidCacheVAST

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

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

type ExtRequestPrebidChannel

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  openrtb2.SupplyChain `json:"schain"`
}

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

type ExtRequestPrebidServer

type ExtRequestPrebidServer struct {
	ExternalUrl string `json:"externalurl"`
	GvlID       int    `json:"gvlid"`
	DataCenter  string `json:"datacenter"`
}

type ExtRequestSdk

type ExtRequestSdk struct {
	Renderers []ExtRequestSdkRenderer `json:"renderers,omitempty"`
}

type ExtRequestSdkRenderer

type ExtRequestSdkRenderer struct {
	Name    string          `json:"name,omitempty"`
	Version string          `json:"version,omitempty"`
	Data    json.RawMessage `json:"data,omitempty"`
}

type ExtRequestTargeting

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

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

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 ExtResponseNonBidPrebid

type ExtResponseNonBidPrebid struct {
	Bid NonBidObject `json:"bid"`
}

ExtResponseNonBidPrebid represents bidresponse.ext.prebid.seatnonbid[].nonbid[].ext

type ExtResponsePrebid

type ExtResponsePrebid struct {
	AuctionTimestamp int64             `json:"auctiontimestamp,omitempty"`
	Passthrough      json.RawMessage   `json:"passthrough,omitempty"`
	Modules          json.RawMessage   `json:"modules,omitempty"`
	Fledge           *Fledge           `json:"fledge,omitempty"`
	Targeting        map[string]string `json:"targeting,omitempty"`
	// SeatNonBid holds the array of Bids which are either rejected, no bids inside bidresponse.ext.prebid.seatnonbid
	SeatNonBid []SeatNonBid `json:"seatnonbid,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 ExtScreencore

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

type ExtSilverMob

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

ExtSilverMob defines the contract for bidrequest.imp[i].ext.prebid.bidder.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

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.prebid.bidder.smartyads

type ExtSource

type ExtSource struct {
	SChain *openrtb2.SupplyChain `json:"schain"`
}

ExtSource defines the contract for bidrequest.source.ext

type ExtStoredAuctionResponse

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

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

type ExtStoredBidResponse

type ExtStoredBidResponse struct {
	ID           string `json:"id"`
	Bidder       string `json:"bidder"`
	ReplaceImpId *bool  `json:"replaceimpid"`
}

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"`

	ConsentedProvidersSettings *ConsentedProvidersSettingsIn `json:"ConsentedProvidersSettings,omitempty"`

	ConsentedProvidersSettingsParsed *ConsentedProvidersSettingsOut `json:"consented_providers_settings,omitempty"`

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

	Eids []openrtb2.EID `json:"eids,omitempty"`
}

ExtUser defines the contract for bidrequest.user.ext

type ExtUserDataDeviceIdHuaweiAds

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

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

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 ExtXeworks

type ExtXeworks struct {
	Env string `json:"env"`
	Pid string `json:"pid"`
}

type Fledge

type Fledge struct {
	AuctionConfigs []*FledgeAuctionConfig `json:"auctionconfigs,omitempty"`
}

FledgeResponse defines the contract for bidresponse.ext.fledge

type FledgeAuctionConfig

type FledgeAuctionConfig struct {
	ImpId   string          `json:"impid"`
	Bidder  string          `json:"bidder,omitempty"`
	Adapter string          `json:"adapter,omitempty"`
	Config  json.RawMessage `json:"config"`
}

FledgeAuctionConfig defines the container for bidresponse.ext.fledge.auctionconfigs[]

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 ImpExt

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

func CreateImpExtForTesting

func CreateImpExtForTesting(ext map[string]json.RawMessage, prebid *ExtImpPrebid) ImpExt

func (*ImpExt) Clone

func (e *ImpExt) Clone() *ImpExt

func (*ImpExt) Dirty

func (e *ImpExt) Dirty() bool

func (*ImpExt) GetData

func (e *ImpExt) GetData() *ExtImpData

func (*ImpExt) GetExt

func (e *ImpExt) GetExt() map[string]json.RawMessage

func (*ImpExt) GetGpId

func (e *ImpExt) GetGpId() string

func (*ImpExt) GetOrCreatePrebid

func (e *ImpExt) GetOrCreatePrebid() *ExtImpPrebid

func (*ImpExt) GetPrebid

func (e *ImpExt) GetPrebid() *ExtImpPrebid

func (*ImpExt) GetTid

func (e *ImpExt) GetTid() string

func (*ImpExt) SetExt

func (e *ImpExt) SetExt(ext map[string]json.RawMessage)

func (*ImpExt) SetPrebid

func (e *ImpExt) SetPrebid(prebid *ExtImpPrebid)

func (*ImpExt) SetTid

func (e *ImpExt) SetTid(tid string)

type ImpExtAdQuery

type ImpExtAdQuery struct {
	PlacementID string `json:"placementId"`
	Type        string `json:"type"`
}

type ImpExtAdnunitus

type ImpExtAdnunitus struct {
	Auid      string `json:"auId"`
	Network   string `json:"network"`
	NoCookies bool   `json:"noCookies"`
	MaxDeals  int    `json:"maxDeals"`
	BidType   string `json:"bidType,omitempty"`
}

type ImpExtAdsinteractive

type ImpExtAdsinteractive struct {
	AdUnit string `json:"adUnit"`
}

type ImpExtAppush

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

type ImpExtAxis

type ImpExtAxis struct {
	Integration string `json:"integration,omitempty"`
	Token       string `json:"token,omitempty"`
}

type ImpExtBeyondMedia

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

type ImpExtBidstack

type ImpExtBidstack struct {
	PublisherID string `json:"publisherId"`
}

type ImpExtBliink

type ImpExtBliink struct {
	TagID    string `json:"tagId"`
	ImageUrl string `json:"imageUrl"`
}

type ImpExtBmtm

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

type ImpExtBoldwin

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

type ImpExtCWire

type ImpExtCWire struct {
	PlacementID int      `json:"placementId,omitempty"`
	PageID      int      `json:"pageId,omitempty"`
	CwCreative  string   `json:"cwcreative,omitempty"`
	CwDebug     bool     `json:"cwdebug,omitempty"`
	CwFeatures  []string `json:"cwfeatures,omitempty"`
}

ImpExtCwire defines the contract for MakeRequests `request.imp[i].ext.bidder`

type ImpExtCompass

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

type ImpExtDefinemedia

type ImpExtDefinemedia struct {
	MandantID int64 `json:"mandantId"`
	AdslotID  int64 `json:"adslotId"`
}

type ImpExtEdge226

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

type ImpExtEmtv

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

type ImpExtEpom

type ImpExtEpom struct {
}

type ImpExtFRVRAdn

type ImpExtFRVRAdn struct {
	PublisherID string `json:"publisher_id"`
	AdUnitID    string `json:"ad_unit_id"`
}

type ImpExtFlipp

type ImpExtFlipp struct {
	PublisherNameIdentifier string             `json:"publisherNameIdentifier"`
	CreativeType            string             `json:"creativeType"`
	SiteID                  int64              `json:"siteId"`
	ZoneIds                 []int64            `json:"zoneIds,omitempty"`
	UserKey                 string             `json:"userKey,omitempty"`
	Options                 ImpExtFlippOptions `json:"options,omitempty"`
}

type ImpExtFlippOptions

type ImpExtFlippOptions struct {
	StartCompact bool   `json:"startCompact,omitempty"`
	DwellExpand  bool   `json:"dwellExpand,omitempty"`
	ContentCode  string `json:"contentCode,omitempty"`
}

type ImpExtFoo

type ImpExtFoo struct {
	SiteID      string `json:"siteId"`
	PublisherID string `json:"publisherId"`
	PlacementID string `json:"placementId"`
	RateLimit   string `json:"rateLimit"`
}

type ImpExtFreewheelSSP

type ImpExtFreewheelSSP struct {
	ZoneId jsonutil.StringInt `json:"zoneId"`
}

type ImpExtGlobalsun

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

type ImpExtIQZone

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

type ImpExtInfytv

type ImpExtInfytv struct {
	PlacementID string `json:"placementId"`
	PublisherID string `json:"publisherId"`
}

type ImpExtKargo

type ImpExtKargo struct {
	PlacementId string `json:"placementId"`
	AdSlotID    string `json:"adSlotID"` // Deprecated - Use `placementId`
}

type ImpExtKiviads

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

type ImpExtLemmaDigital

type ImpExtLemmaDigital struct {
	PublisherId int `json:"pid"`
	AdId        int `json:"aid"`
}

type ImpExtLiftoff

type ImpExtLiftoff struct {
	BidToken       string `json:"bid_token"`
	PubAppStoreID  string `json:"app_store_id"`
	PlacementRefID string `json:"placement_reference_id"`
}

type ImpExtLimelightDigital

type ImpExtLimelightDigital struct {
	Host        string      `json:"host"`
	PublisherID json.Number `json:"publisherId"`
}

type ImpExtLogan

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

type ImpExtMabidder

type ImpExtMabidder struct {
	Ppid string `json:"ppid"`
}

type ImpExtMgidX

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

type ImpExtNextMillennium

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

type ImpExtOperaads

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 ImpExtPgamSsp

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

type ImpExtPrebid

type ImpExtPrebid struct {
	Floors Price `json:"floors,omitempty"`
}

type ImpExtRise

type ImpExtRise struct {
	PublisherID string `json:"publisher_id"`
	Org         string `json:"org"`
}

ImpExtRise defines the contract for bidrequest.imp[i].ext.prebid.bidder.rise

type ImpExtSeedingAlliance

type ImpExtSeedingAlliance struct {
	AdUnitID string `json:"adUnitId"`
	SeatID   string `json:"seatId"`
}

type ImpExtSilverpush

type ImpExtSilverpush struct {
	PublisherId string  `json:"publisherId"`
	BidFloor    float64 `json:"bidfloor"`
}

ImpExtSilverpush defines the contract for bidrequest.imp[i].ext.prebid.bidder.silverpush PublisherId is mandatory parameters

type ImpExtTaboola

type ImpExtTaboola struct {
	PublisherId     string   `json:"publisherId"`
	PublisherDomain string   `json:"publisherDomain"`
	BidFloor        float64  `json:"bidfloor"`
	TagId           string   `json:"tagid"`
	TagID           string   `json:"tagId"`
	BCat            []string `json:"bcat"`
	BAdv            []string `json:"badv"`
	PageType        string   `json:"pageType"`
	Position        *int     `json:"position"`
}

type ImpExtVidoomy

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

type ImpExtVisibleMeasures

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

type ImpExtVox

type ImpExtVox struct {
	PlacementID  string   `json:"placementId"`
	ImageUrl     string   `json:"imageUrl"`
	DisplaySizes []string `json:"displaySizes"`
}

type ImpFloorExt

type ImpFloorExt struct {
	FloorRule      string  `json:"floorrule,omitempty"`
	FloorRuleValue float64 `json:"floorrulevalue,omitempty"`
	FloorValue     float64 `json:"floorvalue,omitempty"`
}

type ImpWrapper

type ImpWrapper struct {
	*openrtb2.Imp
	// contains filtered or unexported fields
}

ImpWrapper wraps an OpenRTB impression object to provide storage for unmarshalled ext fields, so they will not need to be unmarshalled multiple times. It is intended to use the ImpWrapper via the RequestWrapper and follow the same usage conventions.

func (*ImpWrapper) Clone

func (w *ImpWrapper) Clone() *ImpWrapper

func (*ImpWrapper) GetImpExt

func (w *ImpWrapper) GetImpExt() (*ImpExt, error)

func (*ImpWrapper) RebuildImp

func (w *ImpWrapper) RebuildImp() error

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 MediaType

type MediaType struct {
	Banner         map[BidderName]AdjustmentsByDealID `json:"banner,omitempty"`
	VideoInstream  map[BidderName]AdjustmentsByDealID `json:"video-instream,omitempty"`
	VideoOutstream map[BidderName]AdjustmentsByDealID `json:"video-outstream,omitempty"`
	Audio          map[BidderName]AdjustmentsByDealID `json:"audio,omitempty"`
	Native         map[BidderName]AdjustmentsByDealID `json:"native,omitempty"`
	WildCard       map[BidderName]AdjustmentsByDealID `json:"*,omitempty"`
}

MediaType defines contract for bidrequest.ext.prebid.bidadjustments.mediatype BidderName will map to a DealID that will map to a slice of bid adjustments

type MediaTypePriceGranularity

type MediaTypePriceGranularity struct {
	Banner *PriceGranularity `json:"banner,omitempty"`
	Video  *PriceGranularity `json:"video,omitempty"`
	Native *PriceGranularity `json:"native,omitempty"`
}

MediaTypePriceGranularity specify price granularity configuration at the bid type level

type NonBid

type NonBid struct {
	ImpId      string    `json:"impid"`
	StatusCode int       `json:"statuscode"`
	Ext        NonBidExt `json:"ext"`
}

NonBid represnts the Non Bid Reason (statusCode) for given impression ID

type NonBidExt

type NonBidExt struct {
	Prebid ExtResponseNonBidPrebid `json:"prebid"`
}

type NonBidObject

type NonBidObject struct {
	Price   float64                 `json:"price,omitempty"`
	ADomain []string                `json:"adomain,omitempty"`
	CatTax  adcom1.CategoryTaxonomy `json:"cattax,omitempty"`
	Cat     []string                `json:"cat,omitempty"`
	DealID  string                  `json:"dealid,omitempty"`
	W       int64                   `json:"w,omitempty"`
	H       int64                   `json:"h,omitempty"`
	Dur     int64                   `json:"dur,omitempty"`
	MType   openrtb2.MarkupType     `json:"mtype,omitempty"`

	OriginalBidCPM float64 `json:"origbidcpm,omitempty"`
	OriginalBidCur string  `json:"origbidcur,omitempty"`
}

NonBidObject is subset of Bid object with exact json signature defined at https://github.com/prebid/openrtb/blob/v19.0.0/openrtb2/bid.go It also contains the custom fields

type ORTB2

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

type Options

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 Price

type Price struct {
	FloorMin    float64 `json:"floormin,omitempty"`
	FloorMinCur string  `json:"floormincur,omitempty"`
}

type PriceFloorData

type PriceFloorData struct {
	Currency            string                 `json:"currency,omitempty"`
	SkipRate            int                    `json:"skiprate,omitempty"`
	FloorsSchemaVersion string                 `json:"floorsschemaversion,omitempty"`
	ModelTimestamp      int                    `json:"modeltimestamp,omitempty"`
	ModelGroups         []PriceFloorModelGroup `json:"modelgroups,omitempty"`
	FloorProvider       string                 `json:"floorprovider,omitempty"`
}

func (*PriceFloorData) DeepCopy added in v2.1.0

func (data *PriceFloorData) DeepCopy() *PriceFloorData

type PriceFloorEndpoint

type PriceFloorEndpoint struct {
	URL string `json:"url,omitempty"`
}

type PriceFloorEnforcement

type PriceFloorEnforcement struct {
	EnforceJS     *bool `json:"enforcejs,omitempty"`
	EnforcePBS    *bool `json:"enforcepbs,omitempty"`
	FloorDeals    *bool `json:"floordeals,omitempty"`
	BidAdjustment *bool `json:"bidadjustment,omitempty"`
	EnforceRate   int   `json:"enforcerate,omitempty"`
}

func (*PriceFloorEnforcement) DeepCopy added in v2.1.0

func (enforcement *PriceFloorEnforcement) DeepCopy() *PriceFloorEnforcement

type PriceFloorModelGroup

type PriceFloorModelGroup struct {
	Currency     string             `json:"currency,omitempty"`
	ModelWeight  *int               `json:"modelweight,omitempty"`
	ModelVersion string             `json:"modelversion,omitempty"`
	SkipRate     int                `json:"skiprate,omitempty"`
	Schema       PriceFloorSchema   `json:"schema,omitempty"`
	Values       map[string]float64 `json:"values,omitempty"`
	Default      float64            `json:"default,omitempty"`
}

func (PriceFloorModelGroup) Copy

type PriceFloorRules

type PriceFloorRules struct {
	FloorMin           float64                `json:"floormin,omitempty"`
	FloorMinCur        string                 `json:"floormincur,omitempty"`
	SkipRate           int                    `json:"skiprate,omitempty"`
	Location           *PriceFloorEndpoint    `json:"floorendpoint,omitempty"`
	Data               *PriceFloorData        `json:"data,omitempty"`
	Enforcement        *PriceFloorEnforcement `json:"enforcement,omitempty"`
	Enabled            *bool                  `json:"enabled,omitempty"`
	Skipped            *bool                  `json:"skipped,omitempty"`
	FloorProvider      string                 `json:"floorprovider,omitempty"`
	FetchStatus        string                 `json:"fetchstatus,omitempty"`
	PriceFloorLocation string                 `json:"location,omitempty"`
}

PriceFloorRules defines the contract for bidrequest.ext.prebid.floors

func (*PriceFloorRules) DeepCopy added in v2.1.0

func (pf *PriceFloorRules) DeepCopy() *PriceFloorRules

func (*PriceFloorRules) GetEnabled

func (Floors *PriceFloorRules) GetEnabled() bool

GetEnabled will check if floors is enabled in request

func (*PriceFloorRules) GetEnforceDealsFlag

func (Floors *PriceFloorRules) GetEnforceDealsFlag() bool

GetEnforceDealsFlag will return FloorDeals flag in request

func (*PriceFloorRules) GetEnforcePBS

func (Floors *PriceFloorRules) GetEnforcePBS() bool

GetEnforcePBS will check if floors enforcement is enabled in request

func (*PriceFloorRules) GetEnforceRate

func (Floors *PriceFloorRules) GetEnforceRate() int

GetEnforceRate will return enforcement rate in request

func (*PriceFloorRules) GetFloorsSkippedFlag

func (Floors *PriceFloorRules) GetFloorsSkippedFlag() bool

GetFloorsSkippedFlag will return floors skipped flag

type PriceFloorSchema

type PriceFloorSchema struct {
	Fields    []string `json:"fields,omitempty"`
	Delimiter string   `json:"delimiter,omitempty"`
}

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 or bidrequest.ext.prebid.targeting.mediatypepricegranularity.banner|video|native

func NewPriceGranularityDefault

func NewPriceGranularityDefault() PriceGranularity

func NewPriceGranularityFromLegacyID

func NewPriceGranularityFromLegacyID(v string) (PriceGranularity, bool)

NewPriceGranularityFromLegacyID converts a legacy string into the new PriceGranularity structure.

func (*PriceGranularity) UnmarshalJSON

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

type PriceGranularityRaw

type PriceGranularityRaw PriceGranularity

type RegExt

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

func (*RegExt) Clone

func (re *RegExt) Clone() *RegExt

func (*RegExt) Dirty

func (re *RegExt) Dirty() bool

func (*RegExt) GetExt

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

func (*RegExt) GetGDPR

func (re *RegExt) GetGDPR() *int8

func (*RegExt) GetUSPrivacy

func (re *RegExt) GetUSPrivacy() string

func (*RegExt) SetExt

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

func (*RegExt) SetGDPR

func (re *RegExt) SetGDPR(gdpr *int8)

func (*RegExt) SetUSPrivacy

func (re *RegExt) SetUSPrivacy(usPrivacy string)

type RequestExt

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

func (*RequestExt) Clone

func (re *RequestExt) Clone() *RequestExt

func (*RequestExt) Dirty

func (re *RequestExt) Dirty() bool

func (*RequestExt) GetExt

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

func (*RequestExt) GetPrebid

func (re *RequestExt) GetPrebid() *ExtRequestPrebid

func (*RequestExt) GetSChain

func (re *RequestExt) GetSChain() *openrtb2.SupplyChain

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

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

func (*RequestExt) SetPrebid

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

func (*RequestExt) SetSChain

func (re *RequestExt) SetSChain(schain *openrtb2.SupplyChain)

type RequestWrapper

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

RequestWrapper wraps the OpenRTB request to provide a storage location for unmarshalled ext fields, so they will not need to be unmarshalled multiple times.

To start with, the wrapper can be created for a request 'req' via: reqWrapper := openrtb_ext.RequestWrapper{BidRequest: req}

In order to access an object's ext field, fetch it via: userExt, err := reqWrapper.GetUserExt() or other Get method as appropriate.

To read or write values, use the Ext objects Get and Set methods. If you need to write to a field that has its own Set method, use that to set the value rather than using SetExt() with that change done in the map; when rewritting the ext JSON the code will overwrite the the values in the map with the values stored in the seperate fields.

userPrebid := userExt.GetPrebid() userExt.SetConsent(consentString)

The GetExt() and SetExt() should only be used to access fields that have not already been resolved in the object. Using SetExt() at all is a strong hint that the ext object should be extended to support the new fields being set in the map.

NOTE: The RequestWrapper methods (particularly the ones calling (un)Marshal are not thread safe)

func (*RequestWrapper) Clone

func (rw *RequestWrapper) Clone() *RequestWrapper

func (*RequestWrapper) GetAppExt

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

func (*RequestWrapper) GetDOOHExt

func (rw *RequestWrapper) GetDOOHExt() (*DOOHExt, error)

func (*RequestWrapper) GetDeviceExt

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

func (*RequestWrapper) GetImp

func (rw *RequestWrapper) GetImp() []*ImpWrapper

func (*RequestWrapper) GetRegExt

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

func (*RequestWrapper) GetRequestExt

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

func (*RequestWrapper) GetSiteExt

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

func (*RequestWrapper) GetSourceExt

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

func (*RequestWrapper) GetUserExt

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

func (*RequestWrapper) LenImp

func (rw *RequestWrapper) LenImp() int

LenImp returns the number of impressions without causing the creation of ImpWrapper objects.

func (*RequestWrapper) RebuildRequest

func (rw *RequestWrapper) RebuildRequest() error

func (*RequestWrapper) SetImp

func (rw *RequestWrapper) SetImp(imps []*ImpWrapper)

type SeatNonBid

type SeatNonBid struct {
	NonBid []NonBid        `json:"nonbid"`
	Seat   string          `json:"seat"`
	Ext    json.RawMessage `json:"ext"`
}

SeatNonBid is collection of NonBid objects with seat information

type SiteExt

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

func (*SiteExt) Clone

func (se *SiteExt) Clone() *SiteExt

func (*SiteExt) Dirty

func (se *SiteExt) Dirty() bool

func (*SiteExt) GetAmp

func (se *SiteExt) GetAmp() *int8

func (*SiteExt) GetExt

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

func (*SiteExt) SetAmp

func (se *SiteExt) SetAmp(amp *int8)

func (*SiteExt) SetExt

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

type SourceExt

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

func (*SourceExt) Clone

func (se *SourceExt) Clone() *SourceExt

func (*SourceExt) Dirty

func (se *SourceExt) Dirty() bool

func (*SourceExt) GetExt

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

func (*SourceExt) GetSChain

func (se *SourceExt) GetSChain() *openrtb2.SupplyChain

func (*SourceExt) SetExt

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

func (*SourceExt) SetSChain

func (se *SourceExt) SetSChain(schain *openrtb2.SupplyChain)

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

func (key TargetingKey) TruncateKey(maxLength int) string

type UserExt

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

func (*UserExt) Clone

func (ue *UserExt) Clone() *UserExt

func (*UserExt) Dirty

func (ue *UserExt) Dirty() bool

func (*UserExt) GetConsent

func (ue *UserExt) GetConsent() *string

func (*UserExt) GetConsentedProvidersSettingsIn

func (ue *UserExt) GetConsentedProvidersSettingsIn() *ConsentedProvidersSettingsIn

GetConsentedProvidersSettingsIn() returns a reference to a copy of ConsentedProvidersSettingsIn, a struct that has a string field formatted as a Google's Additional Consent string

func (*UserExt) GetConsentedProvidersSettingsOut

func (ue *UserExt) GetConsentedProvidersSettingsOut() *ConsentedProvidersSettingsOut

GetConsentedProvidersSettingsOut() returns a reference to a copy of ConsentedProvidersSettingsOut, a struct that has an int array field listing Google's Additional Consent string elements

func (*UserExt) GetEid

func (ue *UserExt) GetEid() *[]openrtb2.EID

func (*UserExt) GetExt

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

func (*UserExt) GetPrebid

func (ue *UserExt) GetPrebid() *ExtUserPrebid

func (*UserExt) SetConsent

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

func (*UserExt) SetConsentedProvidersSettingsIn

func (ue *UserExt) SetConsentedProvidersSettingsIn(cpSettings *ConsentedProvidersSettingsIn)

SetConsentedProvidersSettingsIn() sets ConsentedProvidersSettingsIn, a struct that has a string field formatted as a Google's Additional Consent string

func (*UserExt) SetConsentedProvidersSettingsOut

func (ue *UserExt) SetConsentedProvidersSettingsOut(cpSettings *ConsentedProvidersSettingsOut)

SetConsentedProvidersSettingsIn() sets ConsentedProvidersSettingsOut, a struct that has an int array field listing Google's Additional Consent string elements. This function overrides an existing ConsentedProvidersSettingsOut object, if any

func (*UserExt) SetEid

func (ue *UserExt) SetEid(eid *[]openrtb2.EID)

func (*UserExt) SetExt

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

func (*UserExt) SetPrebid

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"`
	HbDeal     string `json:"hb_deal,omitempty"`
}

Source Files

Jump to

Keyboard shortcuts

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