openrtb_ext

package
v0.259.0 Latest Latest
Warning

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

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

Documentation

Overview

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

Most of these are defined by simple contract classes.

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

Index

Constants

View Source
const (
	HbpbConstantKey TargetingKey = "hb_pb"

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

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

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

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

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

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

	HbCategoryDurationKey TargetingKey = "hb_pb_cat_dur"
)
View Source
const (
	StoredRequestAttributes = "storedrequestattributes"
	OriginalBidCpmKey       = "origbidcpm"
	OriginalBidCurKey       = "origbidcur"
	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 added in v0.224.0

func ConvertDownTo25(r *RequestWrapper) error

func ConvertUpTo26 added in v0.224.0

func ConvertUpTo26(r *RequestWrapper) error

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 added in v0.231.0

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}

Types

type AdPod

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

type AdServerTarget added in v0.249.0

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

type Adjustment added in v0.254.0

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 added in v0.254.0

type AdjustmentsByDealID map[string][]Adjustment

AdjustmentsByDealID maps a dealID to a slice of bid adjustments

type AdsCert added in v0.220.0

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

AdsCert defines if Call Sign feature is enabled for request

type AppExt added in v0.169.0

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

func (*AppExt) Clone added in v0.254.0

func (ae *AppExt) Clone() *AppExt

func (*AppExt) Dirty added in v0.169.0

func (ae *AppExt) Dirty() bool

func (*AppExt) GetExt added in v0.169.0

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

func (*AppExt) GetPrebid added in v0.169.0

func (ae *AppExt) GetPrebid() *ExtAppPrebid

func (*AppExt) SetExt added in v0.169.0

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

func (*AppExt) SetPrebid added in v0.169.0

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

type AuctionEnvironmentType added in v0.239.0

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 added in v0.183.0

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

type BidderName

type BidderName string

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

