Summary
Add the ability to filter which ad slots run in an auction via an ignore list. The auction should run against all matched slots except those on a configurable ignore list.
Allocating a 1x1 pixel slot as an Interstitial is one concrete example of the kind of slot handling this enables — but the primary ask is the general ad slot ignore-list filtering capability.
Motivation
Today the auction runs against whatever slots are matched for the page, with no way to exclude specific slots. We need an ignore list so operators can drop chosen ad slots from an auction without removing them from the page/config.
Example use case (illustrative): a slot declared with a 1x1 sentinel size should be allocated/treated as an Interstitial placement (e.g. for the example publisher). This is one thing slot-level filtering makes possible; the feature is the ignore list itself.
Current behavior (context)
Proposed behavior
- Ad slot ignore list (primary) — an auction runs against all matched slots except those on a configurable ignore list; ignored slots are dropped from the
AuctionRequest.
- Interstitial allocation (example of slot handling) — as an illustrative case, a
1x1-sized slot can be allocated/classified as an Interstitial placement.
Open questions
- What is the ignore list keyed on — slot IDs, size, media type, or a mix?
- Where does the ignore list live — config (
[[creative_opportunities.slot]] / a new [creative_opportunities] key), the incoming tsjs request, or the orchestrator?
- Should the ignore list apply to both builders (
convert_tsjs_to_auction_request and build_auction_request), or just one path?
- For the interstitial example: is "Interstitial" a new
MediaType, a slot-type field, or purely a 1x1-size convention?
Acceptance criteria
Summary
Add the ability to filter which ad slots run in an auction via an ignore list. The auction should run against all matched slots except those on a configurable ignore list.
Allocating a
1x1pixel slot as an Interstitial is one concrete example of the kind of slot handling this enables — but the primary ask is the general ad slot ignore-list filtering capability.Motivation
Today the auction runs against whatever slots are matched for the page, with no way to exclude specific slots. We need an ignore list so operators can drop chosen ad slots from an auction without removing them from the page/config.
Example use case (illustrative): a slot declared with a
1x1sentinel size should be allocated/treated as an Interstitial placement (e.g. for the example publisher). This is one thing slot-level filtering makes possible; the feature is the ignore list itself.Current behavior (context)
AuctionRequest, both yielding the sameAdSlot/AdFormattypes:convert_tsjs_to_auction_request— client/Prebid.js path: crates/trusted-server-core/src/auction/formats.rs:133build_auction_request— server-side creative-opportunities path: crates/trusted-server-core/src/publisher.rs:3013AdSlotcarries onlyid,formats: Vec<AdFormat>,floor_price,targeting, and per-bidder params: crates/trusted-server-core/src/auction/types.rs:34page_patternsonly — there is no way to exclude slots that would otherwise go to auction.MediaTypeisBanner | Video | Native— no Interstitial: crates/trusted-server-core/src/auction/types.rs:63[[creative_opportunities.slot]]; the checked-in example TOML ships zero slots: trusted-server.example.toml:160Proposed behavior
AuctionRequest.1x1-sized slot can be allocated/classified as an Interstitial placement.Open questions
[[creative_opportunities.slot]]/ a new[creative_opportunities]key), the incoming tsjs request, or the orchestrator?convert_tsjs_to_auction_requestandbuild_auction_request), or just one path?MediaType, a slot-type field, or purely a1x1-size convention?Acceptance criteria
1x1slot can be allocated as an Interstitial.