This library supports RTB development for DoubleClick Ad Exchange in Java. The doubleclick-core module includes DoubleClick's RTB model and associated facilities such as crypto and metadata. The second module, doubleclick-openrtb, provides client-side mapping between DoubleClick's model/protocol and OpenRTB, and validation support.
See our wiki to get started! Use the Github issue tracker for bugs, RFEs or any support.
You need: JDK 7, Maven 3.2, Protocol buffers (protoc) 2.6.1. Building is supported from the command line with Maven and from any IDE that can load Maven projects.
On Eclipse, the latest m2e is recommended but it can't run the code generation step, so you need to run a "mvn install" from the command line after checkout or after any mvn clean.
- Improved handling of geo_criteria_id in the DoubleclickMetadata API and the OpenRTB mapper. You should see more Geo 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.