Problem
AdCP has no first-class way for a buyer to send publisher-specific targeting keys, but adding an unbounded custom map without discovery would let buyers request keys a seller cannot interpret and let sellers silently ignore them.
Split from #4239. The typed device_platform_exclude slice is handled separately in #6166.
3.2 design target
Define a capability-gated custom-targeting contract:
- seller capabilities declare the accepted key namespace and, where enumerable, accepted values;
- targeting uses a
Record<string, string[]> shape for set-membership intent;
- buyers send only declared keys;
- sellers MUST reject undeclared keys or unsupported values rather than silently dropping them;
- define key ownership/namespacing so two integrations cannot assign different meaning to the same key;
- do not reuse
key_value_pairs (collides with signals/TMP concepts) or introduce first-class browser/media-type fields in this issue.
WG review shape
Bring this back as a short two-option memo:
- finite enumeration: capabilities declare keys and all accepted values;
- typed-open values: capabilities declare keys plus value constraints when full enumeration is impractical.
Both options retain reject-rather-than-drop semantics.
Problem
AdCP has no first-class way for a buyer to send publisher-specific targeting keys, but adding an unbounded
custommap without discovery would let buyers request keys a seller cannot interpret and let sellers silently ignore them.Split from #4239. The typed
device_platform_excludeslice is handled separately in #6166.3.2 design target
Define a capability-gated custom-targeting contract:
Record<string, string[]>shape for set-membership intent;key_value_pairs(collides with signals/TMP concepts) or introduce first-class browser/media-type fields in this issue.WG review shape
Bring this back as a short two-option memo:
Both options retain reject-rather-than-drop semantics.