Skip to content

Conversation

@bTimor
Copy link

@bTimor bTimor commented Dec 21, 2025

Type of change

  • New bidder adapter

Description

This PR adds the Scalibur bidder adapter to Prebid Server.

Features:

  • Supports Banner and Video media types.
  • Implements User Sync via iframe.
  • Automated tests include standard unit tests and JSON data-driven samples.

Verification:

  • End-to-end user sync flow verified using a private Scalibur sync server.
  • Successfully verified that PBS maps the uids cookie to user.buyeruid in outgoing requests.
  • All tests in adapters/scalibur passed.
  • Root ./validate.sh passed (ignoring unrelated global config/hook test timeouts).

Checklist

  • I have performed a self-review of my code
  • My code follows the style guidelines of this project
  • I have commented my code, particularly in hard-to-understand areas
  • I have made corresponding changes to the documentation
  • My changes generate no new warnings
  • I have added tests that prove my fix is effective or that my feature works

@github-actions
Copy link

Code coverage summary

Note:

  • Prebid team doesn't anticipate tests covering code paths that might result in marshal and unmarshal errors
  • Coverage summary encompasses all commits leading up to the latest one, a87ab09

scalibur

Refer here for heat map coverage report

github.com/prebid/prebid-server/v3/adapters/scalibur/scalibur.go:23:	Builder			75.0%
github.com/prebid/prebid-server/v3/adapters/scalibur/scalibur.go:35:	MakeRequests		93.0%
github.com/prebid/prebid-server/v3/adapters/scalibur/scalibur.go:170:	MakeBids		71.1%
github.com/prebid/prebid-server/v3/adapters/scalibur/scalibur.go:257:	parseScaliburExt	77.8%
github.com/prebid/prebid-server/v3/adapters/scalibur/scalibur.go:282:	getBidMediaType		40.0%
total:									(statements)		82.7%

@github-actions
Copy link

Code coverage summary

Note:

  • Prebid team doesn't anticipate tests covering code paths that might result in marshal and unmarshal errors
  • Coverage summary encompasses all commits leading up to the latest one, c4e7220

scalibur

Refer here for heat map coverage report

github.com/prebid/prebid-server/v3/adapters/scalibur/scalibur.go:23:	Builder			75.0%
github.com/prebid/prebid-server/v3/adapters/scalibur/scalibur.go:35:	MakeRequests		86.2%
github.com/prebid/prebid-server/v3/adapters/scalibur/scalibur.go:186:	MakeBids		71.1%
github.com/prebid/prebid-server/v3/adapters/scalibur/scalibur.go:273:	parseScaliburExt	77.8%
github.com/prebid/prebid-server/v3/adapters/scalibur/scalibur.go:298:	getBidMediaType		40.0%
total:									(statements)		79.4%

@github-actions
Copy link

Code coverage summary

Note:

  • Prebid team doesn't anticipate tests covering code paths that might result in marshal and unmarshal errors
  • Coverage summary encompasses all commits leading up to the latest one, 088c807

scalibur

Refer here for heat map coverage report

github.com/prebid/prebid-server/v3/adapters/scalibur/scalibur.go:23:	Builder			75.0%
github.com/prebid/prebid-server/v3/adapters/scalibur/scalibur.go:35:	MakeRequests		86.2%
github.com/prebid/prebid-server/v3/adapters/scalibur/scalibur.go:186:	MakeBids		71.1%
github.com/prebid/prebid-server/v3/adapters/scalibur/scalibur.go:273:	parseScaliburExt	77.8%
github.com/prebid/prebid-server/v3/adapters/scalibur/scalibur.go:298:	getBidMediaType		40.0%
total:									(statements)		79.4%

@github-actions
Copy link

Code coverage summary

Note:

  • Prebid team doesn't anticipate tests covering code paths that might result in marshal and unmarshal errors
  • Coverage summary encompasses all commits leading up to the latest one, 60a0c74

scalibur

Refer here for heat map coverage report

github.com/prebid/prebid-server/v3/adapters/scalibur/scalibur.go:23:	Builder			75.0%
github.com/prebid/prebid-server/v3/adapters/scalibur/scalibur.go:35:	MakeRequests		86.2%
github.com/prebid/prebid-server/v3/adapters/scalibur/scalibur.go:186:	MakeBids		71.1%
github.com/prebid/prebid-server/v3/adapters/scalibur/scalibur.go:273:	parseScaliburExt	77.8%
github.com/prebid/prebid-server/v3/adapters/scalibur/scalibur.go:298:	getBidMediaType		37.5%
total:									(statements)		78.4%

@bTimor
Copy link
Author

bTimor commented Dec 23, 2025

I've updated the media type logic to follow the recommended pattern and resolved the bot feedback. Ready for review and workflow approval.

@@ -0,0 +1,54 @@
{
Copy link
Contributor

Choose a reason for hiding this comment

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

These test files are not actually being executed, they need to be in a exemplary directory under scaliburtest.

Docs under Adapter Code Tests

https://docs.prebid.org/prebid-server/developers/add-new-bidder-go.html

// Try to extract custom fields vastXml and vastUrl from bid response
var bidExtData map[string]interface{}
if bidBytes, err := json.Marshal(bid); err == nil {
if err := json.Unmarshal(bidBytes, &bidExtData); err == nil {
Copy link
Contributor

Choose a reason for hiding this comment

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

issue: you are looking at top level bid fields here but the default vasturl field is in ext.vasturl. This needs to be aligned and pass the bid.ext instead.

impCopy.BidFloorCur = scaliburExt.BidFloorCur
}
if impCopy.BidFloorCur == "" {
impCopy.BidFloorCur = "USD"
Copy link
Contributor

Choose a reason for hiding this comment

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

question: could there be currency conversion issues if the bid floor isn't usd but you are stamping as usd bid floor?
ExtraRequestInfo has currency converter functionality

func getBidMediaType(bid openrtb2.Bid, imp *openrtb2.Imp) (openrtb_ext.BidType, error) {
// 1 = Banner, 2 = Video, 3 = Audio, 4 = Native
switch bid.MType {
case 1:
Copy link
Contributor

Choose a reason for hiding this comment

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

avoid magic numbers and use constants from openrtb2 package

MarkupBanner MarkupType = 1
MarkupVideo  MarkupType = 2
MarkupAudio  MarkupType = 3
MarkupNative MarkupType = 4

- banner
- video

gvlVendorID: 1471
Copy link
Contributor

Choose a reason for hiding this comment

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

gvlID is registed to overwolf ltd., is that correct?
image

@@ -0,0 +1,22 @@
{
Copy link
Contributor

Choose a reason for hiding this comment

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


// Preserve GPID if present
var rawExt map[string]json.RawMessage
if err := json.Unmarshal(imp.Ext, &rawExt); err == nil {
Copy link
Contributor

Choose a reason for hiding this comment

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

utilize jsonutil unmarshal/marshal functions instead of standard lib json unmarshaler. eg. jsonutil.Unmarshal()

@bsardo bsardo added the adapter label Jan 6, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants