Skip to content

New Adapter: GoAdserver - #4648

Open
goadserver wants to merge 2 commits into
prebid:masterfrom
goadserver:goadserver-adapter
Open

goadserver wants to merge 2 commits into
prebid:masterfrom
goadserver:goadserver-adapter

Conversation

@goadserver

Copy link
Copy Markdown

🔧 Type of changes

  • new bid adapter

✨ What's the context?

GoAdserver is a self-hosted, multi-tenant ad server. The Prebid.js adapter (goadserver) is already in Prebid.js, with docs at https://docs.prebid.org/dev-docs/bidders/goadserver.html. This adds the Prebid Server Java adapter. The Go counterpart is prebid/prebid-server#5023.

🧠 Rationale behind the change

  • All requests go to one fixed endpoint, https://pbs.goadserver.com/openrtb2/auction. GoAdserver's gateway routes each request to the publisher's deployment by the publisher token, so the adapter never builds a hostname from request data.
  • Params: token (required), plus optional floor (USD CPM, applied when the imp has no bidfloor) and subid (string or integer, sent as imp.ext.goadserver.subid).
  • Requests: impressions are grouped by token, one request per token, with the token in site.publisher.id. Other publisher fields are kept.
  • Bid type: taken from bid.mtype, falling back to bid.ext.prebid.type, which the endpoint sets on every bid. The endpoint's Prebid.js targeting ext is dropped and bid.ext.dsa is kept for DsaEnforcer.
  • Supported traffic: site only (banner, video, native), because the endpoint needs site.page.
  • No user sync, default OpenRTB 2.5: the sync cookie belongs to each deployment's domain, so there is no single sync URL. The 2.5 downgrade matches what the endpoint reads.

🔎 New Bid Adapter Checklist

  • verify email contact works (support@goadserver.com)
  • NO fully dynamic hostnames: a single fixed endpoint, with routing done server-side by token
  • geographic host parameters are NOT required
  • direct use of HTTP is prohibited: implements Bidder<BidRequest> and uses BidderUtil.defaultRequest
  • if the ORTB is just forwarded to the endpoint, use the generic adapter: not applicable. The adapter groups imps by token, rewrites site.publisher.id and imp.ext, applies the floor param, and filters the response ext.
  • cover an adapter configuration with an integration test (GoadserverTest)

🧪 Test plan

  • GoadserverBidderTest: 18 unit tests covering site-only, grouping by token, publisher override and creation, floor precedence, subid (string and number), missing token, invalid ext, the OpenRTB version header, mtype and ext-type resolution, DSA kept and targeting stripped, unsupported types, and the default currency.
  • GoadserverTest integration test against WireMock.
  • BidderParamValidatorTest and BidderCatalogTest pass, and checkstyle reports 0 violations.
  • The gateway endpoint is live and answers with a valid certificate.

🏎 Quality check

  • Are your changes following our code style guidelines?
  • Are there any breaking changes in your code? (none)
  • Does your test coverage exceed 90%?
  • Are there any erroneous console logs, debuggers or leftover code in your changes? (none)

🤖 Generated with Claude Code

https://claude.ai/code/session_01Logb1f3FNVSzPCTMtqNc8A

Jan and others added 2 commits October 6, 2026 15:58
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Logb1f3FNVSzPCTMtqNc8A
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