Skip to content

feat: extend signals protocol with transaction support#1171

Closed
bokelley wants to merge 1 commit intomainfrom
bokelley/signals-transactions
Closed

feat: extend signals protocol with transaction support#1171
bokelley wants to merge 1 commit intomainfrom
bokelley/signals-transactions

Conversation

@bokelley
Copy link
Copy Markdown
Contributor

Summary

  • New signal-pricing.json schema: discriminated union on modelcpm (fixed rate) and percent_of_media (percentage of spend, with optional max_cpm hybrid cap)
  • New signal-pricing-option.json: wraps pricing_option_id + pricing model; returned in get_signals, referenced in report_usage
  • New generic report_usage task (account/report-usage-request.json + response): cross-protocol usage reporting shared across signals, governance, and creative agents; supports batching multiple campaigns per request via per-record buyer_campaign_ref; requires operator_id to characterize billing responsibility
  • get_signals updates: accepts optional account_id and buyer_campaign_ref; response replaces single pricing field with pricing_options[]
  • activate_signal update: accepts optional account_id and buyer_campaign_ref for transaction context
  • signal-filters.json: adds max_percent filter for percent-of-media signals
  • Docs: updated signals overview, specification, get_signals task reference, and account management integration guide

Standard transaction flow

sync_accounts → get_signals(account_id, buyer_campaign_ref) → [campaign runs] → report_usage(pricing_option_id, impressions, media_spend)

activate_signal is reserved for custom signals that require explicit DSP-side activation.

Test plan

  • All 304 existing tests pass (pre-commit hook verified)
  • Schema validation passes (327 schemas, all $refs resolve)
  • Example validation passes
  • TypeScript typecheck passes
  • OpenAPI spec is current
  • Mintlify docs validation passes (362 MDX files)

🤖 Generated with Claude Code

- Add signal-pricing.json discriminated union schema (cpm | percent_of_media with optional max_cpm cap)
- Add signal-pricing-option.json combining pricing_option_id with pricing model
- Add account/report-usage-request.json and response — generic cross-protocol usage reporting
- get_signals now returns pricing_options[] per signal with pricing_option_id for settlement
- get_signals accepts optional account_id and buyer_campaign_ref for per-account rate cards
- activate_signal accepts optional account_id and buyer_campaign_ref for transaction context
- signal-filters.json adds max_percent filter for percent-of-media signals
- index.json registers new core and account schemas
- Docs updated: signals overview, specification, get_signals task, account-state integration guide

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@bokelley
Copy link
Copy Markdown
Contributor Author

Superseded by #1204, which ports the remaining schema changes (#1201 covered pricing_options on the response but missed the signal-specific pricing models, percent_of_media, and transaction context fields).

@bokelley bokelley closed this Feb 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant