Repository: prebid/prebid-server
Pull request #2799 (2023-05-24 08:23:44)

Fix: floors flakey test
**Current behaviour:** Floors test case fail at random since floor enforcement is based on `rand.Intn`. 
```
--- FAIL: TestEnforce (0.00s)
    enforce_test.go:665: 
        	Error Trace:	/home/runner/work/prebid-server/prebid-server/floors/enforce_test.go:665
        	Error:      	rejected bids don't match
        	Test:       	TestEnforce
```

**Expected behaviour:** Unit tests should be consistent for all runs 

**Solution:** Removed the unit test dependency on `rand.Intn` using `EnforceFloorsRate=0` 


Patch:
diff --git a/adapters/appnexus/appnexus.go b/adapters/appnexus/appnexus.go
index f70914a1..fed3a66a 100644
--- a/adapters/appnexus/appnexus.go
+++ b/adapters/appnexus/appnexus.go
@@ -13,7 +13,6 @@ import (
 	"github.com/prebid/openrtb/v19/adcom1"
 	"github.com/prebid/openrtb/v19/openrtb2"
 	"github.com/prebid/prebid-server/config"
-	"github.com/prebid/prebid-server/util/httputil"
 	"github.com/prebid/prebid-server/util/randomutil"
 
 	"github.com/prebid/prebid-server/adapters"
@@ -162,11 +161,11 @@ func (a *adapter) MakeRequests(request *openrtb2.BidRequest, reqInfo *adapters.E
 }
 
 func (a *adapter) MakeBids(internalRequest *openrtb2.BidRequest, externalRequest *adapters.RequestData, response *adapters.ResponseData) (*adapters.BidderResponse, []error) {
-	if httputil.IsResponseStatusCodeNoContent(response) {
+	if adapters.IsResponseStatusCodeNoContent(response) {
 		return nil, nil
 	}
 
-	if err := httputil.CheckResponseStatusCodeForErrors(response); err != nil {
+	if err := adapters.CheckResponseStatusCodeForErrors(response); err != nil {
 		return nil, []error{err}
 	}
 
@@ -353,6 +352,8 @@ func buildRequestImp(imp *openrtb2.Imp, appnexusExt *openrtb_ext.ExtImpAppnexus,
 		Keywords:          appnexusExt.Keywords.String(),
 		UsePmtRule:        appnexusExt.UsePaymentRule,
 		PrivateSizes:      appnexusExt.PrivateSizes,
+		ExtInvCode:        appnexusExt.ExtInvCode,
+		ExternalImpId:     appnexusExt.ExternalImpId,
 	}}
 
 	var err error
diff --git a/adapters/appnexus/models.go b/adapters/appnexus/models.go
index a3f6be99..afe6b748 100644
--- a/adapters/appnexus/models.go
+++ b/adapters/appnexus/models.go
@@ -12,6 +12,8 @@ type appnexusImpExtAppnexus struct {
 	TrafficSourceCode string          `json:"traffic_source_code,omitempty"`
 	UsePmtRule        *bool           `json:"use_pmt_rule,omitempty"`
 	PrivateSizes      json.RawMessage `json:"private_sizes,omitempty"`
+	ExtInvCode        string          `json:"ext_inv_code,omitempty"`
+	ExternalImpId     string          `json:"external_imp_id,omitempty"`
 }
 
 type appnexusImpExt struct {
diff --git a/adapters/emtv/emtv.go b/adapters/emtv/emtv.go
index 64101941..5dbd1e1b 100644
--- a/adapters/emtv/emtv.go
+++ b/adapters/emtv/emtv.go
@@ -11,7 +11,6 @@ import (
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
 	"github.com/prebid/prebid-server/openrtb_ext"
-	"github.com/prebid/prebid-server/util/httputil"
 )
 
 type adapter struct {
@@ -107,11 +106,11 @@ func (a *adapter) makeRequest(request *openrtb2.BidRequest) (*adapters.RequestDa
 }
 
 func (a *adapter) MakeBids(request *openrtb2.BidRequest, requestData *adapters.RequestData, responseData *adapters.ResponseData) (*adapters.BidderResponse, []error) {
-	if httputil.IsResponseStatusCodeNoContent(responseData) {
+	if adapters.IsResponseStatusCodeNoContent(responseData) {
 		return nil, nil
 	}
 
-	if err := httputil.CheckResponseStatusCodeForErrors(responseData); err != nil {
+	if err := adapters.CheckResponseStatusCodeForErrors(responseData); err != nil {
 		return nil, []error{err}
 	}
 
diff --git a/adapters/flipp/flipp.go b/adapters/flipp/flipp.go
index 2eca3e41..9705fa57 100644
--- a/adapters/flipp/flipp.go
+++ b/adapters/flipp/flipp.go
@@ -13,7 +13,6 @@ import (
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/openrtb_ext"
-	"github.com/prebid/prebid-server/util/httputil"
 )
 
 const (
@@ -174,11 +173,11 @@ func buildPrebidRequest(flippExtParams openrtb_ext.ImpExtFlipp, request *openrtb
 }
 
 func (a *adapter) MakeBids(request *openrtb2.BidRequest, requestData *adapters.RequestData, responseData *adapters.ResponseData) (*adapters.BidderResponse, []error) {
-	if httputil.IsResponseStatusCodeNoContent(responseData) {
+	if adapters.IsResponseStatusCodeNoContent(responseData) {
 		return nil, nil
 	}
 
-	if err := httputil.CheckResponseStatusCodeForErrors(responseData); err != nil {
+	if err := adapters.CheckResponseStatusCodeForErrors(responseData); err != nil {
 		return nil, []error{err}
 	}
 
diff --git a/adapters/frvradn/frvradn.go b/adapters/frvradn/frvradn.go
index 3954343e..4088bf9c 100644
--- a/adapters/frvradn/frvradn.go
+++ b/adapters/frvradn/frvradn.go
@@ -4,13 +4,13 @@ import (
 	"encoding/json"
 	"errors"
 	"fmt"
+	"strings"
+
 	"github.com/prebid/openrtb/v19/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
 	"github.com/prebid/prebid-server/openrtb_ext"
-	"github.com/prebid/prebid-server/util/httputil"
-	"strings"
 )
 
 type adapter struct {
@@ -76,11 +76,11 @@ func (a *adapter) MakeRequests(request *openrtb2.BidRequest, requestInfo *adapte
 }
 
 func (a *adapter) MakeBids(request *openrtb2.BidRequest, requestData *adapters.RequestData, responseData *adapters.ResponseData) (*adapters.BidderResponse, []error) {
-	if httputil.IsResponseStatusCodeNoContent(responseData) {
+	if adapters.IsResponseStatusCodeNoContent(responseData) {
 		return nil, nil
 	}
 
-	if err := httputil.CheckResponseStatusCodeForErrors(responseData); err != nil {
+	if err := adapters.CheckResponseStatusCodeForErrors(responseData); err != nil {
 		return nil, []error{err}
 	}
 
diff --git a/adapters/huaweiads/huaweiads.go b/adapters/huaweiads/huaweiads.go
index 4944fd5e..7867aefa 100644
--- a/adapters/huaweiads/huaweiads.go
+++ b/adapters/huaweiads/huaweiads.go
@@ -817,6 +817,9 @@ func getDeviceIDFromUserExt(device *device, openRTBRequest *openrtb2.BidRequest)
 			device.Gaid = deviceId.Gaid[0]
 			isValidDeviceId = true
 		}
+		if len(device.Gaid) > 0 {
+			isValidDeviceId = true
+		}
 		if len(deviceId.Imei) > 0 {
 			device.Imei = deviceId.Imei[0]
 			isValidDeviceId = true
diff --git a/adapters/openrtb_util.go b/adapters/openrtb_util.go
deleted file mode 100644
index f04c4829..00000000
--- a/adapters/openrtb_util.go
+++ /dev/null
@@ -1,36 +0,0 @@
-package adapters
-
-import (
-	"encoding/json"
-	"errors"
-	"fmt"
-
-	"github.com/prebid/openrtb/v19/openrtb2"
-	"github.com/prebid/prebid-server/openrtb_ext"
-)
-
-func ExtractReqExtBidderParamsMap(bidRequest *openrtb2.BidRequest) (map[string]json.RawMessage, error) {
-	if bidRequest == nil {
-		return nil, errors.New("error bidRequest should not be nil")
-	}
-
-	reqExt := &openrtb_ext.ExtRequest{}
-	if len(bidRequest.Ext) > 0 {
-		err := json.Unmarshal(bidRequest.Ext, &reqExt)
-		if err != nil {
-			return nil, fmt.Errorf("error decoding Request.ext : %s", err.Error())
-		}
-	}
-
-	if reqExt.Prebid.BidderParams == nil {
-		return nil, nil
-	}
-
-	var bidderParams map[string]json.RawMessage
-	err := json.Unmarshal(reqExt.Prebid.BidderParams, &bidderParams)
-	if err != nil {
-		return nil, err
-	}
-
-	return bidderParams, nil
-}
diff --git a/adapters/pwbid/pwbid.go b/adapters/pwbid/pwbid.go
index 4fac0b0d..21b564ff 100644
--- a/adapters/pwbid/pwbid.go
+++ b/adapters/pwbid/pwbid.go
@@ -9,7 +9,6 @@ import (
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
 	"github.com/prebid/prebid-server/openrtb_ext"
-	"github.com/prebid/prebid-server/util/httputil"
 )
 
 type adapter struct {
@@ -42,11 +41,11 @@ func (a *adapter) MakeRequests(request *openrtb2.BidRequest, requestInfo *adapte
 func (a *adapter) MakeBids(request *openrtb2.BidRequest, requestData *adapters.RequestData, responseData *adapters.ResponseData) (*adapters.BidderResponse, []error) {
 	var errors []error
 
-	if httputil.IsResponseStatusCodeNoContent(responseData) {
+	if adapters.IsResponseStatusCodeNoContent(responseData) {
 		return nil, nil
 	}
 
-	if err := httputil.CheckResponseStatusCodeForErrors(responseData); err != nil {
+	if err := adapters.CheckResponseStatusCodeForErrors(responseData); err != nil {
 		return nil, []error{err}
 	}
 
diff --git a/util/httputil/responseutil.go b/adapters/response.go
similarity index 70%
rename from util/httputil/responseutil.go
rename to adapters/response.go
index 14d085f6..080f4627 100644
--- a/util/httputil/responseutil.go
+++ b/adapters/response.go
@@ -1,14 +1,13 @@
-package httputil
+package adapters
 
 import (
 	"fmt"
 	"net/http"
 
-	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/errortypes"
 )
 
-func CheckResponseStatusCodeForErrors(response *adapters.ResponseData) error {
+func CheckResponseStatusCodeForErrors(response *ResponseData) error {
 	if response.StatusCode == http.StatusBadRequest {
 		return &errortypes.BadInput{
 			Message: fmt.Sprintf("Unexpected status code: %d. Run with request.debug = 1 for more info", response.StatusCode),
@@ -22,6 +21,6 @@ func CheckResponseStatusCodeForErrors(response *adapters.ResponseData) error {
 	return nil
 }
 
-func IsResponseStatusCodeNoContent(response *adapters.ResponseData) bool {
+func IsResponseStatusCodeNoContent(response *ResponseData) bool {
 	return response.StatusCode == http.StatusNoContent
 }
diff --git a/adapters/sharethrough/sharethrough.go b/adapters/sharethrough/sharethrough.go
index 8ec31fe9..f797bfe4 100644
--- a/adapters/sharethrough/sharethrough.go
+++ b/adapters/sharethrough/sharethrough.go
@@ -130,20 +130,37 @@ func (a *adapter) MakeBids(request *openrtb2.BidRequest, requestData *adapters.R
 
 	bidderResponse := adapters.NewBidderResponse()
 	bidderResponse.Currency = "USD"
+	var errors []error
 
 	for _, seatBid := range bidResp.SeatBid {
 		for i := range seatBid.Bid {
-			bidType := openrtb_ext.BidTypeBanner
-			if bidReq.Imp[0].Video != nil {
-				bidType = openrtb_ext.BidTypeVideo
+			bid := &seatBid.Bid[i]
+			bidType, err := getMediaTypeForBid(*bid)
+			if err != nil {
+				errors = append(errors, err)
 			}
 
 			bidderResponse.Bids = append(bidderResponse.Bids, &adapters.TypedBid{
 				BidType: bidType,
-				Bid:     &seatBid.Bid[i],
+				Bid:     bid,
 			})
 		}
 	}
 
-	return bidderResponse, nil
+	return bidderResponse, errors
+}
+
+func getMediaTypeForBid(bid openrtb2.Bid) (openrtb_ext.BidType, error) {
+
+	if bid.Ext != nil {
+		var bidExt openrtb_ext.ExtBid
+		err := json.Unmarshal(bid.Ext, &bidExt)
+		if err == nil && bidExt.Prebid != nil {
+			return openrtb_ext.ParseBidType(string(bidExt.Prebid.Type))
+		}
+	}
+
+	return "", &errortypes.BadServerResponse{
+		Message: fmt.Sprintf("Failed to parse bid mediatype for impression \"%s\"", bid.ImpID),
+	}
 }
diff --git a/adapters/smaato/smaato.go b/adapters/smaato/smaato.go
index debf4669..e0892ef5 100644
--- a/adapters/smaato/smaato.go
+++ b/adapters/smaato/smaato.go
@@ -17,7 +17,7 @@ import (
 	"github.com/prebid/prebid-server/util/timeutil"
 )
 
-const clientVersion = "prebid_server_0.5"
+const clientVersion = "prebid_server_0.6"
 
 type adMarkupType string
 
@@ -464,6 +464,11 @@ func setImpForAdspace(imp *openrtb2.Imp) error {
 		return &errortypes.BadInput{Message: "Missing adspaceId parameter."}
 	}
 
+	impExt, err := makeImpExt(&imp.Ext)
+	if err != nil {
+		return err
+	}
+
 	if imp.Banner != nil {
 		bannerCopy, err := setBannerDimension(imp.Banner)
 		if err != nil {
@@ -471,13 +476,13 @@ func setImpForAdspace(imp *openrtb2.Imp) error {
 		}
 		imp.Banner = bannerCopy
 		imp.TagID = adSpaceID
-		imp.Ext = nil
+		imp.Ext = impExt
 		return nil
 	}
 
 	if imp.Video != nil || imp.Native != nil {
 		imp.TagID = adSpaceID
-		imp.Ext = nil
+		imp.Ext = impExt
 		return nil
 	}
 
@@ -494,6 +499,11 @@ func setImpForAdBreak(imps []openrtb2.Imp) error {
 		return &errortypes.BadInput{Message: "Missing adbreakId parameter."}
 	}
 
+	impExt, err := makeImpExt(&imps[0].Ext)
+	if err != nil {
+		return err
+	}
+
 	for i := range imps {
 		imps[i].TagID = adBreakID
 		imps[i].Ext = nil
@@ -506,9 +516,33 @@ func setImpForAdBreak(imps []openrtb2.Imp) error {
 		imps[i].Video = &videoCopy
 	}
 
+	imps[0].Ext = impExt
+
 	return nil
 }
 
+func makeImpExt(impExtRaw *json.RawMessage) (json.RawMessage, error) {
+	var impExt openrtb_ext.ExtImpExtraDataSmaato
+
+	if err := json.Unmarshal(*impExtRaw, &impExt); err != nil {
+		return nil, &errortypes.BadInput{Message: "Invalid imp.ext."}
+	}
+
+	if impExtSkadnRaw := impExt.Skadn; impExtSkadnRaw != nil {
+		var impExtSkadn map[string]json.RawMessage
+
+		if err := json.Unmarshal(impExtSkadnRaw, &impExtSkadn); err != nil {
+			return nil, &errortypes.BadInput{Message: "Invalid imp.ext.skadn."}
+		}
+	}
+
+	if impExtJson, err := json.Marshal(impExt); string(impExtJson) != "{}" {
+		return impExtJson, err
+	} else {
+		return nil, nil
+	}
+}
+
 func setBannerDimension(banner *openrtb2.Banner) (*openrtb2.Banner, error) {
 	if banner.W != nil && banner.H != nil {
 		return banner, nil
diff --git a/adapters/zeta_global_ssp/zeta_global_ssp.go b/adapters/zeta_global_ssp/zeta_global_ssp.go
index 8e80d77d..7a5f3395 100644
--- a/adapters/zeta_global_ssp/zeta_global_ssp.go
+++ b/adapters/zeta_global_ssp/zeta_global_ssp.go
@@ -10,7 +10,6 @@ import (
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
 	"github.com/prebid/prebid-server/openrtb_ext"
-	"github.com/prebid/prebid-server/util/httputil"
 )
 
 type adapter struct {
@@ -45,11 +44,11 @@ func (a *adapter) MakeRequests(request *openrtb2.BidRequest, requestInfo *adapte
 }
 
 func (a *adapter) MakeBids(request *openrtb2.BidRequest, requestData *adapters.RequestData, responseData *adapters.ResponseData) (*adapters.BidderResponse, []error) {
-	if httputil.IsResponseStatusCodeNoContent(responseData) {
+	if adapters.IsResponseStatusCodeNoContent(responseData) {
 		return nil, nil
 	}
 
-	if err := httputil.CheckResponseStatusCodeForErrors(responseData); err != nil {
+	if err := adapters.CheckResponseStatusCodeForErrors(responseData); err != nil {
 		return nil, []error{err}
 	}
 
diff --git a/endpoints/cookie_sync.go b/endpoints/cookie_sync.go
index 8b930962..fa154bbc 100644
--- a/endpoints/cookie_sync.go
+++ b/endpoints/cookie_sync.go
@@ -12,6 +12,8 @@ import (
 
 	"github.com/golang/glog"
 	"github.com/julienschmidt/httprouter"
+	gpplib "github.com/prebid/go-gpp"
+	gppConstants "github.com/prebid/go-gpp/constants"
 	accountService "github.com/prebid/prebid-server/account"
 	"github.com/prebid/prebid-server/analytics"
 	"github.com/prebid/prebid-server/config"
@@ -25,6 +27,7 @@ import (
 	gppPrivacy "github.com/prebid/prebid-server/privacy/gpp"
 	"github.com/prebid/prebid-server/stored_requests"
 	"github.com/prebid/prebid-server/usersync"
+	stringutil "github.com/prebid/prebid-server/util/stringutil"
 )
 
 var (
@@ -125,40 +128,12 @@ func (c *cookieSyncEndpoint) parseRequest(r *http.Request) (usersync.Request, pr
 		return usersync.Request{}, privacy.Policies{}, combineErrors(fetchErrs)
 	}
 
-	var gdprString string
-	if request.GDPR != nil {
-		gdprString = strconv.Itoa(*request.GDPR)
-	}
-	gdprSignal, err := gdpr.StrSignalParse(gdprString)
-	if err != nil {
-		return usersync.Request{}, privacy.Policies{}, err
-	}
-
-	if request.GDPRConsent == "" {
-		if gdprSignal == gdpr.SignalYes {
-			return usersync.Request{}, privacy.Policies{}, errCookieSyncGDPRConsentMissing
-		}
-
-		if gdprSignal == gdpr.SignalAmbiguous && gdpr.SignalNormalize(gdprSignal, c.privacyConfig.gdprConfig.DefaultValue) == gdpr.SignalYes {
-			return usersync.Request{}, privacy.Policies{}, errCookieSyncGDPRConsentMissingSignalAmbiguous
-		}
-	}
-
 	request = c.setLimit(request, account.CookieSync)
 	request = c.setCooperativeSync(request, account.CookieSync)
 
-	privacyPolicies := privacy.Policies{
-		GDPR: gdprPrivacy.Policy{
-			Signal:  gdprString,
-			Consent: request.GDPRConsent,
-		},
-		CCPA: ccpa.Policy{
-			Consent: request.USPrivacy,
-		},
-		GPP: gppPrivacy.Policy{
-			Consent: request.GPP,
-			RawSID:  request.GPPSid,
-		},
+	privacyPolicies, gdprSignal, err := extractPrivacyPolicies(request, c.privacyConfig.gdprConfig.DefaultValue)
+	if err != nil {
+		return usersync.Request{}, privacy.Policies{}, err
 	}
 
 	ccpaParsedPolicy := ccpa.ParsedPolicy{}
@@ -178,7 +153,7 @@ func (c *cookieSyncEndpoint) parseRequest(r *http.Request) (usersync.Request, pr
 	}
 
 	gdprRequestInfo := gdpr.RequestInfo{
-		Consent:    request.GDPRConsent,
+		Consent:    privacyPolicies.GDPR.Consent,
 		GDPRSignal: gdprSignal,
 	}
 
@@ -201,6 +176,82 @@ func (c *cookieSyncEndpoint) parseRequest(r *http.Request) (usersync.Request, pr
 	return rx, privacyPolicies, nil
 }
 
+func extractPrivacyPolicies(request cookieSyncRequest, usersyncDefaultGDPRValue string) (privacy.Policies, gdpr.Signal, error) {
+	// GDPR
+	gppSID, err := stringutil.StrToInt8Slice(request.GPPSid)
+	if err != nil {
+		return privacy.Policies{}, gdpr.SignalNo, err
+	}
+
+	gdprSignal, gdprString, err := extractGDPRSignal(request.GDPR, gppSID)
+	if err != nil {
+		return privacy.Policies{}, gdpr.SignalNo, err
+	}
+
+	var gpp gpplib.GppContainer
+	if len(request.GPP) > 0 {
+		var err error
+		gpp, err = gpplib.Parse(request.GPP)
+		if err != nil {
+			return privacy.Policies{}, gdpr.SignalNo, err
+		}
+	}
+
+	gdprConsent := request.GDPRConsent
+	if i := gppPrivacy.IndexOfSID(gpp, gppConstants.SectionTCFEU2); i >= 0 {
+		gdprConsent = gpp.Sections[i].GetValue()
+	}
+
+	if gdprConsent == "" {
+		if gdprSignal == gdpr.SignalYes {
+			return privacy.Policies{}, gdpr.SignalNo, errCookieSyncGDPRConsentMissing
+		}
+
+		if gdprSignal == gdpr.SignalAmbiguous && gdpr.SignalNormalize(gdprSignal, usersyncDefaultGDPRValue) == gdpr.SignalYes {
+			return privacy.Policies{}, gdpr.SignalNo, errCookieSyncGDPRConsentMissingSignalAmbiguous
+		}
+	}
+
+	// CCPA
+	ccpaString, err := ccpa.SelectCCPAConsent(request.USPrivacy, gpp, gppSID)
+	if err != nil {
+		return privacy.Policies{}, gdpr.SignalNo, err
+	}
+
+	return privacy.Policies{
+		GDPR: gdprPrivacy.Policy{
+			Signal:  gdprString,
+			Consent: gdprConsent,
+		},
+		CCPA: ccpa.Policy{
+			Consent: ccpaString,
+		},
+		GPP: gppPrivacy.Policy{
+			Consent: request.GPP,
+			RawSID:  request.GPPSid,
+		},
+	}, gdprSignal, nil
+}
+
+func extractGDPRSignal(requestGDPR *int, gppSID []int8) (gdpr.Signal, string, error) {
+	if len(gppSID) > 0 {
+		if gppPrivacy.IsSIDInList(gppSID, gppConstants.SectionTCFEU2) {
+			return gdpr.SignalYes, strconv.Itoa(int(gdpr.SignalYes)), nil
+		}
+		return gdpr.SignalNo, strconv.Itoa(int(gdpr.SignalNo)), nil
+	}
+
+	if requestGDPR == nil {
+		return gdpr.SignalAmbiguous, "", nil
+	}
+
+	gdprSignal, err := gdpr.IntSignalParse(*requestGDPR)
+	if err != nil {
+		return gdpr.SignalAmbiguous, strconv.Itoa(*requestGDPR), err
+	}
+	return gdprSignal, strconv.Itoa(*requestGDPR), nil
+}
+
 func (c *cookieSyncEndpoint) writeParseRequestErrorMetrics(err error) {
 	switch err {
 	case errCookieSyncAccountBlocked:
diff --git a/exchange/utils.go b/exchange/utils.go
index de74c10d..7145e72b 100644
--- a/exchange/utils.go
+++ b/exchange/utils.go
@@ -4,6 +4,7 @@ import (
 	"bytes"
 	"context"
 	"encoding/json"
+	"errors"
 	"fmt"
 	"math/rand"
 
@@ -13,7 +14,6 @@ import (
 	gppConstants "github.com/prebid/go-gpp/constants"
 	"github.com/prebid/openrtb/v19/openrtb2"
 
-	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/firstpartydata"
 	"github.com/prebid/prebid-server/gdpr"
@@ -232,6 +232,32 @@ func extractLMT(orig *openrtb2.BidRequest, privacyConfig config.Privacy) privacy
 	}
 }
 
+func ExtractReqExtBidderParamsMap(bidRequest *openrtb2.BidRequest) (map[string]json.RawMessage, error) {
+	if bidRequest == nil {
+		return nil, errors.New("error bidRequest should not be nil")
+	}
+
+	reqExt := &openrtb_ext.ExtRequest{}
+	if len(bidRequest.Ext) > 0 {
+		err := json.Unmarshal(bidRequest.Ext, &reqExt)
+		if err != nil {
+			return nil, fmt.Errorf("error decoding Request.ext : %s", err.Error())
+		}
+	}
+
+	if reqExt.Prebid.BidderParams == nil {
+		return nil, nil
+	}
+
+	var bidderParams map[string]json.RawMessage
+	err := json.Unmarshal(reqExt.Prebid.BidderParams, &bidderParams)
+	if err != nil {
+		return nil, err
+	}
+
+	return bidderParams, nil
+}
+
 func getAuctionBidderRequests(auctionRequest AuctionRequest,
 	requestExt *openrtb_ext.ExtRequest,
 	bidderToSyncerKey map[string]string,
@@ -246,7 +272,7 @@ func getAuctionBidderRequests(auctionRequest AuctionRequest,
 		return nil, []error{err}
 	}
 
-	bidderParamsInReqExt, err := adapters.ExtractReqExtBidderParamsMap(req.BidRequest)
+	bidderParamsInReqExt, err := ExtractReqExtBidderParamsMap(req.BidRequest)
 	if err != nil {
 		return nil, []error{err}
 	}
diff --git a/openrtb_ext/imp_appnexus.go b/openrtb_ext/imp_appnexus.go
index c1f1a856..d9549e74 100644
--- a/openrtb_ext/imp_appnexus.go
+++ b/openrtb_ext/imp_appnexus.go
@@ -23,8 +23,10 @@ type ExtImpAppnexus struct {
 	UsePaymentRule           *bool                  `json:"use_pmt_rule"`
 	DeprecatedUsePaymentRule *bool                  `json:"use_payment_rule"`
 	// At this time we do no processing on the private sizes, so just leaving it as a JSON blob.
-	PrivateSizes json.RawMessage `json:"private_sizes"`
-	AdPodId      bool            `json:"generate_ad_pod_id"`
+	PrivateSizes  json.RawMessage `json:"private_sizes"`
+	AdPodId       bool            `json:"generate_ad_pod_id"`
+	ExtInvCode    string          `json:"ext_inv_code"`
+	ExternalImpId string          `json:"external_imp_id"`
 }
 
 type ExtImpAppnexusKeywords string
diff --git a/openrtb_ext/imp_smaato.go b/openrtb_ext/imp_smaato.go
index bb92b318..fb326100 100644
--- a/openrtb_ext/imp_smaato.go
+++ b/openrtb_ext/imp_smaato.go
@@ -1,12 +1,19 @@
 package openrtb_ext
 
+import "encoding/json"
+
 // ExtImpSmaato defines the contract for bidrequest.imp[i].ext.prebid.bidder.smaato
 // PublisherId and AdSpaceId are mandatory parameters for non adpod (long-form video) requests, others are optional parameters
 // PublisherId and AdBreakId are mandatory parameters for adpod (long-form video) requests, others are optional parameters
-// AdSpaceId is identifier for specific ad placement or ad tag
-// AdBreakId is identifier for specific ad placement or ad tag
+// AdSpaceId is the identifier for specific ad placement or ad tag
+// AdBreakId is the identifier for specific ad placement or ad tag
 type ExtImpSmaato struct {
 	PublisherID string `json:"publisherId"`
 	AdSpaceID   string `json:"adspaceId"`
 	AdBreakID   string `json:"adbreakId"`
 }
+
+// ExtImpExtraDataSmaato defines extra properties from imp[i].ext object
+type ExtImpExtraDataSmaato struct {
+	Skadn json.RawMessage `json:"skadn,omitempty"`
+}
diff --git a/static/bidder-info/sharethrough.yaml b/static/bidder-info/sharethrough.yaml
index 0a8453d5..0b3479f5 100644
--- a/static/bidder-info/sharethrough.yaml
+++ b/static/bidder-info/sharethrough.yaml
@@ -7,10 +7,12 @@ capabilities:
     mediaTypes:
       - banner
       - video
+      - native
   site:
     mediaTypes:
       - banner
       - video
+      - native
 userSync:
   redirect:
     url: https://match.sharethrough.com/FGMrCMMc/v1?redirectUri={{.RedirectURL}}
diff --git a/static/bidder-params/appnexus.json b/static/bidder-params/appnexus.json
index 27b9bfe9..6a9a5d7d 100644
--- a/static/bidder-params/appnexus.json
+++ b/static/bidder-params/appnexus.json
@@ -103,6 +103,14 @@
         "required": [ "w", "h"]
       },
       "description": "Private sizes (ex: [{\"w\": 300, \"h\": 250},{...}]), experimental, may not be supported."
+    },
+    "ext_inv_code" : {
+      "type": "string",
+      "description": "Specifies predefined value passed on the query string that can be used in reporting"
+    },
+    "external_imp_id" : {
+      "type": "string",
+      "description": "Unique identifier of an externally generated auction"
     }
   },
 


Test patch:
diff --git a/adapters/appnexus/appnexustest/exemplary/optional-params.json b/adapters/appnexus/appnexustest/exemplary/optional-params.json
index ae7e9ff3..e105d6e1 100644
--- a/adapters/appnexus/appnexustest/exemplary/optional-params.json
+++ b/adapters/appnexus/appnexustest/exemplary/optional-params.json
@@ -28,7 +28,9 @@
               {"key": "valueless"}
             ],
             "use_pmt_rule": true,
-            "private_sizes": [{"w": 300, "h": 250}]
+            "private_sizes": [{"w": 300, "h": 250}],
+            "ext_inv_code": "invCode",
+            "external_imp_id": "impId"
           }
         }
       }
@@ -66,7 +68,9 @@
                   "keywords": "foo=bar,foo=baz,valueless",
                   "traffic_source_code": "trafficSource",
                   "use_pmt_rule": true,
-                  "private_sizes": [{"w": 300, "h": 250}]
+                  "private_sizes": [{"w": 300, "h": 250}],
+                  "ext_inv_code": "invCode",
+                  "external_imp_id": "impId"
                 }
               }
             }
diff --git a/adapters/appnexus/params_test.go b/adapters/appnexus/params_test.go
index db94e3f2..ed9adedc 100644
--- a/adapters/appnexus/params_test.go
+++ b/adapters/appnexus/params_test.go
@@ -53,6 +53,8 @@ var validParams = []string{
 	`{"placement_id":123, "keywords":"foo=bar,foo=baz"}`,
 	`{"placement_id":123, "keywords":{"genre": ["rock", "pop"], "pets": ["dog"]}}`,
 	`{"placement_id":123, "use_pmt_rule": true, "private_sizes": [{"w": 300, "h":250}]}`,
+	`{"placementId":123, "ext_inv_code": "invCode"}`,
+	`{"placementId":123, "external_imp_id": "impId"}`,
 }
 
 var invalidParams = []string{
@@ -78,4 +80,6 @@ var invalidParams = []string{
 	`{"placement_id":123, "use_pmt_rule": "true"}`,
 	`{"placement_id":123, "private_sizes": [[300,250]]}`,
 	`{"placement_id":123, "private_sizes": [{"w": "300", "h": "250"}]}`,
+	`{"placementId":123, "ext_inv_code": 1}`,
+	`{"placementId":123, "external_imp_id": 2}`,
 }
diff --git a/adapters/huaweiads/huaweiadstest/exemplary/banner1_without_userext.json b/adapters/huaweiads/huaweiadstest/exemplary/banner1_without_userext.json
new file mode 100644
index 00000000..9d944484
--- /dev/null
+++ b/adapters/huaweiads/huaweiadstest/exemplary/banner1_without_userext.json
@@ -0,0 +1,251 @@
+{
+  "mockBidRequest": {
+    "id": "test-req-id",
+    "imp": [
+      {
+        "id": "test-imp-id",
+        "banner": {
+          "format": [
+            {
+              "w": 300,
+              "h": 250
+            }
+          ],
+          "w": 300,
+          "h": 250
+        },
+        "ext": {
+          "bidder": {
+            "slotid": "m8x9x3rzff",
+            "adtype": "banner",
+            "publisherid": "123",
+            "signkey": "signkey",
+            "keyid": "41",
+            "isTestAuthorization": "true"
+          }
+        }
+      }
+    ],
+    "app": {
+      "bundle": "com.example.p1",
+      "name": "Huawei Browser",
+      "ver": "9.1.0.301",
+      "content": {
+        "language": "zh"
+      }
+    },
+    "device": {
+      "ua": "useragent",
+      "h": 1920,
+      "language": "zh",
+      "model": "COL-TEST",
+      "os": "android",
+      "osv": "10.0.0",
+      "devicetype": 4,
+      "make": "huawei",
+      "w": 1080,
+      "ip": "ip",
+      "ifa": "e4fe9bde-caa0-47b6-908d-ffba3fa184f2",
+      "pxratio": 23.01,
+      "mccmnc": "460",
+      "geo": {
+        "country": "CHN"
+      }
+    },
+    "user": {
+      "ext": {
+        "data": {
+          "clientTime": [
+            "2018-11-02 16:34:07.981+1300"
+          ]
+        },
+        "consent": "CPaYLJBPaYLJBIPAAAENCSCgAPAAAAAAAAAAGsQAQGsAAAAA.YAAAAAAAAAA"
+      }
+    },
+    "regs": {
+      "coppa": 1
+    },
+    "ext": {
+    }
+  },
+  "httpcalls": [
+    {
+      "expectedRequest": {
+        "uri": "https://acd.op.hicloud.com/ppsadx/getResult",
+        "headers": {
+          "Accept": [
+            "application/json"
+          ],
+          "Content-Type": [
+            "application/json;charset=utf-8"
+          ],
+          "User-Agent": [
+            "useragent"
+          ],
+          "Authorization": [
+            "Digest username=123,realm=ppsadx/getResult,nonce=1629473330823,response=d1d61a13a83e1468aa4dff5c8a6cee0b8b381173ca3eb6fa9b313937684d87c0,algorithm=HmacSHA256,usertype=1,keyid=41"
+          ]
+        },
+        "body": {
+          "app": {
+            "lang": "zh",
+            "country": "CN",
+            "name": "Huawei Browser",
+            "pkgname": "com.example.pkgname1",
+            "version": "9.1.0.301"
+          },
+          "multislot": [
+            {
+              "adtype": 8,
+              "slotid": "m8x9x3rzff",
+              "test": 1,
+              "format": [
+                {
+                  "w": 300,
+                  "h": 250
+                }
+              ],
+              "w": 300,
+              "h": 250
+            }
+          ],
+          "device": {
+            "height": 1920,
+            "language": "zh",
+            "os": "android",
+            "type": 4,
+            "ip": "ip",
+            "localeCountry": "CN",
+            "pxratio": 23.01,
+            "width": 1080,
+            "clientTime": "2018-11-02 16:34:07.981+1300",
+            "gaid": "e4fe9bde-caa0-47b6-908d-ffba3fa184f2",
+            "useragent": "useragent",
+            "version": "10.0.0",
+            "maker": "huawei",
+            "model": "COL-TEST",
+            "belongCountry": "CN"
+          },
+          "geo": {
+          },
+          "network": {
+            "type": 0
+          },
+          "regs": {
+            "coppa": 1
+          },
+          "consent": "CPaYLJBPaYLJBIPAAAENCSCgAPAAAAAAAAAAGsQAQGsAAAAA.YAAAAAAAAAA",
+          "version": "3.4",
+          "clientAdRequestId": "test-req-id"
+        }
+      },
+      "mockResponse": {
+        "status": 200,
+        "body": {
+          "ctrlSwitchs": "0",
+          "dsp1cost": 61,
+          "dspcost": 108,
+          "multiad": [
+            {
+              "adtype": 8,
+              "brsetting": "Y",
+              "content": [
+                {
+                  "clickActionList": [
+                    1
+                  ],
+                  "contentid": "58025103",
+                  "creativetype": 2,
+                  "ctrlSwitchs": "001011001001010112",
+                  "endtime": 1621428898335,
+                  "filterList": [
+                    3
+                  ],
+                  "interactiontype": 1,
+                  "landingTitle": 1,
+                  "metaData": {
+                    "adSign": "2",
+                    "appPromotionChannel": "401721412",
+                    "clickUrl": "https://ads.huawei.com/usermgtportal/home/index.html#/",
+                    "imageInfo": [
+                      {
+                        "checkSha256Flag": 1,
+                        "height": 300,
+                        "imageType": "img",
+                        "sha256": "f5d8487cddaecec45b73fc078649478c80ec646bfec8ed7da4ff931f90eab232",
+                        "url": "https://ads.huawei.com/usermgtportal/home/img/huawei_logo_black.aaec817d.svg",
+                        "width": 250
+                      }
+                    ],
+                    "label": "Banner_API",
+                    "landingPageType": "3"
+                  },
+                  "monitor": [
+                    {
+                      "eventType": "click",
+                      "url": [
+                        "http://test/click1",
+                        "http://test/click2",
+                        "http://test/click3"
+                      ]
+                    },
+                    {
+                      "eventType": "imp",
+                      "url": [
+                        "http://test/imp1",
+                        "http://test/imp2",
+                        "http://test/imp3"
+                      ]
+                    }
+                  ],
+                  "paramfromserver": {
+                    "a": "1||test",
+                    "sig": "",
+                    "t": "99990101235959"
+                  },
+                  "price": 2.8,
+                  "starttime": 1621267200000,
+                  "taskid": "48017658"
+                }
+              ],
+              "retcode30": 200,
+              "slotid": "m8x9x3rzff"
+            }
+          ],
+          "noReportAdTypeEventList": [
+            {
+              "adType": 8,
+              "eventTypeList": [
+                "exception_6"
+              ]
+            }
+          ],
+          "retcode": 200,
+          "totalCacheSize": 300
+        }
+      }
+    }
+  ],
+  "expectedBidResponses": [
+    {
+      "currency": "USD",
+      "bids": [
+        {
+          "bid": {
+            "adm": "<style> html, body  { margin: 0; padding: 0; width: 100%; height: 100%; vertical-align: middle; }  html  { display: table; }  body { display: table-cell; vertical-align: middle; text-align: center; -webkit-text-size-adjust: none; }  </style> <span class=\"title-link advertiser_label\"></span> <a href='https://ads.huawei.com/usermgtportal/home/index.html#/' style=\"text-decoration:none\" onclick=sendGetReq()> <img src='https://ads.huawei.com/usermgtportal/home/img/huawei_logo_black.aaec817d.svg' width='250' height='300'/> </a> <img height=\"1\" width=\"1\" src='http://test/imp1' >  <img height=\"1\" width=\"1\" src='http://test/imp2' >  <img height=\"1\" width=\"1\" src='http://test/imp3' >  <script type=\"text/javascript\">var dspClickTrackings = [\"http://test/click1\",\"http://test/click2\",\"http://test/click3\"];function sendGetReq() {sendSomeGetReq(dspClickTrackings)}function sendOneGetReq(url) {var req = new XMLHttpRequest();req.open('GET', url, true);req.send(null);}function sendSomeGetReq(urls) {for (var i = 0; i < urls.length; i++) {sendOneGetReq(urls[i]);}}</script>",
+            "adomain": [
+              "huaweiads"
+            ],
+            "crid": "58025103",
+            "id": "test-imp-id",
+            "impid": "test-imp-id",
+            "price": 2.8,
+            "h": 300,
+            "w": 250
+          },
+          "type": "banner"
+        }
+      ]
+    }
+  ]
+}
\ No newline at end of file
diff --git a/adapters/openrtb_util_test.go b/adapters/openrtb_util_test.go
deleted file mode 100644
index bb70392e..00000000
--- a/adapters/openrtb_util_test.go
+++ /dev/null
@@ -1,51 +0,0 @@
-package adapters
-
-import (
-	"encoding/json"
-	"errors"
-	"testing"
-
-	"github.com/prebid/openrtb/v19/openrtb2"
-	"github.com/stretchr/testify/assert"
-)
-
-func TestExtractAdapterReqBidderParamsMap(t *testing.T) {
-	tests := []struct {
-		name            string
-		givenBidRequest *openrtb2.BidRequest
-		want            map[string]json.RawMessage
-		wantErr         error
-	}{
-		{
-			name:            "nil req",
-			givenBidRequest: nil,
-			want:            nil,
-			wantErr:         errors.New("error bidRequest should not be nil"),
-		},
-		{
-			name:            "nil req.ext",
-			givenBidRequest: &openrtb2.BidRequest{Ext: json.RawMessage(`{"prebid":{}}`)},
-			want:            nil,
-			wantErr:         nil,
-		},
-		{
-			name:            "malformed req.ext",
-			givenBidRequest: &openrtb2.BidRequest{Ext: json.RawMessage("malformed")},
-			want:            nil,
-			wantErr:         errors.New("error decoding Request.ext : invalid character 'm' looking for beginning of value"),
-		},
-		{
-			name:            "extract bidder params from req.Ext for input request in adapter code",
-			givenBidRequest: &openrtb2.BidRequest{Ext: json.RawMessage(`{"prebid":{"bidderparams": {"profile": 1234, "version": 1}}}`)},
-			want:            map[string]json.RawMessage{"profile": json.RawMessage(`1234`), "version": json.RawMessage(`1`)},
-			wantErr:         nil,
-		},
-	}
-	for _, tt := range tests {
-		t.Run(tt.name, func(t *testing.T) {
-			got, err := ExtractReqExtBidderParamsMap(tt.givenBidRequest)
-			assert.Equal(t, tt.wantErr, err, "err")
-			assert.Equal(t, tt.want, got, "result")
-		})
-	}
-}
diff --git a/util/httputil/responseutil_test.go b/adapters/response_test.go
similarity index 61%
rename from util/httputil/responseutil_test.go
rename to adapters/response_test.go
index 5adb0054..824a295e 100644
--- a/util/httputil/responseutil_test.go
+++ b/adapters/response_test.go
@@ -1,28 +1,27 @@
-package httputil
+package adapters
 
 import (
 	"testing"
 
-	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/errortypes"
 	"github.com/stretchr/testify/assert"
 )
 
 func TestCheckResponseStatusCodeForErrors(t *testing.T) {
 	t.Run("bad_input", func(t *testing.T) {
-		err := CheckResponseStatusCodeForErrors(&adapters.ResponseData{StatusCode: 400})
+		err := CheckResponseStatusCodeForErrors(&ResponseData{StatusCode: 400})
 		expectedErr := &errortypes.BadInput{Message: "Unexpected status code: 400. Run with request.debug = 1 for more info"}
 		assert.Equal(t, expectedErr.Error(), err.Error())
 	})
 
 	t.Run("internal_server_error", func(t *testing.T) {
-		err := CheckResponseStatusCodeForErrors(&adapters.ResponseData{StatusCode: 500})
+		err := CheckResponseStatusCodeForErrors(&ResponseData{StatusCode: 500})
 		expectedErrMessage := "Unexpected status code: 500. Run with request.debug = 1 for more info"
 		assert.Equal(t, expectedErrMessage, err.Error())
 	})
 }
 
 func TestIsResponseStatusCodeNoContent(t *testing.T) {
-	assert.True(t, IsResponseStatusCodeNoContent(&adapters.ResponseData{StatusCode: 204}))
-	assert.False(t, IsResponseStatusCodeNoContent(&adapters.ResponseData{StatusCode: 200}))
+	assert.True(t, IsResponseStatusCodeNoContent(&ResponseData{StatusCode: 204}))
+	assert.False(t, IsResponseStatusCodeNoContent(&ResponseData{StatusCode: 200}))
 }
diff --git a/adapters/sharethrough/sharethroughtest/exemplary/app-banner.json b/adapters/sharethrough/sharethroughtest/exemplary/app-banner.json
index 746c72f7..29f1b1d1 100644
--- a/adapters/sharethrough/sharethroughtest/exemplary/app-banner.json
+++ b/adapters/sharethrough/sharethroughtest/exemplary/app-banner.json
@@ -37,12 +37,8 @@
       "expectedRequest": {
         "uri": "http://whatever.url",
         "headers": {
-          "Content-Type": [
-            "application/json;charset=utf-8"
-          ],
-          "Accept": [
-            "application/json"
-          ]
+          "Content-Type": ["application/json;charset=utf-8"],
+          "Accept": ["application/json"]
         },
         "body": {
           "id": "web-banner",
@@ -100,7 +96,12 @@
                   "adm": "<div>Ad</div>",
                   "price": 20,
                   "w": 300,
-                  "h": 250
+                  "h": 250,
+                  "ext": {
+                    "prebid": {
+                      "type": "banner"
+                    }
+                  }
                 }
               ]
             }
@@ -121,7 +122,12 @@
             "adm": "<div>Ad</div>",
             "price": 20,
             "w": 300,
-            "h": 250
+            "h": 250,
+            "ext": {
+              "prebid": {
+                "type": "banner"
+              }
+            }
           },
           "type": "banner"
         }
diff --git a/adapters/sharethrough/sharethroughtest/exemplary/app-native.json b/adapters/sharethrough/sharethroughtest/exemplary/app-native.json
new file mode 100644
index 00000000..ff283d9c
--- /dev/null
+++ b/adapters/sharethrough/sharethroughtest/exemplary/app-native.json
@@ -0,0 +1,105 @@
+{
+  "mockBidRequest": {
+    "id": "web-native",
+    "imp": [
+      {
+        "id": "native-imp-id",
+        "ext": {
+          "bidder": {
+            "pkey": "pkey"
+          }
+        },
+        "native": {
+          "ver": "1.2",
+          "request": "placeholder request"
+        }
+      }
+    ]
+  },
+  "httpCalls": [
+    {
+      "expectedRequest": {
+        "uri": "http://whatever.url",
+        "headers": {
+          "Content-Type": ["application/json;charset=utf-8"],
+          "Accept": ["application/json"]
+        },
+        "body": {
+          "id": "web-native",
+          "imp": [
+            {
+              "id": "native-imp-id",
+              "tagid": "pkey",
+              "ext": {
+                "bidder": {
+                  "pkey": "pkey"
+                }
+              },
+              "native": {
+                "ver": "1.2",
+                "request": "placeholder request"
+              }
+            }
+          ],
+          "source": {
+            "ext": {
+              "version": "",
+              "str": "10.0"
+            }
+          }
+        }
+      },
+      "mockResponse": {
+        "status": 200,
+        "body": {
+          "id": "web-native",
+          "cur": "USD",
+          "seatbid": [
+            {
+              "bid": [
+                {
+                  "id": "web-native",
+                  "impid": "native-imp-id",
+                  "crid": "some-creative-id",
+                  "adm": "<div>Ad</div>",
+                  "price": 20,
+                  "w": 300,
+                  "h": 250,
+                  "ext": {
+                    "prebid": {
+                      "type": "native"
+                    }
+                  }
+                }
+              ]
+            }
+          ]
+        }
+      }
+    }
+  ],
+  "expectedBidResponses": [
+    {
+      "currency": "USD",
+      "bids": [
+        {
+          "bid": {
+            "id": "web-native",
+            "impid": "native-imp-id",
+            "crid": "some-creative-id",
+            "adm": "<div>Ad</div>",
+            "price": 20,
+            "w": 300,
+            "h": 250,
+            "ext": {
+              "prebid": {
+                "type": "native"
+              }
+            }
+          },
+          "type": "native"
+        }
+      ]
+    }
+  ]
+}
diff --git a/adapters/sharethrough/sharethroughtest/exemplary/app-video.json b/adapters/sharethrough/sharethroughtest/exemplary/app-video.json
index 240b94aa..e8e3d97e 100644
--- a/adapters/sharethrough/sharethroughtest/exemplary/app-video.json
+++ b/adapters/sharethrough/sharethroughtest/exemplary/app-video.json
@@ -11,21 +11,14 @@
           },
           "bidder": {
             "pkey": "pkey",
-            "badv": [
-              "ford.com"
-            ],
-            "bcat": [
-              "IAB-1",
-              "IAB-2"
-            ]
+            "badv": ["ford.com"],
+            "bcat": ["IAB-1", "IAB-2"]
           }
         },
         "video": {
           "w": 640,
           "h": 480,
-          "mimes": [
-            "video/mp4"
-          ],
+          "mimes": ["video/mp4"],
           "placement": 1
         }
       }
@@ -47,12 +40,8 @@
       "expectedRequest": {
         "uri": "http://whatever.url",
         "headers": {
-          "Content-Type": [
-            "application/json;charset=utf-8"
-          ],
-          "Accept": [
-            "application/json"
-          ]
+          "Content-Type": ["application/json;charset=utf-8"],
+          "Accept": ["application/json"]
         },
         "body": {
           "id": "web-video",
@@ -67,21 +56,14 @@
                 },
                 "bidder": {
                   "pkey": "pkey",
-                  "badv": [
-                    "ford.com"
-                  ],
-                  "bcat": [
-                    "IAB-1",
-                    "IAB-2"
-                  ]
+                  "badv": ["ford.com"],
+                  "bcat": ["IAB-1", "IAB-2"]
                 }
               },
               "video": {
                 "w": 640,
                 "h": 480,
-                "mimes": [
-                  "video/mp4"
-                ],
+                "mimes": ["video/mp4"],
                 "placement": 1
               }
             }
@@ -122,7 +104,12 @@
                   "adm": "<VAST>TAG</VAST>",
                   "price": 20,
                   "w": 640,
-                  "h": 480
+                  "h": 480,
+                  "ext": {
+                    "prebid": {
+                      "type": "video"
+                    }
+                  }
                 }
               ]
             }
@@ -143,7 +130,12 @@
             "adm": "<VAST>TAG</VAST>",
             "price": 20,
             "w": 640,
-            "h": 480
+            "h": 480,
+            "ext": {
+              "prebid": {
+                "type": "video"
+              }
+            }
           },
           "type": "video"
         }
diff --git a/adapters/sharethrough/sharethroughtest/exemplary/web-banner.json b/adapters/sharethrough/sharethroughtest/exemplary/web-banner.json
index b3574965..cbc5630a 100644
--- a/adapters/sharethrough/sharethroughtest/exemplary/web-banner.json
+++ b/adapters/sharethrough/sharethroughtest/exemplary/web-banner.json
@@ -38,12 +38,8 @@
       "expectedRequest": {
         "uri": "http://whatever.url",
         "headers": {
-          "Content-Type": [
-            "application/json;charset=utf-8"
-          ],
-          "Accept": [
-            "application/json"
-          ]
+          "Content-Type": ["application/json;charset=utf-8"],
+          "Accept": ["application/json"]
         },
         "body": {
           "id": "web-banner",
@@ -101,7 +97,12 @@
                   "adm": "<div>Ad</div>",
                   "price": 20,
                   "w": 300,
-                  "h": 250
+                  "h": 250,
+                  "ext": {
+                    "prebid": {
+                      "type": "banner"
+                    }
+                  }
                 }
               ]
             }
@@ -122,7 +123,12 @@
             "adm": "<div>Ad</div>",
             "price": 20,
             "w": 300,
-            "h": 250
+            "h": 250,
+            "ext": {
+              "prebid": {
+                "type": "banner"
+              }
+            }
           },
           "type": "banner"
         }
diff --git a/adapters/sharethrough/sharethroughtest/exemplary/web-video.json b/adapters/sharethrough/sharethroughtest/exemplary/web-video.json
index 02de1780..892d140d 100644
--- a/adapters/sharethrough/sharethroughtest/exemplary/web-video.json
+++ b/adapters/sharethrough/sharethroughtest/exemplary/web-video.json
@@ -11,21 +11,14 @@
           },
           "bidder": {
             "pkey": "pkey",
-            "badv": [
-              "ford.com"
-            ],
-            "bcat": [
-              "IAB-1",
-              "IAB-2"
-            ]
+            "badv": ["ford.com"],
+            "bcat": ["IAB-1", "IAB-2"]
           }
         },
         "video": {
           "w": 640,
           "h": 480,
-          "mimes": [
-            "video/mp4"
-          ],
+          "mimes": ["video/mp4"],
           "placement": 1
         }
       }
@@ -48,12 +41,8 @@
       "expectedRequest": {
         "uri": "http://whatever.url",
         "headers": {
-          "Content-Type": [
-            "application/json;charset=utf-8"
-          ],
-          "Accept": [
-            "application/json"
-          ]
+          "Content-Type": ["application/json;charset=utf-8"],
+          "Accept": ["application/json"]
         },
         "body": {
           "id": "web-video",
@@ -68,21 +57,14 @@
                 },
                 "bidder": {
                   "pkey": "pkey",
-                  "badv": [
-                    "ford.com"
-                  ],
-                  "bcat": [
-                    "IAB-1",
-                    "IAB-2"
-                  ]
+                  "badv": ["ford.com"],
+                  "bcat": ["IAB-1", "IAB-2"]
                 }
               },
               "video": {
                 "w": 640,
                 "h": 480,
-                "mimes": [
-                  "video/mp4"
-                ],
+                "mimes": ["video/mp4"],
                 "placement": 1
               }
             }
@@ -123,7 +105,12 @@
                   "adm": "<VAST>TAG</VAST>",
                   "price": 20,
                   "w": 640,
-                  "h": 480
+                  "h": 480,
+                  "ext": {
+                    "prebid": {
+                      "type": "video"
+                    }
+                  }
                 }
               ]
             }
@@ -144,7 +131,12 @@
             "adm": "<VAST>TAG</VAST>",
             "price": 20,
             "w": 640,
-            "h": 480
+            "h": 480,
+            "ext": {
+              "prebid": {
+                "type": "video"
+              }
+            }
           },
           "type": "video"
         }
diff --git a/adapters/sharethrough/sharethroughtest/supplemental/multi-imp.json b/adapters/sharethrough/sharethroughtest/supplemental/multi-imp.json
index e083c798..6007c63c 100644
--- a/adapters/sharethrough/sharethroughtest/supplemental/multi-imp.json
+++ b/adapters/sharethrough/sharethroughtest/supplemental/multi-imp.json
@@ -53,12 +53,8 @@
       "expectedRequest": {
         "uri": "http://whatever.url",
         "headers": {
-          "Content-Type": [
-            "application/json;charset=utf-8"
-          ],
-          "Accept": [
-            "application/json"
-          ]
+          "Content-Type": ["application/json;charset=utf-8"],
+          "Accept": ["application/json"]
         },
         "body": {
           "id": "web-banner",
@@ -116,7 +112,12 @@
                   "adm": "<div>Ad</div>",
                   "price": 20,
                   "w": 300,
-                  "h": 250
+                  "h": 250,
+                  "ext": {
+                    "prebid": {
+                      "type": "banner"
+                    }
+                  }
                 }
               ]
             }
@@ -128,12 +129,8 @@
       "expectedRequest": {
         "uri": "http://whatever.url",
         "headers": {
-          "Content-Type": [
-            "application/json;charset=utf-8"
-          ],
-          "Accept": [
-            "application/json"
-          ]
+          "Content-Type": ["application/json;charset=utf-8"],
+          "Accept": ["application/json"]
         },
         "body": {
           "id": "web-banner",
@@ -191,7 +188,12 @@
                   "adm": "<div>Ad</div>",
                   "price": 20,
                   "w": 300,
-                  "h": 600
+                  "h": 600,
+                  "ext": {
+                    "prebid": {
+                      "type": "banner"
+                    }
+                  }
                 }
               ]
             }
@@ -212,7 +214,12 @@
             "adm": "<div>Ad</div>",
             "price": 20,
             "w": 300,
-            "h": 250
+            "h": 250,
+            "ext": {
+              "prebid": {
+                "type": "banner"
+              }
+            }
           },
           "type": "banner"
         }
@@ -229,7 +236,12 @@
             "adm": "<div>Ad</div>",
             "price": 20,
             "w": 300,
-            "h": 600
+            "h": 600,
+            "ext": {
+              "prebid": {
+                "type": "banner"
+              }
+            }
           },
           "type": "banner"
         }
diff --git a/adapters/sharethrough/sharethroughtest/supplemental/schain.json b/adapters/sharethrough/sharethroughtest/supplemental/schain.json
index 62b0e43c..55a329d3 100644
--- a/adapters/sharethrough/sharethroughtest/supplemental/schain.json
+++ b/adapters/sharethrough/sharethroughtest/supplemental/schain.json
@@ -26,21 +26,14 @@
           },
           "bidder": {
             "pkey": "pkey",
-            "badv": [
-              "ford.com"
-            ],
-            "bcat": [
-              "IAB-1",
-              "IAB-2"
-            ]
+            "badv": ["ford.com"],
+            "bcat": ["IAB-1", "IAB-2"]
           }
         },
         "video": {
           "w": 640,
           "h": 480,
-          "mimes": [
-            "video/mp4"
-          ],
+          "mimes": ["video/mp4"],
           "placement": 1
         }
       }
@@ -63,12 +56,8 @@
       "expectedRequest": {
         "uri": "http://whatever.url",
         "headers": {
-          "Content-Type": [
-            "application/json;charset=utf-8"
-          ],
-          "Accept": [
-            "application/json"
-          ]
+          "Content-Type": ["application/json;charset=utf-8"],
+          "Accept": ["application/json"]
         },
         "body": {
           "id": "web-video-schain",
@@ -83,21 +72,14 @@
                 },
                 "bidder": {
                   "pkey": "pkey",
-                  "badv": [
-                    "ford.com"
-                  ],
-                  "bcat": [
-                    "IAB-1",
-                    "IAB-2"
-                  ]
+                  "badv": ["ford.com"],
+                  "bcat": ["IAB-1", "IAB-2"]
                 }
               },
               "video": {
                 "w": 640,
                 "h": 480,
-                "mimes": [
-                  "video/mp4"
-                ],
+                "mimes": ["video/mp4"],
                 "placement": 1
               }
             }
@@ -130,13 +112,8 @@
               "str": "10.0"
             }
           },
-          "badv": [
-            "ford.com"
-          ],
-          "bcat": [
-            "IAB-1",
-            "IAB-2"
-          ]
+          "badv": ["ford.com"],
+          "bcat": ["IAB-1", "IAB-2"]
         }
       },
       "mockResponse": {
@@ -154,7 +131,12 @@
                   "adm": "<VAST>TAG</VAST>",
                   "price": 20,
                   "w": 640,
-                  "h": 480
+                  "h": 480,
+                  "ext": {
+                    "prebid": {
+                      "type": "video"
+                    }
+                  }
                 }
               ]
             }
