OpenProposal 3.0 JSON Schema Unofficial

Decision records · Types the tables leave open

D-044 What values does a frequency cap's period take, and is a period a calendar period or a length of time?

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

What the schemas do

One of the OpenDirect 2.1 Line.frequencyinterval intervals, in the specification's spelling: hour, day, week, month, or flight, OpenDirect's LineDuration. The first four are calendar periods on the line item's clock, so a day runs from midnight to midnight. flight runs from the flight's start to its end, between its two points in time.

Options

  • opendirect-intervals Chosen

    One of the OpenDirect 2.1 Line.frequencyinterval intervals, in the specification's spelling: hour, day, week, month, or flight, OpenDirect's LineDuration. The first four are calendar periods on the line item's clock, so a day runs from midnight to midnight. flight runs from the flight's start to its end, between its two points in time.

  • rolling-duration

    An ISO 8601 duration, such as P1D, read as a rolling span of that length, as hold_duration is.

  • as-written

    A word, as the examples write day, from no list.

Why

The text names period and lists no value for it, and every example writes day. With the open PRs, the text says that period is a calendar period in time_zone, like the calendar Day of OpenDirect 2.1 Line.frequencyinterval, and that weeks start on Monday. A calendar period isn't a length of time: a calendar day runs from midnight to midnight in a zone, so it is 23 or 25 hours long on the day the clocks change, and it resets every count at midnight, where a rolling P1D resets 24 hours after each impression. So the period is a term, not a Duration. OpenDirect 2.1, where a direct buy's line lands, lists the intervals Day, Month, Week, Hour, and LineDuration, and states the calendar meaning for Day. The schema takes those intervals, spelled as the specification spells its terms, with flight for LineDuration, the commitment's flight, so the examples' day stays valid. flight is no calendar period: a flight's start and end are points in time (D-042), so it runs between them, whatever the clock, and only hour, day, week, and month are read on the line item's clock, with weeks from Monday, as the open PRs' text says. The list is closed: a seller can't count against a period a receiver doesn't know how to reset. Whether a period is calendar or rolling is an open question of the PR that adds the clock; the schema reads it as calendar, as that PR's text states, and on main, whose text names no clock, as the same calendar period, so the two locks agree.

What we ask the specification to state

List the values of frequency_cap.period: the OpenDirect 2.1 Line.frequencyinterval intervals, hour | day | week | month | flight. Here flight is OpenDirect's LineDuration, the commitment's flight. Say that hour, day, week, and month are calendar periods on the line item's clock, as #123 does. A day then runs from midnight to midnight, not for 24 hours, and a week starts on Monday. Say that flight runs from the flight's start to its end, which are points in time.

The specification lines it rests on

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

main

  • § 5.5, the frequency_cap row's description: the inline object L261 at 44dfaaf
    { max: { min, max }, period, basis: device | household | listener }

With the open PRs

  • § 5.5, the frequency_cap row's description: the inline object L254 on main at 981a74e
    { max: { min, max }, period, basis: device | household | listener }
  • § 5.5, a sentence L281 in #123
    Like the calendar Day of OpenDirect 2.1 Line.frequencyinterval, frequency_cap.period is a calendar period in time_zone; weeks start on Monday.

What it shapes

main: FrequencyCap, FrequencyCapPeriod, FrequencyCap.basis, FrequencyCap.max, FrequencyCap.period

With the open PRs: FrequencyCap, FrequencyCapPeriod, FrequencyCap.basis, FrequencyCap.max, FrequencyCap.period

The record's YAML file