diff --git a/adapters/sparteo/sparteo.go b/adapters/sparteo/sparteo.go
index 100d5acc713..1a4e3a45256 100644
--- a/adapters/sparteo/sparteo.go
+++ b/adapters/sparteo/sparteo.go
@@ -3,6 +3,8 @@ package sparteo
import (
"fmt"
"net/http"
+ "net/url"
+ "strings"
"github.com/prebid/openrtb/v20/openrtb2"
"github.com/prebid/prebid-server/v3/adapters"
@@ -13,19 +15,20 @@ import (
)
type adapter struct {
- endpoint string
- bidderName string
+ endpoint string
}
type extBidWrapper struct {
Prebid openrtb_ext.ExtBidPrebid `json:"prebid"`
}
+const unknownValue = "unknown"
+
func Builder(bidderName openrtb_ext.BidderName, cfg config.Adapter, server config.Server) (adapters.Bidder, error) {
- return &adapter{
- endpoint: cfg.Endpoint,
- bidderName: string(bidderName),
- }, nil
+ bidder := &adapter{
+ endpoint: cfg.Endpoint,
+ }
+ return bidder, nil
}
func parseExt(imp *openrtb2.Imp) (*openrtb_ext.ExtImpSparteo, error) {
@@ -47,32 +50,20 @@ func parseExt(imp *openrtb2.Imp) (*openrtb_ext.ExtImpSparteo, error) {
func (a *adapter) MakeRequests(req *openrtb2.BidRequest, reqInfo *adapters.ExtraRequestInfo) ([]*adapters.RequestData, []error) {
request := *req
+ var errs []error
request.Imp = make([]openrtb2.Imp, len(req.Imp))
copy(request.Imp, req.Imp)
- if req.Site != nil {
- siteCopy := *req.Site
- request.Site = &siteCopy
- }
-
- if req.Site != nil && req.Site.Publisher != nil {
- publisherCopy := *req.Site.Publisher
- request.Site.Publisher = &publisherCopy
- }
-
- var errs []error
- var siteNetworkId string
-
+ var networkID string
for i, imp := range request.Imp {
extImpSparteo, err := parseExt(&imp)
if err != nil {
errs = append(errs, err)
continue
}
-
- if siteNetworkId == "" && extImpSparteo.NetworkId != "" {
- siteNetworkId = extImpSparteo.NetworkId
+ if networkID == "" && extImpSparteo.NetworkId != "" {
+ networkID = extImpSparteo.NetworkId
}
var extMap map[string]interface{}
@@ -86,63 +77,102 @@ func (a *adapter) MakeRequests(req *openrtb2.BidRequest, reqInfo *adapters.Extra
sparteoMap = make(map[string]interface{})
extMap["sparteo"] = sparteoMap
}
-
paramsMap, ok := sparteoMap["params"].(map[string]interface{})
if !ok {
paramsMap = make(map[string]interface{})
sparteoMap["params"] = paramsMap
}
-
- bidderObj, ok := extMap["bidder"].(map[string]interface{})
- if ok {
+ if bidderObj, ok := extMap["bidder"].(map[string]interface{}); ok {
delete(extMap, "bidder")
-
- for key, value := range bidderObj {
- paramsMap[key] = value
+ for k, v := range bidderObj {
+ paramsMap[k] = v
}
}
-
updatedExt, err := jsonutil.Marshal(extMap)
if err != nil {
errs = append(errs, fmt.Errorf("ignoring imp id=%s, error while marshaling updated ext, err: %s", imp.ID, err))
continue
}
-
request.Imp[i].Ext = updatedExt
}
- if request.Site != nil && request.Site.Publisher != nil && siteNetworkId != "" {
- var pubExt map[string]interface{}
- if request.Site.Publisher.Ext != nil {
- if err := jsonutil.Unmarshal(request.Site.Publisher.Ext, &pubExt); err != nil {
- pubExt = make(map[string]interface{})
- }
- } else {
- pubExt = make(map[string]interface{})
+ var sb strings.Builder
+ sb.WriteString("network_id=")
+ sb.WriteString(url.QueryEscape(networkID))
+
+ var pubToUpdate *openrtb2.Publisher
+ var pubExtPath string
+
+ if req.Site != nil {
+ siteCopy := *req.Site
+ request.Site = &siteCopy
+ if req.Site.Publisher != nil {
+ pubCopy := *req.Site.Publisher
+ request.Site.Publisher = &pubCopy
}
- var paramsMap map[string]interface{}
- if raw, ok := pubExt["params"]; ok {
- if paramsMap, ok = raw.(map[string]interface{}); !ok {
- paramsMap = make(map[string]interface{})
- }
- } else {
- paramsMap = make(map[string]interface{})
+ pubToUpdate = ensurePublisher(request.Site.Publisher)
+ request.Site.Publisher = pubToUpdate
+ pubExtPath = "site.publisher.ext"
+
+ domain := resolveSiteDomain(request.Site)
+ if domain == "" {
+ domain = unknownValue
+ errs = append(errs, &errortypes.BadInput{
+ Message: "Domain not found. Missing the site.domain or the site.page field",
+ })
+ }
+ sb.WriteString("&site_domain=")
+ sb.WriteString(url.QueryEscape(domain))
+ } else if req.App != nil {
+ appCopy := *req.App
+ request.App = &appCopy
+ if req.App.Publisher != nil {
+ pubCopy := *req.App.Publisher
+ request.App.Publisher = &pubCopy
}
- paramsMap["networkId"] = siteNetworkId
- pubExt["params"] = paramsMap
+ pubToUpdate = ensurePublisher(request.App.Publisher)
+ request.App.Publisher = pubToUpdate
+ pubExtPath = "app.publisher.ext"
- updatedPubExt, err := jsonutil.Marshal(pubExt)
- if err != nil {
+ appDomain := resolveAppDomain(request.App)
+ if appDomain == "" {
+ appDomain = unknownValue
+ }
+ sb.WriteString("&app_domain=")
+ sb.WriteString(url.QueryEscape(appDomain))
+
+ bundle := resolveBundle(request.App)
+ if bundle == "" {
+ bundle = unknownValue
errs = append(errs, &errortypes.BadInput{
- Message: fmt.Sprintf("Error marshaling site.publisher.ext: %s", err),
+ Message: "Bundle not found. Missing the app.bundle field.",
})
- } else {
- request.Site.Publisher.Ext = jsonutil.RawMessage(updatedPubExt)
}
+ sb.WriteString("&bundle=")
+ sb.WriteString(url.QueryEscape(bundle))
+ } else {
+ // NO CONTEXT (Fallback)
+ request.Site = &openrtb2.Site{}
+ pubToUpdate = ensurePublisher(request.Site.Publisher)
+ request.Site.Publisher = pubToUpdate
+ pubExtPath = "site.publisher.ext"
}
+ ext, err := updatePublisherExtension(&pubToUpdate.Ext, networkID, pubExtPath)
+ if err != nil {
+ errs = append(errs, err)
+ } else {
+ pubToUpdate.Ext = ext
+ }
+
+ uri, err := url.Parse(a.endpoint)
+ if err != nil {
+ return nil, []error{fmt.Errorf("invalid endpoint URL %q: %w", a.endpoint, err)}
+ }
+ uri.RawQuery = sb.String()
+
body, err := jsonutil.Marshal(request)
if err != nil {
errs = append(errs, err)
@@ -151,7 +181,7 @@ func (a *adapter) MakeRequests(req *openrtb2.BidRequest, reqInfo *adapters.Extra
requestData := &adapters.RequestData{
Method: http.MethodPost,
- Uri: a.endpoint,
+ Uri: uri.String(),
Body: body,
ImpIDs: openrtb_ext.GetImpIDs(request.Imp),
Headers: http.Header{
@@ -162,6 +192,97 @@ func (a *adapter) MakeRequests(req *openrtb2.BidRequest, reqInfo *adapters.Extra
return []*adapters.RequestData{requestData}, errs
}
+func normalizeHostname(host string) string {
+ host = strings.TrimSpace(host)
+ if host == "" {
+ return ""
+ }
+
+ u, err := url.Parse(host)
+ if err != nil || u.Hostname() == "" {
+ if i := strings.Index(host, ":"); i >= 0 {
+ host = host[:i]
+ } else if i := strings.Index(host, "/"); i >= 0 {
+ host = host[:i]
+ }
+ } else {
+ host = u.Hostname()
+ }
+
+ host = strings.ToLower(host)
+ host = strings.TrimSuffix(host, ".")
+ host = strings.TrimPrefix(host, "www.")
+
+ if host == "null" {
+ return ""
+ }
+ return host
+}
+
+func resolveSiteDomain(site *openrtb2.Site) string {
+ if site != nil {
+ if d := normalizeHostname(site.Domain); d != "" {
+ return d
+ }
+ if fromPage := normalizeHostname(site.Page); fromPage != "" {
+ return fromPage
+ }
+ }
+ return ""
+}
+
+func resolveAppDomain(app *openrtb2.App) string {
+ if app != nil {
+ if d := normalizeHostname(app.Domain); d != "" {
+ return d
+ }
+ }
+ return ""
+}
+
+func resolveBundle(app *openrtb2.App) string {
+ if app == nil {
+ return ""
+ }
+ raw := strings.TrimSpace(app.Bundle)
+ if raw == "" || strings.EqualFold(raw, "null") {
+ return ""
+ }
+ return raw
+}
+
+func ensurePublisher(p *openrtb2.Publisher) *openrtb2.Publisher {
+ if p == nil {
+ p = &openrtb2.Publisher{}
+ }
+ if p.Ext == nil {
+ p.Ext = jsonutil.RawMessage("{}")
+ }
+ return p
+}
+
+func updatePublisherExtension(targetExt *jsonutil.RawMessage, networkID, fieldPath string) ([]byte, error) {
+ var pubExt map[string]interface{}
+ if err := jsonutil.Unmarshal(*targetExt, &pubExt); err != nil {
+ pubExt = make(map[string]interface{})
+ }
+
+ params, ok := pubExt["params"].(map[string]interface{})
+ if !ok {
+ params = make(map[string]interface{})
+ pubExt["params"] = params
+ }
+ params["networkId"] = networkID
+
+ updated, err := jsonutil.Marshal(pubExt)
+ if err != nil {
+ return nil, &errortypes.BadInput{
+ Message: fmt.Sprintf("Error marshaling %s: %s", fieldPath, err),
+ }
+ }
+ return updated, nil
+}
+
func (a *adapter) MakeBids(req *openrtb2.BidRequest, reqData *adapters.RequestData, respData *adapters.ResponseData) (*adapters.BidderResponse, []error) {
if adapters.IsResponseStatusCodeNoContent(respData) {
return nil, nil
diff --git a/adapters/sparteo/sparteo_test.go b/adapters/sparteo/sparteo_test.go
index 527f98b37ed..5b4c3c6d3ee 100644
--- a/adapters/sparteo/sparteo_test.go
+++ b/adapters/sparteo/sparteo_test.go
@@ -2,30 +2,29 @@ package sparteo
import (
"encoding/json"
+ "errors"
"testing"
"github.com/prebid/openrtb/v20/openrtb2"
+ "github.com/prebid/prebid-server/v3/adapters"
"github.com/prebid/prebid-server/v3/adapters/adapterstest"
"github.com/prebid/prebid-server/v3/config"
+ "github.com/prebid/prebid-server/v3/errortypes"
"github.com/prebid/prebid-server/v3/openrtb_ext"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
-// TestBuilder verifies that the Builder function correctly creates a bidder instance.
-// It checks for errors, ensures the returned bidder is not nil, and confirms that the endpoint
-// in the adapter is set according to the configuration.
+// TestBuilder verifies that the Builder function correctly creates a bidder instance
+// and that the endpoint template renders fields using the new macros.
func TestBuilder(t *testing.T) {
- cfg := config.Adapter{Endpoint: "https://bid-test.sparteo.com/s2s-auction"}
- bidder, err := Builder(openrtb_ext.BidderSparteo, cfg, config.Server{GvlID: 1028})
-
- require.NoError(t, err, "Builder returned an error")
- assert.NotNil(t, bidder, "Bidder is nil")
-
- sparteoAdapter, ok := bidder.(*adapter)
- require.True(t, ok, "Expected *adapter, got %T", bidder)
-
- assert.Equal(t, "https://bid-test.sparteo.com/s2s-auction", sparteoAdapter.endpoint, "Endpoint is not correctly set")
+ cfg := config.Adapter{
+ Endpoint: "https://bid-test.sparteo.com/s2s-auction",
+ }
+ bidder, err := Builder(openrtb_ext.BidderSparteo, cfg, config.Server{})
+ if assert.NoError(t, err) {
+ assert.NotNil(t, bidder)
+ }
}
// TestJsonSamples runs JSON sample tests using the shared adapterstest framework.
@@ -73,3 +72,716 @@ func TestGetMediaType_NilExt(t *testing.T) {
assert.Error(t, err, "Expected error for nil extension")
assert.Equal(t, openrtb_ext.BidType(""), result, "Expected empty result for nil extension")
}
+
+// TestMakeRequests_ResolvesQueryParams verifies that the adapter correctly resolves macros in the endpoint URL for Site traffic.
+func TestMakeRequests_ResolvesQueryParams(t *testing.T) {
+ endpoint := "https://bid-test.sparteo.com/s2s-auction"
+
+ bidder, err := Builder(openrtb_ext.BidderSparteo, config.Adapter{
+ Endpoint: endpoint,
+ }, config.Server{GvlID: 1028})
+ require.NoError(t, err, "Builder returned an error")
+
+ in := &openrtb2.BidRequest{
+ ID: "req-qp-1",
+ Site: &openrtb2.Site{
+ Domain: "dev.sparteo.com",
+ },
+ Imp: []openrtb2.Imp{
+ {
+ ID: "imp-1",
+ Ext: json.RawMessage(`{"bidder":{"networkId":"networkID"}}`),
+ },
+ },
+ }
+
+ reqs, errs := bidder.MakeRequests(in, &adapters.ExtraRequestInfo{})
+ require.Len(t, reqs, 1, "Expected exactly one outgoing request")
+ assert.Empty(t, errs, "Unexpected adapter errors")
+
+ expectedURI := "https://bid-test.sparteo.com/s2s-auction?network_id=networkID&site_domain=dev.sparteo.com"
+ assert.Equal(t, expectedURI, reqs[0].Uri)
+}
+
+// TestMakeRequests_AppBundleMacro verifies that the adapter correctly resolves app_domain and bundle for App traffic.
+func TestMakeRequests_AppBundleMacro(t *testing.T) {
+ endpoint := "https://bid-test.sparteo.com/s2s-auction"
+
+ bidder, err := Builder(openrtb_ext.BidderSparteo, config.Adapter{Endpoint: endpoint}, config.Server{GvlID: 1028})
+ require.NoError(t, err)
+
+ in := &openrtb2.BidRequest{
+ ID: "req-app-bundle-1",
+ App: &openrtb2.App{
+ Domain: "dev.sparteo.com",
+ Bundle: "com.sparteo.app",
+ Publisher: &openrtb2.Publisher{
+ ID: "sparteo",
+ },
+ },
+ Imp: []openrtb2.Imp{{
+ ID: "imp-1",
+ Ext: json.RawMessage(`{"bidder":{"networkId":"networkID"}}`),
+ }},
+ }
+
+ reqs, errs := bidder.MakeRequests(in, &adapters.ExtraRequestInfo{})
+ require.Len(t, reqs, 1)
+ assert.Empty(t, errs)
+
+ expected := "https://bid-test.sparteo.com/s2s-auction?network_id=networkID&app_domain=dev.sparteo.com&bundle=com.sparteo.app"
+ assert.Equal(t, expected, reqs[0].Uri, "endpoint should include app_domain and bundle for App traffic")
+}
+
+// TestMakeRequests_AppBundleMissing_AppendsUnknown verifies that when app.bundle is empty or missing we send bundle=unknown (and warn).
+func TestMakeRequests_AppBundleMissing_AppendsUnknown(t *testing.T) {
+ endpoint := "https://bid-test.sparteo.com/s2s-auction"
+
+ bidder, err := Builder(openrtb_ext.BidderSparteo, config.Adapter{Endpoint: endpoint}, config.Server{GvlID: 1028})
+ require.NoError(t, err)
+
+ in := &openrtb2.BidRequest{
+ ID: "req-app-nobundle-1",
+ App: &openrtb2.App{
+ Domain: "dev.sparteo.com",
+ Publisher: &openrtb2.Publisher{ID: "sparteo"},
+ },
+ Imp: []openrtb2.Imp{{
+ ID: "imp-1",
+ Ext: json.RawMessage(`{"bidder":{"networkId":"networkID"}}`),
+ }},
+ }
+
+ reqs, errs := bidder.MakeRequests(in, &adapters.ExtraRequestInfo{})
+ require.Len(t, reqs, 1)
+ require.Len(t, errs, 1)
+
+ expected := "https://bid-test.sparteo.com/s2s-auction?network_id=networkID&app_domain=dev.sparteo.com&bundle=unknown"
+ assert.Equal(t, expected, reqs[0].Uri, "endpoint should contain bundle=unknown when app.bundle is empty")
+}
+
+// TestMakeRequests_SiteDomain verifies that the adapter uses site.Domain and does not include app fields for Site traffic.
+func TestMakeRequests_SiteDomain(t *testing.T) {
+ endpoint := "https://bid-test.sparteo.com/s2s-auction"
+
+ bidder, err := Builder(openrtb_ext.BidderSparteo, config.Adapter{
+ Endpoint: endpoint,
+ }, config.Server{GvlID: 1028})
+ require.NoError(t, err, "Builder returned an error")
+
+ in := &openrtb2.BidRequest{
+ ID: "req-fallback-1",
+ Site: &openrtb2.Site{
+ Domain: "dev.sparteo.com",
+ },
+ Imp: []openrtb2.Imp{
+ {
+ ID: "imp-1",
+ Ext: json.RawMessage(`{"bidder":{"networkId":"networkID"}}`),
+ },
+ },
+ }
+
+ reqs, errs := bidder.MakeRequests(in, &adapters.ExtraRequestInfo{})
+ require.Len(t, reqs, 1, "Expected exactly one outgoing request")
+ assert.Empty(t, errs, "Unexpected adapter errors")
+
+ expectedURI := "https://bid-test.sparteo.com/s2s-auction?network_id=networkID&site_domain=dev.sparteo.com"
+ assert.Equal(t, expectedURI, reqs[0].Uri)
+}
+
+// TestMakeRequests_DomainPrecedence_SiteDomainWins verifies that Site wins over App when both exist.
+func TestMakeRequests_DomainPrecedence_SiteDomainWins(t *testing.T) {
+ endpoint := "https://bid-test.sparteo.com/s2s-auction"
+
+ bidder, err := Builder(openrtb_ext.BidderSparteo, config.Adapter{Endpoint: endpoint}, config.Server{GvlID: 1028})
+ require.NoError(t, err)
+
+ in := &openrtb2.BidRequest{
+ ID: "req-domain-1",
+ Site: &openrtb2.Site{
+ Domain: "site.sparteo.com",
+ Publisher: &openrtb2.Publisher{
+ Domain: "site-pub.sparteo.com",
+ },
+ },
+ App: &openrtb2.App{
+ Domain: "app.sparteo.com",
+ Publisher: &openrtb2.Publisher{
+ Domain: "app-pub.should-not-be-used",
+ },
+ },
+ Imp: []openrtb2.Imp{
+ {ID: "imp-1", Ext: json.RawMessage(`{"bidder":{"networkId":"networkID"}}`)},
+ },
+ }
+
+ reqs, errs := bidder.MakeRequests(in, &adapters.ExtraRequestInfo{})
+ require.Len(t, reqs, 1)
+ require.Empty(t, errs)
+
+ assert.Equal(t,
+ "https://bid-test.sparteo.com/s2s-auction?network_id=networkID&site_domain=site.sparteo.com",
+ reqs[0].Uri,
+ )
+}
+
+// TestMakeRequests_SitePresentWithEmptyDomain_UsesUnknownNotApp verifies that when Site exists but has no domain/page, we send site_domain=unknown and do NOT use App.
+func TestMakeRequests_SitePresentWithEmptyDomain_UsesUnknownNotApp(t *testing.T) {
+ endpoint := "https://bid-test.sparteo.com/s2s-auction"
+
+ bidder, err := Builder(openrtb_ext.BidderSparteo, config.Adapter{Endpoint: endpoint}, config.Server{GvlID: 1028})
+ require.NoError(t, err)
+
+ in := &openrtb2.BidRequest{
+ ID: "req-domain-2",
+ Site: &openrtb2.Site{
+ Domain: "",
+ Publisher: &openrtb2.Publisher{
+ Domain: "dev.sparteo.com",
+ },
+ },
+ App: &openrtb2.App{
+ Domain: "app.sparteo.com",
+ },
+ Imp: []openrtb2.Imp{
+ {ID: "imp-1", Ext: json.RawMessage(`{"bidder":{"networkId":"networkID"}}`)},
+ },
+ }
+
+ reqs, errs := bidder.MakeRequests(in, &adapters.ExtraRequestInfo{})
+ require.Len(t, reqs, 1)
+ require.Len(t, errs, 1)
+
+ assert.Equal(t,
+ "https://bid-test.sparteo.com/s2s-auction?network_id=networkID&site_domain=unknown",
+ reqs[0].Uri,
+ )
+}
+
+// TestMakeRequests_DomainPrecedence_AppDomainWhenNoSite verifies that if there is no Site, we use app.domain (and include bundle if present).
+func TestMakeRequests_DomainPrecedence_AppDomainWhenNoSite(t *testing.T) {
+ endpoint := "https://bid-test.sparteo.com/s2s-auction"
+
+ bidder, err := Builder(openrtb_ext.BidderSparteo, config.Adapter{Endpoint: endpoint}, config.Server{GvlID: 1028})
+ require.NoError(t, err)
+
+ in := &openrtb2.BidRequest{
+ ID: "req-domain-3",
+ Site: nil,
+ App: &openrtb2.App{
+ Domain: "app.sparteo.com",
+ Bundle: "com.sparteo.app",
+ Publisher: &openrtb2.Publisher{
+ Domain: "app-pub.should-not-be-used",
+ },
+ },
+ Imp: []openrtb2.Imp{
+ {ID: "imp-1", Ext: json.RawMessage(`{"bidder":{"networkId":"networkID"}}`)},
+ },
+ }
+
+ reqs, errs := bidder.MakeRequests(in, &adapters.ExtraRequestInfo{})
+ require.Len(t, reqs, 1)
+ require.Empty(t, errs)
+
+ assert.Equal(t,
+ "https://bid-test.sparteo.com/s2s-auction?network_id=networkID&app_domain=app.sparteo.com&bundle=com.sparteo.app",
+ reqs[0].Uri,
+ )
+}
+
+// TestMakeRequests_SitePageWhenNoSiteDomainNoApp verifies that if there is Site without domain but page is present, we use site.page.
+func TestMakeRequests_SitePageWhenNoSiteDomainNoApp(t *testing.T) {
+ endpoint := "https://bid-test.sparteo.com/s2s-auction"
+
+ bidder, err := Builder(openrtb_ext.BidderSparteo, config.Adapter{Endpoint: endpoint}, config.Server{GvlID: 1028})
+ require.NoError(t, err)
+
+ in := &openrtb2.BidRequest{
+ ID: "req-domain-page",
+ Site: &openrtb2.Site{
+ Domain: "",
+ Page: "https://www.dev.sparteo.com:3000/some/path?x=1",
+ },
+ App: nil,
+ Imp: []openrtb2.Imp{
+ {ID: "imp-1", Ext: json.RawMessage(`{"bidder":{"networkId":"networkID"}}`)},
+ },
+ }
+
+ reqs, errs := bidder.MakeRequests(in, &adapters.ExtraRequestInfo{})
+ require.Len(t, reqs, 1)
+ require.Empty(t, errs)
+
+ assert.Equal(t,
+ "https://bid-test.sparteo.com/s2s-auction?network_id=networkID&site_domain=dev.sparteo.com",
+ reqs[0].Uri,
+ )
+}
+
+// TestNormalizeHostname_PortAndPathAndURL verifies normalizeHostname behavior.
+func TestNormalizeHostname_PortAndPathAndURL(t *testing.T) {
+ base := "dev.sparteo.com"
+
+ tests := []struct {
+ name string
+ in string
+ out string
+ }{
+ // Bare host + port
+ {"host_with_port", "www." + base + ":8080", base},
+ {"host_upper_with_tls_port", "DEV.SPARTEO.COM:443", base},
+ {"host_trailing_dot_with_port", base + ".:8443", base},
+
+ // Bare host + path
+ {"host_with_path", base + "/some/path?x=1", base},
+ {"www_host_with_path", "www." + base + "/p", base},
+
+ // Bare host + port + path
+ {"host_with_port_and_path", base + ":8080/p?q=1", base},
+ {"www_host_with_port_and_path", "www." + base + ":3000/some/path", base},
+
+ // Absolute URLs
+ {"https_url", "https://www." + base + "/x", base},
+ {"http_url_with_port", "http://WWW." + base + ":8080/abc", base},
+
+ // Scheme-relative URL
+ {"scheme_relative", "//www." + base + "/x", base},
+
+ // Odd spacing around URLs/hosts
+ {"spaced_https_url", " https://www." + base + ":3000/x ", base},
+ }
+
+ for _, tc := range tests {
+ t.Run(tc.name, func(t *testing.T) {
+ got := normalizeHostname(tc.in)
+ assert.Equal(t, tc.out, got)
+ })
+ }
+}
+
+// --- Helper for reading publisher.ext.params.networkId in output JSON ---
+func readNetworkIDFromPublisherExt(t *testing.T, ext json.RawMessage) (string, bool) {
+ if len(ext) == 0 {
+ return "", false
+ }
+ var m map[string]interface{}
+ require.NoError(t, json.Unmarshal(ext, &m))
+ params, _ := m["params"].(map[string]interface{})
+ if params == nil {
+ return "", false
+ }
+ val, _ := params["networkId"].(string)
+ if val == "" {
+ return "", false
+ }
+ return val, true
+}
+
+// When site exists but site.publisher is nil, the adapter must create publisher and upsert networkId into site.publisher.ext
+func TestMakeRequests_UpdatePublisherExtension_CreatesSitePublisherIfMissing(t *testing.T) {
+ endpoint := "https://bid-test.sparteo.com/s2s-auction"
+
+ bidder, err := Builder(openrtb_ext.BidderSparteo, config.Adapter{Endpoint: endpoint}, config.Server{GvlID: 1028})
+ require.NoError(t, err)
+
+ in := &openrtb2.BidRequest{
+ ID: "req-upsert-site",
+ Site: &openrtb2.Site{
+ Domain: "site.sparteo.com",
+ Publisher: nil,
+ },
+ Imp: []openrtb2.Imp{
+ {ID: "imp-1", Ext: json.RawMessage(`{"bidder":{"networkId":"networkID"}}`)},
+ },
+ }
+
+ reqs, errs := bidder.MakeRequests(in, &adapters.ExtraRequestInfo{})
+ require.Len(t, reqs, 1)
+ require.Empty(t, errs)
+
+ var out openrtb2.BidRequest
+ require.NoError(t, json.Unmarshal(reqs[0].Body, &out))
+
+ require.NotNil(t, out.Site)
+ require.NotNil(t, out.Site.Publisher, "publisher should be created when missing")
+ val, ok := readNetworkIDFromPublisherExt(t, out.Site.Publisher.Ext)
+ require.True(t, ok, "site.publisher.ext.params.networkId should exist")
+ assert.Equal(t, "networkID", val)
+}
+
+// When no site is present, create app.publisher if missing and upsert networkId into app.publisher.ext
+func TestMakeRequests_UpdatePublisherExtension_CreatesAppPublisherIfMissingWhenNoSite(t *testing.T) {
+ endpoint := "https://bid-test.sparteo.com/s2s-auction"
+
+ bidder, err := Builder(openrtb_ext.BidderSparteo, config.Adapter{Endpoint: endpoint}, config.Server{GvlID: 1028})
+ require.NoError(t, err)
+
+ in := &openrtb2.BidRequest{
+ ID: "req-upsert-app",
+ Site: nil,
+ App: &openrtb2.App{
+ Domain: "app.sparteo.com",
+ Bundle: "com.sparteo.app",
+ Publisher: nil,
+ },
+ Imp: []openrtb2.Imp{
+ {ID: "imp-1", Ext: json.RawMessage(`{"bidder":{"networkId":"networkID"}}`)},
+ },
+ }
+
+ reqs, errs := bidder.MakeRequests(in, &adapters.ExtraRequestInfo{})
+ require.Len(t, reqs, 1)
+ require.Empty(t, errs)
+
+ var out openrtb2.BidRequest
+ require.NoError(t, json.Unmarshal(reqs[0].Body, &out))
+
+ require.Nil(t, out.Site)
+ require.NotNil(t, out.App)
+ require.NotNil(t, out.App.Publisher, "app.publisher should be created when missing")
+ val, ok := readNetworkIDFromPublisherExt(t, out.App.Publisher.Ext)
+ require.True(t, ok, "app.publisher.ext.params.networkId should exist")
+ assert.Equal(t, "networkID", val)
+}
+
+// TestMakeRequests_UpdatePublisherExtension_PrefersSiteOverApp verifies that we prefer Site when both Site and App exist; only Site should receive the networkId
+func TestMakeRequests_UpdatePublisherExtension_PrefersSiteOverApp(t *testing.T) {
+ endpoint := "https://bid-test.sparteo.com/s2s-auction"
+
+ bidder, err := Builder(openrtb_ext.BidderSparteo, config.Adapter{Endpoint: endpoint}, config.Server{GvlID: 1028})
+ require.NoError(t, err)
+
+ in := &openrtb2.BidRequest{
+ ID: "req-upsert-prefer-site",
+ Site: &openrtb2.Site{
+ Domain: "site.sparteo.com",
+ Publisher: &openrtb2.Publisher{},
+ },
+ App: &openrtb2.App{
+ Domain: "app.sparteo.com",
+ Publisher: &openrtb2.Publisher{},
+ },
+ Imp: []openrtb2.Imp{
+ {ID: "imp-1", Ext: json.RawMessage(`{"bidder":{"networkId":"networkID"}}`)},
+ },
+ }
+
+ reqs, errs := bidder.MakeRequests(in, &adapters.ExtraRequestInfo{})
+ require.Len(t, reqs, 1)
+ require.Empty(t, errs)
+
+ var out openrtb2.BidRequest
+ require.NoError(t, json.Unmarshal(reqs[0].Body, &out))
+
+ require.NotNil(t, out.Site)
+ require.NotNil(t, out.Site.Publisher)
+ siteVal, siteOk := readNetworkIDFromPublisherExt(t, out.Site.Publisher.Ext)
+ require.True(t, siteOk)
+ assert.Equal(t, "networkID", siteVal)
+
+ if out.App != nil && out.App.Publisher != nil {
+ _, appOk := readNetworkIDFromPublisherExt(t, out.App.Publisher.Ext)
+ assert.False(t, appOk, "app.publisher.ext should not contain networkId when site exists")
+ }
+}
+
+// TestMakeRequests_NoSiteNoApp_NoDomainParam_NoWarning verifies that with neither Site nor App we don't send domain params and produce no warnings.
+func TestMakeRequests_NoSiteNoApp_NoDomainParam_NoWarning(t *testing.T) {
+ endpoint := "https://bid-test.sparteo.com/s2s-auction"
+
+ bidder, err := Builder(openrtb_ext.BidderSparteo, config.Adapter{Endpoint: endpoint}, config.Server{GvlID: 1028})
+ require.NoError(t, err)
+
+ in := &openrtb2.BidRequest{
+ ID: "req-domain-missing",
+ Imp: []openrtb2.Imp{
+ {ID: "imp-1", Ext: json.RawMessage(`{"bidder":{"networkId":"networkID"}}`)},
+ },
+ }
+
+ reqs, errs := bidder.MakeRequests(in, &adapters.ExtraRequestInfo{})
+
+ require.Len(t, reqs, 1)
+ require.Len(t, errs, 0)
+
+ assert.Equal(t,
+ "https://bid-test.sparteo.com/s2s-auction?network_id=networkID",
+ reqs[0].Uri,
+ )
+}
+
+// TestMakeRequests_SitePageLiteralNull_TreatedAsMissingDomain verifies that a literal "null" in site.page is treated as an unknown site domain.
+func TestMakeRequests_SitePageLiteralNull_TreatedAsMissingDomain(t *testing.T) {
+ endpoint := "https://bid-test.sparteo.com/s2s-auction"
+
+ bidder, err := Builder(openrtb_ext.BidderSparteo, config.Adapter{Endpoint: endpoint}, config.Server{GvlID: 1028})
+ require.NoError(t, err)
+
+ in := &openrtb2.BidRequest{
+ ID: "req-page-null",
+ Site: &openrtb2.Site{
+ Domain: "",
+ Page: "null",
+ },
+ Imp: []openrtb2.Imp{
+ {ID: "imp-1", Ext: json.RawMessage(`{"bidder":{"networkId":"networkID"}}`)},
+ },
+ }
+
+ reqs, errs := bidder.MakeRequests(in, &adapters.ExtraRequestInfo{})
+
+ require.Len(t, reqs, 1)
+ require.Len(t, errs, 1)
+ assert.Equal(t,
+ "https://bid-test.sparteo.com/s2s-auction?network_id=networkID&site_domain=unknown",
+ reqs[0].Uri,
+ )
+
+ var badInput *errortypes.BadInput
+ require.True(t, errors.As(errs[0], &badInput))
+ assert.Contains(t, badInput.Error(), "Domain not found")
+}
+
+// TestMakeRequests_AppBundle_NormalizationVariants ensures blank/whitespace/"null" bundles normalize to "unknown" with a single warning.
+func TestMakeRequests_AppBundle_NormalizationVariants(t *testing.T) {
+ endpoint := "https://bid-test.sparteo.com/s2s"
+ bidder, err := Builder(openrtb_ext.BidderSparteo, config.Adapter{Endpoint: endpoint}, config.Server{GvlID: 1028})
+ require.NoError(t, err)
+
+ cases := []struct {
+ name string
+ bundle string
+ }{
+ {"empty", ""},
+ {"spaces", " "},
+ {"lower_null", "null"},
+ {"weird_case", "NuLl"},
+ }
+ for _, tc := range cases {
+ t.Run(tc.name, func(t *testing.T) {
+ in := &openrtb2.BidRequest{
+ App: &openrtb2.App{Domain: "dev.sparteo.com", Bundle: tc.bundle, Publisher: &openrtb2.Publisher{}},
+ Imp: []openrtb2.Imp{{ID: "i1", Ext: json.RawMessage(`{"bidder":{"networkId":"n"}}`)}},
+ }
+ reqs, errs := bidder.MakeRequests(in, &adapters.ExtraRequestInfo{})
+ require.Len(t, reqs, 1)
+ require.Len(t, errs, 1)
+ assert.Contains(t, reqs[0].Uri, "app_domain=dev.sparteo.com")
+ assert.Contains(t, reqs[0].Uri, "bundle=unknown")
+ var badInput *errortypes.BadInput
+ require.True(t, errors.As(errs[0], &badInput))
+ assert.Contains(t, badInput.Error(), "Bundle not found")
+ })
+ }
+}
+
+// TestMakeRequests_SitePresent_IgnoresAppFields ensures when Site is present, only site_domain is sent and app fields are ignored.
+func TestMakeRequests_SitePresent_IgnoresAppFields(t *testing.T) {
+ endpoint := "https://bid-test.sparteo.com/s2s"
+ bidder, err := Builder(openrtb_ext.BidderSparteo, config.Adapter{Endpoint: endpoint}, config.Server{GvlID: 1028})
+ require.NoError(t, err)
+
+ in := &openrtb2.BidRequest{
+ Site: &openrtb2.Site{Domain: "site.sparteo.com"},
+ App: &openrtb2.App{Domain: "app.sparteo.com", Bundle: "com.app"},
+ Imp: []openrtb2.Imp{{ID: "i1", Ext: json.RawMessage(`{"bidder":{"networkId":"N"}}`)}},
+ }
+ reqs, errs := bidder.MakeRequests(in, &adapters.ExtraRequestInfo{})
+ require.Len(t, reqs, 1)
+ require.Empty(t, errs)
+ assert.Equal(t, "https://bid-test.sparteo.com/s2s?network_id=N&site_domain=site.sparteo.com", reqs[0].Uri)
+}
+
+// TestMakeRequests_SiteWithPageFallback_IgnoresApp ensures Site.Page is used when Site.Domain is empty and App is ignored when Site exists.
+func TestMakeRequests_SiteWithPageFallback_IgnoresApp(t *testing.T) {
+ endpoint := "https://bid-test.sparteo.com/s2s"
+ bidder, err := Builder(openrtb_ext.BidderSparteo, config.Adapter{Endpoint: endpoint}, config.Server{GvlID: 1028})
+ require.NoError(t, err)
+
+ in := &openrtb2.BidRequest{
+ Site: &openrtb2.Site{Domain: "", Page: "https://www.example.com:8080/p"},
+ App: &openrtb2.App{Domain: "app.sparteo.com", Bundle: "com.app"},
+ Imp: []openrtb2.Imp{{ID: "i1", Ext: json.RawMessage(`{"bidder":{"networkId":"networkID"}}`)}},
+ }
+ reqs, errs := bidder.MakeRequests(in, &adapters.ExtraRequestInfo{})
+ require.Len(t, reqs, 1)
+ require.Empty(t, errs)
+ assert.Equal(t, "https://bid-test.sparteo.com/s2s?network_id=networkID&site_domain=example.com", reqs[0].Uri)
+}
+
+// TestMakeRequests_AppMissingBundle_WarnsAndUnknown ensures App with missing bundle yields bundle=unknown and one bundle warning.
+func TestMakeRequests_AppMissingBundle_WarnsAndUnknown(t *testing.T) {
+ endpoint := "https://bid-test.sparteo.com/s2s"
+ bidder, err := Builder(openrtb_ext.BidderSparteo, config.Adapter{Endpoint: endpoint}, config.Server{GvlID: 1028})
+ require.NoError(t, err)
+
+ in := &openrtb2.BidRequest{
+ App: &openrtb2.App{Domain: "dev.sparteo.com", Bundle: "", Publisher: &openrtb2.Publisher{}},
+ Imp: []openrtb2.Imp{{ID: "i1", Ext: json.RawMessage(`{"bidder":{"networkId":"networkID"}}`)}},
+ }
+ reqs, errs := bidder.MakeRequests(in, &adapters.ExtraRequestInfo{})
+ require.Len(t, reqs, 1)
+ require.Len(t, errs, 1)
+ assert.Equal(t, "https://bid-test.sparteo.com/s2s?network_id=networkID&app_domain=dev.sparteo.com&bundle=unknown", reqs[0].Uri)
+ var badInput *errortypes.BadInput
+ require.True(t, errors.As(errs[0], &badInput))
+ assert.Contains(t, badInput.Error(), "Bundle not found")
+}
+
+// TestMakeRequests_ExtRewrite_MovesBidderIntoSparteoParams verifies bidder object is moved under sparteo.params and bidder is removed.
+func TestMakeRequests_ExtRewrite_MovesBidderIntoSparteoParams(t *testing.T) {
+ endpoint := "https://bid-test.sparteo.com/s2s"
+ bidder, err := Builder(openrtb_ext.BidderSparteo, config.Adapter{Endpoint: endpoint}, config.Server{GvlID: 1028})
+ require.NoError(t, err)
+
+ in := &openrtb2.BidRequest{
+ Site: &openrtb2.Site{Domain: "dev.sparteo.com"},
+ Imp: []openrtb2.Imp{{ID: "i1", Ext: json.RawMessage(`{"bidder":{"a":1}}`)}},
+ }
+ reqs, errs := bidder.MakeRequests(in, &adapters.ExtraRequestInfo{})
+ require.Len(t, reqs, 1)
+ require.Empty(t, errs)
+
+ var out openrtb2.BidRequest
+ require.NoError(t, json.Unmarshal(reqs[0].Body, &out))
+ var ext map[string]any
+ require.NoError(t, json.Unmarshal(out.Imp[0].Ext, &ext))
+ _, hasBidder := ext["bidder"]
+ assert.False(t, hasBidder)
+ sparteoNode, ok := ext["sparteo"].(map[string]any)
+ require.True(t, ok)
+ params, ok := sparteoNode["params"].(map[string]any)
+ require.True(t, ok)
+ assert.Equal(t, float64(1), params["a"])
+}
+
+// TestMakeRequests_ExtRewrite_PreservesExistingSparteoParams verifies existing sparteo.params keys are preserved when merging bidder fields.
+func TestMakeRequests_ExtRewrite_PreservesExistingSparteoParams(t *testing.T) {
+ endpoint := "https://bid-test.sparteo.com/s2s"
+ bidder, err := Builder(openrtb_ext.BidderSparteo, config.Adapter{Endpoint: endpoint}, config.Server{GvlID: 1028})
+ require.NoError(t, err)
+
+ in := &openrtb2.BidRequest{
+ Site: &openrtb2.Site{Domain: "dev.sparteo.com"},
+ Imp: []openrtb2.Imp{{
+ ID: "i1",
+ Ext: json.RawMessage(`{"sparteo":{"params":{"keep":true}},"bidder":{"add":42}}`),
+ }},
+ }
+ reqs, errs := bidder.MakeRequests(in, &adapters.ExtraRequestInfo{})
+ require.Len(t, reqs, 1)
+ require.Empty(t, errs)
+
+ var out openrtb2.BidRequest
+ require.NoError(t, json.Unmarshal(reqs[0].Body, &out))
+ var ext map[string]any
+ require.NoError(t, json.Unmarshal(out.Imp[0].Ext, &ext))
+ sparteoNode, ok := ext["sparteo"].(map[string]any)
+ require.True(t, ok)
+ params, ok := sparteoNode["params"].(map[string]any)
+ require.True(t, ok)
+ assert.Equal(t, true, params["keep"])
+ assert.Equal(t, float64(42), params["add"])
+}
+
+// TestMakeRequests_NetworkId_FirstNonEmptyWins verifies the first non-empty networkId across imps is used.
+func TestMakeRequests_NetworkId_FirstNonEmptyWins(t *testing.T) {
+ endpoint := "https://bid-test.sparteo.com/s2s"
+ bidder, err := Builder(openrtb_ext.BidderSparteo, config.Adapter{Endpoint: endpoint}, config.Server{GvlID: 1028})
+ require.NoError(t, err)
+
+ in := &openrtb2.BidRequest{
+ Site: &openrtb2.Site{Domain: "dev.sparteo.com"},
+ Imp: []openrtb2.Imp{
+ {ID: "i1", Ext: json.RawMessage(`{"bidder":{"networkId":""}}`)},
+ {ID: "i2", Ext: json.RawMessage(`{"bidder":{"networkId":"N2"}}`)},
+ {ID: "i3", Ext: json.RawMessage(`{"bidder":{"networkId":"N3"}}`)},
+ },
+ }
+ reqs, errs := bidder.MakeRequests(in, &adapters.ExtraRequestInfo{})
+ require.Len(t, reqs, 1)
+ require.Empty(t, errs)
+ assert.Equal(t, "https://bid-test.sparteo.com/s2s?network_id=N2&site_domain=dev.sparteo.com", reqs[0].Uri)
+}
+
+// TestMakeRequests_AllImpsBadExt_AggregatesErrors verifies a request is still built when all imps have bad ext and errors are aggregated.
+func TestMakeRequests_AllImpsBadExt_AggregatesErrors(t *testing.T) {
+ endpoint := "https://bid-test.sparteo.com/s2s"
+ bidder, err := Builder(openrtb_ext.BidderSparteo, config.Adapter{Endpoint: endpoint}, config.Server{GvlID: 1028})
+ require.NoError(t, err)
+
+ in := &openrtb2.BidRequest{
+ Site: &openrtb2.Site{Domain: "dev.sparteo.com"},
+ Imp: []openrtb2.Imp{
+ {ID: "i1", Ext: json.RawMessage(`not-json`)},
+ {ID: "i2", Ext: json.RawMessage(`{"bidder":}`)},
+ },
+ }
+ reqs, errs := bidder.MakeRequests(in, &adapters.ExtraRequestInfo{})
+ require.Len(t, reqs, 1)
+ require.Len(t, errs, 2)
+ assert.Equal(t, "https://bid-test.sparteo.com/s2s?network_id=&site_domain=dev.sparteo.com", reqs[0].Uri)
+}
+
+// TestMakeRequests_UpdatePublisherExtension_PreservesOtherKeys verifies publisher.ext keeps existing keys while adding params.networkId.
+func TestMakeRequests_UpdatePublisherExtension_PreservesOtherKeys(t *testing.T) {
+ endpoint := "https://bid-test.sparteo.com/s2s"
+ bidder, err := Builder(openrtb_ext.BidderSparteo, config.Adapter{Endpoint: endpoint}, config.Server{GvlID: 1028})
+ require.NoError(t, err)
+
+ startExt := json.RawMessage(`{"params":{"foo":"bar"},"other":123}`)
+ in := &openrtb2.BidRequest{
+ Site: &openrtb2.Site{
+ Domain: "dev.sparteo.com",
+ Publisher: &openrtb2.Publisher{Ext: startExt},
+ },
+ Imp: []openrtb2.Imp{{ID: "i1", Ext: json.RawMessage(`{"bidder":{"networkId":"N"}}`)}},
+ }
+ reqs, errs := bidder.MakeRequests(in, &adapters.ExtraRequestInfo{})
+ require.Len(t, reqs, 1)
+ require.Empty(t, errs)
+
+ var out openrtb2.BidRequest
+ require.NoError(t, json.Unmarshal(reqs[0].Body, &out))
+ var m map[string]any
+ require.NoError(t, json.Unmarshal(out.Site.Publisher.Ext, &m))
+ params, _ := m["params"].(map[string]any)
+ require.NotNil(t, params)
+ assert.Equal(t, "bar", params["foo"])
+ assert.Equal(t, float64(123), m["other"])
+ assert.Equal(t, "N", params["networkId"])
+}
+
+// TestMakeBids_SkipsAudioBids verifies bids with prebid.type=audio are skipped with no returned errors.
+func TestMakeBids_SkipsAudioBids(t *testing.T) {
+ a := &adapter{}
+ body := []byte(`{"cur":"USD","seatbid":[{"bid":[{"impid":"1","price":1,"crid":"c","ext":{"prebid":{"type":"audio"}}}]}]}`)
+ br, errs := a.MakeBids(&openrtb2.BidRequest{}, &adapters.RequestData{}, &adapters.ResponseData{StatusCode: 200, Body: body})
+ require.NoError(t, nil)
+ require.Nil(t, errs)
+ require.NotNil(t, br)
+ assert.Equal(t, 0, len(br.Bids))
+}
+
+// TestMakeBids_SetsMTypeAndCurrency verifies mtype is set correctly for banner/video/native and currency is propagated.
+func TestMakeBids_SetsMTypeAndCurrency(t *testing.T) {
+ a := &adapter{}
+ body := []byte(`{
+ "cur":"EUR",
+ "seatbid":[{"bid":[
+ {"impid":"b1","price":1,"crid":"c1","ext":{"prebid":{"type":"banner"}}},
+ {"impid":"v1","price":2,"crid":"c2","ext":{"prebid":{"type":"video"}}},
+ {"impid":"n1","price":3,"crid":"c3","ext":{"prebid":{"type":"native"}}}
+ ]}]
+ }`)
+ br, errs := a.MakeBids(&openrtb2.BidRequest{}, &adapters.RequestData{}, &adapters.ResponseData{StatusCode: 200, Body: body})
+ require.Nil(t, errs)
+ require.NotNil(t, br)
+ require.Equal(t, "EUR", br.Currency)
+ require.Equal(t, 3, len(br.Bids))
+ assert.Equal(t, openrtb2.MarkupBanner, br.Bids[0].Bid.MType)
+ assert.Equal(t, openrtb2.MarkupVideo, br.Bids[1].Bid.MType)
+ assert.Equal(t, openrtb2.MarkupNative, br.Bids[2].Bid.MType)
+}
diff --git a/adapters/sparteo/sparteotest/exemplary/banner-app.json b/adapters/sparteo/sparteotest/exemplary/banner-app.json
new file mode 100644
index 00000000000..1e88391f3e1
--- /dev/null
+++ b/adapters/sparteo/sparteotest/exemplary/banner-app.json
@@ -0,0 +1,242 @@
+{
+ "mockBidRequest": {
+ "id": "request-id",
+ "imp": [
+ {
+ "id": "div-banner-id",
+ "banner": {
+ "topframe": 1,
+ "format": [
+ {
+ "w": 300,
+ "h": 250
+ }
+ ]
+ },
+ "ext": {
+ "bidder": {
+ "networkId": "networkId"
+ }
+ }
+ }
+ ],
+ "app": {
+ "domain": "dev.sparteo.com",
+ "bundle": "com.sparteo.app",
+ "publisher": {
+ "domain": "dev.sparteo.com",
+ "id": "sparteo"
+ }
+ },
+ "device": {
+ "w": 1920,
+ "h": 1080,
+ "dnt": 0,
+ "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36",
+ "language": "fr",
+ "ext": {
+ "vpw": 1056,
+ "vph": 934
+ },
+ "sua": {
+ "source": 1,
+ "platform": {
+ "brand": "macOS"
+ },
+ "browsers": [
+ {
+ "brand": "Chromium",
+ "version": [
+ "134"
+ ]
+ },
+ {
+ "brand": "Not:A-Brand",
+ "version": [
+ "24"
+ ]
+ },
+ {
+ "brand": "Google Chrome",
+ "version": [
+ "134"
+ ]
+ }
+ ],
+ "mobile": 0
+ }
+ },
+ "ext": {
+ "prebid": {
+ "server": {
+ "datacenter": "",
+ "externalurl": "",
+ "gvlid": 1028
+ }
+ },
+ "tmaxmax": 5000
+ },
+ "tmax": 5000
+ },
+ "httpCalls": [
+ {
+ "expectedRequest": {
+ "uri": "https://bid-test.sparteo.com/s2s-auction?network_id=networkId&app_domain=dev.sparteo.com&bundle=com.sparteo.app",
+ "body": {
+ "id": "request-id",
+ "imp": [
+ {
+ "id": "div-banner-id",
+ "banner": {
+ "format": [
+ {
+ "w": 300,
+ "h": 250
+ }
+ ],
+ "topframe": 1
+ },
+ "ext": {
+ "sparteo": {
+ "params": {
+ "networkId": "networkId"
+ }
+ }
+ }
+ }
+ ],
+ "app": {
+ "domain": "dev.sparteo.com",
+ "bundle": "com.sparteo.app",
+ "publisher": {
+ "domain": "dev.sparteo.com",
+ "id": "sparteo",
+ "ext": {
+ "params": {
+ "networkId": "networkId"
+ }
+ }
+ }
+ },
+ "device": {
+ "dnt": 0,
+ "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36",
+ "sua": {
+ "browsers": [
+ {
+ "brand": "Chromium",
+ "version": [
+ "134"
+ ]
+ },
+ {
+ "brand": "Not:A-Brand",
+ "version": [
+ "24"
+ ]
+ },
+ {
+ "brand": "Google Chrome",
+ "version": [
+ "134"
+ ]
+ }
+ ],
+ "platform": {
+ "brand": "macOS"
+ },
+ "mobile": 0,
+ "source": 1
+ },
+ "h": 1080,
+ "w": 1920,
+ "language": "fr",
+ "ext": {
+ "vpw": 1056,
+ "vph": 934
+ }
+ },
+ "tmax": 5000,
+ "ext": {
+ "prebid": {
+ "server": {
+ "externalurl": "",
+ "gvlid": 1028,
+ "datacenter": ""
+ }
+ },
+ "tmaxmax": 5000
+ }
+ },
+ "impIDs": [
+ "div-banner-id"
+ ]
+ },
+ "mockResponse": {
+ "status": 200,
+ "body": {
+ "id": "request-id",
+ "seatbid": [
+ {
+ "seat": "sparteo",
+ "bid": [
+ {
+ "id": "137dd2bd-3015-407a-ab50-384aa2c706d7",
+ "impid": "div-banner-id",
+ "price": 0.10797,
+ "nurl": "https://dev.sparteo.com/event/sparteo/0a98964d-1cf9-4802-93e9-c59c18f497fa?d=kyGjrlVurDF3FlG8d7juZXMzNlGoZA06b75fJDG9dyF3LTd9LzPxLRHzMzFzMfwfdlifNfF9L7AlLzreYS96MTH9JTP7NRdtNRU4LS8lYTPwZTMlLRPyYTUfJDGjdEPfNfFvdzGzJWA8Y6Qob75fJDG8YSF3FirvJWe9rEHtY7xoZW49JzKuLSFsFmBiFgnfZCV7JmMwYXG9ZW1uY70tNgP9MRPfJDGwrSF3Fle9rEBzGTMBGTGCGTGCZCV7JmMwYXG9ZW1uY70tGTMBMRP9MDUyQmBeZ7UjLiZzZXG7ZXFtrC1td7VyrlVyJWGoZCQobldjLiZzZXG7ZXGUb8MjdmZjdiGoZCQoblrDYW4uZXFfJDGfdmFfNfFfJDGuhWPfNfGjYlY4ZTi6ZD8iMCMeJTQeLRKtNWL9YS8iLzK8LTPwMzL7ZRYfJDGwhWPfNfGjYlY4ZTi6ZD8iMCMeJTQeLRKtNWL9YS8iLzK8LTPwMzL7ZRYfJDGib6LfNfGtYWMOUyFsFlQfFgnfrW4qbl06bfFsFmVib75fNfG8bltub6ruFfwfrWQ9FgnfZCVzh6QvdDFsFlAfrDF3WyGzd6HtY70tYl1tbW0uZXj9hXojdj0eXzUwFfwfd6MwJWMvbWGvJXB8YlZ8rEVyZV0jbXB9kV18LDFsFlrsb7GebDFsFmBfdy8fhWPtdlA9ZV0OPV1xLRHwFfwfdlV7ZW48ZV0BXzKwLDFsFlGoZD8vdEQaT6B9hW8KXzP8Fj9sFmByZWQzFgo2Flrsb7GebKxjrlVPdlVPdlViFgnxJDGobXBLZXZjbAByZVByZWPfNgKsFlMyZWAadCVyX7jtdDF3LS58MzYsFlGobCxeYlxjX6Bjdj0obXHfNgKsFlVzrCjtYXQjZA0yZXZjbmVjFgnwJgF5NSwfrljvrXMskV0yZXZjbmVadlA9hW1fNgKsFmrobj0yYXQjFgnwJgHyMSwfbWAyZ7juX6ByZWPfNgHuLRH8JDGfhWQadEGoY7UfNgHuLX9sFlGohSF3FlQorf8fYW4uZXFfJDGwbELfNjsfLzHwkRF8LDGrJDGwbXPfNjsfYlAublVyFj9sFlVsdyF3WyFzLRB5LgUwFfwfLzHwkRKwLDFsFgLwLEcxLgUfJDFzLRB5LTUwFj9sFlVtrDF3WyGfYW4uZXFfXSwfYlQzFgobFlAikW08bCjqZSFsFlAwdC4jkEVzFfwfZ6GoZDFsFl0lrC8jZCjeFfwfb74jrCAmFfwfb6BjbmcfJDGyhXMjFfwfdmVfhWMvbfFsFmMtYXG9YWQzZXG7ZXFfJDGzbWjsZXrebmQjZDFsFmVudmVskSGrJDGtYfF3ZlAsd7UsFlZ9dyF3WyGPYXMzVCeyb6VmhKZvdl8erDGrJDGydyF3LD55MSwfYlifNfFxLzriZRGfZD9zLRK8JTPwM7KtYWF8LD9zNRQeYTGgMzH7ZRdfJDGfdDF3LD5xJDGlrDF3FjBed6MUhEGvrWrnQl0ybWA9Fm9=",
+ "adm": "",
+ "adomain": [
+ "testpage-ad"
+ ],
+ "crid": "banner_creative_test",
+ "w": 300,
+ "h": 250,
+ "ext": {
+ "ft": "passthrough",
+ "prebid": {
+ "type": "banner"
+ }
+ }
+ }
+ ]
+
+ }
+ ],
+ "cur": "EUR"
+ }
+ }
+ }
+ ],
+ "expectedBidResponses": [
+ {
+ "id": "request-id",
+ "bids": [
+ {
+ "bid": {
+ "id": "137dd2bd-3015-407a-ab50-384aa2c706d7",
+ "impid": "div-banner-id",
+ "mtype": 1,
+ "price": 0.10797,
+ "nurl": "https://dev.sparteo.com/event/sparteo/0a98964d-1cf9-4802-93e9-c59c18f497fa?d=kyGjrlVurDF3FlG8d7juZXMzNlGoZA06b75fJDG9dyF3LTd9LzPxLRHzMzFzMfwfdlifNfF9L7AlLzreYS96MTH9JTP7NRdtNRU4LS8lYTPwZTMlLRPyYTUfJDGjdEPfNfFvdzGzJWA8Y6Qob75fJDG8YSF3FirvJWe9rEHtY7xoZW49JzKuLSFsFmBiFgnfZCV7JmMwYXG9ZW1uY70tNgP9MRPfJDGwrSF3Fle9rEBzGTMBGTGCGTGCZCV7JmMwYXG9ZW1uY70tGTMBMRP9MDUyQmBeZ7UjLiZzZXG7ZXFtrC1td7VyrlVyJWGoZCQobldjLiZzZXG7ZXGUb8MjdmZjdiGoZCQoblrDYW4uZXFfJDGfdmFfNfFfJDGuhWPfNfGjYlY4ZTi6ZD8iMCMeJTQeLRKtNWL9YS8iLzK8LTPwMzL7ZRYfJDGwhWPfNfGjYlY4ZTi6ZD8iMCMeJTQeLRKtNWL9YS8iLzK8LTPwMzL7ZRYfJDGib6LfNfGtYWMOUyFsFlQfFgnfrW4qbl06bfFsFmVib75fNfG8bltub6ruFfwfrWQ9FgnfZCVzh6QvdDFsFlAfrDF3WyGzd6HtY70tYl1tbW0uZXj9hXojdj0eXzUwFfwfd6MwJWMvbWGvJXB8YlZ8rEVyZV0jbXB9kV18LDFsFlrsb7GebDFsFmBfdy8fhWPtdlA9ZV0OPV1xLRHwFfwfdlV7ZW48ZV0BXzKwLDFsFlGoZD8vdEQaT6B9hW8KXzP8Fj9sFmByZWQzFgo2Flrsb7GebKxjrlVPdlVPdlViFgnxJDGobXBLZXZjbAByZVByZWPfNgKsFlMyZWAadCVyX7jtdDF3LS58MzYsFlGobCxeYlxjX6Bjdj0obXHfNgKsFlVzrCjtYXQjZA0yZXZjbmVjFgnwJgF5NSwfrljvrXMskV0yZXZjbmVadlA9hW1fNgKsFmrobj0yYXQjFgnwJgHyMSwfbWAyZ7juX6ByZWPfNgHuLRH8JDGfhWQadEGoY7UfNgHuLX9sFlGohSF3FlQorf8fYW4uZXFfJDGwbELfNjsfLzHwkRF8LDGrJDGwbXPfNjsfYlAublVyFj9sFlVsdyF3WyFzLRB5LgUwFfwfLzHwkRKwLDFsFgLwLEcxLgUfJDFzLRB5LTUwFj9sFlVtrDF3WyGfYW4uZXFfXSwfYlQzFgobFlAikW08bCjqZSFsFlAwdC4jkEVzFfwfZ6GoZDFsFl0lrC8jZCjeFfwfb74jrCAmFfwfb6BjbmcfJDGyhXMjFfwfdmVfhWMvbfFsFmMtYXG9YWQzZXG7ZXFfJDGzbWjsZXrebmQjZDFsFmVudmVskSGrJDGtYfF3ZlAsd7UsFlZ9dyF3WyGPYXMzVCeyb6VmhKZvdl8erDGrJDGydyF3LD55MSwfYlifNfFxLzriZRGfZD9zLRK8JTPwM7KtYWF8LD9zNRQeYTGgMzH7ZRdfJDGfdDF3LD5xJDGlrDF3FjBed6MUhEGvrWrnQl0ybWA9Fm9=",
+ "adm": "",
+ "adomain": [
+ "testpage-ad"
+ ],
+ "crid": "banner_creative_test",
+ "w": 300,
+ "h": 250,
+ "ext": {
+ "ft": "passthrough",
+ "prebid": {
+ "type": "banner"
+ }
+ }
+ },
+ "type": "banner"
+ }
+ ],
+ "cur": "EUR"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/adapters/sparteo/sparteotest/exemplary/banner.json b/adapters/sparteo/sparteotest/exemplary/banner.json
index 78fa09afc76..f68f57b6339 100644
--- a/adapters/sparteo/sparteotest/exemplary/banner.json
+++ b/adapters/sparteo/sparteotest/exemplary/banner.json
@@ -21,13 +21,13 @@
}
],
"site": {
- "domain": "dev.sparteo.com:4444",
+ "domain": "dev.sparteo.com",
"publisher": {
- "domain": "dev.sparteo.com:4444",
+ "domain": "dev.sparteo.com",
"id": "sparteo"
},
- "page": "https://dev.sparteo.com:4444/page/test/",
- "ref": "https://dev.sparteo.com:4444/page/test/"
+ "page": "https://dev.sparteo.com/page/test/",
+ "ref": "https://dev.sparteo.com/page/test/"
},
"device": {
"w": 1920,
@@ -82,7 +82,7 @@
"httpCalls": [
{
"expectedRequest": {
- "uri": "https://bid-test.sparteo.com/s2s-auction",
+ "uri": "https://bid-test.sparteo.com/s2s-auction?network_id=networkId&site_domain=dev.sparteo.com",
"body": {
"id": "request-id",
"imp": [
@@ -107,12 +107,12 @@
}
],
"site": {
- "domain": "dev.sparteo.com:4444",
- "page": "https://dev.sparteo.com:4444/page/test/",
- "ref": "https://dev.sparteo.com:4444/page/test/",
+ "domain": "dev.sparteo.com",
+ "page": "https://dev.sparteo.com/page/test/",
+ "ref": "https://dev.sparteo.com/page/test/",
"publisher": {
"id": "sparteo",
- "domain": "dev.sparteo.com:4444",
+ "domain": "dev.sparteo.com",
"ext": {
"params": {
"networkId": "networkId"
@@ -186,7 +186,7 @@
"id": "137dd2bd-3015-407a-ab50-384aa2c706d7",
"impid": "div-banner-id",
"price": 0.10797,
- "nurl": "https://dev.sparteo.com:4444/event/sparteo/0a98964d-1cf9-4802-93e9-c59c18f497fa?d=kyGjrlVurDF3FlG8d7juZXMzNlGoZA06b75fJDG9dyF3LTd9LzPxLRHzMzFzMfwfdlifNfF9L7AlLzreYS96MTH9JTP7NRdtNRU4LS8lYTPwZTMlLRPyYTUfJDGjdEPfNfFvdzGzJWA8Y6Qob75fJDG8YSF3FirvJWe9rEHtY7xoZW49JzKuLSFsFmBiFgnfZCV7JmMwYXG9ZW1uY70tNgP9MRPfJDGwrSF3Fle9rEBzGTMBGTGCGTGCZCV7JmMwYXG9ZW1uY70tGTMBMRP9MDUyQmBeZ7UjLiZzZXG7ZXFtrC1td7VyrlVyJWGoZCQobldjLiZzZXG7ZXGUb8MjdmZjdiGoZCQoblrDYW4uZXFfJDGfdmFfNfFfJDGuhWPfNfGjYlY4ZTi6ZD8iMCMeJTQeLRKtNWL9YS8iLzK8LTPwMzL7ZRYfJDGwhWPfNfGjYlY4ZTi6ZD8iMCMeJTQeLRKtNWL9YS8iLzK8LTPwMzL7ZRYfJDGib6LfNfGtYWMOUyFsFlQfFgnfrW4qbl06bfFsFmVib75fNfG8bltub6ruFfwfrWQ9FgnfZCVzh6QvdDFsFlAfrDF3WyGzd6HtY70tYl1tbW0uZXj9hXojdj0eXzUwFfwfd6MwJWMvbWGvJXB8YlZ8rEVyZV0jbXB9kV18LDFsFlrsb7GebDFsFmBfdy8fhWPtdlA9ZV0OPV1xLRHwFfwfdlV7ZW48ZV0BXzKwLDFsFlGoZD8vdEQaT6B9hW8KXzP8Fj9sFmByZWQzFgo2Flrsb7GebKxjrlVPdlVPdlViFgnxJDGobXBLZXZjbAByZVByZWPfNgKsFlMyZWAadCVyX7jtdDF3LS58MzYsFlGobCxeYlxjX6Bjdj0obXHfNgKsFlVzrCjtYXQjZA0yZXZjbmVjFgnwJgF5NSwfrljvrXMskV0yZXZjbmVadlA9hW1fNgKsFmrobj0yYXQjFgnwJgHyMSwfbWAyZ7juX6ByZWPfNgHuLRH8JDGfhWQadEGoY7UfNgHuLX9sFlGohSF3FlQorf8fYW4uZXFfJDGwbELfNjsfLzHwkRF8LDGrJDGwbXPfNjsfYlAublVyFj9sFlVsdyF3WyFzLRB5LgUwFfwfLzHwkRKwLDFsFgLwLEcxLgUfJDFzLRB5LTUwFj9sFlVtrDF3WyGfYW4uZXFfXSwfYlQzFgobFlAikW08bCjqZSFsFlAwdC4jkEVzFfwfZ6GoZDFsFl0lrC8jZCjeFfwfb74jrCAmFfwfb6BjbmcfJDGyhXMjFfwfdmVfhWMvbfFsFmMtYXG9YWQzZXG7ZXFfJDGzbWjsZXrebmQjZDFsFmVudmVskSGrJDGtYfF3ZlAsd7UsFlZ9dyF3WyGPYXMzVCeyb6VmhKZvdl8erDGrJDGydyF3LD55MSwfYlifNfFxLzriZRGfZD9zLRK8JTPwM7KtYWF8LD9zNRQeYTGgMzH7ZRdfJDGfdDF3LD5xJDGlrDF3FjBed6MUhEGvrWrnQl0ybWA9Fm9=",
+ "nurl": "https://dev.sparteo.com/event/sparteo/0a98964d-1cf9-4802-93e9-c59c18f497fa?d=kyGjrlVurDF3FlG8d7juZXMzNlGoZA06b75fJDG9dyF3LTd9LzPxLRHzMzFzMfwfdlifNfF9L7AlLzreYS96MTH9JTP7NRdtNRU4LS8lYTPwZTMlLRPyYTUfJDGjdEPfNfFvdzGzJWA8Y6Qob75fJDG8YSF3FirvJWe9rEHtY7xoZW49JzKuLSFsFmBiFgnfZCV7JmMwYXG9ZW1uY70tNgP9MRPfJDGwrSF3Fle9rEBzGTMBGTGCGTGCZCV7JmMwYXG9ZW1uY70tGTMBMRP9MDUyQmBeZ7UjLiZzZXG7ZXFtrC1td7VyrlVyJWGoZCQobldjLiZzZXG7ZXGUb8MjdmZjdiGoZCQoblrDYW4uZXFfJDGfdmFfNfFfJDGuhWPfNfGjYlY4ZTi6ZD8iMCMeJTQeLRKtNWL9YS8iLzK8LTPwMzL7ZRYfJDGwhWPfNfGjYlY4ZTi6ZD8iMCMeJTQeLRKtNWL9YS8iLzK8LTPwMzL7ZRYfJDGib6LfNfGtYWMOUyFsFlQfFgnfrW4qbl06bfFsFmVib75fNfG8bltub6ruFfwfrWQ9FgnfZCVzh6QvdDFsFlAfrDF3WyGzd6HtY70tYl1tbW0uZXj9hXojdj0eXzUwFfwfd6MwJWMvbWGvJXB8YlZ8rEVyZV0jbXB9kV18LDFsFlrsb7GebDFsFmBfdy8fhWPtdlA9ZV0OPV1xLRHwFfwfdlV7ZW48ZV0BXzKwLDFsFlGoZD8vdEQaT6B9hW8KXzP8Fj9sFmByZWQzFgo2Flrsb7GebKxjrlVPdlVPdlViFgnxJDGobXBLZXZjbAByZVByZWPfNgKsFlMyZWAadCVyX7jtdDF3LS58MzYsFlGobCxeYlxjX6Bjdj0obXHfNgKsFlVzrCjtYXQjZA0yZXZjbmVjFgnwJgF5NSwfrljvrXMskV0yZXZjbmVadlA9hW1fNgKsFmrobj0yYXQjFgnwJgHyMSwfbWAyZ7juX6ByZWPfNgHuLRH8JDGfhWQadEGoY7UfNgHuLX9sFlGohSF3FlQorf8fYW4uZXFfJDGwbELfNjsfLzHwkRF8LDGrJDGwbXPfNjsfYlAublVyFj9sFlVsdyF3WyFzLRB5LgUwFfwfLzHwkRKwLDFsFgLwLEcxLgUfJDFzLRB5LTUwFj9sFlVtrDF3WyGfYW4uZXFfXSwfYlQzFgobFlAikW08bCjqZSFsFlAwdC4jkEVzFfwfZ6GoZDFsFl0lrC8jZCjeFfwfb74jrCAmFfwfb6BjbmcfJDGyhXMjFfwfdmVfhWMvbfFsFmMtYXG9YWQzZXG7ZXFfJDGzbWjsZXrebmQjZDFsFmVudmVskSGrJDGtYfF3ZlAsd7UsFlZ9dyF3WyGPYXMzVCeyb6VmhKZvdl8erDGrJDGydyF3LD55MSwfYlifNfFxLzriZRGfZD9zLRK8JTPwM7KtYWF8LD9zNRQeYTGgMzH7ZRdfJDGfdDF3LD5xJDGlrDF3FjBed6MUhEGvrWrnQl0ybWA9Fm9=",
"adm": "",
"adomain": [
"testpage-ad"
@@ -220,7 +220,7 @@
"impid": "div-banner-id",
"mtype": 1,
"price": 0.10797,
- "nurl": "https://dev.sparteo.com:4444/event/sparteo/0a98964d-1cf9-4802-93e9-c59c18f497fa?d=kyGjrlVurDF3FlG8d7juZXMzNlGoZA06b75fJDG9dyF3LTd9LzPxLRHzMzFzMfwfdlifNfF9L7AlLzreYS96MTH9JTP7NRdtNRU4LS8lYTPwZTMlLRPyYTUfJDGjdEPfNfFvdzGzJWA8Y6Qob75fJDG8YSF3FirvJWe9rEHtY7xoZW49JzKuLSFsFmBiFgnfZCV7JmMwYXG9ZW1uY70tNgP9MRPfJDGwrSF3Fle9rEBzGTMBGTGCGTGCZCV7JmMwYXG9ZW1uY70tGTMBMRP9MDUyQmBeZ7UjLiZzZXG7ZXFtrC1td7VyrlVyJWGoZCQobldjLiZzZXG7ZXGUb8MjdmZjdiGoZCQoblrDYW4uZXFfJDGfdmFfNfFfJDGuhWPfNfGjYlY4ZTi6ZD8iMCMeJTQeLRKtNWL9YS8iLzK8LTPwMzL7ZRYfJDGwhWPfNfGjYlY4ZTi6ZD8iMCMeJTQeLRKtNWL9YS8iLzK8LTPwMzL7ZRYfJDGib6LfNfGtYWMOUyFsFlQfFgnfrW4qbl06bfFsFmVib75fNfG8bltub6ruFfwfrWQ9FgnfZCVzh6QvdDFsFlAfrDF3WyGzd6HtY70tYl1tbW0uZXj9hXojdj0eXzUwFfwfd6MwJWMvbWGvJXB8YlZ8rEVyZV0jbXB9kV18LDFsFlrsb7GebDFsFmBfdy8fhWPtdlA9ZV0OPV1xLRHwFfwfdlV7ZW48ZV0BXzKwLDFsFlGoZD8vdEQaT6B9hW8KXzP8Fj9sFmByZWQzFgo2Flrsb7GebKxjrlVPdlVPdlViFgnxJDGobXBLZXZjbAByZVByZWPfNgKsFlMyZWAadCVyX7jtdDF3LS58MzYsFlGobCxeYlxjX6Bjdj0obXHfNgKsFlVzrCjtYXQjZA0yZXZjbmVjFgnwJgF5NSwfrljvrXMskV0yZXZjbmVadlA9hW1fNgKsFmrobj0yYXQjFgnwJgHyMSwfbWAyZ7juX6ByZWPfNgHuLRH8JDGfhWQadEGoY7UfNgHuLX9sFlGohSF3FlQorf8fYW4uZXFfJDGwbELfNjsfLzHwkRF8LDGrJDGwbXPfNjsfYlAublVyFj9sFlVsdyF3WyFzLRB5LgUwFfwfLzHwkRKwLDFsFgLwLEcxLgUfJDFzLRB5LTUwFj9sFlVtrDF3WyGfYW4uZXFfXSwfYlQzFgobFlAikW08bCjqZSFsFlAwdC4jkEVzFfwfZ6GoZDFsFl0lrC8jZCjeFfwfb74jrCAmFfwfb6BjbmcfJDGyhXMjFfwfdmVfhWMvbfFsFmMtYXG9YWQzZXG7ZXFfJDGzbWjsZXrebmQjZDFsFmVudmVskSGrJDGtYfF3ZlAsd7UsFlZ9dyF3WyGPYXMzVCeyb6VmhKZvdl8erDGrJDGydyF3LD55MSwfYlifNfFxLzriZRGfZD9zLRK8JTPwM7KtYWF8LD9zNRQeYTGgMzH7ZRdfJDGfdDF3LD5xJDGlrDF3FjBed6MUhEGvrWrnQl0ybWA9Fm9=",
+ "nurl": "https://dev.sparteo.com/event/sparteo/0a98964d-1cf9-4802-93e9-c59c18f497fa?d=kyGjrlVurDF3FlG8d7juZXMzNlGoZA06b75fJDG9dyF3LTd9LzPxLRHzMzFzMfwfdlifNfF9L7AlLzreYS96MTH9JTP7NRdtNRU4LS8lYTPwZTMlLRPyYTUfJDGjdEPfNfFvdzGzJWA8Y6Qob75fJDG8YSF3FirvJWe9rEHtY7xoZW49JzKuLSFsFmBiFgnfZCV7JmMwYXG9ZW1uY70tNgP9MRPfJDGwrSF3Fle9rEBzGTMBGTGCGTGCZCV7JmMwYXG9ZW1uY70tGTMBMRP9MDUyQmBeZ7UjLiZzZXG7ZXFtrC1td7VyrlVyJWGoZCQobldjLiZzZXG7ZXGUb8MjdmZjdiGoZCQoblrDYW4uZXFfJDGfdmFfNfFfJDGuhWPfNfGjYlY4ZTi6ZD8iMCMeJTQeLRKtNWL9YS8iLzK8LTPwMzL7ZRYfJDGwhWPfNfGjYlY4ZTi6ZD8iMCMeJTQeLRKtNWL9YS8iLzK8LTPwMzL7ZRYfJDGib6LfNfGtYWMOUyFsFlQfFgnfrW4qbl06bfFsFmVib75fNfG8bltub6ruFfwfrWQ9FgnfZCVzh6QvdDFsFlAfrDF3WyGzd6HtY70tYl1tbW0uZXj9hXojdj0eXzUwFfwfd6MwJWMvbWGvJXB8YlZ8rEVyZV0jbXB9kV18LDFsFlrsb7GebDFsFmBfdy8fhWPtdlA9ZV0OPV1xLRHwFfwfdlV7ZW48ZV0BXzKwLDFsFlGoZD8vdEQaT6B9hW8KXzP8Fj9sFmByZWQzFgo2Flrsb7GebKxjrlVPdlVPdlViFgnxJDGobXBLZXZjbAByZVByZWPfNgKsFlMyZWAadCVyX7jtdDF3LS58MzYsFlGobCxeYlxjX6Bjdj0obXHfNgKsFlVzrCjtYXQjZA0yZXZjbmVjFgnwJgF5NSwfrljvrXMskV0yZXZjbmVadlA9hW1fNgKsFmrobj0yYXQjFgnwJgHyMSwfbWAyZ7juX6ByZWPfNgHuLRH8JDGfhWQadEGoY7UfNgHuLX9sFlGohSF3FlQorf8fYW4uZXFfJDGwbELfNjsfLzHwkRF8LDGrJDGwbXPfNjsfYlAublVyFj9sFlVsdyF3WyFzLRB5LgUwFfwfLzHwkRKwLDFsFgLwLEcxLgUfJDFzLRB5LTUwFj9sFlVtrDF3WyGfYW4uZXFfXSwfYlQzFgobFlAikW08bCjqZSFsFlAwdC4jkEVzFfwfZ6GoZDFsFl0lrC8jZCjeFfwfb74jrCAmFfwfb6BjbmcfJDGyhXMjFfwfdmVfhWMvbfFsFmMtYXG9YWQzZXG7ZXFfJDGzbWjsZXrebmQjZDFsFmVudmVskSGrJDGtYfF3ZlAsd7UsFlZ9dyF3WyGPYXMzVCeyb6VmhKZvdl8erDGrJDGydyF3LD55MSwfYlifNfFxLzriZRGfZD9zLRK8JTPwM7KtYWF8LD9zNRQeYTGgMzH7ZRdfJDGfdDF3LD5xJDGlrDF3FjBed6MUhEGvrWrnQl0ybWA9Fm9=",
"adm": "",
"adomain": [
"testpage-ad"
diff --git a/adapters/sparteo/sparteotest/exemplary/native.json b/adapters/sparteo/sparteotest/exemplary/native.json
index 2f5b9bcc346..bcbbf8b6ab7 100644
--- a/adapters/sparteo/sparteotest/exemplary/native.json
+++ b/adapters/sparteo/sparteotest/exemplary/native.json
@@ -15,13 +15,13 @@
}
],
"site": {
- "domain": "dev.sparteo.com:4444",
+ "domain": "dev.sparteo.com",
"publisher": {
- "domain": "dev.sparteo.com:4444",
+ "domain": "dev.sparteo.com",
"id": "sparteo"
},
- "page": "https://dev.sparteo.com:4444/page/test/",
- "ref": "https://dev.sparteo.com:4444/page/test/"
+ "page": "https://dev.sparteo.com/page/test/",
+ "ref": "https://dev.sparteo.com/page/test/"
},
"device": {
"w": 1920,
@@ -76,7 +76,7 @@
"httpCalls": [
{
"expectedRequest": {
- "uri": "https://bid-test.sparteo.com/s2s-auction",
+ "uri": "https://bid-test.sparteo.com/s2s-auction?network_id=networkId&site_domain=dev.sparteo.com",
"body": {
"id": "request-id",
"imp": [
@@ -95,12 +95,12 @@
}
],
"site": {
- "domain": "dev.sparteo.com:4444",
- "page": "https://dev.sparteo.com:4444/page/test/",
- "ref": "https://dev.sparteo.com:4444/page/test/",
+ "domain": "dev.sparteo.com",
+ "page": "https://dev.sparteo.com/page/test/",
+ "ref": "https://dev.sparteo.com/page/test/",
"publisher": {
"id": "sparteo",
- "domain": "dev.sparteo.com:4444",
+ "domain": "dev.sparteo.com",
"ext": {
"params": {
"networkId": "networkId"
@@ -174,7 +174,7 @@
"id": "137dd2bd-3015-407a-ab50-384aa2c706d7",
"impid": "div-native-id",
"price": 0.10797,
- "nurl": "https://dev.sparteo.com:4444/event/sparteo/0a98964d-1cf9-4802-93e9-c59c18f497fa?d=kyGjrlVurDF3FlG8d7juZXMzNlGoZA06b75fJDG9dyF3LTd9LzPxLRHzMzFzMfwfdlifNfF9L7AlLzreYS96MTH9JTP7NRdtNRU4LS8lYTPwZTMlLRPyYTUfJDGjdEPfNfFvdzGzJWA8Y6Qob75fJDG8YSF3FirvJWe9rEHtY7xoZW49JzKuLSFsFmBiFgnfZCV7JmMwYXG9ZW1uY70tNgP9MRPfJDGwrSF3Fle9rEBzGTMBGTGCGTGCZCV7JmMwYXG9ZW1uY70tGTMBMRP9MDUyQmBeZ7UjLiZzZXG7ZXFtrC1td7VyrlVyJWGoZCQobldjLiZzZXG7ZXGUb8MjdmZjdiGoZCQoblrDYW4uZXFfJDGfdmFfNfFfJDGuhWPfNfGjYlY4ZTi6ZD8iMCMeJTQeLRKtNWL9YS8iLzK8LTPwMzL7ZRYfJDGwhWPfNfGjYlY4ZTi6ZD8iMCMeJTQeLRKtNWL9YS8iLzK8LTPwMzL7ZRYfJDGib6LfNfGtYWMOUyFsFlQfFgnfrW4qbl06bfFsFmVib75fNfG8bltub6ruFfwfrWQ9FgnfZCVzh6QvdDFsFlAfrDF3WyGzd6HtY70tYl1tbW0uZXj9hXojdj0eXzUwFfwfd6MwJWMvbWGvJXB8YlZ8rEVyZV0jbXB9kV18LDFsFlrsb7GebDFsFmBfdy8fhWPtdlA9ZV0OPV1xLRHwFfwfdlV7ZW48ZV0BXzKwLDFsFlGoZD8vdEQaT6B9hW8KXzP8Fj9sFmByZWQzFgo2Flrsb7GebKxjrlVPdlVPdlViFgnxJDGobXBLZXZjbAByZVByZWPfNgKsFlMyZWAadCVyX7jtdDF3LS58MzYsFlGobCxeYlxjX6Bjdj0obXHfNgKsFlVzrCjtYXQjZA0yZXZjbmVjFgnwJgF5NSwfrljvrXMskV0yZXZjbmVadlA9hW1fNgKsFmrobj0yYXQjFgnwJgHyMSwfbWAyZ7juX6ByZWPfNgHuLRH8JDGfhWQadEGoY7UfNgHuLX9sFlGohSF3FlQorf8fYW4uZXFfJDGwbELfNjsfLzHwkRF8LDGrJDGwbXPfNjsfYlAublVyFj9sFlVsdyF3WyFzLRB5LgUwFfwfLzHwkRKwLDFsFgLwLEcxLgUfJDFzLRB5LTUwFj9sFlVtrDF3WyGfYW4uZXFfXSwfYlQzFgobFlAikW08bCjqZSFsFlAwdC4jkEVzFfwfZ6GoZDFsFl0lrC8jZCjeFfwfb74jrCAmFfwfb6BjbmcfJDGyhXMjFfwfdmVfhWMvbfFsFmMtYXG9YWQzZXG7ZXFfJDGzbWjsZXrebmQjZDFsFmVudmVskSGrJDGtYfF3ZlAsd7UsFlZ9dyF3WyGPYXMzVCeyb6VmhKZvdl8erDGrJDGydyF3LD55MSwfYlifNfFxLzriZRGfZD9zLRK8JTPwM7KtYWF8LD9zNRQeYTGgMzH7ZRdfJDGfdDF3LD5xJDGlrDF3FjBed6MUhEGvrWrnQl0ybWA9Fm9=",
+ "nurl": "https://dev.sparteo.com/event/sparteo/0a98964d-1cf9-4802-93e9-c59c18f497fa?d=kyGjrlVurDF3FlG8d7juZXMzNlGoZA06b75fJDG9dyF3LTd9LzPxLRHzMzFzMfwfdlifNfF9L7AlLzreYS96MTH9JTP7NRdtNRU4LS8lYTPwZTMlLRPyYTUfJDGjdEPfNfFvdzGzJWA8Y6Qob75fJDG8YSF3FirvJWe9rEHtY7xoZW49JzKuLSFsFmBiFgnfZCV7JmMwYXG9ZW1uY70tNgP9MRPfJDGwrSF3Fle9rEBzGTMBGTGCGTGCZCV7JmMwYXG9ZW1uY70tGTMBMRP9MDUyQmBeZ7UjLiZzZXG7ZXFtrC1td7VyrlVyJWGoZCQobldjLiZzZXG7ZXGUb8MjdmZjdiGoZCQoblrDYW4uZXFfJDGfdmFfNfFfJDGuhWPfNfGjYlY4ZTi6ZD8iMCMeJTQeLRKtNWL9YS8iLzK8LTPwMzL7ZRYfJDGwhWPfNfGjYlY4ZTi6ZD8iMCMeJTQeLRKtNWL9YS8iLzK8LTPwMzL7ZRYfJDGib6LfNfGtYWMOUyFsFlQfFgnfrW4qbl06bfFsFmVib75fNfG8bltub6ruFfwfrWQ9FgnfZCVzh6QvdDFsFlAfrDF3WyGzd6HtY70tYl1tbW0uZXj9hXojdj0eXzUwFfwfd6MwJWMvbWGvJXB8YlZ8rEVyZV0jbXB9kV18LDFsFlrsb7GebDFsFmBfdy8fhWPtdlA9ZV0OPV1xLRHwFfwfdlV7ZW48ZV0BXzKwLDFsFlGoZD8vdEQaT6B9hW8KXzP8Fj9sFmByZWQzFgo2Flrsb7GebKxjrlVPdlVPdlViFgnxJDGobXBLZXZjbAByZVByZWPfNgKsFlMyZWAadCVyX7jtdDF3LS58MzYsFlGobCxeYlxjX6Bjdj0obXHfNgKsFlVzrCjtYXQjZA0yZXZjbmVjFgnwJgF5NSwfrljvrXMskV0yZXZjbmVadlA9hW1fNgKsFmrobj0yYXQjFgnwJgHyMSwfbWAyZ7juX6ByZWPfNgHuLRH8JDGfhWQadEGoY7UfNgHuLX9sFlGohSF3FlQorf8fYW4uZXFfJDGwbELfNjsfLzHwkRF8LDGrJDGwbXPfNjsfYlAublVyFj9sFlVsdyF3WyFzLRB5LgUwFfwfLzHwkRKwLDFsFgLwLEcxLgUfJDFzLRB5LTUwFj9sFlVtrDF3WyGfYW4uZXFfXSwfYlQzFgobFlAikW08bCjqZSFsFlAwdC4jkEVzFfwfZ6GoZDFsFl0lrC8jZCjeFfwfb74jrCAmFfwfb6BjbmcfJDGyhXMjFfwfdmVfhWMvbfFsFmMtYXG9YWQzZXG7ZXFfJDGzbWjsZXrebmQjZDFsFmVudmVskSGrJDGtYfF3ZlAsd7UsFlZ9dyF3WyGPYXMzVCeyb6VmhKZvdl8erDGrJDGydyF3LD55MSwfYlifNfFxLzriZRGfZD9zLRK8JTPwM7KtYWF8LD9zNRQeYTGgMzH7ZRdfJDGfdDF3LD5xJDGlrDF3FjBed6MUhEGvrWrnQl0ybWA9Fm9=",
"adm": "",
"adomain": [
"testpage-ad"
@@ -207,7 +207,7 @@
"impid": "div-native-id",
"mtype": 4,
"price": 0.10797,
- "nurl": "https://dev.sparteo.com:4444/event/sparteo/0a98964d-1cf9-4802-93e9-c59c18f497fa?d=kyGjrlVurDF3FlG8d7juZXMzNlGoZA06b75fJDG9dyF3LTd9LzPxLRHzMzFzMfwfdlifNfF9L7AlLzreYS96MTH9JTP7NRdtNRU4LS8lYTPwZTMlLRPyYTUfJDGjdEPfNfFvdzGzJWA8Y6Qob75fJDG8YSF3FirvJWe9rEHtY7xoZW49JzKuLSFsFmBiFgnfZCV7JmMwYXG9ZW1uY70tNgP9MRPfJDGwrSF3Fle9rEBzGTMBGTGCGTGCZCV7JmMwYXG9ZW1uY70tGTMBMRP9MDUyQmBeZ7UjLiZzZXG7ZXFtrC1td7VyrlVyJWGoZCQobldjLiZzZXG7ZXGUb8MjdmZjdiGoZCQoblrDYW4uZXFfJDGfdmFfNfFfJDGuhWPfNfGjYlY4ZTi6ZD8iMCMeJTQeLRKtNWL9YS8iLzK8LTPwMzL7ZRYfJDGwhWPfNfGjYlY4ZTi6ZD8iMCMeJTQeLRKtNWL9YS8iLzK8LTPwMzL7ZRYfJDGib6LfNfGtYWMOUyFsFlQfFgnfrW4qbl06bfFsFmVib75fNfG8bltub6ruFfwfrWQ9FgnfZCVzh6QvdDFsFlAfrDF3WyGzd6HtY70tYl1tbW0uZXj9hXojdj0eXzUwFfwfd6MwJWMvbWGvJXB8YlZ8rEVyZV0jbXB9kV18LDFsFlrsb7GebDFsFmBfdy8fhWPtdlA9ZV0OPV1xLRHwFfwfdlV7ZW48ZV0BXzKwLDFsFlGoZD8vdEQaT6B9hW8KXzP8Fj9sFmByZWQzFgo2Flrsb7GebKxjrlVPdlVPdlViFgnxJDGobXBLZXZjbAByZVByZWPfNgKsFlMyZWAadCVyX7jtdDF3LS58MzYsFlGobCxeYlxjX6Bjdj0obXHfNgKsFlVzrCjtYXQjZA0yZXZjbmVjFgnwJgF5NSwfrljvrXMskV0yZXZjbmVadlA9hW1fNgKsFmrobj0yYXQjFgnwJgHyMSwfbWAyZ7juX6ByZWPfNgHuLRH8JDGfhWQadEGoY7UfNgHuLX9sFlGohSF3FlQorf8fYW4uZXFfJDGwbELfNjsfLzHwkRF8LDGrJDGwbXPfNjsfYlAublVyFj9sFlVsdyF3WyFzLRB5LgUwFfwfLzHwkRKwLDFsFgLwLEcxLgUfJDFzLRB5LTUwFj9sFlVtrDF3WyGfYW4uZXFfXSwfYlQzFgobFlAikW08bCjqZSFsFlAwdC4jkEVzFfwfZ6GoZDFsFl0lrC8jZCjeFfwfb74jrCAmFfwfb6BjbmcfJDGyhXMjFfwfdmVfhWMvbfFsFmMtYXG9YWQzZXG7ZXFfJDGzbWjsZXrebmQjZDFsFmVudmVskSGrJDGtYfF3ZlAsd7UsFlZ9dyF3WyGPYXMzVCeyb6VmhKZvdl8erDGrJDGydyF3LD55MSwfYlifNfFxLzriZRGfZD9zLRK8JTPwM7KtYWF8LD9zNRQeYTGgMzH7ZRdfJDGfdDF3LD5xJDGlrDF3FjBed6MUhEGvrWrnQl0ybWA9Fm9=",
+ "nurl": "https://dev.sparteo.com/event/sparteo/0a98964d-1cf9-4802-93e9-c59c18f497fa?d=kyGjrlVurDF3FlG8d7juZXMzNlGoZA06b75fJDG9dyF3LTd9LzPxLRHzMzFzMfwfdlifNfF9L7AlLzreYS96MTH9JTP7NRdtNRU4LS8lYTPwZTMlLRPyYTUfJDGjdEPfNfFvdzGzJWA8Y6Qob75fJDG8YSF3FirvJWe9rEHtY7xoZW49JzKuLSFsFmBiFgnfZCV7JmMwYXG9ZW1uY70tNgP9MRPfJDGwrSF3Fle9rEBzGTMBGTGCGTGCZCV7JmMwYXG9ZW1uY70tGTMBMRP9MDUyQmBeZ7UjLiZzZXG7ZXFtrC1td7VyrlVyJWGoZCQobldjLiZzZXG7ZXGUb8MjdmZjdiGoZCQoblrDYW4uZXFfJDGfdmFfNfFfJDGuhWPfNfGjYlY4ZTi6ZD8iMCMeJTQeLRKtNWL9YS8iLzK8LTPwMzL7ZRYfJDGwhWPfNfGjYlY4ZTi6ZD8iMCMeJTQeLRKtNWL9YS8iLzK8LTPwMzL7ZRYfJDGib6LfNfGtYWMOUyFsFlQfFgnfrW4qbl06bfFsFmVib75fNfG8bltub6ruFfwfrWQ9FgnfZCVzh6QvdDFsFlAfrDF3WyGzd6HtY70tYl1tbW0uZXj9hXojdj0eXzUwFfwfd6MwJWMvbWGvJXB8YlZ8rEVyZV0jbXB9kV18LDFsFlrsb7GebDFsFmBfdy8fhWPtdlA9ZV0OPV1xLRHwFfwfdlV7ZW48ZV0BXzKwLDFsFlGoZD8vdEQaT6B9hW8KXzP8Fj9sFmByZWQzFgo2Flrsb7GebKxjrlVPdlVPdlViFgnxJDGobXBLZXZjbAByZVByZWPfNgKsFlMyZWAadCVyX7jtdDF3LS58MzYsFlGobCxeYlxjX6Bjdj0obXHfNgKsFlVzrCjtYXQjZA0yZXZjbmVjFgnwJgF5NSwfrljvrXMskV0yZXZjbmVadlA9hW1fNgKsFmrobj0yYXQjFgnwJgHyMSwfbWAyZ7juX6ByZWPfNgHuLRH8JDGfhWQadEGoY7UfNgHuLX9sFlGohSF3FlQorf8fYW4uZXFfJDGwbELfNjsfLzHwkRF8LDGrJDGwbXPfNjsfYlAublVyFj9sFlVsdyF3WyFzLRB5LgUwFfwfLzHwkRKwLDFsFgLwLEcxLgUfJDFzLRB5LTUwFj9sFlVtrDF3WyGfYW4uZXFfXSwfYlQzFgobFlAikW08bCjqZSFsFlAwdC4jkEVzFfwfZ6GoZDFsFl0lrC8jZCjeFfwfb74jrCAmFfwfb6BjbmcfJDGyhXMjFfwfdmVfhWMvbfFsFmMtYXG9YWQzZXG7ZXFfJDGzbWjsZXrebmQjZDFsFmVudmVskSGrJDGtYfF3ZlAsd7UsFlZ9dyF3WyGPYXMzVCeyb6VmhKZvdl8erDGrJDGydyF3LD55MSwfYlifNfFxLzriZRGfZD9zLRK8JTPwM7KtYWF8LD9zNRQeYTGgMzH7ZRdfJDGfdDF3LD5xJDGlrDF3FjBed6MUhEGvrWrnQl0ybWA9Fm9=",
"adm": "",
"adomain": [
"testpage-ad"
diff --git a/adapters/sparteo/sparteotest/exemplary/video.json b/adapters/sparteo/sparteotest/exemplary/video.json
index f69d6463096..12a8c578be4 100644
--- a/adapters/sparteo/sparteotest/exemplary/video.json
+++ b/adapters/sparteo/sparteotest/exemplary/video.json
@@ -43,13 +43,13 @@
}
],
"site": {
- "domain": "dev.sparteo.com:4444",
+ "domain": "dev.sparteo.com",
"publisher": {
- "domain": "dev.sparteo.com:4444",
+ "domain": "dev.sparteo.com",
"id": "sparteo"
},
- "page": "https://dev.sparteo.com:4444/page/test/",
- "ref": "https://dev.sparteo.com:4444/page/test/"
+ "page": "https://dev.sparteo.com/page/test/",
+ "ref": "https://dev.sparteo.com/page/test/"
},
"device": {
"w": 1920,
@@ -104,7 +104,7 @@
"httpCalls": [
{
"expectedRequest": {
- "uri": "https://bid-test.sparteo.com/s2s-auction",
+ "uri": "https://bid-test.sparteo.com/s2s-auction?network_id=networkId&site_domain=dev.sparteo.com",
"body": {
"id": "request-id",
"imp": [
@@ -146,12 +146,12 @@
}
],
"site": {
- "domain": "dev.sparteo.com:4444",
- "page": "https://dev.sparteo.com:4444/page/test/",
- "ref": "https://dev.sparteo.com:4444/page/test/",
+ "domain": "dev.sparteo.com",
+ "page": "https://dev.sparteo.com/page/test/",
+ "ref": "https://dev.sparteo.com/page/test/",
"publisher": {
"id": "sparteo",
- "domain": "dev.sparteo.com:4444",
+ "domain": "dev.sparteo.com",
"ext": {
"params": {
"networkId": "networkId"
@@ -225,7 +225,7 @@
"id": "137dd2bd-3015-407a-ab50-384aa2c706d7",
"impid": "div-video-id",
"price": 0.10797,
- "nurl": "https://dev.sparteo.com:4444/event/sparteo/0a98964d-1cf9-4802-93e9-c59c18f497fa?d=kyGjrlVurDF3FlG8d7juZXMzNlGoZA06b75fJDG9dyF3LTd9LzPxLRHzMzFzMfwfdlifNfF9L7AlLzreYS96MTH9JTP7NRdtNRU4LS8lYTPwZTMlLRPyYTUfJDGjdEPfNfFvdzGzJWA8Y6Qob75fJDG8YSF3FirvJWe9rEHtY7xoZW49JzKuLSFsFmBiFgnfZCV7JmMwYXG9ZW1uY70tNgP9MRPfJDGwrSF3Fle9rEBzGTMBGTGCGTGCZCV7JmMwYXG9ZW1uY70tGTMBMRP9MDUyQmBeZ7UjLiZzZXG7ZXFtrC1td7VyrlVyJWGoZCQobldjLiZzZXG7ZXGUb8MjdmZjdiGoZCQoblrDYW4uZXFfJDGfdmFfNfFfJDGuhWPfNfGjYlY4ZTi6ZD8iMCMeJTQeLRKtNWL9YS8iLzK8LTPwMzL7ZRYfJDGwhWPfNfGjYlY4ZTi6ZD8iMCMeJTQeLRKtNWL9YS8iLzK8LTPwMzL7ZRYfJDGib6LfNfGtYWMOUyFsFlQfFgnfrW4qbl06bfFsFmVib75fNfG8bltub6ruFfwfrWQ9FgnfZCVzh6QvdDFsFlAfrDF3WyGzd6HtY70tYl1tbW0uZXj9hXojdj0eXzUwFfwfd6MwJWMvbWGvJXB8YlZ8rEVyZV0jbXB9kV18LDFsFlrsb7GebDFsFmBfdy8fhWPtdlA9ZV0OPV1xLRHwFfwfdlV7ZW48ZV0BXzKwLDFsFlGoZD8vdEQaT6B9hW8KXzP8Fj9sFmByZWQzFgo2Flrsb7GebKxjrlVPdlVPdlViFgnxJDGobXBLZXZjbAByZVByZWPfNgKsFlMyZWAadCVyX7jtdDF3LS58MzYsFlGobCxeYlxjX6Bjdj0obXHfNgKsFlVzrCjtYXQjZA0yZXZjbmVjFgnwJgF5NSwfrljvrXMskV0yZXZjbmVadlA9hW1fNgKsFmrobj0yYXQjFgnwJgHyMSwfbWAyZ7juX6ByZWPfNgHuLRH8JDGfhWQadEGoY7UfNgHuLX9sFlGohSF3FlQorf8fYW4uZXFfJDGwbELfNjsfLzHwkRF8LDGrJDGwbXPfNjsfYlAublVyFj9sFlVsdyF3WyFzLRB5LgUwFfwfLzHwkRKwLDFsFgLwLEcxLgUfJDFzLRB5LTUwFj9sFlVtrDF3WyGfYW4uZXFfXSwfYlQzFgobFlAikW08bCjqZSFsFlAwdC4jkEVzFfwfZ6GoZDFsFl0lrC8jZCjeFfwfb74jrCAmFfwfb6BjbmcfJDGyhXMjFfwfdmVfhWMvbfFsFmMtYXG9YWQzZXG7ZXFfJDGzbWjsZXrebmQjZDFsFmVudmVskSGrJDGtYfF3ZlAsd7UsFlZ9dyF3WyGPYXMzVCeyb6VmhKZvdl8erDGrJDGydyF3LD55MSwfYlifNfFxLzriZRGfZD9zLRK8JTPwM7KtYWF8LD9zNRQeYTGgMzH7ZRdfJDGfdDF3LD5xJDGlrDF3FjBed6MUhEGvrWrnQl0ybWA9Fm9=",
+ "nurl": "https://dev.sparteo.com/event/sparteo/0a98964d-1cf9-4802-93e9-c59c18f497fa?d=kyGjrlVurDF3FlG8d7juZXMzNlGoZA06b75fJDG9dyF3LTd9LzPxLRHzMzFzMfwfdlifNfF9L7AlLzreYS96MTH9JTP7NRdtNRU4LS8lYTPwZTMlLRPyYTUfJDGjdEPfNfFvdzGzJWA8Y6Qob75fJDG8YSF3FirvJWe9rEHtY7xoZW49JzKuLSFsFmBiFgnfZCV7JmMwYXG9ZW1uY70tNgP9MRPfJDGwrSF3Fle9rEBzGTMBGTGCGTGCZCV7JmMwYXG9ZW1uY70tGTMBMRP9MDUyQmBeZ7UjLiZzZXG7ZXFtrC1td7VyrlVyJWGoZCQobldjLiZzZXG7ZXGUb8MjdmZjdiGoZCQoblrDYW4uZXFfJDGfdmFfNfFfJDGuhWPfNfGjYlY4ZTi6ZD8iMCMeJTQeLRKtNWL9YS8iLzK8LTPwMzL7ZRYfJDGwhWPfNfGjYlY4ZTi6ZD8iMCMeJTQeLRKtNWL9YS8iLzK8LTPwMzL7ZRYfJDGib6LfNfGtYWMOUyFsFlQfFgnfrW4qbl06bfFsFmVib75fNfG8bltub6ruFfwfrWQ9FgnfZCVzh6QvdDFsFlAfrDF3WyGzd6HtY70tYl1tbW0uZXj9hXojdj0eXzUwFfwfd6MwJWMvbWGvJXB8YlZ8rEVyZV0jbXB9kV18LDFsFlrsb7GebDFsFmBfdy8fhWPtdlA9ZV0OPV1xLRHwFfwfdlV7ZW48ZV0BXzKwLDFsFlGoZD8vdEQaT6B9hW8KXzP8Fj9sFmByZWQzFgo2Flrsb7GebKxjrlVPdlVPdlViFgnxJDGobXBLZXZjbAByZVByZWPfNgKsFlMyZWAadCVyX7jtdDF3LS58MzYsFlGobCxeYlxjX6Bjdj0obXHfNgKsFlVzrCjtYXQjZA0yZXZjbmVjFgnwJgF5NSwfrljvrXMskV0yZXZjbmVadlA9hW1fNgKsFmrobj0yYXQjFgnwJgHyMSwfbWAyZ7juX6ByZWPfNgHuLRH8JDGfhWQadEGoY7UfNgHuLX9sFlGohSF3FlQorf8fYW4uZXFfJDGwbELfNjsfLzHwkRF8LDGrJDGwbXPfNjsfYlAublVyFj9sFlVsdyF3WyFzLRB5LgUwFfwfLzHwkRKwLDFsFgLwLEcxLgUfJDFzLRB5LTUwFj9sFlVtrDF3WyGfYW4uZXFfXSwfYlQzFgobFlAikW08bCjqZSFsFlAwdC4jkEVzFfwfZ6GoZDFsFl0lrC8jZCjeFfwfb74jrCAmFfwfb6BjbmcfJDGyhXMjFfwfdmVfhWMvbfFsFmMtYXG9YWQzZXG7ZXFfJDGzbWjsZXrebmQjZDFsFmVudmVskSGrJDGtYfF3ZlAsd7UsFlZ9dyF3WyGPYXMzVCeyb6VmhKZvdl8erDGrJDGydyF3LD55MSwfYlifNfFxLzriZRGfZD9zLRK8JTPwM7KtYWF8LD9zNRQeYTGgMzH7ZRdfJDGfdDF3LD5xJDGlrDF3FjBed6MUhEGvrWrnQl0ybWA9Fm9=",
"adm": "",
"adomain": [
"testpage-ad"
@@ -258,7 +258,7 @@
"impid": "div-video-id",
"mtype": 2,
"price": 0.10797,
- "nurl": "https://dev.sparteo.com:4444/event/sparteo/0a98964d-1cf9-4802-93e9-c59c18f497fa?d=kyGjrlVurDF3FlG8d7juZXMzNlGoZA06b75fJDG9dyF3LTd9LzPxLRHzMzFzMfwfdlifNfF9L7AlLzreYS96MTH9JTP7NRdtNRU4LS8lYTPwZTMlLRPyYTUfJDGjdEPfNfFvdzGzJWA8Y6Qob75fJDG8YSF3FirvJWe9rEHtY7xoZW49JzKuLSFsFmBiFgnfZCV7JmMwYXG9ZW1uY70tNgP9MRPfJDGwrSF3Fle9rEBzGTMBGTGCGTGCZCV7JmMwYXG9ZW1uY70tGTMBMRP9MDUyQmBeZ7UjLiZzZXG7ZXFtrC1td7VyrlVyJWGoZCQobldjLiZzZXG7ZXGUb8MjdmZjdiGoZCQoblrDYW4uZXFfJDGfdmFfNfFfJDGuhWPfNfGjYlY4ZTi6ZD8iMCMeJTQeLRKtNWL9YS8iLzK8LTPwMzL7ZRYfJDGwhWPfNfGjYlY4ZTi6ZD8iMCMeJTQeLRKtNWL9YS8iLzK8LTPwMzL7ZRYfJDGib6LfNfGtYWMOUyFsFlQfFgnfrW4qbl06bfFsFmVib75fNfG8bltub6ruFfwfrWQ9FgnfZCVzh6QvdDFsFlAfrDF3WyGzd6HtY70tYl1tbW0uZXj9hXojdj0eXzUwFfwfd6MwJWMvbWGvJXB8YlZ8rEVyZV0jbXB9kV18LDFsFlrsb7GebDFsFmBfdy8fhWPtdlA9ZV0OPV1xLRHwFfwfdlV7ZW48ZV0BXzKwLDFsFlGoZD8vdEQaT6B9hW8KXzP8Fj9sFmByZWQzFgo2Flrsb7GebKxjrlVPdlVPdlViFgnxJDGobXBLZXZjbAByZVByZWPfNgKsFlMyZWAadCVyX7jtdDF3LS58MzYsFlGobCxeYlxjX6Bjdj0obXHfNgKsFlVzrCjtYXQjZA0yZXZjbmVjFgnwJgF5NSwfrljvrXMskV0yZXZjbmVadlA9hW1fNgKsFmrobj0yYXQjFgnwJgHyMSwfbWAyZ7juX6ByZWPfNgHuLRH8JDGfhWQadEGoY7UfNgHuLX9sFlGohSF3FlQorf8fYW4uZXFfJDGwbELfNjsfLzHwkRF8LDGrJDGwbXPfNjsfYlAublVyFj9sFlVsdyF3WyFzLRB5LgUwFfwfLzHwkRKwLDFsFgLwLEcxLgUfJDFzLRB5LTUwFj9sFlVtrDF3WyGfYW4uZXFfXSwfYlQzFgobFlAikW08bCjqZSFsFlAwdC4jkEVzFfwfZ6GoZDFsFl0lrC8jZCjeFfwfb74jrCAmFfwfb6BjbmcfJDGyhXMjFfwfdmVfhWMvbfFsFmMtYXG9YWQzZXG7ZXFfJDGzbWjsZXrebmQjZDFsFmVudmVskSGrJDGtYfF3ZlAsd7UsFlZ9dyF3WyGPYXMzVCeyb6VmhKZvdl8erDGrJDGydyF3LD55MSwfYlifNfFxLzriZRGfZD9zLRK8JTPwM7KtYWF8LD9zNRQeYTGgMzH7ZRdfJDGfdDF3LD5xJDGlrDF3FjBed6MUhEGvrWrnQl0ybWA9Fm9=",
+ "nurl": "https://dev.sparteo.com/event/sparteo/0a98964d-1cf9-4802-93e9-c59c18f497fa?d=kyGjrlVurDF3FlG8d7juZXMzNlGoZA06b75fJDG9dyF3LTd9LzPxLRHzMzFzMfwfdlifNfF9L7AlLzreYS96MTH9JTP7NRdtNRU4LS8lYTPwZTMlLRPyYTUfJDGjdEPfNfFvdzGzJWA8Y6Qob75fJDG8YSF3FirvJWe9rEHtY7xoZW49JzKuLSFsFmBiFgnfZCV7JmMwYXG9ZW1uY70tNgP9MRPfJDGwrSF3Fle9rEBzGTMBGTGCGTGCZCV7JmMwYXG9ZW1uY70tGTMBMRP9MDUyQmBeZ7UjLiZzZXG7ZXFtrC1td7VyrlVyJWGoZCQobldjLiZzZXG7ZXGUb8MjdmZjdiGoZCQoblrDYW4uZXFfJDGfdmFfNfFfJDGuhWPfNfGjYlY4ZTi6ZD8iMCMeJTQeLRKtNWL9YS8iLzK8LTPwMzL7ZRYfJDGwhWPfNfGjYlY4ZTi6ZD8iMCMeJTQeLRKtNWL9YS8iLzK8LTPwMzL7ZRYfJDGib6LfNfGtYWMOUyFsFlQfFgnfrW4qbl06bfFsFmVib75fNfG8bltub6ruFfwfrWQ9FgnfZCVzh6QvdDFsFlAfrDF3WyGzd6HtY70tYl1tbW0uZXj9hXojdj0eXzUwFfwfd6MwJWMvbWGvJXB8YlZ8rEVyZV0jbXB9kV18LDFsFlrsb7GebDFsFmBfdy8fhWPtdlA9ZV0OPV1xLRHwFfwfdlV7ZW48ZV0BXzKwLDFsFlGoZD8vdEQaT6B9hW8KXzP8Fj9sFmByZWQzFgo2Flrsb7GebKxjrlVPdlVPdlViFgnxJDGobXBLZXZjbAByZVByZWPfNgKsFlMyZWAadCVyX7jtdDF3LS58MzYsFlGobCxeYlxjX6Bjdj0obXHfNgKsFlVzrCjtYXQjZA0yZXZjbmVjFgnwJgF5NSwfrljvrXMskV0yZXZjbmVadlA9hW1fNgKsFmrobj0yYXQjFgnwJgHyMSwfbWAyZ7juX6ByZWPfNgHuLRH8JDGfhWQadEGoY7UfNgHuLX9sFlGohSF3FlQorf8fYW4uZXFfJDGwbELfNjsfLzHwkRF8LDGrJDGwbXPfNjsfYlAublVyFj9sFlVsdyF3WyFzLRB5LgUwFfwfLzHwkRKwLDFsFgLwLEcxLgUfJDFzLRB5LTUwFj9sFlVtrDF3WyGfYW4uZXFfXSwfYlQzFgobFlAikW08bCjqZSFsFlAwdC4jkEVzFfwfZ6GoZDFsFl0lrC8jZCjeFfwfb74jrCAmFfwfb6BjbmcfJDGyhXMjFfwfdmVfhWMvbfFsFmMtYXG9YWQzZXG7ZXFfJDGzbWjsZXrebmQjZDFsFmVudmVskSGrJDGtYfF3ZlAsd7UsFlZ9dyF3WyGPYXMzVCeyb6VmhKZvdl8erDGrJDGydyF3LD55MSwfYlifNfFxLzriZRGfZD9zLRK8JTPwM7KtYWF8LD9zNRQeYTGgMzH7ZRdfJDGfdDF3LD5xJDGlrDF3FjBed6MUhEGvrWrnQl0ybWA9Fm9=",
"adm": "",
"adomain": [
"testpage-ad"
diff --git a/adapters/sparteo/sparteotest/supplemental/filter-empty-seat-bids.json b/adapters/sparteo/sparteotest/supplemental/filter-empty-seat-bids.json
index ded36e22d4f..ba66d5820b4 100644
--- a/adapters/sparteo/sparteotest/supplemental/filter-empty-seat-bids.json
+++ b/adapters/sparteo/sparteotest/supplemental/filter-empty-seat-bids.json
@@ -19,12 +19,15 @@
}
}
}
- ]
+ ],
+ "site": {
+ "domain": "dev.sparteo.com"
+ }
},
"httpCalls": [
{
"expectedRequest": {
- "uri": "https://bid-test.sparteo.com/s2s-auction",
+ "uri": "https://bid-test.sparteo.com/s2s-auction?network_id=networkId&site_domain=dev.sparteo.com",
"body": {
"id": "test-request-id",
"imp": [
@@ -47,7 +50,17 @@
}
}
}
- ]
+ ],
+ "site": {
+ "domain": "dev.sparteo.com",
+ "publisher": {
+ "ext": {
+ "params": {
+ "networkId": "networkId"
+ }
+ }
+ }
+ }
},
"impIDs": [
"div-banner-id"
diff --git a/adapters/sparteo/sparteotest/supplemental/filter-invalid-bid-type.json b/adapters/sparteo/sparteotest/supplemental/filter-invalid-bid-type.json
index 851fcf1860d..ab31a8e67e0 100644
--- a/adapters/sparteo/sparteotest/supplemental/filter-invalid-bid-type.json
+++ b/adapters/sparteo/sparteotest/supplemental/filter-invalid-bid-type.json
@@ -19,12 +19,15 @@
}
}
}
- ]
+ ],
+ "site": {
+ "domain": "dev.sparteo.com"
+ }
},
"httpCalls": [
{
"expectedRequest": {
- "uri": "https://bid-test.sparteo.com/s2s-auction",
+ "uri": "https://bid-test.sparteo.com/s2s-auction?network_id=networkId&site_domain=dev.sparteo.com",
"body": {
"id": "test-request-id",
"imp": [
@@ -47,7 +50,17 @@
}
}
}
- ]
+ ],
+ "site": {
+ "domain": "dev.sparteo.com",
+ "publisher": {
+ "ext": {
+ "params": {
+ "networkId": "networkId"
+ }
+ }
+ }
+ }
},
"impIDs": ["div-banner-id"]
},
diff --git a/adapters/sparteo/sparteotest/supplemental/filter-no-seat-bids.json b/adapters/sparteo/sparteotest/supplemental/filter-no-seat-bids.json
index 21e3f356296..0660aee07c8 100644
--- a/adapters/sparteo/sparteotest/supplemental/filter-no-seat-bids.json
+++ b/adapters/sparteo/sparteotest/supplemental/filter-no-seat-bids.json
@@ -19,12 +19,15 @@
}
}
}
- ]
+ ],
+ "site": {
+ "domain": "dev.sparteo.com"
+ }
},
"httpCalls": [
{
"expectedRequest": {
- "uri": "https://bid-test.sparteo.com/s2s-auction",
+ "uri": "https://bid-test.sparteo.com/s2s-auction?network_id=networkId&site_domain=dev.sparteo.com",
"body": {
"id": "test-request-id",
"imp": [
@@ -47,7 +50,17 @@
}
}
}
- ]
+ ],
+ "site": {
+ "domain": "dev.sparteo.com",
+ "publisher": {
+ "ext": {
+ "params": {
+ "networkId": "networkId"
+ }
+ }
+ }
+ }
},
"impIDs": [
"div-banner-id"
diff --git a/adapters/sparteo/sparteotest/supplemental/invalid-bidder-ext.json b/adapters/sparteo/sparteotest/supplemental/invalid-bidder-ext.json
deleted file mode 100644
index 61d1d610025..00000000000
--- a/adapters/sparteo/sparteotest/supplemental/invalid-bidder-ext.json
+++ /dev/null
@@ -1,61 +0,0 @@
-{
- "mockBidRequest": {
- "id": "test-request-id",
- "imp": [
- {
- "id": "div-banner-id",
- "banner": {
- "topframe": 1,
- "format": [
- {
- "w": 300,
- "h": 250
- }
- ]
- },
- "ext": {
- "bidder": "not an object"
- }
- }
- ]
- },
- "httpCalls": [
- {
- "expectedRequest": {
- "uri": "https://bid-test.sparteo.com/s2s-auction",
- "body": {
- "id": "test-request-id",
- "imp": [
- {
- "id": "div-banner-id",
- "banner": {
- "topframe": 1,
- "format": [
- {
- "w": 300,
- "h": 250
- }
- ]
- },
- "ext": {
- "bidder": "not an object"
- }
- }
- ]
- },
- "ImpIDs": ["div-banner-id"]
- }}
- ],
- "expectedMakeRequestsErrors": [
- {
- "value": "^ignoring imp id=div-banner-id, error while decoding impExt",
- "comparison": "regex"
- }
- ],
- "expectedMakeBidsErrors": [
- {
- "value": "Unexpected status code: 0. Run with request.debug = 1 for more info",
- "comparison": "literal"
- }
- ]
-}
\ No newline at end of file
diff --git a/adapters/sparteo/sparteotest/supplemental/invalid-json-response.json b/adapters/sparteo/sparteotest/supplemental/invalid-json-response.json
index 12ad55425b9..adb997a5038 100644
--- a/adapters/sparteo/sparteotest/supplemental/invalid-json-response.json
+++ b/adapters/sparteo/sparteotest/supplemental/invalid-json-response.json
@@ -19,12 +19,15 @@
}
}
}
- ]
+ ],
+ "site": {
+ "domain": "dev.sparteo.com"
+ }
},
"httpCalls": [
{
"expectedRequest": {
- "uri": "https://bid-test.sparteo.com/s2s-auction",
+ "uri": "https://bid-test.sparteo.com/s2s-auction?network_id=networkId&site_domain=dev.sparteo.com",
"body": {
"id": "test-request-id",
"imp": [
@@ -47,7 +50,17 @@
}
}
}
- ]
+ ],
+ "site": {
+ "domain": "dev.sparteo.com",
+ "publisher": {
+ "ext": {
+ "params": {
+ "networkId": "networkId"
+ }
+ }
+ }
+ }
},
"impIDs": [
"div-banner-id"
diff --git a/adapters/sparteo/sparteotest/supplemental/invalid-publisher-ext.json b/adapters/sparteo/sparteotest/supplemental/invalid-publisher-ext.json
index 5d2bb2148c3..73a196772a3 100644
--- a/adapters/sparteo/sparteotest/supplemental/invalid-publisher-ext.json
+++ b/adapters/sparteo/sparteotest/supplemental/invalid-publisher-ext.json
@@ -21,12 +21,12 @@
}
],
"site": {
- "domain": "dev.sparteo.com:4444",
- "page": "https://dev.sparteo.com:4444/page/test/",
- "ref": "https://dev.sparteo.com:4444/page/test/",
+ "domain": "dev.sparteo.com",
+ "page": "https://dev.sparteo.com/page/test/",
+ "ref": "https://dev.sparteo.com/page/test/",
"publisher": {
"id": "sparteo",
- "domain": "dev.sparteo.com:4444",
+ "domain": "dev.sparteo.com",
"ext": "not an object"
}
}
@@ -34,7 +34,7 @@
"httpCalls": [
{
"expectedRequest": {
- "uri": "https://bid-test.sparteo.com/s2s-auction",
+ "uri": "https://bid-test.sparteo.com/s2s-auction?network_id=networkId&site_domain=dev.sparteo.com",
"body": {
"id": "test-request-id",
"imp": [
@@ -59,10 +59,10 @@
}
],
"site": {
- "domain": "dev.sparteo.com:4444",
- "page": "https://dev.sparteo.com:4444/page/test/",
+ "domain": "dev.sparteo.com",
+ "page": "https://dev.sparteo.com/page/test/",
"publisher": {
- "domain": "dev.sparteo.com:4444",
+ "domain": "dev.sparteo.com",
"ext": {
"params": {
"networkId": "networkId"
@@ -70,7 +70,7 @@
},
"id": "sparteo"
},
- "ref": "https://dev.sparteo.com:4444/page/test/"
+ "ref": "https://dev.sparteo.com/page/test/"
}
},
"impIDs": [
diff --git a/adapters/sparteo/sparteotest/supplemental/status_204.json b/adapters/sparteo/sparteotest/supplemental/status_204.json
index 171eec08ed6..7358403bf68 100644
--- a/adapters/sparteo/sparteotest/supplemental/status_204.json
+++ b/adapters/sparteo/sparteotest/supplemental/status_204.json
@@ -19,12 +19,15 @@
}
}
}
- ]
+ ],
+ "site": {
+ "domain": "dev.sparteo.com"
+ }
},
"httpCalls": [
{
"expectedRequest": {
- "uri": "https://bid-test.sparteo.com/s2s-auction",
+ "uri": "https://bid-test.sparteo.com/s2s-auction?network_id=networkId&site_domain=dev.sparteo.com",
"body": {
"id": "request-id",
"imp": [
@@ -47,7 +50,17 @@
}
}
}
- ]
+ ],
+ "site": {
+ "domain": "dev.sparteo.com",
+ "publisher": {
+ "ext": {
+ "params": {
+ "networkId": "networkId"
+ }
+ }
+ }
+ }
},
"impIDs": [
"div-banner-id"
diff --git a/adapters/sparteo/sparteotest/supplemental/status_400.json b/adapters/sparteo/sparteotest/supplemental/status_400.json
index 26f24b68be6..d97b7f083c8 100644
--- a/adapters/sparteo/sparteotest/supplemental/status_400.json
+++ b/adapters/sparteo/sparteotest/supplemental/status_400.json
@@ -19,12 +19,15 @@
}
}
}
- ]
+ ],
+ "site": {
+ "domain": "dev.sparteo.com"
+ }
},
"httpCalls": [
{
"expectedRequest": {
- "uri": "https://bid-test.sparteo.com/s2s-auction",
+ "uri": "https://bid-test.sparteo.com/s2s-auction?network_id=networkId&site_domain=dev.sparteo.com",
"body": {
"id": "request-id",
"imp": [
@@ -47,7 +50,17 @@
}
}
}
- ]
+ ],
+ "site": {
+ "domain": "dev.sparteo.com",
+ "publisher": {
+ "ext": {
+ "params": {
+ "networkId": "networkId"
+ }
+ }
+ }
+ }
},
"impIDs": [
"div-banner-id"
diff --git a/adapters/sparteo/sparteotest/supplemental/status_500.json b/adapters/sparteo/sparteotest/supplemental/status_500.json
index ec3c68e56b1..bee2affa482 100644
--- a/adapters/sparteo/sparteotest/supplemental/status_500.json
+++ b/adapters/sparteo/sparteotest/supplemental/status_500.json
@@ -19,12 +19,15 @@
}
}
}
- ]
+ ],
+ "site": {
+ "domain": "dev.sparteo.com"
+ }
},
"httpCalls": [
{
"expectedRequest": {
- "uri": "https://bid-test.sparteo.com/s2s-auction",
+ "uri": "https://bid-test.sparteo.com/s2s-auction?network_id=networkId&site_domain=dev.sparteo.com",
"body": {
"id": "request-id",
"imp": [
@@ -47,7 +50,17 @@
}
}
}
- ]
+ ],
+ "site": {
+ "domain": "dev.sparteo.com",
+ "publisher": {
+ "ext": {
+ "params": {
+ "networkId": "networkId"
+ }
+ }
+ }
+ }
},
"impIDs": [
"div-banner-id"
diff --git a/macros/macros.go b/macros/macros.go
index f24974b572a..22abaf94311 100644
--- a/macros/macros.go
+++ b/macros/macros.go
@@ -23,6 +23,10 @@ type EndpointTemplateParams struct {
SeatID string
TokenID string
PlacementID string
+ NetworkId string
+ SiteDomain string
+ AppDomain string
+ Bundle string
}
// UserSyncPrivacy specifies privacy policy macros, represented as strings, for user sync urls.
diff --git a/static/bidder-info/sparteo.yaml b/static/bidder-info/sparteo.yaml
index 1ad61ab0725..543d701da70 100644
--- a/static/bidder-info/sparteo.yaml
+++ b/static/bidder-info/sparteo.yaml
@@ -16,5 +16,5 @@ capabilities:
endpoint: "https://bid.sparteo.com/s2s-auction"
userSync:
iframe:
- url: "https://sync.sparteo.com/s2s_sync?gdpr={{.GDPR}}&gdpr_consent={{.GDPRConsent}}&us_privacy={{.USPrivacy}}&redirect_url={{.RedirectURL}}"
- supportCors: true
\ No newline at end of file
+ url: "https://sync.sparteo.com/s2s_sync?gdpr={{.GDPR}}&gdpr_consent={{.GDPRConsent}}&us_privacy={{.USPrivacy}}&gpp={{.GPP}}&gpp_sid={{.GPPSID}}&redirect_url={{.RedirectURL}}"
+ supportCors: true