Repository: prebid/prebid-server
Pull request #2280 (2022-06-21 20:21:25)

OpenRTB 2.6 For Internal Model
Upgrades the internal OpenRTB model to support 2.6. This will allow the core code and adapters to access OpenRTB 2.6 fields, but features (like schains, eids, gdpr, ccpa) will still be supported at 2.5 locations only until a future PR adds up convert and down convert support.

This PR changes adapter code. The changes are just simple type replacements except for the Rubicon adapter which relied upon EID.ID, an non-standard field. Removed with their approval and flagging them here (@bretg) to review the changes to their tests. 


Patch:
diff --git a/adapters/33across/33across.go b/adapters/33across/33across.go
index b6c16b20..72b91059 100644
--- a/adapters/33across/33across.go
+++ b/adapters/33across/33across.go
@@ -5,7 +5,8 @@ import (
 	"fmt"
 	"net/http"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/adcom1"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
@@ -261,7 +262,7 @@ func validateVideoParams(video *openrtb2.Video, prod string) (*openrtb2.Video, e
 		videoCopy.Placement = 1
 
 		if videoCopy.StartDelay == nil {
-			videoCopy.StartDelay = openrtb2.StartDelay.Ptr(0)
+			videoCopy.StartDelay = adcom1.StartDelay.Ptr(0)
 		}
 	}
 
diff --git a/adapters/aax/aax.go b/adapters/aax/aax.go
index 1a15ebd3..ae295fe4 100644
--- a/adapters/aax/aax.go
+++ b/adapters/aax/aax.go
@@ -6,7 +6,7 @@ import (
 	"net/http"
 	"net/url"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/aceex/aceex.go b/adapters/aceex/aceex.go
index abf748a7..452af376 100644
--- a/adapters/aceex/aceex.go
+++ b/adapters/aceex/aceex.go
@@ -6,7 +6,7 @@ import (
 	"net/http"
 	"text/template"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/acuityads/acuityads.go b/adapters/acuityads/acuityads.go
index 84a754fe..888a6d09 100644
--- a/adapters/acuityads/acuityads.go
+++ b/adapters/acuityads/acuityads.go
@@ -6,7 +6,7 @@ import (
 	"net/http"
 	"text/template"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/adf/adf.go b/adapters/adf/adf.go
index bc54f78f..d0646ccc 100644
--- a/adapters/adf/adf.go
+++ b/adapters/adf/adf.go
@@ -5,7 +5,7 @@ import (
 	"fmt"
 	"net/http"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/adgeneration/adgeneration.go b/adapters/adgeneration/adgeneration.go
index 55fafde1..77ebad04 100644
--- a/adapters/adgeneration/adgeneration.go
+++ b/adapters/adgeneration/adgeneration.go
@@ -10,7 +10,7 @@ import (
 	"strconv"
 	"strings"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/adhese/adhese.go b/adapters/adhese/adhese.go
index b23b49b3..6df42a7a 100644
--- a/adapters/adhese/adhese.go
+++ b/adapters/adhese/adhese.go
@@ -11,7 +11,7 @@ import (
 	"text/template"
 
 	"github.com/golang/glog"
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/adhese/utils.go b/adapters/adhese/utils.go
index 5a81bb83..3ce49fe6 100644
--- a/adapters/adhese/utils.go
+++ b/adapters/adhese/utils.go
@@ -1,6 +1,6 @@
 package adhese
 
-import "github.com/mxmCherry/openrtb/v15/openrtb2"
+import "github.com/mxmCherry/openrtb/v16/openrtb2"
 
 type AdheseOriginData struct {
 	Priority                  string `json:"priority"`
diff --git a/adapters/adkernel/adkernel.go b/adapters/adkernel/adkernel.go
index 183c31ee..62112382 100644
--- a/adapters/adkernel/adkernel.go
+++ b/adapters/adkernel/adkernel.go
@@ -7,7 +7,7 @@ import (
 	"strconv"
 	"text/template"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/adkernelAdn/adkernelAdn.go b/adapters/adkernelAdn/adkernelAdn.go
index 2c29e69a..263df92d 100644
--- a/adapters/adkernelAdn/adkernelAdn.go
+++ b/adapters/adkernelAdn/adkernelAdn.go
@@ -7,7 +7,7 @@ import (
 	"strconv"
 	"text/template"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/adman/adman.go b/adapters/adman/adman.go
index fd31bc9d..dc175e32 100644
--- a/adapters/adman/adman.go
+++ b/adapters/adman/adman.go
@@ -5,7 +5,7 @@ import (
 	"fmt"
 	"net/http"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/admixer/admixer.go b/adapters/admixer/admixer.go
index 5008b0ce..0909d71d 100644
--- a/adapters/admixer/admixer.go
+++ b/adapters/admixer/admixer.go
@@ -5,7 +5,7 @@ import (
 	"fmt"
 	"net/http"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/adnuntius/adnuntius.go b/adapters/adnuntius/adnuntius.go
index c25eecc9..9fe8cdbf 100644
--- a/adapters/adnuntius/adnuntius.go
+++ b/adapters/adnuntius/adnuntius.go
@@ -8,7 +8,7 @@ import (
 	"strconv"
 	"strings"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/adocean/adocean.go b/adapters/adocean/adocean.go
index d13104b1..f455346a 100644
--- a/adapters/adocean/adocean.go
+++ b/adapters/adocean/adocean.go
@@ -13,7 +13,7 @@ import (
 	"strings"
 	"text/template"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/adoppler/adoppler.go b/adapters/adoppler/adoppler.go
index 20e88c45..059b0e3f 100644
--- a/adapters/adoppler/adoppler.go
+++ b/adapters/adoppler/adoppler.go
@@ -8,7 +8,7 @@ import (
 	"net/url"
 	"text/template"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/adot/adot.go b/adapters/adot/adot.go
index 55aa0b95..ee0553e0 100644
--- a/adapters/adot/adot.go
+++ b/adapters/adot/adot.go
@@ -7,7 +7,7 @@ import (
 	"strconv"
 	"strings"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/adpone/adpone.go b/adapters/adpone/adpone.go
index 972f1576..872133e2 100644
--- a/adapters/adpone/adpone.go
+++ b/adapters/adpone/adpone.go
@@ -5,7 +5,7 @@ import (
 	"fmt"
 	"net/http"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/openrtb_ext"
 
diff --git a/adapters/adprime/adprime.go b/adapters/adprime/adprime.go
index c907380d..fc37c0c3 100644
--- a/adapters/adprime/adprime.go
+++ b/adapters/adprime/adprime.go
@@ -6,7 +6,7 @@ import (
 	"net/http"
 	"strings"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/adtarget/adtarget.go b/adapters/adtarget/adtarget.go
index 24befbfe..c334c2b5 100644
--- a/adapters/adtarget/adtarget.go
+++ b/adapters/adtarget/adtarget.go
@@ -5,7 +5,7 @@ import (
 	"fmt"
 	"net/http"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/adtelligent/adtelligent.go b/adapters/adtelligent/adtelligent.go
index 244742db..d930215d 100644
--- a/adapters/adtelligent/adtelligent.go
+++ b/adapters/adtelligent/adtelligent.go
@@ -5,7 +5,7 @@ import (
 	"fmt"
 	"net/http"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/advangelists/advangelists.go b/adapters/advangelists/advangelists.go
index d6fce56f..a4bb1e5f 100644
--- a/adapters/advangelists/advangelists.go
+++ b/adapters/advangelists/advangelists.go
@@ -6,7 +6,7 @@ import (
 	"net/http"
 	"text/template"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/adview/adview.go b/adapters/adview/adview.go
index e9872981..d11098ad 100644
--- a/adapters/adview/adview.go
+++ b/adapters/adview/adview.go
@@ -7,7 +7,7 @@ import (
 	"strings"
 	"text/template"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/adxcg/adxcg.go b/adapters/adxcg/adxcg.go
index e9f6c94b..1c0cd0b7 100644
--- a/adapters/adxcg/adxcg.go
+++ b/adapters/adxcg/adxcg.go
@@ -5,7 +5,7 @@ import (
 	"fmt"
 	"net/http"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/adyoulike/adyoulike.go b/adapters/adyoulike/adyoulike.go
index 8537c54d..bb191615 100644
--- a/adapters/adyoulike/adyoulike.go
+++ b/adapters/adyoulike/adyoulike.go
@@ -7,7 +7,7 @@ import (
 	"strings"
 
 	"github.com/buger/jsonparser"
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/aja/aja.go b/adapters/aja/aja.go
index 6e77fdd5..ec231112 100644
--- a/adapters/aja/aja.go
+++ b/adapters/aja/aja.go
@@ -5,7 +5,7 @@ import (
 	"fmt"
 	"net/http"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/algorix/algorix.go b/adapters/algorix/algorix.go
index d24521b4..af8fea77 100644
--- a/adapters/algorix/algorix.go
+++ b/adapters/algorix/algorix.go
@@ -7,7 +7,7 @@ import (
 	"net/url"
 	"text/template"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/amx/amx.go b/adapters/amx/amx.go
index dc6743a1..24dbc9bb 100644
--- a/adapters/amx/amx.go
+++ b/adapters/amx/amx.go
@@ -6,7 +6,7 @@ import (
 	"net/http"
 	"net/url"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/apacdex/apacdex.go b/adapters/apacdex/apacdex.go
index 294b7188..f598deda 100644
--- a/adapters/apacdex/apacdex.go
+++ b/adapters/apacdex/apacdex.go
@@ -5,7 +5,7 @@ import (
 	"fmt"
 	"net/http"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/applogy/applogy.go b/adapters/applogy/applogy.go
index b144c6b8..ca4c444c 100644
--- a/adapters/applogy/applogy.go
+++ b/adapters/applogy/applogy.go
@@ -6,7 +6,7 @@ import (
 	"net/http"
 	"strconv"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/appnexus/appnexus.go b/adapters/appnexus/appnexus.go
index 3695f541..1c459042 100644
--- a/adapters/appnexus/appnexus.go
+++ b/adapters/appnexus/appnexus.go
@@ -11,7 +11,8 @@ import (
 	"strings"
 
 	"github.com/buger/jsonparser"
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/adcom1"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/config"
 
 	"github.com/prebid/prebid-server/adapters"
@@ -308,9 +309,9 @@ func preprocess(imp *openrtb2.Imp, defaultDisplayManagerVer string) (string, boo
 	if imp.Banner != nil {
 		bannerCopy := *imp.Banner
 		if appnexusExt.Position == "above" {
-			bannerCopy.Pos = openrtb2.AdPositionAboveTheFold.Ptr()
+			bannerCopy.Pos = adcom1.PositionAboveFold.Ptr()
 		} else if appnexusExt.Position == "below" {
-			bannerCopy.Pos = openrtb2.AdPositionBelowTheFold.Ptr()
+			bannerCopy.Pos = adcom1.PositionBelowFold.Ptr()
 		}
 
 		// Fixes #307
diff --git a/adapters/audienceNetwork/facebook.go b/adapters/audienceNetwork/facebook.go
index 63138c42..d525849c 100644
--- a/adapters/audienceNetwork/facebook.go
+++ b/adapters/audienceNetwork/facebook.go
@@ -11,7 +11,7 @@ import (
 	"strings"
 
 	"github.com/buger/jsonparser"
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/automatad/automatad.go b/adapters/automatad/automatad.go
index 69286b42..5c3e7de9 100644
--- a/adapters/automatad/automatad.go
+++ b/adapters/automatad/automatad.go
@@ -5,7 +5,7 @@ import (
 	"fmt"
 	"net/http"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/avocet/avocet.go b/adapters/avocet/avocet.go
index 7ec4788e..fd1a2cbf 100644
--- a/adapters/avocet/avocet.go
+++ b/adapters/avocet/avocet.go
@@ -5,7 +5,8 @@ import (
 	"fmt"
 	"net/http"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/adcom1"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
@@ -110,7 +111,7 @@ func getBidType(bid openrtb2.Bid, ext avocetBidExt) openrtb_ext.BidType {
 		return openrtb_ext.BidTypeVideo
 	}
 	switch bid.API {
-	case openrtb2.APIFrameworkVPAID10, openrtb2.APIFrameworkVPAID20:
+	case adcom1.APIVPAID10, adcom1.APIVPAID20:
 		return openrtb_ext.BidTypeVideo
 	default:
 		return openrtb_ext.BidTypeBanner
diff --git a/adapters/axonix/axonix.go b/adapters/axonix/axonix.go
index 4a47360f..888cf551 100644
--- a/adapters/axonix/axonix.go
+++ b/adapters/axonix/axonix.go
@@ -7,7 +7,7 @@ import (
 	"net/url"
 	"text/template"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/beachfront/beachfront.go b/adapters/beachfront/beachfront.go
index 6eaf5ad9..1302e6af 100644
--- a/adapters/beachfront/beachfront.go
+++ b/adapters/beachfront/beachfront.go
@@ -8,7 +8,8 @@ import (
 	"strconv"
 	"strings"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/adcom1"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
@@ -60,24 +61,24 @@ type beachfrontVideoRequest struct {
 //              Banner
 // ---------------------------------------------------
 type beachfrontBannerRequest struct {
-	Slots          []beachfrontSlot                         `json:"slots"`
-	Domain         string                                   `json:"domain"`
-	Page           string                                   `json:"page"`
-	Referrer       string                                   `json:"referrer"`
-	Search         string                                   `json:"search"`
-	Secure         int8                                     `json:"secure"`
-	DeviceOs       string                                   `json:"deviceOs"`
-	DeviceModel    string                                   `json:"deviceModel"`
-	IsMobile       int8                                     `json:"isMobile"`
-	UA             string                                   `json:"ua"`
-	Dnt            int8                                     `json:"dnt"`
-	User           openrtb2.User                            `json:"user"`
-	AdapterName    string                                   `json:"adapterName"`
-	AdapterVersion string                                   `json:"adapterVersion"`
-	IP             string                                   `json:"ip"`
-	RequestID      string                                   `json:"requestId"`
-	Real204        bool                                     `json:"real204"`
-	SChain         openrtb_ext.ExtRequestPrebidSChainSChain `json:"schain,omitempty"`
+	Slots          []beachfrontSlot     `json:"slots"`
+	Domain         string               `json:"domain"`
+	Page           string               `json:"page"`
+	Referrer       string               `json:"referrer"`
+	Search         string               `json:"search"`
+	Secure         int8                 `json:"secure"`
+	DeviceOs       string               `json:"deviceOs"`
+	DeviceModel    string               `json:"deviceModel"`
+	IsMobile       int8                 `json:"isMobile"`
+	UA             string               `json:"ua"`
+	Dnt            int8                 `json:"dnt"`
+	User           openrtb2.User        `json:"user"`
+	AdapterName    string               `json:"adapterName"`
+	AdapterVersion string               `json:"adapterVersion"`
+	IP             string               `json:"ip"`
+	RequestID      string               `json:"requestId"`
+	Real204        bool                 `json:"real204"`
+	SChain         openrtb2.SupplyChain `json:"schain,omitempty"`
 }
 
 type beachfrontSlot struct {
@@ -331,7 +332,7 @@ func getBannerRequest(request *openrtb2.BidRequest, reqInfo *adapters.ExtraReque
 
 	var t = fallBackDeviceType(request)
 
-	if t == openrtb2.DeviceTypeMobileTablet {
+	if t == adcom1.DeviceMobile {
 		bfr.Page = request.App.Bundle
 		if request.App.Domain == "" {
 			bfr.Domain = getDomain(request.App.Domain)
@@ -340,7 +341,7 @@ func getBannerRequest(request *openrtb2.BidRequest, reqInfo *adapters.ExtraReque
 		}
 
 		bfr.IsMobile = 1
-	} else if t == openrtb2.DeviceTypePersonalComputer {
+	} else if t == adcom1.DevicePC {
 		bfr.Page = request.Site.Page
 		if request.Site.Domain == "" {
 			bfr.Domain = getDomain(request.Site.Page)
@@ -384,12 +385,12 @@ func getBannerRequest(request *openrtb2.BidRequest, reqInfo *adapters.ExtraReque
 	return bfr, errs
 }
 
-func fallBackDeviceType(request *openrtb2.BidRequest) openrtb2.DeviceType {
+func fallBackDeviceType(request *openrtb2.BidRequest) adcom1.DeviceType {
 	if request.Site != nil {
-		return openrtb2.DeviceTypePersonalComputer
+		return adcom1.DevicePC
 	}
 
-	return openrtb2.DeviceTypeMobileTablet
+	return adcom1.DeviceMobile
 }
 
 func getVideoRequests(request *openrtb2.BidRequest, reqInfo *adapters.ExtraRequestInfo) ([]beachfrontVideoRequest, []error) {
diff --git a/adapters/beintoo/beintoo.go b/adapters/beintoo/beintoo.go
index 60022e73..e783f786 100644
--- a/adapters/beintoo/beintoo.go
+++ b/adapters/beintoo/beintoo.go
@@ -7,7 +7,7 @@ import (
 	"net/url"
 	"strconv"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/between/between.go b/adapters/between/between.go
index f1cdd0ef..1269b7e3 100644
--- a/adapters/between/between.go
+++ b/adapters/between/between.go
@@ -8,7 +8,7 @@ import (
 	"strconv"
 	"text/template"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/bidder.go b/adapters/bidder.go
index a54b8ff2..6a4df525 100644
--- a/adapters/bidder.go
+++ b/adapters/bidder.go
@@ -5,7 +5,7 @@ import (
 	"encoding/json"
 	"net/http"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/currency"
 	"github.com/prebid/prebid-server/metrics"
diff --git a/adapters/bidmachine/bidmachine.go b/adapters/bidmachine/bidmachine.go
index eae26c60..d2e1172a 100644
--- a/adapters/bidmachine/bidmachine.go
+++ b/adapters/bidmachine/bidmachine.go
@@ -9,7 +9,9 @@ import (
 	"strconv"
 	"text/template"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/adcom1"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
+
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
@@ -100,9 +102,9 @@ func (a *adapter) MakeRequests(request *openrtb2.BidRequest, _ *adapters.ExtraRe
 	return result, errs
 }
 
-func hasRewardedBattr(attr []openrtb2.CreativeAttribute) bool {
+func hasRewardedBattr(attr []adcom1.CreativeAttribute) bool {
 	for i := 0; i < len(attr); i++ {
-		if attr[i] == openrtb2.CreativeAttribute(16) {
+		if attr[i] == adcom1.AttrHasSkipButton {
 			return true
 		}
 	}
@@ -198,10 +200,10 @@ func (a *adapter) buildEndpointURL(params openrtb_ext.ExtImpBidmachine) (string,
 	return uri.String(), nil
 }
 
-func copyBAttrWithRewardedInventory(src []openrtb2.CreativeAttribute) []openrtb2.CreativeAttribute {
-	dst := make([]openrtb2.CreativeAttribute, len(src))
+func copyBAttrWithRewardedInventory(src []adcom1.CreativeAttribute) []adcom1.CreativeAttribute {
+	dst := make([]adcom1.CreativeAttribute, len(src))
 	copy(dst, src)
-	dst = append(dst, openrtb2.CreativeAttribute(16))
+	dst = append(dst, adcom1.AttrHasSkipButton)
 	return dst
 }
 
diff --git a/adapters/bidmyadz/bidmyadz.go b/adapters/bidmyadz/bidmyadz.go
index 829d57e6..e98be16b 100644
--- a/adapters/bidmyadz/bidmyadz.go
+++ b/adapters/bidmyadz/bidmyadz.go
@@ -3,7 +3,7 @@ package bidmyadz
 import (
 	"encoding/json"
 	"fmt"
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/bidscube/bidscube.go b/adapters/bidscube/bidscube.go
index 8b1e5e66..f241fe13 100644
--- a/adapters/bidscube/bidscube.go
+++ b/adapters/bidscube/bidscube.go
@@ -8,7 +8,7 @@ import (
 	"strconv"
 
 	"github.com/buger/jsonparser"
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/bizzclick/bizzclick.go b/adapters/bizzclick/bizzclick.go
index 70c2bb0c..51149c0c 100644
--- a/adapters/bizzclick/bizzclick.go
+++ b/adapters/bizzclick/bizzclick.go
@@ -6,7 +6,7 @@ import (
 	"net/http"
 	"text/template"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/bliink/bliink.go b/adapters/bliink/bliink.go
index 6e179a3f..dd6ebcf1 100644
--- a/adapters/bliink/bliink.go
+++ b/adapters/bliink/bliink.go
@@ -3,7 +3,7 @@ package bliink
 import (
 	"encoding/json"
 	"fmt"
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/bmtm/brightmountainmedia.go b/adapters/bmtm/brightmountainmedia.go
index ffaacd7c..3f8e4848 100644
--- a/adapters/bmtm/brightmountainmedia.go
+++ b/adapters/bmtm/brightmountainmedia.go
@@ -6,7 +6,7 @@ import (
 	"net/http"
 	"strconv"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/brightroll/brightroll.go b/adapters/brightroll/brightroll.go
index 9a64db45..595b4c7e 100644
--- a/adapters/brightroll/brightroll.go
+++ b/adapters/brightroll/brightroll.go
@@ -6,7 +6,8 @@ import (
 	"net/http"
 	"strconv"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/adcom1"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
@@ -199,10 +200,10 @@ func (a *BrightrollAdapter) MakeBids(internalRequest *openrtb2.BidRequest, exter
 	return bidResponse, nil
 }
 
-func getBlockedCreativetypes(attr []int8) []openrtb2.CreativeAttribute {
-	var creativeAttr []openrtb2.CreativeAttribute
+func getBlockedCreativetypes(attr []int8) []adcom1.CreativeAttribute {
+	var creativeAttr []adcom1.CreativeAttribute
 	for i := 0; i < len(attr); i++ {
-		creativeAttr = append(creativeAttr, openrtb2.CreativeAttribute(attr[i]))
+		creativeAttr = append(creativeAttr, adcom1.CreativeAttribute(attr[i]))
 	}
 	return creativeAttr
 }
diff --git a/adapters/coinzilla/coinzilla.go b/adapters/coinzilla/coinzilla.go
index 8535133d..f644f4d5 100644
--- a/adapters/coinzilla/coinzilla.go
+++ b/adapters/coinzilla/coinzilla.go
@@ -5,7 +5,7 @@ import (
 	"fmt"
 	"net/http"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/openrtb_ext"
 
diff --git a/adapters/colossus/colossus.go b/adapters/colossus/colossus.go
index 16fe5e0a..bf61b283 100644
--- a/adapters/colossus/colossus.go
+++ b/adapters/colossus/colossus.go
@@ -6,7 +6,7 @@ import (
 	"net/http"
 
 	"github.com/buger/jsonparser"
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/compass/compass.go b/adapters/compass/compass.go
index eed84657..3a0db745 100644
--- a/adapters/compass/compass.go
+++ b/adapters/compass/compass.go
@@ -5,7 +5,7 @@ import (
 	"fmt"
 	"net/http"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/connectad/connectad.go b/adapters/connectad/connectad.go
index 5c30e3a6..5dfb134a 100644
--- a/adapters/connectad/connectad.go
+++ b/adapters/connectad/connectad.go
@@ -7,7 +7,7 @@ import (
 	"net/url"
 	"strconv"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/consumable/adtypes.go b/adapters/consumable/adtypes.go
index 5c5bd425..67d07504 100644
--- a/adapters/consumable/adtypes.go
+++ b/adapters/consumable/adtypes.go
@@ -3,7 +3,7 @@ package consumable
 import (
 	"strconv"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 )
 
 /* Turn array of openrtb formats into consumable's code*/
diff --git a/adapters/consumable/consumable.go b/adapters/consumable/consumable.go
index c2e0c201..90fda397 100644
--- a/adapters/consumable/consumable.go
+++ b/adapters/consumable/consumable.go
@@ -8,7 +8,7 @@ import (
 	"strconv"
 	"strings"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/conversant/conversant.go b/adapters/conversant/conversant.go
index 7cf4ab5d..738a7fc6 100644
--- a/adapters/conversant/conversant.go
+++ b/adapters/conversant/conversant.go
@@ -5,7 +5,8 @@ import (
 	"fmt"
 	"net/http"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/adcom1"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
@@ -56,7 +57,7 @@ func (c ConversantAdapter) MakeRequests(request *openrtb2.BidRequest, reqInfo *a
 	data, err := json.Marshal(request)
 	if err != nil {
 		return nil, []error{&errortypes.BadInput{
-			Message: fmt.Sprintf("Error in packaging request to JSON"),
+			Message: "Error in packaging request to JSON",
 		}}
 	}
 	headers := http.Header{}
@@ -88,9 +89,9 @@ func parseCnvrParams(imp *openrtb2.Imp, cnvrExt openrtb_ext.ExtImpConversant) {
 		imp.Secure = cnvrExt.Secure
 	}
 
-	var position *openrtb2.AdPosition
+	var position *adcom1.PlacementPosition
 	if cnvrExt.Position != nil {
-		position = openrtb2.AdPosition(*cnvrExt.Position).Ptr()
+		position = adcom1.PlacementPosition(*cnvrExt.Position).Ptr()
 	}
 	if imp.Banner != nil {
 		tmpBanner := *imp.Banner
@@ -103,9 +104,9 @@ func parseCnvrParams(imp *openrtb2.Imp, cnvrExt openrtb_ext.ExtImpConversant) {
 		imp.Video.Pos = position
 
 		if len(cnvrExt.API) > 0 {
-			imp.Video.API = make([]openrtb2.APIFramework, 0, len(cnvrExt.API))
+			imp.Video.API = make([]adcom1.APIFramework, 0, len(cnvrExt.API))
 			for _, api := range cnvrExt.API {
-				imp.Video.API = append(imp.Video.API, openrtb2.APIFramework(api))
+				imp.Video.API = append(imp.Video.API, adcom1.APIFramework(api))
 			}
 		}
 
@@ -114,9 +115,9 @@ func parseCnvrParams(imp *openrtb2.Imp, cnvrExt openrtb_ext.ExtImpConversant) {
 		// but are overridden if the custom params object also contains them.
 
 		if len(cnvrExt.Protocols) > 0 {
-			imp.Video.Protocols = make([]openrtb2.Protocol, 0, len(cnvrExt.Protocols))
+			imp.Video.Protocols = make([]adcom1.MediaCreativeSubtype, 0, len(cnvrExt.Protocols))
 			for _, protocol := range cnvrExt.Protocols {
-				imp.Video.Protocols = append(imp.Video.Protocols, openrtb2.Protocol(protocol))
+				imp.Video.Protocols = append(imp.Video.Protocols, adcom1.MediaCreativeSubtype(protocol))
 			}
 		}
 
@@ -151,7 +152,7 @@ func (c ConversantAdapter) MakeBids(internalRequest *openrtb2.BidRequest, extern
 
 	if len(resp.SeatBid) == 0 {
 		return nil, []error{&errortypes.BadServerResponse{
-			Message: fmt.Sprintf("Empty bid request"),
+			Message: "Empty bid request",
 		}}
 	}
 
diff --git a/adapters/cpmstar/cpmstar.go b/adapters/cpmstar/cpmstar.go
index 86c87c4c..f62b2564 100644
--- a/adapters/cpmstar/cpmstar.go
+++ b/adapters/cpmstar/cpmstar.go
@@ -5,7 +5,7 @@ import (
 	"fmt"
 	"net/http"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/criteo/criteo.go b/adapters/criteo/criteo.go
index de5568b9..6aa1771a 100644
--- a/adapters/criteo/criteo.go
+++ b/adapters/criteo/criteo.go
@@ -5,7 +5,7 @@ import (
 	"fmt"
 	"net/http"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/criteo/models.go b/adapters/criteo/models.go
index 0365c0e6..ede2bb88 100644
--- a/adapters/criteo/models.go
+++ b/adapters/criteo/models.go
@@ -5,19 +5,19 @@ import (
 	"fmt"
 	"strings"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/errortypes"
 	"github.com/prebid/prebid-server/openrtb_ext"
 )
 
 type criteoRequest struct {
-	ID          string                   `json:"id,omitempty"`
-	Publisher   criteoPublisher          `json:"publisher,omitempty"`
-	User        criteoUser               `json:"user,omitempty"`
-	GdprConsent criteoGdprConsent        `json:"gdprconsent,omitempty"`
-	Slots       []criteoRequestSlot      `json:"slots,omitempty"`
-	Eids        []openrtb_ext.ExtUserEid `json:"eids,omitempty"`
+	ID          string              `json:"id,omitempty"`
+	Publisher   criteoPublisher     `json:"publisher,omitempty"`
+	User        criteoUser          `json:"user,omitempty"`
+	GdprConsent criteoGdprConsent   `json:"gdprconsent,omitempty"`
+	Slots       []criteoRequestSlot `json:"slots,omitempty"`
+	Eids        []openrtb2.EID      `json:"eids,omitempty"`
 }
 
 func newCriteoRequest(slotIDGenerator slotIDGenerator, request *openrtb2.BidRequest) (criteoRequest, []error) {
diff --git a/adapters/datablocks/datablocks.go b/adapters/datablocks/datablocks.go
index e9d727d7..b38b610c 100644
--- a/adapters/datablocks/datablocks.go
+++ b/adapters/datablocks/datablocks.go
@@ -7,7 +7,7 @@ import (
 	"strconv"
 	"text/template"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/decenterads/decenterads.go b/adapters/decenterads/decenterads.go
index c94c461e..4ed411d8 100644
--- a/adapters/decenterads/decenterads.go
+++ b/adapters/decenterads/decenterads.go
@@ -7,7 +7,7 @@ import (
 	"net/http"
 	"strconv"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/deepintent/deepintent.go b/adapters/deepintent/deepintent.go
index 0853bb8b..a472d002 100644
--- a/adapters/deepintent/deepintent.go
+++ b/adapters/deepintent/deepintent.go
@@ -5,7 +5,7 @@ import (
 	"fmt"
 	"net/http"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/dmx/dmx.go b/adapters/dmx/dmx.go
index adcec4a3..b8ca87c1 100644
--- a/adapters/dmx/dmx.go
+++ b/adapters/dmx/dmx.go
@@ -8,7 +8,8 @@ import (
 	"net/url"
 	"strings"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/adcom1"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
@@ -48,7 +49,7 @@ type dmxParams struct {
 	Bidfloor    float64 `json:"bidfloor,omitempty"`
 }
 
-var protocols = []openrtb2.Protocol{2, 3, 5, 6, 7, 8}
+var protocols = []adcom1.MediaCreativeSubtype{2, 3, 5, 6, 7, 8}
 
 func UserSellerOrPubId(str1, str2 string) string {
 	if str1 != "" {
@@ -351,7 +352,7 @@ func getIdfa(request *openrtb2.BidRequest) (string, bool) {
 	}
 	return "", false
 }
-func checkProtocols(imp *openrtb2.Video) []openrtb2.Protocol {
+func checkProtocols(imp *openrtb2.Video) []adcom1.MediaCreativeSubtype {
 	if len(imp.Protocols) > 0 {
 		return imp.Protocols
 	}
diff --git a/adapters/e_volution/evolution.go b/adapters/e_volution/evolution.go
index 26df301c..1658acb4 100644
--- a/adapters/e_volution/evolution.go
+++ b/adapters/e_volution/evolution.go
@@ -3,7 +3,7 @@ package evolution
 import (
 	"encoding/json"
 	"fmt"
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/emx_digital/emx_digital.go b/adapters/emx_digital/emx_digital.go
index 75d74cf6..64ae38cd 100644
--- a/adapters/emx_digital/emx_digital.go
+++ b/adapters/emx_digital/emx_digital.go
@@ -9,7 +9,8 @@ import (
 	"strings"
 	"time"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/adcom1"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
@@ -162,11 +163,11 @@ func buildImpVideo(imp *openrtb2.Imp) error {
 }
 
 // not supporting VAST protocol 7 (VAST 4.0);
-func cleanProtocol(protocols []openrtb2.Protocol) []openrtb2.Protocol {
-	newitems := make([]openrtb2.Protocol, 0, len(protocols))
+func cleanProtocol(protocols []adcom1.MediaCreativeSubtype) []adcom1.MediaCreativeSubtype {
+	newitems := make([]adcom1.MediaCreativeSubtype, 0, len(protocols))
 
 	for _, i := range protocols {
-		if i != openrtb2.ProtocolVAST40 {
+		if i != adcom1.CreativeVAST40 {
 			newitems = append(newitems, i)
 		}
 	}
diff --git a/adapters/engagebdr/engagebdr.go b/adapters/engagebdr/engagebdr.go
index 645773fe..85ced9da 100644
--- a/adapters/engagebdr/engagebdr.go
+++ b/adapters/engagebdr/engagebdr.go
@@ -4,7 +4,7 @@ import (
 	"encoding/json"
 	"net/http"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/openrtb_ext"
 
diff --git a/adapters/eplanning/eplanning.go b/adapters/eplanning/eplanning.go
index 1e593fb7..e418a10c 100644
--- a/adapters/eplanning/eplanning.go
+++ b/adapters/eplanning/eplanning.go
@@ -11,7 +11,8 @@ import (
 
 	"fmt"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/adcom1"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
@@ -192,7 +193,7 @@ func (adapter *EPlanningAdapter) MakeRequests(request *openrtb2.BidRequest, reqI
 }
 
 func isMobileDevice(request *openrtb2.BidRequest) bool {
-	return request.Device != nil && (request.Device.DeviceType == openrtb2.DeviceTypeMobileTablet || request.Device.DeviceType == openrtb2.DeviceTypePhone || request.Device.DeviceType == openrtb2.DeviceTypeTablet)
+	return request.Device != nil && (request.Device.DeviceType == adcom1.DeviceMobile || request.Device.DeviceType == adcom1.DevicePhone || request.Device.DeviceType == adcom1.DeviceTablet)
 }
 
 func cleanName(name string) string {
diff --git a/adapters/epom/epom.go b/adapters/epom/epom.go
index a8336b64..f33e3212 100644
--- a/adapters/epom/epom.go
+++ b/adapters/epom/epom.go
@@ -5,7 +5,7 @@ import (
 	"fmt"
 	"net/http"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/gamma/gamma.go b/adapters/gamma/gamma.go
index a99a4643..770c8766 100644
--- a/adapters/gamma/gamma.go
+++ b/adapters/gamma/gamma.go
@@ -7,7 +7,8 @@ import (
 	"net/url"
 	"strconv"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb3"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
@@ -30,13 +31,13 @@ type gammaSeatBid struct {
 	Ext   json.RawMessage `json:"ext,omitempty"`
 }
 type gammaBidResponse struct {
-	ID         string                    `json:"id"`
-	SeatBid    []gammaSeatBid            `json:"seatbid,omitempty"`
-	BidID      string                    `json:"bidid,omitempty"`
-	Cur        string                    `json:"cur,omitempty"`
-	CustomData string                    `json:"customdata,omitempty"`
-	NBR        *openrtb2.NoBidReasonCode `json:"nbr,omitempty"`
-	Ext        json.RawMessage           `json:"ext,omitempty"`
+	ID         string                `json:"id"`
+	SeatBid    []gammaSeatBid        `json:"seatbid,omitempty"`
+	BidID      string                `json:"bidid,omitempty"`
+	Cur        string                `json:"cur,omitempty"`
+	CustomData string                `json:"customdata,omitempty"`
+	NBR        *openrtb3.NoBidReason `json:"nbr,omitempty"`
+	Ext        json.RawMessage       `json:"ext,omitempty"`
 }
 
 func checkParams(gammaExt openrtb_ext.ExtImpGamma) error {
diff --git a/adapters/gamoshi/gamoshi.go b/adapters/gamoshi/gamoshi.go
index c3219c1b..a5313515 100644
--- a/adapters/gamoshi/gamoshi.go
+++ b/adapters/gamoshi/gamoshi.go
@@ -7,7 +7,7 @@ import (
 	"strconv"
 
 	"github.com/golang/glog"
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/grid/grid.go b/adapters/grid/grid.go
index c46fcbc2..b9ca47e8 100644
--- a/adapters/grid/grid.go
+++ b/adapters/grid/grid.go
@@ -7,7 +7,7 @@ import (
 	"sort"
 	"strings"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/gumgum/gumgum.go b/adapters/gumgum/gumgum.go
index 27533127..7faa7be9 100644
--- a/adapters/gumgum/gumgum.go
+++ b/adapters/gumgum/gumgum.go
@@ -7,7 +7,7 @@ import (
 	"strconv"
 	"strings"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/huaweiads/huaweiads.go b/adapters/huaweiads/huaweiads.go
index a8bd8f89..4b8c70b0 100644
--- a/adapters/huaweiads/huaweiads.go
+++ b/adapters/huaweiads/huaweiads.go
@@ -8,20 +8,21 @@ import (
 	"encoding/json"
 	"errors"
 	"fmt"
-	"github.com/mxmCherry/openrtb/v15/native1"
-	nativeRequests "github.com/mxmCherry/openrtb/v15/native1/request"
-	nativeResponse "github.com/mxmCherry/openrtb/v15/native1/response"
-	"github.com/mxmCherry/openrtb/v15/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"
 	"net/http"
 	"net/url"
 	"regexp"
 	"strconv"
 	"strings"
 	"time"
+
+	"github.com/mxmCherry/openrtb/v16/native1"
+	nativeRequests "github.com/mxmCherry/openrtb/v16/native1/request"
+	nativeResponse "github.com/mxmCherry/openrtb/v16/native1/response"
+	"github.com/mxmCherry/openrtb/v16/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"
 )
 
 const huaweiAdxApiVersion = "3.4"
diff --git a/adapters/impactify/impactify.go b/adapters/impactify/impactify.go
index 5d64be03..c609ca3e 100644
--- a/adapters/impactify/impactify.go
+++ b/adapters/impactify/impactify.go
@@ -3,7 +3,7 @@ package impactify
 import (
 	"encoding/json"
 	"fmt"
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/improvedigital/improvedigital.go b/adapters/improvedigital/improvedigital.go
index 3d4520e4..b01386ca 100644
--- a/adapters/improvedigital/improvedigital.go
+++ b/adapters/improvedigital/improvedigital.go
@@ -6,7 +6,7 @@ import (
 	"net/http"
 	"strings"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/infoawarebidder.go b/adapters/infoawarebidder.go
index 6a07bda3..5dfd4dd0 100644
--- a/adapters/infoawarebidder.go
+++ b/adapters/infoawarebidder.go
@@ -3,7 +3,7 @@ package adapters
 import (
 	"fmt"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
 	"github.com/prebid/prebid-server/openrtb_ext"
diff --git a/adapters/infytv/infytv.go b/adapters/infytv/infytv.go
index af41958b..d1fb64b9 100644
--- a/adapters/infytv/infytv.go
+++ b/adapters/infytv/infytv.go
@@ -5,7 +5,8 @@ import (
 	"fmt"
 	"net/http"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
+
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/inmobi/inmobi.go b/adapters/inmobi/inmobi.go
index 63baa8a4..6870a8f1 100644
--- a/adapters/inmobi/inmobi.go
+++ b/adapters/inmobi/inmobi.go
@@ -5,7 +5,7 @@ import (
 	"fmt"
 	"net/http"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/interactiveoffers/interactiveoffers.go b/adapters/interactiveoffers/interactiveoffers.go
index e77dfd5a..75a33bdc 100644
--- a/adapters/interactiveoffers/interactiveoffers.go
+++ b/adapters/interactiveoffers/interactiveoffers.go
@@ -6,7 +6,7 @@ import (
 	"net/http"
 	"text/template"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/invibes/invibes.go b/adapters/invibes/invibes.go
index 505ef404..d201042c 100644
--- a/adapters/invibes/invibes.go
+++ b/adapters/invibes/invibes.go
@@ -9,7 +9,7 @@ import (
 	"strings"
 	"text/template"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/iqzone/iqzone.go b/adapters/iqzone/iqzone.go
index 79dc04d8..afcd0d2e 100644
--- a/adapters/iqzone/iqzone.go
+++ b/adapters/iqzone/iqzone.go
@@ -5,7 +5,7 @@ import (
 	"fmt"
 	"net/http"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/ix/ix.go b/adapters/ix/ix.go
index 1cfec693..fd89fc95 100644
--- a/adapters/ix/ix.go
+++ b/adapters/ix/ix.go
@@ -12,9 +12,9 @@ import (
 	"github.com/prebid/prebid-server/errortypes"
 	"github.com/prebid/prebid-server/openrtb_ext"
 
-	"github.com/mxmCherry/openrtb/v15/native1"
-	native1response "github.com/mxmCherry/openrtb/v15/native1/response"
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/native1"
+	native1response "github.com/mxmCherry/openrtb/v16/native1/response"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 )
 
 type IxAdapter struct {
diff --git a/adapters/jixie/jixie.go b/adapters/jixie/jixie.go
index b158dbba..c07d6add 100644
--- a/adapters/jixie/jixie.go
+++ b/adapters/jixie/jixie.go
@@ -6,7 +6,7 @@ import (
 	"net/http"
 	"strings"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/kargo/kargo.go b/adapters/kargo/kargo.go
index 8525d771..b15d35ee 100644
--- a/adapters/kargo/kargo.go
+++ b/adapters/kargo/kargo.go
@@ -5,7 +5,8 @@ import (
 	"fmt"
 	"net/http"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
+
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/kayzen/kayzen.go b/adapters/kayzen/kayzen.go
index ea5408aa..10d249a1 100644
--- a/adapters/kayzen/kayzen.go
+++ b/adapters/kayzen/kayzen.go
@@ -6,7 +6,7 @@ import (
 	"net/http"
 	"text/template"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/kidoz/kidoz.go b/adapters/kidoz/kidoz.go
index 43372dc2..246be9f1 100644
--- a/adapters/kidoz/kidoz.go
+++ b/adapters/kidoz/kidoz.go
@@ -6,7 +6,7 @@ import (
 	"net/http"
 	"strconv"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/krushmedia/krushmedia.go b/adapters/krushmedia/krushmedia.go
index 488fd0fa..814ace82 100644
--- a/adapters/krushmedia/krushmedia.go
+++ b/adapters/krushmedia/krushmedia.go
@@ -7,7 +7,7 @@ import (
 	"strconv"
 	"text/template"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/kubient/kubient.go b/adapters/kubient/kubient.go
index a99e9005..d7fb6ebb 100644
--- a/adapters/kubient/kubient.go
+++ b/adapters/kubient/kubient.go
@@ -5,7 +5,7 @@ import (
 	"fmt"
 	"net/http"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/openrtb_ext"
 
diff --git a/adapters/lockerdome/lockerdome.go b/adapters/lockerdome/lockerdome.go
index 28c966be..a9fbe150 100644
--- a/adapters/lockerdome/lockerdome.go
+++ b/adapters/lockerdome/lockerdome.go
@@ -5,7 +5,7 @@ import (
 	"fmt"
 	"net/http"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/logicad/logicad.go b/adapters/logicad/logicad.go
index 982723d0..9393a61a 100644
--- a/adapters/logicad/logicad.go
+++ b/adapters/logicad/logicad.go
@@ -5,7 +5,7 @@ import (
 	"fmt"
 	"net/http"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/lunamedia/lunamedia.go b/adapters/lunamedia/lunamedia.go
index 5c485264..352b6b4a 100644
--- a/adapters/lunamedia/lunamedia.go
+++ b/adapters/lunamedia/lunamedia.go
@@ -6,7 +6,7 @@ import (
 	"net/http"
 	"text/template"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/madvertise/madvertise.go b/adapters/madvertise/madvertise.go
index 6d37ccfc..1c4df788 100644
--- a/adapters/madvertise/madvertise.go
+++ b/adapters/madvertise/madvertise.go
@@ -6,7 +6,8 @@ import (
 	"net/http"
 	"text/template"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/adcom1"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
@@ -149,13 +150,13 @@ func (a *adapter) MakeBids(request *openrtb2.BidRequest, requestData *adapters.R
 	return bidResponse, nil
 }
 
-func getMediaTypeForBid(attr []openrtb2.CreativeAttribute) openrtb_ext.BidType {
+func getMediaTypeForBid(attr []adcom1.CreativeAttribute) openrtb_ext.BidType {
 	for i := 0; i < len(attr); i++ {
-		if attr[i] == openrtb2.CreativeAttribute(16) {
+		if attr[i] == adcom1.AttrHasSkipButton {
 			return openrtb_ext.BidTypeVideo
-		} else if attr[i] == openrtb2.CreativeAttribute(6) {
+		} else if attr[i] == adcom1.AttrVideoAuto {
 			return openrtb_ext.BidTypeVideo
-		} else if attr[i] == openrtb2.CreativeAttribute(7) {
+		} else if attr[i] == adcom1.AttrVideoUser {
 			return openrtb_ext.BidTypeVideo
 		}
 	}
diff --git a/adapters/marsmedia/marsmedia.go b/adapters/marsmedia/marsmedia.go
index 65ffff25..50a87a9d 100644
--- a/adapters/marsmedia/marsmedia.go
+++ b/adapters/marsmedia/marsmedia.go
@@ -6,7 +6,7 @@ import (
 	"net/http"
 	"strconv"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/medianet/medianet.go b/adapters/medianet/medianet.go
index 091cca2f..1298b848 100644
--- a/adapters/medianet/medianet.go
+++ b/adapters/medianet/medianet.go
@@ -6,7 +6,7 @@ import (
 	"net/http"
 	"net/url"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/mgid/mgid.go b/adapters/mgid/mgid.go
index 95ede0ab..e634b4cb 100644
--- a/adapters/mgid/mgid.go
+++ b/adapters/mgid/mgid.go
@@ -6,7 +6,7 @@ import (
 	"fmt"
 	"net/http"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/mobfoxpb/mobfoxpb.go b/adapters/mobfoxpb/mobfoxpb.go
index 7fcf416a..6255638e 100644
--- a/adapters/mobfoxpb/mobfoxpb.go
+++ b/adapters/mobfoxpb/mobfoxpb.go
@@ -7,7 +7,7 @@ import (
 	"strings"
 
 	"github.com/buger/jsonparser"
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/mobilefuse/mobilefuse.go b/adapters/mobilefuse/mobilefuse.go
index 3437a0f6..881fa354 100644
--- a/adapters/mobilefuse/mobilefuse.go
+++ b/adapters/mobilefuse/mobilefuse.go
@@ -7,7 +7,7 @@ import (
 	"strconv"
 	"text/template"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/nanointeractive/nanointeractive.go b/adapters/nanointeractive/nanointeractive.go
index a2ec89b0..0e402cd1 100644
--- a/adapters/nanointeractive/nanointeractive.go
+++ b/adapters/nanointeractive/nanointeractive.go
@@ -5,7 +5,7 @@ import (
 	"fmt"
 	"net/http"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/nextmillennium/nextmillennium.go b/adapters/nextmillennium/nextmillennium.go
index bcb0b287..605da43f 100644
--- a/adapters/nextmillennium/nextmillennium.go
+++ b/adapters/nextmillennium/nextmillennium.go
@@ -5,7 +5,7 @@ import (
 	"fmt"
 	"net/http"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/ninthdecimal/ninthdecimal.go b/adapters/ninthdecimal/ninthdecimal.go
index 17d55edb..6468e0a6 100755
--- a/adapters/ninthdecimal/ninthdecimal.go
+++ b/adapters/ninthdecimal/ninthdecimal.go
@@ -6,7 +6,7 @@ import (
 	"net/http"
 	"text/template"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/nobid/nobid.go b/adapters/nobid/nobid.go
index f8db812d..bfe61257 100644
--- a/adapters/nobid/nobid.go
+++ b/adapters/nobid/nobid.go
@@ -5,7 +5,7 @@ import (
 	"fmt"
 	"net/http"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/onetag/onetag.go b/adapters/onetag/onetag.go
index 30ebf492..e3ef0e0f 100644
--- a/adapters/onetag/onetag.go
+++ b/adapters/onetag/onetag.go
@@ -6,7 +6,7 @@ import (
 	"net/http"
 	"text/template"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/openrtb_util.go b/adapters/openrtb_util.go
index 2816e730..65cc5912 100644
--- a/adapters/openrtb_util.go
+++ b/adapters/openrtb_util.go
@@ -5,7 +5,7 @@ import (
 	"errors"
 	"fmt"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/openrtb_ext"
 )
 
diff --git a/adapters/openweb/openweb.go b/adapters/openweb/openweb.go
index 9c6c48c5..eabc86cc 100644
--- a/adapters/openweb/openweb.go
+++ b/adapters/openweb/openweb.go
@@ -5,7 +5,7 @@ import (
 	"fmt"
 	"net/http"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/openx/openx.go b/adapters/openx/openx.go
index 208b06f7..c4ffb4cd 100644
--- a/adapters/openx/openx.go
+++ b/adapters/openx/openx.go
@@ -5,7 +5,7 @@ import (
 	"fmt"
 	"net/http"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/operaads/operaads.go b/adapters/operaads/operaads.go
index 5912807b..a2235b7e 100644
--- a/adapters/operaads/operaads.go
+++ b/adapters/operaads/operaads.go
@@ -14,7 +14,7 @@ import (
 	"github.com/prebid/prebid-server/macros"
 	"github.com/prebid/prebid-server/openrtb_ext"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 )
 
 type adapter struct {
diff --git a/adapters/orbidder/orbidder.go b/adapters/orbidder/orbidder.go
index f2dda85e..da28d0c6 100644
--- a/adapters/orbidder/orbidder.go
+++ b/adapters/orbidder/orbidder.go
@@ -3,7 +3,7 @@ package orbidder
 import (
 	"encoding/json"
 	"fmt"
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/outbrain/outbrain.go b/adapters/outbrain/outbrain.go
index 6b121cb4..442a807c 100644
--- a/adapters/outbrain/outbrain.go
+++ b/adapters/outbrain/outbrain.go
@@ -5,9 +5,9 @@ import (
 	"fmt"
 	"net/http"
 
-	"github.com/mxmCherry/openrtb/v15/native1"
-	nativeResponse "github.com/mxmCherry/openrtb/v15/native1/response"
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/native1"
+	nativeResponse "github.com/mxmCherry/openrtb/v16/native1/response"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/pangle/pangle.go b/adapters/pangle/pangle.go
index da86a904..fbf9269d 100644
--- a/adapters/pangle/pangle.go
+++ b/adapters/pangle/pangle.go
@@ -5,7 +5,7 @@ import (
 	"fmt"
 	"net/http"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/pubmatic/pubmatic.go b/adapters/pubmatic/pubmatic.go
index a8cb6b7d..61b0105e 100644
--- a/adapters/pubmatic/pubmatic.go
+++ b/adapters/pubmatic/pubmatic.go
@@ -8,7 +8,7 @@ import (
 	"strings"
 
 	"github.com/golang/glog"
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/pubnative/pubnative.go b/adapters/pubnative/pubnative.go
index 8093c841..81073150 100644
--- a/adapters/pubnative/pubnative.go
+++ b/adapters/pubnative/pubnative.go
@@ -7,7 +7,7 @@ import (
 	"net/url"
 	"strconv"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/pulsepoint/pulsepoint.go b/adapters/pulsepoint/pulsepoint.go
index f756d5dd..42a26a26 100644
--- a/adapters/pulsepoint/pulsepoint.go
+++ b/adapters/pulsepoint/pulsepoint.go
@@ -11,7 +11,7 @@ import (
 	"github.com/prebid/prebid-server/errortypes"
 	"github.com/prebid/prebid-server/openrtb_ext"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 )
 
 type PulsePointAdapter struct {
diff --git a/adapters/revcontent/revcontent.go b/adapters/revcontent/revcontent.go
index 173917c2..8a4bd0b1 100644
--- a/adapters/revcontent/revcontent.go
+++ b/adapters/revcontent/revcontent.go
@@ -5,7 +5,7 @@ import (
 	"fmt"
 	"net/http"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/rhythmone/rhythmone.go b/adapters/rhythmone/rhythmone.go
index de43537e..1f437ce8 100644
--- a/adapters/rhythmone/rhythmone.go
+++ b/adapters/rhythmone/rhythmone.go
@@ -6,7 +6,7 @@ import (
 
 	"net/http"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/richaudience/richaudience.go b/adapters/richaudience/richaudience.go
index d2fa68c3..29d69f31 100644
--- a/adapters/richaudience/richaudience.go
+++ b/adapters/richaudience/richaudience.go
@@ -6,7 +6,7 @@ import (
 	"net/http"
 	"net/url"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/rtbhouse/rtbhouse.go b/adapters/rtbhouse/rtbhouse.go
index 44adddee..464b969a 100644
--- a/adapters/rtbhouse/rtbhouse.go
+++ b/adapters/rtbhouse/rtbhouse.go
@@ -5,7 +5,7 @@ import (
 	"fmt"
 	"net/http"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/rubicon/rubicon.go b/adapters/rubicon/rubicon.go
index 14cc5704..62cdb395 100644
--- a/adapters/rubicon/rubicon.go
+++ b/adapters/rubicon/rubicon.go
@@ -14,7 +14,8 @@ import (
 	"github.com/prebid/prebid-server/openrtb_ext"
 
 	"github.com/buger/jsonparser"
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/adcom1"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 )
 
 const badvLimitSize = 50
@@ -97,12 +98,12 @@ type rubiconDataExt struct {
 }
 
 type rubiconUserExt struct {
-	Consent     string                   `json:"consent,omitempty"`
-	Eids        []openrtb_ext.ExtUserEid `json:"eids,omitempty"`
-	TpID        []rubiconExtUserTpID     `json:"tpid,omitempty"`
-	RP          rubiconUserExtRP         `json:"rp"`
-	LiverampIdl string                   `json:"liveramp_idl,omitempty"`
-	Data        json.RawMessage          `json:"data,omitempty"`
+	Consent     string               `json:"consent,omitempty"`
+	Eids        []openrtb2.EID       `json:"eids,omitempty"`
+	TpID        []rubiconExtUserTpID `json:"tpid,omitempty"`
+	RP          rubiconUserExtRP     `json:"rp"`
+	LiverampIdl string               `json:"liveramp_idl,omitempty"`
+	Data        json.RawMessage      `json:"data,omitempty"`
 }
 
 type rubiconSiteExtRP struct {
@@ -327,7 +328,7 @@ func parseRubiconSizes(sizes []openrtb2.Format) (primary int, alt []int, err err
 	return
 }
 
-func resolveVideoSizeId(placement openrtb2.VideoPlacementType, instl int8, impId string) (sizeID int, err error) {
+func resolveVideoSizeId(placement adcom1.VideoPlacementSubtype, instl int8, impId string) (sizeID int, err error) {
 	if placement != 0 {
 		if placement == 1 {
 			return 201, nil
@@ -898,13 +899,13 @@ func contains(s []int, e int) bool {
 	return false
 }
 
-func extractUserBuyerUID(eids []openrtb_ext.ExtUserEid) string {
+func extractUserBuyerUID(eids []openrtb2.EID) string {
 	for _, eid := range eids {
 		if eid.Source != "rubiconproject.com" {
 			continue
 		}
 
-		for _, uid := range eid.Uids {
+		for _, uid := range eid.UIDs {
 			var uidExt rubiconUserExtEidUidExt
 			err := json.Unmarshal(uid.Ext, &uidExt)
 			if err != nil {
@@ -920,7 +921,7 @@ func extractUserBuyerUID(eids []openrtb_ext.ExtUserEid) string {
 	return ""
 }
 
-func getTpIdsAndSegments(eids []openrtb_ext.ExtUserEid) (mappedRubiconUidsParam, []error) {
+func getTpIdsAndSegments(eids []openrtb2.EID) (mappedRubiconUidsParam, []error) {
 	rubiconUidsParam := mappedRubiconUidsParam{
 		tpIds:    make([]rubiconExtUserTpID, 0),
 		segments: make([]string, 0),
@@ -930,7 +931,7 @@ func getTpIdsAndSegments(eids []openrtb_ext.ExtUserEid) (mappedRubiconUidsParam,
 	for _, eid := range eids {
 		switch eid.Source {
 		case "adserver.org":
-			uids := eid.Uids
+			uids := eid.UIDs
 			if len(uids) > 0 {
 				uid := uids[0]
 
@@ -949,7 +950,7 @@ func getTpIdsAndSegments(eids []openrtb_ext.ExtUserEid) (mappedRubiconUidsParam,
 				}
 			}
 		case "liveintent.com":
-			uids := eid.Uids
+			uids := eid.UIDs
 			if len(uids) > 0 {
 				uidId := uids[0].ID
 				if uidId != "" {
@@ -968,7 +969,7 @@ func getTpIdsAndSegments(eids []openrtb_ext.ExtUserEid) (mappedRubiconUidsParam,
 				}
 			}
 		case "liveramp.com":
-			uids := eid.Uids
+			uids := eid.UIDs
 			if len(uids) > 0 {
 				uidId := uids[0].ID
 				if uidId != "" && rubiconUidsParam.liverampIdl == "" {
diff --git a/adapters/sa_lunamedia/salunamedia.go b/adapters/sa_lunamedia/salunamedia.go
index ea6e12b0..ba83e17c 100644
--- a/adapters/sa_lunamedia/salunamedia.go
+++ b/adapters/sa_lunamedia/salunamedia.go
@@ -3,7 +3,7 @@ package salunamedia
 import (
 	"encoding/json"
 	"fmt"
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/sharethrough/sharethrough.go b/adapters/sharethrough/sharethrough.go
index 248859bb..2e9e9ad4 100644
--- a/adapters/sharethrough/sharethrough.go
+++ b/adapters/sharethrough/sharethrough.go
@@ -6,7 +6,7 @@ import (
 	"net/http"
 	"strings"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/silvermob/silvermob.go b/adapters/silvermob/silvermob.go
index a2060d25..1a390547 100644
--- a/adapters/silvermob/silvermob.go
+++ b/adapters/silvermob/silvermob.go
@@ -6,7 +6,7 @@ import (
 	"net/http"
 	"text/template"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/smaato/smaato.go b/adapters/smaato/smaato.go
index c84dd356..c4481802 100644
--- a/adapters/smaato/smaato.go
+++ b/adapters/smaato/smaato.go
@@ -8,7 +8,7 @@ import (
 	"strings"
 
 	"github.com/buger/jsonparser"
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/smartadserver/smartadserver.go b/adapters/smartadserver/smartadserver.go
index 3954a00b..92dc95ad 100644
--- a/adapters/smartadserver/smartadserver.go
+++ b/adapters/smartadserver/smartadserver.go
@@ -8,7 +8,7 @@ import (
 	"path"
 	"strconv"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/smarthub/smarthub.go b/adapters/smarthub/smarthub.go
index ba381a42..aebbc9b4 100644
--- a/adapters/smarthub/smarthub.go
+++ b/adapters/smarthub/smarthub.go
@@ -6,7 +6,7 @@ import (
 	"net/http"
 	"text/template"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/smartrtb/smartrtb.go b/adapters/smartrtb/smartrtb.go
index 9fe25ff0..53789cef 100644
--- a/adapters/smartrtb/smartrtb.go
+++ b/adapters/smartrtb/smartrtb.go
@@ -6,7 +6,7 @@ import (
 	"net/http"
 	"text/template"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/smartyads/smartyads.go b/adapters/smartyads/smartyads.go
index d25508b8..d4b68d39 100644
--- a/adapters/smartyads/smartyads.go
+++ b/adapters/smartyads/smartyads.go
@@ -7,7 +7,7 @@ import (
 	"strconv"
 	"text/template"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/smilewanted/smilewanted.go b/adapters/smilewanted/smilewanted.go
index 376389df..737e3854 100644
--- a/adapters/smilewanted/smilewanted.go
+++ b/adapters/smilewanted/smilewanted.go
@@ -5,7 +5,7 @@ import (
 	"fmt"
 	"net/http"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/sonobi/sonobi.go b/adapters/sonobi/sonobi.go
index 0ff71cdb..b6468310 100644
--- a/adapters/sonobi/sonobi.go
+++ b/adapters/sonobi/sonobi.go
@@ -5,7 +5,7 @@ import (
 	"fmt"
 	"net/http"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/sovrn/sovrn.go b/adapters/sovrn/sovrn.go
index 37ff6191..965aceb1 100644
--- a/adapters/sovrn/sovrn.go
+++ b/adapters/sovrn/sovrn.go
@@ -13,7 +13,7 @@ import (
 	"github.com/prebid/prebid-server/errortypes"
 	"github.com/prebid/prebid-server/openrtb_ext"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 )
 
 type SovrnAdapter struct {
diff --git a/adapters/stroeerCore/stroeercore.go b/adapters/stroeerCore/stroeercore.go
index 2f9f39ec..34307e5e 100644
--- a/adapters/stroeerCore/stroeercore.go
+++ b/adapters/stroeerCore/stroeercore.go
@@ -3,7 +3,7 @@ package stroeerCore
 import (
 	"encoding/json"
 	"fmt"
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/synacormedia/synacormedia.go b/adapters/synacormedia/synacormedia.go
index c6a19bd0..d16bd35a 100644
--- a/adapters/synacormedia/synacormedia.go
+++ b/adapters/synacormedia/synacormedia.go
@@ -6,7 +6,7 @@ import (
 	"net/http"
 	"text/template"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/tappx/tappx.go b/adapters/tappx/tappx.go
index 0f80e5ab..aefeab08 100644
--- a/adapters/tappx/tappx.go
+++ b/adapters/tappx/tappx.go
@@ -10,7 +10,7 @@ import (
 	"text/template"
 	"time"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/telaria/telaria.go b/adapters/telaria/telaria.go
index d36312e5..2d1d9d89 100644
--- a/adapters/telaria/telaria.go
+++ b/adapters/telaria/telaria.go
@@ -6,7 +6,7 @@ import (
 	"net/http"
 	"strconv"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/trafficgate/trafficgate.go b/adapters/trafficgate/trafficgate.go
index 30ec08b0..a31611c4 100644
--- a/adapters/trafficgate/trafficgate.go
+++ b/adapters/trafficgate/trafficgate.go
@@ -6,7 +6,7 @@ import (
 	"net/http"
 	"text/template"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/triplelift/triplelift.go b/adapters/triplelift/triplelift.go
index 3cd651ce..1d93527c 100644
--- a/adapters/triplelift/triplelift.go
+++ b/adapters/triplelift/triplelift.go
@@ -5,7 +5,7 @@ import (
 	"fmt"
 	"net/http"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/triplelift_native/triplelift_native.go b/adapters/triplelift_native/triplelift_native.go
index d412def4..a0d86d40 100644
--- a/adapters/triplelift_native/triplelift_native.go
+++ b/adapters/triplelift_native/triplelift_native.go
@@ -5,7 +5,7 @@ import (
 	"fmt"
 	"net/http"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/ucfunnel/ucfunnel.go b/adapters/ucfunnel/ucfunnel.go
index 1d3efc04..b53fbe4b 100644
--- a/adapters/ucfunnel/ucfunnel.go
+++ b/adapters/ucfunnel/ucfunnel.go
@@ -6,7 +6,7 @@ import (
 	"net/http"
 	"net/url"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/unicorn/unicorn.go b/adapters/unicorn/unicorn.go
index 069604c7..834d9122 100644
--- a/adapters/unicorn/unicorn.go
+++ b/adapters/unicorn/unicorn.go
@@ -6,7 +6,7 @@ import (
 	"net/http"
 
 	"github.com/buger/jsonparser"
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/unruly/unruly.go b/adapters/unruly/unruly.go
index 40b8fe66..fc8186ef 100644
--- a/adapters/unruly/unruly.go
+++ b/adapters/unruly/unruly.go
@@ -5,7 +5,7 @@ import (
 	"fmt"
 	"net/http"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/videobyte/videobyte.go b/adapters/videobyte/videobyte.go
index a4c0df61..2cd561c5 100644
--- a/adapters/videobyte/videobyte.go
+++ b/adapters/videobyte/videobyte.go
@@ -11,7 +11,7 @@ import (
 	"github.com/prebid/prebid-server/errortypes"
 	"github.com/prebid/prebid-server/openrtb_ext"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 )
 
 type adapter struct {
diff --git a/adapters/vidoomy/vidoomy.go b/adapters/vidoomy/vidoomy.go
index 57fbb09d..6221d30e 100644
--- a/adapters/vidoomy/vidoomy.go
+++ b/adapters/vidoomy/vidoomy.go
@@ -3,7 +3,7 @@ package vidoomy
 import (
 	"encoding/json"
 	"fmt"
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/visx/visx.go b/adapters/visx/visx.go
index 3c55cd65..97ea7cbb 100644
--- a/adapters/visx/visx.go
+++ b/adapters/visx/visx.go
@@ -5,7 +5,7 @@ import (
 	"fmt"
 	"net/http"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/vrtcal/vrtcal.go b/adapters/vrtcal/vrtcal.go
index ce8392a3..6aaf7994 100644
--- a/adapters/vrtcal/vrtcal.go
+++ b/adapters/vrtcal/vrtcal.go
@@ -5,7 +5,7 @@ import (
 	"fmt"
 	"net/http"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/yahoossp/yahoossp.go b/adapters/yahoossp/yahoossp.go
index f0cc23bf..2951fb8e 100644
--- a/adapters/yahoossp/yahoossp.go
+++ b/adapters/yahoossp/yahoossp.go
@@ -5,7 +5,7 @@ import (
 	"fmt"
 	"net/http"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/yeahmobi/yeahmobi.go b/adapters/yeahmobi/yeahmobi.go
index 51c9a44d..95428e00 100644
--- a/adapters/yeahmobi/yeahmobi.go
+++ b/adapters/yeahmobi/yeahmobi.go
@@ -8,7 +8,7 @@ import (
 	"text/template"
 
 	"github.com/golang/glog"
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/yieldlab/yieldlab.go b/adapters/yieldlab/yieldlab.go
index 1447aeaf..619fdf93 100644
--- a/adapters/yieldlab/yieldlab.go
+++ b/adapters/yieldlab/yieldlab.go
@@ -11,7 +11,7 @@ import (
 
 	"golang.org/x/text/currency"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/yieldmo/yieldmo.go b/adapters/yieldmo/yieldmo.go
index eaaa489d..427a638d 100644
--- a/adapters/yieldmo/yieldmo.go
+++ b/adapters/yieldmo/yieldmo.go
@@ -5,7 +5,7 @@ import (
 	"fmt"
 	"net/http"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/yieldone/yieldone.go b/adapters/yieldone/yieldone.go
index 4e22b144..406cd48c 100644
--- a/adapters/yieldone/yieldone.go
+++ b/adapters/yieldone/yieldone.go
@@ -5,7 +5,7 @@ import (
 	"fmt"
 	"net/http"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/zeroclickfraud/zeroclickfraud.go b/adapters/zeroclickfraud/zeroclickfraud.go
index 862fd173..b9edf132 100644
--- a/adapters/zeroclickfraud/zeroclickfraud.go
+++ b/adapters/zeroclickfraud/zeroclickfraud.go
@@ -7,7 +7,7 @@ import (
 	"strconv"
 	"text/template"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/amp/parse.go b/amp/parse.go
index 1ce19a76..c0b7b8b2 100644
--- a/amp/parse.go
+++ b/amp/parse.go
@@ -6,7 +6,7 @@ import (
 	"strconv"
 	"strings"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 )
 
 // Params defines the parameters of an AMP request.
diff --git a/analytics/core.go b/analytics/core.go
index c15ae201..0f752412 100644
--- a/analytics/core.go
+++ b/analytics/core.go
@@ -3,7 +3,7 @@ package analytics
 import (
 	"time"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/openrtb_ext"
 )
diff --git a/config/config.go b/config/config.go
index ef98498f..304c92ad 100644
--- a/config/config.go
+++ b/config/config.go
@@ -10,10 +10,12 @@ import (
 	"time"
 
 	"github.com/golang/glog"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
+	"github.com/spf13/viper"
+
 	"github.com/prebid/go-gdpr/consentconstants"
 	"github.com/prebid/prebid-server/errortypes"
 	"github.com/prebid/prebid-server/openrtb_ext"
-	"github.com/spf13/viper"
 )
 
 // Configuration specifies the static application config.
@@ -91,8 +93,8 @@ type Configuration struct {
 	//When true, new bid id will be generated in seatbid[].bid[].ext.prebid.bidid and used in event urls instead
 	GenerateBidID bool `mapstructure:"generate_bid_id"`
 	// GenerateRequestID overrides the bidrequest.id in an AMP Request or an App Stored Request with a generated UUID if set to true. The default is false.
-	GenerateRequestID bool                                          `mapstructure:"generate_request_id"`
-	HostSChainNode    *openrtb_ext.ExtRequestPrebidSChainSChainNode `mapstructure:"host_schain_node"`
+	GenerateRequestID bool                      `mapstructure:"generate_request_id"`
+	HostSChainNode    *openrtb2.SupplyChainNode `mapstructure:"host_schain_node"`
 }
 
 const MIN_COOKIE_SIZE_BYTES = 500
diff --git a/endpoints/openrtb2/amp_auction.go b/endpoints/openrtb2/amp_auction.go
index a22d1200..6910efb1 100644
--- a/endpoints/openrtb2/amp_auction.go
+++ b/endpoints/openrtb2/amp_auction.go
@@ -32,7 +32,7 @@ import (
 	"github.com/buger/jsonparser"
 	"github.com/golang/glog"
 	"github.com/julienschmidt/httprouter"
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/util/uuidutil"
 )
 
diff --git a/endpoints/openrtb2/auction.go b/endpoints/openrtb2/auction.go
index 645c2505..5250ac0d 100644
--- a/endpoints/openrtb2/auction.go
+++ b/endpoints/openrtb2/auction.go
@@ -17,9 +17,9 @@ import (
 	"github.com/gofrs/uuid"
 	"github.com/golang/glog"
 	"github.com/julienschmidt/httprouter"
-	"github.com/mxmCherry/openrtb/v15/native1"
-	nativeRequests "github.com/mxmCherry/openrtb/v15/native1/request"
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/native1"
+	nativeRequests "github.com/mxmCherry/openrtb/v16/native1/request"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"golang.org/x/net/publicsuffix"
 	jsonpatch "gopkg.in/evanphx/json-patch.v4"
 
@@ -1382,17 +1382,13 @@ func (deps *endpointDeps) validateUser(req *openrtb_ext.RequestWrapper, aliases
 			}
 			uniqueSources[eid.Source] = struct{}{}
 
-			if eid.ID == "" && eid.Uids == nil {
-				return fmt.Errorf("request.user.ext.eids[%d] must contain either \"id\" or \"uids\" field", eidIndex)
+			if len(eid.UIDs) == 0 {
+				return fmt.Errorf("request.user.ext.eids[%d].uids must contain at least one element or be undefined", eidIndex)
 			}
-			if eid.ID == "" {
-				if len(eid.Uids) == 0 {
-					return fmt.Errorf("request.user.ext.eids[%d].uids must contain at least one element or be undefined", eidIndex)
-				}
-				for uidIndex, uid := range eid.Uids {
-					if uid.ID == "" {
-						return fmt.Errorf("request.user.ext.eids[%d].uids[%d] missing required field: \"id\"", eidIndex, uidIndex)
-					}
+
+			for uidIndex, uid := range eid.UIDs {
+				if uid.ID == "" {
+					return fmt.Errorf("request.user.ext.eids[%d].uids[%d] missing required field: \"id\"", eidIndex, uidIndex)
 				}
 			}
 		}
diff --git a/endpoints/openrtb2/interstitial.go b/endpoints/openrtb2/interstitial.go
index 4fd2a90c..a1cdd9fe 100644
--- a/endpoints/openrtb2/interstitial.go
+++ b/endpoints/openrtb2/interstitial.go
@@ -3,7 +3,7 @@ package openrtb2
 import (
 	"fmt"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
 	"github.com/prebid/prebid-server/openrtb_ext"
diff --git a/endpoints/openrtb2/sample-requests/invalid-whole/user-ext-eids-eids-uids-empty.json b/endpoints/openrtb2/sample-requests/invalid-whole/user-ext-eids-eids-uids-empty.json
deleted file mode 100644
index d1cd1eb5..00000000
--- a/endpoints/openrtb2/sample-requests/invalid-whole/user-ext-eids-eids-uids-empty.json
+++ /dev/null
@@ -1,55 +0,0 @@
-{
-  "description": "Bid request with empty uids array in user.ext.eids array element",
-  "mockBidRequest": {
-    "id": "b9c97a4b-cbc4-483d-b2c4-58a19ed5cfc5",
-    "site": {
-      "page": "prebid.org",
-      "publisher": {
-        "id": "a3de7af2-a86a-4043-a77b-c7e86744155e"
-      }
-    },
-    "source": {
-      "tid": "b9c97a4b-cbc4-483d-b2c4-58a19ed5cfc5"
-    },
-    "tmax": 1000,
-    "imp": [
-      {
-        "id": "/19968336/header-bid-tag-0",
-        "ext": {
-          "appnexus": {
-            "placementId": 12883451
-          }
-        },
-        "banner": {
-          "format": [
-            {
-              "w": 300,
-              "h": 250
-            },
-            {
-              "w": 300,
-              "h": 300
-            }
-          ]
-        }
-      }
-    ],
-    "regs": {
-      "ext": {
-        "gdpr": 1
-      }
-    },
-    "user": {
-      "ext": {
-        "eids": [
-          {
-            "source": "source1",
-            "uids": []
-          }
-        ]
-      }
-    }
-  },
-  "expectedReturnCode": 400,
-  "expectedErrorMessage": "Invalid request: request.user.ext.eids[0].uids must contain at least one element or be undefined\n"
-}
diff --git a/endpoints/openrtb2/sample-requests/invalid-whole/user-ext-eids-empty.json b/endpoints/openrtb2/sample-requests/invalid-whole/user-ext-eids-empty.json
index 98297739..0baf9895 100644
--- a/endpoints/openrtb2/sample-requests/invalid-whole/user-ext-eids-empty.json
+++ b/endpoints/openrtb2/sample-requests/invalid-whole/user-ext-eids-empty.json
@@ -1,44 +1,33 @@
 {
   "description": "Bid request with empty eids array in user.ext",
   "mockBidRequest": {
-    "id": "b9c97a4b-cbc4-483d-b2c4-58a19ed5cfc5",
+    "id": "anyRequestID",
     "site": {
       "page": "prebid.org",
       "publisher": {
-        "id": "a3de7af2-a86a-4043-a77b-c7e86744155e"
+        "id": "anyPublisher"
       }
     },
-    "source": {
-      "tid": "b9c97a4b-cbc4-483d-b2c4-58a19ed5cfc5"
-    },
-    "tmax": 1000,
-    "imp": [
-      {
-        "id": "/19968336/header-bid-tag-0",
-        "ext": {
-          "appnexus": {
-            "placementId": 12883451
-          }
-        },
-        "banner": {
-          "format": [
-            {
-              "w": 300,
-              "h": 250
-            },
-            {
-              "w": 300,
-              "h": 300
-            }
-          ]
-        }
-      }
-    ],
-    "regs": {
+    "imp": [{
+      "id": "anyImpID",
       "ext": {
-        "gdpr": 1
+        "appnexus": {
+          "placementId": 42
+        }
+      },
+      "banner": {
+        "format": [{
+            "w": 300,
+            "h": 250
+          },
+          {
+            "w": 300,
+            "h": 300
+          }
+        ]
       }
-    },
+    }],
+    "tmax": 1000,
     "user": {
       "ext": {
         "eids": []
@@ -47,4 +36,4 @@
   },
   "expectedReturnCode": 400,
   "expectedErrorMessage": "Invalid request: request.user.ext.eids must contain at least one element or be undefined\n"
-}
+}
\ No newline at end of file
diff --git a/endpoints/openrtb2/sample-requests/invalid-whole/user-ext-eids-source-duplicate.json b/endpoints/openrtb2/sample-requests/invalid-whole/user-ext-eids-source-duplicate.json
new file mode 100644
index 00000000..05cd7f34
--- /dev/null
+++ b/endpoints/openrtb2/sample-requests/invalid-whole/user-ext-eids-source-duplicate.json
@@ -0,0 +1,49 @@
+{
+  "description": "Bid request where more than one request.user.ext.eids array elements share the same source field value",
+  "mockBidRequest": {
+    "id": "anyRequestID",
+    "site": {
+      "page": "prebid.org",
+      "publisher": {
+        "id": "anyPublisher"
+      }
+    },
+    "imp": [{
+      "id": "anyImpID",
+      "ext": {
+        "appnexus": {
+          "placementId": 42
+        }
+      },
+      "banner": {
+        "format": [{
+            "w": 300,
+            "h": 250
+          },
+          {
+            "w": 300,
+            "h": 300
+          }
+        ]
+      }
+    }],
+    "tmax": 1000,
+    "user": {
+      "ext": {
+        "eids": [{
+          "source": "source1",
+          "uids": [{
+            "id": "A"
+          }]
+        }, {
+          "source": "source1",
+          "uids": [{
+            "id": "B"
+          }]
+        }]
+      }
+    }
+  },
+  "expectedReturnCode": 400,
+  "expectedErrorMessage": "Invalid request: request.user.ext.eids must contain unique sources\n"
+}
\ No newline at end of file
diff --git a/endpoints/openrtb2/sample-requests/invalid-whole/user-ext-eids-source-empty.json b/endpoints/openrtb2/sample-requests/invalid-whole/user-ext-eids-source-empty.json
index 06684b5e..3a451ecb 100644
--- a/endpoints/openrtb2/sample-requests/invalid-whole/user-ext-eids-source-empty.json
+++ b/endpoints/openrtb2/sample-requests/invalid-whole/user-ext-eids-source-empty.json
@@ -1,52 +1,43 @@
 {
   "description": "Bid request with user.ext.eids array element array element that does not contain source field",
   "mockBidRequest": {
-    "id": "b9c97a4b-cbc4-483d-b2c4-58a19ed5cfc5",
+    "id": "anyRequestID",
     "site": {
       "page": "prebid.org",
       "publisher": {
-        "id": "a3de7af2-a86a-4043-a77b-c7e86744155e"
+        "id": "anyPublisher"
       }
     },
-    "source": {
-      "tid": "b9c97a4b-cbc4-483d-b2c4-58a19ed5cfc5"
-    },
-    "tmax": 1000,
-    "imp": [
-      {
-        "id": "/19968336/header-bid-tag-0",
-        "ext": {
-          "appnexus": {
-            "placementId": 12883451
-          }
-        },
-        "banner": {
-          "format": [
-            {
-              "w": 300,
-              "h": 250
-            },
-            {
-              "w": 300,
-              "h": 300
-            }
-          ]
-        }
-      }
-    ],
-    "regs": {
+    "imp": [{
+      "id": "anyImpID",
       "ext": {
-        "gdpr": 1
+        "appnexus": {
+          "placementId": 42
+        }
+      },
+      "banner": {
+        "format": [{
+            "w": 300,
+            "h": 250
+          },
+          {
+            "w": 300,
+            "h": 300
+          }
+        ]
       }
-    },
+    }],
+    "tmax": 1000,
     "user": {
       "ext": {
-        "eids": [
-          {}
-        ]
+        "eids": [{
+          "uids": [{
+            "id": "A"
+          }]
+        }]
       }
     }
   },
   "expectedReturnCode": 400,
   "expectedErrorMessage": "Invalid request: request.user.ext.eids[0] missing required field: \"source\"\n"
-}
+}
\ No newline at end of file
diff --git a/endpoints/openrtb2/sample-requests/invalid-whole/user-ext-eids-source-unique.json b/endpoints/openrtb2/sample-requests/invalid-whole/user-ext-eids-source-unique.json
deleted file mode 100644
index 5a6548c3..00000000
--- a/endpoints/openrtb2/sample-requests/invalid-whole/user-ext-eids-source-unique.json
+++ /dev/null
@@ -1,59 +0,0 @@
-{
-  "description": "Bid request where more than one request.user.ext.eids array elements share the same source field value",
-  "mockBidRequest": {
-    "id": "b9c97a4b-cbc4-483d-b2c4-58a19ed5cfc5",
-    "site": {
-      "page": "prebid.org",
-      "publisher": {
-        "id": "a3de7af2-a86a-4043-a77b-c7e86744155e"
-      }
-    },
-    "source": {
-      "tid": "b9c97a4b-cbc4-483d-b2c4-58a19ed5cfc5"
-    },
-    "tmax": 1000,
-    "imp": [
-      {
-        "id": "/19968336/header-bid-tag-0",
-        "ext": {
-          "appnexus": {
-            "placementId": 12883451
-          }
-        },
-        "banner": {
-          "format": [
-            {
-              "w": 300,
-              "h": 250
-            },
-            {
-              "w": 300,
-              "h": 300
-            }
-          ]
-        }
-      }
-    ],
-    "regs": {
-      "ext": {
-        "gdpr": 1
-      }
-    },
-    "user": {
-      "ext": {
-        "eids": [
-          {
-            "source": "source1",
-            "id": "id1"
-          },
-          {
-            "source": "source1",
-            "id": "id2"
-          }
-        ]
-      }
-    }
-  },
-  "expectedReturnCode": 400,
-  "expectedErrorMessage": "Invalid request: request.user.ext.eids must contain unique sources\n"
-}
diff --git a/endpoints/openrtb2/sample-requests/invalid-whole/user-ext-eids-uids-id-empty.json b/endpoints/openrtb2/sample-requests/invalid-whole/user-ext-eids-uids-id-empty.json
index faa09f93..910e9650 100644
--- a/endpoints/openrtb2/sample-requests/invalid-whole/user-ext-eids-uids-id-empty.json
+++ b/endpoints/openrtb2/sample-requests/invalid-whole/user-ext-eids-uids-id-empty.json
@@ -1,57 +1,42 @@
 {
   "description": "Bid request where a request.user.ext.eids.uids array element is missing its id field",
   "mockBidRequest": {
-    "id": "b9c97a4b-cbc4-483d-b2c4-58a19ed5cfc5",
+    "id": "anyRequestID",
     "site": {
       "page": "prebid.org",
       "publisher": {
-        "id": "a3de7af2-a86a-4043-a77b-c7e86744155e"
+        "id": "anyPublisher"
       }
     },
-    "source": {
-      "tid": "b9c97a4b-cbc4-483d-b2c4-58a19ed5cfc5"
-    },
-    "tmax": 1000,
-    "imp": [
-      {
-        "id": "/19968336/header-bid-tag-0",
-        "ext": {
-          "appnexus": {
-            "placementId": 12883451
-          }
-        },
-        "banner": {
-          "format": [
-            {
-              "w": 300,
-              "h": 250
-            },
-            {
-              "w": 300,
-              "h": 300
-            }
-          ]
-        }
-      }
-    ],
-    "regs": {
-      "ext": {
-        "gdpr": 1
-      }
-    },
-    "user": {
+    "imp": [{
+      "id": "anyImpID",
       "ext": {
-        "eids": [
+        "appnexus": {
+          "placementId": 42
+        }
+      },
+      "banner": {
+        "format": [{
+            "w": 300,
+            "h": 250
+          },
           {
-            "source": "source1",
-            "uids": [
-              {}
-            ]
+            "w": 300,
+            "h": 300
           }
         ]
       }
+    }],
+    "tmax": 1000,
+    "user": {
+      "ext": {
+        "eids": [{
+          "source": "source1",
+          "uids": [{}]
+        }]
+      }
     }
   },
   "expectedReturnCode": 400,
   "expectedErrorMessage": "Invalid request: request.user.ext.eids[0].uids[0] missing required field: \"id\"\n"
-}
+}
\ No newline at end of file
diff --git a/endpoints/openrtb2/sample-requests/invalid-whole/user-ext-eids-id-uids-empty.json b/endpoints/openrtb2/sample-requests/invalid-whole/user-ext-eids-uids-missing.json
similarity index 53%
rename from endpoints/openrtb2/sample-requests/invalid-whole/user-ext-eids-id-uids-empty.json
rename to endpoints/openrtb2/sample-requests/invalid-whole/user-ext-eids-uids-missing.json
index 09ad4eeb..eed386b4 100644
--- a/endpoints/openrtb2/sample-requests/invalid-whole/user-ext-eids-id-uids-empty.json
+++ b/endpoints/openrtb2/sample-requests/invalid-whole/user-ext-eids-uids-missing.json
@@ -1,5 +1,5 @@
 {
-  "description": "Bid request with user.ext.eids array element array element that does not contain an id nor uids",
+  "description": "Bid request with user.ext.eids array element array element that does not contain uids",
   "mockBidRequest": {
     "id": "b9c97a4b-cbc4-483d-b2c4-58a19ed5cfc5",
     "site": {
@@ -12,28 +12,25 @@
       "tid": "b9c97a4b-cbc4-483d-b2c4-58a19ed5cfc5"
     },
     "tmax": 1000,
-    "imp": [
-      {
-        "id": "/19968336/header-bid-tag-0",
-        "ext": {
-          "appnexus": {
-            "placementId": 12883451
-          }
-        },
-        "banner": {
-          "format": [
-            {
-              "w": 300,
-              "h": 250
-            },
-            {
-              "w": 300,
-              "h": 300
-            }
-          ]
+    "imp": [{
+      "id": "/19968336/header-bid-tag-0",
+      "ext": {
+        "appnexus": {
+          "placementId": 12883451
         }
+      },
+      "banner": {
+        "format": [{
+            "w": 300,
+            "h": 250
+          },
+          {
+            "w": 300,
+            "h": 300
+          }
+        ]
       }
-    ],
+    }],
     "regs": {
       "ext": {
         "gdpr": 1
@@ -41,14 +38,12 @@
     },
     "user": {
       "ext": {
-        "eids": [
-          {
-            "source": "source1"
-          }
-        ]
+        "eids": [{
+          "source": "source1"
+        }]
       }
     }
   },
   "expectedReturnCode": 400,
-  "expectedErrorMessage": "Invalid request: request.user.ext.eids[0] must contain either \"id\" or \"uids\" field\n"
-}
+  "expectedErrorMessage": "Invalid request: request.user.ext.eids[0].uids must contain at least one element or be undefined\n"
+}
\ No newline at end of file
diff --git a/endpoints/openrtb2/video_auction.go b/endpoints/openrtb2/video_auction.go
index a7cf02cb..e35a76e7 100644
--- a/endpoints/openrtb2/video_auction.go
+++ b/endpoints/openrtb2/video_auction.go
@@ -18,7 +18,7 @@ import (
 	"github.com/gofrs/uuid"
 	"github.com/golang/glog"
 	"github.com/julienschmidt/httprouter"
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	jsonpatch "gopkg.in/evanphx/json-patch.v4"
 
 	accountService "github.com/prebid/prebid-server/account"
diff --git a/exchange/auction.go b/exchange/auction.go
index c8aff684..0719ae95 100644
--- a/exchange/auction.go
+++ b/exchange/auction.go
@@ -11,7 +11,7 @@ import (
 	"time"
 
 	uuid "github.com/gofrs/uuid"
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/openrtb_ext"
 	"github.com/prebid/prebid-server/prebid_cache_client"
diff --git a/exchange/bidder.go b/exchange/bidder.go
index 2f673d2e..d6ece01c 100644
--- a/exchange/bidder.go
+++ b/exchange/bidder.go
@@ -18,9 +18,9 @@ import (
 	"github.com/prebid/prebid-server/currency"
 	"github.com/prebid/prebid-server/version"
 
-	nativeRequests "github.com/mxmCherry/openrtb/v15/native1/request"
-	nativeResponse "github.com/mxmCherry/openrtb/v15/native1/response"
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	nativeRequests "github.com/mxmCherry/openrtb/v16/native1/request"
+	nativeResponse "github.com/mxmCherry/openrtb/v16/native1/response"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/exchange/bidder_validate_bids.go b/exchange/bidder_validate_bids.go
index cc312976..eec34964 100644
--- a/exchange/bidder_validate_bids.go
+++ b/exchange/bidder_validate_bids.go
@@ -6,7 +6,7 @@ import (
 	"fmt"
 	"strings"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/currency"
diff --git a/exchange/exchange.go b/exchange/exchange.go
index 96e6a40f..07e8aa11 100644
--- a/exchange/exchange.go
+++ b/exchange/exchange.go
@@ -31,7 +31,8 @@ import (
 	"github.com/buger/jsonparser"
 	"github.com/gofrs/uuid"
 	"github.com/golang/glog"
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb3"
 )
 
 type extCacheInstructions struct {
@@ -65,7 +66,7 @@ type exchange struct {
 	privacyConfig     config.Privacy
 	categoriesFetcher stored_requests.CategoryFetcher
 	bidIDGenerator    BidIDGenerator
-	hostSChainNode    *openrtb_ext.ExtRequestPrebidSChainSChainNode
+	hostSChainNode    *openrtb2.SupplyChainNode
 }
 
 // Container to pass out response ext data from the GetAllBids goroutines back into the main thread
@@ -668,7 +669,7 @@ func (e *exchange) buildBidResponse(ctx context.Context, liveAdapters []openrtb_
 	bidResponse.ID = bidRequest.ID
 	if len(liveAdapters) == 0 {
 		// signal "Invalid Request" if no valid bidders.
-		bidResponse.NBR = openrtb2.NoBidReasonCode.Ptr(openrtb2.NoBidReasonCodeInvalidRequest)
+		bidResponse.NBR = openrtb3.NoBidInvalidRequest.Ptr()
 	}
 
 	// Create the SeatBids. We use a zero sized slice so that we can append non-zero seat bids, and not include seatBid
diff --git a/exchange/gdpr.go b/exchange/gdpr.go
index 208ce0fd..6d265f5f 100644
--- a/exchange/gdpr.go
+++ b/exchange/gdpr.go
@@ -3,7 +3,7 @@ package exchange
 import (
 	"encoding/json"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/gdpr"
 )
 
diff --git a/exchange/targeting.go b/exchange/targeting.go
index 0113d932..67cb534d 100644
--- a/exchange/targeting.go
+++ b/exchange/targeting.go
@@ -3,7 +3,7 @@ package exchange
 import (
 	"strconv"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/openrtb_ext"
 )
 
diff --git a/exchange/utils.go b/exchange/utils.go
index 3ce053e5..22cfa85e 100644
--- a/exchange/utils.go
+++ b/exchange/utils.go
@@ -9,7 +9,7 @@ import (
 	"github.com/prebid/prebid-server/stored_responses"
 
 	"github.com/buger/jsonparser"
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/go-gdpr/vendorconsent"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
@@ -46,7 +46,7 @@ func cleanOpenRTBRequests(ctx context.Context,
 	privacyConfig config.Privacy,
 	gdprPermsBuilder gdpr.PermissionsBuilder,
 	tcf2ConfigBuilder gdpr.TCF2ConfigBuilder,
-	hostSChainNode *openrtb_ext.ExtRequestPrebidSChainSChainNode,
+	hostSChainNode *openrtb2.SupplyChainNode,
 ) (allowedBidderRequests []BidderRequest, privacyLabels metrics.PrivacyLabels, errs []error) {
 
 	req := auctionReq.BidRequestWrapper
@@ -208,7 +208,7 @@ func getAuctionBidderRequests(auctionRequest AuctionRequest,
 	bidderToSyncerKey map[string]string,
 	impsByBidder map[string][]openrtb2.Imp,
 	aliases map[string]string,
-	hostSChainNode *openrtb_ext.ExtRequestPrebidSChainSChainNode) ([]BidderRequest, []error) {
+	hostSChainNode *openrtb2.SupplyChainNode) ([]BidderRequest, []error) {
 
 	bidderRequests := make([]BidderRequest, 0, len(impsByBidder))
 	req := auctionRequest.BidRequestWrapper
@@ -517,7 +517,7 @@ func removeUnpermissionedEids(request *openrtb2.BidRequest, bidder string, reque
 		return nil
 	}
 
-	var eids []openrtb_ext.ExtUserEid
+	var eids []openrtb2.EID
 	if err := json.Unmarshal(eidsJSON, &eids); err != nil {
 		return err
 	}
@@ -533,7 +533,7 @@ func removeUnpermissionedEids(request *openrtb2.BidRequest, bidder string, reque
 		eidRules[p.Source] = p.Bidders
 	}
 
-	eidsAllowed := make([]openrtb_ext.ExtUserEid, 0, len(eids))
+	eidsAllowed := make([]openrtb2.EID, 0, len(eids))
 	for _, eid := range eids {
 		allowed := false
 		if rule, hasRule := eidRules[eid.Source]; hasRule {
diff --git a/firstpartydata/first_party_data.go b/firstpartydata/first_party_data.go
index a3abf543..64997d70 100644
--- a/firstpartydata/first_party_data.go
+++ b/firstpartydata/first_party_data.go
@@ -3,7 +3,8 @@ package firstpartydata
 import (
 	"encoding/json"
 	"fmt"
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	jsonpatch "gopkg.in/evanphx/json-patch.v4"
 
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/go.mod b/go.mod
index cdb94928..67578244 100644
--- a/go.mod
+++ b/go.mod
@@ -16,7 +16,8 @@ require (
 	github.com/julienschmidt/httprouter v1.3.0
 	github.com/lib/pq v1.10.4
 	github.com/mitchellh/copystructure v1.2.0
-	github.com/mxmCherry/openrtb/v15 v15.0.1
+	github.com/mxmCherry/openrtb v13.0.0+incompatible
+	github.com/mxmCherry/openrtb/v16 v16.0.0-alpha.2
 	github.com/prebid/go-gdpr v1.11.0
 	github.com/prometheus/client_golang v1.12.1
 	github.com/prometheus/client_model v0.2.0
diff --git a/go.sum b/go.sum
index f2736017..a4e68c54 100644
--- a/go.sum
+++ b/go.sum
@@ -337,8 +337,10 @@ github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3Rllmb
 github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
 github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
 github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
-github.com/mxmCherry/openrtb/v15 v15.0.1 h1:RnMj/n8Sv0wqaiWQCbmUwzeO6T4Bk3d9RokKvla1CDc=
-github.com/mxmCherry/openrtb/v15 v15.0.1/go.mod h1:TVgncsz6MOzbL7lhun1lNuUBzVBlVDbxf9Fyy1TyhZA=
+github.com/mxmCherry/openrtb v13.0.0+incompatible h1:KEnUHAJFovM54lcicyjiJgZZ4mWKNw+h0GOJXWOoJ4A=
+github.com/mxmCherry/openrtb v13.0.0+incompatible/go.mod h1:zpnz6Au3bzTGplpRU0kvFPNT6g4ROAKx/GkrslFDwZk=
+github.com/mxmCherry/openrtb/v16 v16.0.0-alpha.2 h1:Iwp8+KHfzDIhaKFynJ4xVstU1LTVLzG+Unur5d0CeWo=
+github.com/mxmCherry/openrtb/v16 v16.0.0-alpha.2/go.mod h1:k+21QiTXLLjjXCroputuQNIDJC2GtrzFcHbJbDz4RcE=
 github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A=
 github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE=
 github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU=
diff --git a/openrtb_ext/bid_request_video.go b/openrtb_ext/bid_request_video.go
index 29e62da3..714d62cc 100644
--- a/openrtb_ext/bid_request_video.go
+++ b/openrtb_ext/bid_request_video.go
@@ -1,6 +1,6 @@
 package openrtb_ext
 
-import "github.com/mxmCherry/openrtb/v15/openrtb2"
+import "github.com/mxmCherry/openrtb/v16/openrtb2"
 
 type BidRequestVideo struct {
 	// Attribute:
diff --git a/openrtb_ext/deal_tier.go b/openrtb_ext/deal_tier.go
index 8aeedb81..d5fe279f 100644
--- a/openrtb_ext/deal_tier.go
+++ b/openrtb_ext/deal_tier.go
@@ -3,7 +3,7 @@ package openrtb_ext
 import (
 	"encoding/json"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 )
 
 // DealTier defines the configuration of a deal tier.
diff --git a/openrtb_ext/request.go b/openrtb_ext/request.go
index 33d168f6..04340438 100644
--- a/openrtb_ext/request.go
+++ b/openrtb_ext/request.go
@@ -3,6 +3,8 @@ package openrtb_ext
 import (
 	"encoding/json"
 	"errors"
+
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 )
 
 // FirstPartyDataExtKey defines a field name within request.ext and request.imp.ext reserved for first party data.
@@ -27,8 +29,8 @@ const MaxDecimalFigures int = 15
 
 // ExtRequest defines the contract for bidrequest.ext
 type ExtRequest struct {
-	Prebid ExtRequestPrebid              `json:"prebid"`
-	SChain *ExtRequestPrebidSChainSChain `json:"schain,omitempty"`
+	Prebid ExtRequestPrebid      `json:"prebid"`
+	SChain *openrtb2.SupplyChain `json:"schain,omitempty"`
 }
 
 // ExtRequestPrebid defines the contract for bidrequest.ext.prebid
@@ -79,27 +81,8 @@ type ExtRequestCurrency struct {
 
 // ExtRequestPrebid defines the contract for bidrequest.ext.prebid.schains
 type ExtRequestPrebidSChain struct {
-	Bidders []string                     `json:"bidders,omitempty"`
-	SChain  ExtRequestPrebidSChainSChain `json:"schain"`
-}
-
-// ExtRequestPrebidSChainSChain defines the contract for bidrequest.ext.prebid.schains[i].schain
-type ExtRequestPrebidSChainSChain struct {
-	Complete int                                 `json:"complete"`
-	Nodes    []*ExtRequestPrebidSChainSChainNode `json:"nodes"`
-	Ver      string                              `json:"ver"`
-	Ext      json.RawMessage                     `json:"ext,omitempty"`
-}
-
-// ExtRequestPrebidSChainSChainNode defines the contract for bidrequest.ext.prebid.schains[i].schain[i].nodes
-type ExtRequestPrebidSChainSChainNode struct {
-	ASI    string          `json:"asi"`
-	SID    string          `json:"sid"`
-	RID    string          `json:"rid,omitempty"`
-	Name   string          `json:"name,omitempty"`
-	Domain string          `json:"domain,omitempty"`
-	HP     int             `json:"hp"`
-	Ext    json.RawMessage `json:"ext,omitempty"`
+	Bidders []string             `json:"bidders,omitempty"`
+	SChain  openrtb2.SupplyChain `json:"schain"`
 }
 
 // ExtRequestPrebidChannel defines the contract for bidrequest.ext.prebid.channel
diff --git a/openrtb_ext/request_wrapper.go b/openrtb_ext/request_wrapper.go
index dfc2a41f..8d2d2c72 100644
--- a/openrtb_ext/request_wrapper.go
+++ b/openrtb_ext/request_wrapper.go
@@ -4,7 +4,7 @@ import (
 	"encoding/json"
 	"errors"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 )
 
 // RequestWrapper wraps the OpenRTB request to provide a storage location for unmarshalled ext fields, so they
@@ -255,7 +255,7 @@ type UserExt struct {
 	consentDirty bool
 	prebid       *ExtUserPrebid
 	prebidDirty  bool
-	eids         *[]ExtUserEid
+	eids         *[]openrtb2.EID
 	eidsDirty    bool
 }
 
@@ -289,7 +289,7 @@ func (ue *UserExt) unmarshal(extJson json.RawMessage) error {
 
 	eidsJson, hasEids := ue.ext["eids"]
 	if hasEids {
-		ue.eids = &[]ExtUserEid{}
+		ue.eids = &[]openrtb2.EID{}
 		if err := json.Unmarshal(eidsJson, ue.eids); err != nil {
 			return err
 		}
@@ -389,7 +389,7 @@ func (ue *UserExt) SetPrebid(prebid *ExtUserPrebid) {
 	ue.prebidDirty = true
 }
 
-func (ue *UserExt) GetEid() *[]ExtUserEid {
+func (ue *UserExt) GetEid() *[]openrtb2.EID {
 	if ue.eids == nil {
 		return nil
 	}
@@ -397,7 +397,7 @@ func (ue *UserExt) GetEid() *[]ExtUserEid {
 	return &eids
 }
 
-func (ue *UserExt) SetEid(eid *[]ExtUserEid) {
+func (ue *UserExt) SetEid(eid *[]openrtb2.EID) {
 	ue.eids = eid
 	ue.eidsDirty = true
 }
@@ -411,7 +411,7 @@ type RequestExt struct {
 	extDirty    bool
 	prebid      *ExtRequestPrebid
 	prebidDirty bool
-	schain      *ExtRequestPrebidSChainSChain // ORTB 2.4 location
+	schain      *openrtb2.SupplyChain // ORTB 2.4 location
 	schainDirty bool
 }
 
@@ -434,7 +434,7 @@ func (re *RequestExt) unmarshal(extJson json.RawMessage) error {
 	}
 	schainJson, hasSChain := re.ext["schain"]
 	if hasSChain {
-		re.schain = &ExtRequestPrebidSChainSChain{}
+		re.schain = &openrtb2.SupplyChain{}
 		err = json.Unmarshal(schainJson, re.schain)
 	}
 
@@ -511,7 +511,7 @@ func (re *RequestExt) SetPrebid(prebid *ExtRequestPrebid) {
 // These schain methods on the request.ext are only for ORTB 2.4 backwards compatibility and
 // should not be used for any other purposes. To access ORTB 2.5 schains, see source.ext.schain
 // or request.ext.prebid.schains.
-func (re *RequestExt) GetSChain() *ExtRequestPrebidSChainSChain {
+func (re *RequestExt) GetSChain() *openrtb2.SupplyChain {
 	if re.schain == nil {
 		return nil
 	}
@@ -519,7 +519,7 @@ func (re *RequestExt) GetSChain() *ExtRequestPrebidSChainSChain {
 	return &schain
 }
 
-func (re *RequestExt) SetSChain(schain *ExtRequestPrebidSChainSChain) {
+func (re *RequestExt) SetSChain(schain *openrtb2.SupplyChain) {
 	re.schain = schain
 	re.schainDirty = true
 }
@@ -861,7 +861,7 @@ func (se *SiteExt) SetUSPrivacy(amp int8) {
 type SourceExt struct {
 	ext         map[string]json.RawMessage
 	extDirty    bool
-	schain      *ExtRequestPrebidSChainSChain
+	schain      *openrtb2.SupplyChain
 	schainDirty bool
 }
 
@@ -923,7 +923,7 @@ func (se *SourceExt) SetExt(ext map[string]json.RawMessage) {
 	se.extDirty = true
 }
 
-func (se *SourceExt) GetSChain() *ExtRequestPrebidSChainSChain {
+func (se *SourceExt) GetSChain() *openrtb2.SupplyChain {
 	if se.schain == nil {
 		return nil
 	}
@@ -931,7 +931,7 @@ func (se *SourceExt) GetSChain() *ExtRequestPrebidSChainSChain {
 	return &schain
 }
 
-func (se *SourceExt) SetSChain(schain *ExtRequestPrebidSChainSChain) {
+func (se *SourceExt) SetSChain(schain *openrtb2.SupplyChain) {
 	se.schain = schain
 	se.schainDirty = true
 }
diff --git a/openrtb_ext/source.go b/openrtb_ext/source.go
index 70b291b1..2544bf8f 100644
--- a/openrtb_ext/source.go
+++ b/openrtb_ext/source.go
@@ -1,6 +1,8 @@
 package openrtb_ext
 
+import "github.com/mxmCherry/openrtb/v16/openrtb2"
+
 // ExtSource defines the contract for bidrequest.source.ext
 type ExtSource struct {
-	SChain *ExtRequestPrebidSChainSChain `json:"schain"`
+	SChain *openrtb2.SupplyChain `json:"schain"`
 }
diff --git a/openrtb_ext/user.go b/openrtb_ext/user.go
index d5e6ae67..d7c01c1f 100644
--- a/openrtb_ext/user.go
+++ b/openrtb_ext/user.go
@@ -1,6 +1,8 @@
 package openrtb_ext
 
-import "encoding/json"
+import (
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
+)
 
 // ExtUser defines the contract for bidrequest.user.ext
 type ExtUser struct {
@@ -10,27 +12,10 @@ type ExtUser struct {
 
 	Prebid *ExtUserPrebid `json:"prebid,omitempty"`
 
-	Eids []ExtUserEid `json:"eids,omitempty"`
+	Eids []openrtb2.EID `json:"eids,omitempty"`
 }
 
 // ExtUserPrebid defines the contract for bidrequest.user.ext.prebid
 type ExtUserPrebid struct {
 	BuyerUIDs map[string]string `json:"buyeruids,omitempty"`
 }
-
-// ExtUserEid defines the contract for bidrequest.user.ext.eids
-// Responsible for the Universal User ID support: establishing pseudonymous IDs for users.
-// See https://github.com/prebid/Prebid.js/issues/3900 for details.
-type ExtUserEid struct {
-	Source string          `json:"source"`
-	ID     string          `json:"id,omitempty"`
-	Uids   []ExtUserEidUid `json:"uids,omitempty"`
-	Ext    json.RawMessage `json:"ext,omitempty"`
-}
-
-// ExtUserEidUid defines the contract for bidrequest.user.ext.eids[i].uids[j]
-type ExtUserEidUid struct {
-	ID    string          `json:"id"`
-	Atype int             `json:"atype,omitempty"`
-	Ext   json.RawMessage `json:"ext,omitempty"`
-}
diff --git a/privacy/ccpa/consentwriter.go b/privacy/ccpa/consentwriter.go
index 451f2b40..dfde683d 100644
--- a/privacy/ccpa/consentwriter.go
+++ b/privacy/ccpa/consentwriter.go
@@ -1,7 +1,7 @@
 package ccpa
 
 import (
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/openrtb_ext"
 )
 
diff --git a/privacy/ccpa/policy.go b/privacy/ccpa/policy.go
index 39322317..6b34c5df 100644
--- a/privacy/ccpa/policy.go
+++ b/privacy/ccpa/policy.go
@@ -3,7 +3,7 @@ package ccpa
 import (
 	"fmt"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/openrtb_ext"
 )
 
diff --git a/privacy/enforcement.go b/privacy/enforcement.go
index ab2f64a6..44128eb9 100644
--- a/privacy/enforcement.go
+++ b/privacy/enforcement.go
@@ -1,6 +1,6 @@
 package privacy
 
-import "github.com/mxmCherry/openrtb/v15/openrtb2"
+import "github.com/mxmCherry/openrtb/v16/openrtb2"
 
 // Enforcement represents the privacy policies to enforce for an OpenRTB bid request.
 type Enforcement struct {
diff --git a/privacy/gdpr/consentwriter.go b/privacy/gdpr/consentwriter.go
index ca784b7a..18fd519a 100644
--- a/privacy/gdpr/consentwriter.go
+++ b/privacy/gdpr/consentwriter.go
@@ -3,7 +3,7 @@ package gdpr
 import (
 	"encoding/json"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/openrtb_ext"
 )
 
diff --git a/privacy/lmt/ios.go b/privacy/lmt/ios.go
index 55e1764c..1e279ecf 100644
--- a/privacy/lmt/ios.go
+++ b/privacy/lmt/ios.go
@@ -3,7 +3,7 @@ package lmt
 import (
 	"strings"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/openrtb_ext"
 	"github.com/prebid/prebid-server/util/iosutil"
 )
diff --git a/privacy/lmt/policy.go b/privacy/lmt/policy.go
index 0f282925..6a8ada97 100644
--- a/privacy/lmt/policy.go
+++ b/privacy/lmt/policy.go
@@ -1,6 +1,6 @@
 package lmt
 
-import "github.com/mxmCherry/openrtb/v15/openrtb2"
+import "github.com/mxmCherry/openrtb/v16/openrtb2"
 
 const (
 	trackingUnrestricted = 0
diff --git a/privacy/scrubber.go b/privacy/scrubber.go
index e07ebd05..5ce0d69f 100644
--- a/privacy/scrubber.go
+++ b/privacy/scrubber.go
@@ -4,7 +4,7 @@ import (
 	"encoding/json"
 	"strings"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 )
 
 // ScrubStrategyIPV4 defines the approach to scrub PII from an IPV4 address.
diff --git a/privacy/writer.go b/privacy/writer.go
index 0f04a52f..d3e661b3 100644
--- a/privacy/writer.go
+++ b/privacy/writer.go
@@ -1,6 +1,6 @@
 package privacy
 
-import "github.com/mxmCherry/openrtb/v15/openrtb2"
+import "github.com/mxmCherry/openrtb/v16/openrtb2"
 
 // PolicyWriter mutates an OpenRTB bid request with a policy's regulatory information.
 type PolicyWriter interface {
diff --git a/schain/schain.go b/schain/schain.go
index 785c7e24..d29645e3 100644
--- a/schain/schain.go
+++ b/schain/schain.go
@@ -3,12 +3,14 @@ package schain
 import (
 	"fmt"
 
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
+
 	"github.com/prebid/prebid-server/openrtb_ext"
 )
 
 // BidderToPrebidSChains organizes the ORTB 2.5 multiple root schain nodes into a map of schain nodes by bidder
-func BidderToPrebidSChains(sChains []*openrtb_ext.ExtRequestPrebidSChain) (map[string]*openrtb_ext.ExtRequestPrebidSChainSChain, error) {
-	bidderToSChains := make(map[string]*openrtb_ext.ExtRequestPrebidSChainSChain)
+func BidderToPrebidSChains(sChains []*openrtb_ext.ExtRequestPrebidSChain) (map[string]*openrtb2.SupplyChain, error) {
+	bidderToSChains := make(map[string]*openrtb2.SupplyChain)
 
 	for _, schainWrapper := range sChains {
 		for _, bidder := range schainWrapper.Bidders {
diff --git a/schain/schainwriter.go b/schain/schainwriter.go
index b6788229..37d7b631 100644
--- a/schain/schainwriter.go
+++ b/schain/schainwriter.go
@@ -3,12 +3,12 @@ package schain
 import (
 	"encoding/json"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/openrtb_ext"
 )
 
 // NewSChainWriter creates an ORTB 2.5 schain writer instance
-func NewSChainWriter(reqExt *openrtb_ext.ExtRequest, hostSChainNode *openrtb_ext.ExtRequestPrebidSChainSChainNode) (*SChainWriter, error) {
+func NewSChainWriter(reqExt *openrtb_ext.ExtRequest, hostSChainNode *openrtb2.SupplyChainNode) (*SChainWriter, error) {
 	if !extPrebidSChainExists(reqExt) {
 		return &SChainWriter{hostSChainNode: hostSChainNode}, nil
 	}
@@ -28,8 +28,8 @@ func NewSChainWriter(reqExt *openrtb_ext.ExtRequest, hostSChainNode *openrtb_ext
 // SChainWriter is used to write the appropriate schain for a particular bidder defined in the ORTB 2.5 multi-schain
 // location (req.ext.prebid.schain) to the ORTB 2.5 location (req.source.ext)
 type SChainWriter struct {
-	sChainsByBidder map[string]*openrtb_ext.ExtRequestPrebidSChainSChain
-	hostSChainNode  *openrtb_ext.ExtRequestPrebidSChainSChainNode
+	sChainsByBidder map[string]*openrtb2.SupplyChain
+	hostSChainNode  *openrtb2.SupplyChainNode
 }
 
 // Write selects an schain from the multi-schain ORTB 2.5 location (req.ext.prebid.schains) for the specified bidder
@@ -37,7 +37,7 @@ type SChainWriter struct {
 // location and no wildcard schain exists, the request is not modified.
 func (w SChainWriter) Write(req *openrtb2.BidRequest, bidder string) {
 	const sChainWildCard = "*"
-	var selectedSChain *openrtb_ext.ExtRequestPrebidSChainSChain
+	var selectedSChain *openrtb2.SupplyChain
 
 	wildCardSChain := w.sChainsByBidder[sChainWildCard]
 	bidderSChain := w.sChainsByBidder[bidder]
@@ -47,7 +47,7 @@ func (w SChainWriter) Write(req *openrtb2.BidRequest, bidder string) {
 		return
 	}
 
-	selectedSChain = &openrtb_ext.ExtRequestPrebidSChainSChain{Ver: "1.0"}
+	selectedSChain = &openrtb2.SupplyChain{Ver: "1.0"}
 
 	if bidderSChain != nil {
 		selectedSChain = bidderSChain
@@ -67,7 +67,7 @@ func (w SChainWriter) Write(req *openrtb2.BidRequest, bidder string) {
 	}
 
 	if w.hostSChainNode != nil {
-		schain.SChain.Nodes = append(schain.SChain.Nodes, w.hostSChainNode)
+		schain.SChain.Nodes = append(schain.SChain.Nodes, *w.hostSChainNode)
 	}
 
 	sourceExt, err := json.Marshal(schain)
diff --git a/stored_responses/stored_responses.go b/stored_responses/stored_responses.go
index f3540600..25984a7d 100644
--- a/stored_responses/stored_responses.go
+++ b/stored_responses/stored_responses.go
@@ -5,7 +5,7 @@ import (
 	"encoding/json"
 	"fmt"
 	"github.com/buger/jsonparser"
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/openrtb_ext"
 	"github.com/prebid/prebid-server/stored_requests"
 )
diff --git a/version/xprebidheader.go b/version/xprebidheader.go
index 5d91ca49..ae0be7dd 100644
--- a/version/xprebidheader.go
+++ b/version/xprebidheader.go
@@ -3,7 +3,7 @@ package version
 import (
 	"strings"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 
 	"github.com/prebid/prebid-server/openrtb_ext"
 )


Test patch:
diff --git a/adapters/adapterstest/adapter_test_util.go b/adapters/adapterstest/adapter_test_util.go
index 25d43a13..d48b86a4 100644
--- a/adapters/adapterstest/adapter_test_util.go
+++ b/adapters/adapterstest/adapter_test_util.go
@@ -8,7 +8,7 @@ import (
 
 	"net/http"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 )
 
 // OrtbMockService Represents a scaffolded OpenRTB service.
diff --git a/adapters/adapterstest/test_json.go b/adapters/adapterstest/test_json.go
index be3e9e40..3c779414 100644
--- a/adapters/adapterstest/test_json.go
+++ b/adapters/adapterstest/test_json.go
@@ -8,7 +8,7 @@ import (
 	"testing"
 
 	"github.com/mitchellh/copystructure"
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/currency"
 	"github.com/prebid/prebid-server/openrtb_ext"
diff --git a/adapters/adgeneration/adgeneration_test.go b/adapters/adgeneration/adgeneration_test.go
index c186f19f..6f66667e 100644
--- a/adapters/adgeneration/adgeneration_test.go
+++ b/adapters/adgeneration/adgeneration_test.go
@@ -4,7 +4,7 @@ import (
 	"encoding/json"
 	"testing"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/adapters/adapterstest"
 	"github.com/prebid/prebid-server/config"
diff --git a/adapters/adot/adot_test.go b/adapters/adot/adot_test.go
index 99bf9bd9..ad7336b5 100644
--- a/adapters/adot/adot_test.go
+++ b/adapters/adot/adot_test.go
@@ -4,7 +4,7 @@ import (
 	"encoding/json"
 	"testing"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/adapters/adapterstest"
 	"github.com/prebid/prebid-server/config"
diff --git a/adapters/amx/amx_test.go b/adapters/amx/amx_test.go
index f4a40c46..3ddf4d69 100644
--- a/adapters/amx/amx_test.go
+++ b/adapters/amx/amx_test.go
@@ -5,7 +5,7 @@ import (
 	"fmt"
 	"testing"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/openrtb_ext"
diff --git a/adapters/appnexus/appnexus_test.go b/adapters/appnexus/appnexus_test.go
index 6399be1a..164c9ce6 100644
--- a/adapters/appnexus/appnexus_test.go
+++ b/adapters/appnexus/appnexus_test.go
@@ -10,7 +10,7 @@ import (
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/openrtb_ext"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/stretchr/testify/assert"
 )
 
diff --git a/adapters/avocet/avocet_test.go b/adapters/avocet/avocet_test.go
index 8dc3c333..1b20a00d 100644
--- a/adapters/avocet/avocet_test.go
+++ b/adapters/avocet/avocet_test.go
@@ -6,7 +6,8 @@ import (
 	"reflect"
 	"testing"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/adcom1"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/adapters/adapterstest"
 	"github.com/prebid/prebid-server/config"
@@ -205,12 +206,12 @@ func Test_getBidType(t *testing.T) {
 	}{
 		{
 			name: "VPAID 1.0",
-			args: args{openrtb2.Bid{API: openrtb2.APIFrameworkVPAID10}, avocetBidExt{}},
+			args: args{openrtb2.Bid{API: adcom1.APIVPAID10}, avocetBidExt{}},
 			want: openrtb_ext.BidTypeVideo,
 		},
 		{
 			name: "VPAID 2.0",
-			args: args{openrtb2.Bid{API: openrtb2.APIFrameworkVPAID20}, avocetBidExt{}},
+			args: args{openrtb2.Bid{API: adcom1.APIVPAID20}, avocetBidExt{}},
 			want: openrtb_ext.BidTypeVideo,
 		},
 		{
diff --git a/adapters/criteo/models_test.go b/adapters/criteo/models_test.go
index e85fa4c1..a41773ea 100644
--- a/adapters/criteo/models_test.go
+++ b/adapters/criteo/models_test.go
@@ -5,7 +5,7 @@ import (
 	"reflect"
 	"testing"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/openrtb_ext"
 )
diff --git a/adapters/dmx/dmx_test.go b/adapters/dmx/dmx_test.go
index aa4a6f79..5e2ba297 100644
--- a/adapters/dmx/dmx_test.go
+++ b/adapters/dmx/dmx_test.go
@@ -5,7 +5,7 @@ import (
 	"strings"
 	"testing"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/openrtb_ext"
diff --git a/adapters/infoawarebidder_test.go b/adapters/infoawarebidder_test.go
index 7bd476b3..b3ac07f5 100644
--- a/adapters/infoawarebidder_test.go
+++ b/adapters/infoawarebidder_test.go
@@ -4,7 +4,7 @@ import (
 	"errors"
 	"testing"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
diff --git a/adapters/ix/ix_test.go b/adapters/ix/ix_test.go
index fc1d0f9a..8780ca49 100644
--- a/adapters/ix/ix_test.go
+++ b/adapters/ix/ix_test.go
@@ -9,7 +9,8 @@ import (
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/openrtb_ext"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/adcom1"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 )
 
 const endpoint string = "http://host/endpoint"
@@ -35,7 +36,7 @@ func TestIxMakeBidsWithCategoryDuration(t *testing.T) {
 				H:           360,
 				MIMEs:       []string{"video/mp4"},
 				MaxDuration: 60,
-				Protocols:   []openrtb2.Protocol{2, 3, 5, 6},
+				Protocols:   []adcom1.MediaCreativeSubtype{2, 3, 5, 6},
 			},
 			Ext: json.RawMessage(
 				`{
diff --git a/adapters/kidoz/kidoz_test.go b/adapters/kidoz/kidoz_test.go
index 3fd807ea..2b3f2e50 100644
--- a/adapters/kidoz/kidoz_test.go
+++ b/adapters/kidoz/kidoz_test.go
@@ -5,7 +5,7 @@ import (
 	"net/http"
 	"testing"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/adapters/adapterstest"
 	"github.com/prebid/prebid-server/config"
diff --git a/adapters/openrtb_util_test.go b/adapters/openrtb_util_test.go
index 4a5d33b0..e580657b 100644
--- a/adapters/openrtb_util_test.go
+++ b/adapters/openrtb_util_test.go
@@ -5,7 +5,7 @@ import (
 	"errors"
 	"testing"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/stretchr/testify/assert"
 )
 
diff --git a/adapters/openx/openx_test.go b/adapters/openx/openx_test.go
index ea90dc87..16cc4af8 100644
--- a/adapters/openx/openx_test.go
+++ b/adapters/openx/openx_test.go
@@ -4,7 +4,7 @@ import (
 	"encoding/json"
 	"testing"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/adapters/adapterstest"
 	"github.com/prebid/prebid-server/config"
diff --git a/adapters/orbidder/orbidder_test.go b/adapters/orbidder/orbidder_test.go
index bbda1c06..59d39b65 100644
--- a/adapters/orbidder/orbidder_test.go
+++ b/adapters/orbidder/orbidder_test.go
@@ -3,7 +3,7 @@ package orbidder
 import (
 	"encoding/json"
 	"errors"
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/stretchr/testify/mock"
 	"testing"
diff --git a/adapters/pubmatic/pubmatic_test.go b/adapters/pubmatic/pubmatic_test.go
index 4985d052..1c99d994 100644
--- a/adapters/pubmatic/pubmatic_test.go
+++ b/adapters/pubmatic/pubmatic_test.go
@@ -4,7 +4,7 @@ import (
 	"encoding/json"
 	"testing"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/adapters/adapterstest"
 	"github.com/prebid/prebid-server/config"
diff --git a/adapters/richaudience/richaudience_test.go b/adapters/richaudience/richaudience_test.go
index 8a6dd85b..74b13325 100644
--- a/adapters/richaudience/richaudience_test.go
+++ b/adapters/richaudience/richaudience_test.go
@@ -4,7 +4,7 @@ import (
 	"net/http"
 	"testing"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/adapters/adapterstest"
 	"github.com/prebid/prebid-server/config"
@@ -27,8 +27,8 @@ type richaudienceUser struct {
 }
 
 type richaudienceUserExt struct {
-	Eids    []openrtb_ext.ExtUserEid `json:"eids,omitempty"`
-	Consent string                   `json:"consent,omitempty"`
+	Eids    []openrtb2.EID `json:"eids,omitempty"`
+	Consent string         `json:"consent,omitempty"`
 }
 
 type richaudienceDevice struct {
diff --git a/adapters/rubicon/rubicon_test.go b/adapters/rubicon/rubicon_test.go
index e847b4fe..89270ec8 100644
--- a/adapters/rubicon/rubicon_test.go
+++ b/adapters/rubicon/rubicon_test.go
@@ -14,7 +14,8 @@ import (
 	"github.com/prebid/prebid-server/openrtb_ext"
 
 	"github.com/buger/jsonparser"
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/adcom1"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/mock"
 )
@@ -256,7 +257,7 @@ func TestAppendTracker(t *testing.T) {
 
 func TestResolveVideoSizeId(t *testing.T) {
 	testScenarios := []struct {
-		placement   openrtb2.VideoPlacementType
+		placement   adcom1.VideoPlacementSubtype
 		instl       int8
 		impId       string
 		expected    int
@@ -485,7 +486,7 @@ func TestOpenRTBRequest(t *testing.T) {
 			Ext: json.RawMessage(`{
 				"eids": [{
                     "source": "pubcid",
-                    "id": "2402fc76-7b39-4f0e-bfc2-060ef7693648"
+					"uids": [{"id": "2402fc76-7b39-4f0e-bfc2-060ef7693648"}]
 				}]
             }`),
 		},
@@ -558,7 +559,7 @@ func TestOpenRTBRequest(t *testing.T) {
 
 		assert.NotNil(t, userExt.Eids)
 		assert.Equal(t, 1, len(userExt.Eids), "Eids values are not as expected!")
-		assert.Contains(t, userExt.Eids, openrtb_ext.ExtUserEid{Source: "pubcid", ID: "2402fc76-7b39-4f0e-bfc2-060ef7693648"})
+		assert.Contains(t, userExt.Eids, openrtb2.EID{Source: "pubcid", UIDs: []openrtb2.UID{{ID: "2402fc76-7b39-4f0e-bfc2-060ef7693648"}}})
 	}
 }
 
@@ -792,7 +793,9 @@ func TestOpenRTBRequestWithSpecificExtUserEids(t *testing.T) {
 			Ext: json.RawMessage(`{"eids": [
 			{
 				"source": "pubcid",
-				"id": "2402fc76-7b39-4f0e-bfc2-060ef7693648"
+				"uids": [{
+					"id": "2402fc76-7b39-4f0e-bfc2-060ef7693648"
+				}]
 			},
 			{
 				"source": "adserver.org",
@@ -882,10 +885,10 @@ func TestOpenRTBRequestWithVideoImpEvenIfImpHasBannerButAllRequiredVideoFields(t
 				W:           640,
 				H:           360,
 				MIMEs:       []string{"video/mp4"},
-				Protocols:   []openrtb2.Protocol{openrtb2.ProtocolVAST10},
+				Protocols:   []adcom1.MediaCreativeSubtype{adcom1.CreativeVAST10},
 				MaxDuration: 30,
 				Linearity:   1,
-				API:         []openrtb2.APIFramework{},
+				API:         []adcom1.APIFramework{},
 			},
 			Ext: json.RawMessage(`{"bidder": {
 				"zoneId": 8394,
@@ -932,10 +935,10 @@ func TestOpenRTBRequestWithVideoImpAndEnabledRewardedInventoryFlag(t *testing.T)
 				W:           640,
 				H:           360,
 				MIMEs:       []string{"video/mp4"},
-				Protocols:   []openrtb2.Protocol{openrtb2.ProtocolVAST10},
+				Protocols:   []adcom1.MediaCreativeSubtype{adcom1.CreativeVAST10},
 				MaxDuration: 30,
 				Linearity:   1,
-				API:         []openrtb2.APIFramework{},
+				API:         []adcom1.APIFramework{},
 			},
 			Ext: json.RawMessage(`{
 			"prebid":{
diff --git a/adapters/smaato/smaato_test.go b/adapters/smaato/smaato_test.go
index 0012bd61..0f822b45 100644
--- a/adapters/smaato/smaato_test.go
+++ b/adapters/smaato/smaato_test.go
@@ -2,12 +2,14 @@ package smaato
 
 import (
 	"encoding/json"
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
-	"github.com/prebid/prebid-server/adapters"
-	"github.com/stretchr/testify/assert"
 	"testing"
 	"time"
 
+	"github.com/mxmCherry/openrtb/v16/adcom1"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
+	"github.com/stretchr/testify/assert"
+
+	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/adapters/adapterstest"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/openrtb_ext"
@@ -39,7 +41,7 @@ func TestVideoWithCategoryAndDuration(t *testing.T) {
 				H:           360,
 				MIMEs:       []string{"video/mp4"},
 				MaxDuration: 60,
-				Protocols:   []openrtb2.Protocol{2, 3, 5, 6},
+				Protocols:   []adcom1.MediaCreativeSubtype{2, 3, 5, 6},
 			},
 			Ext: json.RawMessage(
 				`{
diff --git a/adapters/ucfunnel/ucfunnel_test.go b/adapters/ucfunnel/ucfunnel_test.go
index 95ac5985..557972ef 100644
--- a/adapters/ucfunnel/ucfunnel_test.go
+++ b/adapters/ucfunnel/ucfunnel_test.go
@@ -5,7 +5,7 @@ import (
 	"fmt"
 	"testing"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/openrtb_ext"
diff --git a/amp/parse_test.go b/amp/parse_test.go
index 91027f8e..deacff6b 100644
--- a/amp/parse_test.go
+++ b/amp/parse_test.go
@@ -4,7 +4,7 @@ import (
 	"net/http"
 	"testing"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/stretchr/testify/assert"
 )
 
diff --git a/analytics/config/config_test.go b/analytics/config/config_test.go
index 310dbe1a..32e76734 100644
--- a/analytics/config/config_test.go
+++ b/analytics/config/config_test.go
@@ -5,7 +5,7 @@ import (
 	"os"
 	"testing"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/stretchr/testify/assert"
 
 	"github.com/prebid/prebid-server/analytics"
diff --git a/analytics/filesystem/file_module_test.go b/analytics/filesystem/file_module_test.go
index 74d7c7d5..c2026104 100644
--- a/analytics/filesystem/file_module_test.go
+++ b/analytics/filesystem/file_module_test.go
@@ -9,7 +9,7 @@ import (
 	"github.com/prebid/prebid-server/analytics"
 	"github.com/prebid/prebid-server/config"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 )
 
 const TEST_DIR string = "testFiles"
diff --git a/analytics/pubstack/helpers/json_test.go b/analytics/pubstack/helpers/json_test.go
index 6bd96b88..fcdc5387 100644
--- a/analytics/pubstack/helpers/json_test.go
+++ b/analytics/pubstack/helpers/json_test.go
@@ -4,7 +4,7 @@ import (
 	"net/http"
 	"testing"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/analytics"
 	"github.com/stretchr/testify/assert"
 )
diff --git a/config/config_test.go b/config/config_test.go
index ef57d7c3..bed1bb7d 100644
--- a/config/config_test.go
+++ b/config/config_test.go
@@ -424,6 +424,11 @@ func cmpInts(t *testing.T, key string, a int, b int) {
 	assert.Equal(t, a, b, "%s: %d != %d", key, a, b)
 }
 
+func cmpInt8s(t *testing.T, key string, a *int8, b *int8) {
+	t.Helper()
+	assert.Equal(t, a, b, "%s: %d != %d", key, a, b)
+}
+
 func cmpBools(t *testing.T, key string, a bool, b bool) {
 	t.Helper()
 	assert.Equal(t, a, b, "%s: %t != %t", key, a, b)
@@ -435,6 +440,8 @@ func cmpNils(t *testing.T, key string, a interface{}) {
 }
 
 func TestFullConfig(t *testing.T) {
+	int8One := int8(1)
+
 	v := viper.New()
 	SetupViper(v, "")
 	v.SetConfigType("yaml")
@@ -469,10 +476,10 @@ func TestFullConfig(t *testing.T) {
 	cmpInts(t, "http_client_cache.idle_connection_timeout_seconds", cfg.CacheClient.IdleConnTimeout, 3)
 	cmpInts(t, "gdpr.host_vendor_id", cfg.GDPR.HostVendorID, 15)
 	cmpStrings(t, "gdpr.default_value", cfg.GDPR.DefaultValue, "1")
-	cmpStrings(t, "host_schain_node", cfg.HostSChainNode.ASI, "pbshostcompany.com")
-	cmpStrings(t, "host_schain_node", cfg.HostSChainNode.SID, "00001")
-	cmpStrings(t, "host_schain_node", cfg.HostSChainNode.RID, "BidRequest")
-	cmpInts(t, "host_schain_node", cfg.HostSChainNode.HP, 1)
+	cmpStrings(t, "host_schain_node.asi", cfg.HostSChainNode.ASI, "pbshostcompany.com")
+	cmpStrings(t, "host_schain_node.sid", cfg.HostSChainNode.SID, "00001")
+	cmpStrings(t, "host_schain_node.rid", cfg.HostSChainNode.RID, "BidRequest")
+	cmpInt8s(t, "host_schain_node.hp", cfg.HostSChainNode.HP, &int8One)
 
 	//Assert the NonStandardPublishers was correctly unmarshalled
 	assert.Equal(t, []string{"pub1", "pub2"}, cfg.GDPR.NonStandardPublishers, "gdpr.non_standard_publishers")
diff --git a/endpoints/openrtb2/amp_auction_test.go b/endpoints/openrtb2/amp_auction_test.go
index a25efab0..f585c4ea 100644
--- a/endpoints/openrtb2/amp_auction_test.go
+++ b/endpoints/openrtb2/amp_auction_test.go
@@ -13,7 +13,7 @@ import (
 	"testing"
 
 	"github.com/julienschmidt/httprouter"
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/analytics"
 	analyticsConf "github.com/prebid/prebid-server/analytics/config"
 	"github.com/prebid/prebid-server/config"
diff --git a/endpoints/openrtb2/auction_test.go b/endpoints/openrtb2/auction_test.go
index cd2a065f..f0e9d245 100644
--- a/endpoints/openrtb2/auction_test.go
+++ b/endpoints/openrtb2/auction_test.go
@@ -15,7 +15,13 @@ import (
 	"testing"
 	"time"
 
+	"github.com/buger/jsonparser"
 	"github.com/julienschmidt/httprouter"
+	"github.com/mxmCherry/openrtb/v16/native1"
+	nativeRequests "github.com/mxmCherry/openrtb/v16/native1/request"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
+	"github.com/stretchr/testify/assert"
+
 	analyticsConf "github.com/prebid/prebid-server/analytics/config"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
@@ -26,12 +32,6 @@ import (
 	"github.com/prebid/prebid-server/stored_requests/backends/empty_fetcher"
 	"github.com/prebid/prebid-server/stored_responses"
 	"github.com/prebid/prebid-server/util/iputil"
-
-	"github.com/buger/jsonparser"
-	"github.com/mxmCherry/openrtb/v15/native1"
-	nativeRequests "github.com/mxmCherry/openrtb/v15/native1/request"
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
-	"github.com/stretchr/testify/assert"
 )
 
 func TestJsonSampleRequests(t *testing.T) {
@@ -2454,13 +2454,13 @@ func TestMapSChains(t *testing.T) {
 	const seller1SChain string = `"schain":{"complete":1,"nodes":[{"asi":"directseller1.com","sid":"00001","rid":"BidRequest1","hp":1}],"ver":"1.0"}`
 	const seller2SChain string = `"schain":{"complete":2,"nodes":[{"asi":"directseller2.com","sid":"00002","rid":"BidRequest2","hp":2}],"ver":"2.0"}`
 
-	seller1SChainUnpacked := openrtb_ext.ExtRequestPrebidSChainSChain{
+	seller1SChainUnpacked := openrtb2.SupplyChain{
 		Complete: 1,
-		Nodes: []*openrtb_ext.ExtRequestPrebidSChainSChainNode{{
+		Nodes: []openrtb2.SupplyChainNode{{
 			ASI: "directseller1.com",
 			SID: "00001",
 			RID: "BidRequest1",
-			HP:  1,
+			HP:  openrtb2.Int8Ptr(1),
 		}},
 		Ver: "1.0",
 	}
@@ -2468,8 +2468,8 @@ func TestMapSChains(t *testing.T) {
 	tests := []struct {
 		description         string
 		bidRequest          openrtb2.BidRequest
-		wantReqExtSChain    *openrtb_ext.ExtRequestPrebidSChainSChain
-		wantSourceExtSChain *openrtb_ext.ExtRequestPrebidSChainSChain
+		wantReqExtSChain    *openrtb2.SupplyChain
+		wantSourceExtSChain *openrtb2.SupplyChain
 		wantError           bool
 	}{
 		{
diff --git a/endpoints/openrtb2/interstitial_test.go b/endpoints/openrtb2/interstitial_test.go
index 0a3254b4..bf20fba6 100644
--- a/endpoints/openrtb2/interstitial_test.go
+++ b/endpoints/openrtb2/interstitial_test.go
@@ -4,7 +4,7 @@ import (
 	"encoding/json"
 	"testing"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/openrtb_ext"
 	"github.com/stretchr/testify/assert"
 )
diff --git a/endpoints/openrtb2/test_utils.go b/endpoints/openrtb2/test_utils.go
index c9327976..c54d8b82 100644
--- a/endpoints/openrtb2/test_utils.go
+++ b/endpoints/openrtb2/test_utils.go
@@ -17,7 +17,8 @@ import (
 
 	"github.com/buger/jsonparser"
 	"github.com/julienschmidt/httprouter"
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb3"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/analytics"
 	analyticsConf "github.com/prebid/prebid-server/analytics/config"
@@ -804,7 +805,7 @@ func (e *nobidExchange) HoldAuction(ctx context.Context, auctionRequest exchange
 	return &openrtb2.BidResponse{
 		ID:    r.BidRequest.ID,
 		BidID: "test bid id",
-		NBR:   openrtb2.NoBidReasonCodeUnknownError.Ptr(),
+		NBR:   openrtb3.NoBidUnknownError.Ptr(),
 	}, nil
 }
 
diff --git a/endpoints/openrtb2/video_auction_test.go b/endpoints/openrtb2/video_auction_test.go
index 8ffa945a..988bf706 100644
--- a/endpoints/openrtb2/video_auction_test.go
+++ b/endpoints/openrtb2/video_auction_test.go
@@ -21,7 +21,8 @@ import (
 	"github.com/prebid/prebid-server/prebid_cache_client"
 	"github.com/prebid/prebid-server/stored_requests/backends/empty_fetcher"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/adcom1"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	gometrics "github.com/rcrowley/go-metrics"
 	"github.com/stretchr/testify/assert"
 )
@@ -335,9 +336,7 @@ func TestVideoEndpointValidationsPositive(t *testing.T) {
 	mimes = append(mimes, "mp4")
 	mimes = append(mimes, "")
 
-	videoProtocols := make([]openrtb2.Protocol, 0)
-	videoProtocols = append(videoProtocols, 15)
-	videoProtocols = append(videoProtocols, 30)
+	videoProtocols := []adcom1.MediaCreativeSubtype{15, 30}
 
 	req := openrtb_ext.BidRequestVideo{
 		StoredRequestId: "123",
@@ -378,7 +377,7 @@ func TestVideoEndpointValidationsCritical(t *testing.T) {
 	mimes = append(mimes, "")
 	mimes = append(mimes, "")
 
-	videoProtocols := make([]openrtb2.Protocol, 0)
+	videoProtocols := []adcom1.MediaCreativeSubtype{}
 
 	req := openrtb_ext.BidRequestVideo{
 		StoredRequestId: "",
@@ -447,9 +446,7 @@ func TestVideoEndpointValidationsPodErrors(t *testing.T) {
 	mimes = append(mimes, "mp4")
 	mimes = append(mimes, "")
 
-	videoProtocols := make([]openrtb2.Protocol, 0)
-	videoProtocols = append(videoProtocols, 15)
-	videoProtocols = append(videoProtocols, 30)
+	videoProtocols := []adcom1.MediaCreativeSubtype{15, 30}
 
 	req := openrtb_ext.BidRequestVideo{
 		StoredRequestId: "123",
@@ -517,9 +514,7 @@ func TestVideoEndpointValidationsSiteAndApp(t *testing.T) {
 	mimes = append(mimes, "mp4")
 	mimes = append(mimes, "")
 
-	videoProtocols := make([]openrtb2.Protocol, 0)
-	videoProtocols = append(videoProtocols, 15)
-	videoProtocols = append(videoProtocols, 30)
+	videoProtocols := []adcom1.MediaCreativeSubtype{15, 30}
 
 	req := openrtb_ext.BidRequestVideo{
 		StoredRequestId: "123",
@@ -575,9 +570,7 @@ func TestVideoEndpointValidationsSiteMissingRequiredField(t *testing.T) {
 	mimes = append(mimes, "mp4")
 	mimes = append(mimes, "")
 
-	videoProtocols := make([]openrtb2.Protocol, 0)
-	videoProtocols = append(videoProtocols, 15)
-	videoProtocols = append(videoProtocols, 30)
+	videoProtocols := []adcom1.MediaCreativeSubtype{15, 30}
 
 	req := openrtb_ext.BidRequestVideo{
 		StoredRequestId: "123",
@@ -998,25 +991,25 @@ func TestCreateImpressionTemplate(t *testing.T) {
 
 	imp := openrtb2.Imp{}
 	imp.Video = &openrtb2.Video{}
-	imp.Video.Protocols = []openrtb2.Protocol{1, 2}
+	imp.Video.Protocols = []adcom1.MediaCreativeSubtype{1, 2}
 	imp.Video.MIMEs = []string{"video/mp4"}
 	imp.Video.H = 200
 	imp.Video.W = 400
-	imp.Video.PlaybackMethod = []openrtb2.PlaybackMethod{5, 6}
+	imp.Video.PlaybackMethod = []adcom1.PlaybackMethod{5, 6}
 
 	video := openrtb2.Video{}
-	video.Protocols = []openrtb2.Protocol{3, 4}
+	video.Protocols = []adcom1.MediaCreativeSubtype{3, 4}
 	video.MIMEs = []string{"video/flv"}
 	video.H = 300
 	video.W = 0
-	video.PlaybackMethod = []openrtb2.PlaybackMethod{7, 8}
+	video.PlaybackMethod = []adcom1.PlaybackMethod{7, 8}
 
 	res := createImpressionTemplate(imp, &video)
-	assert.Equal(t, res.Video.Protocols, []openrtb2.Protocol{3, 4}, "Incorrect video protocols")
+	assert.Equal(t, res.Video.Protocols, []adcom1.MediaCreativeSubtype{3, 4}, "Incorrect video protocols")
 	assert.Equal(t, res.Video.MIMEs, []string{"video/flv"}, "Incorrect video MIMEs")
 	assert.Equal(t, int(res.Video.H), 300, "Incorrect video height")
 	assert.Equal(t, int(res.Video.W), 0, "Incorrect video width")
-	assert.Equal(t, res.Video.PlaybackMethod, []openrtb2.PlaybackMethod{7, 8}, "Incorrect video playback method")
+	assert.Equal(t, res.Video.PlaybackMethod, []adcom1.PlaybackMethod{7, 8}, "Incorrect video playback method")
 }
 
 func TestCCPA(t *testing.T) {
diff --git a/exchange/adapter_util_test.go b/exchange/adapter_util_test.go
index 2423b019..c4949663 100644
--- a/exchange/adapter_util_test.go
+++ b/exchange/adapter_util_test.go
@@ -5,7 +5,7 @@ import (
 	"net/http"
 	"testing"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/adapters/appnexus"
 	"github.com/prebid/prebid-server/adapters/rubicon"
diff --git a/exchange/auction_test.go b/exchange/auction_test.go
index 455ae501..6c6d41ab 100644
--- a/exchange/auction_test.go
+++ b/exchange/auction_test.go
@@ -11,7 +11,7 @@ import (
 	"strconv"
 	"testing"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/openrtb_ext"
 	"github.com/prebid/prebid-server/prebid_cache_client"
diff --git a/exchange/bidder_test.go b/exchange/bidder_test.go
index 27ceb96d..806d2f55 100644
--- a/exchange/bidder_test.go
+++ b/exchange/bidder_test.go
@@ -17,9 +17,9 @@ import (
 	"time"
 
 	"github.com/golang/glog"
-	nativeRequests "github.com/mxmCherry/openrtb/v15/native1/request"
-	nativeResponse "github.com/mxmCherry/openrtb/v15/native1/response"
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	nativeRequests "github.com/mxmCherry/openrtb/v16/native1/request"
+	nativeResponse "github.com/mxmCherry/openrtb/v16/native1/response"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/currency"
diff --git a/exchange/bidder_validate_bids_test.go b/exchange/bidder_validate_bids_test.go
index 9e12fc05..64afd63d 100644
--- a/exchange/bidder_validate_bids_test.go
+++ b/exchange/bidder_validate_bids_test.go
@@ -4,7 +4,7 @@ import (
 	"context"
 	"testing"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/adapters"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/currency"
diff --git a/exchange/events_test.go b/exchange/events_test.go
index 887122a6..15aac1cd 100644
--- a/exchange/events_test.go
+++ b/exchange/events_test.go
@@ -3,7 +3,7 @@ package exchange
 import (
 	"testing"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/openrtb_ext"
 	"github.com/stretchr/testify/assert"
 )
diff --git a/exchange/exchange_test.go b/exchange/exchange_test.go
index 0cd1c6df..2a2a0701 100644
--- a/exchange/exchange_test.go
+++ b/exchange/exchange_test.go
@@ -18,7 +18,7 @@ import (
 	"time"
 
 	"github.com/buger/jsonparser"
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/mock"
 	jsonpatch "gopkg.in/evanphx/json-patch.v4"
@@ -2368,10 +2368,10 @@ func newExchangeForTests(t *testing.T, filename string, expectations map[string]
 		gdprDefaultValue = gdpr.SignalNo
 	}
 
-	hostSChainNode := &openrtb_ext.ExtRequestPrebidSChainSChainNode{}
+	hostSChainNode := &openrtb2.SupplyChainNode{}
 	if hostSChainFlag {
-		hostSChainNode = &openrtb_ext.ExtRequestPrebidSChainSChainNode{
-			ASI: "pbshostcompany.com", SID: "00001", RID: "BidRequest", HP: 1,
+		hostSChainNode = &openrtb2.SupplyChainNode{
+			ASI: "pbshostcompany.com", SID: "00001", RID: "BidRequest", HP: openrtb2.Int8Ptr(1),
 		}
 	} else {
 		hostSChainNode = nil
diff --git a/exchange/gdpr_test.go b/exchange/gdpr_test.go
index e44dc970..f887db00 100644
--- a/exchange/gdpr_test.go
+++ b/exchange/gdpr_test.go
@@ -4,7 +4,7 @@ import (
 	"encoding/json"
 	"testing"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/gdpr"
 	"github.com/stretchr/testify/assert"
 )
diff --git a/exchange/targeting_test.go b/exchange/targeting_test.go
index 6aeb7f69..95860ae7 100644
--- a/exchange/targeting_test.go
+++ b/exchange/targeting_test.go
@@ -15,7 +15,7 @@ import (
 	metricsConfig "github.com/prebid/prebid-server/metrics/config"
 	"github.com/prebid/prebid-server/openrtb_ext"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/stretchr/testify/assert"
 )
 
diff --git a/exchange/utils_test.go b/exchange/utils_test.go
index 16ac9ef1..b4241329 100644
--- a/exchange/utils_test.go
+++ b/exchange/utils_test.go
@@ -7,7 +7,7 @@ import (
 	"fmt"
 	"testing"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/config"
 	"github.com/prebid/prebid-server/errortypes"
 	"github.com/prebid/prebid-server/firstpartydata"
@@ -2599,51 +2599,51 @@ func TestRemoveUnpermissionedEids(t *testing.T) {
 		},
 		{
 			description:     "Allowed By Nil Permissions",
-			userExt:         json.RawMessage(`{"eids":[{"source":"source1","id":"anyID"}]}`),
+			userExt:         json.RawMessage(`{"eids":[{"source":"source1","uids":[{"id":"anyID"}]}]}`),
 			eidPermissions:  nil,
-			expectedUserExt: json.RawMessage(`{"eids":[{"source":"source1","id":"anyID"}]}`),
+			expectedUserExt: json.RawMessage(`{"eids":[{"source":"source1","uids":[{"id":"anyID"}]}]}`),
 		},
 		{
 			description:     "Allowed By Empty Permissions",
-			userExt:         json.RawMessage(`{"eids":[{"source":"source1","id":"anyID"}]}`),
+			userExt:         json.RawMessage(`{"eids":[{"source":"source1","uids":[{"id":"anyID"}]}]}`),
 			eidPermissions:  []openrtb_ext.ExtRequestPrebidDataEidPermission{},
-			expectedUserExt: json.RawMessage(`{"eids":[{"source":"source1","id":"anyID"}]}`),
+			expectedUserExt: json.RawMessage(`{"eids":[{"source":"source1","uids":[{"id":"anyID"}]}]}`),
 		},
 		{
 			description: "Allowed By Specific Bidder",
-			userExt:     json.RawMessage(`{"eids":[{"source":"source1","id":"anyID"}]}`),
+			userExt:     json.RawMessage(`{"eids":[{"source":"source1","uids":[{"id":"anyID"}]}]}`),
 			eidPermissions: []openrtb_ext.ExtRequestPrebidDataEidPermission{
 				{Source: "source1", Bidders: []string{"bidderA"}},
 			},
-			expectedUserExt: json.RawMessage(`{"eids":[{"source":"source1","id":"anyID"}]}`),
+			expectedUserExt: json.RawMessage(`{"eids":[{"source":"source1","uids":[{"id":"anyID"}]}]}`),
 		},
 		{
 			description: "Allowed By All Bidders",
-			userExt:     json.RawMessage(`{"eids":[{"source":"source1","id":"anyID"}]}`),
+			userExt:     json.RawMessage(`{"eids":[{"source":"source1","uids":[{"id":"anyID"}]}]}`),
 			eidPermissions: []openrtb_ext.ExtRequestPrebidDataEidPermission{
 				{Source: "source1", Bidders: []string{"*"}},
 			},
-			expectedUserExt: json.RawMessage(`{"eids":[{"source":"source1","id":"anyID"}]}`),
+			expectedUserExt: json.RawMessage(`{"eids":[{"source":"source1","uids":[{"id":"anyID"}]}]}`),
 		},
 		{
 			description: "Allowed By Lack Of Matching Source",
-			userExt:     json.RawMessage(`{"eids":[{"source":"source1","id":"anyID"}]}`),
+			userExt:     json.RawMessage(`{"eids":[{"source":"source1","uids":[{"id":"anyID"}]}]}`),
 			eidPermissions: []openrtb_ext.ExtRequestPrebidDataEidPermission{
 				{Source: "source2", Bidders: []string{"otherBidder"}},
 			},
-			expectedUserExt: json.RawMessage(`{"eids":[{"source":"source1","id":"anyID"}]}`),
+			expectedUserExt: json.RawMessage(`{"eids":[{"source":"source1","uids":[{"id":"anyID"}]}]}`),
 		},
 		{
 			description: "Allowed - Keep Other Data",
-			userExt:     json.RawMessage(`{"eids":[{"source":"source1","id":"anyID"}],"other":42}`),
+			userExt:     json.RawMessage(`{"eids":[{"source":"source1","uids":[{"id":"anyID"}]}],"other":42}`),
 			eidPermissions: []openrtb_ext.ExtRequestPrebidDataEidPermission{
 				{Source: "source1", Bidders: []string{"bidderA"}},
 			},
-			expectedUserExt: json.RawMessage(`{"eids":[{"source":"source1","id":"anyID"}],"other":42}`),
+			expectedUserExt: json.RawMessage(`{"eids":[{"source":"source1","uids":[{"id":"anyID"}]}],"other":42}`),
 		},
 		{
 			description: "Denied",
-			userExt:     json.RawMessage(`{"eids":[{"source":"source1","id":"anyID"}]}`),
+			userExt:     json.RawMessage(`{"eids":[{"source":"source1","uids":[{"id":"anyID"}]}]}`),
 			eidPermissions: []openrtb_ext.ExtRequestPrebidDataEidPermission{
 				{Source: "source1", Bidders: []string{"otherBidder"}},
 			},
@@ -2651,7 +2651,7 @@ func TestRemoveUnpermissionedEids(t *testing.T) {
 		},
 		{
 			description: "Denied - Keep Other Data",
-			userExt:     json.RawMessage(`{"eids":[{"source":"source1","id":"anyID"}],"otherdata":42}`),
+			userExt:     json.RawMessage(`{"eids":[{"source":"source1","uids":[{"id":"anyID"}]}],"otherdata":42}`),
 			eidPermissions: []openrtb_ext.ExtRequestPrebidDataEidPermission{
 				{Source: "source1", Bidders: []string{"otherBidder"}},
 			},
@@ -2659,12 +2659,12 @@ func TestRemoveUnpermissionedEids(t *testing.T) {
 		},
 		{
 			description: "Mix Of Allowed By Specific Bidder, Allowed By Lack Of Matching Source, Denied, Keep Other Data",
-			userExt:     json.RawMessage(`{"eids":[{"source":"source1","id":"anyID"},{"source":"source2","id":"anyID"},{"source":"source3","id":"anyID"}],"other":42}`),
+			userExt:     json.RawMessage(`{"eids":[{"source":"source1","uids":[{"id":"anyID1"}]},{"source":"source2","uids":[{"id":"anyID2"}]},{"source":"source3","uids":[{"id":"anyID3"}]}],"other":42}`),
 			eidPermissions: []openrtb_ext.ExtRequestPrebidDataEidPermission{
 				{Source: "source1", Bidders: []string{"bidderA"}},
 				{Source: "source3", Bidders: []string{"otherBidder"}},
 			},
-			expectedUserExt: json.RawMessage(`{"eids":[{"source":"source1","id":"anyID"},{"source":"source2","id":"anyID"}],"other":42}`),
+			expectedUserExt: json.RawMessage(`{"eids":[{"source":"source1","uids":[{"id":"anyID1"}]},{"source":"source2","uids":[{"id":"anyID2"}]}],"other":42}`),
 		},
 	}
 
@@ -2705,12 +2705,12 @@ func TestRemoveUnpermissionedEidsUnmarshalErrors(t *testing.T) {
 		{
 			description: "Malformed Eid Array Type",
 			userExt:     json.RawMessage(`{"eids":[42]}`),
-			expectedErr: "json: cannot unmarshal number into Go value of type openrtb_ext.ExtUserEid",
+			expectedErr: "json: cannot unmarshal number into Go value of type openrtb2.EID",
 		},
 		{
 			description: "Malformed Eid Item Type",
 			userExt:     json.RawMessage(`{"eids":[{"source":42,"id":"anyID"}]}`),
-			expectedErr: "json: cannot unmarshal number into Go struct field ExtUserEid.source of type string",
+			expectedErr: "json: cannot unmarshal number into Go struct field EID.source of type string",
 		},
 	}
 
diff --git a/firstpartydata/first_party_data_test.go b/firstpartydata/first_party_data_test.go
index 27fe7e2b..fc4409f9 100644
--- a/firstpartydata/first_party_data_test.go
+++ b/firstpartydata/first_party_data_test.go
@@ -2,12 +2,13 @@ package firstpartydata
 
 import (
 	"encoding/json"
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"io/ioutil"
+	"testing"
+
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/errortypes"
 	"github.com/prebid/prebid-server/openrtb_ext"
 	"github.com/stretchr/testify/assert"
-	"io/ioutil"
-	"testing"
 )
 
 func TestExtractGlobalFPD(t *testing.T) {
diff --git a/openrtb_ext/deal_tier_test.go b/openrtb_ext/deal_tier_test.go
index 29d58d6c..ccde9084 100644
--- a/openrtb_ext/deal_tier_test.go
+++ b/openrtb_ext/deal_tier_test.go
@@ -4,7 +4,7 @@ import (
 	"encoding/json"
 	"testing"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/stretchr/testify/assert"
 )
 
diff --git a/openrtb_ext/request_wrapper_test.go b/openrtb_ext/request_wrapper_test.go
index 60ef1a33..f5cdb090 100644
--- a/openrtb_ext/request_wrapper_test.go
+++ b/openrtb_ext/request_wrapper_test.go
@@ -4,6 +4,7 @@ import (
 	"encoding/json"
 	"testing"
 
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/stretchr/testify/assert"
 )
 
@@ -22,22 +23,23 @@ func TestUserExt(t *testing.T) {
 	userExt.SetConsent(&newConsent)
 	assert.Equal(t, "NewConsent", *userExt.GetConsent(), "UserExt consent is incorrect")
 
-	newEid := []ExtUserEid{{}}
+	eid := openrtb2.EID{Source: "source", UIDs: []openrtb2.UID{{ID: "id"}}}
+	newEid := []openrtb2.EID{eid}
 	userExt.SetEid(&newEid)
-	assert.Equal(t, []ExtUserEid{{}}, *userExt.GetEid(), "UserExt eid is incorrect")
+	assert.Equal(t, []openrtb2.EID{eid}, *userExt.GetEid(), "UserExt eid is incorrect")
 
 	buyerIDs := map[string]string{"buyer": "id"}
 	newPrebid := ExtUserPrebid{BuyerUIDs: buyerIDs}
 	userExt.SetPrebid(&newPrebid)
-	assert.Equal(t, ExtUserPrebid{BuyerUIDs: buyerIDs}, *userExt.GetPrebid(), "UserExt prebid is icorrect")
+	assert.Equal(t, ExtUserPrebid{BuyerUIDs: buyerIDs}, *userExt.GetPrebid(), "UserExt prebid is incorrect")
 
 	assert.Equal(t, true, userExt.Dirty(), "UserExt should be dirty after field updates")
 
 	updatedUserExt, err := userExt.marshal()
 	assert.Nil(t, err, "Marshalling UserExt after updating should not cause an error")
 
-	expectedUserExt := json.RawMessage(`{"consent":"NewConsent","prebid":{"buyeruids":{"buyer":"id"}},"eids":[{"source":""}]}`)
-	assert.JSONEq(t, string(updatedUserExt), string(expectedUserExt), "Marshalled UserExt is incorrect")
+	expectedUserExt := json.RawMessage(`{"consent":"NewConsent","prebid":{"buyeruids":{"buyer":"id"}},"eids":[{"source":"source","uids":[{"id":"id"}]}]}`)
+	assert.JSONEq(t, string(expectedUserExt), string(updatedUserExt), "Marshalled UserExt is incorrect")
 
 	assert.Equal(t, false, userExt.Dirty(), "UserExt should not be dirty after marshalling")
 }
diff --git a/privacy/ccpa/consentwriter_test.go b/privacy/ccpa/consentwriter_test.go
index 28dfd417..f87600d2 100644
--- a/privacy/ccpa/consentwriter_test.go
+++ b/privacy/ccpa/consentwriter_test.go
@@ -4,7 +4,7 @@ import (
 	"encoding/json"
 	"testing"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/openrtb_ext"
 	"github.com/stretchr/testify/assert"
 )
diff --git a/privacy/ccpa/policy_test.go b/privacy/ccpa/policy_test.go
index ca6d0f8a..a7ede21e 100644
--- a/privacy/ccpa/policy_test.go
+++ b/privacy/ccpa/policy_test.go
@@ -4,7 +4,7 @@ import (
 	"encoding/json"
 	"testing"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/openrtb_ext"
 	"github.com/stretchr/testify/assert"
 )
diff --git a/privacy/enforcement_test.go b/privacy/enforcement_test.go
index 61899e4d..5e3baf56 100644
--- a/privacy/enforcement_test.go
+++ b/privacy/enforcement_test.go
@@ -3,7 +3,7 @@ package privacy
 import (
 	"testing"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/mock"
 )
diff --git a/privacy/gdpr/consentwriter_test.go b/privacy/gdpr/consentwriter_test.go
index 5753442f..01d66f73 100644
--- a/privacy/gdpr/consentwriter_test.go
+++ b/privacy/gdpr/consentwriter_test.go
@@ -4,7 +4,7 @@ import (
 	"encoding/json"
 	"testing"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/stretchr/testify/assert"
 )
 
diff --git a/privacy/lmt/ios_test.go b/privacy/lmt/ios_test.go
index af72cf08..60f5a792 100644
--- a/privacy/lmt/ios_test.go
+++ b/privacy/lmt/ios_test.go
@@ -4,7 +4,7 @@ import (
 	"encoding/json"
 	"testing"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/util/iosutil"
 	"github.com/stretchr/testify/assert"
 )
diff --git a/privacy/lmt/policy_test.go b/privacy/lmt/policy_test.go
index f475d2fb..75de0e47 100644
--- a/privacy/lmt/policy_test.go
+++ b/privacy/lmt/policy_test.go
@@ -3,7 +3,7 @@ package lmt
 import (
 	"testing"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/stretchr/testify/assert"
 )
 
diff --git a/privacy/scrubber_test.go b/privacy/scrubber_test.go
index 13ac1f5c..ed43db9a 100644
--- a/privacy/scrubber_test.go
+++ b/privacy/scrubber_test.go
@@ -4,7 +4,7 @@ import (
 	"encoding/json"
 	"testing"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/stretchr/testify/assert"
 )
 
diff --git a/privacy/writer_test.go b/privacy/writer_test.go
index f5b02387..0f1bd0c2 100644
--- a/privacy/writer_test.go
+++ b/privacy/writer_test.go
@@ -4,7 +4,7 @@ import (
 	"encoding/json"
 	"testing"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/stretchr/testify/assert"
 )
 
diff --git a/schain/schain_test.go b/schain/schain_test.go
index 22903d69..816454b7 100644
--- a/schain/schain_test.go
+++ b/schain/schain_test.go
@@ -3,6 +3,7 @@ package schain
 import (
 	"testing"
 
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/openrtb_ext"
 	"github.com/stretchr/testify/assert"
 )
@@ -13,16 +14,16 @@ func TestBidderToPrebidChains(t *testing.T) {
 			SChains: []*openrtb_ext.ExtRequestPrebidSChain{
 				{
 					Bidders: []string{"Bidder1", "Bidder2"},
-					SChain: openrtb_ext.ExtRequestPrebidSChainSChain{
+					SChain: openrtb2.SupplyChain{
 						Complete: 1,
-						Nodes: []*openrtb_ext.ExtRequestPrebidSChainSChainNode{
+						Nodes: []openrtb2.SupplyChainNode{
 							{
 								ASI:    "asi1",
 								SID:    "sid1",
 								Name:   "name1",
 								RID:    "rid1",
 								Domain: "domain1",
-								HP:     1,
+								HP:     openrtb2.Int8Ptr(1),
 							},
 							{
 								ASI:    "asi2",
@@ -30,7 +31,7 @@ func TestBidderToPrebidChains(t *testing.T) {
 								Name:   "name2",
 								RID:    "rid2",
 								Domain: "domain2",
-								HP:     2,
+								HP:     openrtb2.Int8Ptr(2),
 							},
 						},
 						Ver: "version1",
@@ -38,7 +39,7 @@ func TestBidderToPrebidChains(t *testing.T) {
 				},
 				{
 					Bidders: []string{"Bidder3", "Bidder4"},
-					SChain:  openrtb_ext.ExtRequestPrebidSChainSChain{},
+					SChain:  openrtb2.SupplyChain{},
 				},
 			},
 		},
@@ -60,11 +61,11 @@ func TestBidderToPrebidChainsDiscardMultipleChainsForBidder(t *testing.T) {
 			SChains: []*openrtb_ext.ExtRequestPrebidSChain{
 				{
 					Bidders: []string{"Bidder1"},
-					SChain:  openrtb_ext.ExtRequestPrebidSChainSChain{},
+					SChain:  openrtb2.SupplyChain{},
 				},
 				{
 					Bidders: []string{"Bidder1", "Bidder2"},
-					SChain:  openrtb_ext.ExtRequestPrebidSChainSChain{},
+					SChain:  openrtb2.SupplyChain{},
 				},
 			},
 		},
diff --git a/schain/schainwriter_test.go b/schain/schainwriter_test.go
index 26a3fd52..c28e6196 100644
--- a/schain/schainwriter_test.go
+++ b/schain/schainwriter_test.go
@@ -4,7 +4,7 @@ import (
 	"encoding/json"
 	"testing"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/openrtb_ext"
 	"github.com/stretchr/testify/assert"
 )
@@ -22,7 +22,7 @@ func TestSChainWriter(t *testing.T) {
 		description    string
 		giveRequest    openrtb2.BidRequest
 		giveBidder     string
-		giveHostSChain *openrtb_ext.ExtRequestPrebidSChainSChainNode
+		giveHostSChain *openrtb2.SupplyChainNode
 		wantRequest    openrtb2.BidRequest
 		wantError      bool
 	}{
@@ -163,8 +163,8 @@ func TestSChainWriter(t *testing.T) {
 				Source: nil,
 			},
 			giveBidder: "testbidder",
-			giveHostSChain: &openrtb_ext.ExtRequestPrebidSChainSChainNode{
-				ASI: "pbshostcompany.com", SID: "00001", RID: "BidRequest", HP: 1,
+			giveHostSChain: &openrtb2.SupplyChainNode{
+				ASI: "pbshostcompany.com", SID: "00001", RID: "BidRequest", HP: openrtb2.Int8Ptr(1),
 			},
 			wantRequest: openrtb2.BidRequest{
 				Ext: json.RawMessage(`{"prebid":{"schains":[{"bidders":["testbidder"],"schain":{"complete":1,"nodes":[` + seller1Node + `],"ver":"1.0"}}]}}`),
@@ -180,8 +180,8 @@ func TestSChainWriter(t *testing.T) {
 				Source: nil,
 			},
 			giveBidder: "testbidder",
-			giveHostSChain: &openrtb_ext.ExtRequestPrebidSChainSChainNode{
-				ASI: "pbshostcompany.com", SID: "00001", RID: "BidRequest", HP: 1,
+			giveHostSChain: &openrtb2.SupplyChainNode{
+				ASI: "pbshostcompany.com", SID: "00001", RID: "BidRequest", HP: openrtb2.Int8Ptr(1),
 			},
 			wantRequest: openrtb2.BidRequest{
 				Ext: nil,
diff --git a/stored_responses/stored_responses_test.go b/stored_responses/stored_responses_test.go
index e63bbc99..2e7b7af4 100644
--- a/stored_responses/stored_responses_test.go
+++ b/stored_responses/stored_responses_test.go
@@ -4,10 +4,11 @@ import (
 	"context"
 	"encoding/json"
 	"errors"
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"testing"
+
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/prebid/prebid-server/openrtb_ext"
 	"github.com/stretchr/testify/assert"
-	"testing"
 )
 
 func TestRemoveImpsWithStoredResponses(t *testing.T) {
diff --git a/version/xprebidheader_test.go b/version/xprebidheader_test.go
index 1529a8f7..162204a1 100644
--- a/version/xprebidheader_test.go
+++ b/version/xprebidheader_test.go
@@ -4,7 +4,7 @@ import (
 	"encoding/json"
 	"testing"
 
-	"github.com/mxmCherry/openrtb/v15/openrtb2"
+	"github.com/mxmCherry/openrtb/v16/openrtb2"
 	"github.com/stretchr/testify/assert"
 
 	"github.com/prebid/prebid-server/openrtb_ext"