Decorate auction bidstream with partner EIDs from KV identity graph#556
Draft
ChristianPavilonis wants to merge 1 commit intofeature/ec-pixel-syncfrom
Draft
Decorate auction bidstream with partner EIDs from KV identity graph#556ChristianPavilonis wants to merge 1 commit intofeature/ec-pixel-syncfrom
ChristianPavilonis wants to merge 1 commit intofeature/ec-pixel-syncfrom
Conversation
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
/auctionand attach them to outbound OpenRTB bid requests (user.ext.eids) with TCF Purpose 1+4 consent gating viagate_eids_by_consent.x-ts-ec-consent,x-ts-eids, andx-ts-eids-truncatedresponse headers on auction responses, with consent signaled independently of EID presence so clients can distinguish "consent verified, no syncs yet" from "consent denied".resolve_partner_ids,to_eids,build_eids_header,encode_eids_header) fromidentify.rsinto a newec::eidsmodule reused by both/identifyand/auction.Changes
ec/eids.rs(new) — shared EID resolution, OpenRTB conversion, and base64 header encoding with 4KB truncationauction/endpoints.rs—handle_auctionreads KV, resolves partner IDs, consent-gates EIDs; graceful degradation on KV/partner errors (empty EIDs, auction proceeds)auction/formats.rs—convert_to_openrtb_responseemitsx-ts-ec-consent: okbased on consent state,x-ts-eids+ truncation header based on EID presenceauction/types.rs—UserInfo.eids: Option<Vec<Eid>>field (#[serde(skip)])integrations/prebid.rs—user.ext.eidspopulated fromrequest.user.eids(already consent-gated)adapter main.rs— passesPartnerStoreto/auctionroute (optional, graceful if absent)openrtb.rs—Clonederive onEidandUidec/identify.rs— refactored to import fromec::eids(net -78 lines)consent/mod.rs— updatedgate_eids_by_consentdoc comment (no longer "not yet wired")Validation
cargo fmt --all -- --checkcargo clippy --workspace --all-targets --all-features -- -D warningscargo test --workspace(787 tests)cd crates/js/lib && npx vitest run(282 tests)cd crates/js/lib && npm run formatcd docs && npx prettier --check .Closes