You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Add the Amazon APS Prebid Adapter as first class integration #764
Investigation update: replace the legacy APS wire format with APS OpenRTB
Testing and source review confirm that this is the right replacement for the current APS provider implementation, not merely an alternative endpoint.
Evidence
The official APS Prebid.js adapter (maintained through aps-prebid@amazon.com) uses https://web.ads.aps.amazon-adsystem.com/e/pb/bid and identifies itself as APS adapter version 2.2.0: adapter constants.
It constructs standard OpenRTB, adds ext.account, ext.sdk, and USD currency: request enrichment.
It POSTs that OpenRTB request directly to the endpoint: request dispatch.
A controlled request returned a standard OpenRTB seatbid with a decoded price, impid, dimensions, crid, adomain, and APS creative metadata (ext.creativeurl and ext.tagtype).
The official bidder documentation requires an APS account ID and no per-impression bidder parameters: APS configuration.
The existing Trusted Server APS provider instead sends a hand-built legacy payload (pubId, verbose slotID/sizes, pageUrl, etc.) to /e/dtb/bid. That endpoint accepts the request but returns an empty contextual envelope, so the current implementation cannot establish that it is submitting a valid APS auction.
Proposed scope
Replace the APS request contract
Build an OpenRTB request from AuctionRequest.
Include banner impressions, floors, publisher/site data, effective tmax, device UA/IP/geo/language, consent-gated user/EID data, and regs signals.
Add APS ext.account and SDK metadata.
Preserve pub_id as a configuration compatibility alias if the canonical setting is renamed to account_id.
Change the default APS endpoint to /e/pb/bid.
Parse APS OpenRTB responses
Map impid, decoded price, currency, dimensions, crid, adomain, and bid identifiers into the unified Bid model.
Preserve ext.creativeurl and ext.tagtype for rendering.
Treat empty seatbid as no-bid and report safe aggregate diagnostics.
Implement APS creative rendering
APS does not necessarily return adm. The official adapter loads prebid-creative.js and passes the encoded full OpenRTB response plus the selected bid ID: creative construction.
Trusted Server's mandatory creative sanitizer removes <script> elements, so directly copying that markup would produce a blank creative.
Add a deliberate APS rendering path for both tagtype: iframe and tagtype: script, using a sandboxed iframe and without weakening the sanitizer for other bidders.
Handle privacy and user syncs
Forward only consent-allowed identity and privacy signals.
Do not forward precise latitude/longitude; the official adapter removes them: privacy filtering.
Decide whether and how ext.userSyncs is exposed client-side; the official adapter gates syncs on Purpose 1 consent: user sync handling.
Remove legacy mediation assumptions
OpenRTB APS bids have decoded prices, so they can participate directly in winner selection.
Remove the APS encoded-price/no-mediator warning and legacy contextual response parser once migration is complete.
Acceptance criteria
APS receives a valid OpenRTB request for each eligible Trusted Server slot.
A returned APS bid preserves its decoded price and competes with other providers without requiring a mediator.
Winning APS display creatives render for every supported tagtype without bypassing global creative sanitization.
Consent, EIDs, device information, and user syncs follow existing Trusted Server privacy gates.
Raw request/response payloads remain TRACE-only outside explicitly temporary test diagnostics.
Focused tests cover request construction, privacy filtering, response/no-bid parsing, slot mapping, winner selection without mediation, and creative rendering metadata.
Support caveat
The public bidder metadata currently says pbjs: true and pbs: false: APS bidder capabilities. The endpoint demonstrably accepts OpenRTB directly, but we should confirm with the APS account team that Fastly/edge-originated traffic is supported before treating this as a production server-to-server contract.
Activity
aram356 commentedon Jun 29, 2026
@ChristianPavilonis Enable Amazon adapter on test prebid server
ChristianPavilonis commentedon Jul 15, 2026
Investigation update: replace the legacy APS wire format with APS OpenRTB
Testing and source review confirm that this is the right replacement for the current APS provider implementation, not merely an alternative endpoint.
Evidence
aps-prebid@amazon.com) useshttps://web.ads.aps.amazon-adsystem.com/e/pb/bidand identifies itself as APS adapter version 2.2.0: adapter constants.ext.account,ext.sdk, and USD currency: request enrichment.seatbidwith a decodedprice,impid, dimensions,crid,adomain, and APS creative metadata (ext.creativeurlandext.tagtype).The existing Trusted Server APS provider instead sends a hand-built legacy payload (
pubId, verboseslotID/sizes,pageUrl, etc.) to/e/dtb/bid. That endpoint accepts the request but returns an empty contextual envelope, so the current implementation cannot establish that it is submitting a valid APS auction.Proposed scope
Replace the APS request contract
AuctionRequest.tmax, device UA/IP/geo/language, consent-gated user/EID data, andregssignals.ext.accountand SDK metadata.pub_idas a configuration compatibility alias if the canonical setting is renamed toaccount_id./e/pb/bid.Parse APS OpenRTB responses
impid, decodedprice, currency, dimensions,crid,adomain, and bid identifiers into the unifiedBidmodel.ext.creativeurlandext.tagtypefor rendering.seatbidas no-bid and report safe aggregate diagnostics.Implement APS creative rendering
adm. The official adapter loadsprebid-creative.jsand passes the encoded full OpenRTB response plus the selected bid ID: creative construction.<script>elements, so directly copying that markup would produce a blank creative.tagtype: iframeandtagtype: script, using a sandboxed iframe and without weakening the sanitizer for other bidders.Handle privacy and user syncs
ext.userSyncsis exposed client-side; the official adapter gates syncs on Purpose 1 consent: user sync handling.Remove legacy mediation assumptions
Acceptance criteria
tagtypewithout bypassing global creative sanitization.Support caveat
The public bidder metadata currently says
pbjs: trueandpbs: false: APS bidder capabilities. The endpoint demonstrably accepts OpenRTB directly, but we should confirm with the APS account team that Fastly/edge-originated traffic is supported before treating this as a production server-to-server contract.