const (
	BidderReservedAll     BidderName = "all"     // Reserved for the /info/bidders/all endpoint.
	BidderReservedContext BidderName = "context" // Reserved for first party data.
	BidderReservedData    BidderName = "data"    // Reserved for first party data.
	BidderReservedGeneral BidderName = "general" // Reserved for non-bidder specific messages when using a map keyed on the bidder name.
	BidderReservedGPID    BidderName = "gpid"    // Reserved for Global Placement ID (GPID).
	BidderReservedPrebid  BidderName = "prebid"  // Reserved for Prebid Server configuration.
	BidderReservedSKAdN   BidderName = "skadn"   // Reserved for Apple's SKAdNetwork OpenRTB extension.
	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"
	BidderAdform            BidderName = "adform"
	BidderAdgeneration      BidderName = "adgeneration"
	BidderAdhese            BidderName = "adhese"
	BidderAdkernel          BidderName = "adkernel"
	BidderAdkernelAdn       BidderName = "adkernelAdn"
	BidderAdman             BidderName = "adman"
	BidderAdmixer           BidderName = "admixer"
	BidderAdnuntius         BidderName = "adnuntius"
	BidderAdOcean           BidderName = "adocean"
	BidderAdoppler          BidderName = "adoppler"
	BidderAdot              BidderName = "adot"
	BidderAdpone            BidderName = "adpone"
	BidderAdprime           BidderName = "adprime"
	BidderAdrino            BidderName = "adrino"
	BidderAdsinteractive    BidderName = "adsinteractive"
	BidderAdsyield          BidderName = "adsyield"
	BidderAdtarget          BidderName = "adtarget"
	BidderAdtrgtme          BidderName = "adtrgtme"
	BidderAdtelligent       BidderName = "adtelligent"
	BidderAdvangelists      BidderName = "advangelists"
	BidderAdView            BidderName = "adview"
	BidderAdxcg             BidderName = "adxcg"
	BidderAdyoulike         BidderName = "adyoulike"
	BidderAJA               BidderName = "aja"
	BidderAlgorix           BidderName = "algorix"
	BidderAMX               BidderName = "amx"
	BidderApacdex           BidderName = "apacdex"
	BidderApplogy           BidderName = "applogy"
	BidderAppnexus          BidderName = "appnexus"
	BidderAppush            BidderName = "appush"
	BidderAudienceNetwork   BidderName = "audienceNetwork"
	BidderAutomatad         BidderName = "automatad"
	BidderAvocet            BidderName = "avocet"
	BidderAxis              BidderName = "axis"
	BidderAxonix            BidderName = "axonix"
	BidderBeachfront        BidderName = "beachfront"
	BidderBeintoo           BidderName = "beintoo"
	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"
	BidderBrightroll        BidderName = "brightroll"
	BidderCcx               BidderName = "ccx"
	BidderCoinzilla         BidderName = "coinzilla"
	BidderColossus          BidderName = "colossus"
	BidderCompass           BidderName = "compass"
	BidderConnectAd         BidderName = "connectad"
	BidderConsumable        BidderName = "consumable"
	BidderConversant        BidderName = "conversant"
	BidderCopper6           BidderName = "copper6"
	BidderCpmstar           BidderName = "cpmstar"
	BidderCriteo            BidderName = "criteo"
	BidderCWire             BidderName = "cwire"
	BidderDatablocks        BidderName = "datablocks"
	BidderDecenterAds       BidderName = "decenterads"
	BidderDeepintent        BidderName = "deepintent"
	BidderDefinemedia       BidderName = "definemedia"
	BidderDianomi           BidderName = "dianomi"
	BidderDmx               BidderName = "dmx"
	BidderEmtv              BidderName = "emtv"
	BidderEmxDigital        BidderName = "emx_digital"
	BidderEngageBDR         BidderName = "engagebdr"
	BidderEPlanning         BidderName = "eplanning"
	BidderEpsilon           BidderName = "epsilon"
	BidderEpom              BidderName = "epom"
	BidderEVolution         BidderName = "e_volution"
	BidderEvtech            BidderName = "evtech"
	BidderFlipp             BidderName = "flipp"
	BidderFreewheelSSP      BidderName = "freewheelssp"
	BidderFreewheelSSPOld   BidderName = "freewheel-ssp"
	BidderFRVRAdNetwork     BidderName = "frvradn"
	BidderGamma             BidderName = "gamma"
	BidderGamoshi           BidderName = "gamoshi"
	BidderGlobalsun         BidderName = "globalsun"
	BidderGrid              BidderName = "grid"
	BidderGumGum            BidderName = "gumgum"
	BidderHuaweiAds         BidderName = "huaweiads"
	BidderIionads           BidderName = "iionads"
	BidderImds              BidderName = "imds"
	BidderImpactify         BidderName = "impactify"
	BidderImprovedigital    BidderName = "improvedigital"
	BidderInfyTV            BidderName = "infytv"
	BidderInMobi            BidderName = "inmobi"
	BidderInteractiveoffers BidderName = "interactiveoffers"
	BidderInvibes           BidderName = "invibes"
	BidderIQZone            BidderName = "iqzone"
	BidderIx                BidderName = "ix"
	BidderJANet             BidderName = "janet"
	BidderJixie             BidderName = "jixie"
	BidderKargo             BidderName = "kargo"
	BidderKayzen            BidderName = "kayzen"
	BidderKidoz             BidderName = "kidoz"
	BidderKiviads           BidderName = "kiviads"
	BidderKrushmedia        BidderName = "krushmedia"
	BidderKubient           BidderName = "kubient"
	BidderLimelightDigital  BidderName = "limelightDigital"
	BidderLockerDome        BidderName = "lockerdome"
	BidderLogan             BidderName = "logan"
	BidderLogicad           BidderName = "logicad"
	BidderLunaMedia         BidderName = "lunamedia"
	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"
	BidderNanoInteractive   BidderName = "nanointeractive"
	BidderNextMillennium    BidderName = "nextmillennium"
	BidderNinthDecimal      BidderName = "ninthdecimal"
	BidderNoBid             BidderName = "nobid"
	BidderOneTag            BidderName = "onetag"
	BidderOpenWeb           BidderName = "openweb"
	BidderOpenx             BidderName = "openx"
	BidderOperaads          BidderName = "operaads"
	BidderOrbidder          BidderName = "orbidder"
	BidderOutbrain          BidderName = "outbrain"
	BidderPangle            BidderName = "pangle"
	BidderPGAM              BidderName = "pgam"
	BidderPubmatic          BidderName = "pubmatic"
	BidderPubnative         BidderName = "pubnative"
	BidderPulsepoint        BidderName = "pulsepoint"
	BidderPWBid             BidderName = "pwbid"
	BidderQuantumdex        BidderName = "quantumdex"
	BidderRevcontent        BidderName = "revcontent"
	BidderRhythmone         BidderName = "rhythmone"
	BidderRichaudience      BidderName = "richaudience"
	BidderRise              BidderName = "rise"
	BidderRTBHouse          BidderName = "rtbhouse"
	BidderRubicon           BidderName = "rubicon"
	BidderSeedingAlliance   BidderName = "seedingAlliance"
	BidderSaLunaMedia       BidderName = "sa_lunamedia"
	BidderSharethrough      BidderName = "sharethrough"
	BidderSilverMob         BidderName = "silvermob"
	BidderSmaato            BidderName = "smaato"
	BidderSmartAdserver     BidderName = "smartadserver"
	BidderSmartHub          BidderName = "smarthub"
	BidderSmartRTB          BidderName = "smartrtb"
	BidderSmartyAds         BidderName = "smartyads"
	BidderSmileWanted       BidderName = "smilewanted"
	BidderSonobi            BidderName = "sonobi"
	BidderSovrn             BidderName = "sovrn"
	BidderSspBC             BidderName = "sspBC"
	BidderStreamkey         BidderName = "streamkey"
	BidderStroeerCore       BidderName = "stroeerCore"
	BidderSuntContent       BidderName = "suntContent"
	BidderSynacormedia      BidderName = "synacormedia"
	BidderTaboola           BidderName = "taboola"
	BidderTappx             BidderName = "tappx"
	BidderTelaria           BidderName = "telaria"
	BidderTrafficGate       BidderName = "trafficgate"
	BidderTriplelift        BidderName = "triplelift"
	BidderTripleliftNative  BidderName = "triplelift_native"
	BidderTrustX            BidderName = "trustx"
	BidderUcfunnel          BidderName = "ucfunnel"
	BidderUndertone         BidderName = "undertone"
	BidderUnicorn           BidderName = "unicorn"
	BidderUnruly            BidderName = "unruly"
	BidderValueImpression   BidderName = "valueimpression"
	BidderVideoByte         BidderName = "videobyte"
	BidderVideoHeroes       BidderName = "videoheroes"
	BidderVidoomy           BidderName = "vidoomy"
	BidderViewdeos          BidderName = "viewdeos"
	BidderVisibleMeasures   BidderName = "visiblemeasures"
	BidderVisx              BidderName = "visx"
	BidderVrtcal            BidderName = "vrtcal"
	BidderXeworks           BidderName = "xeworks"
	BidderYahooAdvertising  BidderName = "yahooAdvertising"
	BidderYahooSSP          BidderName = "yahoossp"
	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 (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 added in v0.183.0

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

type ConsentedProvidersSettingsIn added in v0.231.0

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

type ConsentedProvidersSettingsOut added in v0.231.0

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 DealTier

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

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

DealTier defines the configuration of a deal tier.

type DealTierBidderMap

type DealTierBidderMap map[BidderName]DealTier

DealTierBidderMap defines a correlation between bidders and deal tiers.

func ReadDealTiersFromImp

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

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

type DeviceExt added in v0.169.0

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

func (*DeviceExt) Clone added in v0.254.0

func (de *DeviceExt) Clone() *DeviceExt

func (*DeviceExt) Dirty added in v0.169.0

func (de *DeviceExt) Dirty() bool

func (*DeviceExt) GetExt added in v0.169.0

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

func (*DeviceExt) GetPrebid added in v0.169.0

func (de *DeviceExt) GetPrebid() *ExtDevicePrebid

func (*DeviceExt) SetExt added in v0.169.0

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

func (*DeviceExt) SetPrebid added in v0.169.0

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

type Experiment added in v0.220.0

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

Experiment defines if experimental features are available for the request

type ExtAceex added in v0.175.0

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

type ExtAcuityAds

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

type ExtAdapterAlternateBidderCodes added in v0.228.0

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 added in v0.228.0

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) IsValidBidderCode added in v0.228.0

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 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 added in v0.256.0

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

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

type ExtBidPrebidVideo

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

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

type ExtBidResponse

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

ExtBidResponse defines the contract for bidresponse.ext

type ExtBidderMessage

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

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

type ExtBizzclick added in v0.187.0

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

type ExtDevice

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

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

ExtDevice defines the contract for bidrequest.device.ext

type ExtDeviceInt

type ExtDeviceInt struct {
	MinWidthPerc  int64 `json:"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 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 ExtImp added in v0.251.0

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 added in v0.208.0

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

type ExtImpAdOcean

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

type ExtImpAdView added in v0.176.0

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

type ExtImpAdf

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

type ExtImpAdgeneration

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

type ExtImpAdhese

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

type ExtImpAdkernel

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

ExtImpAdkernel defines the contract for bidrequest.imp[i].ext.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 added in v0.221.0

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 added in v0.221.0

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 added in v0.163.0

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

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

type ExtImpApacdex added in v0.188.0

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

type ExtImpApplogy

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

type ExtImpAppnexus

type ExtImpAppnexus struct {
	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 added in v0.255.0

type ExtImpAppnexusKeywords string

func (*ExtImpAppnexusKeywords) String added in v0.255.0

func (ks *ExtImpAppnexusKeywords) String() string

func (*ExtImpAppnexusKeywords) UnmarshalJSON added in v0.255.0

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 added in v0.167.0

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

type ExtImpBeachfront

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

type ExtImpBeachfrontAppIds

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

type ExtImpBeintoo

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

type ExtImpBetween

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

type ExtImpBidmachine

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

type ExtImpBidsCube

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

type ExtImpBluesea added in v0.259.0

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

type ExtImpBrave added in v0.240.0

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

type ExtImpBrightroll

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

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

type ExtImpCcx added in v0.233.0

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

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 ExtImpData added in v0.251.0

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

type ExtImpDataAdServer added in v0.251.0

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

type ExtImpDatablocks

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

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 added in v0.220.0

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 ExtImpEmxDigital

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

type ExtImpEngageBDR

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

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

type ExtImpExtraDataSmaato added in v0.257.0

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

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 added in v0.172.0

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

ExtImpGumGumBanner defines the contract for bidresponse.seatbid.bid[i].ext.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 added in v0.174.0

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

type ExtImpImds added in v0.239.0

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 added in v0.180.0

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

ExtImpImpactify defines the contract for bidrequest.imp[i].ext.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"`
}

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 ExtImpKubient

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

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

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 added in v0.195.0

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

type ExtImpMgid

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

ExtImpMgid defines the contract for bidrequest.imp[i].ext.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 ExtImpNanoInteractive

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

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

type ExtImpNinthDecimal

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

type ExtImpNoBid

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

type ExtImpOnetag

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

type ExtImpOpenWeb added in v0.175.0

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

ExtImpOpenWeb defines the contract for bidrequest.imp[i].ext.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 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 added in v0.251.0

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 added in v0.249.0

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

type ExtImpRhythmone

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

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

type ExtImpRichaudience added in v0.182.0

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

type ExtImpRubicon

type ExtImpRubicon struct {
	AccountId        json.Number        `json:"accountId"`
	SiteId           json.Number        `json:"siteId"`
	ZoneId           json.Number        `json:"zoneId"`
	Inventory        json.RawMessage    `json:"inventory,omitempty"`
	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 added in v0.166.0

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

type ExtImpSharethrough

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

type ExtImpSmaato

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

ExtImpSmaato defines the contract for bidrequest.imp[i].ext.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 ExtImpSonobi

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

type ExtImpSovrn

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

type ExtImpSspbc added in v0.219.0

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

type ExtImpStroeerCore added in v0.212.0

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 ExtImpTelaria

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

type ExtImpTrafficGate added in v0.212.0

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

type ExtImpTriplelift

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

ExtImpTriplelift defines the contract for bidrequest.imp[i].ext.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 added in v0.244.0

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 added in v0.184.0

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

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

type ExtImpVideoHeroes added in v0.237.0

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 ExtImpYahooAdvertising added in v0.259.0

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 added in v0.178.0

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

ExtImpYahooSSP defines the contract for bidrequest.imp[i].ext.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 ExtMotorik added in v0.258.0

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

type ExtMultiBid added in v0.245.0

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 added in v0.245.0

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

func (ExtMultiBid) String added in v0.245.0

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 ExtRequest

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

ExtRequest defines the contract for bidrequest.ext

type ExtRequestCurrency added in v0.163.0

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

type ExtRequestPrebid

type ExtRequestPrebid struct {
	Aliases              map[string]string         `json:"aliases,omitempty"`
	AliasGVLIDs          map[string]uint16         `json:"aliasgvlids,omitempty"`
	BidAdjustmentFactors map[string]float64        `json:"bidadjustmentfactors,omitempty"`
	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"`
	Integration          string                    `json:"integration,omitempty"`
	MultiBid             []*ExtMultiBid            `json:"multibid,omitempty"`
	Passthrough          json.RawMessage           `json:"passthrough,omitempty"`
	SChains              []*ExtRequestPrebidSChain `json:"schains,omitempty"`
	Server               *ExtRequestPrebidServer   `json:"server,omitempty"`
	StoredRequest        *ExtStoredRequest         `json:"storedrequest,omitempty"`
	SupportDeals         bool                      `json:"supportdeals,omitempty"`
	Targeting            *ExtRequestTargeting      `json:"targeting,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"`

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

	Floors      *PriceFloorRules       `json:"floors,omitempty"`
	MultiBidMap map[string]ExtMultiBid `json:"-"`
	// 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"`

	// 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"`
	AdServerTargeting []AdServerTarget                `json:"adservertargeting,omitempty"`
	BidAdjustments    *ExtRequestPrebidBidAdjustments `json:"bidadjustments,omitempty"`
	// ReturnAllBidStatus if true populates bidresponse.ext.prebid.seatnonbid with all bids which was
	// either rejected, nobid, input error
	ReturnAllBidStatus bool `json:"returnallbidstatus,omitempty"`
}

ExtRequestPrebid defines the contract for bidrequest.ext.prebid

func (*ExtRequestPrebid) Clone added in v0.254.0

func (erp *ExtRequestPrebid) Clone() *ExtRequestPrebid

type ExtRequestPrebidBidAdjustments added in v0.254.0

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 added in v0.177.0

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

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

type ExtRequestPrebidData

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

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

type ExtRequestPrebidDataEidPermission

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

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

type ExtRequestPrebidSChain

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

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

type ExtRequestPrebidServer added in v0.229.0

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

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 added in v0.259.0

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 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 added in v0.172.0

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

type ExtSmartyAds

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

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

type ExtSource added in v0.190.0

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

ExtSource defines the contract for bidrequest.source.ext

type ExtStoredAuctionResponse added in v0.199.0

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

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

type ExtStoredBidResponse added in v0.208.0

type ExtStoredBidResponse struct {
	ID           string `json:"id"`
	Bidder       string `json:"bidder"`
	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 added in v0.174.0

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

type ExtUserDataHuaweiAds added in v0.174.0

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

type 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 added in v0.257.0

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

type Fledge added in v0.239.0

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

FledgeResponse defines the contract for bidresponse.ext.fledge

type FledgeAuctionConfig added in v0.239.0

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 added in v0.228.0

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

func CreateImpExtForTesting added in v0.228.0

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

func (*ImpExt) Clone added in v0.254.0

func (e *ImpExt) Clone() *ImpExt

func (*ImpExt) Dirty added in v0.228.0

func (e *ImpExt) Dirty() bool

func (*ImpExt) GetData added in v0.251.0

func (e *ImpExt) GetData() *ExtImpData

func (*ImpExt) GetExt added in v0.228.0

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

func (*ImpExt) GetGpId added in v0.251.0

func (e *ImpExt) GetGpId() string

func (*ImpExt) GetOrCreatePrebid added in v0.228.0

func (e *ImpExt) GetOrCreatePrebid() *ExtImpPrebid

func (*ImpExt) GetPrebid added in v0.228.0

func (e *ImpExt) GetPrebid() *ExtImpPrebid

func (*ImpExt) GetTid added in v0.238.0

func (e *ImpExt) GetTid() string

func (*ImpExt) SetExt added in v0.228.0

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

func (*ImpExt) SetPrebid added in v0.228.0

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

func (*ImpExt) SetTid added in v0.238.0

func (e *ImpExt) SetTid(tid string)

type ImpExtAdnunitus added in v0.183.0

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

type ImpExtAdsinteractive added in v0.241.0

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

type ImpExtAppush added in v0.233.0

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

type ImpExtAxis added in v0.252.0

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

type ImpExtBeyondMedia added in v0.231.0

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

type ImpExtBidstack added in v0.231.0

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

type ImpExtBliink added in v0.238.0

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

type ImpExtBmtm added in v0.163.0

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

type ImpExtBoldwin added in v0.222.0

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

type ImpExtCWire added in v0.239.0

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 added in v0.188.0

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

type ImpExtDefinemedia added in v0.239.0

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

type ImpExtEmtv added in v0.255.0

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

type ImpExtEpom

type ImpExtEpom struct {
}

type ImpExtFRVRAdn added in v0.254.0

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

type ImpExtFlipp added in v0.256.0

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"`
	IP                      string             `json:"ip,omitempty"`
	Options                 ImpExtFlippOptions `json:"options,omitempty"`
}

type ImpExtFlippOptions added in v0.256.0

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

type ImpExtFreewheelSSP added in v0.234.0

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

type ImpExtGlobalsun added in v0.246.0

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

type ImpExtIQZone added in v0.173.0

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

type ImpExtInfytv added in v0.217.0

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

type ImpExtKargo added in v0.217.0

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

type ImpExtKiviads added in v0.241.0

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

type ImpExtLimelightDigital added in v0.245.0

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

type ImpExtLogan added in v0.242.0

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

type ImpExtMgidX added in v0.259.0

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

type ImpExtNextMillennium added in v0.181.0

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

type ImpExtOperaads added in v0.169.0

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

type ImpExtPangle

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

type ImpExtPrebid added in v0.251.0

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

type ImpExtRise added in v0.259.0

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

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

type ImpExtSeedingAlliance added in v0.223.0

type ImpExtSeedingAlliance struct {
	AdUnitID string `json:"adUnitID"`
}

type ImpExtSuntContent added in v0.233.0

type ImpExtSuntContent struct {
	AdUnitID string `json:"adUnitID"`
}

type ImpExtTaboola added in v0.235.0

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 added in v0.190.0

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

type ImpExtVisibleMeasures added in v0.244.0

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

type ImpFloorExt added in v0.251.0

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

type ImpWrapper added in v0.228.0

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 added in v0.254.0

func (w *ImpWrapper) Clone() *ImpWrapper

func (*ImpWrapper) GetImpExt added in v0.228.0

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

func (*ImpWrapper) RebuildImp added in v0.228.0

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 added in v0.254.0

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 added in v0.258.0

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 added in v0.259.0

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 added in v0.259.0

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

type NonBidObject added in v0.259.0

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 added in v0.183.0

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

type Options added in v0.175.0

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

type Pod

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

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

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

type PodConfig

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

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

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

type Price added in v0.251.0

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

type PriceFloorData added in v0.251.0

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

type PriceFloorEndpoint added in v0.251.0

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

type PriceFloorEnforcement added in v0.251.0

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

type PriceFloorModelGroup added in v0.251.0

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 added in v0.251.0

type PriceFloorRules added in v0.251.0

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) GetEnabled added in v0.251.0

func (Floors *PriceFloorRules) GetEnabled() bool

GetEnabled will check if floors is enabled in request

func (*PriceFloorRules) GetEnforceDealsFlag added in v0.256.0

func (Floors *PriceFloorRules) GetEnforceDealsFlag() bool

GetEnforceDealsFlag will return FloorDeals flag in request

func (*PriceFloorRules) GetEnforcePBS added in v0.256.0

func (Floors *PriceFloorRules) GetEnforcePBS() bool

GetEnforcePBS will check if floors enforcement is enabled in request

func (*PriceFloorRules) GetEnforceRate added in v0.256.0

func (Floors *PriceFloorRules) GetEnforceRate() int

GetEnforceRate will return enforcement rate in request

func (*PriceFloorRules) GetFloorsSkippedFlag added in v0.256.0

func (Floors *PriceFloorRules) GetFloorsSkippedFlag() bool

GetFloorsSkippedFlag will return floors skipped flag

type PriceFloorSchema added in v0.251.0

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 added in v0.243.0

func NewPriceGranularityDefault() PriceGranularity

func NewPriceGranularityFromLegacyID added in v0.243.0

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 added in v0.169.0

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

func (*RegExt) Clone added in v0.254.0

func (re *RegExt) Clone() *RegExt

func (*RegExt) Dirty added in v0.169.0

func (re *RegExt) Dirty() bool

func (*RegExt) GetExt added in v0.169.0

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

func (*RegExt) GetGDPR added in v0.224.0

func (re *RegExt) GetGDPR() *int8

func (*RegExt) GetUSPrivacy added in v0.169.0

func (re *RegExt) GetUSPrivacy() string

func (*RegExt) SetExt added in v0.169.0

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

func (*RegExt) SetGDPR added in v0.224.0

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

func (*RegExt) SetUSPrivacy added in v0.169.0

func (re *RegExt) SetUSPrivacy(usPrivacy string)

type RequestExt added in v0.169.0

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

func (*RequestExt) Clone added in v0.254.0

func (re *RequestExt) Clone() *RequestExt

func (*RequestExt) Dirty added in v0.169.0

func (re *RequestExt) Dirty() bool

func (*RequestExt) GetExt added in v0.169.0

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

func (*RequestExt) GetPrebid added in v0.169.0

func (re *RequestExt) GetPrebid() *ExtRequestPrebid

func (*RequestExt) GetSChain added in v0.190.0

func (re *RequestExt) GetSChain() *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 added in v0.169.0

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

func (*RequestExt) SetPrebid added in v0.169.0

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

func (*RequestExt) SetSChain added in v0.190.0

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

type RequestWrapper added in v0.169.0

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 added in v0.254.0

func (rw *RequestWrapper) Clone() *RequestWrapper

func (*RequestWrapper) GetAppExt added in v0.169.0

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

func (*RequestWrapper) GetDeviceExt added in v0.169.0

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

func (*RequestWrapper) GetImp added in v0.228.0

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

func (*RequestWrapper) GetRegExt added in v0.169.0

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

func (*RequestWrapper) GetRequestExt added in v0.169.0

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

func (*RequestWrapper) GetSiteExt added in v0.169.0

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

func (*RequestWrapper) GetSourceExt added in v0.190.0

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

func (*RequestWrapper) GetUserExt added in v0.169.0

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

func (*RequestWrapper) LenImp added in v0.228.0

func (rw *RequestWrapper) LenImp() int

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

func (*RequestWrapper) RebuildRequest added in v0.169.0

func (rw *RequestWrapper) RebuildRequest() error

func (*RequestWrapper) SetImp added in v0.228.0

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

type SeatNonBid added in v0.259.0

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 added in v0.169.0

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

func (*SiteExt) Clone added in v0.254.0

func (se *SiteExt) Clone() *SiteExt

func (*SiteExt) Dirty added in v0.169.0

func (se *SiteExt) Dirty() bool

func (*SiteExt) GetAmp added in v0.169.0

func (se *SiteExt) GetAmp() *int8

func (*SiteExt) GetExt added in v0.169.0

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

func (*SiteExt) SetAmp added in v0.221.0

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

func (*SiteExt) SetExt added in v0.169.0

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

type SourceExt

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

func (*SourceExt) Clone added in v0.254.0

func (se *SourceExt) Clone() *SourceExt

func (*SourceExt) Dirty added in v0.190.0

func (se *SourceExt) Dirty() bool

func (*SourceExt) GetExt added in v0.190.0

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

func (*SourceExt) GetSChain added in v0.190.0

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

func (*SourceExt) SetExt added in v0.190.0

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

func (*SourceExt) SetSChain added in v0.190.0

func (se *SourceExt) SetSChain(schain *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 added in v0.206.0

func (key TargetingKey) TruncateKey(maxLength int) string

type UserExt added in v0.169.0

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

func (*UserExt) Clone added in v0.254.0

func (ue *UserExt) Clone() *UserExt

func (*UserExt) Dirty added in v0.169.0

func (ue *UserExt) Dirty() bool

func (*UserExt) GetConsent added in v0.169.0

func (ue *UserExt) GetConsent() *string

func (*UserExt) GetConsentedProvidersSettingsIn added in v0.231.0

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 added in v0.231.0

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 added in v0.169.0

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

func (*UserExt) GetExt added in v0.169.0

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

func (*UserExt) GetPrebid added in v0.169.0

func (ue *UserExt) GetPrebid() *ExtUserPrebid

func (*UserExt) SetConsent added in v0.169.0

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

func (*UserExt) SetConsentedProvidersSettingsIn added in v0.231.0

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 added in v0.231.0

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 added in v0.169.0

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

func (*UserExt) SetExt added in v0.169.0

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

func (*UserExt) SetPrebid added in v0.169.0

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

type UserSyncType

type UserSyncType string

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

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

type VideoTargeting

type VideoTargeting struct {
	HbPb       string `json:"hb_pb,omitempty"`
	HbPbCatDur string `json:"hb_pb_cat_dur,omitempty"`
	HbCacheID  string `json:"hb_cache_id,omitempty"`
	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