public interface Ad extends Lot49Plugin
Specifies ad configuration. Most functionality is implemented in AdImpl
. An Ad may have
one or more Tag
s.
It is intended that simple Groovy (but not necessarily) scripts extend those classes class,
filling in tag information (e.g., Dimension
, etc.) and the actual
tag text
.
getId()
.canBid1(OpenRtbRequest)
.Tag
AD_FILENAME_PREFIX, AUCTION_RESULTS_PATH_ADX, AUCTION_RESULTS_PATH_OPENX, AUCTION_RESULTS_PATH_PUBMATIC, BID_OUTCOME_CONTROL, BID_OUTCOME_INTERNAL_AUCTION_LOSS, BID_OUTCOME_SUBMITTED, BID_PRICE_CALCULATOR_FILENAME_PREFIX, COOKIE_PREFIX_A, DECISION_BIDS_MADE, DECISION_BIDS_NEEDED, DECISION_BIDS_POSSIBLE, DECISION_BRANDSAFETY, DECISION_BROWSER, DECISION_BUDGET, DECISION_CATEGORY, DECISION_DATE, DECISION_DAY, DECISION_DEVICE, DECISION_DOMAIN_REQUIRED, DECISION_DOMAIN_UNMATCHED, DECISION_EVALUATION_ERROR, DECISION_EXCHANGE, DECISION_EXPERIMENT_CONTROL_SET, DECISION_FLOOR, DECISION_FREQ_CAP, DECISION_GEO, DECISION_HOST, DECISION_HOUR, DECISION_INTEGRAL, DECISION_INTEGRAL_URL, DECISION_INTERNAL_AUCTION, DECISION_IP_BLACKLISTED, DECISION_LANGUAGE, DECISION_LOADING_ERROR, DECISION_NO_IMPRESSIONS, DECISION_NO_USER, DECISION_OS, DECISION_PACING, DECISION_PRIVATE_DEAL, DECISION_PROBABILITY, DECISION_PROVIDER, DECISION_SSP, DECISION_TAG, DECISION_TIMEOUT_EXPERIMENT_STATUS, DECISION_TIMEOUT_FC, DECISION_TIMEOUT_INTEGRAL, DECISION_TIMEOUT_UNKNOWN, DECISION_TIMEOUT_USERDATA, DECISION_TRAQ, DECISION_URL, DECISION_USER_UNKNOWN, DECISION_VALIDATION, DECISION_VIEWABILITY, DECISION_WRONG_USER, DEFAULT_CLICK_PATH_ABSOLUTE, DEFAULT_CLICK_PATH_RELATIVE, DEFAULT_IMPRESSION_PATH_ABSOLUTE, DEFAULT_IMPRESSION_PATH_RELATIVE, DEFAULT_NURL_PATH_ABSOLUTE, DEFAULT_NURL_PATH_RELATIVE, DEFAULT_PIXEL_PATH_ABSOLUTE, DEFAULT_PIXEL_PATH_RELATIVE, DEFAULT_PROUST_PATH_ABSOLUTE, DEFAULT_PROUST_PATH_RELATIVE, DEFAULT_REDIR_PATH_ABSOLUTE, DEFAULT_REDIR_PATH_RELATIVE, DEFAULT_TEST_PATH_RELATIVE, EXCHANGE_ADAPTV, EXCHANGE_ADX, EXCHANGE_BIDSWITCH, EXCHANGE_BRX, EXCHANGE_LIVERAIL, EXCHANGE_LOT49_INTERNAL_AUCTION, EXCHANGE_OPENX, EXCHANGE_PUBMATIC, EXCHANGE_SMAATO, EXCHANGE_SPOTXCHANGE, EXCHANGE_TEST1, EXCHANGE_TEST2, LOT49_VERSION_KEY, LOT49_VERSION_VALUE, MEDIA_TYPE_APPLICATION_JAVASCRIPT, MEDIA_TYPE_APPLICATION_SHOCKWAVE_FLASH, MEDIA_TYPE_VIDEO_FLV, MEDIA_TYPE_VIDEO_MP4, MOD_UID_COOKIE_LENGTH_MAX, MOD_UID_COOKIE_LENGTH_MIN, MOD_UID_LOG_LENGTH, NAME, NURL_ONLY_TAG, NURL_ONLY_WIN_NOTIFICATION, NURL_STANDART, QUERY_STRING_EXCHANGE_CLICK_THROUGH_ENCODED_MACRO, QUERY_STRING_EXCHANGE_CLICK_THROUGH_MACRO, QUERY_STRING_LOT49_CLICK_THROUGH_MACRO, REL_PATH_DEBUG_NURL, ROOT_PATH_ADMIN, ROOT_PATH_AUCTIONS, ROOT_PATH_STATS, TAG_DECISION_API, TAG_DECISION_DIMENSIONS, TAG_DECISION_DURATION, TAG_DECISION_MIME, TAG_DECISION_NOT_BANNER, TAG_DECISION_NOT_VIDEO, TAG_DECISION_PROTOCOL, TAG_DECISION_REQUEST_DISALLOWS_MARKUP, TAG_DECISION_SSL_REQUIRED, TAG_DECISION_VIDEO_LINEARITY, TAG_FILENAME_PREFIX, TEST_MOD_UID_COOKIE_1, TEST_MOD_UID_COOKIE_2, TEST_MOD_UID_COOKIE_3, TEST_MOD_UID_COOKIE_4, TEST_MOD_UID_LOG_1, TEST_MOD_UID_LOG_2, TEST_MOD_UID_LOG_3, TEST_MOD_UID_LOG_4
B_TOOK_CARE_OF_IT_ERROR, B_TOOK_CARE_OF_IT_LOSS, B_TOOK_CARE_OF_IT_WIN, BID_AMOUNT_DISPLAY_PREFIX, BID_AMOUNT_PREFIX, BID_COUNT_DISPLAY_PREFIX, BID_COUNT_PREFIX, BID_PREFIX, BID_PRICE_PREFIX, BID_REQUEST_PREFIX, BIDDER_COUNT_KEY, BUDGET_CHUNK_SIZE_PREFIX, BUDGET_MAP_KEY, BUDGET_PREFIX, BUDGET_UNLIMITED, COOKIE_TS_CLICK, COOKIE_TS_IMPRESSION, DEBUG_NURL_PREFIX, DECISION_DISPLAY_PREFIX, ENDS_ON_PREFIX, ENV_AWS_REGION, ENV_DYNAMO_ENDPOINT, ENV_EC2_ENDPOINT, ENV_ELB_ENDPOINT, ENV_LOT49_CONFIG_FILE, ENV_LOT49_HOME, ENV_LOT49_MAGIC, ENV_STS_ENDPOINT, LOWER_BID_PROBABILITY, NURL_PREFIX, OWNER_KEY_PREFIX, PACING_ASAP, PACING_LOG_PREFIX, PREFIX_VERSION, PREVIOUS_SPEND_AMOUNT_PREFIX, SEGMENT_PREFIX, SPEND_AMOUNT_DISPLAY_PREFIX, SPEND_AMOUNT_PREFIX, STARTS_ON_PREFIX, USER_DATA_SCORE_KEY, USER_PREFIX_V1, WIN_COUNT_DISPLAY_PREFIX, WIN_COUNT_PREFIX, WIN_RATE_STARTED_TS
API_MRAID, API_ORMMA, API_VPAID_1, API_VPAID_2, AUCTION_TYPE_FIRST_PRICE, AUCTION_TYPE_FIXED_PRICE, AUCTION_TYPE_SECOND_PRICE_PLUS, AUCTION_TYPE_UNKNOWN, BR_HTML5_1_0_VALUE, BR_HTML5_2_0_VALUE, CONNECTION_TYPE_CELL_2G, CONNECTION_TYPE_CELL_3G, CONNECTION_TYPE_CELL_4G, CONNECTION_TYPE_CELL_UNKNOWN, CONNECTION_TYPE_ETHERNET, CONNECTION_TYPE_UNKNOWN, CONNECTION_TYPE_WIFI, CONTENT_CONTEXT_APP, CONTENT_CONTEXT_GAME, CONTENT_CONTEXT_MUSIC, CONTENT_CONTEXT_OTHER, CONTENT_CONTEXT_TEXT, CONTENT_CONTEXT_UNKNOWN, CONTENT_CONTEXT_VIDEO, DEVICE_TYPE_CONNECTED_DEVICE, DEVICE_TYPE_CONNECTED_TV, DEVICE_TYPE_MOBILE_TABLET, DEVICE_TYPE_PC, DEVICE_TYPE_PHONE, DEVICE_TYPE_STB, DEVICE_TYPE_TABLET, ETHNICITY_AFRICAN_AMERICAN, ETHNICITY_ASIAN, ETHNICITY_HISPANIC, ETHNICITY_OTHER, ETHNICITY_WHITE, LINEARITY_LINEAR, LINEARITY_NON_LINEAR, MARITAL_DIVORCED, MARITAL_MARRIED, MARITAL_SINGLE, VIDEO_PLAYBACK_AUTO_SOUND_OFF, VIDEO_PLAYBACK_AUTO_SOUND_ON, VIDEO_PLAYBACK_CLICK_TO_PLAY, VIDEO_PLAYBACK_MOUSEOVER, VIDEO_PROTOCOL_VAST_1, VIDEO_PROTOCOL_VAST_2, VIDEO_PROTOCOL_VAST_3, VIDEO_PROTOCOL_VAST_WRAPPER_1, VIDEO_PROTOCOL_VAST_WRAPPER_2, VIDEO_PROTOCOL_VAST_WRAPPER_3
long getLoadedOn()
@Deprecated void setBidPriceCalculator(BidPriceCalculator bpc)
Map<String,Map<String,Object>> getExchangeSpecificInstructions()
exchange name
, for those exchanges that
return non-null in ExchangeAdapter.makeExchangeSpecificInstructionsMap()
, to that
Map. It is returned with keys only for ever Ad object, and is checked by the Exchange during
response conversion phase
.boolean isTargetingDeals()
void setDomainBlacklistFromUrl(String urlStr)
void setDomainWhitelistFromUrl(String urlStr)
String getNodeId()
String matchDeals(OpenRtbRequest br, Impression imp)
br
- requestimp
- impressionvoid setFrequencyCap(FrequencyCap fc)
FrequencyCap getFrequencyCap()
void setFrequencyCapCampaign(FrequencyCap fc)
FrequencyCap getFrequencyCapCampaign()
boolean isDomainRequired()
domain
be not null null in
order to bid.long getProjectedSpend()
void setProjectedSpend(long n)
SortedMap<String,SortedMap<String,AtomicLong>> getOptoutsByExchange()
void incrRequestCount(String exchange)
void incrRequestCount(String exchange, long n)
SortedMap<String,AtomicLong> getBidsByExchange()
SortedMap<String,AtomicLong> getRequestsByExchange()
long getRequestCount()
long getRequestCount(String exchange)
@Deprecated boolean isSegmentLogicAnd()
String getAdVersion()
void incrOptout(OpenRtbRequest req, String name)
void incrOptout(OpenRtbRequest req, String name, long n)
void addProviderTargeting(String providerName, String json) throws Lot49Exception
Lot49Exception
Map<Provider,ProviderInfoRequired> getProviderTargeting()
String getCampaignId()
long getBids()
long getBids(String exchange)
void incrBids(String exchange, long amount)
long getWins()
void incrWins()
void incrWins(long val)
long getSpendAmount()
void incrSpendAmount(long spendAmount)
long getBidAmount()
long getRealBids()
long getRealWins()
long getRealSpendAmount()
long getRealBidAmount()
SortedMap<String,AtomicLong> getRealBidsByExchange()
void storeAdState()
String getClientId()
ClientConfig
double getWinRate()
void setWinRate(double winRate)
void setBidsToMake(long n)
long getRemainingBidsToMake()
long getOriginalBidsToMake()
boolean haveBidsToMake()
String getAdvertiserId()
String getAdvertiser()
boolean canBid1(OpenRtbRequest bidRequest)
constituent config
's
canBid()
methods. This only qualifies the bid
request's attributes (including user) in absence of a particular ad tag configuration. Thus,
on a test bid, all of these methods can be assumed to be true, but not all
canBid()s
.Lot49Ext.getLot49ExtRemote()
is populated.This will always return true if bidRequest
is a
test request
.boolean checkSegments(OpenRtbRequest br, UserSegments userSegments)
canBid1(OpenRtbRequest)
. Important notes:
constituent config
's
canBid()
methods. This only qualifies the bid
request's attributes (including user) in absence of a particular ad tag configuration. Thus,
on a test bid, all of these methods can be assumed to be true, but not all
canBid()s
.needCanBid2()
is false.canBid1(OpenRtbRequest)
returns
false, this ad is not eligible to bid.This will always return true if bidRequest
is a
test request
.boolean checkIntegralTargeting(OpenRtbRequest req, Site site, IntegralInfoReceived integralInfoReceived)
boolean checkFrequencyCap(OpenRtbRequest br, UserFrequencyCapAttributes userFrequencyCap)
long getLastBidTime()
void setLastBidTime(long msec)
boolean doAbTesting()
boolean doCampaignAbTesting()
boolean doTargetingStrategyAbTesting()
double getTargetingStrategyAbTestingShare()
double getCampaignAbTestingShare()
double getAbTestingControlShare()
double getCampaignAbTestingControlShare()
Set<String> getDomainWhitelist()
configuration option
.Map<String,Set<String>> getTargetingUrls()
configuration option
. Currently exact match is
required.Map<String,Set<String>> getTargetingDeals()
getTargetingDeals()
void setTargetingDeals(Map<String,List<String>> deals)
exchange name
to list of targeted Deal IDsvoid setTargetingUrlsFromUrl(String url)
Set<String> getTargetingCategories()
Site.getCat()
to target. Assumed to be normalized to upper case, with
colon separator for hierarchy. Targeting categories for page
,
section
, content
are not supported yet.long getBidPrice(OpenRtbRequest req)
BidPriceCalculator getBidPriceCalculator()
boolean isDynamicPricing()
void setBidPrice(long amount)
double getBidPriceCpm(OpenRtbRequest req)
getBidAmount()
but as $ CPM.int getBidProbability()
getBidFrequency()
. Values below 0 and above 100 work
the same as 0 and 100 respectively.getBidFrequency()
void setBidProbability(int bidProbability)
getBidProbability()
long getBidFrequency()
getBidProbability()
void setBidFrequency(long bidFrequency)
getBidFrequency()
String getDesc()
String getIurl()
List<TargetingGeo> getGeos()
List<TargetingGeo> getNegativeGeos()
List<String> getAdomain()
Bid.getAdomain()
String getId()
getId
in interface Lot49Plugin
String getName()
getName
in interface Lot49Plugin
boolean checkMeasurementSegments(UserSegments userSegments)
Expression<String> getParsedTargetingSegments()
void init()
boolean needCanBid2()
boolean needUserInfo()
boolean needFrequencyCap()
boolean needIntegralInfo()
boolean needExperimentInfo()
boolean isCampaignFrequencyCap()
boolean isStrategyFrequencyCap()
TargetingHour getTargetingHour()
getBidProbability()
, which is used for pacing purposes, this
probability is for A/B testing.TargetingDOW getTargetingDOW()
TargetingIntegral getTargetingIntegral()