OpenProposal 3.0 JSON Schema Unofficial

Decision records · What each rule accepts

D-035 Which payloads does each rule on one line item accept, and what does a receiver do, where the specification states the rule only in prose?

Gap Decision 39 on the supporting page of #121. Cited on main and with the open PRs.

What the schemas do

Read each rule as narrowly as its words allow, and give it the vectors that reading decides: - the line item's own status - a pin as a sha256 - the channel rows and the environment rows, matched by device and distribution - the seller named by the proposal's seller_id

Options

  • narrow-reading Chosen

    Read each rule as narrowly as its words allow, and give it the vectors that reading decides: - the line item's own status - a pin as a sha256 - the channel rows and the environment rows, matched by device and distribution - the seller named by the proposal's seller_id

  • no-vectors

    Leave these rules without vectors until the specification states them precisely.

Why

Type rules § 9 gives every rule a valid and an invalid vector, so leaving these rules without vectors fails the gate. The vectors read each rule as follows. "Reaches status agreed" is the line item's own status, since the line item is self-contained, so an agreed line item carries no catalog_ref and no list_ref. A list_ref is hash-pinned when it carries sha256. An environments.available[] value matches an impression of the line item's channel when one of the value's (distribution channel, device type) pairs can hold an impression that § 5.1.1 gives that channel, its first matching row: dooh admits only dooh, and ctv only ctv, while display admits web_desktop, web_mobile, and app_mobile. The plcmt rule reads its key row as it is written: "plcmt | REQUIRED for video ads (channel video, or video on channel ctv); otherwise OPTIONAL". A line item whose channel is video holds video ads, so it gives plcmt. A line item whose channel is ctv says in no field whether its ads are video: a format ID is namespaced by channel, not by medium, as ctv/instream-15s is, the format registry has no ctv/* entries, and the delivery protocol is a term the text doesn't list (D-041). So a ctv line item without plcmt is undecided, neither accepted nor rejected, its vectors leave it out, and the examples gate records each one, as the bonus example is. "The seller" as a measurement_source vendor is the vendor whose ID is the proposal's seller_id, which the line item doesn't carry, so the vectors give it as context. An exclusion type is a key of exclusions that exclusions_accepted.types can list, so list_ref, whose entries have no stated type, is none. A consumer that doesn't recognise a channel, such as a namespaced one, skips the line item and keeps the proposal. A code block shows part of a line item, so a rule whose verdict turns on a member the block leaves out while it shows another the rule reads is undecided: the status beside a list_ref or a catalog_ref, the channel beside environments or placement, and any of the members the measurement rule reads. So is a measurement_source option given as a catalog_ref, whose vendor the line item holds only once the reference is resolved. The measurement rule is a SHOULD NOT, so an example that breaks it is a warning, not an error.

What we ask the specification to state

Say:

  • whether "reaches status agreed" means the proposal's status or the line item's
  • how a line item names the seller as its measurement_source vendor
  • how a ctv line item says it carries video, so that the plcmt condition can be checked
  • which exclusion type a list_ref holds

The specification lines it rests on

Each line is quoted as the record pins it. Expand an item to read the quote.

main

  • § 2.2, a requirement L109 at 44dfaaf
    When a proposal reaches status agreed, every catalog_ref MUST be replaced by its resolved value in the stored record, so the committed artifact is self-contained and immutable.

With the open PRs

  • § 2.2, a requirement L102 on main at 981a74e
    When a proposal reaches status agreed, every catalog_ref MUST be replaced by its resolved value in the stored record, so the committed artifact is self-contained and immutable.
  • § 5.5, a requirement L298 in #71
    list_ref MUST be hash-pinned, and resolved into the stored record at agreed, as for catalog_ref (§ 2.2).
  • § 5.1.1, a requirement L247 in #119
    A consumer MUST skip a line item whose channel it does not recognise, and MUST NOT reject the proposal because of it.
  • § 5.2.1, a requirement L280 in #119
    Each environments.available[] value MUST match at least one impression to which 5.1.1 gives the line item's channel.
  • § 5.1.1, the definition of dooh for channel L235 in #119
    dooh | Distribution channel Dooh
  • § 5.1.1, the definition of audio for channel L236 in #119
    audio | Audio ad (AudioPlacement)
  • § 5.1.1, the definition of ctv for channel L237 in #119
    ctv | Device type Connected TV (3), Connected Device (6) or Set Top Box (7)
  • § 5.1.1, the definition of native for channel L238 in #119
    native | Native ad (DisplayPlacement.nativefmt), including native ads with video assets
  • § 5.1.1, the definition of video for channel L239 in #119
    video | Video ad (VideoPlacement)
  • § 5.1.1, the definition of display for channel L240 in #119
    display | Any other display ad (DisplayPlacement)
  • § 5.2.1, the definition of web_desktop for environments L266 in #119
    web_desktop | Site | Personal Computer (2)
  • § 5.2.1, the definition of web_mobile for environments L267 in #119
    web_mobile | Site | Mobile/Tablet - General (1), Phone (4), Tablet (5)
  • § 5.2.1, the definition of app_mobile for environments L268 in #119
    app_mobile | App | Mobile/Tablet - General (1), Phone (4), Tablet (5)
  • § 5.2.1, the definition of ctv for environments L269 in #119
    ctv | Site or App | Connected TV (3), Connected Device (6), Set Top Box (7)
  • § 5.2.1, the definition of dooh for environments L270 in #119
    dooh | Dooh | Any
  • § 5.2.2, a requirement L265 in #120
    Unless api[] includes OMID 1.0 (7), a line item whose committed_metrics[] includes viewable_rate and whose environments.available[] includes app_mobile or ctv SHOULD NOT offer a measurement_source vendor other than the seller.
  • § 5.2, a requirement
    plcmt is REQUIRED for video ads.

    The integration of the open PRs wrote this text, to resolve a conflict or as its lock records, so no commit on GitHub holds it.

  • § 5.2.2, the placement.plcmt key row L247 in #120
    plcmt | REQUIRED for video ads (channel video, or video on channel ctv); otherwise OPTIONAL | One value from List: Plcmt Subtypes - Video: Instream (1), Accompanying Content (2), Interstitial (3), No Content/Standalone (4), Pause (5), Screensaver (6), Overlay (7), Squeezeback (8), In-scene (9) | VideoPlacement.ptype, video.plcmt
  • § 5.5, a requirement L294 in #71
    A buyer MUST NOT supply an exclusion type absent from exclusions_accepted.types.

What it shapes

With the open PRs: LineItemSummaryPlacement.plcmt, Placement.plcmt

The record's YAML file