Cross-publisher selector used by authorization_type: 'publisher_properties'.
Each entry references properties from a different publisher's adagents.json
(resolving the actual Property objects requires fetching that publisher's
file separately).
Two shapes per the spec:
Singular — publisher_domain: string. One selector targets one
publisher. Available for all selection_type variants.
Compact / fan-out — publisher_domains: string[]. One selector
targets every listed publisher with the same predicate. The compact
form is only available for selection_type: 'all' | 'by_tag'.
'by_id' is single-publisher only — property IDs are scoped to one
publisher's adagents.json, so the fan-out semantics don't make sense.
See adcontextprotocol/adcp#4504.
The two shapes are XOR — both-present or neither-present fails validation.
Callers that iterate by publisher_domain MUST first fan compact-form
selectors out to singular via expandPublisherPropertySelectors
(src/lib/discovery/publisher-property-selector.ts), otherwise they will
silently miss the publishers carried in publisher_domains[].
Cross-publisher selector used by
authorization_type: 'publisher_properties'. Each entry references properties from a different publisher's adagents.json (resolving the actualPropertyobjects requires fetching that publisher's file separately).Two shapes per the spec:
publisher_domain: string. One selector targets one publisher. Available for allselection_typevariants.publisher_domains: string[]. One selector targets every listed publisher with the same predicate. The compact form is only available forselection_type: 'all' | 'by_tag'.'by_id'is single-publisher only — property IDs are scoped to one publisher's adagents.json, so the fan-out semantics don't make sense. See adcontextprotocol/adcp#4504.The two shapes are XOR — both-present or neither-present fails validation. Callers that iterate by
publisher_domainMUST first fan compact-form selectors out to singular via expandPublisherPropertySelectors (src/lib/discovery/publisher-property-selector.ts), otherwise they will silently miss the publishers carried inpublisher_domains[].