@@ -175,7 +157,12 @@
             "adm": "<VAST>TAG</VAST>",
             "price": 20,
             "w": 640,
-            "h": 480
+            "h": 480,
+            "ext": {
+              "prebid": {
+                "type": "video"
+              }
+            }
           },
           "type": "video"
         }
diff --git a/adapters/smaato/smaatotest/exemplary/multiple-impressions-skadn.json b/adapters/smaato/smaatotest/exemplary/multiple-impressions-skadn.json
new file mode 100644
index 00000000..cbc1f1e3
--- /dev/null
+++ b/adapters/smaato/smaatotest/exemplary/multiple-impressions-skadn.json
@@ -0,0 +1,510 @@
+{
+  "mockBidRequest": {
+    "id": "1C86242D-9535-47D6-9576-7B1FE87F282C",
+    "site": {
+      "publisher": {
+        "id": "1100042525"
+      },
+      "page": "http://localhost:3000/server.html?pbjs_debug=true&endpoint=http://localhost:3000/bidder",
+      "ext": {
+        "data": {
+          "keywords": "power tools",
+          "search": "drill",
+          "content": {
+            "userrating": 4
+          }
+        }
+      }
+    },
+    "imp": [
+      {
+        "id": "1C86242D-9535-47D6-9576-7B1FE87F282C",
+        "banner": {
+          "format": [
+            {
+              "w": 320,
+              "h": 50
+            },
+            {
+              "w": 320,
+              "h": 250
+            }
+          ]
+        },
+        "bidfloor": 0.00123,
+        "ext": {
+          "bidder": {
+            "publisherId": "1100042525",
+            "adspaceId": "130563103"
+          },
+          "skadn": {
+            "versions": ["2.0", "2.1", "2.2", "3.0", "4.0"],
+            "sourceapp": "880047117",
+            "productpage": 1,
+            "skadnetlist": {
+              "max": 306,
+              "excl": [2, 8, 10, 55],
+              "addl": [
+                "cdkw7geqsh.skadnetwork",
+                "qyJfv329m4.skadnetwork"
+              ]
+            }
+          }
+        }
+      },
+      {
+        "id": "postbid_iframe",
+        "video": {
+          "mimes": [
+            "video/mp4",
+            "video/quicktime",
+            "video/3gpp",
+            "video/x-m4v"
+          ],
+          "minduration": 5,
+          "maxduration": 30,
+          "protocols": [
+            7
+          ],
+          "w": 1024,
+          "h": 768,
+          "startdelay": 0,
+          "linearity": 1,
+          "skip": 1,
+          "skipmin": 5,
+          "api": [
+            7
+          ],
+          "ext": {
+            "rewarded": 0
+          }
+        },
+        "bidfloor": 0.00456,
+        "ext": {
+          "bidder": {
+            "publisherId": "1100042526",
+            "adspaceId": "130563104"
+          },
+          "skadn": {
+            "versions": ["2.0", "2.1", "2.2", "3.0", "4.0"],
+            "sourceapp": "880047118",
+            "productpage": 1,
+            "skadnetlist": {
+              "max": 306,
+              "excl": [2, 8, 10, 55],
+              "addl": [
+                "cdkw7geqsh.skadnetwork",
+                "qyJfv329m4.skadnetwork"
+              ]
+            }
+          }
+        }
+      }
+    ],
+    "device": {
+      "ua": "test-user-agent",
+      "ip": "123.123.123.123",
+      "language": "en",
+      "dnt": 0
+    },
+    "user": {
+      "ext": {
+        "consent": "gdprConsentString",
+        "data": {
+          "keywords": "a,b",
+          "gender": "M",
+          "yob": 1984,
+          "geo": {
+            "country": "ca"
+          }
+        }
+      }
+    },
+    "regs": {
+      "coppa": 1,
+      "ext": {
+        "gdpr": 1,
+        "us_privacy": "uspConsentString"
+      }
+    }
+  },
+  "httpCalls": [
+    {
+      "expectedRequest": {
+        "headers": {
+          "Content-Type": ["application/json;charset=utf-8"],
+          "Accept": ["application/json"]
+        },
+        "uri": "https://prebid/bidder",
+        "body": {
+          "id": "1C86242D-9535-47D6-9576-7B1FE87F282C",
+          "imp": [
+            {
+              "id": "1C86242D-9535-47D6-9576-7B1FE87F282C",
+              "tagid": "130563103",
+              "bidfloor": 0.00123,
+              "banner": {
+                "h": 50,
+                "w": 320,
+                "format": [
+                  {
+                    "w": 320,
+                    "h": 50
+                  },
+                  {
+                    "w": 320,
+                    "h": 250
+                  }
+                ]
+              },
+              "ext": {
+                "skadn": {
+                  "versions": ["2.0", "2.1", "2.2", "3.0", "4.0"],
+                  "sourceapp": "880047117",
+                  "productpage": 1,
+                  "skadnetlist": {
+                    "max": 306,
+                    "excl": [2, 8, 10, 55],
+                    "addl": [
+                      "cdkw7geqsh.skadnetwork",
+                      "qyJfv329m4.skadnetwork"
+                    ]
+                  }
+                }
+              }
+            }
+          ],
+          "user": {
+            "ext": {
+              "consent": "gdprConsentString"
+            },
+            "gender": "M",
+            "keywords": "a,b",
+            "yob": 1984
+          },
+          "device": {
+            "ua": "test-user-agent",
+            "ip": "123.123.123.123",
+            "language": "en",
+            "dnt": 0
+          },
+          "regs": {
+            "coppa": 1,
+            "ext": {
+              "gdpr": 1,
+              "us_privacy": "uspConsentString"
+            }
+          },
+          "site": {
+            "publisher": {
+              "id": "1100042525"
+            },
+            "page": "http://localhost:3000/server.html?pbjs_debug=true&endpoint=http://localhost:3000/bidder",
+            "keywords": "power tools"
+          },
+          "ext": {
+            "client": "prebid_server_0.6"
+          }
+        }
+      },
+      "mockResponse": {
+        "status": 200,
+        "body": {
+          "id": "5ebea288-f13a-4754-be6d-4ade66c68877",
+          "seatbid": [
+            {
+              "seat": "CM6523",
+              "bid": [
+                {
+                  "adm": "{\"image\":{\"img\":{\"url\":\"//prebid-test.smaatolabs.net/img/320x50.jpg\",\"w\":350,\"h\":50,\"ctaurl\":\"//prebid-test.smaatolabs.net/track/ctaurl/1\"},\"impressiontrackers\":[\"//prebid-test.smaatolabs.net/track/imp/1\",\"//prebid-test.smaatolabs.net/track/imp/2\"],\"clicktrackers\":[\"//prebid-test.smaatolabs.net/track/click/1\",\"//prebid-test.smaatolabs.net/track/click/2\"]}}",
+                  "adomain": [
+                    "smaato.com"
+                  ],
+                  "bidderName": "smaato",
+                  "cid": "CM6523",
+                  "crid": "CR69381",
+                  "id": "6906aae8-7f74-4edd-9a4f-f49379a3cadd",
+                  "impid": "1C86242D-9535-47D6-9576-7B1FE87F282C",
+                  "iurl": "https://bidstalkcreatives.s3.amazonaws.com/1x1.png",
+                  "nurl": "https://ets-eu-west-1.track.smaato.net/v1/view?sessionId=e4e17adb-9599-42b1-bb5f-a1f1b3bee572&adSourceId=6906aae8-7f74-4edd-9a4f-f49379a3cadd&originalRequestTime=1552310449698&expires=1552311350698&winurl=ama8JbpJVpFWxvEja5viE3cLXFu58qRI8dGUh23xtsOn3N2-5UU0IwkgNEmR82pI37fcMXejL5IWTNAoW6Cnsjf-Dxl_vx2dUqMrVEevX-Vdx2VVnf-D5f73gZhvi4t36iPL8Dsw4aACekoLvVOV7-eXDjz7GHy60QFqcwKf5g2AlKPOInyZ6vJg_fn4qA9argvCRgwVybXE9Ndm2W0v8La4uFYWpJBOUveDDUrSQfzal7RsYvLb_OyaMlPHdrd_bwA9qqZWuyJXd-L9lxr7RQ%3D%3D%7CMw3kt91KJR0Uy5L-oNztAg%3D%3D&dpid=4XVofb_lH-__hr2JNGhKfg%3D%3D%7Cr9ciCU1cx3zmHXihItKO0g%3D%3D",
+                  "price": 0.01,
+                  "w": 350,
+                  "h": 50,
+                  "ext": {
+                    "skadn": {
+                      "version": "2.2",
+                      "network": "cdkw7geqsh.skadnetwork",
+                      "campaign": "45",
+                      "itunesitem": "123456789",
+                      "sourceapp": "880047117",
+                      "productpageid": "45812c9b-c296-43d3-c6a0-c5a02f74bf6e",
+                      "fidelities": [
+                        {
+                          "fidelity": 0,
+                          "signature": "MEQCIEQlmZRNfYzKBSE8QnhLTIHZZZWCFgZpRqRxHss65KoFAiAJgJKjdrWdkLUOCCjuEx2RmFS7daRzSVZRVZ8RyMyUXg==",
+                          "nonce": "473b1a16-b4ef-43ad-9591-fcf3aefa82a7",
+                          "timestamp": "1594406341"
+                        },
+                        {
+                          "fidelity": 1,
+                          "signature": "GRlMDktMmE5Zi00ZGMzLWE0ZDEtNTQ0YzQwMmU5MDk1IiwKICAgICAgICAgICAgICAgICAgInRpbWVzdGTk0NDA2MzQyIg==",
+                          "nonce": "e650de09-2a9f-4dc3-a4d1-544c402e9095",
+                          "timestamp": "1594406342"
+                        }
+                      ]
+                    }
+                  }
+                }
+              ]
+            }
+          ],
+          "bidid": "04db8629-179d-4bcd-acce-e54722969006",
+          "cur": "USD"
+        }
+      }
+    },
+    {
+      "expectedRequest": {
+        "headers": {
+          "Content-Type": ["application/json;charset=utf-8"],
+          "Accept": ["application/json"]
+        },
+        "uri": "https://prebid/bidder",
+        "body": {
+          "id": "1C86242D-9535-47D6-9576-7B1FE87F282C",
+          "imp": [
+            {
+              "id": "postbid_iframe",
+              "tagid": "130563104",
+              "bidfloor": 0.00456,
+              "video": {
+                "w": 1024,
+                "h": 768,
+                "ext": {
+                  "rewarded": 0
+                },
+                "mimes": [
+                  "video/mp4",
+                  "video/quicktime",
+                  "video/3gpp",
+                  "video/x-m4v"
+                ],
+                "minduration": 5,
+                "startdelay": 0,
+                "linearity": 1,
+                "maxduration": 30,
+                "skip": 1,
+                "protocols": [
+                  7
+                ],
+                "skipmin": 5,
+                "api": [
+                  7
+                ]
+              },
+              "ext": {
+                "skadn": {
+                  "versions": ["2.0", "2.1", "2.2", "3.0", "4.0"],
+                  "sourceapp": "880047118",
+                  "productpage": 1,
+                  "skadnetlist": {
+                    "max": 306,
+                    "excl": [2, 8, 10, 55],
+                    "addl": [
+                      "cdkw7geqsh.skadnetwork",
+                      "qyJfv329m4.skadnetwork"
+                    ]
+                  }
+                }
+              }
+            }
+          ],
+          "user": {
+            "ext": {
+              "consent": "gdprConsentString"
+            },
+            "gender": "M",
+            "keywords": "a,b",
+            "yob": 1984
+          },
+          "device": {
+            "ua": "test-user-agent",
+            "ip": "123.123.123.123",
+            "language": "en",
+            "dnt": 0
+          },
+          "regs": {
+            "coppa": 1,
+            "ext": {
+              "gdpr": 1,
+              "us_privacy": "uspConsentString"
+            }
+          },
+          "site": {
+            "publisher": {
+              "id": "1100042526"
+            },
+            "page": "http://localhost:3000/server.html?pbjs_debug=true&endpoint=http://localhost:3000/bidder",
+            "keywords": "power tools"
+          },
+          "ext": {
+            "client": "prebid_server_0.6"
+          }
+        }
+      },
+      "mockResponse": {
+        "status": 200,
+        "body": {
+          "id": "5ebea288-f13a-4754-be6d-4ade66c68877",
+          "seatbid": [
+            {
+              "seat": "CM6523",
+              "bid": [
+                {
+                  "adm": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><VAST version=\"2.0\"></VAST>",
+                  "adomain": [
+                    "smaato.com"
+                  ],
+                  "bidderName": "smaato",
+                  "cid": "CM6524",
+                  "crid": "CR69382",
+                  "id": "6906aae8-7f74-4edd-9a4f-f49379a3cadd",
+                  "impid": "postbid_iframe",
+                  "iurl": "https://iurl",
+                  "nurl": "https://nurl",
+                  "price": 0.01,
+                  "w": 1024,
+                  "h": 768,
+                  "ext": {
+                    "skadn": {
+                      "version": "2.2",
+                      "network": "cdkw7geqsh.skadnetwork",
+                      "campaign": "45",
+                      "itunesitem": "123456789",
+                      "sourceapp": "880047118",
+                      "productpageid": "45812c9b-c296-43d3-c6a0-c5a02f74bf6e",
+                      "fidelities": [
+                        {
+                          "fidelity": 0,
+                          "signature": "MEQCIEQlmZRNfYzKBSE8QnhLTIHZZZWCFgZpRqRxHss65KoFAiAJgJKjdrWdkLUOCCjuEx2RmFS7daRzSVZRVZ8RyMyUXg==",
+                          "nonce": "473b1a16-b4ef-43ad-9591-fcf3aefa82a7",
+                          "timestamp": "1594406341"
+                        },
+                        {
+                          "fidelity": 1,
+                          "signature": "GRlMDktMmE5Zi00ZGMzLWE0ZDEtNTQ0YzQwMmU5MDk1IiwKICAgICAgICAgICAgICAgICAgInRpbWVzdGTk0NDA2MzQyIg==",
+                          "nonce": "e650de09-2a9f-4dc3-a4d1-544c402e9095",
+                          "timestamp": "1594406342"
+                        }
+                      ]
+                    }
+                  }
+                }
+              ]
+            }
+          ],
+          "bidid": "04db8629-179d-4bcd-acce-e54722969006",
+          "cur": "USD"
+        }
+      }
+    }
+  ],
+  "expectedBidResponses": [
+    {
+      "currency": "USD",
+      "bids": [
+        {
+          "bid": {
+            "adm": "<div style=\"cursor:pointer\" onclick=\"fetch(decodeURIComponent('%2F%2Fprebid-test.smaatolabs.net%2Ftrack%2Fclick%2F1'.replace(/\\+/g, ' ')), {cache: 'no-cache'});fetch(decodeURIComponent('%2F%2Fprebid-test.smaatolabs.net%2Ftrack%2Fclick%2F2'.replace(/\\+/g, ' ')), {cache: 'no-cache'});;window.open(decodeURIComponent('%2F%2Fprebid-test.smaatolabs.net%2Ftrack%2Fctaurl%2F1'.replace(/\\+/g, ' ')));\"><img src=\"//prebid-test.smaatolabs.net/img/320x50.jpg\" width=\"350\" height=\"50\"/><img src=\"//prebid-test.smaatolabs.net/track/imp/1\" alt=\"\" width=\"0\" height=\"0\"/><img src=\"//prebid-test.smaatolabs.net/track/imp/2\" alt=\"\" width=\"0\" height=\"0\"/></div>",
+            "adomain": [
+              "smaato.com"
+            ],
+            "cid": "CM6523",
+            "crid": "CR69381",
+            "id": "6906aae8-7f74-4edd-9a4f-f49379a3cadd",
+            "impid": "1C86242D-9535-47D6-9576-7B1FE87F282C",
+            "iurl": "https://bidstalkcreatives.s3.amazonaws.com/1x1.png",
+            "nurl": "https://ets-eu-west-1.track.smaato.net/v1/view?sessionId=e4e17adb-9599-42b1-bb5f-a1f1b3bee572&adSourceId=6906aae8-7f74-4edd-9a4f-f49379a3cadd&originalRequestTime=1552310449698&expires=1552311350698&winurl=ama8JbpJVpFWxvEja5viE3cLXFu58qRI8dGUh23xtsOn3N2-5UU0IwkgNEmR82pI37fcMXejL5IWTNAoW6Cnsjf-Dxl_vx2dUqMrVEevX-Vdx2VVnf-D5f73gZhvi4t36iPL8Dsw4aACekoLvVOV7-eXDjz7GHy60QFqcwKf5g2AlKPOInyZ6vJg_fn4qA9argvCRgwVybXE9Ndm2W0v8La4uFYWpJBOUveDDUrSQfzal7RsYvLb_OyaMlPHdrd_bwA9qqZWuyJXd-L9lxr7RQ%3D%3D%7CMw3kt91KJR0Uy5L-oNztAg%3D%3D&dpid=4XVofb_lH-__hr2JNGhKfg%3D%3D%7Cr9ciCU1cx3zmHXihItKO0g%3D%3D",
+            "price": 0.01,
+            "w": 350,
+            "h": 50,
+            "exp": 300,
+            "ext": {
+              "skadn": {
+                "version": "2.2",
+                "network": "cdkw7geqsh.skadnetwork",
+                "campaign": "45",
+                "itunesitem": "123456789",
+                "sourceapp": "880047117",
+                "productpageid": "45812c9b-c296-43d3-c6a0-c5a02f74bf6e",
+                "fidelities": [
+                  {
+                    "fidelity": 0,
+                    "signature": "MEQCIEQlmZRNfYzKBSE8QnhLTIHZZZWCFgZpRqRxHss65KoFAiAJgJKjdrWdkLUOCCjuEx2RmFS7daRzSVZRVZ8RyMyUXg==",
+                    "nonce": "473b1a16-b4ef-43ad-9591-fcf3aefa82a7",
+                    "timestamp": "1594406341"
+                  },
+                  {
+                    "fidelity": 1,
+                    "signature": "GRlMDktMmE5Zi00ZGMzLWE0ZDEtNTQ0YzQwMmU5MDk1IiwKICAgICAgICAgICAgICAgICAgInRpbWVzdGTk0NDA2MzQyIg==",
+                    "nonce": "e650de09-2a9f-4dc3-a4d1-544c402e9095",
+                    "timestamp": "1594406342"
+                  }
+                ]
+              }
+            }
+          },
+          "type": "banner"
+        }
+      ]
+    },
+    {
+      "currency": "USD",
+      "bids": [
+        {
+          "bid": {
+            "adm": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><VAST version=\"2.0\"></VAST>",
+            "adomain": [
+              "smaato.com"
+            ],
+            "cid": "CM6524",
+            "crid": "CR69382",
+            "id": "6906aae8-7f74-4edd-9a4f-f49379a3cadd",
+            "impid": "postbid_iframe",
+            "iurl": "https://iurl",
+            "nurl": "https://nurl",
+            "price": 0.01,
+            "w": 1024,
+            "h": 768,
+            "exp": 300,
+            "ext": {
+              "skadn": {
+                "version": "2.2",
+                "network": "cdkw7geqsh.skadnetwork",
+                "campaign": "45",
+                "itunesitem": "123456789",
+                "sourceapp": "880047118",
+                "productpageid": "45812c9b-c296-43d3-c6a0-c5a02f74bf6e",
+                "fidelities": [
+                  {
+                    "fidelity": 0,
+                    "signature": "MEQCIEQlmZRNfYzKBSE8QnhLTIHZZZWCFgZpRqRxHss65KoFAiAJgJKjdrWdkLUOCCjuEx2RmFS7daRzSVZRVZ8RyMyUXg==",
+                    "nonce": "473b1a16-b4ef-43ad-9591-fcf3aefa82a7",
+                    "timestamp": "1594406341"
+                  },
+                  {
+                    "fidelity": 1,
+                    "signature": "GRlMDktMmE5Zi00ZGMzLWE0ZDEtNTQ0YzQwMmU5MDk1IiwKICAgICAgICAgICAgICAgICAgInRpbWVzdGTk0NDA2MzQyIg==",
+                    "nonce": "e650de09-2a9f-4dc3-a4d1-544c402e9095",
+                    "timestamp": "1594406342"
+                  }
+                ]
+              }
+            }
+          },
+          "type": "video"
+        }
+      ]
+    }
+  ]
+}
\ No newline at end of file
diff --git a/adapters/smaato/smaatotest/exemplary/multiple-impressions.json b/adapters/smaato/smaatotest/exemplary/multiple-impressions.json
index 2901bcfc..48563674 100644
--- a/adapters/smaato/smaatotest/exemplary/multiple-impressions.json
+++ b/adapters/smaato/smaatotest/exemplary/multiple-impressions.json
@@ -162,7 +162,7 @@
             "keywords": "power tools"
           },
           "ext": {
-            "client": "prebid_server_0.5"
+            "client": "prebid_server_0.6"
           }
         }
       },
