Decision records · Selectable and settable fields
D-046 What names an object option in included[] and the pricing keys, and must a property's or an audience option's id be present?
What the schemas do
An object option is named by its id. Every object option carries one, required: the identity the seller mints for it.
Options
Why
§ 3.1 keys pricing by option_id, and included[] lists which options are in the base rate, so every option that can be included or priced needs a name. A string option is its own name. The text doesn't say what names an object option, and the property and audience options write id with no presence. A member of an option's own, such as vendor or feed_type, isn't unique: a seller can offer one vendor with two attribution windows, or one feed type at two cadences. An optional id leaves an option that included[] and pricing can't name. So an object option is named by its id, which it carries, required: the constructor gives it, as a rule of the selectable template, to each object type that is an option, and the mapping keeps the members the text writes. The property and audience options keep the id they write and make it required, and the cancellation and exclusivity options, whose members the text doesn't state, carry it too. An option given as a catalog_ref has no id (D-007). The id is a UUID, as every ID a party mints is (D-037). Giving an id to the production, measurement source, and reporting options, whose members the text lists without one, changes what the text settles, so that part is a change we propose (D-047).
What we ask the specification to state
Say that included[] and the pricing keys name an object option by its id. Mark the id of a property and an audience option REQUIRED. Give the cancellation and exclusivity options an id once their members are defined.
The specification lines it rests on
Each line is quoted as the record pins it. Expand an item to read the quote.
main
§ 3.1, the
included[]key row L145 at 44dfaafincluded[]| REQUIRED | Which options are in the base rate. MAY be empty§ 3.1, the
pricingkey row L146 at 44dfaafpricing| OPTIONAL | Delta per option beyond those included, as{ option_id: { delta_cpm | delta_flat | delta_pct } }§ 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.6, the
cancellation_policyrow L280 at 44dfaafcancellation_policy| Object | selectable |available[]of cancellation rights withpricingper option§ 5.6, the
exclusivityrow L281 at 44dfaafexclusivity| Object | selectable |available[]of exclusivity terms withpricing
With the open PRs
§ 3.1, the
included[]key row L138 on main at 981a74eincluded[]| REQUIRED | Which options are in the base rate. MAY be empty§ 3.1, the
pricingkey row L139 on main at 981a74epricing| OPTIONAL | Delta per option beyond those included, as{ option_id: { delta_cpm | delta_flat | delta_pct } }§ 5.2, the
propertiesrow's description: the inline object L225 in #17{ id, name, domains, apps, supported_formats }
§ 5.3, the
audiencesrow's description: the inline object L226 on main at 981a74e{ id, name, taxonomy_ref, provenance, addressable_scale }
§ 5.6, the
cancellation_policyrow L273 on main at 981a74ecancellation_policy| Object | selectable |available[]of cancellation rights withpricingper option§ 5.6, the
exclusivityrow L274 on main at 981a74eexclusivity| Object | selectable |available[]of exclusivity terms withpricing
What it shapes
main: AudiencesOption, CancellationPolicyOption, ExclusivityOption, MeasurementSourceOption, ProductionOption, PropertiesOption, ReportingOption, AudiencesOption.addressable_scale, AudiencesOption.id, AudiencesOption.name, AudiencesOption.provenance, AudiencesOption.taxonomy_ref, LineItem.cancellation_policy, LineItem.exclusivity, LineItemSummaryFormatsSelection.included, LineItemSummaryPropertiesOption.name, PropertiesOption.domains, PropertiesOption.id, PropertiesOption.name, PropertiesOption.supported_formats
With the open PRs: AudiencesOption, CancellationPolicyOption, ExclusivityOption, MeasurementSourceOption, ProductionOption, PropertiesOption, ReportingOption, AudiencesOption.addressable_scale, AudiencesOption.id, AudiencesOption.name, AudiencesOption.provenance, AudiencesOption.taxonomy_ref, LineItem.cancellation_policy, LineItem.exclusivity, LineItemSummaryFormatsSelection.included, LineItemSummaryPropertiesOption.name, PropertiesOption.apps, PropertiesOption.domains, PropertiesOption.id, PropertiesOption.name, PropertiesOption.supported_formats