PubMatic OpenWrap CTV middleware
PubMatic's OpenWrap fork of Prebid Server includes a CTV endpoint that turns video ad-pod requests into an auction for each pod. This profile adds that endpoint's visible request conditions to the OpenWrap wire contract.
Direction and version
CTV and video players send ad-pod requests to the OpenWrap CTV endpoint, which expands each pod into impressions, runs the auction, and returns bids for the pod.
The same OpenRTB 2.6 Go types as the OpenWrap wire profile. The CTV path converts the request to an OpenRTB 2.5 video request before the auction.
The RTBlint profile pubmatic-openwrap-ctv checks requests and responses against the published contract.
Rules beyond the OpenRTB spec
- A request needs at least one video impression. The middleware drops other impressions and removes other media objects from video impressions.
- An explicit
imp.video.ext.adpodobject needs positiveadmindurationandadmaxduration, andadmindurationmay not exceedadmaxduration. - A zero or missing
minadsbecomes 1, and a zero or missingmaxadsbecomes 3. After those defaults,minadsmay not exceedmaxads. - Exclusion percentages
excladvandexcliabcatrun from 0 to 100, where 0 means every ad must be distinct and 100 allows repeats. - The CTV supply chain helper drops
source.schainunless it has version 1.0, acompleteflag, non-empty nodes withasiandsid, asidof at most 64 characters, andhp1. The request still proceeds without it. - All custom wire types from the OpenWrap profile also apply.
Documented extensions
| Path | Meaning |
|---|---|
imp.video.ext.adpod | Pod settings for the video impression. |
imp.video.ext.adpod.minads | Minimum number of ads in the pod; maxads sets the maximum. |
imp.video.ext.adpod.adminduration | Minimum duration of each ad; admaxduration sets the maximum. |
imp.video.ext.adpod.excladv | Percentage of ads that may repeat an advertiser domain. |
imp.video.ext.adpod.excliabcat | Percentage of ads that may repeat an IAB category. |
imp.video.ext.offset | Pod position in minutes from the start of the content. |
ext.adpod | Request-level pod defaults, plus cross-pod exclusion percentages and time windows. |
bid.ext.adpod | Ad-pod details and targeting for the bid. |
What the validator checks for this profile
openrtb.profile.openwrap.adpod_countCTV ad counts must be positive after OpenWrap's zero defaults (minads 1, maxads 3).openrtb.profile.openwrap.adpod_count_orderCTV minads cannot exceed maxads after applying defaults.openrtb.profile.openwrap.adpod_durationAn explicit CTV adpod requires positive adminduration and admaxduration.openrtb.profile.openwrap.adpod_duration_orderCTV adminduration cannot exceed admaxduration.openrtb.profile.openwrap.adpod_exclusionCTV exclusion percentages must be between 0 and 100.openrtb.profile.openwrap.ctv_video_requiredThe selected OpenWrap CTV endpoint requires at least one video impression.openrtb.profile.openwrap.schain_removedThe CTV middleware removes this supply chain because its helper requires version 1.0, a complete flag, nonempty nodes, nonempty ASI/SID, SID at most 64 characters, and hp 1.
Validate against this contract
Open the tester with the PubMatic OpenWrap CTV middleware profile, or run:
rtblint validate --profile pubmatic-openwrap-ctv request.json