OpenProposal 3.0 JSON Schema Unofficial

Decision records · Types the tables leave open

D-018 Which selectable and settable fields take a bare value in place of their full form?

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

What the schemas do

None. Each field takes its full form only. A seller-set value is the full form: one option in available[] and the same option in included[], or one value in allowed[].

Options

  • none Chosen

    None. Each field takes its full form only. A seller-set value is the full form: one option in available[] and the same option in included[], or one value in allowed[].

  • one-value

    Every field also takes one value of its option type.

Why

§ 3.1, § 3.2, and § 5.5 let a field carry a bare value and treat it as seller-set, but they never say what a bare value is (D-008). For most fields any choice would invent structure: a bare geo could be one code or several, a bare frequency_cap would replace its max, and the examples write none. The full form states every seller-set value already. With no bare value, the constructors take no B, and the untagged fallback union of type rules § 8 doesn't occur.

What we ask the specification to state

State the type of the bare value for each selectable and settable field, or drop the fallback in § 3.1, § 3.2, and § 5.5.

The specification lines it rests on

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

main

  • § 5.2, the properties row L225 at 44dfaaf
    properties | Object | selectable | available[] of { id, name, domains, supported_formats }, included[], pricing, max_select
  • § 5.2, the environments row L227 at 44dfaaf
    environments | Object | selectable | available[] from web_desktop | web_mobile | app_mobile | ctv | dooh | audio_streaming
  • § 5.3, the audiences row L233 at 44dfaaf
    audiences | Object | selectable | available[] of { id, name, taxonomy_ref, provenance, addressable_scale }, included[], pricing as delta_cpm per option, max_select
  • § 5.3, the activation_route row L235 at 44dfaaf
    activation_route | Object | selectable | available[] from publisher_side | clean_room | id_partner, included[], pricing
  • § 5.4, the formats row L242 at 44dfaaf
    formats | Object | selectable | available[] of registry format ids namespaced by channel (display/300x250, audio/host-read-30s), included[], pricing, max_select
  • § 5.4, the production row L249 at 44dfaaf
    production | Object | selectable | Custom units. available[] of build options with pricing and lead_time; { custom_unit, build_owner, lead_time, cost }
  • § 5.5, the geo row L258 at 44dfaaf
    geo | Object | settable | allowed[] of geo codes the buyer may select within
  • § 5.5, the device row L259 at 44dfaaf
    device | Object | settable | allowed[] of device categories
  • § 5.5, the daypart row L260 at 44dfaaf
    daypart | Object | settable | allowed[] of time windows
  • § 5.5, the frequency_cap row L261 at 44dfaaf
    frequency_cap | Object | settable | { max: { min, max }, period, basis: device | household | listener }. Basis matters: CTV typically caps at household, audio at listener
  • § 5.6, the commitment row L277 at 44dfaaf
    commitment | Object | settable | The buyer's actual commitment. See 5.6.1
  • § 5.6, the cancellation_policy row L280 at 44dfaaf
    cancellation_policy | Object | selectable | available[] of cancellation rights with pricing per option
  • § 5.6, the exclusivity row L281 at 44dfaaf
    exclusivity | Object | selectable | available[] of exclusivity terms with pricing
  • § 5.7, the measurement_source row L321 at 44dfaaf
    measurement_source | Object | selectable | available[] of { vendor, attribution_window, qualifier } with pricing. Lets a buyer transact in its own currency
  • § 5.7, the shortfall_remedy row L322 at 44dfaaf
    shortfall_remedy | Object | selectable | available[] from makegood | credit | none, plus remedy_terms
  • § 5.7, the reporting row L323 at 44dfaaf
    reporting | Object | selectable | available[] of { feed_type: log_level | aggregate | none, cadence, delivery_mechanism, metrics_provided[], latency } with pricing
  • § 5.9, the transaction_mechanism row L339 at 44dfaaf
    transaction_mechanism | Object | selectable | available[] from DIRECT_IO | PROGRAMMATIC_GUARANTEED | PREFERRED_DEAL | PRIVATE_AUCTION | OPEN_AUCTION. A seller MAY offer the same inventory through more than one
  • § 3.1, a requirement L149 at 44dfaaf
    A field marked selectable that carries a bare value and no available[] MUST be treated as seller-set.
  • § 3.2, a requirement L161 at 44dfaaf
    A field marked settable that carries a bare value and no bounds MUST be treated as seller-set.

