OpenProposal 3.0 JSON Schema Unofficial

Decision records · Types the tables leave open

D-020 Which fields may carry a catalog_ref in place of an inline value?

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

What the schemas do

Each option in audiences.available[] and properties.available[] is an inline value or a catalog reference.

Options

  • audience-and-property-options Chosen

    Each option in audiences.available[] and properties.available[] is an inline value or a catalog reference.

  • every-option

    Every option of every selectable field.

  • whole-fields

    Each field as a whole

Why

§ 2.2 allows a reference for "any field whose value is drawn from a seller-maintained catalog" but never says which fields those are. The only reference in the specification and the examples is an audience in audiences.available[], and § 2.3 says that large property lists use catalog_ref. Audiences and properties are the catalog-backed objects a seller maintains; formats, environments, and the other options are codes and terms, not catalog entries. So CatalogRefOr wraps exactly those two option types, which are closed objects, as its parameter requires.

What we ask the specification to state

List the fields, or the options, that may carry a catalog_ref. Say whether a reference replaces one option or a whole field, as § 2.3's "large lists use catalog_ref" suggests.

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.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
  • § 2.2, a requirement L94 at 44dfaaf
    Any field whose value is drawn from a seller-maintained catalog MAY carry a reference in place of an inline value:
  • § 2.2, code block 1 L97-L100 at 44dfaaf
    catalog_ref: "<seller_namespace>/<collection>/<entry_id>@<version>" example: "examplepub/audiences/smb-decision-makers@3"

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.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
  • § 2.2, a requirement L87 on main at 981a74e
    Any field whose value is drawn from a seller-maintained catalog MAY carry a reference in place of an inline value:
  • § 2.2, code block 1 L90-L91 on main at 981a74e, L99 on main at c448618, L93 on main at 981a74e
    catalog_ref: "<seller_namespace>/<collection>/<entry_id>@<version>" example: "examplepub/audiences/smb-decision-makers@3"

What it shapes

main: LineItem.audiences, LineItem.properties

With the open PRs: LineItem.audiences, LineItem.properties

The record's YAML file