@@ -268,7 +268,7 @@
             "keywords": "power tools"
           },
           "ext": {
-            "client": "prebid_server_0.5"
+            "client": "prebid_server_0.6"
           }
         }
       },
diff --git a/adapters/smaato/smaatotest/exemplary/multiple-media-types-skadn.json b/adapters/smaato/smaatotest/exemplary/multiple-media-types-skadn.json
new file mode 100644
index 00000000..5fc29f28
--- /dev/null
+++ b/adapters/smaato/smaatotest/exemplary/multiple-media-types-skadn.json
@@ -0,0 +1,487 @@
+{
+  "mockBidRequest": {
+    "id": "1C86242D-9535-47D6-9576-7B1FE87F282C",
+    "site": {
+      "publisher": {
+        "id": "1100042525"
+      },
+      "page": "http://localhost:3000/server.html?pbjs_debug=true&endpoint=http://localhost:3000/bidder",
+      "ext": {
+        "data": {
+          "keywords": "power tools",
+          "search": "drill",
+          "content": {
+            "userrating": 4
+          }
+        }
+      }
+    },
+    "imp": [
+      {
+        "id": "1C86242D-9535-47D6-9576-7B1FE87F282C",
+        "banner": {
+          "format": [
+            {
+              "w": 320,
+              "h": 50
+            },
+            {
+              "w": 320,
+              "h": 250
+            }
+          ]
+        },
+        "video": {
+          "mimes": [
+            "video/mp4",
+            "video/quicktime",
+            "video/3gpp",
+            "video/x-m4v"
+          ],
+          "minduration": 5,
+          "maxduration": 30,
+          "protocols": [
+            7
+          ],
+          "w": 1024,
+          "h": 768,
+          "startdelay": 0,
+          "linearity": 1,
+          "skip": 1,
+          "skipmin": 5,
+          "api": [
+            7
+          ],
+          "ext": {
+            "rewarded": 0
+          }
+        },
+        "bidfloor": 0.00123,
+        "ext": {
+          "bidder": {
+            "publisherId": "1100042525",
+            "adspaceId": "130563103"
+          },
+          "skadn": {
+            "versions": ["2.0", "2.1", "2.2", "3.0", "4.0"],
+            "sourceapp": "880047117",
+            "productpage": 1,
+            "skadnetlist": {
+              "max": 306,
+              "excl": [2, 8, 10, 55],
+              "addl": [
+                "cdkw7geqsh.skadnetwork",
+                "qyJfv329m4.skadnetwork"
+              ]
+            }
+          }
+        }
+      }
+    ],
+    "device": {
+      "ua": "test-user-agent",
+      "ip": "123.123.123.123",
+      "language": "en",
+      "dnt": 0
+    },
+    "user": {
+      "ext": {
+        "consent": "gdprConsentString",
+        "data": {
+          "keywords": "a,b",
+          "gender": "M",
+          "yob": 1984,
+          "geo": {
+            "country": "ca"
+          }
+        }
+      }
+    },
+    "regs": {
+      "coppa": 1,
+      "ext": {
+        "gdpr": 1,
+        "us_privacy": "uspConsentString"
+      }
+    }
+  },
+  "httpCalls": [
+    {
+      "expectedRequest": {
+        "headers": {
+          "Content-Type": ["application/json;charset=utf-8"],
+          "Accept": ["application/json"]
+        },
+        "uri": "https://prebid/bidder",
+        "body": {
+          "id": "1C86242D-9535-47D6-9576-7B1FE87F282C",
+          "imp": [
+            {
+              "id": "1C86242D-9535-47D6-9576-7B1FE87F282C",
+              "tagid": "130563103",
+              "bidfloor": 0.00123,
+              "banner": {
+                "h": 50,
+                "w": 320,
+                "format": [
+                  {
+                    "w": 320,
+                    "h": 50
+                  },
+                  {
+                    "w": 320,
+                    "h": 250
+                  }
+                ]
+              },
+              "ext": {
+                "skadn": {
+                  "versions": ["2.0", "2.1", "2.2", "3.0", "4.0"],
+                  "sourceapp": "880047117",
+                  "productpage": 1,
+                  "skadnetlist": {
+                    "max": 306,
+                    "excl": [2, 8, 10, 55],
+                    "addl": [
+                      "cdkw7geqsh.skadnetwork",
+                      "qyJfv329m4.skadnetwork"
+                    ]
+                  }
+                }
+              }
+            }
+          ],
+          "user": {
+            "ext": {
+              "consent": "gdprConsentString"
+            },
+            "gender": "M",
+            "keywords": "a,b",
+            "yob": 1984
+          },
+          "device": {
+            "ua": "test-user-agent",
+            "ip": "123.123.123.123",
+            "language": "en",
+            "dnt": 0
+          },
+          "regs": {
+            "coppa": 1,
+            "ext": {
+              "gdpr": 1,
+              "us_privacy": "uspConsentString"
+            }
+          },
+          "site": {
+            "publisher": {
+              "id": "1100042525"
+            },
+            "page": "http://localhost:3000/server.html?pbjs_debug=true&endpoint=http://localhost:3000/bidder",
+            "keywords": "power tools"
+          },
+          "ext": {
+            "client": "prebid_server_0.6"
+          }
+        }
+      },
+      "mockResponse": {
+        "status": 200,
+        "body": {
+          "id": "5ebea288-f13a-4754-be6d-4ade66c68877",
+          "seatbid": [
+            {
+              "seat": "CM6523",
+              "bid": [
+                {
+                  "adm": "{\"image\":{\"img\":{\"url\":\"//prebid-test.smaatolabs.net/img/320x50.jpg\",\"w\":350,\"h\":50,\"ctaurl\":\"//prebid-test.smaatolabs.net/track/ctaurl/1\"},\"impressiontrackers\":[\"//prebid-test.smaatolabs.net/track/imp/1\",\"//prebid-test.smaatolabs.net/track/imp/2\"],\"clicktrackers\":[\"//prebid-test.smaatolabs.net/track/click/1\",\"//prebid-test.smaatolabs.net/track/click/2\"]}}",
+                  "adomain": [
+                    "smaato.com"
+                  ],
+                  "bidderName": "smaato",
+                  "cid": "CM6523",
+                  "crid": "CR69381",
+                  "id": "6906aae8-7f74-4edd-9a4f-f49379a3cadd",
+                  "impid": "1C86242D-9535-47D6-9576-7B1FE87F282C",
+                  "iurl": "https://bidstalkcreatives.s3.amazonaws.com/1x1.png",
+                  "nurl": "https://ets-eu-west-1.track.smaato.net/v1/view?sessionId=e4e17adb-9599-42b1-bb5f-a1f1b3bee572&adSourceId=6906aae8-7f74-4edd-9a4f-f49379a3cadd&originalRequestTime=1552310449698&expires=1552311350698&winurl=ama8JbpJVpFWxvEja5viE3cLXFu58qRI8dGUh23xtsOn3N2-5UU0IwkgNEmR82pI37fcMXejL5IWTNAoW6Cnsjf-Dxl_vx2dUqMrVEevX-Vdx2VVnf-D5f73gZhvi4t36iPL8Dsw4aACekoLvVOV7-eXDjz7GHy60QFqcwKf5g2AlKPOInyZ6vJg_fn4qA9argvCRgwVybXE9Ndm2W0v8La4uFYWpJBOUveDDUrSQfzal7RsYvLb_OyaMlPHdrd_bwA9qqZWuyJXd-L9lxr7RQ%3D%3D%7CMw3kt91KJR0Uy5L-oNztAg%3D%3D&dpid=4XVofb_lH-__hr2JNGhKfg%3D%3D%7Cr9ciCU1cx3zmHXihItKO0g%3D%3D",
+                  "price": 0.01,
+                  "w": 350,
+                  "h": 50,
+                  "ext": {
+                    "skadn": {
+                      "version": "2.2",
+                      "network": "cdkw7geqsh.skadnetwork",
+                      "campaign": "45",
+                      "itunesitem": "123456789",
+                      "sourceapp": "880047117",
+                      "productpageid": "45812c9b-c296-43d3-c6a0-c5a02f74bf6e",
+                      "fidelities": [
+                        {
+                          "fidelity": 0,
+                          "signature": "MEQCIEQlmZRNfYzKBSE8QnhLTIHZZZWCFgZpRqRxHss65KoFAiAJgJKjdrWdkLUOCCjuEx2RmFS7daRzSVZRVZ8RyMyUXg==",
+                          "nonce": "473b1a16-b4ef-43ad-9591-fcf3aefa82a7",
+                          "timestamp": "1594406341"
+                        },
+                        {
+                          "fidelity": 1,
+                          "signature": "GRlMDktMmE5Zi00ZGMzLWE0ZDEtNTQ0YzQwMmU5MDk1IiwKICAgICAgICAgICAgICAgICAgInRpbWVzdGTk0NDA2MzQyIg==",
+                          "nonce": "e650de09-2a9f-4dc3-a4d1-544c402e9095",
+                          "timestamp": "1594406342"
+                        }
+                      ]
+                    }
+                  }
+                }
+              ]
+            }
+          ],
+          "bidid": "04db8629-179d-4bcd-acce-e54722969006",
+          "cur": "USD"
+        }
+      }
+    },
+    {
+      "expectedRequest": {
+        "headers": {
+          "Content-Type": ["application/json;charset=utf-8"],
+          "Accept": ["application/json"]
+        },
+        "uri": "https://prebid/bidder",
+        "body": {
+          "id": "1C86242D-9535-47D6-9576-7B1FE87F282C",
+          "imp": [
+            {
+              "id": "1C86242D-9535-47D6-9576-7B1FE87F282C",
+              "tagid": "130563103",
+              "bidfloor": 0.00123,
+              "video": {
+                "w": 1024,
+                "h": 768,
+                "ext": {
+                  "rewarded": 0
+                },
+                "mimes": [
+                  "video/mp4",
+                  "video/quicktime",
+                  "video/3gpp",
+                  "video/x-m4v"
+                ],
+                "minduration": 5,
+                "startdelay": 0,
+                "linearity": 1,
+                "maxduration": 30,
+                "skip": 1,
+                "protocols": [
+                  7
+                ],
+                "skipmin": 5,
+                "api": [
+                  7
+                ]
+              },
+              "ext": {
+                "skadn": {
+                  "versions": ["2.0", "2.1", "2.2", "3.0", "4.0"],
+                  "sourceapp": "880047117",
+                  "productpage": 1,
+                  "skadnetlist": {
+                    "max": 306,
+                    "excl": [2, 8, 10, 55],
+                    "addl": [
+                      "cdkw7geqsh.skadnetwork",
+                      "qyJfv329m4.skadnetwork"
+                    ]
+                  }
+                }
+              }
+            }
+          ],
+          "user": {
+            "ext": {
+              "consent": "gdprConsentString"
+            },
+            "gender": "M",
+            "keywords": "a,b",
+            "yob": 1984
+          },
+          "device": {
+            "ua": "test-user-agent",
+            "ip": "123.123.123.123",
+            "language": "en",
+            "dnt": 0
+          },
+          "regs": {
+            "coppa": 1,
+            "ext": {
+              "gdpr": 1,
+              "us_privacy": "uspConsentString"
+            }
+          },
+          "site": {
+            "publisher": {
+              "id": "1100042525"
+            },
+            "page": "http://localhost:3000/server.html?pbjs_debug=true&endpoint=http://localhost:3000/bidder",
+            "keywords": "power tools"
+          },
+          "ext": {
+            "client": "prebid_server_0.6"
+          }
+        }
+      },
+      "mockResponse": {
+        "status": 200,
+        "body": {
+          "id": "5ebea288-f13a-4754-be6d-4ade66c68877",
+          "seatbid": [
+            {
+              "seat": "CM6523",
+              "bid": [
+                {
+                  "adm": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><VAST version=\"2.0\"></VAST>",
+                  "adomain": [
+                    "smaato.com"
+                  ],
+                  "bidderName": "smaato",
+                  "cid": "CM6523",
+                  "crid": "CR69381",
+                  "id": "6906aae8-7f74-4edd-9a4f-f49379a3cadd",
+                  "impid": "1C86242D-9535-47D6-9576-7B1FE87F282C",
+                  "iurl": "https://iurl",
+                  "nurl": "https://nurl",
+                  "price": 0.01,
+                  "w": 1024,
+                  "h": 768,
+                  "ext": {
+                    "skadn": {
+                      "version": "2.2",
+                      "network": "qyJfv329m4.skadnetwork",
+                      "campaign": "45",
+                      "itunesitem": "123456789",
+                      "sourceapp": "880047117",
+                      "productpageid": "45812c9b-c296-43d3-c6a0-c5a02f74bf6e",
+                      "fidelities": [
+                        {
+                          "fidelity": 0,
+                          "signature": "MEQCIEQlmZRNfYzKBSE8QnhLTIHZZZWCFgZpRqRxHss65KoFAiAJgJKjdrWdkLUOCCjuEx2RmFS7daRzSVZRVZ8RyMyUXg==",
+                          "nonce": "473b1a16-b4ef-43ad-9591-fcf3aefa82a7",
+                          "timestamp": "1594406341"
+                        },
+                        {
+                          "fidelity": 1,
+                          "signature": "GRlMDktMmE5Zi00ZGMzLWE0ZDEtNTQ0YzQwMmU5MDk1IiwKICAgICAgICAgICAgICAgICAgInRpbWVzdGTk0NDA2MzQyIg==",
+                          "nonce": "e650de09-2a9f-4dc3-a4d1-544c402e9095",
+                          "timestamp": "1594406342"
+                        }
+                      ]
+                    }
+                  }
+                }
+              ]
+            }
+          ],
+          "bidid": "04db8629-179d-4bcd-acce-e54722969006",
+          "cur": "USD"
+        }
+      }
+    }
+  ],
+  "expectedBidResponses": [
+    {
+      "currency": "USD",
+      "bids": [
+        {
+          "bid": {
+            "adm": "<div style=\"cursor:pointer\" onclick=\"fetch(decodeURIComponent('%2F%2Fprebid-test.smaatolabs.net%2Ftrack%2Fclick%2F1'.replace(/\\+/g, ' ')), {cache: 'no-cache'});fetch(decodeURIComponent('%2F%2Fprebid-test.smaatolabs.net%2Ftrack%2Fclick%2F2'.replace(/\\+/g, ' ')), {cache: 'no-cache'});;window.open(decodeURIComponent('%2F%2Fprebid-test.smaatolabs.net%2Ftrack%2Fctaurl%2F1'.replace(/\\+/g, ' ')));\"><img src=\"//prebid-test.smaatolabs.net/img/320x50.jpg\" width=\"350\" height=\"50\"/><img src=\"//prebid-test.smaatolabs.net/track/imp/1\" alt=\"\" width=\"0\" height=\"0\"/><img src=\"//prebid-test.smaatolabs.net/track/imp/2\" alt=\"\" width=\"0\" height=\"0\"/></div>",
+            "adomain": [
+              "smaato.com"
+            ],
+            "cid": "CM6523",
+            "crid": "CR69381",
+            "id": "6906aae8-7f74-4edd-9a4f-f49379a3cadd",
+            "impid": "1C86242D-9535-47D6-9576-7B1FE87F282C",
+            "iurl": "https://bidstalkcreatives.s3.amazonaws.com/1x1.png",
+            "nurl": "https://ets-eu-west-1.track.smaato.net/v1/view?sessionId=e4e17adb-9599-42b1-bb5f-a1f1b3bee572&adSourceId=6906aae8-7f74-4edd-9a4f-f49379a3cadd&originalRequestTime=1552310449698&expires=1552311350698&winurl=ama8JbpJVpFWxvEja5viE3cLXFu58qRI8dGUh23xtsOn3N2-5UU0IwkgNEmR82pI37fcMXejL5IWTNAoW6Cnsjf-Dxl_vx2dUqMrVEevX-Vdx2VVnf-D5f73gZhvi4t36iPL8Dsw4aACekoLvVOV7-eXDjz7GHy60QFqcwKf5g2AlKPOInyZ6vJg_fn4qA9argvCRgwVybXE9Ndm2W0v8La4uFYWpJBOUveDDUrSQfzal7RsYvLb_OyaMlPHdrd_bwA9qqZWuyJXd-L9lxr7RQ%3D%3D%7CMw3kt91KJR0Uy5L-oNztAg%3D%3D&dpid=4XVofb_lH-__hr2JNGhKfg%3D%3D%7Cr9ciCU1cx3zmHXihItKO0g%3D%3D",
+            "price": 0.01,
+            "w": 350,
+            "h": 50,
+            "exp": 300,
+            "ext": {
+              "skadn": {
+                "version": "2.2",
+                "network": "cdkw7geqsh.skadnetwork",
+                "campaign": "45",
+                "itunesitem": "123456789",
+                "sourceapp": "880047117",
+                "productpageid": "45812c9b-c296-43d3-c6a0-c5a02f74bf6e",
+                "fidelities": [
+                  {
+                    "fidelity": 0,
+                    "signature": "MEQCIEQlmZRNfYzKBSE8QnhLTIHZZZWCFgZpRqRxHss65KoFAiAJgJKjdrWdkLUOCCjuEx2RmFS7daRzSVZRVZ8RyMyUXg==",
+                    "nonce": "473b1a16-b4ef-43ad-9591-fcf3aefa82a7",
+                    "timestamp": "1594406341"
+                  },
+                  {
+                    "fidelity": 1,
+                    "signature": "GRlMDktMmE5Zi00ZGMzLWE0ZDEtNTQ0YzQwMmU5MDk1IiwKICAgICAgICAgICAgICAgICAgInRpbWVzdGTk0NDA2MzQyIg==",
+                    "nonce": "e650de09-2a9f-4dc3-a4d1-544c402e9095",
+                    "timestamp": "1594406342"
+                  }
+                ]
+              }
+            }
+          },
+          "type": "banner"
+        }
+      ]
+    },
+    {
+      "currency": "USD",
+      "bids": [
+        {
+          "bid": {
+            "adm": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><VAST version=\"2.0\"></VAST>",
+            "adomain": [
+              "smaato.com"
+            ],
+            "cid": "CM6523",
+            "crid": "CR69381",
+            "id": "6906aae8-7f74-4edd-9a4f-f49379a3cadd",
+            "impid": "1C86242D-9535-47D6-9576-7B1FE87F282C",
+            "iurl": "https://iurl",
+            "nurl": "https://nurl",
+            "price": 0.01,
+            "w": 1024,
+            "h": 768,
+            "exp": 300,
+            "ext": {
+              "skadn": {
+                "version": "2.2",
+                "network": "qyJfv329m4.skadnetwork",
+                "campaign": "45",
+                "itunesitem": "123456789",
+                "sourceapp": "880047117",
+                "productpageid": "45812c9b-c296-43d3-c6a0-c5a02f74bf6e",
+                "fidelities": [
+                  {
+                    "fidelity": 0,
+                    "signature": "MEQCIEQlmZRNfYzKBSE8QnhLTIHZZZWCFgZpRqRxHss65KoFAiAJgJKjdrWdkLUOCCjuEx2RmFS7daRzSVZRVZ8RyMyUXg==",
+                    "nonce": "473b1a16-b4ef-43ad-9591-fcf3aefa82a7",
+                    "timestamp": "1594406341"
+                  },
+                  {
+                    "fidelity": 1,
+                    "signature": "GRlMDktMmE5Zi00ZGMzLWE0ZDEtNTQ0YzQwMmU5MDk1IiwKICAgICAgICAgICAgICAgICAgInRpbWVzdGTk0NDA2MzQyIg==",
+                    "nonce": "e650de09-2a9f-4dc3-a4d1-544c402e9095",
+                    "timestamp": "1594406342"
+                  }
+                ]
+              }
+            }
+          },
+          "type": "video"
+        }
+      ]
+    }
+  ]
+}
\ No newline at end of file
diff --git a/adapters/smaato/smaatotest/exemplary/multiple-media-types.json b/adapters/smaato/smaatotest/exemplary/multiple-media-types.json
index f5f4af33..bbca7d2e 100644
--- a/adapters/smaato/smaatotest/exemplary/multiple-media-types.json
+++ b/adapters/smaato/smaatotest/exemplary/multiple-media-types.json
@@ -152,7 +152,7 @@
             "keywords": "power tools"
           },
           "ext": {
-            "client": "prebid_server_0.5"
+            "client": "prebid_server_0.6"
           }
         }
       },
