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?
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
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
propertiesrow's description: the inline object L225 at 44dfaaf{ id, name, domains, supported_formats }
§ 5.3, the
audiencesrow's description: the inline object L233 at 44dfaaf{ id, name, taxonomy_ref, provenance, addressable_scale }
§ 5.3, the
buyer_suppliedrow'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.plcmtkey row L247 in #120plcmt| REQUIRED for video ads (channelvideo, or video onchannelctv); 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.skipafterkey row L249 in #120skipafter| OPTIONAL | Whenskipis1: 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 #120playmethod[]| 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 #120api[]| 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
propertiesrow's description: the inline object L225 in #17{ id, name, domains, apps, supported_formats }
§ 5.2.2, the
placement.refreshkey 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[]andapi[], which take arrays of integers, andrefresh, an object whosemin_interval_sis a REQUIRED integer.§ 5.2.2, a sentence L244 in #120
plcmt,playmethod[]andapi[]take any code in List: Plcmt Subtypes - Video, List: Playback Methods and List: API Frameworks respectively.§ 5.3, the
audiencesrow's description: the inline object L226 on main at 981a74e{ id, name, taxonomy_ref, provenance, addressable_scale }
§ 5.3, the
buyer_suppliedrow'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