feat(schemas): add supported_target_kinds to conversion_tracking capability (closes #4639)#4649
Merged
Merged
Conversation
…bility (closes #4639) Adds an optional `supported_target_kinds` array to the existing seller-level `conversion_tracking` capability object on `get_adcp_capabilities`. Enum- constrained to `cost_per | per_ad_spend | maximize_value`, paralleling the product-level `metric_optimization.supported_targets`. Today buyers have no pre-submission signal for which event-goal `target.kind` values a seller can compute against — they discover the constraint only when `create_media_buy` rejects (per the value_field requirement in `static/schemas/source/core/optimization-goal.json`). This lets buyers filter their event-goal shape against the capability before submission, and lets future capability-gated storyboard scenarios (e.g. performance_buy_flow_roas) discover seller support without coupling to this schema PR. Purely additive and backward-compatible: no existing field changes, no requireds, omission preserves current semantics (only target-less event goals are guaranteed; sellers MAY accept specific target kinds but buyers should not rely on it). Refs #4569, #4637. Closes #4639. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…roduct.json (#4649 review) Protocol expert review flagged that the new field name diverged from the existing product-level `metric_optimization.supported_targets` for the identical concept. Two names for the same thing is a smell; field name is public API. Rename pre-merge to the canonical name, with description noting the parallel to the product-level field. Changeset filename updated to match. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Contributor
Author
|
Renamed Why: the original name diverged from the existing product-level field What changed:
Not in this PR: docs cross-refs between the two fields are deferred to a follow-up.
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds an optional
supported_target_kindsarray to the existing seller-levelconversion_trackingcapability object onget_adcp_capabilities. Enum-constrained tocost_per | per_ad_spend | maximize_value, paralleling the product-levelmetric_optimization.supported_targets.Why
Today the spec requires sellers to reject
target.kind: per_ad_spendevent goals when noevent_sources[]entry carriesvalue_field(perstatic/schemas/source/core/optimization-goal.json), but buyers have no pre-submission signal — they discover the constraint only atcreate_media_buyrejection time. With this capability declaration:target.kindis not listed (when the property is present).performance_buy_flow_roasstoryboard scenario can gate on this without coupling to this schema PR.Out of scope
purchasebut notlead"). The existing one-dimensional capability is good enough for the buyer pre-filter; finer granularity can be a follow-up if implementer feedback demands it.performance_buy_flow_roas) — lands in a separate PR after this merges.Compatibility
Purely additive: new optional property, no existing field touched, no enum tightened, no required list changed.
additionalProperties: trueonconversion_trackingwas already the policy.Refs
media_buy_seller/performance_buy_flowscenario (CPA) that this unblocks the ROAS counterpart forTest plan
npm run build:schemassucceeds, latest bundle regeneratednpm run build:compliancesucceeds (no compliance source touched but sanity-checked)🤖 Generated with Claude Code