-
Notifications
You must be signed in to change notification settings - Fork 51
RFC: media-buy-level total budget on UpdateMediaBuyRequest #4241
Copy link
Copy link
Open
Labels
claude-triagedIssue has been triaged by the Claude Code triage routine. Remove to re-triage.Issue has been triaged by the Claude Code triage routine. Remove to re-triage.media-buyIssue concerns the media-buy protocol domainIssue concerns the media-buy protocol domainneeds-wg-reviewBlocked on a working-group decision — surface in WG meeting agendasBlocked on a working-group decision — surface in WG meeting agendasrfcProtocol change — auto-adds to roadmap boardProtocol change — auto-adds to roadmap boardschemaJSON Schema source-of-truth: definitions, codegen artifacts, validation, hygieneJSON Schema source-of-truth: definitions, codegen artifacts, validation, hygiene
Metadata
Metadata
Assignees
Labels
claude-triagedIssue has been triaged by the Claude Code triage routine. Remove to re-triage.Issue has been triaged by the Claude Code triage routine. Remove to re-triage.media-buyIssue concerns the media-buy protocol domainIssue concerns the media-buy protocol domainneeds-wg-reviewBlocked on a working-group decision — surface in WG meeting agendasBlocked on a working-group decision — surface in WG meeting agendasrfcProtocol change — auto-adds to roadmap boardProtocol change — auto-adds to roadmap boardschemaJSON Schema source-of-truth: definitions, codegen artifacts, validation, hygieneJSON Schema source-of-truth: definitions, codegen artifacts, validation, hygiene
Type
Projects
Status
No status
Background
UpdateMediaBuyRequestcurrently exposespackages: list[PackageUpdate]andnew_packagesfor budget changes — buyers can only update budgets package-by-package. There's no aggregate "rebudget the whole buy proportionally" verb.Real-world use case
Buyers want to do "I want to extend this campaign by $5K, redistribute proportionally across active packages." Today this requires the buyer to read current package budgets via
get_media_buys, compute per-package allocations, and send an enumeratedpackages: [...]list. That's:salesagent (Prebid AdCP reference implementation) documents this scenario as
UC-003 obligation #4and currently exposes abudgetfield at the top level ofUpdateMediaBuyRequestfor it. That field is a salesagent extension and not spec-conformant.Proposed addition
```json
{
"total_budget": {
"type": "object",
"description": "New aggregate budget for the whole media buy. Server distributes proportionally across active packages.",
"properties": {
"amount": {"type": "number", "minimum": 0},
"currency": {"type": "string", "pattern": "^[A-Z]{3}$"},
"redistribution_strategy": {
"type": "string",
"enum": ["proportional", "even", "preserve_relative"],
"default": "proportional"
}
},
"required": ["amount", "currency"]
}
}
```
Open questions
total_budgetmirrorsCreateMediaBuyRequest.total_budget, butbudget_totaloraggregate_budgetcould work.packages: [...]— should sending both be a validation error, or shouldpackagesoverrides win for the named ones?preserve_relative(keep current ratios) is the expected default; happy to refine.salesagent migration path: move local
budgetfield toext.salesagent.budgetuntil this lands. Filed as part of cleanup PR bokelley/salesagent#208.