OpenProposal 3.0 JSON Schema Unofficial

Decision records · Types the tables leave open

D-024 What type does each member of the § 5.2 and § 5.3 objects take, and each key of the § 5.2 tables that no rule types?

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

What the schemas do

Each member takes the schema type its meaning names, such as a timestamp or a URL. A code from an AdCOM list is the code. A plural member without [] is a list.

Options

  • as-listed Chosen

    Each member takes the schema type its meaning names, such as a timestamp or a URL. A code from an AdCOM list is the code. A plural member without [] is a list.

  • open-objects

    Each object accepts any members.

Why

No inline object gives its members types, so each member takes the type of the concept its name and the examples call for. A property's or an audience's id names a catalog entry the seller mints, a Uuid (D-037), and a name is Text. domains is a list of Domain, and with the open PRs apps is a list of the app objects that the App identity table describes; both are plural, the examples write lists, and the table is headed apps[], though the object writes them without []. supported_formats lists format IDs, FormatId like the formats themselves (D-019). An audience's taxonomy_ref names an entry of a taxonomy another party keeps, an ExternalId, its provenance a term of the open vocabulary Provenance (D-041), and its addressable_scale a Count. In buyer_supplied, the two permissions are booleans, match_rate_expected is a Fraction (D-005), segments[] lists the buyer's segment IDs as its own systems write them, and suppression_list is an open object (D-016). In placement, § 5.2.2 says every key takes an integer, playmethod[] and api[] arrays of integers, and refresh an object whose min_interval_s is a REQUIRED integer, so min_interval_s is a required member, a length of time (D-040). plcmt, playmethod[], and api[] take any code of List: Plcmt Subtypes - Video, List: Playback Methods, and List: API Frameworks, so each is the vocabulary of its list's codes, as AdCOM 1.0 writes them at the commit the text links: PlcmtSubtype, whose row writes out all nine, PlaybackMethod, and ApiFramework, whose rows name some codes "such as". The first two are closed; List: API Frameworks also reserves the codes from 500 for vendors, so ApiFramework is open to a VendorCode. reward, instl, and skip are flags (D-039).

What we ask the specification to state

Type the members of each inline object, and write each list member with [], as domains[] and apps[]. Name the values of provenance.

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's description: the inline object L225 at 44dfaaf
    { id, name, domains, supported_formats }
  • § 5.3, the audiences row's description: the inline object L233 at 44dfaaf
    { id, name, taxonomy_ref, provenance, addressable_scale }
  • § 5.3, the buyer_supplied row's description: the inline object L236 at 44dfaaf
    { segments_allowed, suppression_allowed, match_rate_expected, segments[], suppression_list }

With the open PRs

  • § 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.2.2, the placement.skipafter key row L249 in #120
    skipafter | OPTIONAL | When skip is 1: seconds the ad plays before the placement enables skipping | VideoPlacement.skipafter, AudioPlacement.skipafter, video.skipafter
  • § 5.2.2, the placement.playmethod[] key row L250 in #120
    playmethod[] | OPTIONAL | Video or audio. Values from List: Playback Methods in use, such as Initiates without any specific user interaction with Sound On (1), Initiates without any specific user interaction Sound Off by Default (2), Initiates on Click with Sound On (3) and Continuous Playback (7) | VideoPlacement.playmethod, AudioPlacement.playmethod, video.playbackmethod
  • § 5.2.2, the placement.api[] key row L251 in #120
    api[] | OPTIONAL | Values from List: API Frameworks that every impression supports, such as MRAID 3.0 (6), OMID 1.0 (7) and SIMID 1.1 (9) | DisplayPlacement.api, VideoPlacement.api, AudioPlacement.api, banner.api, video.api, audio.api
  • § 5.2, the properties row's description: the inline object L225 in #17
    { id, name, domains, apps, supported_formats }
  • § 5.2.2, the placement.refresh key row's meaning: the inline object L252 in #120
    { min_interval_s }
  • § 5.2.2, a requirement L242 in #120
    Each key takes an integer, except playmethod[] and api[], which take arrays of integers, and refresh, an object whose min_interval_s is a REQUIRED integer.
  • § 5.2.2, a sentence L244 in #120
    plcmt, playmethod[] and api[] take any code in List: Plcmt Subtypes - Video, List: Playback Methods and List: API Frameworks respectively.
  • § 5.3, the audiences row's description: the inline object L226 on main at 981a74e
    { id, name, taxonomy_ref, provenance, addressable_scale }
  • § 5.3, the buyer_supplied row's description: the inline object L229 on main at 981a74e
    { segments_allowed, suppression_allowed, match_rate_expected, segments[], suppression_list }

What it shapes

main: AudiencesOption, BuyerSupplied, PropertiesOption, AudiencesOption.addressable_scale, AudiencesOption.id, AudiencesOption.name, AudiencesOption.provenance, AudiencesOption.taxonomy_ref, BuyerSupplied.match_rate_expected, BuyerSupplied.segments, BuyerSupplied.segments_allowed, BuyerSupplied.suppression_allowed, BuyerSupplied.suppression_list, LineItemSummaryPropertiesOption.name, PropertiesOption.domains, PropertiesOption.id, PropertiesOption.name, PropertiesOption.supported_formats

With the open PRs: ApiFramework, AudiencesOption, BuyerSupplied, PlaybackMethod, PlcmtSubtype, PropertiesOption, Refresh, AudiencesOption.addressable_scale, AudiencesOption.id, AudiencesOption.name, AudiencesOption.provenance, AudiencesOption.taxonomy_ref, BuyerSupplied.match_rate_expected, BuyerSupplied.segments, BuyerSupplied.segments_allowed, BuyerSupplied.suppression_allowed, BuyerSupplied.suppression_list, LineItemSummaryPlacement.plcmt, LineItemSummaryPropertiesOption.name, Placement.api, Placement.playmethod, Placement.plcmt, Placement.skipafter, PropertiesOption.apps, PropertiesOption.domains, PropertiesOption.id, PropertiesOption.name, PropertiesOption.supported_formats, Refresh.min_interval_s

The record's YAML file