OpenProposal 3.0 JSON Schema Unofficial

Decision records · Value formats

D-004 How is a daypart time window written, with its days and its start and end times?

Gap Decision 4 on the supporting page of #121. Cited on main.

What the schemas do

{ days[], start, end }, where days[] holds lowercase English day names. start and end are HH:MM civil times from 00:00 to 24:00. end is exclusive and later than start, so only end can be 24:00.

Options

  • ad-manager-day-part

    As Google Ad Manager writes a day part: { days[], start, end }, where days[] holds lowercase English day names and start and end are { hour, minute } times of day, with end exclusive, later than start, and at most { hour: 24, minute: 0 }.

  • named-days-civil-time Chosen

    { days[], start, end }, where days[] holds lowercase English day names. start and end are HH:MM civil times from 00:00 to 24:00. end is exclusive and later than start, so only end can be 24:00.

  • numbered

    Day indexes 0–6 and hour indexes 0–23, with a UTC offset, as OpenDirect 1.5.1 and Meta do.

  • hour-of-week

    Hour-of-week indexes 0–167 with Local or UTC, as OpenDirect 2.1 OOH does.

Why

The specification says only "time windows". No IAB Tech Lab standard defines a window, so the window takes its shape from the ad server convention, Google Ad Manager's day part: the days of the week, and a start and an end time of day, where the end is exclusive and may be the end of the day. A time of day is one value, HH:MM, as the daypart request in the comment period writes it, and as the open PR that adds the window shape states it; an { hour, minute } object names two types where one concept has one. A pattern states the whole range, 00:00 to 24:00, and the schema states that only end can be 24:00, so a validator needs no rule for either. Two HH:MM values compare in time order as strings, so "end is later than start" is one comparison. Numbered days disagree on where the week starts (Meta counts from Sunday, and OpenDirect 2.1 doesn't say), while names can't be misread. Day names are lowercase, like the specification's other terms, and the week runs from Monday to Sunday, as ISO 8601 orders it. A window holds no time zone: the line item's clock reads every window (D-038).

What we ask the specification to state

Define a daypart time window as { days[], start, end }. Days are lowercase English names from monday to sunday. start and end are HH:MM civil times, where end is exclusive, later than start, and MAY be 24:00. A window that crosses midnight is two windows.

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 daypart row L260 at 44dfaaf
    daypart | Object | settable | allowed[] of time windows

What it shapes

main: DayName, DaypartWindow, TimeOfDay, LineItem.daypart

The record's YAML file