Skip to content

New adapter: HypeLab - #4488

Open
Minebomber wants to merge 5 commits into
prebid:masterfrom
gohypelab:feat/hypelab-adapter
Open

New adapter: HypeLab#4488
Minebomber wants to merge 5 commits into
prebid:masterfrom
gohypelab:feat/hypelab-adapter

Conversation

@Minebomber

@Minebomber Minebomber commented May 6, 2026

Copy link
Copy Markdown

🔧 Type of changes

  • new bid adapter
  • bid adapter update
  • new feature
  • new analytics adapter
  • new module
  • module update
  • bugfix
  • documentation
  • configuration
  • dependency update
  • tech debt (test coverage, refactorings, etc.)

✨ What's the context?

This PR adds the HypeLab bid adapter to Prebid Server Java.

The adapter supports site banner, native, and video inventory. It accepts property_slug and placement_slug bidder params, forwards eligible OpenRTB 2.6 requests to HypeLab, adds HypeLab display manager metadata, and maps HypeLab bid responses back into Prebid bid types.

🧠 Rationale behind the change

HypeLab needs a dedicated adapter because the request is not just a raw OpenRTB pass-through. The adapter validates required bidder params, sets tagid from placement_slug, preserves the HypeLab bidder ext, adds provider metadata, and resolves response bid type from mtype, ext.hypelab.creative_type, VAST markup, or the original impression media type.

🔎 New Bid Adapter Checklist

  • verify email contact works
  • NO fully dynamic hostnames
  • geographic host parameters are NOT required
  • direct use of HTTP is prohibited - implement an existing Bidder interface that will do all the job
  • if the ORTB is just forwarded to the endpoint, use the generic adapter - define the new adapter as the alias of the generic adapter
  • cover an adapter configuration with an integration test

🧪 Test plan

How do you know the changes are safe to ship to production?

  • Added unit coverage for request creation, required param validation, mixed valid/invalid impressions, response parsing failures, empty responses, and bid type resolution.
  • Added integration coverage for the /openrtb2/auction path and HypeLab adapter configuration.
  • Ran ./mvnw -Dtest=HypeLabBidderTest test successfully.
  • Generated a local JaCoCo report for HypeLabBidder: 96% instruction coverage and 97% line coverage.

🏎 Quality check

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

Comment thread src/main/java/org/prebid/server/bidder/hypelab/HypeLabBidder.java Outdated
Comment thread src/main/java/org/prebid/server/bidder/hypelab/HypeLabBidder.java Outdated
Comment thread src/main/java/org/prebid/server/bidder/hypelab/HypeLabBidder.java Outdated
Comment thread src/main/java/org/prebid/server/bidder/hypelab/HypeLabBidder.java Outdated
Comment thread src/main/java/org/prebid/server/bidder/hypelab/HypeLabBidder.java Outdated
Comment thread src/main/java/org/prebid/server/bidder/hypelab/HypeLabBidder.java Outdated
Comment thread src/main/java/org/prebid/server/bidder/hypelab/HypeLabBidder.java Outdated
Comment thread src/main/java/org/prebid/server/bidder/hypelab/HypeLabBidder.java Outdated
Comment thread src/main/java/org/prebid/server/bidder/hypelab/HypeLabBidder.java Outdated
Comment thread src/main/resources/bidder-config/hypelab.yaml Outdated
@Minebomber

Copy link
Copy Markdown
Author

Thanks for the feedback, I made an update based off of your review @CTMBNara

Comment thread src/main/java/org/prebid/server/bidder/hypelab/HypeLabBidder.java Outdated
Comment thread src/main/java/org/prebid/server/bidder/hypelab/HypeLabBidder.java Outdated
Comment thread src/main/java/org/prebid/server/bidder/hypelab/HypeLabBidder.java Outdated
Comment thread src/main/java/org/prebid/server/bidder/hypelab/HypeLabBidder.java Outdated
Comment thread src/main/java/org/prebid/server/bidder/hypelab/HypeLabBidder.java Outdated
Comment thread src/main/java/org/prebid/server/bidder/hypelab/HypeLabBidder.java Outdated
Comment thread src/main/java/org/prebid/server/bidder/hypelab/HypeLabBidder.java Outdated
@Minebomber

Copy link
Copy Markdown
Author

Thanks for helping me work through this @CTMBNara. I pushed a patch for your requested changes.

@osulzhenko

Copy link
Copy Markdown
Collaborator

@Minebomber currently, PBS is on hold for adapter merges. The main focus is the next major update, 4.0, which should be finished by the end of Q2. Once that is done, we should be unblocked for merging other PRs. Sorry for the inconvenience.

Comment thread src/main/java/org/prebid/server/bidder/hypelab/HypeLabBidder.java Outdated
Comment thread src/test/java/org/prebid/server/bidder/hypelab/HypeLabBidderTest.java Outdated
Comment thread src/test/java/org/prebid/server/bidder/hypelab/HypeLabBidderTest.java Outdated
Comment thread src/test/java/org/prebid/server/bidder/hypelab/HypeLabBidderTest.java Outdated
Comment thread src/test/java/org/prebid/server/bidder/hypelab/HypeLabBidderTest.java Outdated
Comment thread src/test/java/org/prebid/server/bidder/hypelab/HypeLabBidderTest.java Outdated
Comment thread src/test/java/org/prebid/server/bidder/hypelab/HypeLabBidderTest.java Outdated
The HypeLab exchange sets mtype on every bid, so drop the creative_type,
VAST markup, and imp-based fallbacks and resolve the media type from
mtype alone. Document why imp.ext.bidder and ext.source /
ext.provider_version are forwarded. Add the hype alias for parity with
the Go adapter and Prebid.js.
Comment on lines +86 to +88
// The HypeLab exchange resolves the property and placement from
// imp.ext.bidder.property_slug / placement_slug, so the params must be
// forwarded in the outgoing request.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

remove comment

Comment on lines +115 to +117
// Sets ext.source and ext.provider_version, which the HypeLab exchange
// requires to identify the integration type and version of the caller
// (its bidding logic differs between prebid and SDK traffic).

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

remove comment

Comment on lines +171 to +172
// The HypeLab exchange sets mtype on every bid, so no markup or imp-based
// fallback is needed to resolve the media type.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

remove comment

cookie-family-name: hypelab
redirect:
url: https://api.hypelab.com/v1/i?redirect_url={{redirect_url}}&gdpr={{gdpr}}&gdpr_consent={{gdpr_consent}}&us_privacy={{us_privacy}}&gpp={{gpp}}&gpp_sid={{gpp_sid}}
support-cors: false

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Update with latest master and remove support-cors

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.

3 participants