Skip to content

§ 2.1, § 5.2 — Placement: what each impression is (#89) - #120

Draft
KonstantinMirin wants to merge 2 commits into
IABTechLab:mainfrom
KonstantinMirin:impression-placement-attributes
Draft

KonstantinMirin wants to merge 2 commits into
IABTechLab:mainfrom
KonstantinMirin:impression-placement-attributes

Conversation

@KonstantinMirin

@KonstantinMirin KonstantinMirin commented Oct 25, 2026 •

Copy link
Copy Markdown

Draft. Do not merge until the working group confirms the disposition of #89.

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, a seller-set object keyed to AdCOM 1.0 Placement and OpenRTB 2.6 Imp.

  • A present key holds for every impression. An absent key doesn't constrain it.
  • The seller MUST NOT deliver the line item to an impression that doesn't match a present key. The text defines a match for each key.
  • plcmt is REQUIRED for video ads.
  • Unless api[] includes OMID 1.0 (7), a line item that commits viewable_rate on app_mobile or ctv SHOULD NOT offer a third-party measurement_source.
  • The Summary Representation (§ 2.1) carries reward, instl, plcmt, and skip when present.

New § 6.5 shows placement on in-app rewarded video.

Related issue

Refs #89, a change request from Postindustria (IAB Tech Lab member).

Type

  • Editorial — no normative effect
  • Normative — changes what the spec requires
  • Breaking — would break an implementation already built to this draft
  • Examples / schema / docs only

Checklist

  • The body section is updated — § 2.1, § 5.2 and new § 5.2.1, new § 6.5
  • Appendix A (field index) matches the body — one row, placement seller-set; scripts/check_appendix.py passes
  • Appendix B (fields by marker, and the counts) matches the body — seller-set 29 → 30; 71 → 72 fields
  • Any affected example in examples/ is updated and still parses — the CTV example gains placement: { plcmt: 1 } (Instream (1)); new line-item-rewarded-video.yaml (§ 6.5)
  • RFC 2119 keywords used deliberately — MUST / SHOULD / MAY are not synonyms
  • The no-inheritance rule (§ 2) still holds — placement sits on the line item; nothing comes from the proposal or a property
  • Anything selectable declares available[] and included[]; anything settable declares bounds (§ 3.1, § 3.2) — no new selectable or settable fields
  • No confidential or commercially sensitive content

Knock-on effects

For the working group

Open on #89 and its supporting material:

  1. Should the OM SDK rule also cover a controlling_measurement option whose counted_by is not seller (our settlement change request (#95)), or stay limited to measurement_source? (#89, question 2)
  2. When @unreconciled's interactive and verification format spec keys on #5 and placement.api[] disagree, which governs, or should the spec carry only one? (#89, question 4)
  3. Should creative review check MRAID and SIMID creatives against placement.api[], although #32 limits review to content and policy? (#89 supporting material, question 1)
  4. Should app-open ads get a value in AdCOM, or stay a registry format id with instl: 1? (#89 supporting material, question 2)
  5. Should plcmt be REQUIRED on dooh video line items, and on native line items with video assets? Our channel definitions PR (#119) assigns them to those channels, where plcmt stays OPTIONAL. The OpenRTB 2.6 implementation guide's DOOH video example sends no plcmt. (#89 supporting material, question 3)
  6. Should refresh stay one minimum interval, or also name the triggers in AdCOM List: Auto Refresh Triggers? (#89 supporting material, question 4)
  7. Answered in our video and audio PR. No field says whether a ctv line item sells video, which the REQUIRED condition on plcmt depends on. Should the condition key on the format ids in formats.available[], or should plcmt be RECOMMENDED on ctv? Neither: plcmt is REQUIRED when channel is video, and its presence states that a line item is video. (#89, question 6)
  8. Should plcmt stay one value, or become plcmt[], like playmethod[]? As one value, a video line item whose impressions differ in plcmt splits 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.

Move the summary rule out of the § 2.1 key list, drop skip from the CTV example, and mark the CHANGELOG entry as breaking.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant