Repository navigation
§ 2.1, § 5.2 — Placement: what each impression is (#89) - #120
Draft
KonstantinMirin wants to merge 2 commits into
Draft
KonstantinMirin wants to merge 2 commits into
KonstantinMirin wants to merge 2 commits into
Conversation
Move the summary rule out of the § 2.1 key list, drop skip from the CTV example, and mark the CHANGELOG entry as breaking.
This was referenced Oct 25, 2026
Open
This was referenced Nov 4, 2026
Open
Open
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
A line item states what every impression is: rewarded, interstitial, video placement subtype, skippability, playback, API frameworks, and refresh. New § 5.2.1 defines
placement, aseller-setobject keyed to AdCOM 1.0Placementand OpenRTB 2.6Imp.plcmtis REQUIRED for video ads.api[]includes OMID 1.0 (7), a line item that commitsviewable_rateonapp_mobileorctvSHOULD NOT offer a third-partymeasurement_source.reward,instl,plcmt, andskipwhen present.New § 6.5 shows
placementon in-app rewarded video.Related issue
Refs #89, a change request from Postindustria (IAB Tech Lab member).
Type
Checklist
placementseller-set;scripts/check_appendix.pypassesseller-set29 → 30; 71 → 72 fieldsexamples/is updated and still parses — the CTV example gainsplacement: { plcmt: 1 }(Instream (1)); newline-item-rewarded-video.yaml(§ 6.5)placementsits on the line item; nothing comes from the proposal or a propertyselectabledeclaresavailable[]andincluded[]; anythingsettabledeclares bounds (§ 3.1, § 3.2) — no newselectableorsettablefieldsKnock-on effects
placementsits on the line item, and a multi-app line item omits the keys its apps don't share. An absentrewardorinstlmeans either value, and maps to one OpenDirect 2.1Placementper value. The OM SDK rule stays a SHOULD, because some vendors still measure in-app with their own SDKs.placementis REQUIRED whenchannelisvideooraudio, andplcmtis REQUIRED whenchannelisvideo.feed, which our audio change request (#101) defines, joinsplacement.placement.ssaireplaces theclient_sideandssaiterms ofserving_mode.measurement_sourcevendor withmeasured_by, where a seller writesseller. The OM SDK rule then reads "an option whosemeasured_byis notseller".audio/*,ctv/*ordooh/*#5.placementanswers @fgranata's either/or on OQ-4 — The format registry has no entries foraudio/*,ctv/*ordooh/*#5 without aplacement_typeenum or placement in format ids.ctv, so the OM SDK rule'sctvcovers it.environmentskeeps § 5.2.1 andplacementbecomes § 5.2.2, whichever merges first.placement: { plcmt: 1 }(Instream (1)) toline-item-ctv-bonus.yaml. Likewise with § 2.3 — Static manifest at a well-known URL for standard proposals (#29) #76 for itsweather-app-ctvmanifest entry.puzzle-packanapps[]entry, and moves § 5.2 — App identity on properties (#15) #17's App identity paragraph above § 5.2.1.For the working group
Open on #89 and its supporting material:
controlling_measurementoption whosecounted_byis notseller(our settlement change request (#95)), or stay limited tomeasurement_source? (#89, question 2)interactiveandverificationformat spec keys on #5 andplacement.api[]disagree, which governs, or should the spec carry only one? (#89, question 4)placement.api[], although #32 limits review to content and policy? (#89 supporting material, question 1)instl: 1? (#89 supporting material, question 2)plcmtbe REQUIRED ondoohvideo line items, and onnativeline items with video assets? Our channel definitions PR (#119) assigns them to those channels, whereplcmtstays OPTIONAL. The OpenRTB 2.6 implementation guide's DOOH video example sends noplcmt. (#89 supporting material, question 3)refreshstay one minimum interval, or also name the triggers in AdCOM List: Auto Refresh Triggers? (#89 supporting material, question 4)ctvline item sells video, which the REQUIRED condition onplcmtdepends on. Should the condition key on the format ids informats.available[], or shouldplcmtbe RECOMMENDED onctv? Neither:plcmtis REQUIRED whenchannelisvideo, and its presence states that a line item is video. (#89, question 6)plcmtstay one value, or becomeplcmt[], likeplaymethod[]? As one value, a video line item whose impressions differ inplcmtsplits into one line item per value, as @fgranata does when apps disagree. (#89, question 7)By opening this pull request I agree my contribution may be published under this
repository's licence, as set out in CONTRIBUTING.md.
Revised 2026-11-03: Rewritten against the PRs that build on this one: knock-on effects say what our video and audio PR and our settlement PR change here. Question 7 is answered, and question 1 uses
counted_by.Analyzed and generated with the help of Claude, fully reviewed by me.