@@ -258,7 +258,7 @@
             "keywords": "power tools"
           },
           "ext": {
-            "client": "prebid_server_0.5"
+            "client": "prebid_server_0.6"
           }
         }
       },
diff --git a/adapters/smaato/smaatotest/exemplary/native.json b/adapters/smaato/smaatotest/exemplary/native.json
index 76534dd4..00dfe9ec 100644
--- a/adapters/smaato/smaatotest/exemplary/native.json
+++ b/adapters/smaato/smaatotest/exemplary/native.json
@@ -102,7 +102,7 @@
                         }
                     },
                     "ext": {
-                        "client": "prebid_server_0.5"
+                        "client": "prebid_server_0.6"
                     }
                 }
             },
diff --git a/adapters/smaato/smaatotest/exemplary/simple-banner-app.json b/adapters/smaato/smaatotest/exemplary/simple-banner-app.json
index 4f38f261..22f9c9b9 100644
--- a/adapters/smaato/smaatotest/exemplary/simple-banner-app.json
+++ b/adapters/smaato/smaatotest/exemplary/simple-banner-app.json
@@ -160,7 +160,7 @@
             "keywords": "keywords"
           },
           "ext": {
-            "client": "prebid_server_0.5"
+            "client": "prebid_server_0.6"
           }
         }
       },
diff --git a/adapters/smaato/smaatotest/exemplary/simple-banner-richMedia-app.json b/adapters/smaato/smaatotest/exemplary/simple-banner-richMedia-app.json
index aac01989..3b054d43 100644
--- a/adapters/smaato/smaatotest/exemplary/simple-banner-richMedia-app.json
+++ b/adapters/smaato/smaatotest/exemplary/simple-banner-richMedia-app.json
@@ -164,7 +164,7 @@
             "keywords": "keywords"
           },
           "ext": {
-            "client": "prebid_server_0.5"
+            "client": "prebid_server_0.6"
           }
         }
       },
diff --git a/adapters/smaato/smaatotest/exemplary/simple-banner-richMedia.json b/adapters/smaato/smaatotest/exemplary/simple-banner-richMedia.json
index 42f516c7..268fd0d4 100644
--- a/adapters/smaato/smaatotest/exemplary/simple-banner-richMedia.json
+++ b/adapters/smaato/smaatotest/exemplary/simple-banner-richMedia.json
@@ -129,7 +129,7 @@
             "keywords": "power tools"
           },
           "ext": {
-            "client": "prebid_server_0.5"
+            "client": "prebid_server_0.6"
           }
         }
       },
diff --git a/adapters/smaato/smaatotest/exemplary/simple-banner-skadn.json b/adapters/smaato/smaatotest/exemplary/simple-banner-skadn.json
new file mode 100644
index 00000000..33a7ef8e
--- /dev/null
+++ b/adapters/smaato/smaatotest/exemplary/simple-banner-skadn.json
@@ -0,0 +1,283 @@
+{
+  "mockBidRequest": {
+    "id": "1C86242D-9535-47D6-9576-7B1FE87F282C",
+    "site": {
+      "publisher": {
+        "id": "1100042525"
+      },
+      "page": "http://localhost:3000/server.html?pbjs_debug=true&endpoint=http://localhost:3000/bidder",
+      "ext": {
+        "data": {
+          "keywords": "power tools",
+          "search": "drill",
+          "content": {
+            "userrating": 4
+          }
+        }
+      }
+    },
+    "imp": [
+      {
+        "id": "1C86242D-9535-47D6-9576-7B1FE87F282C",
+        "banner": {
+          "format": [
+            {
+              "w": 320,
+              "h": 50
+            },
+            {
+              "w": 320,
+              "h": 250
+            }
+          ]
+        },
+        "instl": 1,
+        "bidfloor": 0.00123,
+        "ext": {
+          "bidder": {
+            "publisherId": "1100042525",
+            "adspaceId": "130563103"
+          },
+          "skadn": {
+            "versions": ["2.0", "2.1", "2.2", "3.0", "4.0"],
+            "sourceapp": "880047117",
+            "productpage": 1,
+            "skadnetlist": {
+              "max": 306,
+              "excl": [2, 8, 10, 55],
+              "addl": [
+                "cdkw7geqsh.skadnetwork",
+                "qyJfv329m4.skadnetwork"
+              ]
+            }
+          }
+        }
+      }
+    ],
+    "device": {
+      "ua": "test-user-agent",
+      "ip": "123.123.123.123",
+      "language": "en",
+      "dnt": 0
+    },
+    "user": {
+      "ext": {
+        "consent": "gdprConsentString",
+        "data": {
+          "keywords": "a,b",
+          "gender": "M",
+          "yob": 1984,
+          "geo": {
+            "country": "ca"
+          }
+        }
+      }
+    },
+    "regs": {
+      "coppa": 1,
+      "ext": {
+        "gdpr": 1,
+        "us_privacy": "uspConsentString",
+        "gpp": "gppString",
+        "gpp_sid": [
+          7
+        ]
+      }
+    }
+  },
+  "httpCalls": [
+    {
+      "expectedRequest": {
+        "headers": {
+          "Content-Type": [
+            "application/json;charset=utf-8"
+          ],
+          "Accept": [
+            "application/json"
+          ]
+        },
+        "uri": "https://prebid/bidder",
+        "body": {
+          "id": "1C86242D-9535-47D6-9576-7B1FE87F282C",
+          "imp": [
+            {
+              "id": "1C86242D-9535-47D6-9576-7B1FE87F282C",
+              "tagid": "130563103",
+              "bidfloor": 0.00123,
+              "instl": 1,
+              "banner": {
+                "h": 50,
+                "w": 320,
+                "format": [
+                  {
+                    "w": 320,
+                    "h": 50
+                  },
+                  {
+                    "w": 320,
+                    "h": 250
+                  }
+                ]
+              },
+              "ext": {
+                "skadn": {
+                  "versions": ["2.0", "2.1", "2.2", "3.0", "4.0"],
+                  "sourceapp": "880047117",
+                  "productpage": 1,
+                  "skadnetlist": {
+                    "max": 306,
+                    "excl": [2, 8, 10, 55],
+                    "addl": [
+                      "cdkw7geqsh.skadnetwork",
+                      "qyJfv329m4.skadnetwork"
+                    ]
+                  }
+                }
+              }
+            }
+          ],
+          "user": {
+            "ext": {
+              "consent": "gdprConsentString"
+            },
+            "gender": "M",
+            "keywords": "a,b",
+            "yob": 1984
+          },
+          "device": {
+            "ua": "test-user-agent",
+            "ip": "123.123.123.123",
+            "language": "en",
+            "dnt": 0
+          },
+          "regs": {
+            "coppa": 1,
+            "ext": {
+              "gdpr": 1,
+              "us_privacy": "uspConsentString",
+              "gpp": "gppString",
+              "gpp_sid": [
+                7
+              ]
+            }
+          },
+          "site": {
+            "publisher": {
+              "id": "1100042525"
+            },
+            "page": "http://localhost:3000/server.html?pbjs_debug=true&endpoint=http://localhost:3000/bidder",
+            "keywords": "power tools"
+          },
+          "ext": {
+            "client": "prebid_server_0.6"
+          }
+        }
+      },
+      "mockResponse": {
+        "status": 200,
+        "body": {
+          "id": "5ebea288-f13a-4754-be6d-4ade66c68877",
+          "seatbid": [
+            {
+              "seat": "CM6523",
+              "bid": [
+                {
+                  "adm": "{\"image\":{\"img\":{\"url\":\"//prebid-test.smaatolabs.net/img/320x50.jpg\",\"w\":350,\"h\":50,\"ctaurl\":\"//prebid-test.smaatolabs.net/track/ctaurl/1\"},\"impressiontrackers\":[\"//prebid-test.smaatolabs.net/track/imp/1\",\"//prebid-test.smaatolabs.net/track/imp/2\"],\"clicktrackers\":[\"//prebid-test.smaatolabs.net/track/click/1\",\"//prebid-test.smaatolabs.net/track/click/2\"]}}",
+                  "adomain": [
+                    "smaato.com"
+                  ],
+                  "bidderName": "smaato",
+                  "cid": "CM6523",
+                  "crid": "CR69381",
+                  "id": "6906aae8-7f74-4edd-9a4f-f49379a3cadd",
+                  "impid": "1C86242D-9535-47D6-9576-7B1FE87F282C",
+                  "iurl": "https://bidstalkcreatives.s3.amazonaws.com/1x1.png",
+                  "nurl": "https://ets-eu-west-1.track.smaato.net/v1/view?sessionId=e4e17adb-9599-42b1-bb5f-a1f1b3bee572&adSourceId=6906aae8-7f74-4edd-9a4f-f49379a3cadd&originalRequestTime=1552310449698&expires=1552311350698&winurl=ama8JbpJVpFWxvEja5viE3cLXFu58qRI8dGUh23xtsOn3N2-5UU0IwkgNEmR82pI37fcMXejL5IWTNAoW6Cnsjf-Dxl_vx2dUqMrVEevX-Vdx2VVnf-D5f73gZhvi4t36iPL8Dsw4aACekoLvVOV7-eXDjz7GHy60QFqcwKf5g2AlKPOInyZ6vJg_fn4qA9argvCRgwVybXE9Ndm2W0v8La4uFYWpJBOUveDDUrSQfzal7RsYvLb_OyaMlPHdrd_bwA9qqZWuyJXd-L9lxr7RQ%3D%3D%7CMw3kt91KJR0Uy5L-oNztAg%3D%3D&dpid=4XVofb_lH-__hr2JNGhKfg%3D%3D%7Cr9ciCU1cx3zmHXihItKO0g%3D%3D",
+                  "price": 0.01,
+                  "w": 350,
+                  "h": 50,
+                  "ext": {
+                    "skadn": {
+                      "version": "2.2",
+                      "network": "cdkw7geqsh.skadnetwork",
+                      "campaign": "45",
+                      "itunesitem": "123456789",
+                      "sourceapp": "880047117",
+                      "productpageid": "45812c9b-c296-43d3-c6a0-c5a02f74bf6e",
+                      "fidelities": [
+                        {
+                          "fidelity": 0,
+                          "signature": "MEQCIEQlmZRNfYzKBSE8QnhLTIHZZZWCFgZpRqRxHss65KoFAiAJgJKjdrWdkLUOCCjuEx2RmFS7daRzSVZRVZ8RyMyUXg==",
+                          "nonce": "473b1a16-b4ef-43ad-9591-fcf3aefa82a7",
+                          "timestamp": "1594406341"
+                        },
+                        {
+                          "fidelity": 1,
+                          "signature": "GRlMDktMmE5Zi00ZGMzLWE0ZDEtNTQ0YzQwMmU5MDk1IiwKICAgICAgICAgICAgICAgICAgInRpbWVzdGTk0NDA2MzQyIg==",
+                          "nonce": "e650de09-2a9f-4dc3-a4d1-544c402e9095",
+                          "timestamp": "1594406342"
+                        }
+                      ]
+                    }
+                  }
+                }
+              ]
+            }
+          ],
+          "bidid": "04db8629-179d-4bcd-acce-e54722969006",
+          "cur": "USD"
+        }
+      }
+    }
+  ],
+  "expectedBidResponses": [
+    {
+      "currency": "USD",
+      "bids": [
+        {
+          "bid": {
+            "adm": "<div style=\"cursor:pointer\" onclick=\"fetch(decodeURIComponent('%2F%2Fprebid-test.smaatolabs.net%2Ftrack%2Fclick%2F1'.replace(/\\+/g, ' ')), {cache: 'no-cache'});fetch(decodeURIComponent('%2F%2Fprebid-test.smaatolabs.net%2Ftrack%2Fclick%2F2'.replace(/\\+/g, ' ')), {cache: 'no-cache'});;window.open(decodeURIComponent('%2F%2Fprebid-test.smaatolabs.net%2Ftrack%2Fctaurl%2F1'.replace(/\\+/g, ' ')));\"><img src=\"//prebid-test.smaatolabs.net/img/320x50.jpg\" width=\"350\" height=\"50\"/><img src=\"//prebid-test.smaatolabs.net/track/imp/1\" alt=\"\" width=\"0\" height=\"0\"/><img src=\"//prebid-test.smaatolabs.net/track/imp/2\" alt=\"\" width=\"0\" height=\"0\"/></div>",
+            "adomain": [
+              "smaato.com"
+            ],
+            "cid": "CM6523",
+            "crid": "CR69381",
+            "id": "6906aae8-7f74-4edd-9a4f-f49379a3cadd",
+            "impid": "1C86242D-9535-47D6-9576-7B1FE87F282C",
+            "iurl": "https://bidstalkcreatives.s3.amazonaws.com/1x1.png",
+            "nurl": "https://ets-eu-west-1.track.smaato.net/v1/view?sessionId=e4e17adb-9599-42b1-bb5f-a1f1b3bee572&adSourceId=6906aae8-7f74-4edd-9a4f-f49379a3cadd&originalRequestTime=1552310449698&expires=1552311350698&winurl=ama8JbpJVpFWxvEja5viE3cLXFu58qRI8dGUh23xtsOn3N2-5UU0IwkgNEmR82pI37fcMXejL5IWTNAoW6Cnsjf-Dxl_vx2dUqMrVEevX-Vdx2VVnf-D5f73gZhvi4t36iPL8Dsw4aACekoLvVOV7-eXDjz7GHy60QFqcwKf5g2AlKPOInyZ6vJg_fn4qA9argvCRgwVybXE9Ndm2W0v8La4uFYWpJBOUveDDUrSQfzal7RsYvLb_OyaMlPHdrd_bwA9qqZWuyJXd-L9lxr7RQ%3D%3D%7CMw3kt91KJR0Uy5L-oNztAg%3D%3D&dpid=4XVofb_lH-__hr2JNGhKfg%3D%3D%7Cr9ciCU1cx3zmHXihItKO0g%3D%3D",
+            "price": 0.01,
+            "w": 350,
+            "h": 50,
+            "exp": 300,
+            "ext": {
+              "skadn": {
+                "version": "2.2",
+                "network": "cdkw7geqsh.skadnetwork",
+                "campaign": "45",
+                "itunesitem": "123456789",
+                "sourceapp": "880047117",
+                "productpageid": "45812c9b-c296-43d3-c6a0-c5a02f74bf6e",
+                "fidelities": [
+                  {
+                    "fidelity": 0,
+                    "signature": "MEQCIEQlmZRNfYzKBSE8QnhLTIHZZZWCFgZpRqRxHss65KoFAiAJgJKjdrWdkLUOCCjuEx2RmFS7daRzSVZRVZ8RyMyUXg==",
+                    "nonce": "473b1a16-b4ef-43ad-9591-fcf3aefa82a7",
+                    "timestamp": "1594406341"
+                  },
+                  {
+                    "fidelity": 1,
+                    "signature": "GRlMDktMmE5Zi00ZGMzLWE0ZDEtNTQ0YzQwMmU5MDk1IiwKICAgICAgICAgICAgICAgICAgInRpbWVzdGTk0NDA2MzQyIg==",
+                    "nonce": "e650de09-2a9f-4dc3-a4d1-544c402e9095",
+                    "timestamp": "1594406342"
+                  }
+                ]
+              }
+            }
+          },
+          "type": "banner"
+        }
+      ]
+    }
+  ]
+}
\ No newline at end of file
diff --git a/adapters/smaato/smaatotest/exemplary/simple-banner.json b/adapters/smaato/smaatotest/exemplary/simple-banner.json
index f6f1f9d7..0596c473 100644
--- a/adapters/smaato/smaatotest/exemplary/simple-banner.json
+++ b/adapters/smaato/smaatotest/exemplary/simple-banner.json
@@ -133,7 +133,7 @@
             "keywords": "power tools"
           },
           "ext": {
-            "client": "prebid_server_0.5"
+            "client": "prebid_server_0.6"
           }
         }
       },
