OpenProposal 3.0 JSON Schema Unofficial

Decision records · Types the tables leave open

D-026 What type does each § 5.6 field, key, and member take where the specification gives no format?

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

What the schemas do

Each takes the schema type or value list its meaning names. cost_method and the availability's terms take open vocabularies. A budget is an amount of money, and a count is a whole number, neither negative.

Options

  • as-listed Chosen

    Each takes the schema type or value list its meaning names. cost_method and the availability's terms take open vocabularies. A budget is an amount of money, and a count is a whole number, neither negative.

  • open

    Each takes the bare JSON type the table names.

Why

The domain model types the § 5.6 rows a concept names: the rates and the committed amount are money, Amount (D-036), the flight's start and end points in time, Timestamp (D-001), the commitment's version the proposal's revision number, a Count, and hold_available a flag. cost_method is an Enum with no value list, only "CPM, CPC, flat, etc."; those three are the core terms of the open vocabulary CostMethod, spelled as the specification spells them, and § 5.6.3 uses flat. In availability, unit and basis are terms the specification doesn't list, each the open vocabulary of its own concept (D-041); granularity is the length of time each figure covers, a Duration (D-040); as_of is a Timestamp and quantity a Count. The bounds of commitment_bounds are counts of impressions and amounts of money. A min_commitment[] threshold has a line item ID, a Uuid (D-037), the commitment's basis vocabulary, an Amount, and a CurrencyCode.

What we ask the specification to state

Give cost_method its value list, and list the values of availability's unit and basis.

The specification lines it rests on

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

main

  • § 5.6, the pricing[].cost_method row L268 at 44dfaaf
    pricing[].cost_method | Enum | seller-set | CPM, CPC, flat, etc.
  • § 5.6, the availability row's description: the inline object L275 at 44dfaaf
    { unit, basis, as_of, granularity, type: forecast | reservable, quantity }
  • § 5.6, the commitment_bounds row's description: the inline object L276 at 44dfaaf
    { min_impressions, max_impressions, min_budget, max_budget }

With the open PRs

  • § 5.6, the pricing[].cost_method row L261 on main at 981a74e
    pricing[].cost_method | Enum | seller-set | CPM, CPC, flat, etc.
  • § 5.6, the availability row's description: the inline object L268 on main at 981a74e
    { unit, basis, as_of, granularity, type: forecast | reservable, quantity }
  • § 5.6, the commitment_bounds row's description: the inline object L269 on main at 981a74e
    { min_impressions, max_impressions, min_budget, max_budget }
  • § 5.6.3, the requires.min_commitment[] key row's meaning: the inline object L328 in #70
    { line_item_id, basis, amount, currency }

What it shapes

main: Availability, CommitmentBounds, CostMethod, Availability.as_of, Availability.basis, Availability.granularity, Availability.quantity, Availability.type, Availability.unit, CommitmentBounds.max_budget, CommitmentBounds.max_impressions, CommitmentBounds.min_budget, CommitmentBounds.min_impressions, LineItemSummaryPricingEntry.cost_method, PricingEntry.cost_method

With the open PRs: Availability, CommitmentBounds, CostMethod, MinCommitmentEntry, Availability.as_of, Availability.basis, Availability.granularity, Availability.quantity, Availability.type, Availability.unit, CommitmentBounds.max_budget, CommitmentBounds.max_impressions, CommitmentBounds.min_budget, CommitmentBounds.min_impressions, LineItemSummaryPricingEntry.cost_method, MinCommitmentEntry.amount, MinCommitmentEntry.basis, MinCommitmentEntry.currency, MinCommitmentEntry.line_item_id, PricingEntry.cost_method

The record's YAML file