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.adpod object needs positive adminduration and admaxduration, and adminduration may not exceed admaxduration.
  • A zero or missing minads becomes 1, and a zero or missing maxads becomes 3. After those defaults, minads may not exceed maxads.
  • Exclusion percentages excladv and excliabcat run from 0 to 100, where 0 means every ad must be distinct and 100 allows repeats.
  • The CTV supply chain helper drops source.schain unless it has version 1.0, a complete flag, non-empty nodes with asi and sid, a sid of at most 64 characters, and hp 1. The request still proceeds without it.
  • All custom wire types from the OpenWrap profile also apply.

Documented extensions

PathMeaning
imp.video.ext.adpodPod settings for the video impression.
imp.video.ext.adpod.minadsMinimum number of ads in the pod; maxads sets the maximum.
imp.video.ext.adpod.admindurationMinimum duration of each ad; admaxduration sets the maximum.
imp.video.ext.adpod.excladvPercentage of ads that may repeat an advertiser domain.
imp.video.ext.adpod.excliabcatPercentage of ads that may repeat an IAB category.
imp.video.ext.offsetPod position in minutes from the start of the content.
ext.adpodRequest-level pod defaults, plus cross-pod exclusion percentages and time windows.
bid.ext.adpodAd-pod details and targeting for the bid.

What the validator checks for this profile

Validate against this contract

Open the tester with the PubMatic OpenWrap CTV middleware profile, or run:

rtblint validate --profile pubmatic-openwrap-ctv request.json

Similar integrations