Repository: prebid/prebid-server
Pull request #3529 (2024-02-21 15:40:03)

Update prebid.org url to https


Patch:
diff --git a/Makefile b/Makefile
index 2d8aae6c..cf4ac52b 100644
--- a/Makefile
+++ b/Makefile
@@ -33,3 +33,7 @@ image:
 # format runs format
 format:
 	./scripts/format.sh -f true
+
+# formatcheck runs format for diagnostics, without modifying the code
+formatcheck:
+	./scripts/format.sh -f false
diff --git a/adapters/seedingAlliance/seedingAlliance.go b/adapters/seedingAlliance/seedingAlliance.go
index 03b6853b..af48133d 100644
--- a/adapters/seedingAlliance/seedingAlliance.go
+++ b/adapters/seedingAlliance/seedingAlliance.go
@@ -33,11 +33,11 @@ func Builder(_ openrtb_ext.BidderName, config config.Adapter, server config.Serv
 }
 
 func (a *adapter) MakeRequests(request *openrtb2.BidRequest, extraRequestInfo *adapters.ExtraRequestInfo) ([]*adapters.RequestData, []error) {
-	var seatId string
+	var accountId string
 	var err error
 
 	for i := range request.Imp {
-		if seatId, err = getExtInfo(&request.Imp[i]); err != nil {
+		if accountId, err = getExtInfo(&request.Imp[i]); err != nil {
 			return nil, []error{err}
 		}
 	}
@@ -51,7 +51,7 @@ func (a *adapter) MakeRequests(request *openrtb2.BidRequest, extraRequestInfo *a
 		return nil, []error{err}
 	}
 
-	url, err := macros.ResolveMacros(a.endpoint, macros.EndpointTemplateParams{AccountID: seatId})
+	url, err := macros.ResolveMacros(a.endpoint, macros.EndpointTemplateParams{AccountID: accountId})
 	if err != nil {
 		return nil, []error{err}
 	}
@@ -146,7 +146,7 @@ func getExtInfo(imp *openrtb2.Imp) (string, error) {
 	var ext adapters.ExtImpBidder
 	var extSA openrtb_ext.ImpExtSeedingAlliance
 
-	seatID := "pbs"
+	accountId := "pbs"
 
 	if err := json.Unmarshal(imp.Ext, &ext); err != nil {
 		return "", fmt.Errorf("could not unmarshal adapters.ExtImpBidder: %w", err)
@@ -159,8 +159,12 @@ func getExtInfo(imp *openrtb2.Imp) (string, error) {
 	imp.TagID = extSA.AdUnitID
 
 	if extSA.SeatID != "" {
-		seatID = extSA.SeatID
+		accountId = extSA.SeatID
 	}
 
-	return seatID, nil
+	if extSA.AccountID != "" {
+		accountId = extSA.AccountID
+	}
+
+	return accountId, nil
 }
diff --git a/adapters/stroeerCore/stroeercore.go b/adapters/stroeerCore/stroeercore.go
index 733d549e..f2ef4923 100644
--- a/adapters/stroeerCore/stroeercore.go
+++ b/adapters/stroeerCore/stroeercore.go
@@ -23,17 +23,22 @@ type response struct {
 }
 
 type bidResponse struct {
-	ID     string  `json:"id"`
-	BidID  string  `json:"bidId"`
-	CPM    float64 `json:"cpm"`
-	Width  int64   `json:"width"`
-	Height int64   `json:"height"`
-	Ad     string  `json:"ad"`
-	CrID   string  `json:"crid"`
-	Mtype  string  `json:"mtype"`
+	ID     string          `json:"id"`
+	BidID  string          `json:"bidId"`
+	CPM    float64         `json:"cpm"`
+	Width  int64           `json:"width"`
+	Height int64           `json:"height"`
+	Ad     string          `json:"ad"`
+	CrID   string          `json:"crid"`
+	Mtype  string          `json:"mtype"`
+	DSA    json.RawMessage `json:"dsa"`
 }
 
-func (b bidResponse) resolveMediaType() (mt openrtb2.MarkupType, bt openrtb_ext.BidType, err error) {
+type bidExt struct {
+	DSA json.RawMessage `json:"dsa,omitempty"`
+}
+
+func (b *bidResponse) resolveMediaType() (mt openrtb2.MarkupType, bt openrtb_ext.BidType, err error) {
 	switch b.Mtype {
 	case "banner":
 		return openrtb2.MarkupBanner, openrtb_ext.BidTypeBanner, nil
@@ -82,6 +87,15 @@ func (a *adapter) MakeBids(bidRequest *openrtb2.BidRequest, requestData *adapter
 			MType: markupType,
 		}
 
+		if bid.DSA != nil {
+			dsaJson, err := json.Marshal(bidExt{bid.DSA})
+			if err != nil {
+				errors = append(errors, err)
+			} else {
+				openRtbBid.Ext = dsaJson
+			}
+		}
+
 		bidderResponse.Bids = append(bidderResponse.Bids, &adapters.TypedBid{
 			Bid:     &openRtbBid,
 			BidType: bidType,
diff --git a/errortypes/code.go b/errortypes/code.go
index 1de5e648..399dd663 100644
--- a/errortypes/code.go
+++ b/errortypes/code.go
@@ -31,6 +31,7 @@ const (
 	AdServerTargetingWarningCode
 	BidAdjustmentWarningCode
 	FloorBidRejectionWarningCode
+	InvalidBidResponseDSAWarningCode
 )
 
 // Coder provides an error or warning code with severity.
diff --git a/exchange/exchange.go b/exchange/exchange.go
index ffd3b2e8..b9dae672 100644
--- a/exchange/exchange.go
+++ b/exchange/exchange.go
@@ -1247,12 +1247,12 @@ func (e *exchange) makeBid(bids []*entities.PbsOrtbBid, auc *auction, returnCrea
 	for _, bid := range bids {
 		if !dsa.Validate(bidRequest, bid) {
 			RequiredError := openrtb_ext.ExtBidderMessage{
-				Code:    errortypes.BadServerResponseErrorCode,
-				Message: "bidResponse rejected: DSA object missing when required",
+				Code:    errortypes.InvalidBidResponseDSAWarningCode,
+				Message: "bid response rejected: DSA object missing when required",
 			}
 			bidResponseExt.Warnings[adapter] = append(bidResponseExt.Warnings[adapter], RequiredError)
 
-			seatNonBids.addBid(bid, int(ResponseRejectedPrivacy), adapter.String())
+			seatNonBids.addBid(bid, int(ResponseRejectedGeneral), adapter.String())
 			continue // Don't add bid to result
 		}
 		if e.bidValidationEnforcement.BannerCreativeMaxSize == config.ValidationEnforce && bid.BidType == openrtb_ext.BidTypeBanner {
diff --git a/exchange/non_bid_reason.go b/exchange/non_bid_reason.go
index f105d0ad..2dff2dfb 100644
--- a/exchange/non_bid_reason.go
+++ b/exchange/non_bid_reason.go
@@ -6,9 +6,9 @@ package exchange
 type NonBidReason int
 
 const (
-	NoBidUnknownError                      NonBidReason = 0   // No Bid - General
+	NoBidUnknownError                      NonBidReason = 0 // No Bid - General
+	ResponseRejectedGeneral                NonBidReason = 300
 	ResponseRejectedCategoryMappingInvalid NonBidReason = 303 // Response Rejected - Category Mapping Invalid
-	ResponseRejectedPrivacy                NonBidReason = 305
 	ResponseRejectedCreativeSizeNotAllowed NonBidReason = 351 // Response Rejected - Invalid Creative (Size Not Allowed)
 	ResponseRejectedCreativeNotSecure      NonBidReason = 352 // Response Rejected - Invalid Creative (Not Secure)
 )
diff --git a/openrtb_ext/imp_seedingAlliance.go b/openrtb_ext/imp_seedingAlliance.go
index 0f594d3c..d383ad39 100644
--- a/openrtb_ext/imp_seedingAlliance.go
+++ b/openrtb_ext/imp_seedingAlliance.go
@@ -1,6 +1,7 @@
 package openrtb_ext
 
 type ImpExtSeedingAlliance struct {
-	AdUnitID string `json:"adUnitId"`
-	SeatID   string `json:"seatId"`
+	AdUnitID  string `json:"adUnitId"`
+	SeatID    string `json:"seatId"`
+	AccountID string `json:"accountId"`
 }
diff --git a/static/bidder-info/adf.yaml b/static/bidder-info/adf.yaml
index 2310f346..d7d9eccf 100644
--- a/static/bidder-info/adf.yaml
+++ b/static/bidder-info/adf.yaml
@@ -1,4 +1,12 @@
+# Please uncomment the appropriate endpoint URL for your datacenter
+# Europe
 endpoint: "https://adx.adform.net/adx/openrtb"
+# North/South America
+# endpoint: "https://adx2.adform.net/adx/openrtb"
+# APAC
+# endpoint: "https://adx3.adform.net/adx/openrtb"
+geoscope:
+  - global
 maintainer:
   email: "scope.sspp@adform.com"
 gvlVendorID: 50
diff --git a/static/bidder-info/bmtm.yaml b/static/bidder-info/bmtm.yaml
index 3d3f2ca6..27452195 100644
--- a/static/bidder-info/bmtm.yaml
+++ b/static/bidder-info/bmtm.yaml
@@ -1,6 +1,6 @@
 endpoint: "https://one.elitebidder.com/api/pbs"
 maintainer:
-  email: dev@brightmountainmedia.com
+  email: product@brightmountainmedia.com
 modifyingVastXmlAllowed: false
 capabilities:
   app:
diff --git a/static/bidder-info/minutemedia.yaml b/static/bidder-info/minutemedia.yaml
index efe58e57..55f5a2b7 100644
--- a/static/bidder-info/minutemedia.yaml
+++ b/static/bidder-info/minutemedia.yaml
@@ -14,5 +14,5 @@ capabilities:
       - video
 userSync:
   iframe:
-    url: https://pbs-cs.minutemedia-prebid.com/pbs-iframe?gdpr={{.GDPR}}&gdpr_consent={{.GDPRConsent}}&us_privacy={{.USPrivacy}}&redirect={{.RedirectURL}}
+    url: https://pbs-cs.minutemedia-prebid.com/pbs-iframe?gdpr={{.GDPR}}&gdpr_consent={{.GDPRConsent}}&us_privacy={{.USPrivacy}}&gpp={{.GPP}}&gpp_sid={{.GPPSID}}&redirect={{.RedirectURL}}
     userMacro: "[PBS_UID]"
diff --git a/static/bidder-info/rise.yaml b/static/bidder-info/rise.yaml
index 72e56c33..79b64d5a 100644
--- a/static/bidder-info/rise.yaml
+++ b/static/bidder-info/rise.yaml
@@ -14,5 +14,5 @@ capabilities:
       - video
 userSync:
   iframe:
-    url: https://pbs-cs.yellowblue.io/pbs-iframe?gdpr={{.GDPR}}&gdpr_consent={{.GDPRConsent}}&us_privacy={{.USPrivacy}}&redirect={{.RedirectURL}}
+    url: https://pbs-cs.yellowblue.io/pbs-iframe?gdpr={{.GDPR}}&gdpr_consent={{.GDPRConsent}}&us_privacy={{.USPrivacy}}&gpp={{.GPP}}&gpp_sid={{.GPPSID}}&redirect={{.RedirectURL}}
     userMacro: "[PBS_UID]"
diff --git a/static/bidder-params/seedingAlliance.json b/static/bidder-params/seedingAlliance.json
index 5fe463b6..d7208623 100644
--- a/static/bidder-params/seedingAlliance.json
+++ b/static/bidder-params/seedingAlliance.json
@@ -11,7 +11,11 @@
         },
         "seatId": {
             "type": "string",
-            "description": "Seat ID"
+            "description": "Deprecated, please use accountId"
+        },
+        "accountId": {
+            "type": "string",
+            "description": "Account ID of partner"
         }
     },
     "required": [
diff --git a/static/index.html b/static/index.html
index a3518ce2..ac79079f 100644
--- a/static/index.html
+++ b/static/index.html
@@ -3,7 +3,7 @@
         <title>Prebid Server</title>
     </head>
     <body>
-        Prebid Server is a server-to-server proxy for <a href="http://prebid.org">Prebid.js</a> users.
+        Prebid Server is a server-to-server proxy for <a href="https://prebid.org">Prebid.js</a> users.
         The host is not responsible for the content or advertising delivered through this proxy. For more information, 
         please contact prebid-server - at - prebid.org.
     </body>


Test patch:
diff --git a/adapters/seedingAlliance/seedingAlliance_test.go b/adapters/seedingAlliance/seedingAlliance_test.go
index 6d9460b8..ae9b888e 100644
--- a/adapters/seedingAlliance/seedingAlliance_test.go
+++ b/adapters/seedingAlliance/seedingAlliance_test.go
@@ -136,24 +136,27 @@ func TestGetMediaTypeForBid(t *testing.T) {
 
 func TestGetExtInfo(t *testing.T) {
 	type args struct {
-		adUnitId string
-		seatId   string
+		adUnitId  string
+		seatId    string
+		accountId string
 	}
 	tests := []struct {
-		name             string
-		expectedAdUnitID string
-		expectedSeatID   string
-		data             args
-		wantErr          bool
+		name              string
+		expectedAdUnitID  string
+		expectedAccountId string
+		data              args
+		wantErr           bool
 	}{
 		{"regular case", "abc123", "pbs", args{adUnitId: "abc123"}, false},
 		{"nil case", "", "pbs", args{adUnitId: ""}, false},
 		{"unmarshal err case", "", "pbs", args{adUnitId: ""}, true},
 		{"seatId case", "abc123", "seat1", args{adUnitId: "abc123", seatId: "seat1"}, false},
+		{"accountId case", "abc123", "account1", args{adUnitId: "abc123", accountId: "account1"}, false},
+		{"accountId and seatId case", "abc123", "account1", args{adUnitId: "abc123", accountId: "account1", seatId: "seat1"}, false},
 	}
 
 	for _, test := range tests {
-		extSA, err := json.Marshal(openrtb_ext.ImpExtSeedingAlliance{AdUnitID: test.data.adUnitId, SeatID: test.data.seatId})
+		extSA, err := json.Marshal(openrtb_ext.ImpExtSeedingAlliance{AdUnitID: test.data.adUnitId, SeatID: test.data.seatId, AccountID: test.data.accountId})
 		if err != nil {
 			t.Fatalf("unexpected error %v", err)
 		}
@@ -168,7 +171,7 @@ func TestGetExtInfo(t *testing.T) {
 		}
 
 		ortbImp := openrtb2.Imp{Ext: extBidder}
-		seatID, err := getExtInfo(&ortbImp)
+		accountId, err := getExtInfo(&ortbImp)
 		if err != nil {
 			if test.wantErr {
 				continue
@@ -180,8 +183,8 @@ func TestGetExtInfo(t *testing.T) {
 			t.Fatalf("want: %v, got: %v", test.expectedAdUnitID, ortbImp.TagID)
 		}
 
-		if test.expectedSeatID != seatID {
-			t.Fatalf("want: %v, got: %v", test.expectedSeatID, seatID)
+		if test.expectedAccountId != accountId {
+			t.Fatalf("want: %v, got: %v", test.expectedAccountId, accountId)
 		}
 	}
 }
diff --git a/adapters/seedingAlliance/seedingAlliancetest/exemplary/banner_with_account.json b/adapters/seedingAlliance/seedingAlliancetest/exemplary/banner_with_account.json
new file mode 100644
index 00000000..fc3678ea
--- /dev/null
+++ b/adapters/seedingAlliance/seedingAlliancetest/exemplary/banner_with_account.json
@@ -0,0 +1,142 @@
+{
+    "mockBidRequest": {
+        "id": "test-request-id",
+        "site": {
+            "publisher": {
+                "id": "foo",
+                "name": "foo"
+            }
+        },
+        "imp": [
+            {
+                "id": "test-imp-id",
+                "banner": {
+                    "format": [
+                        {
+                            "w": 300,
+                            "h": 250
+                        },
+                        {
+                            "w": 300,
+                            "h": 600
+                        }
+                    ]
+                },
+                "ext": {
+                    "bidder": {
+                        "adUnitId": "example-tag-id",
+                        "accountId": "123"
+                    }
+                }
+            }
+        ]
+    },
+    "httpCalls": [
+        {
+            "expectedRequest": {
+                "uri": "https://mockup.seeding-alliance.de/?ssp=123",
+                "body": {
+                    "cur": [
+                        "EUR"
+                    ],
+                    "id": "test-request-id",
+                    "imp": [
+                        {
+                            "id": "test-imp-id",
+                            "banner": {
+                                "format": [
+                                    {
+                                        "w": 300,
+                                        "h": 250
+                                    },
+                                    {
+                                        "w": 300,
+                                        "h": 600
+                                    }
+                                ]
+                            },
+                            "tagid": "example-tag-id",
+                            "ext": {
+                                "bidder": {
+                                    "adUnitId": "example-tag-id",
+                                    "accountId": "123"
+                                }
+                            }
+                        }
+                    ],
+                    "site": {
+                        "publisher": {
+                            "id": "foo",
+                            "name": "foo"
+                        }
+                    }
+                }
+            },
+            "mockResponse": {
+                "status": 200,
+                "body": {
+                    "id": "test-request-id",
+                    "seatbid": [
+                        {
+                            "seat": "123",
+                            "bid": [
+                                {
+                                    "id": "7706636740145184841",
+                                    "impid": "test-imp-id",
+                                    "price": 0.5,
+                                    "adid": "12341234",
+                                    "adm": "some-test-ad",
+                                    "adomain": [
+                                        "domain.com"
+                                    ],
+                                    "iurl": "http://abc.com/cr?id=12341234",
+                                    "cid": "123",
+                                    "crid": "12341234",
+                                    "h": 250,
+                                    "w": 300,
+                                    "ext": {
+                                        "prebid": {
+                                            "type": "banner"
+                                        }
+                                    }
+                                }
+                            ]
+                        }
+                    ],
+                    "bidid": "5778926625248726496",
+                    "cur": "EUR"
+                }
+            }
+        }
+    ],
+    "expectedBidResponses": [
+        {
+            "currency": "EUR",
+            "bids": [
+                {
+                    "bid": {
+                        "id": "7706636740145184841",
+                        "impid": "test-imp-id",
+                        "price": 0.5,
+                        "adm": "some-test-ad",
+                        "adid": "12341234",
+                        "adomain": [
+                            "domain.com"
+                        ],
+                        "iurl": "http://abc.com/cr?id=12341234",
+                        "cid": "123",
+                        "crid": "12341234",
+                        "w": 300,
+                        "h": 250,
+                        "ext": {
+                            "prebid": {
+                                "type": "banner"
+                            }
+                        }
+                    },
+                    "type": "banner"
+                }
+            ]
+        }
+    ]
+}
\ No newline at end of file
diff --git a/adapters/seedingAlliance/seedingAlliancetest/exemplary/banner_with_account_and_seat.json b/adapters/seedingAlliance/seedingAlliancetest/exemplary/banner_with_account_and_seat.json
new file mode 100644
index 00000000..3f010e60
--- /dev/null
+++ b/adapters/seedingAlliance/seedingAlliancetest/exemplary/banner_with_account_and_seat.json
@@ -0,0 +1,144 @@
+{
+    "mockBidRequest": {
+        "id": "test-request-id",
+        "site": {
+            "publisher": {
+                "id": "foo",
+                "name": "foo"
+            }
+        },
+        "imp": [
+            {
+                "id": "test-imp-id",
+                "banner": {
+                    "format": [
+                        {
+                            "w": 300,
+                            "h": 250
+                        },
+                        {
+                            "w": 300,
+                            "h": 600
+                        }
+                    ]
+                },
+                "ext": {
+                    "bidder": {
+                        "adUnitId": "example-tag-id",
+                        "seatId": "ignored",
+                        "accountId": "123"
+                    }
+                }
+            }
+        ]
+    },
+    "httpCalls": [
+        {
+            "expectedRequest": {
+                "uri": "https://mockup.seeding-alliance.de/?ssp=123",
+                "body": {
+                    "cur": [
+                        "EUR"
+                    ],
+                    "id": "test-request-id",
+                    "imp": [
+                        {
+                            "id": "test-imp-id",
+                            "banner": {
+                                "format": [
+                                    {
+                                        "w": 300,
+                                        "h": 250
+                                    },
+                                    {
+                                        "w": 300,
+                                        "h": 600
+                                    }
+                                ]
+                            },
+                            "tagid": "example-tag-id",
+                            "ext": {
+                                "bidder": {
+                                    "adUnitId": "example-tag-id",
+                                    "seatId": "ignored",
+                                    "accountId": "123"
+                                }
+                            }
+                        }
+                    ],
+                    "site": {
+                        "publisher": {
+                            "id": "foo",
+                            "name": "foo"
+                        }
+                    }
+                }
+            },
+            "mockResponse": {
+                "status": 200,
+                "body": {
+                    "id": "test-request-id",
+                    "seatbid": [
+                        {
+                            "seat": "123",
+                            "bid": [
+                                {
+                                    "id": "7706636740145184841",
+                                    "impid": "test-imp-id",
+                                    "price": 0.5,
+                                    "adid": "12341234",
+                                    "adm": "some-test-ad",
+                                    "adomain": [
+                                        "domain.com"
+                                    ],
+                                    "iurl": "http://abc.com/cr?id=12341234",
+                                    "cid": "123",
+                                    "crid": "12341234",
+                                    "h": 250,
+                                    "w": 300,
+                                    "ext": {
+                                        "prebid": {
+                                            "type": "banner"
+                                        }
+                                    }
+                                }
+                            ]
+                        }
+                    ],
+                    "bidid": "5778926625248726496",
+                    "cur": "EUR"
+                }
+            }
+        }
+    ],
+    "expectedBidResponses": [
+        {
+            "currency": "EUR",
+            "bids": [
+                {
+                    "bid": {
+                        "id": "7706636740145184841",
+                        "impid": "test-imp-id",
+                        "price": 0.5,
+                        "adm": "some-test-ad",
+                        "adid": "12341234",
+                        "adomain": [
+                            "domain.com"
+                        ],
+                        "iurl": "http://abc.com/cr?id=12341234",
+                        "cid": "123",
+                        "crid": "12341234",
+                        "w": 300,
+                        "h": 250,
+                        "ext": {
+                            "prebid": {
+                                "type": "banner"
+                            }
+                        }
+                    },
+                    "type": "banner"
+                }
+            ]
+        }
+    ]
+}
\ No newline at end of file
diff --git a/adapters/stroeerCore/stroeercoretest/exemplary/dsa.json b/adapters/stroeerCore/stroeercoretest/exemplary/dsa.json
new file mode 100644
index 00000000..70baef5f
--- /dev/null
+++ b/adapters/stroeerCore/stroeercoretest/exemplary/dsa.json
@@ -0,0 +1,202 @@
+{
+  "mockBidRequest": {
+    "id": "auction-id",
+    "cur": [
+      "EUR"
+    ],
+    "imp": [
+      {
+        "id": "1",
+        "banner": {
+          "format": [
+            {
+              "w": 300,
+              "h": 600
+            }
+          ]
+        },
+        "ext": {
+          "bidder": {
+            "sid": "123456"
+          }
+        }
+      }
+    ],
+    "device": {
+      "ip": "123.123.123.123"
+    },
+    "site": {
+      "domain": "www.publisher.com",
+      "page": "http://www.publisher.com/some/path"
+    },
+    "user": {
+      "buyeruid": "test-buyer-user-id"
+    },
+    "regs": {
+      "ext": {
+        "dsa": {
+          "dsarequired": 3,
+          "pubrender": 0,
+          "datatopub": 2,
+          "transparency": [
+            {
+              "domain": "example-platform.com",
+              "dsaparams": [
+                1
+              ]
+            },
+            {
+              "domain": "example-ssp.com",
+              "dsaparams": [
+                1,
+                2
+              ]
+            }
+          ]
+        }
+      }
+    }
+  },
+  "httpCalls": [
+    {
+      "expectedRequest": {
+        "headers": {
+          "Accept": [
+            "application/json"
+          ],
+          "Content-Type": [
+            "application/json;charset=utf-8"
+          ]
+        },
+        "uri": "http://localhost/s2sdsh",
+        "body": {
+          "id": "auction-id",
+          "cur": [
+            "EUR"
+          ],
+          "imp": [
+            {
+              "id": "1",
+              "tagid": "123456",
+              "banner": {
+                "format": [
+                  {
+                    "w": 300,
+                    "h": 600
+                  }
+                ]
+              },
+              "ext": {
+                "bidder": {
+                  "sid": "123456"
+                }
+              }
+            }
+          ],
+          "device": {
+            "ip": "123.123.123.123"
+          },
+          "site": {
+            "domain": "www.publisher.com",
+            "page": "http://www.publisher.com/some/path"
+          },
+          "user": {
+            "buyeruid": "test-buyer-user-id"
+          },
+          "regs": {
+            "ext": {
+              "dsa": {
+                "dsarequired": 3,
+                "pubrender": 0,
+                "datatopub": 2,
+                "transparency": [
+                  {
+                    "domain": "example-platform.com",
+                    "dsaparams": [
+                      1
+                    ]
+                  },
+                  {
+                    "domain": "example-ssp.com",
+                    "dsaparams": [
+                      1,
+                      2
+                    ]
+                  }
+                ]
+              }
+            }
+          }
+        }
+      },
+      "mockResponse": {
+        "status": 200,
+        "body": {
+          "id": "test-request-id",
+          "bids": [
+            {
+              "id": "1829273982920-01",
+              "bidId": "1",
+              "cpm": 2,
+              "width": 300,
+              "height": 600,
+              "ad": "advert",
+              "crid": "wasd",
+              "mtype": "banner",
+              "dsa": {
+                "behalf": "Advertiser A",
+                "paid": "Advertiser B",
+                "transparency": [
+                  {
+                    "domain": "example-domain.com",
+                    "dsaparams": [
+                      1,
+                      2
+                    ]
+                  }
+                ],
+                "adrender": 1
+              }
+            }
+          ]
+        }
+      }
+    }
+  ],
+  "expectedBidResponses": [
+    {
+      "currency": "EUR",
+      "bids": [
+        {
+          "bid": {
+            "id": "1829273982920-01",
+            "impid": "1",
+            "price": 2,
+            "adm": "advert",
+            "w": 300,
+            "h": 600,
+            "crid": "wasd",
+            "mtype": 1,
+            "ext": {
+              "dsa": {
+                "behalf": "Advertiser A",
+                "paid": "Advertiser B",
+                "transparency": [
+                  {
+                    "domain": "example-domain.com",
+                    "dsaparams": [
+                      1,
+                      2
+                    ]
+                  }
+                ],
+                "adrender": 1
+              }
+            }
+          },
+          "type": "banner"
+        }
+      ]
+    }
+  ]
+}
diff --git a/exchange/exchange_test.go b/exchange/exchange_test.go
index 44baaf8d..e484e21a 100644
--- a/exchange/exchange_test.go
+++ b/exchange/exchange_test.go
@@ -4765,7 +4765,7 @@ func TestMakeBidWithValidation(t *testing.T) {
 				seatNonBidsMap: map[string][]openrtb_ext.NonBid{
 					"pubmatic": {
 						{
-							StatusCode: 305,
+							StatusCode: 300,
 							Ext: openrtb_ext.NonBidExt{
 								Prebid: openrtb_ext.ExtResponseNonBidPrebid{
 									Bid: openrtb_ext.NonBidObject{},