With the open PRs

  • § 5.2, the properties row L225 in #17
    properties | Object | selectable | available[] of { id, name, domains, apps, supported_formats }, included[], pricing, max_select. Each property MUST carry domains, apps or both
  • § 5.2, the environments row L257 in #119
    environments | Object | selectable | available[] from web_desktop | web_mobile | app_mobile | ctv | dooh, each defined in 5.2.1
  • § 5.3, the audiences row L226 on main at 981a74e
    audiences | Object | selectable | available[] of { id, name, taxonomy_ref, provenance, addressable_scale }, included[], pricing as delta_cpm per option, max_select
  • § 5.3, the activation_route row L228 on main at 981a74e
    activation_route | Object | selectable | available[] from publisher_side | clean_room | id_partner, included[], pricing
  • § 5.4, the formats row L235 on main at 981a74e
    formats | Object | selectable | available[] of registry format ids namespaced by channel (display/300x250, audio/host-read-30s), included[], pricing, max_select
  • § 5.4, the production row L242 on main at 981a74e
    production | Object | selectable | Custom units. available[] of build options with pricing and lead_time; { custom_unit, build_owner, lead_time, cost }
  • § 5.5, the geo row L260 in #72
    geo | Object | selectable | available[] of geo codes with included[], pricing deltas and max_select (§ 3.1), for a line item priced by market. A geo that declares only allowed[] is settable. See below
  • § 5.5, the device row L252 on main at 981a74e
    device | Object | settable | allowed[] of device categories
  • § 5.5, the daypart row L260 in #123
    daypart | Object | settable | allowed[] of { days[], start, end }: days[] from monday | tuesday | wednesday | thursday | friday | saturday | sunday, HH:MM civil time, end exclusive, up to 24:00
  • § 5.5, the frequency_cap row L254 on main at 981a74e
    frequency_cap | Object | settable | { max: { min, max }, period, basis: device | household | listener }. Basis matters: CTV typically caps at household, audio at listener
  • § 5.6, the commitment row L270 on main at 981a74e
    commitment | Object | settable | The buyer's actual commitment. See 5.6.1
  • § 5.6, the cancellation_policy row L273 on main at 981a74e
    cancellation_policy | Object | selectable | available[] of cancellation rights with pricing per option
  • § 5.6, the exclusivity row L274 on main at 981a74e
    exclusivity | Object | selectable | available[] of exclusivity terms with pricing
  • § 5.7, the measurement_source row L314 on main at 981a74e
    measurement_source | Object | selectable | available[] of { vendor, attribution_window, qualifier } with pricing. Lets a buyer transact in its own currency
  • § 5.7, the shortfall_remedy row L315 on main at 981a74e
    shortfall_remedy | Object | selectable | available[] from makegood | credit | none, plus remedy_terms
  • § 5.7, the reporting row L316 on main at 981a74e
    reporting | Object | selectable | available[] of { feed_type: log_level | aggregate | none, cadence, delivery_mechanism, metrics_provided[], latency } with pricing
  • § 5.9, the transaction_mechanism row L332 on main at 981a74e
    transaction_mechanism | Object | selectable | available[] from DIRECT_IO | PROGRAMMATIC_GUARANTEED | PREFERRED_DEAL | PRIVATE_AUCTION | OPEN_AUCTION. A seller MAY offer the same inventory through more than one
  • § 3.1, a requirement L142 on main at 981a74e
    A field marked selectable that carries a bare value and no available[] MUST be treated as seller-set.
  • § 3.2, a requirement L154 on main at 981a74e
    A field marked settable that carries a bare value and no bounds MUST be treated as seller-set.

What it shapes

main: LineItem.activation_route, LineItem.audiences, LineItem.cancellation_policy, LineItem.commitment, LineItem.daypart, LineItem.device, LineItem.environments, LineItem.exclusivity, LineItem.formats, LineItem.frequency_cap, LineItem.geo, LineItem.measurement_source, LineItem.production, LineItem.properties, LineItem.reporting, LineItem.shortfall_remedy, LineItem.transaction_mechanism

With the open PRs: LineItem.activation_route, LineItem.audiences, LineItem.cancellation_policy, LineItem.commitment, LineItem.daypart, LineItem.device, LineItem.environments, LineItem.exclusivity, LineItem.formats, LineItem.frequency_cap, LineItem.geo, LineItem.measurement_source, LineItem.production, LineItem.properties, LineItem.reporting, LineItem.shortfall_remedy, LineItem.transaction_mechanism

The record's YAML file