Repository navigation
§ 2.1, § 5.1, § 5.2 — Define channel and environments in AdCOM terms (#90) - #119
Draft
KonstantinMirin wants to merge 2 commits into
Draft
KonstantinMirin wants to merge 2 commits into
KonstantinMirin wants to merge 2 commits into
Conversation
Read the media condition from the ad served when an impression accepts several media, name the seller as the party that serves, place linear TV outside the table, and state environments as (distribution channel, device type) pairs. Insert environments.available[] into the summary list without rewrapping it, shorten the changelog entry and drop audio_streaming from OQ-7 in docs/open-questions.md. Refs IABTechLab#90
This was referenced Oct 25, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What this changes
channelandenvironmentsnow have definitions, in AdCOM 1.0 terms, so two sellers give the same impression the same label and a buyer can check delivery against it. A first-match table (§ 5.1.1) gives each impression onechannelfrom its distribution channel, the media of the ad served, and its device type. Each environment (§ 5.2.1) is a set of (distribution channel, device type) pairs. The sixchannellabels stay.audio_streamingis removed, and the Summary Representation (§ 2.1) carriesenvironments.available[].Related issue
Refs #90, a change request from Postindustria (IAB Tech Lab member). The text follows #90 as revised on the thread:
ctvcovers Connected TV (3), Connected Device (6), and Set Top Box (7), and there is noconnected_devicevalue. Proposes a definition rule for OQ-7 (#8, from @Sirajmx), removesaudio_streaming, and leaves the rest of the value list, such asapp_tablet, to #8.The text states some points of #90 more precisely, without changing what #90 asks for:
channel, "not reject the proposal". The text states that outright as MUST NOT reject.channel". The text names the seller as the party that serves.displayline item could never serve multi-format inventory.ctvrow.Type
Checklist
scripts/check_appendix.pypassesexamples/is updated and still parses — the audio example listsweb_mobileandapp_mobilein place ofaudio_streaming; the CTV and display examples already conform, and so do the examples in PR § 2, § 4.1, § 5.6 — Line-item dependencies and bonus lines (#23) #70 (CTV bonus line) and the PR for [Change] § 5.2 — Say what each impression is: rewarded, interstitial, video placement, skippability, API frameworks, refresh #89 (rewarded video)channelandenvironmentsselectabledeclaresavailable[]andincluded[]; anythingsettabledeclares bounds (§ 3.1, § 3.2) —environmentsstaysselectable; no new fieldsKnock-on effects
audio_streamingis removed. Avideoline item can no longer selectctv, because a video ad on a TV device isctv.display,video, andnativeselectweb_desktop,web_mobile, orapp_mobile.audioselects those three orctv.ctvselects onlyctv, anddoohselects onlydooh.videoand actvline item, tied bylinked_executionorrequiresfrom [Change] § 2, § 4.1, § 5.6 — Line-item dependencies and bonus lines (linked_execution, requires) #23 (@Sirajmx, PR § 2, § 4.1, § 5.6 — Line-item dependencies and bonus lines (#23) #70). @fgranata reports on #90 that their exchange already sells TV as its own lane by device type Connected TV (3), Connected Device (6), or Set Top Box (7), and withdraws the alternative raised on OQ-7 —environments[]needs validation against real inventory #8.ctvin both fields. @fgranata noted on #8 thatctvandaudio_streamingrepeat the channel.audio_streaminggoes.ctvstays in both, becausefrequency_cap.basisandserving_modediffer on TV, and anaudioline item can select thectvenvironment.doohin both fields. @premesh makes the same point fordoohon #8: oncechannel: doohis set, thedoohenvironment says nothing more, and buyers filter on venue type. @premesh proposes pointing the DOOH environment at the OpenOOH venue taxonomy that OpenRTB 2.6 carries invenuetaxandvenuetypeid. This PR keepsdoohas [Change] § 5.1, § 5.2 — Define channel and environments in AdCOM terms, so one impression gets one label #90 filed it. See question 10.device(§ 5.5). Postindustria's reply on #58 (typed geo codes, from @dtbarne) proposes to typedeviceon AdCOM device types. Onmain,deviceis still an untyped list of device categories.Appon a Personal Computer (2), aSiteorAppon an OOH Device (8), and anySiteorAppimpression that carries no device type.site,app, ordooh; theimpmedia objects and, for the ad served,bid.mtype;device.devicetype.device.devicetypeis optional there, so the label is checkable only where the impression carries it. See question 11.channel, as the CTV example'sctv/instream-15salready does, so a static pause ad on TV is actv/format and a video spot on a transit screen is adooh/format.environments.available[], the offered set, while it carriesformats.included[], the base-rate set. [Change] § 5.1, § 5.2 — Define channel and environments in AdCOM terms, so one impression gets one label #90 asks for the offered set because screening is on where the line item can run. As for the other summary keys, the § 5.2 row is not marked REQUIRED, but the summary can't be built withoutenvironments.docs/open-questions.mdOQ-7 dropsaudio_streamingfrom its list and points to § 5.2.1. OQ-7 stays open.has_requiresto the same § 2.1 list. This PR inserts its key without rewrapping the list, so the two merge cleanly.placement). Because theenvironmentsrow comes before theplacementrow, environments stays § 5.2.1 and placement becomes § 5.2.2. If [Change] § 5.2 — Say what each impression is: rewarded, interstitial, video placement, skippability, API frameworks, refresh #89 merges first, this PR renumbers it and updates its one reference,See 5.2.1in the § 5.2placementrow. The § 2.1 additions of the two PRs merge cleanly.examples/manifest.jsongainsenvironments.available[]:["ctv"]onweather-app-ctv, and["web_mobile", "app_mobile"]onstreaming-audio.For the working group
Open on #90 and its supporting material:
Keep the six
channellabels with the first-match table, or replacechannelnow with separate media, distribution, and device fields? (#90, question 1)Is the first-match order right:
audiobeforectv, andnativebeforevideo? @fgranata takes no position on audio. ([Change] § 5.1, § 5.2 — Define channel and environments in AdCOM terms, so one impression gets one label #90, question 2)Should this change drop
audio_streaming, or should OQ-7 (OQ-7 —environments[]needs validation against real inventory #8) settle the value list, includingapp_tablet, which @fgranata asks for on #8? Theconnected_devicepart is answered in our device-type revision: no value is added.app_tvin place ofctvbelonged to the alternative @fgranata withdrew on [Change] § 5.1, § 5.2 — Define channel and environments in AdCOM terms, so one impression gets one label #90. ([Change] § 5.1, § 5.2 — Define channel and environments in AdCOM terms, so one impression gets one label #90, question 4)When a consumer skips a line item with an unknown
channel, should the text say it can't commit a [Change] § 2, § 4.1, § 5.6 — Line-item dependencies and bonus lines (linked_execution, requires) #23linked_executionorrequires, or a commitment set, that contains it? ([Change] § 5.1, § 5.2 — Define channel and environments in AdCOM terms, so one impression gets one label #90, question 5)Add an
app_desktoprow (Appon Personal Computer (2)) now, or wait for OQ-7 —environments[]needs validation against real inventory #8? ([Change] § 5.1, § 5.2 — Define channel and environments in AdCOM terms, so one impression gets one label #90 supporting material, question 2)Should a seller delivering a
ctvline item senddevice.devicetype(SHOULD), since OpenRTB 2.6 makes it optional? ([Change] § 5.1, § 5.2 — Define channel and environments in AdCOM terms, so one impression gets one label #90 supporting material, question 3)Should
nativestay a channel value, or fold intodisplayas AdCOM does? ([Change] § 5.1, § 5.2 — Define channel and environments in AdCOM terms, so one impression gets one label #90 supporting material, question 4)Must a channel value's condition be stated in AdCOM terms, or may OpenProposal define its own condition? Static OOH ([Comment] § 1 — Add OOH as a distinct channel alongside DOOH #49, from @clerongi) and print ([Change] § 1.1, § 5.1, § 5.9, new § 5.11 — Add a print channel: enum, print extension object, downstream row #102) no longer wait on this: our print and OOH revision puts them outside the first-match table (question 15). ([Change] § 5.1, § 5.2 — Define channel and environments in AdCOM terms, so one impression gets one label #90 supporting material, question 5)
Is audio over a DOOH venue's speakers
doohoraudio? It ties to the screen-based properties in [Change] § 5.2, § 5.5 — DOOH properties: venue type, screens, operating hours, and loop #96. ([Change] § 5.1, § 5.2 — Define channel and environments in AdCOM terms, so one impression gets one label #90 supporting material, question 6)Should
doohstay an environment value, which repeatschannel: dooh, or should the DOOH environment use the OpenOOH venue taxonomy (venuetax,venuetypeid), as @premesh proposes on #8? This PR keepsdoohas filed.Should
channelstay a closed list with a skip rule, or become an open, namespaced vocabulary like the one [Change] § 5.6 — Give cost_method an extensible vocabulary, and say what several pricing[] entries mean #94 proposes forcost_method? Thechannelrow is still typed Enum, so a schema built from it rejects a value that the skip rule tells a consumer to skip.environmentshas no skip rule, though OQ-7 —environments[]needs validation against real inventory #8 expects more values. ([Change] § 5.1, § 5.2 — Define channel and environments in AdCOM terms, so one impression gets one label #90 supporting material, question 7)With Connected Device (6) in
ctv, a smart-speaker audio line item selects thectvenvironment. Is that intended, or does audio on connected devices need its own value? This follows from the #90 revision. The audio example leaves out smart speakers to avoid the question. ([Change] § 5.1, § 5.2 — Define channel and environments in AdCOM terms, so one impression gets one label #90, question 7)What happens when an impression doesn't carry an attribute that a condition names? A TV video impression without
device.devicetypefalls through tovideo, and an impression without a device type matches no environment exceptdooh. Should a missing attribute fail the condition, or should the seller classify the impression from what it knows about the property? This goes with question 6. ([Change] § 5.1, § 5.2 — Define channel and environments in AdCOM terms, so one impression gets one label #90, question 8)Should an impression served to a line item stay within the line item's selected environments, as well as its
channel? § 5.2.1 constrains which environments a line item may offer, not where it serves. ([Change] § 5.1, § 5.2 — Define channel and environments in AdCOM terms, so one impression gets one label #90, question 9)Channels without an AdCOM impression. Print ([Change] § 1.1, § 5.1, § 5.9, new § 5.11 — Add a print channel: enum, print extension object, downstream row #102, from @matthew-iabtechlab) and static OOH ([Comment] § 1 — Add OOH as a distinct channel alongside DOOH #49, from @clerongi, with @premesh's proof-of-posting scenario) sell inventory with no ad-served impression. Our print and OOH revision on [Change] § 5.1, § 5.2 — Define channel and environments in AdCOM terms, so one impression gets one label #90 puts such channels outside the first-match table and the environment rule, with delivery shown by proof of performance. A field with no meaning for such a channel is absent from its line items. The revision asks whether proof of performance is one field across channels or part of each channel's own object. This PR's text doesn't include it. ([Change] § 5.1, § 5.2 — Define channel and environments in AdCOM terms, so one impression gets one label #90, question 6)
Answered on #90: a cross-screen deal is two line items (#90, question 3, answered by @fgranata), and Connected Device (6) belongs to
ctv(#90 supporting material, question 1, answered in our device-type revision).By opening this pull request I agree my contribution may be published under this
repository's licence, as set out in CONTRIBUTING.md.
Analyzed and generated with the help of Claude, fully reviewed by me.