diff --git a/examples/line-item-ctv.yaml b/examples/line-item-ctv.yaml index fda3994..3a68e0d 100644 --- a/examples/line-item-ctv.yaml +++ b/examples/line-item-ctv.yaml @@ -33,3 +33,5 @@ buying_route: SSP_PLATFORM transaction_mechanism: { available: ["PRIVATE_AUCTION"], included: ["PRIVATE_AUCTION"] } serving_mode: ssai correlation_id: "ep-q4-2026-commitment/weather-app-ctv" + +# Inspecting this line item's VAST creative is subject to spec section 5.4. diff --git a/spec/CHANGELOG.md b/spec/CHANGELOG.md index 1dfacef..14a6441 100644 --- a/spec/CHANGELOG.md +++ b/spec/CHANGELOG.md @@ -5,6 +5,10 @@ issue that caused it, so the comment record and the spec history line up. ## [Unreleased] +- Define the boundary between creative inspection and production notifications + in section 5.4, with an informative CTV example note + ([#42](https://github.com/IABTechLab/OpenProposal/issues/42)). + ## [3.0-draft-1] — 2026-09-22 Initial draft published for public comment. Ported from the working-group diff --git a/spec/openproposal-3.0.md b/spec/openproposal-3.0.md index 6940958..027237b 100644 --- a/spec/openproposal-3.0.md +++ b/spec/openproposal-3.0.md @@ -248,6 +248,45 @@ channel. | `approval` | Object | seller-set | Review SLA and revision policy | | `production` | Object | selectable | Custom units. `available[]` of build options with `pricing` and `lead_time`; `{ custom_unit, build_owner, lead_time, cost }` | +#### Creative inspection and previews + +For this section, inspection means evaluating a creative outside live campaign +delivery, including discovery, composition, submission checks and previews. A +production notification is an event report intended for a campaign's live +measurement or delivery diagnostics. + +An implementation performing inspection MUST NOT send any production +notification. This includes requesting an event URL solely to check its +availability, regardless of the HTTP method used. + +An implementation MAY retrieve creative documents, follow VAST wrappers and +inspect referenced media as needed for its checks. Permission to retrieve these +resources does not extend to firing their event URLs. Retrieval can itself be +logged by the resource owner; this requirement does not imply that inspection +produces no server activity. + +A landing-page inspection remains subject to the same notification prohibition, +including any redirect requests. The presence of a URL in VAST `` +does not establish that requesting it is safe for inspection. The inspector +MUST NOT request a destination or redirect that sends a production notification; +it MAY use a separate inspection URL or the receiving service's documented test +mode under the conditions below. + +A preview that executes creative or verification code MUST prevent that code +from sending production notifications. Synthetic events MAY be sent to test +endpoints, or through a test mode that the receiving service documents as +excluding those events from production measurement and delivery diagnostics. An +inspector's own test flag is insufficient unless the receiving service supports +it. + +Inspection failures MUST be reported through diagnostics, without firing a +production VAST `` or `verificationNotExecuted` URL. An implementation +MUST NOT report a check that was skipped or could not finish as passed. + +These requirements apply to inspection only. During live delivery, +implementations remain subject to the tracking and error-reporting requirements +of the applicable execution standard. + ### 5.5 Targeting envelope Each field declares bounds, not a value. A bare value means the field is @@ -371,6 +410,8 @@ buyer commitment, and `settable` bounds. See See [`examples/line-item-ctv.yaml`](../examples/line-item-ctv.yaml). +Inspecting this line item's VAST creative is subject to section 5.4. + ### 6.4 Audio line item See [`examples/line-item-audio.yaml`](../examples/line-item-audio.yaml).