diff --git a/adapters/smaato/smaatotest/exemplary/video-app.json b/adapters/smaato/smaatotest/exemplary/video-app.json
index 33eb026c..79bd41ef 100644
--- a/adapters/smaato/smaatotest/exemplary/video-app.json
+++ b/adapters/smaato/smaatotest/exemplary/video-app.json
@@ -165,7 +165,7 @@
                         "keywords": "keywords"
                     },
                     "ext": {
-                        "client": "prebid_server_0.5"
+                        "client": "prebid_server_0.6"
                     }
                 }
             },
diff --git a/adapters/smaato/smaatotest/exemplary/video.json b/adapters/smaato/smaatotest/exemplary/video.json
index 17af4b36..42d56e60 100644
--- a/adapters/smaato/smaatotest/exemplary/video.json
+++ b/adapters/smaato/smaatotest/exemplary/video.json
@@ -144,7 +144,7 @@
                         }
                     },
                     "ext": {
-                        "client": "prebid_server_0.5"
+                        "client": "prebid_server_0.6"
                     }
                 }
             },
diff --git a/adapters/smaato/smaatotest/supplemental/adtype-header-response.json b/adapters/smaato/smaatotest/supplemental/adtype-header-response.json
index d5bbd440..bebbc161 100644
--- a/adapters/smaato/smaatotest/supplemental/adtype-header-response.json
+++ b/adapters/smaato/smaatotest/supplemental/adtype-header-response.json
@@ -125,7 +125,7 @@
             "keywords": "power tools"
           },
           "ext": {
-            "client": "prebid_server_0.5"
+            "client": "prebid_server_0.6"
           }
         }
       },
diff --git a/adapters/smaato/smaatotest/supplemental/bad-adm-response.json b/adapters/smaato/smaatotest/supplemental/bad-adm-response.json
index 0e898e8e..04a7248d 100644
--- a/adapters/smaato/smaatotest/supplemental/bad-adm-response.json
+++ b/adapters/smaato/smaatotest/supplemental/bad-adm-response.json
@@ -125,7 +125,7 @@
             "keywords": "power tools"
           },
           "ext": {
-            "client": "prebid_server_0.5"
+            "client": "prebid_server_0.6"
           }
         }
       },
diff --git a/adapters/smaato/smaatotest/supplemental/bad-adtype-header-response.json b/adapters/smaato/smaatotest/supplemental/bad-adtype-header-response.json
index 0b3e6dcd..679a34f7 100644
--- a/adapters/smaato/smaatotest/supplemental/bad-adtype-header-response.json
+++ b/adapters/smaato/smaatotest/supplemental/bad-adtype-header-response.json
@@ -125,7 +125,7 @@
             "keywords": "power tools"
           },
           "ext": {
-            "client": "prebid_server_0.5"
+            "client": "prebid_server_0.6"
           }
         }
       },
diff --git a/adapters/smaato/smaatotest/supplemental/bad-expires-header-response.json b/adapters/smaato/smaatotest/supplemental/bad-expires-header-response.json
index 980dc356..a990b92b 100644
--- a/adapters/smaato/smaatotest/supplemental/bad-expires-header-response.json
+++ b/adapters/smaato/smaatotest/supplemental/bad-expires-header-response.json
@@ -125,7 +125,7 @@
             "keywords": "power tools"
           },
           "ext": {
-            "client": "prebid_server_0.5"
+            "client": "prebid_server_0.6"
           }
         }
       },
diff --git a/adapters/smaato/smaatotest/supplemental/bad-skadn-format-request.json b/adapters/smaato/smaatotest/supplemental/bad-skadn-format-request.json
new file mode 100644
index 00000000..b996d0cf
--- /dev/null
+++ b/adapters/smaato/smaatotest/supplemental/bad-skadn-format-request.json
@@ -0,0 +1,59 @@
+{
+  "mockBidRequest": {
+    "id": "1C86242D-9535-47D6-9576-7B1FE87F282C",
+    "site": {
+      "publisher": {
+        "id": "1100042525"
+      },
+      "page": "http://localhost:3000/server.html?pbjs_debug=true&endpoint=http://localhost:3000/bidder"
+    },
+    "imp": [
+      {
+        "id": "1C86242D-9535-47D6-9576-7B1FE87F282C",
+        "banner": {
+          "format": [
+            {
+              "w": 320,
+              "h": 50
+            }
+          ]
+        },
+        "ext": {
+          "bidder": {
+            "publisherId": "1100042525",
+            "adspaceId": "130563103"
+          },
+          "skadn": []
+        }
+      },
+      {
+        "id": "1C86242D-9535-47D6-9576-7B1FE87F282D",
+        "banner": {
+          "format": [
+            {
+              "w": 320,
+              "h": 50
+            }
+          ]
+        },
+        "ext": {
+          "bidder": {
+            "publisherId": "1100042525",
+            "adspaceId": "130563103"
+          },
+          "skadn": ""
+        }
+      }
+    ]
+  },
+  "expectedMakeRequestsErrors": [
+    {
+      "value": "Invalid imp.ext.skadn.",
+      "comparison": "literal"
+    },
+    {
+      "value": "Invalid imp.ext.skadn.",
+      "comparison": "literal"
+    }
+  ]
+}
\ No newline at end of file
diff --git a/adapters/smaato/smaatotest/supplemental/bad-status-code-response.json b/adapters/smaato/smaatotest/supplemental/bad-status-code-response.json
index 09c0d97e..84b8fe98 100644
--- a/adapters/smaato/smaatotest/supplemental/bad-status-code-response.json
+++ b/adapters/smaato/smaatotest/supplemental/bad-status-code-response.json
@@ -125,7 +125,7 @@
             "keywords": "power tools"
           },
           "ext": {
-            "client": "prebid_server_0.5"
+            "client": "prebid_server_0.6"
           }
         }
       },
diff --git a/adapters/smaato/smaatotest/supplemental/banner-w-and-h.json b/adapters/smaato/smaatotest/supplemental/banner-w-and-h.json
index 4f1ddca4..ca1a029a 100644
--- a/adapters/smaato/smaatotest/supplemental/banner-w-and-h.json
+++ b/adapters/smaato/smaatotest/supplemental/banner-w-and-h.json
@@ -107,7 +107,7 @@
             "keywords": "power tools"
           },
           "ext": {
-            "client": "prebid_server_0.5"
+            "client": "prebid_server_0.6"
           }
         }
       },
diff --git a/adapters/smaato/smaatotest/supplemental/expires-header-response.json b/adapters/smaato/smaatotest/supplemental/expires-header-response.json
index 2002f8f3..86e1b101 100644
--- a/adapters/smaato/smaatotest/supplemental/expires-header-response.json
+++ b/adapters/smaato/smaatotest/supplemental/expires-header-response.json
@@ -125,7 +125,7 @@
             "keywords": "power tools"
           },
           "ext": {
-            "client": "prebid_server_0.5"
+            "client": "prebid_server_0.6"
           }
         }
       },
diff --git a/adapters/smaato/smaatotest/supplemental/no-bid-response.json b/adapters/smaato/smaatotest/supplemental/no-bid-response.json
index de282d6d..76ad48a4 100644
--- a/adapters/smaato/smaatotest/supplemental/no-bid-response.json
+++ b/adapters/smaato/smaatotest/supplemental/no-bid-response.json
@@ -125,7 +125,7 @@
             "keywords": "power tools"
           },
           "ext": {
-            "client": "prebid_server_0.5"
+            "client": "prebid_server_0.6"
           }
         }
       },
diff --git a/adapters/smaato/smaatotest/supplemental/no-consent-info-request.json b/adapters/smaato/smaatotest/supplemental/no-consent-info-request.json
index a2883b05..09b3a1fb 100644
--- a/adapters/smaato/smaatotest/supplemental/no-consent-info-request.json
+++ b/adapters/smaato/smaatotest/supplemental/no-consent-info-request.json
@@ -72,7 +72,7 @@
             }
           },
           "ext": {
-            "client": "prebid_server_0.5"
+            "client": "prebid_server_0.6"
           }
         }
       },
diff --git a/adapters/smaato/smaatotest/supplemental/outdated-expires-header-response.json b/adapters/smaato/smaatotest/supplemental/outdated-expires-header-response.json
index 138e0ac8..2c983fe2 100644
--- a/adapters/smaato/smaatotest/supplemental/outdated-expires-header-response.json
+++ b/adapters/smaato/smaatotest/supplemental/outdated-expires-header-response.json
@@ -125,7 +125,7 @@
             "keywords": "power tools"
           },
           "ext": {
-            "client": "prebid_server_0.5"
+            "client": "prebid_server_0.6"
           }
         }
       },
