-
Notifications
You must be signed in to change notification settings - Fork 11
Implement server-side ad slot templates with PBS and APS auction #680
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
prk-Jr
wants to merge
140
commits into
main
Choose a base branch
from
server-side-ad-templates-impl
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
Show all changes
140 commits
Select commit
Hold shift + click to select a range
2b326e7
Add server-side ad templates design spec
jevansnyc 33e07af
Merge branch 'main' into server-side-ad-templates-spec
prk-Jr 9182cef
Update server-side ad templates spec and add implementation plan
prk-Jr 46e60fe
Update server-side ad templates spec and add implementation plan
prk-Jr 5ca9db1
Merge branch 'main' into server-side-ad-templates-spec
prk-Jr 7598054
Update rust edition from 2021 to 2024
prk-Jr cf0f908
Rework spec for non-blocking page rendering with /ts-bids fetch
jevansnyc 664b20e
fmt docs and update plan as per spec
prk-Jr 87b58b2
Rework ad templates spec for body injection and add identity model
jevansnyc 0faa198
Update the server side ad template implementation plan
prk-Jr 47be0a9
Add glob workspace dependency for URL pattern matching
prk-Jr 91ab687
Add Prebid price granularity bucketing (dense default, auto = dense)
prk-Jr bf03be7
Add MediaType::banner(), Bid::ad_id, and suppress_nurl config to Preb…
prk-Jr 1be9a10
Add creative_opportunities config types, URL glob matching, APS param…
prk-Jr ba705a6
Wire CreativeOpportunitiesConfig into Settings; add creative-opportun…
prk-Jr d587576
Validate creative-opportunities.toml slot IDs at build time using inl…
prk-Jr f8aff38
Inject __ts_ad_slots at head-open and __ts_bids before </body> via sh…
prk-Jr 8b9500c
Convert handle_publisher_request to async; body-inject __ts_bids; eli…
prk-Jr 9cdbb36
Emit __tsAdInit with synchronous window.__ts_bids read; nurl+burl fro…
prk-Jr 6b624e3
Fix bid map shape and ad slots property names; resolve clippy errors
prk-Jr c212ec5
Wire slots_file and orchestrator into adapter; parse creative-opportu…
prk-Jr fb4cf0d
Add synchronous __tsAdInit (reads window.__ts_bids inline); nurl+burl…
prk-Jr ed6d0d8
Fix cmd type regression and null guard in installTsAdInit
prk-Jr 95aad76
Add end-to-end publisher helper tests for body-injection architecture
prk-Jr b047add
Enable server-side auction with APS provider and adserver_mock mediator
prk-Jr 6a5df10
Fix adserver_mock test for numeric price; fix GPT JS formatting
prk-Jr e6c18ad
Replace explicit any in GPT integration with typed interfaces
prk-Jr 74bbc25
Update creative-opportunities config to real autoblog.com GAM values
prk-Jr 51aba8f
Update auction timeout and APS slot ID bug
prk-Jr 3d51fe4
Call __tsAdInit after injecting __ts_bids into page
prk-Jr 4cf6d98
Fix format error
prk-Jr e06af4b
Add PBS inline bidder params via creative-opportunities.toml
prk-Jr 5cbf05f
Fix clippy errors
prk-Jr 60011f0
Fix test assertion
prk-Jr cf5091f
Fix double __ts_bids injection
prk-Jr eccfd45
Fix max-age cookie issue -> no-store
prk-Jr 5bb12d0
Add /__ts/page-bids endpoint for pushState/replaceState
prk-Jr 982fa3e
Fix format ts
prk-Jr 77d3c4a
__tsDivToSlotId now replaced per navigation (not merged) — stale div_…
prk-Jr 38c8bf1
Update timeout for mocktioneer
prk-Jr e32bfa5
Revert with updated tiomeout
prk-Jr b1e74c9
Wip: Align with the spec
prk-Jr a2d08e7
Fix clippy explicit-auto-deref in stream_publisher_body_async call
prk-Jr b03af6b
Fix Cache-Control headers applied only when slots matched — apply to …
prk-Jr 349dcdc
cargo fmt
prk-Jr 78885f9
Fix auction consent gate blocking non-GDPR regions — only require TCF…
prk-Jr 3783e68
Fix SSP requests using placeholder headers — pass real request to dis…
prk-Jr 0c94652
Fix async auction collect abandoning SSP bids when origin is slow
prk-Jr f172f44
Cargo fmt
prk-Jr 14cd493
Fix mediator always skipped when origin body exceeds SSP auction budget
prk-Jr 913deb4
Merge main into server-side-ad-templates-impl
prk-Jr 6210ebb
Cargo fmt
prk-Jr 3cdf995
Adding debug info for auction
prk-Jr e35c593
Fix auction bids missing on Next.js buffered HTML path
prk-Jr 3dac776
Add path label and auction time to debug HTML comment
prk-Jr 65c0ad3
Fix XSS in script injection and cap mediator at A_deadline
prk-Jr 0f67a8d
Added footer slot id
prk-Jr a7e8751
Fix page-bids auction context, protect Cache-Control from operator ov…
prk-Jr 4011363
Restore nurl/burl/ad_id through adserver_mock mediation path
prk-Jr 8516caa
Populate device.user_agent in auction request
prk-Jr 9e0ec5b
Fix __tsAdInit fallback: look up bids by slot id not div id
prk-Jr d27a329
Format lint using cargo fmt
prk-Jr 790c123
Fix clippy doc-markdown lint in adserver_mock
prk-Jr 299f6ba
Remove inline PBS bidder params from creative-opportunities.toml
prk-Jr 03d39f2
Clarify and test APS floor price enforcement in mediation path
prk-Jr f09eb34
Document and test /auction API contract for non-Prebid.js callers
prk-Jr a03c70a
Verify and document graceful degradation when no slots match URL
prk-Jr 4218333
Format publisher.rs with cargo fmt
prk-Jr 0762999
Document scroll/refresh handoff contract between TS and slim-Prebid
prk-Jr e45f458
feat: add support for reading Extended User IDs from the ts-eids cook…
prk-Jr 6c31b66
feat: forward real client IP and geo to PBS in server-side auction
prk-Jr 207795c
20260518-053619 Review fixes for #680 (#708)
aram356 6311028
Merge branch 'main' into server-side-ad-templates-impl
prk-Jr 93c1678
Address PR review findings from #680
prk-Jr 0346330
Formatting
aram356 fcb04d2
Merge branch 'main' into server-side-ad-templates-impl
prk-Jr ca98985
Address pass-4 review findings (#680)
prk-Jr 427d0c0
Consolidate slot config into trusted-server.toml and namespace window…
prk-Jr 2d10d2f
Resolve merge conflicts with main (EC identity PR)
prk-Jr b77ebc4
Wire KV-enriched EID resolution into server-side auction paths
prk-Jr 321fbaf
Remove dead build.rs from trusted-server-adapter-fastly
prk-Jr 459fe60
Fix CI failures: update integration-tests lock file and prefer-const …
prk-Jr 6614022
Update workspace Cargo.lock to resolve shared dependency version mism…
prk-Jr e6f5fc8
Update spec to reflect consolidated slot config and current global na…
prk-Jr 001b0aa
Add suppress_nurl config and populate nurl/burl in mock test bids
prk-Jr 3ea27f3
Fix cargo fmt
prk-Jr b322710
Fix server-side ad template streaming
prk-Jr fd10095
Resolve server-side ad template review findings
prk-Jr def951a
Add per-bidder Prebid nurl suppression and refresh metadata
prk-Jr 80fe392
Resolve server-side ad template review issues
prk-Jr d3d43bc
Resolve server-side ad template auction review findings
prk-Jr 0f4dd86
Resolve beacon, validation, and orchestrator review findings
prk-Jr aa43944
Default tsjs adSlots and bids so gated-off pages never see undefined
prk-Jr a3faf8b
Merge remote-tracking branch 'origin/main' into server-side-ad-templa…
prk-Jr 0456948
Resolve failing integration tests
prk-Jr ee3f2d6
Remove unused test
prk-Jr d1cd3d8
Sync trusted-server.toml with main
prk-Jr 9613aff
Harden page-bids gate and keep surrogate headers off private responses
prk-Jr 065cea6
Tighten page-bids origin gate and harden SPA bid application
prk-Jr 5b225ae
Scope ad-stack cache forcing and tighten win-beacon firing
prk-Jr c479f1f
Merge remote-tracking branch 'origin/main' into server-side-ad-templa…
prk-Jr 0283b13
Add Prebid Cache fields to make_bid test helper after main merge
prk-Jr 6a35abb
Fix server-side ad runtime review issues
prk-Jr 8fb30b3
Bind render bridge to source slot and fix refresh parity
prk-Jr ceeae6f
Address server-side ad review comments
prk-Jr 3543448
Merge origin/main (EdgeZero PR12/PR13 HTTP-type migration) into serve…
prk-Jr 911a645
Restore publisher platform-http-client test on the merged signature
prk-Jr 89281f0
Gate POST /auction behind the server-side auction consent check
prk-Jr 4d4fb1b
Validate creative-opportunity slots at build time
prk-Jr c99bac8
Restore mediated render/accounting fields on the synchronous auction …
prk-Jr b9d2d06
Display TS-defined GPT slots instead of only refreshing them
prk-Jr fa14100
Validate creative-opportunity glob patterns at build time
prk-Jr 8f13d5f
Match Cache-Control privacy directives case-insensitively
prk-Jr f997c66
Align checked-in creative auction timeout with its 500ms guidance
prk-Jr 3a5c4b4
Correct float-truncation under-bucketing in price_bucket
prk-Jr 0f241ca
Cap synchronous mediator timeout to its configured budget
prk-Jr 64ecc74
Warn when a dispatched auction is dropped on non-streaming routes
prk-Jr ac0add3
Test env-injected creative-opportunity slot-id rejection
prk-Jr c324e09
Use a valid glob as the page-pattern doc example
prk-Jr bdb00f5
Remove dead test-only parse_ts_eids_cookie helper
prk-Jr 747b98b
Merge main into server-side-ad-templates-impl
prk-Jr 83620ab
Force EC Set-Cookie responses to stay shared-uncacheable
prk-Jr 0cf84e4
Preserve server-side bidder params on Prebid refresh auctions
prk-Jr 32de4aa
Reject build-time creative-opportunity configs the runtime can't load
prk-Jr f456b50
Close EC and ad-stack gaps in page-bids and publisher flow
prk-Jr a3160d5
Close cache-privacy and refresh-recovery gaps from PR review
prk-Jr 36713dd
Merge remote-tracking branch 'origin/main' into server-side-ad-templa…
prk-Jr bf76d41
Close EID-consent and GPT initial-load gaps from PR review
prk-Jr d2f538b
Close build/runtime validation parity and observability gaps from PR …
prk-Jr 1a88e2f
Merge remote-tracking branch 'origin/main' into server-side-ad-templa…
prk-Jr 535f520
Merge branch 'main' into server-side-ad-templates-impl
aram356 45864be
Merge branch 'main' into server-side-ad-templates-impl
prk-Jr dc2b18c
Ignore leftover artifacts in pre-rename crate dirs
prk-Jr 7d34bbb
Address PR #680 review findings
prk-Jr 5a835c1
Add glob to the integration-tests lockfile
prk-Jr 975b4aa
Fix server-side ad template review blockers
prk-Jr ae17b45
Fix EdgeZero empty ad-template config gate
prk-Jr 904e676
Merge remote-tracking branch 'origin/main' into server-side-ad-templa…
prk-Jr a11f946
Address fourth-pass PR review findings
prk-Jr ae9d50a
Drop tokio from the integration-tests lockfile
prk-Jr File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
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
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
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
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
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
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
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
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
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
Oops, something went wrong.
Oops, something went wrong.
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.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Automated review: P1 — non-Fastly adapters silently ignore configured server-side slots.
Axum passes
slots: &[]intohandle_publisher_request; Cloudflare and Spin do the same. Those adapters also do not registerGET/OPTIONS /__ts/page-bids, while the shared GPT bundle can still fetch that endpoint on SPA navigation. A[[creative_opportunities.slot]]config that works on Fastly legacy therefore silently disables initial server-side templates on these adapters and sends SPA page-bids requests to the publisher origin/fallback.Please either wire these adapters to pass
state.settings.creative_opportunity_slots()and register the page-bids route with the same fail-closed OPTIONS behavior, or reject/suppress this feature on adapters where it is intentionally unsupported.