- Now using Protobuf 3.6.0.
- Added missing JSON support for the new extension
BidExt.attribute
. - Now using Protobuf 3.5.0.
- DoubleClick OpenRTB extensions proto v.23.
- AdX/OpenRTB support for OpenRTB Native 1.2.
- The library now builds correctly, and is supported, on JDK 9.
- Now using Protobuf 3.4.0.
- DoubleClick proto v.128.
- DoubleClick OpenRTB extensions proto v.21.
- DoubleClick proto v.127.
- DoubleClick OpenRTB extensions proto v.20.
- Removed obsolete extension
dfp_network_code
. - Now using Protobuf 3.3.1.
- Support for OpenRTB 2.5!
- Extension parser for
billing_id
andpublisher_settings_list_id
fixed to allow quoted values, even when unnecessary (small numbers). DoubleclickMetadata
now reads cities-dma-regions.csv only from a local resource, because Ad Exchange doesn't redistribute this file anymore (if you need a recent copy, you must get that from Nielsen).DoubleclickMetadata
is more lenient: if it fails to load some resource file, it will just log that (and provide no data in the respective getters) but proceed with initialization.
- DoubleClick proto v.124.
- DoubleClick proto v.122.
- Updated Protocol Buffers to v3.2.0! You will need to install this exact version of protobuf, have it in the PATH, rebuild everything.
- DoubleClick proto v.120.
- DoubleClick proto v.118.
- DoubleClick proto v.111.
- Fix racy generation of init vector in
DoubleClickCrypto.encrypt*()
.
- DoubleClick OpenRTB extensions v.7 (fixed extension name).
- DoubleClick proto v.109, DoubleClick OpenRTB extensions v.7.
- The AdX/OpenRTB mapper was REMOVED from this library. Ad Exchange's native, on-wire OpenRTB support, in both Protobuf and JSON format, has been supported for quite some time, and it's more efficient as the bidder doesn't need to perform mapping. The client-side mapper could also support a "hybrid" model mixing OpenRTB and AdX, but this hack was more useful when the mapping was much less complete; now you must make a choice and pick a single protocol and data model. Older releases of this library will be available but they won't be updated or supported in any way.
- DoubleClick proto v.105, DoubleClick OpenRTB extensions v.6.
- DoubleClick protocol v.101: Added
Video.video_completion_rate
; Native Video support withField.VIDEO
andNativeAd.video_url
. - Preliminary, beta-quality OpenRTB mapping for Native Video.
- DoubleClick protocol v.96: AMP support; improved exchange bidding.
- Fixed
DoubleClickCrypto
's handling of the initialization vector to be compliant with DoubleClick's recommended encoding of timestamp. - Mapping of
Video.battr
supports in-banner video publisher block. - The doubleclick-openrtb module works with openrtb-core v1.1.0, which has breaking changes at the source level (see release notes).
- Fixed mapping of
Bid.adm
for non-VAST video ads (e.g. MRAID).
- DoubleClick protocol v.91: Only documentation changes.
- Fixed mapping of
Banner.api
forMRAID_2
.
- DoubleClick protocol v.86: Adds
AdSlot.allowed_languages
,AdSlot.exchange_bidding
andAd.bidder_name
. - AdX/OpenRTB extensions v.4: Adds
BidResponseExt.processing_time_ms
,ImpExt.publisher_parameter
andBidExt.bidder_name
. - Fix incomplete JSON & mapping support for AdX/OpenRTB extensions.
- Drop mapping of
Mobile.constrained_usage_*
fields to standard OpenRTBDevice
fields, in sync with the AdX/OpenRTB protocol. - Drop mapping of AdX's
encrypted_*
fields, deprecated with SSL. BidRequest.id
,User.customdata
are now formatted in Base64 with the standard alphabet (not URL-safe), no padding.Device.ifa
is now formatted as a 36-char UUID, for mobile platforms that use an UUID as device identifier (both Android and iOS do).- New AdX/OpenRTB extensions:
ImpExt.allowed_vendor_type
,BidExt.ad_choices_destination_url
. - DoubleClick protocol v.84: Adds
Ad.ad_choices_destination_url
. - Reintroduced JDK 7 support in the "compat" branch.
- Drop support for
Bid.nurl
mapping to impression URL. Please use the extensionAdxExt.BidExt.impression_tracking_url
only. - Added
AdxExtMapper
to support someAdxExt
extensions as part of the AdX->OpenRTB protocol mapping.
- Mapping of mobile interstitial video impression doesn't fail if it's multisize, it just picks the first size.
- DoubleClick protocol v.80: Deprecates
Video.inventory_type
, updatesVideo.format
, addsVideo.placement
andAdSlot.renderer
.
- DoubleClick protocol v.77:
BidRequest.vertical_dictionary_version
deprecated; addedVideo.is_clickable
,Video.end_cap_support
,AdSlot.click_through_rate
,Device.hardware_version
. - Maps
Device.hwv
. - Native request mapping uses only first
NativeAdTemplate
; previous mapping (merging assets from multiple templates) was ambiguous. - Support for AdX/OpenRTB JSON extensions! Background: this library
always supported client-side extensions (
doubleclick-ext.proto
) which are just soft links from the OpenRTB messages to their source AdX messages, allowing a fallback for fields that couldn't be mapped. Now AdX's new native (on-wire) support for OpenRTB is also introducing its own proper OpenRTB extensions, defined inopenrtb-adx.proto
. These two kinds of extensions are mutually exclusive: you can only use the first when receiving the native AdX protocol on-wire and mapping it to OpenRTB with this library; you can only use the second when receiving AdX/OpenRTB messages (either Protobuf or JSON encoding).
- Happy new year!! And here's the one-dot-zero release of the library.
- This release follow the GA of the native AdX/OpenRTB protocol support;
the OpenRTB mapper here makes the same mappings for standard fields.
The only advantage of the client-side mapper at this point is making
all AdX fields available via the
DcExt
extension, which isn't and won't be supported by the native protocol. The latter will be improved with extensions for critical fields missing from OpenRTB, and later this year the client-side mapper will be retired. - Video mapping improvements: includes VAST Wrapper values; additional mime types for video and companion ads with VPAID enabled.
Device.os
mapping fixed for iphone/ipad="iOS";Device.make
added.- Cleanups: Dependency updates; Minor javadoc and test reviews.
- DoubleClick protocol v.74:
NativeAd.impression_tracking_url
is deprecated; use the now-GA fieldAd.impression_tracking_url
. - Native response improvements: changes mapping
link.imprackers
toAd.impression_tracking_url
; changes ADDRESS asset ->NativeAd.store
to map from the asset'slink.url
; adds mappinglink.url
->Ad.click_through_url
.
- Fix mapping of
Video.minduration/maxduration/startdelay
.
- Fix mapping of non-interstitial video impressions.
- Removed mapping of
AdSlot.targetable_channel
toApp
/Site
.id
; this mapping was inadequate. May return later as an extension. - Avoid creating an
App
orSite
that's empty except for extensions.
- THE BIG MOVE TO JAVA 8! The library now requires JDK 8, and takes
advantage of new APIs/features of Java 8.
- We won't maintain a JDK 7 compatible version of the library; notice that JDK 7 was EOL'd since April 2015.
- DoubleClick protocol v.73: Adds
AutoRefresh.refresh_count
.
- DoubleClick protocol v.71: Deprecates
BidRequest.site_list_id
. - Fix NPE bug (0.9.6+) in the mapping of
Video.playbackmethod
.
- Fixed distinction of
App
vs.Site
requests in the mapper.
- DoubleClick protocol v.70: Refactors part of
BidRequest
'sMobile
into a new objectDevice
; OpenRTB mapping is updated for that. - Big round of javadoc & style reviews; tests adopted Truth.
- DoubleClick protocol v.69: Adds unencrypted versions of several
fields (SSL-exclusive); the mapper doesn't support the encrypted
hyperlocal anymore. Adds
Video.playback_method
, which now allows mapping OpenRTB'sVideo.playbackmethod
. Replaces / renames fieldsadgroup_id
->billing_id
. - Updated mapping for MRAID: The DoubleClick creative attribute 32
changed, now it means any MRAID (1 or 2) not just MRAID 1. Removed
the confusing mapping of OpenRTB's
USER_INTERACTIVE
attribute.
- DoubleClick protocol v.68: Changes
MatchingAdData.adgroup_id
torepeated
; addsAdSlot.auto_refresh
; deprecatessnippet_template
. - Added
DoubleClickMetadata.mobileCarriers()
.
- Fix missing mapping of some AdX category codes to
ContentCategory
.
- Improved
Video
mapping, supports interstitial video impressions. - Maps
Bid.adomain
toclick_through_url
. Notice the OpenRTB specification only allows populatingadomain
with domain names (like “myads.com”), not full URLs. The mapper supports both: domains, which may result in less precise classification by AdX; and full URLs, which are ideal for AdX but not spec-compliant so avoid doing that in portable code used with other exchanges.
- Fixed mapping of
Geo.metro
, now gets the Google DMA Region code (as required by the spec) instead of the region name. - Improvements to
DoubleClickMetadata
and related helper classes:- Added
dmaRegions()
, loads the Cities - DMA Regions table. - (Breaking) Renamed several getters that aren't JavaBean accessors.
- Saving memory with interning of common strings across all metadata.
- Added
- Support for the
SnippetProcessor
improvements in openrtb-core. - DoubleClick protocol v.64, changes
publisher_settings_list_id
fromoptional
torepeated
.
- Mapper changes for OpenRTB model changes.
- Small mapper reviews. Breaking changes to
ExtMapper
. - Fixes for a couple potential NPEs.
- Fix mapping for
Bid.cat
, now includes all categories. - Improved mapping for
ExpandableDirection
. - Cleanup
ExtMapper.toDoubleClickAd()
, has one less parameter.
- Improved mapping of
Device.devicetype
. - Changes for the new names of some OpenRTB messages and enums.
- Several small mapping reviews, in particular to avoid setting a value that would be redundant because it's the default in the target model.
- Maps
Video.content.title/len/keywords
. - DoubleClick protocol v.63, only fixes two enum value names.
- Mapping of
Impression.bidfloor
now ignores DCBuyerPricingRule
, which could rarely result in zero prices.
- DoubleClick protocol v.61, adds
inventory_type
anddeal_type
. - Maps
BidRequest.at
,Deal.at
.
- DoubleClick protocol v.60, adds
allowed_restricted_category_for_deals
. DoubleClickOpenRtbNativeMapper
more lenient.- Improved mapping of
api
fields (ApiFramework
). - Maps
Native.battr
,Native.api
.
- Improved handling of
geo_criteria_id
in theDoubleclickMetadata
API and the OpenRTB mapper. You should see moreGeo
fields populated for many requests, e.g.city
for requests located at a postal code,metro
for requests from a city that belongs to a metro, etc.
- Logging updates, mostly avoiding multiline logs (bad for syslog).
- Refactor some
DoubleClickMetadata
helper types.
BidRequest.id
&User.customdata
using base64Url, not base16.- Fix
bcat
mapping; optimize some enum mappings. - More metadata: Agencies, Site lists, Creative status.
- Removed error-prone from build, new version had some issues too.
- Support for Native Ads completed!
- Maps
Publisher.name
. ExtMapper
has new methods that make easier to create mapper extensions for the objects:App
,Site
,User
.- DoubleClick protocol v.59, adds
mediation_status
. - Updated to latest error-prone; now Maven build works with JDK 8!
- Partial support for OpenRTB 2.3! The missing item is Native ads,
which depends on the OpenRTB Native 1.0 spec (proposed final draft
at this time). This support will come in a future update.
(Meanwhile you can bid on native ads with DoubleClick's protocol.)
- Maps OpenRTB
Bid.cat
/ DCAd.category
- Maps DC
BidRequest.isTest
/ OpenRTBBidRequest.test
- Maps DC
Mobile.[constrainedUsage]encryptedAdvertisingId
/ OpenRTBDevice.ifa
; also, sets OpenRTBDevice.lmt
- Maps DC
Mobile.screenWidth/screenHeight
/ OpenRTBDevice.w/h
- Maps DC
Mobile.devicePixelRatioMillis
/ OpenRTBDevice.pxratio
- Maps DC
BidRequest.timezoneOffset
/ OpenRTBGeo.utcoffset
- Maps DC
Mobile.mobileWebOptimized
/ OpenRTBSite.mobile
- Maps OpenRTB
- Fix
BidResponse
mapping, was broken for non-multisize, interstitial video impression (DoubleClick requires settingwidth/height
). - Improvements and cleanups in the internal CSV parser.
- DoubleClick proto v57. Notice that the major new in this update is
native ads, but the corresponding OpenRTB spec is not finalized so
there's no DoubleClick/OpenRTB mapping support at this time.
- Maps DC
IFramingState
/ OpenRTBtopframe
. - Maps OpenRTB
Bid.nurl
/ DCAd.impressionTrackingUrl
- Maps DC
- Fix mapping of
BidRequest.User.customdata
.
- Updated to Protocol Buffers 2.6.1 (bugfix, doesn't require rebuilds).
DoubleClickMetadata
more resilient to bad resources.- DoubleClick protocol v.54.
- Test & logging reviews.
- Updated to Protocol Buffers 2.6.0. Full rebuild recommended, the code generated by protoc 2.6.0 is NOT 100% compatible with 2.5.0.
- Fix namespace of DoubleClick proto to Google standard: replace all
com.google.doubleclick.Doubleclick
->com.google.protos.adx.NetworkBid
. DoubleClickValidator
validates SSL-enabled ads.
- DoubleClick proto v.52.
- Mapper: Much better mapping of IAB categories.
- New link extension
DcExt.bidResponse
. - Javadocs for thead safety.
- Update Guava library.
- Crypto reviews:
javax.security
's exceptions; initVector improvements; fix block cypher for >1 blocks;Price
method names (millis/micros). - Metadata: content-labels, publisher-verticals; better GeoTable parser.
- Mapper: Fix
AdPosition
&Banner.mimes
; addContent.contentrating
,User.data.segment
,Banner.expdir
,Video.startdelay
(special values). - DoubleClickValidator: validates
deal_id
; optimizations.
- Remove dependency from apache-commons-codec!
DoubleClickValidator
improved (better logs) and refactored to not depend on OpenRTB; moved to the doubleclick-core module.- Provide a
DoubleClickMetadata.URLConnectionTransport
. - Added missing two methods in the mapper interface.
DoubleClickCrypto.Price
supports micros & currency unit.- No need anymore to checkout the openrtb project for building.
- Update DoubleClick protocol to v51.
- Map
User.gender/age
from newUserDemographics
data. - Decrypt
HyperlocalSet
, keep in a link extension, and mapGeo.lat/lon
. - Map
Video.mimes
andVideo.companionad.mimes
. DoubleClickCrypto
: IDFA/Hyperlocal now correct; big general review.- Fixed mapping of
price
andbidfloor
properties to use currency units (which is the standard). Previous code used micros, that was a legacy from this code's DoubleClick roots but was not OpenRTB-compliant.
DoubleClickCrypto
: optimize memory usage in Base64 encoding/decoding; some initial fixes for IDFA/Hyperlocal but still broken in some cases.- Remove dependency on buggy, unsupported opencsv; using custom parser.
- Mapping: Fix semi-transparent branded channels.
- Remove depedency from Guice! The libraries still supports all
JSR-305 DI frameworks, but now only uses
javax.inject
. - DoubleClick protocol v50; map
app.content.userrating
,app.name
. - Build system improvements (Maven, Eclipse, NetBeans).
- Improved
OpenRtbSnippetProcessor
handling of macro dependencies; see new documentation about this inOpenRtbMacros
.
- Initial Open Source release.