diff --git a/adapters/smaato/smaatotest/video/multiple-adpods-skadn.json b/adapters/smaato/smaatotest/video/multiple-adpods-skadn.json
new file mode 100644
index 00000000..fe9e9d4d
--- /dev/null
+++ b/adapters/smaato/smaatotest/video/multiple-adpods-skadn.json
@@ -0,0 +1,813 @@
+{
+    "mockBidRequest": {
+        "id": "447a0a1d-389d-4730-a418-3777e95de7bd",
+        "imp": [
+            {
+                "id": "1_1",
+                "video": {
+                    "mimes": [
+                        "video/mp4",
+                        "video/3gpp"
+                    ],
+                    "minduration": 5,
+                    "maxduration": 30,
+                    "protocols": [
+                        7
+                    ],
+                    "w": 1024,
+                    "h": 768,
+                    "startdelay": 0,
+                    "linearity": 1,
+                    "skip": 1,
+                    "skipmin": 5,
+                    "api": [
+                        7
+                    ]
+                },
+                "ext": {
+                    "bidder": {
+                        "publisherId": "1100042525",
+                        "adbreakId": "400000001"
+                    },
+                    "skadn": {
+                        "versions": ["2.0", "2.1", "2.2", "3.0", "4.0"],
+                        "sourceapp": "880047117",
+                        "productpage": 1,
+                        "skadnetlist": {
+                          "max": 306,
+                          "excl": [2, 8, 10, 55],
+                          "addl": [
+                            "cdkw7geqsh.skadnetwork",
+                            "qyJfv329m4.skadnetwork"
+                          ]
+                        }
+                    }
+                }
+            },
+            {
+                "id": "1_2",
+                "video": {
+                    "mimes": [
+                        "video/mp4",
+                        "video/3gpp"
+                    ],
+                    "minduration": 5,
+                    "maxduration": 30,
+                    "protocols": [
+                        7
+                    ],
+                    "w": 1024,
+                    "h": 768,
+                    "startdelay": 0,
+                    "linearity": 1,
+                    "skip": 1,
+                    "skipmin": 5,
+                    "api": [
+                        7
+                    ]
+                },
+                "ext": {
+                    "bidder": {
+                        "publisherId": "1100042525",
+                        "adbreakId": "400000001"
+                    },
+                    "skadn": {
+                        "versions": ["2.0", "2.1", "2.2", "3.0", "4.0"],
+                        "sourceapp": "880047118",
+                        "productpage": 1,
+                        "skadnetlist": {
+                          "max": 306,
+                          "excl": [2, 8, 10, 55],
+                          "addl": [
+                            "cdkw7geqsh.skadnetwork",
+                            "qyJfv329m4.skadnetwork"
+                          ]
+                        }
+                    }
+                }
+            },
+            {
+                "id": "2_1",
+                "video": {
+                    "mimes": [
+                        "video/mp4",
+                        "video/3gpp"
+                    ],
+                    "minduration": 5,
+                    "maxduration": 30,
+                    "protocols": [
+                        7
+                    ],
+                    "w": 1024,
+                    "h": 768,
+                    "startdelay": 0,
+                    "linearity": 1,
+                    "skip": 1,
+                    "skipmin": 5,
+                    "api": [
+                        7
+                    ]
+                },
+                "ext": {
+                    "bidder": {
+                        "publisherId": "1100042525",
+                        "adbreakId": "400000001"
+                    },
+                    "skadn": {
+                        "versions": ["2.0", "2.1", "2.2", "3.0", "4.0"],
+                        "sourceapp": "880047119",
+                        "productpage": 1,
+                        "skadnetlist": {
+                          "max": 306,
+                          "excl": [2, 8, 10, 55],
+                          "addl": [
+                            "cdkw7geqsh.skadnetwork",
+                            "qyJfv329m4.skadnetwork"
+                          ]
+                        }
+                    }
+                }
+            },
+            {
+                "id": "2_2",
+                "video": {
+                    "mimes": [
+                        "video/mp4",
+                        "video/3gpp"
+                    ],
+                    "minduration": 5,
+                    "maxduration": 30,
+                    "protocols": [
+                        7
+                    ],
+                    "w": 1024,
+                    "h": 768,
+                    "startdelay": 0,
+                    "linearity": 1,
+                    "skip": 1,
+                    "skipmin": 5,
+                    "api": [
+                        7
+                    ]
+                },
+                "ext": {
+                    "bidder": {
+                        "publisherId": "1100042525",
+                        "adbreakId": "400000001"
+                    },
+                    "skadn": {
+                        "versions": ["2.0", "2.1", "2.2", "3.0", "4.0"],
+                        "sourceapp": "880047120",
+                        "productpage": 1,
+                        "skadnetlist": {
+                          "max": 306,
+                          "excl": [2, 8, 10, 55],
+                          "addl": [
+                            "cdkw7geqsh.skadnetwork",
+                            "qyJfv329m4.skadnetwork"
+                          ]
+                        }
+                    }
+                }
+            }
+        ],
+        "site": {
+            "publisher": {
+                "id": "1100042525"
+            },
+            "content": {
+                "title": "a-title",
+                "season": "a-season",
+                "series": "a-series",
+                "episode": 1,
+                "len": 900,
+                "livestream": 1
+            }
+        },
+        "device": {
+            "ua": "test-user-agent"
+        },
+        "user": {
+            "ext": {
+                "data": {}
+            }
+        }
+    },
+    "httpCalls": [
+        {
+            "expectedRequest": {
+                "headers": {
+                    "Content-Type": [
+                        "application/json;charset=utf-8"
+                    ],
+                    "Accept": [
+                        "application/json"
+                    ]
+                },
+                "uri": "https://prebid/bidder",
+                "body": {
+                    "id": "447a0a1d-389d-4730-a418-3777e95de7bd",
+                    "imp": [
+                        {
+                            "id": "1_1",
+                            "tagid": "400000001",
+                            "video": {
+                                "w": 1024,
+                                "h": 768,
+                                "mimes": [
+                                    "video/mp4",
+                                    "video/3gpp"
+                                ],
+                                "minduration": 5,
+                                "startdelay": 0,
+                                "linearity": 1,
+                                "maxduration": 30,
+                                "skip": 1,
+                                "protocols": [
+                                    7
+                                ],
+                                "skipmin": 5,
+                                "api": [
+                                    7
+                                ],
+                                "sequence": 1,
+                                "ext": {
+                                    "context": "adpod"
+                                }
+                            },
+                            "ext": {
+                                "skadn": {
+                                    "versions": ["2.0", "2.1", "2.2", "3.0", "4.0"],
+                                    "sourceapp": "880047117",
+                                    "productpage": 1,
+                                    "skadnetlist": {
+                                      "max": 306,
+                                      "excl": [2, 8, 10, 55],
+                                      "addl": [
+                                        "cdkw7geqsh.skadnetwork",
+                                        "qyJfv329m4.skadnetwork"
+                                      ]
+                                    }
+                                }
+                            }
+                        },
+                        {
+                            "id": "1_2",
+                            "tagid": "400000001",
+                            "video": {
+                                "w": 1024,
+                                "h": 768,
+                                "mimes": [
+                                    "video/mp4",
+                                    "video/3gpp"
+                                ],
+                                "minduration": 5,
+                                "startdelay": 0,
+                                "linearity": 1,
+                                "maxduration": 30,
+                                "skip": 1,
+                                "protocols": [
+                                    7
+                                ],
+                                "skipmin": 5,
+                                "api": [
+                                    7
+                                ],
+                                "sequence": 2,
+                                "ext": {
+                                    "context": "adpod"
+                                }
+                            }
+                        }
+                    ],
+                    "user": {
+                        "ext": {
+                        }
+                    },
+                    "device": {
+                        "ua": "test-user-agent"
+                    },
+                    "site": {
+                        "publisher": {
+                            "id": "1100042525"
+                        },
+                        "content": {
+                            "title": "a-title",
+                            "season": "a-season",
+                            "series": "a-series",
+                            "episode": 1,
+                            "len": 900,
+                            "livestream": 1
+                        }
+                    },
+                    "ext": {
+                        "client": "prebid_server_0.6"
+                    }
+                }
+            },
+            "mockResponse": {
+                "status": 200,
+                "body": {
+                    "id": "5ebea288-f13a-4754-be6d-4ade66c68877",
+                    "seatbid": [
+                        {
+                            "seat": "CM6523",
+                            "bid": [
+                                {
+                                    "adm": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><VAST version=\"2.0\"></VAST>",
+                                    "adomain": [
+                                        "smaato.com"
+                                    ],
+                                    "bidderName": "smaato",
+                                    "cid": "CM6523",
+                                    "crid": "CR69381",
+                                    "id": "6906aae8-7f74-4edd-9a4f-f49379a3cadd",
+                                    "impid": "1_1",
+                                    "iurl": "https://iurl",
+                                    "nurl": "https://nurl",
+                                    "price": 0.01,
+                                    "w": 1024,
+                                    "h": 768,
+                                    "cat": ["IAB1"],
+                                    "ext": {
+                                        "duration": 5,
+                                        "skadn": {
+                                            "version": "2.2",
+                                            "network": "cdkw7geqsh.skadnetwork",
+                                            "campaign": "45",
+                                            "itunesitem": "123456789",
+                                            "sourceapp": "880047117",
+                                            "productpageid": "45812c9b-c296-43d3-c6a0-c5a02f74bf6e",
+                                            "fidelities": [
+                                              {
+                                                "fidelity": 0,
+                                                "signature": "MEQCIEQlmZRNfYzKBSE8QnhLTIHZZZWCFgZpRqRxHss65KoFAiAJgJKjdrWdkLUOCCjuEx2RmFS7daRzSVZRVZ8RyMyUXg==",
+                                                "nonce": "473b1a16-b4ef-43ad-9591-fcf3aefa82a7",
+                                                "timestamp": "1594406341"
+                                              },
+                                              {
+                                                "fidelity": 1,
+                                                "signature": "GRlMDktMmE5Zi00ZGMzLWE0ZDEtNTQ0YzQwMmU5MDk1IiwKICAgICAgICAgICAgICAgICAgInRpbWVzdGTk0NDA2MzQyIg==",
+                                                "nonce": "e650de09-2a9f-4dc3-a4d1-544c402e9095",
+                                                "timestamp": "1594406342"
+                                              }
+                                            ]
+                                        }
+                                    }
+                                },
+                                {
+                                    "adm": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><VAST version=\"2.0\"></VAST>",
+                                    "adomain": [
+                                        "smaato.com"
+                                    ],
+                                    "bidderName": "smaato",
+                                    "cid": "CM6523",
+                                    "crid": "CR69381",
+                                    "id": "6906aae8-7f74-4edd-9a4f-f49379a3cadd",
+                                    "impid": "1_2",
+                                    "iurl": "https://iurl",
+                                    "nurl": "https://nurl",
+                                    "price": 0.01,
+                                    "w": 1024,
+                                    "h": 768,
+                                    "cat": ["IAB2"],
+                                    "ext": {
+                                        "duration": 30,
+                                        "skadn": {
+                                            "version": "2.2",
+                                            "network": "qyJfv329m4.skadnetwork",
+                                            "campaign": "45",
+                                            "itunesitem": "123456789",
+                                            "sourceapp": "880047117",
+                                            "productpageid": "45812c9b-c296-43d3-c6a0-c5a02f74bf6e",
+                                            "fidelities": [
+                                              {
+                                                "fidelity": 0,
+                                                "signature": "MEQCIEQlmZRNfYzKBSE8QnhLTIHZZZWCFgZpRqRxHss65KoFAiAJgJKjdrWdkLUOCCjuEx2RmFS7daRzSVZRVZ8RyMyUXg==",
+                                                "nonce": "473b1a16-b4ef-43ad-9591-fcf3aefa82a7",
+                                                "timestamp": "1594406341"
+                                              },
+                                              {
+                                                "fidelity": 1,
+                                                "signature": "GRlMDktMmE5Zi00ZGMzLWE0ZDEtNTQ0YzQwMmU5MDk1IiwKICAgICAgICAgICAgICAgICAgInRpbWVzdGTk0NDA2MzQyIg==",
+                                                "nonce": "e650de09-2a9f-4dc3-a4d1-544c402e9095",
+                                                "timestamp": "1594406342"
+                                              }
+                                            ]
+                                        }
+                                    }
+                                }
+                            ]
+                        }
+                    ],
+                    "bidid": "04db8629-179d-4bcd-acce-e54722969006",
+                    "cur": "USD"
+                }
+            }
+        },
+        {
+            "expectedRequest": {
+                "headers": {
+                    "Content-Type": [
+                        "application/json;charset=utf-8"
+                    ],
+                    "Accept": [
+                        "application/json"
+                    ]
+                },
+                "uri": "https://prebid/bidder",
+                "body": {
+                    "id": "447a0a1d-389d-4730-a418-3777e95de7bd",
+                    "imp": [
+                        {
+                            "id": "2_1",
+                            "tagid": "400000001",
+                            "video": {
+                                "w": 1024,
+                                "h": 768,
+                                "mimes": [
+                                    "video/mp4",
+                                    "video/3gpp"
+                                ],
+                                "minduration": 5,
+                                "startdelay": 0,
+                                "linearity": 1,
+                                "maxduration": 30,
+                                "skip": 1,
+                                "protocols": [
+                                    7
+                                ],
+                                "skipmin": 5,
+                                "api": [
+                                    7
+                                ],
+                                "sequence": 1,
+                                "ext": {
+                                    "context": "adpod"
+                                }
+                            },
+                            "ext": {
+                                "skadn": {
+                                    "versions": ["2.0", "2.1", "2.2", "3.0", "4.0"],
+                                    "sourceapp": "880047119",
+                                    "productpage": 1,
+                                    "skadnetlist": {
+                                      "max": 306,
+                                      "excl": [2, 8, 10, 55],
+                                      "addl": [
+                                        "cdkw7geqsh.skadnetwork",
+                                        "qyJfv329m4.skadnetwork"
+                                      ]
+                                    }
+                                }
+                            }
+                        },
+                        {
+                            "id": "2_2",
+                            "tagid": "400000001",
+                            "video": {
+                                "w": 1024,
+                                "h": 768,
+                                "mimes": [
+                                    "video/mp4",
+                                    "video/3gpp"
+                                ],
+                                "minduration": 5,
+                                "startdelay": 0,
+                                "linearity": 1,
+                                "maxduration": 30,
+                                "skip": 1,
+                                "protocols": [
+                                    7
+                                ],
+                                "skipmin": 5,
+                                "api": [
+                                    7
+                                ],
+                                "sequence": 2,
+                                "ext": {
+                                    "context": "adpod"
+                                }
+                            }
+                        }
+                    ],
+                    "user": {
+                        "ext": {
+                        }
+                    },
+                    "device": {
+                        "ua": "test-user-agent"
+                    },
+                    "site": {
+                        "publisher": {
+                            "id": "1100042525"
+                        },
+                        "content": {
+                            "title": "a-title",
+                            "season": "a-season",
+                            "series": "a-series",
+                            "episode": 1,
+                            "len": 900,
+                            "livestream": 1
+                        }
+                    },
+                    "ext": {
+                        "client": "prebid_server_0.6"
+                    }
+                }
+            },
+            "mockResponse": {
+                "status": 200,
+                "body": {
+                    "id": "5ebea288-f13a-4754-be6d-4ade66c68877",
+                    "seatbid": [
+                        {
+                            "seat": "CM6523",
+                            "bid": [
+                                {
+                                    "adm": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><VAST version=\"2.0\"></VAST>",
+                                    "adomain": [
+                                        "smaato.com"
+                                    ],
+                                    "bidderName": "smaato",
+                                    "cid": "CM6523",
+                                    "crid": "CR69381",
+                                    "id": "6906aae8-7f74-4edd-9a4f-f49379a3cadd",
+                                    "impid": "2_1",
+                                    "iurl": "https://iurl",
+                                    "nurl": "https://nurl",
+                                    "price": 0.01,
+                                    "w": 1024,
+                                    "h": 768,
+                                    "cat": ["IAB1"],
+                                    "ext": {
+                                        "duration": 5,
+                                        "skadn": {
+                                            "version": "2.2",
+                                            "network": "cdkw7geqsh.skadnetwork",
+                                            "campaign": "45",
+                                            "itunesitem": "123456789",
+                                            "sourceapp": "880047119",
+                                            "productpageid": "45812c9b-c296-43d3-c6a0-c5a02f74bf6e",
+                                            "fidelities": [
+                                              {
+                                                "fidelity": 0,
+                                                "signature": "MEQCIEQlmZRNfYzKBSE8QnhLTIHZZZWCFgZpRqRxHss65KoFAiAJgJKjdrWdkLUOCCjuEx2RmFS7daRzSVZRVZ8RyMyUXg==",
+                                                "nonce": "473b1a16-b4ef-43ad-9591-fcf3aefa82a7",
+                                                "timestamp": "1594406341"
+                                              },
+                                              {
+                                                "fidelity": 1,
+                                                "signature": "GRlMDktMmE5Zi00ZGMzLWE0ZDEtNTQ0YzQwMmU5MDk1IiwKICAgICAgICAgICAgICAgICAgInRpbWVzdGTk0NDA2MzQyIg==",
+                                                "nonce": "e650de09-2a9f-4dc3-a4d1-544c402e9095",
+                                                "timestamp": "1594406342"
+                                              }
+                                            ]
+                                        }
+                                    }
+                                },
+                                {
+                                    "adm": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><VAST version=\"2.0\"></VAST>",
+                                    "adomain": [
+                                        "smaato.com"
+                                    ],
+                                    "bidderName": "smaato",
+                                    "cid": "CM6523",
+                                    "crid": "CR69381",
+                                    "id": "6906aae8-7f74-4edd-9a4f-f49379a3cadd",
+                                    "impid": "2_2",
+                                    "iurl": "https://iurl",
+                                    "nurl": "https://nurl",
+                                    "price": 0.01,
+                                    "w": 1024,
+                                    "h": 768,
+                                    "cat": ["IAB2"],
+                                    "ext": {
+                                        "duration": 30,
+                                        "skadn": {
+                                            "version": "2.2",
+                                            "network": "qyJfv329m4.skadnetwork",
+                                            "campaign": "45",
+                                            "itunesitem": "123456789",
+                                            "sourceapp": "880047119",
+                                            "productpageid": "45812c9b-c296-43d3-c6a0-c5a02f74bf6e",
+                                            "fidelities": [
+                                              {
+                                                "fidelity": 0,
+                                                "signature": "MEQCIEQlmZRNfYzKBSE8QnhLTIHZZZWCFgZpRqRxHss65KoFAiAJgJKjdrWdkLUOCCjuEx2RmFS7daRzSVZRVZ8RyMyUXg==",
+                                                "nonce": "473b1a16-b4ef-43ad-9591-fcf3aefa82a7",
+                                                "timestamp": "1594406341"
+                                              },
+                                              {
+                                                "fidelity": 1,
+                                                "signature": "GRlMDktMmE5Zi00ZGMzLWE0ZDEtNTQ0YzQwMmU5MDk1IiwKICAgICAgICAgICAgICAgICAgInRpbWVzdGTk0NDA2MzQyIg==",
+                                                "nonce": "e650de09-2a9f-4dc3-a4d1-544c402e9095",
+                                                "timestamp": "1594406342"
+                                              }
+                                            ]
+                                        }
+                                    }
+                                }
+                            ]
+                        }
+                    ],
+                    "bidid": "04db8629-179d-4bcd-acce-e54722969006",
+                    "cur": "USD"
+                }
+            }
+        }
+    ],
+    "expectedBidResponses": [
+        {
+            "currency": "USD",
+            "bids": [
+                {
+                    "bid": {
+                        "adm": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><VAST version=\"2.0\"></VAST>",
+                        "adomain": [
+                            "smaato.com"
+                        ],
+                        "cid": "CM6523",
+                        "crid": "CR69381",
+                        "id": "6906aae8-7f74-4edd-9a4f-f49379a3cadd",
+                        "impid": "1_1",
+                        "iurl": "https://iurl",
+                        "nurl": "https://nurl",
+                        "price": 0.01,
+                        "w": 1024,
+                        "h": 768,
+                        "cat": ["IAB1"],
+                        "ext": {
+                            "duration": 5,
+                            "skadn": {
+                                "version": "2.2",
+                                "network": "cdkw7geqsh.skadnetwork",
+                                "campaign": "45",
+                                "itunesitem": "123456789",
+                                "sourceapp": "880047117",
+                                "productpageid": "45812c9b-c296-43d3-c6a0-c5a02f74bf6e",
+                                "fidelities": [
+                                  {
+                                    "fidelity": 0,
+                                    "signature": "MEQCIEQlmZRNfYzKBSE8QnhLTIHZZZWCFgZpRqRxHss65KoFAiAJgJKjdrWdkLUOCCjuEx2RmFS7daRzSVZRVZ8RyMyUXg==",
+                                    "nonce": "473b1a16-b4ef-43ad-9591-fcf3aefa82a7",
+                                    "timestamp": "1594406341"
+                                  },
+                                  {
+                                    "fidelity": 1,
+                                    "signature": "GRlMDktMmE5Zi00ZGMzLWE0ZDEtNTQ0YzQwMmU5MDk1IiwKICAgICAgICAgICAgICAgICAgInRpbWVzdGTk0NDA2MzQyIg==",
+                                    "nonce": "e650de09-2a9f-4dc3-a4d1-544c402e9095",
+                                    "timestamp": "1594406342"
+                                  }
+                                ]
+                            }
+                        },
+                        "exp": 300
+                    },
+                    "type": "video"
+
+                },
+                {
+                    "bid": {
+                        "adm": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><VAST version=\"2.0\"></VAST>",
+                        "adomain": [
+                            "smaato.com"
+                        ],
+                        "cid": "CM6523",
+                        "crid": "CR69381",
+                        "id": "6906aae8-7f74-4edd-9a4f-f49379a3cadd",
+                        "impid": "1_2",
+                        "iurl": "https://iurl",
+                        "nurl": "https://nurl",
+                        "price": 0.01,
+                        "w": 1024,
+                        "h": 768,
+                        "cat": ["IAB2"],
+                        "ext": {
+                            "duration": 30,
+                            "skadn": {
+                                "version": "2.2",
+                                "network": "qyJfv329m4.skadnetwork",
+                                "campaign": "45",
+                                "itunesitem": "123456789",
+                                "sourceapp": "880047117",
+                                "productpageid": "45812c9b-c296-43d3-c6a0-c5a02f74bf6e",
+                                "fidelities": [
+                                  {
+                                    "fidelity": 0,
+                                    "signature": "MEQCIEQlmZRNfYzKBSE8QnhLTIHZZZWCFgZpRqRxHss65KoFAiAJgJKjdrWdkLUOCCjuEx2RmFS7daRzSVZRVZ8RyMyUXg==",
+                                    "nonce": "473b1a16-b4ef-43ad-9591-fcf3aefa82a7",
+                                    "timestamp": "1594406341"
+                                  },
+                                  {
+                                    "fidelity": 1,
+                                    "signature": "GRlMDktMmE5Zi00ZGMzLWE0ZDEtNTQ0YzQwMmU5MDk1IiwKICAgICAgICAgICAgICAgICAgInRpbWVzdGTk0NDA2MzQyIg==",
+                                    "nonce": "e650de09-2a9f-4dc3-a4d1-544c402e9095",
+                                    "timestamp": "1594406342"
+                                  }
+                                ]
+                            }
+                        },
+                        "exp": 300
+                    },
+                    "type": "video"
+                }
+            ]
+        },
+        {
+            "currency": "USD",
+            "bids": [
+                {
+                    "bid": {
+                        "adm": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><VAST version=\"2.0\"></VAST>",
+                        "adomain": [
+                            "smaato.com"
+                        ],
+                        "cid": "CM6523",
+                        "crid": "CR69381",
+                        "id": "6906aae8-7f74-4edd-9a4f-f49379a3cadd",
+                        "impid": "2_1",
+                        "iurl": "https://iurl",
+                        "nurl": "https://nurl",
+                        "price": 0.01,
+                        "w": 1024,
+                        "h": 768,
+                        "cat": ["IAB1"],
+                        "ext": {
+                            "duration": 5,
+                            "skadn": {
+                                "version": "2.2",
+                                "network": "cdkw7geqsh.skadnetwork",
+                                "campaign": "45",
+                                "itunesitem": "123456789",
+                                "sourceapp": "880047119",
+                                "productpageid": "45812c9b-c296-43d3-c6a0-c5a02f74bf6e",
+                                "fidelities": [
+                                  {
+                                    "fidelity": 0,
+                                    "signature": "MEQCIEQlmZRNfYzKBSE8QnhLTIHZZZWCFgZpRqRxHss65KoFAiAJgJKjdrWdkLUOCCjuEx2RmFS7daRzSVZRVZ8RyMyUXg==",
+                                    "nonce": "473b1a16-b4ef-43ad-9591-fcf3aefa82a7",
+                                    "timestamp": "1594406341"
+                                  },
+                                  {
+                                    "fidelity": 1,
+                                    "signature": "GRlMDktMmE5Zi00ZGMzLWE0ZDEtNTQ0YzQwMmU5MDk1IiwKICAgICAgICAgICAgICAgICAgInRpbWVzdGTk0NDA2MzQyIg==",
+                                    "nonce": "e650de09-2a9f-4dc3-a4d1-544c402e9095",
+                                    "timestamp": "1594406342"
+                                  }
+                                ]
+                            }
+                        },
+                        "exp": 300
+                    },
+                    "type": "video"
+                },
+                {
+                    "bid": {
+                        "adm": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><VAST version=\"2.0\"></VAST>",
+                        "adomain": [
+                            "smaato.com"
+                        ],
+                        "cid": "CM6523",
+                        "crid": "CR69381",
+                        "id": "6906aae8-7f74-4edd-9a4f-f49379a3cadd",
+                        "impid": "2_2",
+                        "iurl": "https://iurl",
+                        "nurl": "https://nurl",
+                        "price": 0.01,
+                        "w": 1024,
+                        "h": 768,
+                        "cat": ["IAB2"],
+                        "ext": {
+                            "duration": 30,
+                            "skadn": {
+                                "version": "2.2",
+                                "network": "qyJfv329m4.skadnetwork",
+                                "campaign": "45",
+                                "itunesitem": "123456789",
+                                "sourceapp": "880047119",
+                                "productpageid": "45812c9b-c296-43d3-c6a0-c5a02f74bf6e",
+                                "fidelities": [
+                                  {
+                                    "fidelity": 0,
+                                    "signature": "MEQCIEQlmZRNfYzKBSE8QnhLTIHZZZWCFgZpRqRxHss65KoFAiAJgJKjdrWdkLUOCCjuEx2RmFS7daRzSVZRVZ8RyMyUXg==",
+                                    "nonce": "473b1a16-b4ef-43ad-9591-fcf3aefa82a7",
+                                    "timestamp": "1594406341"
+                                  },
+                                  {
+                                    "fidelity": 1,
+                                    "signature": "GRlMDktMmE5Zi00ZGMzLWE0ZDEtNTQ0YzQwMmU5MDk1IiwKICAgICAgICAgICAgICAgICAgInRpbWVzdGTk0NDA2MzQyIg==",
+                                    "nonce": "e650de09-2a9f-4dc3-a4d1-544c402e9095",
+                                    "timestamp": "1594406342"
+                                  }
+                                ]
+                            }
+                        },
+                        "exp": 300
+                    },
+                    "type": "video"
+                }
+            ]
+        }
+    ]
+}
\ No newline at end of file
diff --git a/adapters/smaato/smaatotest/video/multiple-adpods.json b/adapters/smaato/smaatotest/video/multiple-adpods.json
index 1f098c92..03641b86 100644
--- a/adapters/smaato/smaatotest/video/multiple-adpods.json
+++ b/adapters/smaato/smaatotest/video/multiple-adpods.json
@@ -234,7 +234,7 @@
                         }
                     },
                     "ext": {
-                        "client": "prebid_server_0.5"
+                        "client": "prebid_server_0.6"
                     }
                 }
             },
@@ -386,7 +386,7 @@
                         }
                     },
                     "ext": {
-                        "client": "prebid_server_0.5"
+                        "client": "prebid_server_0.6"
                     }
                 }
             },
diff --git a/adapters/smaato/smaatotest/video/single-adpod-skadn.json b/adapters/smaato/smaatotest/video/single-adpod-skadn.json
new file mode 100644
index 00000000..2f0f5129
--- /dev/null
+++ b/adapters/smaato/smaatotest/video/single-adpod-skadn.json
@@ -0,0 +1,426 @@
+{
+    "mockBidRequest": {
+        "id": "447a0a1d-389d-4730-a418-3777e95de7bd",
+        "imp": [
+            {
+                "id": "1_1",
+                "video": {
+                    "mimes": [
+                        "video/mp4",
+                        "video/3gpp"
+                    ],
+                    "minduration": 5,
+                    "maxduration": 30,
+                    "protocols": [
+                        7
+                    ],
+                    "w": 1024,
+                    "h": 768,
+                    "startdelay": 0,
+                    "linearity": 1,
+                    "skip": 1,
+                    "skipmin": 5,
+                    "api": [
+                        7
+                    ]
+                },
+                "bidfloor": 0.00123,
+                "ext": {
+                    "bidder": {
+                        "publisherId": "1100042525",
+                        "adbreakId": "400000001"
+                    },
+                    "skadn": {
+                        "versions": ["2.0", "2.1", "2.2", "3.0", "4.0"],
+                        "sourceapp": "880047117",
+                        "productpage": 1,
+                        "skadnetlist": {
+                          "max": 306,
+                          "excl": [2, 8, 10, 55],
+                          "addl": [
+                            "cdkw7geqsh.skadnetwork",
+                            "qyJfv329m4.skadnetwork"
+                          ]
+                        }
+                    }
+                }
+            },
+            {
+                "id": "1_2",
+                "video": {
+                    "mimes": [
+                        "video/mp4",
+                        "video/3gpp"
+                    ],
+                    "minduration": 5,
+                    "maxduration": 30,
+                    "protocols": [
+                        7
+                    ],
+                    "w": 1024,
+                    "h": 768,
+                    "startdelay": 0,
+                    "linearity": 1,
+                    "skip": 1,
+                    "skipmin": 5,
+                    "api": [
+                        7
+                    ]
+                },
+                "bidfloor": 0.00123,
+                "ext": {
+                    "bidder": {
+                        "publisherId": "1100042525",
+                        "adbreakId": "400000001"
+                    },
+                    "skadn": {
+                        "versions": ["2.0", "2.1", "2.2", "3.0", "4.0"],
+                        "sourceapp": "880047118",
+                        "productpage": 1,
+                        "skadnetlist": {
+                          "max": 306,
+                          "excl": [2, 8, 10, 55],
+                          "addl": [
+                            "cdkw7geqsh.skadnetwork",
+                            "qyJfv329m4.skadnetwork"
+                          ]
+                        }
+                    }
+                }
+            }
+        ],
+        "site": {
+            "publisher": {
+                "id": "1100042525"
+            },
+            "content": {
+                "title": "a-title",
+                "season": "a-season",
+                "series": "a-series",
+                "episode": 1,
+                "len": 900,
+                "livestream": 1
+            }
+        },
+        "device": {
+            "ua": "test-user-agent"
+        },
+        "user": {
+            "ext": {
+                "data": {}
+            }
+        }
+    },
+    "httpCalls": [
+        {
+            "expectedRequest": {
+                "headers": {
+                    "Content-Type": [
+                        "application/json;charset=utf-8"
+                    ],
+                    "Accept": [
+                        "application/json"
+                    ]
+                },
+                "uri": "https://prebid/bidder",
+                "body": {
+                    "id": "447a0a1d-389d-4730-a418-3777e95de7bd",
+                    "imp": [
+                        {
+                            "id": "1_1",
+                            "tagid": "400000001",
+                            "bidfloor": 0.00123,
+                            "video": {
+                                "w": 1024,
+                                "h": 768,
+                                "mimes": [
+                                    "video/mp4",
+                                    "video/3gpp"
+                                ],
+                                "minduration": 5,
+                                "startdelay": 0,
+                                "linearity": 1,
+                                "maxduration": 30,
+                                "skip": 1,
+                                "protocols": [
+                                    7
+                                ],
+                                "skipmin": 5,
+                                "api": [
+                                    7
+                                ],
+                                "sequence": 1,
+                                "ext": {
+                                    "context": "adpod"
+                                }
+                            },
+                            "ext": {
+                                "skadn": {
+                                    "versions": ["2.0", "2.1", "2.2", "3.0", "4.0"],
+                                    "sourceapp": "880047117",
+                                    "productpage": 1,
+                                    "skadnetlist": {
+                                      "max": 306,
+                                      "excl": [2, 8, 10, 55],
+                                      "addl": [
+                                        "cdkw7geqsh.skadnetwork",
+                                        "qyJfv329m4.skadnetwork"
+                                      ]
+                                    }
+                                }
+                            }
+                        },
+                        {
+                            "id": "1_2",
+                            "tagid": "400000001",
+                            "bidfloor": 0.00123,
+                            "video": {
+                                "w": 1024,
+                                "h": 768,
+                                "mimes": [
+                                    "video/mp4",
+                                    "video/3gpp"
+                                ],
+                                "minduration": 5,
+                                "startdelay": 0,
+                                "linearity": 1,
+                                "maxduration": 30,
+                                "skip": 1,
+                                "protocols": [
+                                    7
+                                ],
+                                "skipmin": 5,
+                                "api": [
+                                    7
+                                ],
+                                "sequence": 2,
+                                "ext": {
+                                    "context": "adpod"
+                                }
+                            }
+                        }
+                    ],
+                    "user": {
+                        "ext": {
+                        }
+                    },
+                    "device": {
+                        "ua": "test-user-agent"
+                    },
+                    "site": {
+                        "publisher": {
+                            "id": "1100042525"
+                        },
+                        "content": {
+                            "title": "a-title",
+                            "season": "a-season",
+                            "series": "a-series",
+                            "episode": 1,
+                            "len": 900,
+                            "livestream": 1
+                        }
+                    },
+                    "ext": {
+                        "client": "prebid_server_0.6"
+                    }
+                }
+            },
+            "mockResponse": {
+                "status": 200,
+                "body": {
+                    "id": "5ebea288-f13a-4754-be6d-4ade66c68877",
+                    "seatbid": [
+                        {
+                            "seat": "CM6523",
+                            "bid": [
+                                {
+                                    "adm": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><VAST version=\"2.0\"></VAST>",
+                                    "adomain": [
+                                        "smaato.com"
+                                    ],
+                                    "bidderName": "smaato",
+                                    "cid": "CM6523",
+                                    "crid": "CR69381",
+                                    "id": "6906aae8-7f74-4edd-9a4f-f49379a3cadd",
+                                    "impid": "1_1",
+                                    "iurl": "https://iurl",
+                                    "nurl": "https://nurl",
+                                    "price": 0.01,
+                                    "w": 1024,
+                                    "h": 768,
+                                    "cat": ["IAB1"],
+                                    "ext": {
+                                        "duration": 5,
+                                        "skadn": {
+                                            "version": "2.2",
+                                            "network": "cdkw7geqsh.skadnetwork",
+                                            "campaign": "45",
+                                            "itunesitem": "123456789",
+                                            "sourceapp": "880047117",
+                                            "productpageid": "45812c9b-c296-43d3-c6a0-c5a02f74bf6e",
+                                            "fidelities": [
+                                              {
+                                                "fidelity": 0,
+                                                "signature": "MEQCIEQlmZRNfYzKBSE8QnhLTIHZZZWCFgZpRqRxHss65KoFAiAJgJKjdrWdkLUOCCjuEx2RmFS7daRzSVZRVZ8RyMyUXg==",
+                                                "nonce": "473b1a16-b4ef-43ad-9591-fcf3aefa82a7",
+                                                "timestamp": "1594406341"
+                                              },
+                                              {
+                                                "fidelity": 1,
+                                                "signature": "GRlMDktMmE5Zi00ZGMzLWE0ZDEtNTQ0YzQwMmU5MDk1IiwKICAgICAgICAgICAgICAgICAgInRpbWVzdGTk0NDA2MzQyIg==",
+                                                "nonce": "e650de09-2a9f-4dc3-a4d1-544c402e9095",
+                                                "timestamp": "1594406342"
+                                              }
+                                            ]
+                                        }
+                                    }
+                                },
+                                {
+                                    "adm": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><VAST version=\"2.0\"></VAST>",
+                                    "adomain": [
+                                        "smaato.com"
+                                    ],
+                                    "bidderName": "smaato",
+                                    "cid": "CM6523",
+                                    "crid": "CR69381",
+                                    "id": "6906aae8-7f74-4edd-9a4f-f49379a3cadd",
+                                    "impid": "1_2",
+                                    "iurl": "https://iurl",
+                                    "nurl": "https://nurl",
+                                    "price": 0.01,
+                                    "w": 1024,
+                                    "h": 768,
+                                    "cat": ["IAB2"],
+                                    "ext": {
+                                        "duration": 30,
+                                        "skadn": {
+                                            "version": "2.2",
+                                            "network": "qyJfv329m4.skadnetwork",
+                                            "campaign": "45",
+                                            "itunesitem": "123456789",
+                                            "sourceapp": "880047117",
+                                            "productpageid": "45812c9b-c296-43d3-c6a0-c5a02f74bf6e",
+                                            "fidelities": [
+                                              {
+                                                "fidelity": 0,
+                                                "signature": "MEQCIEQlmZRNfYzKBSE8QnhLTIHZZZWCFgZpRqRxHss65KoFAiAJgJKjdrWdkLUOCCjuEx2RmFS7daRzSVZRVZ8RyMyUXg==",
+                                                "nonce": "473b1a16-b4ef-43ad-9591-fcf3aefa82a7",
+                                                "timestamp": "1594406341"
+                                              },
+                                              {
+                                                "fidelity": 1,
+                                                "signature": "GRlMDktMmE5Zi00ZGMzLWE0ZDEtNTQ0YzQwMmU5MDk1IiwKICAgICAgICAgICAgICAgICAgInRpbWVzdGTk0NDA2MzQyIg==",
+                                                "nonce": "e650de09-2a9f-4dc3-a4d1-544c402e9095",
+                                                "timestamp": "1594406342"
+                                              }
+                                            ]
+                                        }
+                                    }
+                                }
+                            ]
+                        }
+                    ],
+                    "bidid": "04db8629-179d-4bcd-acce-e54722969006",
+                    "cur": "USD"
+                }
+            }
+        }
+    ],
+    "expectedBidResponses": [
+        {
+            "currency": "USD",
+            "bids": [
+                {
+                    "bid": {
+                        "adm": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><VAST version=\"2.0\"></VAST>",
+                        "adomain": [
+                            "smaato.com"
+                        ],
+                        "cid": "CM6523",
+                        "crid": "CR69381",
+                        "id": "6906aae8-7f74-4edd-9a4f-f49379a3cadd",
+                        "impid": "1_1",
+                        "iurl": "https://iurl",
+                        "nurl": "https://nurl",
+                        "price": 0.01,
+                        "w": 1024,
+                        "h": 768,
+                        "cat": ["IAB1"],
+                        "ext": {
+                            "duration": 5,
+                            "skadn": {
+                                "version": "2.2",
+                                "network": "cdkw7geqsh.skadnetwork",
+                                "campaign": "45",
+                                "itunesitem": "123456789",
+                                "sourceapp": "880047117",
+                                "productpageid": "45812c9b-c296-43d3-c6a0-c5a02f74bf6e",
+                                "fidelities": [
+                                  {
+                                    "fidelity": 0,
+                                    "signature": "MEQCIEQlmZRNfYzKBSE8QnhLTIHZZZWCFgZpRqRxHss65KoFAiAJgJKjdrWdkLUOCCjuEx2RmFS7daRzSVZRVZ8RyMyUXg==",
+                                    "nonce": "473b1a16-b4ef-43ad-9591-fcf3aefa82a7",
+                                    "timestamp": "1594406341"
+                                  },
+                                  {
+                                    "fidelity": 1,
+                                    "signature": "GRlMDktMmE5Zi00ZGMzLWE0ZDEtNTQ0YzQwMmU5MDk1IiwKICAgICAgICAgICAgICAgICAgInRpbWVzdGTk0NDA2MzQyIg==",
+                                    "nonce": "e650de09-2a9f-4dc3-a4d1-544c402e9095",
+                                    "timestamp": "1594406342"
+                                  }
+                                ]
+                            }
+                        },
+                        "exp": 300
+                    },
+                    "type": "video"
+                },
+                {
+                    "bid": {
+                        "adm": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><VAST version=\"2.0\"></VAST>",
+                        "adomain": [
+                            "smaato.com"
+                        ],
+                        "cid": "CM6523",
+                        "crid": "CR69381",
+                        "id": "6906aae8-7f74-4edd-9a4f-f49379a3cadd",
+                        "impid": "1_2",
+                        "iurl": "https://iurl",
+                        "nurl": "https://nurl",
+                        "price": 0.01,
+                        "w": 1024,
+                        "h": 768,
+                        "cat": ["IAB2"],
+                        "ext": {
+                            "duration": 30,
+                            "skadn": {
+                                "version": "2.2",
+                                "network": "qyJfv329m4.skadnetwork",
+                                "campaign": "45",
+                                "itunesitem": "123456789",
+                                "sourceapp": "880047117",
+                                "productpageid": "45812c9b-c296-43d3-c6a0-c5a02f74bf6e",
+                                "fidelities": [
+                                  {
+                                    "fidelity": 0,
+                                    "signature": "MEQCIEQlmZRNfYzKBSE8QnhLTIHZZZWCFgZpRqRxHss65KoFAiAJgJKjdrWdkLUOCCjuEx2RmFS7daRzSVZRVZ8RyMyUXg==",
+                                    "nonce": "473b1a16-b4ef-43ad-9591-fcf3aefa82a7",
+                                    "timestamp": "1594406341"
+                                  },
+                                  {
+                                    "fidelity": 1,
+                                    "signature": "GRlMDktMmE5Zi00ZGMzLWE0ZDEtNTQ0YzQwMmU5MDk1IiwKICAgICAgICAgICAgICAgICAgInRpbWVzdGTk0NDA2MzQyIg==",
+                                    "nonce": "e650de09-2a9f-4dc3-a4d1-544c402e9095",
+                                    "timestamp": "1594406342"
+                                  }
+                                ]
+                            }
+                        },
+                        "exp": 300
+                    },
+                    "type": "video"
+                }
+            ]
+        }
+    ]
+}
\ No newline at end of file
diff --git a/adapters/smaato/smaatotest/video/single-adpod.json b/adapters/smaato/smaatotest/video/single-adpod.json
index 404e3551..3029782d 100644
--- a/adapters/smaato/smaatotest/video/single-adpod.json
+++ b/adapters/smaato/smaatotest/video/single-adpod.json
@@ -180,7 +180,7 @@
                         }
                     },
                     "ext": {
-                        "client": "prebid_server_0.5"
+                        "client": "prebid_server_0.6"
                     }
                 }
             },
diff --git a/adapters/smaato/smaatotest/videosupplemental/bad-adm-response.json b/adapters/smaato/smaatotest/videosupplemental/bad-adm-response.json
index 22e40ba1..00d71508 100644
--- a/adapters/smaato/smaatotest/videosupplemental/bad-adm-response.json
+++ b/adapters/smaato/smaatotest/videosupplemental/bad-adm-response.json
@@ -176,7 +176,7 @@
             }
           },
           "ext": {
-            "client": "prebid_server_0.5"
+            "client": "prebid_server_0.6"
           }
         }
       },
diff --git a/adapters/smaato/smaatotest/videosupplemental/bad-bid-ext-response.json b/adapters/smaato/smaatotest/videosupplemental/bad-bid-ext-response.json
index ca6cc068..f3707dea 100644
--- a/adapters/smaato/smaatotest/videosupplemental/bad-bid-ext-response.json
+++ b/adapters/smaato/smaatotest/videosupplemental/bad-bid-ext-response.json
@@ -176,7 +176,7 @@
             }
           },
           "ext": {
-            "client": "prebid_server_0.5"
+            "client": "prebid_server_0.6"
           }
         }
       },
diff --git a/adapters/smaato/smaatotest/videosupplemental/bad-skadn-format-request.json b/adapters/smaato/smaatotest/videosupplemental/bad-skadn-format-request.json
new file mode 100644
index 00000000..35d33cf7
--- /dev/null
+++ b/adapters/smaato/smaatotest/videosupplemental/bad-skadn-format-request.json
@@ -0,0 +1,89 @@
+{
+    "mockBidRequest": {
+        "id": "447a0a1d-389d-4730-a418-3777e95de7bd",
+        "imp": [
+            {
+                "id": "1_1",
+                "video": {
+                    "mimes": [
+                        "video/mp4",
+                        "video/3gpp"
+                    ],
+                    "minduration": 5,
+                    "maxduration": 30,
+                    "protocols": [
+                        7
+                    ],
+                    "w": 1024,
+                    "h": 768,
+                    "startdelay": 0,
+                    "linearity": 1,
+                    "skip": 1,
+                    "skipmin": 5,
+                    "api": [
+                        7
+                    ]
+                },
+                "bidfloor": 0.00123,
+                "ext": {
+                    "bidder": {
+                        "publisherId": "1100042525",
+                        "adbreakId": "400000001"
+                    },
+                    "skadn": []
+                }
+            },
+            {
+                "id": "1_2",
+                "video": {
+                    "mimes": [
+                        "video/mp4",
+                        "video/3gpp"
+                    ],
+                    "minduration": 5,
+                    "maxduration": 30,
+                    "protocols": [
+                        7
+                    ],
+                    "w": 1024,
+                    "h": 768,
+                    "startdelay": 0,
+                    "linearity": 1,
+                    "skip": 1,
+                    "skipmin": 5,
+                    "api": [
+                        7
+                    ]
+                },
+                "bidfloor": 0.00123
+            }
+        ],
+        "site": {
+            "publisher": {
+                "id": "1100042525"
+            },
+            "content": {
+                "title": "a-title",
+                "season": "a-season",
+                "series": "a-series",
+                "episode": 1,
+                "len": 900,
+                "livestream": 1
+            }
+        },
+        "device": {
+            "ua": "test-user-agent"
+        },
+        "user": {
+            "ext": {
+                "data": {}
+            }
+        }
+    },
+    "expectedMakeRequestsErrors": [
+        {
+          "value": "Invalid imp.ext.skadn.",
+          "comparison": "literal"
+        }
+    ]
+}
\ No newline at end of file
diff --git a/endpoints/cookie_sync_test.go b/endpoints/cookie_sync_test.go
index 3947d1f0..37acf0c2 100644
--- a/endpoints/cookie_sync_test.go
+++ b/endpoints/cookie_sync_test.go
@@ -7,6 +7,7 @@ import (
 	"io"
 	"net/http"
 	"net/http/httptest"
+	"strconv"
 	"strings"
 	"testing"
 	"testing/iotest"
@@ -23,6 +24,7 @@ import (
 	gdprPrivacy "github.com/prebid/prebid-server/privacy/gdpr"
 	gppPrivacy "github.com/prebid/prebid-server/privacy/gpp"
 	"github.com/prebid/prebid-server/usersync"
+	"github.com/prebid/prebid-server/util/ptrutil"
 
 	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/mock"
@@ -303,6 +305,185 @@ func TestCookieSyncHandle(t *testing.T) {
 	}
 }
 
+func TestExtractGDPRSignal(t *testing.T) {
+	type testInput struct {
+		requestGDPR *int
+		gppSID      []int8
+	}
+	type testOutput struct {
+		gdprSignal gdpr.Signal
+		gdprString string
+		err        error
+	}
+	testCases := []struct {
+		desc     string
+		in       testInput
+		expected testOutput
+	}{
+		{
+			desc: "SectionTCFEU2 is listed in GPP_SID array, expect SignalYes and nil error",
+			in: testInput{
+				requestGDPR: nil,
+				gppSID:      []int8{2},
+			},
+			expected: testOutput{
+				gdprSignal: gdpr.SignalYes,
+				gdprString: strconv.Itoa(int(gdpr.SignalYes)),
+				err:        nil,
+			},
+		},
+		{
+			desc: "SectionTCFEU2 is not listed in GPP_SID array, expect SignalNo and nil error",
+			in: testInput{
+				requestGDPR: nil,
+				gppSID:      []int8{6},
+			},
+			expected: testOutput{
+				gdprSignal: gdpr.SignalNo,
+				gdprString: strconv.Itoa(int(gdpr.SignalNo)),
+				err:        nil,
+			},
+		},
+		{
+			desc: "Empty GPP_SID array and nil requestGDPR value, expect SignalAmbiguous and nil error",
+			in: testInput{
+				requestGDPR: nil,
+				gppSID:      []int8{},
+			},
+			expected: testOutput{
+				gdprSignal: gdpr.SignalAmbiguous,
+				gdprString: "",
+				err:        nil,
+			},
+		},
+		{
+			desc: "Empty GPP_SID array and non-nil requestGDPR value that could not be successfully parsed, expect SignalAmbiguous and parse error",
+			in: testInput{
+				requestGDPR: ptrutil.ToPtr(2),
+				gppSID:      nil,
+			},
+			expected: testOutput{
+				gdprSignal: gdpr.SignalAmbiguous,
+				gdprString: "2",
+				err:        &errortypes.BadInput{"GDPR signal should be integer 0 or 1"},
+			},
+		},
+		{
+			desc: "Empty GPP_SID array and non-nil requestGDPR value that could be successfully parsed, expect SignalYes and nil error",
+			in: testInput{
+				requestGDPR: ptrutil.ToPtr(1),
+				gppSID:      nil,
+			},
+			expected: testOutput{
+				gdprSignal: gdpr.SignalYes,
+				gdprString: "1",
+				err:        nil,
+			},
+		},
+	}
+	for _, tc := range testCases {
+		// run
+		outSignal, outGdprStr, outErr := extractGDPRSignal(tc.in.requestGDPR, tc.in.gppSID)
+		// assertions
+		assert.Equal(t, tc.expected.gdprSignal, outSignal, tc.desc)
+		assert.Equal(t, tc.expected.gdprString, outGdprStr, tc.desc)
+		assert.Equal(t, tc.expected.err, outErr, tc.desc)
+	}
+}
+
+func TestExtractPrivacyPolicies(t *testing.T) {
+	type testInput struct {
+		request                  cookieSyncRequest
+		usersyncDefaultGDPRValue string
+	}
+	type testOutput struct {
+		policies   privacy.Policies
+		gdprSignal gdpr.Signal
+		err        error
+	}
+	testCases := []struct {
+		desc     string
+		in       testInput
+		expected testOutput
+	}{
+		{
+			desc: "request GPP string is malformed, expect empty policies, signal No and error",
+			in: testInput{
+				request: cookieSyncRequest{GPP: "malformedGPPString"},
+			},
+			expected: testOutput{
+				policies:   privacy.Policies{},
+				gdprSignal: gdpr.SignalNo,
+				err:        errors.New("error parsing GPP header, header must have type=3"),
+			},
+		},
+		{
+			desc: "Malformed GPPSid string",
+			in: testInput{
+				request: cookieSyncRequest{
+					GPP:       "DBACNYA~CPXxRfAPXxRfAAfKABENB-CgAAAAAAAAAAYgAAAAAAAA~1YNN",
+					GPPSid:    "malformed",
+					USPrivacy: "1YYY",
+				},
+			},
+			expected: testOutput{
+				policies:   privacy.Policies{},
+				gdprSignal: gdpr.SignalNo,
+				err:        &strconv.NumError{"ParseInt", "malformed", strconv.ErrSyntax},
+			},
+		},
+		{
+			desc: "request USPrivacy string is different from the one in the GPP string, expect empty policies, signalNo and error",
+			in: testInput{
+				request: cookieSyncRequest{
+					GPP:       "DBACNYA~CPXxRfAPXxRfAAfKABENB-CgAAAAAAAAAAYgAAAAAAAA~1YNN",
+					GPPSid:    "6",
+					USPrivacy: "1YYY",
+				},
+			},
+			expected: testOutput{
+				policies:   privacy.Policies{},
+				gdprSignal: gdpr.SignalNo,
+				err:        errors.New("request.us_privacy consent does not match uspv1"),
+			},
+		},
+		{
+			desc: "no issues extracting privacy policies from request GPP and request GPPSid strings",
+			in: testInput{
+				request: cookieSyncRequest{
+					GPP:    "DBACNYA~CPXxRfAPXxRfAAfKABENB-CgAAAAAAAAAAYgAAAAAAAA~1YNN",
+					GPPSid: "6",
+				},
+			},
+			expected: testOutput{
+				policies: privacy.Policies{
+					GDPR: gdprPrivacy.Policy{
+						Signal:  "0",
+						Consent: "CPXxRfAPXxRfAAfKABENB-CgAAAAAAAAAAYgAAAAAAAA",
+					},
+					CCPA: ccpa.Policy{
+						Consent: "1YNN",
+					},
+					GPP: gppPrivacy.Policy{
+						Consent: "DBACNYA~CPXxRfAPXxRfAAfKABENB-CgAAAAAAAAAAYgAAAAAAAA~1YNN",
+						RawSID:  "6",
+					},
+				},
+				gdprSignal: gdpr.SignalNo,
+				err:        nil,
+			},
+		},
+	}
+	for _, tc := range testCases {
+		// run
+		outPolicies, outSignal, outErr := extractPrivacyPolicies(tc.in.request, tc.in.usersyncDefaultGDPRValue)
+		// assertions
+		assert.Equal(t, tc.expected.policies, outPolicies, tc.desc)
+		assert.Equal(t, tc.expected.gdprSignal, outSignal, tc.desc)
+		assert.Equal(t, tc.expected.err, outErr, tc.desc)
+	}
+}
+
 func TestCookieSyncParseRequest(t *testing.T) {
 	expectedCCPAParsedPolicy, _ := ccpa.Policy{Consent: "1NYN"}.Parse(map[string]struct{}{})
 
@@ -318,13 +499,13 @@ func TestCookieSyncParseRequest(t *testing.T) {
 		expectedRequest      usersync.Request
 	}{
 		{
-			description: "Complete Request",
+			description: "Complete Request - includes GPP string with EU TCF V2",
 			givenBody: strings.NewReader(`{` +
 				`"bidders":["a", "b"],` +
 				`"gdpr":1,` +
 				`"gdpr_consent":"anyGDPRConsent",` +
 				`"us_privacy":"1NYN",` +
-				`"gpp":"anyGPPString",` +
+				`"gpp":"DBABMA~CPXxRfAPXxRfAAfKABENB-CgAAAAAAAAAAYgAAAAAAAA",` +
 				`"gpp_sid":"2",` +
 				`"limit":42,` +
 				`"coopSync":true,` +
@@ -341,13 +522,13 @@ func TestCookieSyncParseRequest(t *testing.T) {
 			expectedPrivacy: privacy.Policies{
 				GDPR: gdprPrivacy.Policy{
 					Signal:  "1",
-					Consent: "anyGDPRConsent",
+					Consent: "CPXxRfAPXxRfAAfKABENB-CgAAAAAAAAAAYgAAAAAAAA",
 				},
 				CCPA: ccpa.Policy{
 					Consent: "1NYN",
 				},
 				GPP: gppPrivacy.Policy{
-					Consent: "anyGPPString",
+					Consent: "DBABMA~CPXxRfAPXxRfAAfKABENB-CgAAAAAAAAAAYgAAAAAAAA",
 					RawSID:  "2",
 				},
 			},
diff --git a/exchange/utils_test.go b/exchange/utils_test.go
index e054f33c..56ba0e1d 100644
--- a/exchange/utils_test.go
+++ b/exchange/utils_test.go
@@ -577,6 +577,47 @@ func TestCleanOpenRTBRequestsWithFPD(t *testing.T) {
 	}
 }
 
+func TestExtractAdapterReqBidderParamsMap(t *testing.T) {
+	tests := []struct {
+		name            string
+		givenBidRequest *openrtb2.BidRequest
+		want            map[string]json.RawMessage
+		wantErr         error
+	}{
+		{
+			name:            "nil req",
+			givenBidRequest: nil,
+			want:            nil,
+			wantErr:         errors.New("error bidRequest should not be nil"),
+		},
+		{
+			name:            "nil req.ext",
+			givenBidRequest: &openrtb2.BidRequest{Ext: json.RawMessage(`{"prebid":{}}`)},
+			want:            nil,
+			wantErr:         nil,
+		},
+		{
+			name:            "malformed req.ext",
+			givenBidRequest: &openrtb2.BidRequest{Ext: json.RawMessage("malformed")},
+			want:            nil,
+			wantErr:         errors.New("error decoding Request.ext : invalid character 'm' looking for beginning of value"),
+		},
+		{
+			name:            "extract bidder params from req.Ext for input request in adapter code",
+			givenBidRequest: &openrtb2.BidRequest{Ext: json.RawMessage(`{"prebid":{"bidderparams": {"profile": 1234, "version": 1}}}`)},
+			want:            map[string]json.RawMessage{"profile": json.RawMessage(`1234`), "version": json.RawMessage(`1`)},
+			wantErr:         nil,
+		},
+	}
+	for _, tt := range tests {
+		t.Run(tt.name, func(t *testing.T) {
+			got, err := ExtractReqExtBidderParamsMap(tt.givenBidRequest)
+			assert.Equal(t, tt.wantErr, err, "err")
+			assert.Equal(t, tt.want, got, "result")
+		})
+	}
+}
+
 func TestCleanOpenRTBRequestsWithBidResponses(t *testing.T) {
 	bidRespId1 := json.RawMessage(`{"id": "resp_id1"}`)
 	bidRespId2 := json.RawMessage(`{"id": "resp_id2"}`)
diff --git a/floors/enforce_test.go b/floors/enforce_test.go
index 826306a0..6768f1e3 100644
--- a/floors/enforce_test.go
+++ b/floors/enforce_test.go
@@ -575,7 +575,7 @@ func TestEnforce(t *testing.T) {
 					},
 				},
 				conversions:    convert{},
-				priceFloorsCfg: config.AccountPriceFloors{Enabled: true, EnforceFloorsRate: 100, EnforceDealFloors: true},
+				priceFloorsCfg: config.AccountPriceFloors{Enabled: true, EnforceFloorsRate: 0, EnforceDealFloors: true},
 			},
 			expEligibleBids: map[openrtb_ext.BidderName]*entities.PbsOrtbSeatBid{
 				"pubmatic": {
@@ -632,7 +632,7 @@ func TestEnforce(t *testing.T) {
 					},
 				},
 				conversions:    convert{},
-				priceFloorsCfg: config.AccountPriceFloors{Enabled: true, EnforceFloorsRate: 100, EnforceDealFloors: false},
+				priceFloorsCfg: config.AccountPriceFloors{Enabled: true, EnforceFloorsRate: 0, EnforceDealFloors: false},
 			},
 			expEligibleBids: map[openrtb_ext.BidderName]*entities.PbsOrtbSeatBid{
 				"pubmatic": {
@@ -661,12 +661,10 @@ func TestEnforce(t *testing.T) {
 	for _, tt := range tests {
 		actEligibleBids, actErrs, actRejecteBids := Enforce(tt.args.bidRequestWrapper, tt.args.seatBids, config.Account{PriceFloors: tt.args.priceFloorsCfg}, tt.args.conversions)
 		assert.Equal(t, tt.expErrs, actErrs, tt.name)
-		if !reflect.DeepEqual(tt.expRejectedBids, actRejecteBids) {
-			assert.Fail(t, "rejected bids don't match")
-		}
+		assert.ElementsMatch(t, tt.expRejectedBids, actRejecteBids, tt.name)
 
 		if !reflect.DeepEqual(tt.expEligibleBids, actEligibleBids) {
-			assert.Fail(t, "eligible bids don't match")
+			assert.Failf(t, "eligible bids don't match", "Expected: %v, Got: %v", tt.expEligibleBids, actEligibleBids)
 		}
 	}
 }