diff --git a/adapters/teads/models.go b/adapters/teads/models.go
new file mode 100644
index 00000000000..5b63c163197
--- /dev/null
+++ b/adapters/teads/models.go
@@ -0,0 +1,40 @@
+package teads
+
+import (
+ "encoding/json"
+ "text/template"
+)
+
+type adapter struct {
+ endpointTemplate *template.Template
+}
+
+type defaultBidderImpExtension struct {
+ Bidder bidder `json:"bidder"`
+}
+
+type bidder struct {
+ PlacementId int `json:"placementId"`
+}
+
+type teadsImpExtension struct {
+ KV teadsKV `json:"kv"`
+}
+
+type teadsKV struct {
+ PlacementId int `json:"placementId"`
+}
+
+type teadsBidExt struct {
+ Prebid teadsPrebidExt `json:"prebid"`
+}
+
+type teadsPrebidExt struct {
+ Meta teadsPrebidMeta `json:"meta"`
+}
+
+type teadsPrebidMeta struct {
+ RendererName string `json:"rendererName"`
+ RendererVersion string `json:"rendererVersion"`
+ RendererData json.RawMessage `json:"rendererData"`
+}
diff --git a/adapters/teads/teads.go b/adapters/teads/teads.go
new file mode 100644
index 00000000000..9c2bb57fc57
--- /dev/null
+++ b/adapters/teads/teads.go
@@ -0,0 +1,202 @@
+package teads
+
+import (
+ "encoding/json"
+ "fmt"
+ "net/http"
+ "net/url"
+ "strconv"
+ "text/template"
+
+ "github.com/prebid/openrtb/v19/openrtb2"
+ "github.com/prebid/prebid-server/adapters"
+ "github.com/prebid/prebid-server/config"
+ "github.com/prebid/prebid-server/errortypes"
+ "github.com/prebid/prebid-server/macros"
+ "github.com/prebid/prebid-server/openrtb_ext"
+)
+
+// Builder builds a new instance of the Teads adapter for the given bidder with the given config.
+func Builder(_ openrtb_ext.BidderName, config config.Adapter, server config.Server) (adapters.Bidder, error) {
+ template, err := template.New("endpointTemplate").Parse(config.Endpoint)
+ if err != nil {
+ return nil, fmt.Errorf("unable to parse endpoint url template: %v", err)
+ }
+
+ bidder := &adapter{
+ endpointTemplate: template,
+ }
+ return bidder, nil
+}
+
+func (a *adapter) MakeRequests(request *openrtb2.BidRequest, reqInfo *adapters.ExtraRequestInfo) ([]*adapters.RequestData, []error) {
+ if len(request.Imp) == 0 {
+ return nil, []error{&errortypes.BadInput{
+ Message: "No impression in the bid request",
+ }}
+ }
+
+ endpointURL, err := a.buildEndpointURL()
+ if endpointURL == "" {
+ return nil, []error{err}
+ }
+
+ if err := updateImpObject(request.Imp); err != nil {
+ return nil, []error{err}
+ }
+
+ reqJSON, err := json.Marshal(request)
+ if err != nil {
+ return nil, []error{&errortypes.BadInput{
+ Message: "Error parsing BidRequest object",
+ }}
+ }
+
+ headers := http.Header{}
+ headers.Add("Content-Type", "application/json;charset=utf-8")
+ return []*adapters.RequestData{{
+ Method: "POST",
+ Uri: endpointURL,
+ Body: reqJSON,
+ Headers: headers,
+ }}, []error{}
+}
+
+func updateImpObject(imps []openrtb2.Imp) error {
+ for i := range imps {
+ imp := &imps[i]
+
+ if imp.Banner != nil {
+ if len(imp.Banner.Format) != 0 {
+ bannerCopy := *imp.Banner
+ bannerCopy.H = &imp.Banner.Format[0].H
+ bannerCopy.W = &imp.Banner.Format[0].W
+ imp.Banner = &bannerCopy
+ }
+ }
+
+ var defaultImpExt defaultBidderImpExtension
+ if err := json.Unmarshal(imp.Ext, &defaultImpExt); err != nil {
+ return &errortypes.BadInput{
+ Message: "Error parsing Imp.Ext object",
+ }
+ }
+ if defaultImpExt.Bidder.PlacementId == 0 {
+ return &errortypes.BadInput{
+ Message: "placementId should not be 0.",
+ }
+ }
+ imp.TagID = strconv.Itoa(defaultImpExt.Bidder.PlacementId)
+ teadsImpExt := &teadsImpExtension{
+ KV: teadsKV{
+ PlacementId: defaultImpExt.Bidder.PlacementId,
+ },
+ }
+ if extJson, err := json.Marshal(teadsImpExt); err != nil {
+ return &errortypes.BadInput{
+ Message: "Error stringify Imp.Ext object",
+ }
+ } else {
+ imp.Ext = extJson
+ }
+ }
+ return nil
+}
+
+// Builds enpoint url based on adapter-specific pub settings from imp.ext
+func (a *adapter) buildEndpointURL() (string, error) {
+ endpointParams := macros.EndpointTemplateParams{}
+ host, err := macros.ResolveMacros(a.endpointTemplate, endpointParams)
+
+ if err != nil {
+ return "", &errortypes.BadInput{
+ Message: "Unable to parse endpoint url template: " + err.Error(),
+ }
+ }
+
+ thisURI, err := url.Parse(host)
+ if err != nil {
+ return "", &errortypes.BadInput{
+ Message: "Malformed URL: " + err.Error(),
+ }
+ }
+
+ return thisURI.String(), nil
+}
+
+func (a *adapter) MakeBids(internalRequest *openrtb2.BidRequest, _ *adapters.RequestData, response *adapters.ResponseData) (*adapters.BidderResponse, []error) {
+ if adapters.IsResponseStatusCodeNoContent(response) {
+ return nil, nil
+ }
+
+ err := adapters.CheckResponseStatusCodeForErrors(response)
+ if err != nil {
+ return nil, []error{err}
+ }
+
+ var bidResp openrtb2.BidResponse
+ if err := json.Unmarshal(response.Body, &bidResp); err != nil {
+ return nil, []error{err}
+ }
+
+ bidderResponse := adapters.NewBidderResponseWithBidsCapacity(len(bidResp.SeatBid))
+
+ for _, sb := range bidResp.SeatBid {
+ for i := 0; i < len(sb.Bid); i++ {
+ bid := sb.Bid[i]
+
+ bidExtTeads, err := getTeadsRendererFromBidExt(bid.Ext)
+ if err != nil {
+ return nil, err
+ }
+ bidType, err := getMediaTypeForImp(bid.ImpID, internalRequest.Imp)
+ if err != nil {
+ return nil, err
+ }
+ bidderResponse.Bids = append(bidderResponse.Bids, &adapters.TypedBid{
+ Bid: &bid,
+ BidMeta: &openrtb_ext.ExtBidPrebidMeta{
+ RendererName: bidExtTeads.Prebid.Meta.RendererName,
+ RendererVersion: bidExtTeads.Prebid.Meta.RendererVersion,
+ },
+ BidType: bidType,
+ })
+ }
+ }
+ if bidResp.Cur != "" {
+ bidderResponse.Currency = bidResp.Cur
+ }
+ return bidderResponse, nil
+}
+
+func getTeadsRendererFromBidExt(ext json.RawMessage) (*teadsBidExt, []error) {
+ var bidExtTeads teadsBidExt
+ if err := json.Unmarshal(ext, &bidExtTeads); err != nil {
+ return nil, []error{err}
+ }
+ if bidExtTeads.Prebid.Meta.RendererName == "" {
+ return nil, []error{&errortypes.BadInput{
+ Message: "RendererName should not be empty if present",
+ }}
+ }
+ if bidExtTeads.Prebid.Meta.RendererVersion == "" {
+ return nil, []error{&errortypes.BadInput{
+ Message: "RendererVersion should not be empty if present",
+ }}
+ }
+ return &bidExtTeads, nil
+}
+
+func getMediaTypeForImp(impID string, imps []openrtb2.Imp) (openrtb_ext.BidType, []error) {
+ for _, imp := range imps {
+ if imp.ID == impID {
+ if imp.Video != nil {
+ return openrtb_ext.BidTypeVideo, nil
+ }
+ return openrtb_ext.BidTypeBanner, nil
+ }
+ }
+ return openrtb_ext.BidType(""), []error{&errortypes.BadInput{
+ Message: "Imp ids were not equals",
+ }}
+}
diff --git a/adapters/teads/teads_test.go b/adapters/teads/teads_test.go
new file mode 100644
index 00000000000..791ce7aed6f
--- /dev/null
+++ b/adapters/teads/teads_test.go
@@ -0,0 +1,27 @@
+package teads
+
+import (
+ "github.com/prebid/prebid-server/adapters/adapterstest"
+ "github.com/prebid/prebid-server/config"
+ "github.com/prebid/prebid-server/openrtb_ext"
+ "github.com/stretchr/testify/assert"
+ "testing"
+)
+
+func TestJsonSamples(t *testing.T) {
+ bidder, buildErr := Builder(openrtb_ext.BidderTeads, config.Adapter{
+ Endpoint: "https://a.teads.tv/prebid-server/bid-request"}, config.Server{ExternalUrl: "https://a.teads.tv/prebid-server/bid-request", GvlID: 1, DataCenter: "2"})
+
+ if buildErr != nil {
+ t.Fatalf("Builder returned unexpected error %v", buildErr)
+ }
+
+ adapterstest.RunJSONBidderTest(t, "teadstest", bidder)
+}
+
+func TestEndpointTemplateMalformed(t *testing.T) {
+ _, buildErr := Builder(openrtb_ext.BidderTeads, config.Adapter{
+ Endpoint: "{{Malformed}}"}, config.Server{ExternalUrl: "https://a.teads.tv/prebid-server/bid-request", GvlID: 1, DataCenter: "2"})
+
+ assert.Error(t, buildErr)
+}
diff --git a/adapters/teads/teadstest/exemplary/simple-banner-with-format.json b/adapters/teads/teadstest/exemplary/simple-banner-with-format.json
new file mode 100644
index 00000000000..b2677e6faba
--- /dev/null
+++ b/adapters/teads/teadstest/exemplary/simple-banner-with-format.json
@@ -0,0 +1,168 @@
+{
+ "mockBidRequest": {
+ "id": "test-request-id",
+ "imp": [
+ {
+ "id": "b6321d41-3840-4cb3-baad-b6fc5b0c8553",
+ "banner": {
+ "format": [
+ {
+ "w": 300,
+ "h": 250
+ }
+ ]
+ },
+ "ext": {
+ "bidder": {
+ "placementId": 125
+ }
+ }
+ }
+ ],
+ "ext": {
+ "prebid": {
+ "sdk": {
+ "renderers": [
+ {
+ "name": "teads",
+ "version": "5.0.25",
+ "data": {
+ "resize": true,
+ "sdkEngineVersion": "189"
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "httpCalls": [
+ {
+ "expectedRequest": {
+ "uri": "https://a.teads.tv/prebid-server/bid-request",
+ "body": {
+ "id": "test-request-id",
+ "imp": [
+ {
+ "id": "b6321d41-3840-4cb3-baad-b6fc5b0c8553",
+ "tagid": "125",
+ "banner": {
+ "w": 300,
+ "h": 250,
+ "format": [
+ {
+ "w": 300,
+ "h": 250
+ }
+ ]
+ },
+ "ext": {
+ "kv": {
+ "placementId": 125
+ }
+ }
+ }
+ ],
+ "ext": {
+ "prebid": {
+ "sdk": {
+ "renderers": [
+ {
+ "name": "teads",
+ "version": "5.0.25",
+ "data": {
+ "resize": true,
+ "sdkEngineVersion": "189"
+ }
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
+ "mockResponse": {
+ "status": 200,
+ "body": {
+ "id": "39312703-e970-4914-ae56-8e7d7d1fd16b",
+ "tagid": "125",
+ "seatbid": [
+ {
+ "seat": "teads",
+ "bid": [
+ {
+ "id": "695ac187-fb3f-4d1f-8d5d-099c5e4c4d28",
+ "impid": "b6321d41-3840-4cb3-baad-b6fc5b0c8553",
+ "price": 33,
+ "nurl": "https://localhost:8080/prebid-server/win-notice?data=base64&clearingPrice=${AUCTION_PRICE}",
+ "adm": "{\"settings\":{\"values\":{\"animations\":{\"expand\":0,\"collapse\":0.5},\"placementId\":2,\"adType\":\"video\",\"placementFormat\":\"inread\",\"allowedPlayer\":\"any\",\"pageId\":2},\"components\":{\"closeButton\":{\"display\":false,\"countdown\":0},\"credits\":{\"display\":false},\"soundButton\":{\"display\":true,\"countdown\":0,\"type\":\"equalizer\"},\"label\":{\"display\":false},\"slider\":{\"closeButtonDisplay\":false}},\"behaviors\":{\"smartPosition\":{\"top\":false,\"corner\":false,\"mustBypassWhitelist\":true},\"slider\":{\"enable\":false},\"friendly\":false,\"playerClick\":\"fullscreen\",\"soundStart\":{\"type\":\"mute\"},\"soundMute\":\"threshold\",\"soundOver\":\"over\",\"launch\":\"auto\",\"videoStart\":\"threshold\",\"videoPause\":\"threshold\",\"secure\":false}},\"ads\":[{\"settings\":{\"values\":{\"animations\":{\"expand\":0,\"collapse\":0.5},\"placementId\":2,\"adType\":\"video\",\"placementFormat\":\"inread\",\"allowedPlayer\":\"any\",\"pageId\":2},\"components\":{\"closeButton\":{\"display\":false,\"countdown\":0},\"credits\":{\"display\":false},\"soundButton\":{\"display\":true,\"countdown\":0,\"type\":\"equalizer\"},\"label\":{\"display\":false},\"slider\":{\"closeButtonDisplay\":false}},\"behaviors\":{\"smartPosition\":{\"top\":false,\"corner\":false,\"mustBypassWhitelist\":true},\"slider\":{\"enable\":false},\"friendly\":false,\"playerClick\":\"fullscreen\",\"soundStart\":{\"type\":\"mute\"},\"soundMute\":\"threshold\",\"soundOver\":\"over\",\"launch\":\"auto\",\"videoStart\":\"threshold\",\"videoPause\":\"threshold\",\"secure\":false}},\"type\":\"VastXml\",\"content\":\"Teads Technology\",\"scenario_id\":971105412,\"dsp_campaign_id\":\"1\",\"dsp_creative_id\":\"1\",\"insertion_id\":1,\"placement_id\":2,\"portfolio_item_id\":971104812}],\"wigoEnabled\":false,\"placementMetadata\":{\"2\":{\"adCallTrackingUrl\":\"https://localhost:18281/track?action=adCall&pid=2&pageId=2&auctid=39312703-e970-4914-ae56-8e7d7d1fd16b__b6321d41-3840-4cb3-baad-b6fc5b0c8553__c0f2e6ba-63d0-4e20-ab41-fe0822eb65a6&vid=708ca808-ec55-4d97-ab81-9c4777e16058&hb_provider=prebid-server&hb_ad_unit_code=742d38c4-7994-4c2b-ac82-18d3a64ba3c7&env=thirdparty-inapp>c=1&gdpr_apply=false&gac=1&gap=1&ca=false&bsg=uncat&bsias=uncat&pfid=971104812&gid=1&brid=0&cid=1&rpm_reason=3&ut=1&p=5fwoPMJCquIB-txdmwQS0l79-hhHVnlTzyR9mmnBMtZRceP6-q31KzCfLpS8WTNaw_sXr-hkOFBxaxa-jyLblbVc&cts=1685971107773&cs=267268361555465193905\",\"auctionId\":\"39312703-e970-4914-ae56-8e7d7d1fd16b__b6321d41-3840-4cb3-baad-b6fc5b0c8553__c0f2e6ba-63d0-4e20-ab41-fe0822eb65a6\"}},\"viewerId\":\"708ca808-ec55-4d97-ab81-9c4777e16058\"}",
+ "adid": "1",
+ "adomain": [
+ "teads.com"
+ ],
+ "cid": "1",
+ "crid": "1",
+ "cat": [
+ "IAB1-6",
+ "IAB10-5"
+ ],
+ "ext": {
+ "prebid": {
+ "meta": {
+ "rendererName": "teads",
+ "rendererVersion": "5.0.25",
+ "rendererData": {
+ "resize": true,
+ "sdkEngineVersion": "189"
+ }
+ }
+ }
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ ],
+ "expectedBidResponses": [
+ {
+ "currency": "USD",
+ "bids": [
+ {
+ "bid": {
+ "id": "695ac187-fb3f-4d1f-8d5d-099c5e4c4d28",
+ "impid": "b6321d41-3840-4cb3-baad-b6fc5b0c8553",
+ "price": 33,
+ "nurl": "https://localhost:8080/prebid-server/win-notice?data=base64&clearingPrice=${AUCTION_PRICE}",
+ "adm": "{\"settings\":{\"values\":{\"animations\":{\"expand\":0,\"collapse\":0.5},\"placementId\":2,\"adType\":\"video\",\"placementFormat\":\"inread\",\"allowedPlayer\":\"any\",\"pageId\":2},\"components\":{\"closeButton\":{\"display\":false,\"countdown\":0},\"credits\":{\"display\":false},\"soundButton\":{\"display\":true,\"countdown\":0,\"type\":\"equalizer\"},\"label\":{\"display\":false},\"slider\":{\"closeButtonDisplay\":false}},\"behaviors\":{\"smartPosition\":{\"top\":false,\"corner\":false,\"mustBypassWhitelist\":true},\"slider\":{\"enable\":false},\"friendly\":false,\"playerClick\":\"fullscreen\",\"soundStart\":{\"type\":\"mute\"},\"soundMute\":\"threshold\",\"soundOver\":\"over\",\"launch\":\"auto\",\"videoStart\":\"threshold\",\"videoPause\":\"threshold\",\"secure\":false}},\"ads\":[{\"settings\":{\"values\":{\"animations\":{\"expand\":0,\"collapse\":0.5},\"placementId\":2,\"adType\":\"video\",\"placementFormat\":\"inread\",\"allowedPlayer\":\"any\",\"pageId\":2},\"components\":{\"closeButton\":{\"display\":false,\"countdown\":0},\"credits\":{\"display\":false},\"soundButton\":{\"display\":true,\"countdown\":0,\"type\":\"equalizer\"},\"label\":{\"display\":false},\"slider\":{\"closeButtonDisplay\":false}},\"behaviors\":{\"smartPosition\":{\"top\":false,\"corner\":false,\"mustBypassWhitelist\":true},\"slider\":{\"enable\":false},\"friendly\":false,\"playerClick\":\"fullscreen\",\"soundStart\":{\"type\":\"mute\"},\"soundMute\":\"threshold\",\"soundOver\":\"over\",\"launch\":\"auto\",\"videoStart\":\"threshold\",\"videoPause\":\"threshold\",\"secure\":false}},\"type\":\"VastXml\",\"content\":\"Teads Technology\",\"scenario_id\":971105412,\"dsp_campaign_id\":\"1\",\"dsp_creative_id\":\"1\",\"insertion_id\":1,\"placement_id\":2,\"portfolio_item_id\":971104812}],\"wigoEnabled\":false,\"placementMetadata\":{\"2\":{\"adCallTrackingUrl\":\"https://localhost:18281/track?action=adCall&pid=2&pageId=2&auctid=39312703-e970-4914-ae56-8e7d7d1fd16b__b6321d41-3840-4cb3-baad-b6fc5b0c8553__c0f2e6ba-63d0-4e20-ab41-fe0822eb65a6&vid=708ca808-ec55-4d97-ab81-9c4777e16058&hb_provider=prebid-server&hb_ad_unit_code=742d38c4-7994-4c2b-ac82-18d3a64ba3c7&env=thirdparty-inapp>c=1&gdpr_apply=false&gac=1&gap=1&ca=false&bsg=uncat&bsias=uncat&pfid=971104812&gid=1&brid=0&cid=1&rpm_reason=3&ut=1&p=5fwoPMJCquIB-txdmwQS0l79-hhHVnlTzyR9mmnBMtZRceP6-q31KzCfLpS8WTNaw_sXr-hkOFBxaxa-jyLblbVc&cts=1685971107773&cs=267268361555465193905\",\"auctionId\":\"39312703-e970-4914-ae56-8e7d7d1fd16b__b6321d41-3840-4cb3-baad-b6fc5b0c8553__c0f2e6ba-63d0-4e20-ab41-fe0822eb65a6\"}},\"viewerId\":\"708ca808-ec55-4d97-ab81-9c4777e16058\"}",
+ "adid": "1",
+ "adomain": [
+ "teads.com"
+ ],
+ "cid": "1",
+ "crid": "1",
+ "cat": [
+ "IAB1-6",
+ "IAB10-5"
+ ],
+ "ext": {
+ "prebid": {
+ "meta": {
+ "rendererName": "teads",
+ "rendererVersion": "5.0.25",
+ "rendererData": {
+ "resize": true,
+ "sdkEngineVersion": "189"
+ }
+ }
+ }
+ }
+ },
+ "type": "banner"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/adapters/teads/teadstest/exemplary/simple-banner.json b/adapters/teads/teadstest/exemplary/simple-banner.json
new file mode 100644
index 00000000000..2d9be7c7368
--- /dev/null
+++ b/adapters/teads/teadstest/exemplary/simple-banner.json
@@ -0,0 +1,158 @@
+{
+ "mockBidRequest": {
+ "id": "test-request-id",
+ "imp": [
+ {
+ "id": "b6321d41-3840-4cb3-baad-b6fc5b0c8553",
+ "banner": {
+ "w": 300,
+ "h": 250
+ },
+ "ext": {
+ "bidder": {
+ "placementId": 125
+ }
+ }
+ }
+ ],
+ "ext": {
+ "prebid": {
+ "sdk": {
+ "renderers": [
+ {
+ "name": "teads",
+ "version": "5.0.25",
+ "data": {
+ "resize": true,
+ "sdkEngineVersion": "189"
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "httpCalls": [
+ {
+ "expectedRequest": {
+ "uri": "https://a.teads.tv/prebid-server/bid-request",
+ "body": {
+ "id": "test-request-id",
+ "imp": [
+ {
+ "id": "b6321d41-3840-4cb3-baad-b6fc5b0c8553",
+ "tagid": "125",
+ "banner": {
+ "w": 300,
+ "h": 250
+ },
+ "ext": {
+ "kv": {
+ "placementId": 125
+ }
+ }
+ }
+ ],
+ "ext": {
+ "prebid": {
+ "sdk": {
+ "renderers": [
+ {
+ "name": "teads",
+ "version": "5.0.25",
+ "data": {
+ "resize": true,
+ "sdkEngineVersion": "189"
+ }
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
+ "mockResponse": {
+ "status": 200,
+ "body": {
+ "id": "39312703-e970-4914-ae56-8e7d7d1fd16b",
+ "tagid": "125",
+ "seatbid": [
+ {
+ "seat": "teads",
+ "bid": [
+ {
+ "id": "695ac187-fb3f-4d1f-8d5d-099c5e4c4d28",
+ "impid": "b6321d41-3840-4cb3-baad-b6fc5b0c8553",
+ "price": 33,
+ "nurl": "https://localhost:8080/prebid-server/win-notice?data=base64&clearingPrice=${AUCTION_PRICE}",
+ "adm": "{\"settings\":{\"values\":{\"animations\":{\"expand\":0,\"collapse\":0.5},\"placementId\":2,\"adType\":\"video\",\"placementFormat\":\"inread\",\"allowedPlayer\":\"any\",\"pageId\":2},\"components\":{\"closeButton\":{\"display\":false,\"countdown\":0},\"credits\":{\"display\":false},\"soundButton\":{\"display\":true,\"countdown\":0,\"type\":\"equalizer\"},\"label\":{\"display\":false},\"slider\":{\"closeButtonDisplay\":false}},\"behaviors\":{\"smartPosition\":{\"top\":false,\"corner\":false,\"mustBypassWhitelist\":true},\"slider\":{\"enable\":false},\"friendly\":false,\"playerClick\":\"fullscreen\",\"soundStart\":{\"type\":\"mute\"},\"soundMute\":\"threshold\",\"soundOver\":\"over\",\"launch\":\"auto\",\"videoStart\":\"threshold\",\"videoPause\":\"threshold\",\"secure\":false}},\"ads\":[{\"settings\":{\"values\":{\"animations\":{\"expand\":0,\"collapse\":0.5},\"placementId\":2,\"adType\":\"video\",\"placementFormat\":\"inread\",\"allowedPlayer\":\"any\",\"pageId\":2},\"components\":{\"closeButton\":{\"display\":false,\"countdown\":0},\"credits\":{\"display\":false},\"soundButton\":{\"display\":true,\"countdown\":0,\"type\":\"equalizer\"},\"label\":{\"display\":false},\"slider\":{\"closeButtonDisplay\":false}},\"behaviors\":{\"smartPosition\":{\"top\":false,\"corner\":false,\"mustBypassWhitelist\":true},\"slider\":{\"enable\":false},\"friendly\":false,\"playerClick\":\"fullscreen\",\"soundStart\":{\"type\":\"mute\"},\"soundMute\":\"threshold\",\"soundOver\":\"over\",\"launch\":\"auto\",\"videoStart\":\"threshold\",\"videoPause\":\"threshold\",\"secure\":false}},\"type\":\"VastXml\",\"content\":\"Teads Technology\",\"scenario_id\":971105412,\"dsp_campaign_id\":\"1\",\"dsp_creative_id\":\"1\",\"insertion_id\":1,\"placement_id\":2,\"portfolio_item_id\":971104812}],\"wigoEnabled\":false,\"placementMetadata\":{\"2\":{\"adCallTrackingUrl\":\"https://localhost:18281/track?action=adCall&pid=2&pageId=2&auctid=39312703-e970-4914-ae56-8e7d7d1fd16b__b6321d41-3840-4cb3-baad-b6fc5b0c8553__c0f2e6ba-63d0-4e20-ab41-fe0822eb65a6&vid=708ca808-ec55-4d97-ab81-9c4777e16058&hb_provider=prebid-server&hb_ad_unit_code=742d38c4-7994-4c2b-ac82-18d3a64ba3c7&env=thirdparty-inapp>c=1&gdpr_apply=false&gac=1&gap=1&ca=false&bsg=uncat&bsias=uncat&pfid=971104812&gid=1&brid=0&cid=1&rpm_reason=3&ut=1&p=5fwoPMJCquIB-txdmwQS0l79-hhHVnlTzyR9mmnBMtZRceP6-q31KzCfLpS8WTNaw_sXr-hkOFBxaxa-jyLblbVc&cts=1685971107773&cs=267268361555465193905\",\"auctionId\":\"39312703-e970-4914-ae56-8e7d7d1fd16b__b6321d41-3840-4cb3-baad-b6fc5b0c8553__c0f2e6ba-63d0-4e20-ab41-fe0822eb65a6\"}},\"viewerId\":\"708ca808-ec55-4d97-ab81-9c4777e16058\"}",
+ "adid": "1",
+ "adomain": [
+ "teads.com"
+ ],
+ "cid": "1",
+ "crid": "1",
+ "cat": [
+ "IAB1-6",
+ "IAB10-5"
+ ],
+ "ext": {
+ "prebid": {
+ "meta": {
+ "rendererName": "teads",
+ "rendererVersion": "5.0.25",
+ "rendererData": {
+ "resize": true,
+ "sdkEngineVersion": "189"
+ }
+ }
+ }
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ ],
+ "expectedBidResponses": [
+ {
+ "currency": "USD",
+ "bids": [
+ {
+ "bid": {
+ "id": "695ac187-fb3f-4d1f-8d5d-099c5e4c4d28",
+ "impid": "b6321d41-3840-4cb3-baad-b6fc5b0c8553",
+ "price": 33,
+ "nurl": "https://localhost:8080/prebid-server/win-notice?data=base64&clearingPrice=${AUCTION_PRICE}",
+ "adm": "{\"settings\":{\"values\":{\"animations\":{\"expand\":0,\"collapse\":0.5},\"placementId\":2,\"adType\":\"video\",\"placementFormat\":\"inread\",\"allowedPlayer\":\"any\",\"pageId\":2},\"components\":{\"closeButton\":{\"display\":false,\"countdown\":0},\"credits\":{\"display\":false},\"soundButton\":{\"display\":true,\"countdown\":0,\"type\":\"equalizer\"},\"label\":{\"display\":false},\"slider\":{\"closeButtonDisplay\":false}},\"behaviors\":{\"smartPosition\":{\"top\":false,\"corner\":false,\"mustBypassWhitelist\":true},\"slider\":{\"enable\":false},\"friendly\":false,\"playerClick\":\"fullscreen\",\"soundStart\":{\"type\":\"mute\"},\"soundMute\":\"threshold\",\"soundOver\":\"over\",\"launch\":\"auto\",\"videoStart\":\"threshold\",\"videoPause\":\"threshold\",\"secure\":false}},\"ads\":[{\"settings\":{\"values\":{\"animations\":{\"expand\":0,\"collapse\":0.5},\"placementId\":2,\"adType\":\"video\",\"placementFormat\":\"inread\",\"allowedPlayer\":\"any\",\"pageId\":2},\"components\":{\"closeButton\":{\"display\":false,\"countdown\":0},\"credits\":{\"display\":false},\"soundButton\":{\"display\":true,\"countdown\":0,\"type\":\"equalizer\"},\"label\":{\"display\":false},\"slider\":{\"closeButtonDisplay\":false}},\"behaviors\":{\"smartPosition\":{\"top\":false,\"corner\":false,\"mustBypassWhitelist\":true},\"slider\":{\"enable\":false},\"friendly\":false,\"playerClick\":\"fullscreen\",\"soundStart\":{\"type\":\"mute\"},\"soundMute\":\"threshold\",\"soundOver\":\"over\",\"launch\":\"auto\",\"videoStart\":\"threshold\",\"videoPause\":\"threshold\",\"secure\":false}},\"type\":\"VastXml\",\"content\":\"Teads Technology\",\"scenario_id\":971105412,\"dsp_campaign_id\":\"1\",\"dsp_creative_id\":\"1\",\"insertion_id\":1,\"placement_id\":2,\"portfolio_item_id\":971104812}],\"wigoEnabled\":false,\"placementMetadata\":{\"2\":{\"adCallTrackingUrl\":\"https://localhost:18281/track?action=adCall&pid=2&pageId=2&auctid=39312703-e970-4914-ae56-8e7d7d1fd16b__b6321d41-3840-4cb3-baad-b6fc5b0c8553__c0f2e6ba-63d0-4e20-ab41-fe0822eb65a6&vid=708ca808-ec55-4d97-ab81-9c4777e16058&hb_provider=prebid-server&hb_ad_unit_code=742d38c4-7994-4c2b-ac82-18d3a64ba3c7&env=thirdparty-inapp>c=1&gdpr_apply=false&gac=1&gap=1&ca=false&bsg=uncat&bsias=uncat&pfid=971104812&gid=1&brid=0&cid=1&rpm_reason=3&ut=1&p=5fwoPMJCquIB-txdmwQS0l79-hhHVnlTzyR9mmnBMtZRceP6-q31KzCfLpS8WTNaw_sXr-hkOFBxaxa-jyLblbVc&cts=1685971107773&cs=267268361555465193905\",\"auctionId\":\"39312703-e970-4914-ae56-8e7d7d1fd16b__b6321d41-3840-4cb3-baad-b6fc5b0c8553__c0f2e6ba-63d0-4e20-ab41-fe0822eb65a6\"}},\"viewerId\":\"708ca808-ec55-4d97-ab81-9c4777e16058\"}",
+ "adid": "1",
+ "adomain": [
+ "teads.com"
+ ],
+ "cid": "1",
+ "crid": "1",
+ "cat": [
+ "IAB1-6",
+ "IAB10-5"
+ ],
+ "ext": {
+ "prebid": {
+ "meta": {
+ "rendererName": "teads",
+ "rendererVersion": "5.0.25",
+ "rendererData": {
+ "resize": true,
+ "sdkEngineVersion": "189"
+ }
+ }
+ }
+ }
+ },
+ "type": "banner"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/adapters/teads/teadstest/exemplary/simple-video.json b/adapters/teads/teadstest/exemplary/simple-video.json
new file mode 100644
index 00000000000..814569a47e1
--- /dev/null
+++ b/adapters/teads/teadstest/exemplary/simple-video.json
@@ -0,0 +1,184 @@
+{
+ "mockBidRequest": {
+ "id": "test-request-id",
+ "imp": [
+ {
+ "id": "b6321d41-3840-4cb3-baad-b6fc5b0c8553",
+ "video": {
+ "mimes": [
+ "video/mp4"
+ ],
+ "minduration": 15,
+ "maxduration": 30,
+ "protocols": [
+ 2,
+ 3,
+ 5,
+ 6,
+ 7,
+ 8
+ ],
+ "w": 940,
+ "h": 560
+ },
+ "ext": {
+ "bidder": {
+ "placementId": 125
+ }
+ }
+ }
+ ],
+ "ext": {
+ "prebid": {
+ "sdk": {
+ "renderers": [
+ {
+ "name": "teads",
+ "version": "5.0.25",
+ "data": {
+ "resize": true,
+ "sdkEngineVersion": "189"
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "httpCalls": [
+ {
+ "expectedRequest": {
+ "uri": "https://a.teads.tv/prebid-server/bid-request",
+ "body": {
+ "id": "test-request-id",
+ "imp": [
+ {
+ "id": "b6321d41-3840-4cb3-baad-b6fc5b0c8553",
+ "tagid": "125",
+ "video": {
+ "mimes": [
+ "video/mp4"
+ ],
+ "minduration": 15,
+ "maxduration": 30,
+ "protocols": [
+ 2,
+ 3,
+ 5,
+ 6,
+ 7,
+ 8
+ ],
+ "w": 940,
+ "h": 560
+ },
+ "ext": {
+ "kv": {
+ "placementId": 125
+ }
+ }
+ }
+ ],
+ "ext": {
+ "prebid": {
+ "sdk": {
+ "renderers": [
+ {
+ "name": "teads",
+ "version": "5.0.25",
+ "data": {
+ "resize": true,
+ "sdkEngineVersion": "189"
+ }
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
+ "mockResponse": {
+ "status": 200,
+ "body": {
+ "id": "39312703-e970-4914-ae56-8e7d7d1fd16b",
+ "tagid": "125",
+ "seatbid": [
+ {
+ "seat": "teads",
+ "bid": [
+ {
+ "id": "695ac187-fb3f-4d1f-8d5d-099c5e4c4d28",
+ "impid": "b6321d41-3840-4cb3-baad-b6fc5b0c8553",
+ "price": 33,
+ "nurl": "https://localhost:8080/prebid-server/win-notice?data=base64&clearingPrice=${AUCTION_PRICE}",
+ "adm": "{\"settings\":{\"values\":{\"animations\":{\"expand\":0,\"collapse\":0.5},\"placementId\":2,\"adType\":\"video\",\"placementFormat\":\"inread\",\"allowedPlayer\":\"any\",\"pageId\":2},\"components\":{\"closeButton\":{\"display\":false,\"countdown\":0},\"credits\":{\"display\":false},\"soundButton\":{\"display\":true,\"countdown\":0,\"type\":\"equalizer\"},\"label\":{\"display\":false},\"slider\":{\"closeButtonDisplay\":false}},\"behaviors\":{\"smartPosition\":{\"top\":false,\"corner\":false,\"mustBypassWhitelist\":true},\"slider\":{\"enable\":false},\"friendly\":false,\"playerClick\":\"fullscreen\",\"soundStart\":{\"type\":\"mute\"},\"soundMute\":\"threshold\",\"soundOver\":\"over\",\"launch\":\"auto\",\"videoStart\":\"threshold\",\"videoPause\":\"threshold\",\"secure\":false}},\"ads\":[{\"settings\":{\"values\":{\"animations\":{\"expand\":0,\"collapse\":0.5},\"placementId\":2,\"adType\":\"video\",\"placementFormat\":\"inread\",\"allowedPlayer\":\"any\",\"pageId\":2},\"components\":{\"closeButton\":{\"display\":false,\"countdown\":0},\"credits\":{\"display\":false},\"soundButton\":{\"display\":true,\"countdown\":0,\"type\":\"equalizer\"},\"label\":{\"display\":false},\"slider\":{\"closeButtonDisplay\":false}},\"behaviors\":{\"smartPosition\":{\"top\":false,\"corner\":false,\"mustBypassWhitelist\":true},\"slider\":{\"enable\":false},\"friendly\":false,\"playerClick\":\"fullscreen\",\"soundStart\":{\"type\":\"mute\"},\"soundMute\":\"threshold\",\"soundOver\":\"over\",\"launch\":\"auto\",\"videoStart\":\"threshold\",\"videoPause\":\"threshold\",\"secure\":false}},\"type\":\"VastXml\",\"content\":\"Teads Technology\",\"scenario_id\":971105412,\"dsp_campaign_id\":\"1\",\"dsp_creative_id\":\"1\",\"insertion_id\":1,\"placement_id\":2,\"portfolio_item_id\":971104812}],\"wigoEnabled\":false,\"placementMetadata\":{\"2\":{\"adCallTrackingUrl\":\"https://localhost:18281/track?action=adCall&pid=2&pageId=2&auctid=39312703-e970-4914-ae56-8e7d7d1fd16b__b6321d41-3840-4cb3-baad-b6fc5b0c8553__c0f2e6ba-63d0-4e20-ab41-fe0822eb65a6&vid=708ca808-ec55-4d97-ab81-9c4777e16058&hb_provider=prebid-server&hb_ad_unit_code=742d38c4-7994-4c2b-ac82-18d3a64ba3c7&env=thirdparty-inapp>c=1&gdpr_apply=false&gac=1&gap=1&ca=false&bsg=uncat&bsias=uncat&pfid=971104812&gid=1&brid=0&cid=1&rpm_reason=3&ut=1&p=5fwoPMJCquIB-txdmwQS0l79-hhHVnlTzyR9mmnBMtZRceP6-q31KzCfLpS8WTNaw_sXr-hkOFBxaxa-jyLblbVc&cts=1685971107773&cs=267268361555465193905\",\"auctionId\":\"39312703-e970-4914-ae56-8e7d7d1fd16b__b6321d41-3840-4cb3-baad-b6fc5b0c8553__c0f2e6ba-63d0-4e20-ab41-fe0822eb65a6\"}},\"viewerId\":\"708ca808-ec55-4d97-ab81-9c4777e16058\"}",
+ "adid": "1",
+ "adomain": [
+ "teads.com"
+ ],
+ "cid": "1",
+ "crid": "1",
+ "cat": [
+ "IAB1-6",
+ "IAB10-5"
+ ],
+ "ext": {
+ "prebid": {
+ "meta": {
+ "rendererName": "teads",
+ "rendererVersion": "5.0.25",
+ "rendererData": {
+ "resize": true,
+ "sdkEngineVersion": "189"
+ }
+ }
+ }
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ ],
+ "expectedBidResponses": [
+ {
+ "currency": "USD",
+ "bids": [
+ {
+ "bid": {
+ "id": "695ac187-fb3f-4d1f-8d5d-099c5e4c4d28",
+ "impid": "b6321d41-3840-4cb3-baad-b6fc5b0c8553",
+ "price": 33,
+ "nurl": "https://localhost:8080/prebid-server/win-notice?data=base64&clearingPrice=${AUCTION_PRICE}",
+ "adm": "{\"settings\":{\"values\":{\"animations\":{\"expand\":0,\"collapse\":0.5},\"placementId\":2,\"adType\":\"video\",\"placementFormat\":\"inread\",\"allowedPlayer\":\"any\",\"pageId\":2},\"components\":{\"closeButton\":{\"display\":false,\"countdown\":0},\"credits\":{\"display\":false},\"soundButton\":{\"display\":true,\"countdown\":0,\"type\":\"equalizer\"},\"label\":{\"display\":false},\"slider\":{\"closeButtonDisplay\":false}},\"behaviors\":{\"smartPosition\":{\"top\":false,\"corner\":false,\"mustBypassWhitelist\":true},\"slider\":{\"enable\":false},\"friendly\":false,\"playerClick\":\"fullscreen\",\"soundStart\":{\"type\":\"mute\"},\"soundMute\":\"threshold\",\"soundOver\":\"over\",\"launch\":\"auto\",\"videoStart\":\"threshold\",\"videoPause\":\"threshold\",\"secure\":false}},\"ads\":[{\"settings\":{\"values\":{\"animations\":{\"expand\":0,\"collapse\":0.5},\"placementId\":2,\"adType\":\"video\",\"placementFormat\":\"inread\",\"allowedPlayer\":\"any\",\"pageId\":2},\"components\":{\"closeButton\":{\"display\":false,\"countdown\":0},\"credits\":{\"display\":false},\"soundButton\":{\"display\":true,\"countdown\":0,\"type\":\"equalizer\"},\"label\":{\"display\":false},\"slider\":{\"closeButtonDisplay\":false}},\"behaviors\":{\"smartPosition\":{\"top\":false,\"corner\":false,\"mustBypassWhitelist\":true},\"slider\":{\"enable\":false},\"friendly\":false,\"playerClick\":\"fullscreen\",\"soundStart\":{\"type\":\"mute\"},\"soundMute\":\"threshold\",\"soundOver\":\"over\",\"launch\":\"auto\",\"videoStart\":\"threshold\",\"videoPause\":\"threshold\",\"secure\":false}},\"type\":\"VastXml\",\"content\":\"Teads Technology\",\"scenario_id\":971105412,\"dsp_campaign_id\":\"1\",\"dsp_creative_id\":\"1\",\"insertion_id\":1,\"placement_id\":2,\"portfolio_item_id\":971104812}],\"wigoEnabled\":false,\"placementMetadata\":{\"2\":{\"adCallTrackingUrl\":\"https://localhost:18281/track?action=adCall&pid=2&pageId=2&auctid=39312703-e970-4914-ae56-8e7d7d1fd16b__b6321d41-3840-4cb3-baad-b6fc5b0c8553__c0f2e6ba-63d0-4e20-ab41-fe0822eb65a6&vid=708ca808-ec55-4d97-ab81-9c4777e16058&hb_provider=prebid-server&hb_ad_unit_code=742d38c4-7994-4c2b-ac82-18d3a64ba3c7&env=thirdparty-inapp>c=1&gdpr_apply=false&gac=1&gap=1&ca=false&bsg=uncat&bsias=uncat&pfid=971104812&gid=1&brid=0&cid=1&rpm_reason=3&ut=1&p=5fwoPMJCquIB-txdmwQS0l79-hhHVnlTzyR9mmnBMtZRceP6-q31KzCfLpS8WTNaw_sXr-hkOFBxaxa-jyLblbVc&cts=1685971107773&cs=267268361555465193905\",\"auctionId\":\"39312703-e970-4914-ae56-8e7d7d1fd16b__b6321d41-3840-4cb3-baad-b6fc5b0c8553__c0f2e6ba-63d0-4e20-ab41-fe0822eb65a6\"}},\"viewerId\":\"708ca808-ec55-4d97-ab81-9c4777e16058\"}",
+ "adid": "1",
+ "adomain": [
+ "teads.com"
+ ],
+ "cid": "1",
+ "crid": "1",
+ "cat": [
+ "IAB1-6",
+ "IAB10-5"
+ ],
+ "ext": {
+ "prebid": {
+ "meta": {
+ "rendererName": "teads",
+ "rendererVersion": "5.0.25",
+ "rendererData": {
+ "resize": true,
+ "sdkEngineVersion": "189"
+ }
+ }
+ }
+ }
+ },
+ "type": "video"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/adapters/teads/teadstest/supplemental/bid-id-does-not-match.json b/adapters/teads/teadstest/supplemental/bid-id-does-not-match.json
new file mode 100644
index 00000000000..384e72fb537
--- /dev/null
+++ b/adapters/teads/teadstest/supplemental/bid-id-does-not-match.json
@@ -0,0 +1,152 @@
+{
+ "mockBidRequest": {
+ "id": "test-request-id",
+ "imp": [
+ {
+ "id": "b6321d41-3840-4cb3-baad-b6fc5b0c8553",
+ "video": {
+ "mimes": [
+ "video/mp4"
+ ],
+ "minduration": 15,
+ "maxduration": 30,
+ "protocols": [
+ 2,
+ 3,
+ 5,
+ 6,
+ 7,
+ 8
+ ],
+ "w": 940,
+ "h": 560
+ },
+ "ext": {
+ "bidder": {
+ "placementId": 125
+ }
+ }
+ }
+ ],
+ "ext": {
+ "prebid": {
+ "sdk": {
+ "renderers": [
+ {
+ "name": "teads",
+ "version": "5.0.25",
+ "data": {
+ "resize": true,
+ "sdkEngineVersion": "189"
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "httpCalls": [
+ {
+ "expectedRequest": {
+ "uri": "https://a.teads.tv/prebid-server/bid-request",
+ "body": {
+ "id": "test-request-id",
+ "imp": [
+ {
+ "id": "b6321d41-3840-4cb3-baad-b6fc5b0c8553",
+ "tagid": "125",
+ "video": {
+ "mimes": [
+ "video/mp4"
+ ],
+ "minduration": 15,
+ "maxduration": 30,
+ "protocols": [
+ 2,
+ 3,
+ 5,
+ 6,
+ 7,
+ 8
+ ],
+ "w": 940,
+ "h": 560
+ },
+ "ext": {
+ "kv": {
+ "placementId": 125
+ }
+ }
+ }
+ ],
+ "ext": {
+ "prebid": {
+ "sdk": {
+ "renderers": [
+ {
+ "name": "teads",
+ "version": "5.0.25",
+ "data": {
+ "resize": true,
+ "sdkEngineVersion": "189"
+ }
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
+ "mockResponse": {
+ "status": 200,
+ "body": {
+ "id": "39312703-e970-4914-ae56-8e7d7d1fd16b",
+ "cur": "EUR",
+ "tagid": "125",
+ "seatbid": [
+ {
+ "seat": "teads",
+ "bid": [
+ {
+ "id": "695ac187-fb3f-4d1f-8d5d-099c5e4c4d28",
+ "impid": "does-not-match",
+ "price": 33,
+ "nurl": "https://localhost:8080/prebid-server/win-notice?data=base64&clearingPrice=${AUCTION_PRICE}",
+ "adm": "{\"settings\":{\"values\":{\"animations\":{\"expand\":0,\"collapse\":0.5},\"placementId\":2,\"adType\":\"video\",\"placementFormat\":\"inread\",\"allowedPlayer\":\"any\",\"pageId\":2},\"components\":{\"closeButton\":{\"display\":false,\"countdown\":0},\"credits\":{\"display\":false},\"soundButton\":{\"display\":true,\"countdown\":0,\"type\":\"equalizer\"},\"label\":{\"display\":false},\"slider\":{\"closeButtonDisplay\":false}},\"behaviors\":{\"smartPosition\":{\"top\":false,\"corner\":false,\"mustBypassWhitelist\":true},\"slider\":{\"enable\":false},\"friendly\":false,\"playerClick\":\"fullscreen\",\"soundStart\":{\"type\":\"mute\"},\"soundMute\":\"threshold\",\"soundOver\":\"over\",\"launch\":\"auto\",\"videoStart\":\"threshold\",\"videoPause\":\"threshold\",\"secure\":false}},\"ads\":[{\"settings\":{\"values\":{\"animations\":{\"expand\":0,\"collapse\":0.5},\"placementId\":2,\"adType\":\"video\",\"placementFormat\":\"inread\",\"allowedPlayer\":\"any\",\"pageId\":2},\"components\":{\"closeButton\":{\"display\":false,\"countdown\":0},\"credits\":{\"display\":false},\"soundButton\":{\"display\":true,\"countdown\":0,\"type\":\"equalizer\"},\"label\":{\"display\":false},\"slider\":{\"closeButtonDisplay\":false}},\"behaviors\":{\"smartPosition\":{\"top\":false,\"corner\":false,\"mustBypassWhitelist\":true},\"slider\":{\"enable\":false},\"friendly\":false,\"playerClick\":\"fullscreen\",\"soundStart\":{\"type\":\"mute\"},\"soundMute\":\"threshold\",\"soundOver\":\"over\",\"launch\":\"auto\",\"videoStart\":\"threshold\",\"videoPause\":\"threshold\",\"secure\":false}},\"type\":\"VastXml\",\"content\":\"Teads Technology\",\"scenario_id\":971105412,\"dsp_campaign_id\":\"1\",\"dsp_creative_id\":\"1\",\"insertion_id\":1,\"placement_id\":2,\"portfolio_item_id\":971104812}],\"wigoEnabled\":false,\"placementMetadata\":{\"2\":{\"adCallTrackingUrl\":\"https://localhost:18281/track?action=adCall&pid=2&pageId=2&auctid=39312703-e970-4914-ae56-8e7d7d1fd16b__b6321d41-3840-4cb3-baad-b6fc5b0c8553__c0f2e6ba-63d0-4e20-ab41-fe0822eb65a6&vid=708ca808-ec55-4d97-ab81-9c4777e16058&hb_provider=prebid-server&hb_ad_unit_code=742d38c4-7994-4c2b-ac82-18d3a64ba3c7&env=thirdparty-inapp>c=1&gdpr_apply=false&gac=1&gap=1&ca=false&bsg=uncat&bsias=uncat&pfid=971104812&gid=1&brid=0&cid=1&rpm_reason=3&ut=1&p=5fwoPMJCquIB-txdmwQS0l79-hhHVnlTzyR9mmnBMtZRceP6-q31KzCfLpS8WTNaw_sXr-hkOFBxaxa-jyLblbVc&cts=1685971107773&cs=267268361555465193905\",\"auctionId\":\"39312703-e970-4914-ae56-8e7d7d1fd16b__b6321d41-3840-4cb3-baad-b6fc5b0c8553__c0f2e6ba-63d0-4e20-ab41-fe0822eb65a6\"}},\"viewerId\":\"708ca808-ec55-4d97-ab81-9c4777e16058\"}",
+ "adid": "1",
+ "adomain": [
+ "teads.com"
+ ],
+ "cid": "1",
+ "crid": "1",
+ "cat": [
+ "IAB1-6",
+ "IAB10-5"
+ ],
+ "ext": {
+ "prebid": {
+ "meta": {
+ "rendererName": "teads",
+ "rendererVersion": "5.0.25",
+ "rendererData": {
+ "resize": true,
+ "sdkEngineVersion": "189"
+ }
+ }
+ }
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ ],
+ "expectedMakeBidsErrors": [
+ {
+ "value": "Imp ids were not equals",
+ "comparison": "literal"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/adapters/teads/teadstest/supplemental/currency-empty-string.json b/adapters/teads/teadstest/supplemental/currency-empty-string.json
new file mode 100644
index 00000000000..5f0d700b14b
--- /dev/null
+++ b/adapters/teads/teadstest/supplemental/currency-empty-string.json
@@ -0,0 +1,185 @@
+{
+ "mockBidRequest": {
+ "id": "test-request-id",
+ "imp": [
+ {
+ "id": "b6321d41-3840-4cb3-baad-b6fc5b0c8553",
+ "video": {
+ "mimes": [
+ "video/mp4"
+ ],
+ "minduration": 15,
+ "maxduration": 30,
+ "protocols": [
+ 2,
+ 3,
+ 5,
+ 6,
+ 7,
+ 8
+ ],
+ "w": 940,
+ "h": 560
+ },
+ "ext": {
+ "bidder": {
+ "placementId": 125
+ }
+ }
+ }
+ ],
+ "ext": {
+ "prebid": {
+ "sdk": {
+ "renderers": [
+ {
+ "name": "teads",
+ "version": "5.0.25",
+ "data": {
+ "resize": true,
+ "sdkEngineVersion": "189"
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "httpCalls": [
+ {
+ "expectedRequest": {
+ "uri": "https://a.teads.tv/prebid-server/bid-request",
+ "body": {
+ "id": "test-request-id",
+ "imp": [
+ {
+ "id": "b6321d41-3840-4cb3-baad-b6fc5b0c8553",
+ "tagid": "125",
+ "video": {
+ "mimes": [
+ "video/mp4"
+ ],
+ "minduration": 15,
+ "maxduration": 30,
+ "protocols": [
+ 2,
+ 3,
+ 5,
+ 6,
+ 7,
+ 8
+ ],
+ "w": 940,
+ "h": 560
+ },
+ "ext": {
+ "kv": {
+ "placementId": 125
+ }
+ }
+ }
+ ],
+ "ext": {
+ "prebid": {
+ "sdk": {
+ "renderers": [
+ {
+ "name": "teads",
+ "version": "5.0.25",
+ "data": {
+ "resize": true,
+ "sdkEngineVersion": "189"
+ }
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
+ "mockResponse": {
+ "status": 200,
+ "body": {
+ "id": "39312703-e970-4914-ae56-8e7d7d1fd16b",
+ "cur": "EUR",
+ "tagid": "125",
+ "seatbid": [
+ {
+ "seat": "teads",
+ "bid": [
+ {
+ "id": "695ac187-fb3f-4d1f-8d5d-099c5e4c4d28",
+ "impid": "b6321d41-3840-4cb3-baad-b6fc5b0c8553",
+ "price": 33,
+ "nurl": "https://localhost:8080/prebid-server/win-notice?data=base64&clearingPrice=${AUCTION_PRICE}",
+ "adm": "{\"settings\":{\"values\":{\"animations\":{\"expand\":0,\"collapse\":0.5},\"placementId\":2,\"adType\":\"video\",\"placementFormat\":\"inread\",\"allowedPlayer\":\"any\",\"pageId\":2},\"components\":{\"closeButton\":{\"display\":false,\"countdown\":0},\"credits\":{\"display\":false},\"soundButton\":{\"display\":true,\"countdown\":0,\"type\":\"equalizer\"},\"label\":{\"display\":false},\"slider\":{\"closeButtonDisplay\":false}},\"behaviors\":{\"smartPosition\":{\"top\":false,\"corner\":false,\"mustBypassWhitelist\":true},\"slider\":{\"enable\":false},\"friendly\":false,\"playerClick\":\"fullscreen\",\"soundStart\":{\"type\":\"mute\"},\"soundMute\":\"threshold\",\"soundOver\":\"over\",\"launch\":\"auto\",\"videoStart\":\"threshold\",\"videoPause\":\"threshold\",\"secure\":false}},\"ads\":[{\"settings\":{\"values\":{\"animations\":{\"expand\":0,\"collapse\":0.5},\"placementId\":2,\"adType\":\"video\",\"placementFormat\":\"inread\",\"allowedPlayer\":\"any\",\"pageId\":2},\"components\":{\"closeButton\":{\"display\":false,\"countdown\":0},\"credits\":{\"display\":false},\"soundButton\":{\"display\":true,\"countdown\":0,\"type\":\"equalizer\"},\"label\":{\"display\":false},\"slider\":{\"closeButtonDisplay\":false}},\"behaviors\":{\"smartPosition\":{\"top\":false,\"corner\":false,\"mustBypassWhitelist\":true},\"slider\":{\"enable\":false},\"friendly\":false,\"playerClick\":\"fullscreen\",\"soundStart\":{\"type\":\"mute\"},\"soundMute\":\"threshold\",\"soundOver\":\"over\",\"launch\":\"auto\",\"videoStart\":\"threshold\",\"videoPause\":\"threshold\",\"secure\":false}},\"type\":\"VastXml\",\"content\":\"Teads Technology\",\"scenario_id\":971105412,\"dsp_campaign_id\":\"1\",\"dsp_creative_id\":\"1\",\"insertion_id\":1,\"placement_id\":2,\"portfolio_item_id\":971104812}],\"wigoEnabled\":false,\"placementMetadata\":{\"2\":{\"adCallTrackingUrl\":\"https://localhost:18281/track?action=adCall&pid=2&pageId=2&auctid=39312703-e970-4914-ae56-8e7d7d1fd16b__b6321d41-3840-4cb3-baad-b6fc5b0c8553__c0f2e6ba-63d0-4e20-ab41-fe0822eb65a6&vid=708ca808-ec55-4d97-ab81-9c4777e16058&hb_provider=prebid-server&hb_ad_unit_code=742d38c4-7994-4c2b-ac82-18d3a64ba3c7&env=thirdparty-inapp>c=1&gdpr_apply=false&gac=1&gap=1&ca=false&bsg=uncat&bsias=uncat&pfid=971104812&gid=1&brid=0&cid=1&rpm_reason=3&ut=1&p=5fwoPMJCquIB-txdmwQS0l79-hhHVnlTzyR9mmnBMtZRceP6-q31KzCfLpS8WTNaw_sXr-hkOFBxaxa-jyLblbVc&cts=1685971107773&cs=267268361555465193905\",\"auctionId\":\"39312703-e970-4914-ae56-8e7d7d1fd16b__b6321d41-3840-4cb3-baad-b6fc5b0c8553__c0f2e6ba-63d0-4e20-ab41-fe0822eb65a6\"}},\"viewerId\":\"708ca808-ec55-4d97-ab81-9c4777e16058\"}",
+ "adid": "1",
+ "adomain": [
+ "teads.com"
+ ],
+ "cid": "1",
+ "crid": "1",
+ "cat": [
+ "IAB1-6",
+ "IAB10-5"
+ ],
+ "ext": {
+ "prebid": {
+ "meta": {
+ "rendererName": "teads",
+ "rendererVersion": "5.0.25",
+ "rendererData": {
+ "resize": true,
+ "sdkEngineVersion": "189"
+ }
+ }
+ }
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ ],
+ "expectedBidResponses": [
+ {
+ "currency": "EUR",
+ "bids": [
+ {
+ "bid": {
+ "id": "695ac187-fb3f-4d1f-8d5d-099c5e4c4d28",
+ "impid": "b6321d41-3840-4cb3-baad-b6fc5b0c8553",
+ "price": 33,
+ "nurl": "https://localhost:8080/prebid-server/win-notice?data=base64&clearingPrice=${AUCTION_PRICE}",
+ "adm": "{\"settings\":{\"values\":{\"animations\":{\"expand\":0,\"collapse\":0.5},\"placementId\":2,\"adType\":\"video\",\"placementFormat\":\"inread\",\"allowedPlayer\":\"any\",\"pageId\":2},\"components\":{\"closeButton\":{\"display\":false,\"countdown\":0},\"credits\":{\"display\":false},\"soundButton\":{\"display\":true,\"countdown\":0,\"type\":\"equalizer\"},\"label\":{\"display\":false},\"slider\":{\"closeButtonDisplay\":false}},\"behaviors\":{\"smartPosition\":{\"top\":false,\"corner\":false,\"mustBypassWhitelist\":true},\"slider\":{\"enable\":false},\"friendly\":false,\"playerClick\":\"fullscreen\",\"soundStart\":{\"type\":\"mute\"},\"soundMute\":\"threshold\",\"soundOver\":\"over\",\"launch\":\"auto\",\"videoStart\":\"threshold\",\"videoPause\":\"threshold\",\"secure\":false}},\"ads\":[{\"settings\":{\"values\":{\"animations\":{\"expand\":0,\"collapse\":0.5},\"placementId\":2,\"adType\":\"video\",\"placementFormat\":\"inread\",\"allowedPlayer\":\"any\",\"pageId\":2},\"components\":{\"closeButton\":{\"display\":false,\"countdown\":0},\"credits\":{\"display\":false},\"soundButton\":{\"display\":true,\"countdown\":0,\"type\":\"equalizer\"},\"label\":{\"display\":false},\"slider\":{\"closeButtonDisplay\":false}},\"behaviors\":{\"smartPosition\":{\"top\":false,\"corner\":false,\"mustBypassWhitelist\":true},\"slider\":{\"enable\":false},\"friendly\":false,\"playerClick\":\"fullscreen\",\"soundStart\":{\"type\":\"mute\"},\"soundMute\":\"threshold\",\"soundOver\":\"over\",\"launch\":\"auto\",\"videoStart\":\"threshold\",\"videoPause\":\"threshold\",\"secure\":false}},\"type\":\"VastXml\",\"content\":\"Teads Technology\",\"scenario_id\":971105412,\"dsp_campaign_id\":\"1\",\"dsp_creative_id\":\"1\",\"insertion_id\":1,\"placement_id\":2,\"portfolio_item_id\":971104812}],\"wigoEnabled\":false,\"placementMetadata\":{\"2\":{\"adCallTrackingUrl\":\"https://localhost:18281/track?action=adCall&pid=2&pageId=2&auctid=39312703-e970-4914-ae56-8e7d7d1fd16b__b6321d41-3840-4cb3-baad-b6fc5b0c8553__c0f2e6ba-63d0-4e20-ab41-fe0822eb65a6&vid=708ca808-ec55-4d97-ab81-9c4777e16058&hb_provider=prebid-server&hb_ad_unit_code=742d38c4-7994-4c2b-ac82-18d3a64ba3c7&env=thirdparty-inapp>c=1&gdpr_apply=false&gac=1&gap=1&ca=false&bsg=uncat&bsias=uncat&pfid=971104812&gid=1&brid=0&cid=1&rpm_reason=3&ut=1&p=5fwoPMJCquIB-txdmwQS0l79-hhHVnlTzyR9mmnBMtZRceP6-q31KzCfLpS8WTNaw_sXr-hkOFBxaxa-jyLblbVc&cts=1685971107773&cs=267268361555465193905\",\"auctionId\":\"39312703-e970-4914-ae56-8e7d7d1fd16b__b6321d41-3840-4cb3-baad-b6fc5b0c8553__c0f2e6ba-63d0-4e20-ab41-fe0822eb65a6\"}},\"viewerId\":\"708ca808-ec55-4d97-ab81-9c4777e16058\"}",
+ "adid": "1",
+ "adomain": [
+ "teads.com"
+ ],
+ "cid": "1",
+ "crid": "1",
+ "cat": [
+ "IAB1-6",
+ "IAB10-5"
+ ],
+ "ext": {
+ "prebid": {
+ "meta": {
+ "rendererName": "teads",
+ "rendererVersion": "5.0.25",
+ "rendererData": {
+ "resize": true,
+ "sdkEngineVersion": "189"
+ }
+ }
+ }
+ }
+ },
+ "type": "video"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/adapters/teads/teadstest/supplemental/no-impression-response.json b/adapters/teads/teadstest/supplemental/no-impression-response.json
new file mode 100644
index 00000000000..814569a47e1
--- /dev/null
+++ b/adapters/teads/teadstest/supplemental/no-impression-response.json
@@ -0,0 +1,184 @@
+{
+ "mockBidRequest": {
+ "id": "test-request-id",
+ "imp": [
+ {
+ "id": "b6321d41-3840-4cb3-baad-b6fc5b0c8553",
+ "video": {
+ "mimes": [
+ "video/mp4"
+ ],
+ "minduration": 15,
+ "maxduration": 30,
+ "protocols": [
+ 2,
+ 3,
+ 5,
+ 6,
+ 7,
+ 8
+ ],
+ "w": 940,
+ "h": 560
+ },
+ "ext": {
+ "bidder": {
+ "placementId": 125
+ }
+ }
+ }
+ ],
+ "ext": {
+ "prebid": {
+ "sdk": {
+ "renderers": [
+ {
+ "name": "teads",
+ "version": "5.0.25",
+ "data": {
+ "resize": true,
+ "sdkEngineVersion": "189"
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "httpCalls": [
+ {
+ "expectedRequest": {
+ "uri": "https://a.teads.tv/prebid-server/bid-request",
+ "body": {
+ "id": "test-request-id",
+ "imp": [
+ {
+ "id": "b6321d41-3840-4cb3-baad-b6fc5b0c8553",
+ "tagid": "125",
+ "video": {
+ "mimes": [
+ "video/mp4"
+ ],
+ "minduration": 15,
+ "maxduration": 30,
+ "protocols": [
+ 2,
+ 3,
+ 5,
+ 6,
+ 7,
+ 8
+ ],
+ "w": 940,
+ "h": 560
+ },
+ "ext": {
+ "kv": {
+ "placementId": 125
+ }
+ }
+ }
+ ],
+ "ext": {
+ "prebid": {
+ "sdk": {
+ "renderers": [
+ {
+ "name": "teads",
+ "version": "5.0.25",
+ "data": {
+ "resize": true,
+ "sdkEngineVersion": "189"
+ }
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
+ "mockResponse": {
+ "status": 200,
+ "body": {
+ "id": "39312703-e970-4914-ae56-8e7d7d1fd16b",
+ "tagid": "125",
+ "seatbid": [
+ {
+ "seat": "teads",
+ "bid": [
+ {
+ "id": "695ac187-fb3f-4d1f-8d5d-099c5e4c4d28",
+ "impid": "b6321d41-3840-4cb3-baad-b6fc5b0c8553",
+ "price": 33,
+ "nurl": "https://localhost:8080/prebid-server/win-notice?data=base64&clearingPrice=${AUCTION_PRICE}",
+ "adm": "{\"settings\":{\"values\":{\"animations\":{\"expand\":0,\"collapse\":0.5},\"placementId\":2,\"adType\":\"video\",\"placementFormat\":\"inread\",\"allowedPlayer\":\"any\",\"pageId\":2},\"components\":{\"closeButton\":{\"display\":false,\"countdown\":0},\"credits\":{\"display\":false},\"soundButton\":{\"display\":true,\"countdown\":0,\"type\":\"equalizer\"},\"label\":{\"display\":false},\"slider\":{\"closeButtonDisplay\":false}},\"behaviors\":{\"smartPosition\":{\"top\":false,\"corner\":false,\"mustBypassWhitelist\":true},\"slider\":{\"enable\":false},\"friendly\":false,\"playerClick\":\"fullscreen\",\"soundStart\":{\"type\":\"mute\"},\"soundMute\":\"threshold\",\"soundOver\":\"over\",\"launch\":\"auto\",\"videoStart\":\"threshold\",\"videoPause\":\"threshold\",\"secure\":false}},\"ads\":[{\"settings\":{\"values\":{\"animations\":{\"expand\":0,\"collapse\":0.5},\"placementId\":2,\"adType\":\"video\",\"placementFormat\":\"inread\",\"allowedPlayer\":\"any\",\"pageId\":2},\"components\":{\"closeButton\":{\"display\":false,\"countdown\":0},\"credits\":{\"display\":false},\"soundButton\":{\"display\":true,\"countdown\":0,\"type\":\"equalizer\"},\"label\":{\"display\":false},\"slider\":{\"closeButtonDisplay\":false}},\"behaviors\":{\"smartPosition\":{\"top\":false,\"corner\":false,\"mustBypassWhitelist\":true},\"slider\":{\"enable\":false},\"friendly\":false,\"playerClick\":\"fullscreen\",\"soundStart\":{\"type\":\"mute\"},\"soundMute\":\"threshold\",\"soundOver\":\"over\",\"launch\":\"auto\",\"videoStart\":\"threshold\",\"videoPause\":\"threshold\",\"secure\":false}},\"type\":\"VastXml\",\"content\":\"Teads Technology\",\"scenario_id\":971105412,\"dsp_campaign_id\":\"1\",\"dsp_creative_id\":\"1\",\"insertion_id\":1,\"placement_id\":2,\"portfolio_item_id\":971104812}],\"wigoEnabled\":false,\"placementMetadata\":{\"2\":{\"adCallTrackingUrl\":\"https://localhost:18281/track?action=adCall&pid=2&pageId=2&auctid=39312703-e970-4914-ae56-8e7d7d1fd16b__b6321d41-3840-4cb3-baad-b6fc5b0c8553__c0f2e6ba-63d0-4e20-ab41-fe0822eb65a6&vid=708ca808-ec55-4d97-ab81-9c4777e16058&hb_provider=prebid-server&hb_ad_unit_code=742d38c4-7994-4c2b-ac82-18d3a64ba3c7&env=thirdparty-inapp>c=1&gdpr_apply=false&gac=1&gap=1&ca=false&bsg=uncat&bsias=uncat&pfid=971104812&gid=1&brid=0&cid=1&rpm_reason=3&ut=1&p=5fwoPMJCquIB-txdmwQS0l79-hhHVnlTzyR9mmnBMtZRceP6-q31KzCfLpS8WTNaw_sXr-hkOFBxaxa-jyLblbVc&cts=1685971107773&cs=267268361555465193905\",\"auctionId\":\"39312703-e970-4914-ae56-8e7d7d1fd16b__b6321d41-3840-4cb3-baad-b6fc5b0c8553__c0f2e6ba-63d0-4e20-ab41-fe0822eb65a6\"}},\"viewerId\":\"708ca808-ec55-4d97-ab81-9c4777e16058\"}",
+ "adid": "1",
+ "adomain": [
+ "teads.com"
+ ],
+ "cid": "1",
+ "crid": "1",
+ "cat": [
+ "IAB1-6",
+ "IAB10-5"
+ ],
+ "ext": {
+ "prebid": {
+ "meta": {
+ "rendererName": "teads",
+ "rendererVersion": "5.0.25",
+ "rendererData": {
+ "resize": true,
+ "sdkEngineVersion": "189"
+ }
+ }
+ }
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ ],
+ "expectedBidResponses": [
+ {
+ "currency": "USD",
+ "bids": [
+ {
+ "bid": {
+ "id": "695ac187-fb3f-4d1f-8d5d-099c5e4c4d28",
+ "impid": "b6321d41-3840-4cb3-baad-b6fc5b0c8553",
+ "price": 33,
+ "nurl": "https://localhost:8080/prebid-server/win-notice?data=base64&clearingPrice=${AUCTION_PRICE}",
+ "adm": "{\"settings\":{\"values\":{\"animations\":{\"expand\":0,\"collapse\":0.5},\"placementId\":2,\"adType\":\"video\",\"placementFormat\":\"inread\",\"allowedPlayer\":\"any\",\"pageId\":2},\"components\":{\"closeButton\":{\"display\":false,\"countdown\":0},\"credits\":{\"display\":false},\"soundButton\":{\"display\":true,\"countdown\":0,\"type\":\"equalizer\"},\"label\":{\"display\":false},\"slider\":{\"closeButtonDisplay\":false}},\"behaviors\":{\"smartPosition\":{\"top\":false,\"corner\":false,\"mustBypassWhitelist\":true},\"slider\":{\"enable\":false},\"friendly\":false,\"playerClick\":\"fullscreen\",\"soundStart\":{\"type\":\"mute\"},\"soundMute\":\"threshold\",\"soundOver\":\"over\",\"launch\":\"auto\",\"videoStart\":\"threshold\",\"videoPause\":\"threshold\",\"secure\":false}},\"ads\":[{\"settings\":{\"values\":{\"animations\":{\"expand\":0,\"collapse\":0.5},\"placementId\":2,\"adType\":\"video\",\"placementFormat\":\"inread\",\"allowedPlayer\":\"any\",\"pageId\":2},\"components\":{\"closeButton\":{\"display\":false,\"countdown\":0},\"credits\":{\"display\":false},\"soundButton\":{\"display\":true,\"countdown\":0,\"type\":\"equalizer\"},\"label\":{\"display\":false},\"slider\":{\"closeButtonDisplay\":false}},\"behaviors\":{\"smartPosition\":{\"top\":false,\"corner\":false,\"mustBypassWhitelist\":true},\"slider\":{\"enable\":false},\"friendly\":false,\"playerClick\":\"fullscreen\",\"soundStart\":{\"type\":\"mute\"},\"soundMute\":\"threshold\",\"soundOver\":\"over\",\"launch\":\"auto\",\"videoStart\":\"threshold\",\"videoPause\":\"threshold\",\"secure\":false}},\"type\":\"VastXml\",\"content\":\"Teads Technology\",\"scenario_id\":971105412,\"dsp_campaign_id\":\"1\",\"dsp_creative_id\":\"1\",\"insertion_id\":1,\"placement_id\":2,\"portfolio_item_id\":971104812}],\"wigoEnabled\":false,\"placementMetadata\":{\"2\":{\"adCallTrackingUrl\":\"https://localhost:18281/track?action=adCall&pid=2&pageId=2&auctid=39312703-e970-4914-ae56-8e7d7d1fd16b__b6321d41-3840-4cb3-baad-b6fc5b0c8553__c0f2e6ba-63d0-4e20-ab41-fe0822eb65a6&vid=708ca808-ec55-4d97-ab81-9c4777e16058&hb_provider=prebid-server&hb_ad_unit_code=742d38c4-7994-4c2b-ac82-18d3a64ba3c7&env=thirdparty-inapp>c=1&gdpr_apply=false&gac=1&gap=1&ca=false&bsg=uncat&bsias=uncat&pfid=971104812&gid=1&brid=0&cid=1&rpm_reason=3&ut=1&p=5fwoPMJCquIB-txdmwQS0l79-hhHVnlTzyR9mmnBMtZRceP6-q31KzCfLpS8WTNaw_sXr-hkOFBxaxa-jyLblbVc&cts=1685971107773&cs=267268361555465193905\",\"auctionId\":\"39312703-e970-4914-ae56-8e7d7d1fd16b__b6321d41-3840-4cb3-baad-b6fc5b0c8553__c0f2e6ba-63d0-4e20-ab41-fe0822eb65a6\"}},\"viewerId\":\"708ca808-ec55-4d97-ab81-9c4777e16058\"}",
+ "adid": "1",
+ "adomain": [
+ "teads.com"
+ ],
+ "cid": "1",
+ "crid": "1",
+ "cat": [
+ "IAB1-6",
+ "IAB10-5"
+ ],
+ "ext": {
+ "prebid": {
+ "meta": {
+ "rendererName": "teads",
+ "rendererVersion": "5.0.25",
+ "rendererData": {
+ "resize": true,
+ "sdkEngineVersion": "189"
+ }
+ }
+ }
+ }
+ },
+ "type": "video"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/adapters/teads/teadstest/supplemental/no-impression.json b/adapters/teads/teadstest/supplemental/no-impression.json
new file mode 100644
index 00000000000..7b1cdceb9e1
--- /dev/null
+++ b/adapters/teads/teadstest/supplemental/no-impression.json
@@ -0,0 +1,12 @@
+{
+ "mockBidRequest": {
+ "id": "test-request-id"
+ },
+
+ "expectedMakeRequestsErrors": [
+ {
+ "value": "No impression in the bid request",
+ "comparison": "literal"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/adapters/teads/teadstest/supplemental/no-placementId.json b/adapters/teads/teadstest/supplemental/no-placementId.json
new file mode 100644
index 00000000000..e343bc82a34
--- /dev/null
+++ b/adapters/teads/teadstest/supplemental/no-placementId.json
@@ -0,0 +1,28 @@
+{
+ "mockBidRequest": {
+ "id": "test-request-id",
+ "imp": [
+ {
+ "id": "test-imp-id-1",
+ "banner": {
+ "format": [
+ {
+ "w": 300,
+ "h": 250
+ }
+ ]
+ },
+ "ext": {
+ "bidder": {}
+ }
+ }
+ ]
+ },
+
+ "expectedMakeRequestsErrors": [
+ {
+ "value": "placementId should not be 0.",
+ "comparison": "literal"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/adapters/teads/teadstest/supplemental/renderer-name-empty.json b/adapters/teads/teadstest/supplemental/renderer-name-empty.json
new file mode 100644
index 00000000000..da4ee9a5094
--- /dev/null
+++ b/adapters/teads/teadstest/supplemental/renderer-name-empty.json
@@ -0,0 +1,143 @@
+{
+ "mockBidRequest": {
+ "id": "test-request-id",
+ "imp": [
+ {
+ "id": "b6321d41-3840-4cb3-baad-b6fc5b0c8553",
+ "video": {
+ "mimes": [
+ "video/mp4"
+ ],
+ "minduration": 15,
+ "maxduration": 30,
+ "protocols": [
+ 2,
+ 3
+ ],
+ "w": 940,
+ "h": 560
+ },
+ "ext": {
+ "bidder": {
+ "placementId": 125
+ }
+ }
+ }
+ ],
+ "ext": {
+ "prebid": {
+ "sdk": {
+ "renderers": [
+ {
+ "name": "",
+ "version": "5.0.25",
+ "data": {
+ "resize": true,
+ "sdkEngineVersion": "189"
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "httpCalls": [
+ {
+ "expectedRequest": {
+ "uri": "https://a.teads.tv/prebid-server/bid-request",
+ "body": {
+ "id": "test-request-id",
+ "imp": [
+ {
+ "id": "b6321d41-3840-4cb3-baad-b6fc5b0c8553",
+ "tagid": "125",
+ "video": {
+ "mimes": [
+ "video/mp4"
+ ],
+ "minduration": 15,
+ "maxduration": 30,
+ "protocols": [
+ 2,
+ 3
+ ],
+ "w": 940,
+ "h": 560
+ },
+ "ext": {
+ "kv": {
+ "placementId": 125
+ }
+ }
+ }
+ ],
+ "ext": {
+ "prebid": {
+ "sdk": {
+ "renderers": [
+ {
+ "name": "",
+ "version": "5.0.25",
+ "data": {
+ "resize": true,
+ "sdkEngineVersion": "189"
+ }
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
+ "mockResponse": {
+ "status": 200,
+ "body": {
+ "id": "39312703-e970-4914-ae56-8e7d7d1fd16b",
+ "tagid": "125",
+ "seatbid": [
+ {
+ "seat": "teads",
+ "bid": [
+ {
+ "id": "695ac187-fb3f-4d1f-8d5d-099c5e4c4d28",
+ "impid": "b6321d41-3840-4cb3-baad-b6fc5b0c8553",
+ "price": 33,
+ "nurl": "https://localhost:8080/prebid-server/win-notice?data=base64&clearingPrice=${AUCTION_PRICE}",
+ "adm": "{\"settings\":{\"values\":{\"animations\":{\"expand\":0,\"collapse\":0.5},\"placementId\":2,\"adType\":\"video\",\"placementFormat\":\"inread\",\"allowedPlayer\":\"any\",\"pageId\":2},\"components\":{\"closeButton\":{\"display\":false,\"countdown\":0},\"credits\":{\"display\":false},\"soundButton\":{\"display\":true,\"countdown\":0,\"type\":\"equalizer\"},\"label\":{\"display\":false},\"slider\":{\"closeButtonDisplay\":false}},\"behaviors\":{\"smartPosition\":{\"top\":false,\"corner\":false,\"mustBypassWhitelist\":true},\"slider\":{\"enable\":false},\"friendly\":false,\"playerClick\":\"fullscreen\",\"soundStart\":{\"type\":\"mute\"},\"soundMute\":\"threshold\",\"soundOver\":\"over\",\"launch\":\"auto\",\"videoStart\":\"threshold\",\"videoPause\":\"threshold\",\"secure\":false}},\"ads\":[{\"settings\":{\"values\":{\"animations\":{\"expand\":0,\"collapse\":0.5},\"placementId\":2,\"adType\":\"video\",\"placementFormat\":\"inread\",\"allowedPlayer\":\"any\",\"pageId\":2},\"components\":{\"closeButton\":{\"display\":false,\"countdown\":0},\"credits\":{\"display\":false},\"soundButton\":{\"display\":true,\"countdown\":0,\"type\":\"equalizer\"},\"label\":{\"display\":false},\"slider\":{\"closeButtonDisplay\":false}},\"behaviors\":{\"smartPosition\":{\"top\":false,\"corner\":false,\"mustBypassWhitelist\":true},\"slider\":{\"enable\":false},\"friendly\":false,\"playerClick\":\"fullscreen\",\"soundStart\":{\"type\":\"mute\"},\"soundMute\":\"threshold\",\"soundOver\":\"over\",\"launch\":\"auto\",\"videoStart\":\"threshold\",\"videoPause\":\"threshold\",\"secure\":false}},\"type\":\"VastXml\",\"content\":\"Teads Technology\",\"scenario_id\":971105412,\"dsp_campaign_id\":\"1\",\"dsp_creative_id\":\"1\",\"insertion_id\":1,\"placement_id\":2,\"portfolio_item_id\":971104812}],\"wigoEnabled\":false,\"placementMetadata\":{\"2\":{\"adCallTrackingUrl\":\"https://localhost:18281/track?action=adCall&pid=2&pageId=2&auctid=39312703-e970-4914-ae56-8e7d7d1fd16b__b6321d41-3840-4cb3-baad-b6fc5b0c8553__c0f2e6ba-63d0-4e20-ab41-fe0822eb65a6&vid=708ca808-ec55-4d97-ab81-9c4777e16058&hb_provider=prebid-server&hb_ad_unit_code=742d38c4-7994-4c2b-ac82-18d3a64ba3c7&env=thirdparty-inapp>c=1&gdpr_apply=false&gac=1&gap=1&ca=false&bsg=uncat&bsias=uncat&pfid=971104812&gid=1&brid=0&cid=1&rpm_reason=3&ut=1&p=5fwoPMJCquIB-txdmwQS0l79-hhHVnlTzyR9mmnBMtZRceP6-q31KzCfLpS8WTNaw_sXr-hkOFBxaxa-jyLblbVc&cts=1685971107773&cs=267268361555465193905\",\"auctionId\":\"39312703-e970-4914-ae56-8e7d7d1fd16b__b6321d41-3840-4cb3-baad-b6fc5b0c8553__c0f2e6ba-63d0-4e20-ab41-fe0822eb65a6\"}},\"viewerId\":\"708ca808-ec55-4d97-ab81-9c4777e16058\"}",
+ "adid": "1",
+ "adomain": [
+ "teads.com"
+ ],
+ "cid": "1",
+ "crid": "1",
+ "cat": [
+ "IAB1-6",
+ "IAB10-5"
+ ],
+ "ext": {
+ "prebid": {
+ "meta": {
+ "rendererName": "",
+ "rendererVersion": "5.0.25",
+ "rendererData": {
+ "resize": true,
+ "sdkEngineVersion": "189"
+ }
+ }
+ }
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ ],
+ "expectedMakeBidsErrors": [
+ {
+ "value": "RendererName should not be empty if present",
+ "comparison": "literal"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/adapters/teads/teadstest/supplemental/renderer-version-empty.json b/adapters/teads/teadstest/supplemental/renderer-version-empty.json
new file mode 100644
index 00000000000..e9e7b278dcb
--- /dev/null
+++ b/adapters/teads/teadstest/supplemental/renderer-version-empty.json
@@ -0,0 +1,143 @@
+{
+ "mockBidRequest": {
+ "id": "test-request-id",
+ "imp": [
+ {
+ "id": "b6321d41-3840-4cb3-baad-b6fc5b0c8553",
+ "video": {
+ "mimes": [
+ "video/mp4"
+ ],
+ "minduration": 15,
+ "maxduration": 30,
+ "protocols": [
+ 2,
+ 3
+ ],
+ "w": 940,
+ "h": 560
+ },
+ "ext": {
+ "bidder": {
+ "placementId": 125
+ }
+ }
+ }
+ ],
+ "ext": {
+ "prebid": {
+ "sdk": {
+ "renderers": [
+ {
+ "name": "teads",
+ "version": "",
+ "data": {
+ "resize": true,
+ "sdkEngineVersion": "189"
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "httpCalls": [
+ {
+ "expectedRequest": {
+ "uri": "https://a.teads.tv/prebid-server/bid-request",
+ "body": {
+ "id": "test-request-id",
+ "imp": [
+ {
+ "id": "b6321d41-3840-4cb3-baad-b6fc5b0c8553",
+ "tagid": "125",
+ "video": {
+ "mimes": [
+ "video/mp4"
+ ],
+ "minduration": 15,
+ "maxduration": 30,
+ "protocols": [
+ 2,
+ 3
+ ],
+ "w": 940,
+ "h": 560
+ },
+ "ext": {
+ "kv": {
+ "placementId": 125
+ }
+ }
+ }
+ ],
+ "ext": {
+ "prebid": {
+ "sdk": {
+ "renderers": [
+ {
+ "name": "teads",
+ "version": "",
+ "data": {
+ "resize": true,
+ "sdkEngineVersion": "189"
+ }
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
+ "mockResponse": {
+ "status": 200,
+ "body": {
+ "id": "39312703-e970-4914-ae56-8e7d7d1fd16b",
+ "tagid": "125",
+ "seatbid": [
+ {
+ "seat": "teads",
+ "bid": [
+ {
+ "id": "695ac187-fb3f-4d1f-8d5d-099c5e4c4d28",
+ "impid": "b6321d41-3840-4cb3-baad-b6fc5b0c8553",
+ "price": 33,
+ "nurl": "https://localhost:8080/prebid-server/win-notice?data=base64&clearingPrice=${AUCTION_PRICE}",
+ "adm": "{\"settings\":{\"values\":{\"animations\":{\"expand\":0,\"collapse\":0.5},\"placementId\":2,\"adType\":\"video\",\"placementFormat\":\"inread\",\"allowedPlayer\":\"any\",\"pageId\":2},\"components\":{\"closeButton\":{\"display\":false,\"countdown\":0},\"credits\":{\"display\":false},\"soundButton\":{\"display\":true,\"countdown\":0,\"type\":\"equalizer\"},\"label\":{\"display\":false},\"slider\":{\"closeButtonDisplay\":false}},\"behaviors\":{\"smartPosition\":{\"top\":false,\"corner\":false,\"mustBypassWhitelist\":true},\"slider\":{\"enable\":false},\"friendly\":false,\"playerClick\":\"fullscreen\",\"soundStart\":{\"type\":\"mute\"},\"soundMute\":\"threshold\",\"soundOver\":\"over\",\"launch\":\"auto\",\"videoStart\":\"threshold\",\"videoPause\":\"threshold\",\"secure\":false}},\"ads\":[{\"settings\":{\"values\":{\"animations\":{\"expand\":0,\"collapse\":0.5},\"placementId\":2,\"adType\":\"video\",\"placementFormat\":\"inread\",\"allowedPlayer\":\"any\",\"pageId\":2},\"components\":{\"closeButton\":{\"display\":false,\"countdown\":0},\"credits\":{\"display\":false},\"soundButton\":{\"display\":true,\"countdown\":0,\"type\":\"equalizer\"},\"label\":{\"display\":false},\"slider\":{\"closeButtonDisplay\":false}},\"behaviors\":{\"smartPosition\":{\"top\":false,\"corner\":false,\"mustBypassWhitelist\":true},\"slider\":{\"enable\":false},\"friendly\":false,\"playerClick\":\"fullscreen\",\"soundStart\":{\"type\":\"mute\"},\"soundMute\":\"threshold\",\"soundOver\":\"over\",\"launch\":\"auto\",\"videoStart\":\"threshold\",\"videoPause\":\"threshold\",\"secure\":false}},\"type\":\"VastXml\",\"content\":\"Teads Technology\",\"scenario_id\":971105412,\"dsp_campaign_id\":\"1\",\"dsp_creative_id\":\"1\",\"insertion_id\":1,\"placement_id\":2,\"portfolio_item_id\":971104812}],\"wigoEnabled\":false,\"placementMetadata\":{\"2\":{\"adCallTrackingUrl\":\"https://localhost:18281/track?action=adCall&pid=2&pageId=2&auctid=39312703-e970-4914-ae56-8e7d7d1fd16b__b6321d41-3840-4cb3-baad-b6fc5b0c8553__c0f2e6ba-63d0-4e20-ab41-fe0822eb65a6&vid=708ca808-ec55-4d97-ab81-9c4777e16058&hb_provider=prebid-server&hb_ad_unit_code=742d38c4-7994-4c2b-ac82-18d3a64ba3c7&env=thirdparty-inapp>c=1&gdpr_apply=false&gac=1&gap=1&ca=false&bsg=uncat&bsias=uncat&pfid=971104812&gid=1&brid=0&cid=1&rpm_reason=3&ut=1&p=5fwoPMJCquIB-txdmwQS0l79-hhHVnlTzyR9mmnBMtZRceP6-q31KzCfLpS8WTNaw_sXr-hkOFBxaxa-jyLblbVc&cts=1685971107773&cs=267268361555465193905\",\"auctionId\":\"39312703-e970-4914-ae56-8e7d7d1fd16b__b6321d41-3840-4cb3-baad-b6fc5b0c8553__c0f2e6ba-63d0-4e20-ab41-fe0822eb65a6\"}},\"viewerId\":\"708ca808-ec55-4d97-ab81-9c4777e16058\"}",
+ "adid": "1",
+ "adomain": [
+ "teads.com"
+ ],
+ "cid": "1",
+ "crid": "1",
+ "cat": [
+ "IAB1-6",
+ "IAB10-5"
+ ],
+ "ext": {
+ "prebid": {
+ "meta": {
+ "rendererName": "teads",
+ "rendererVersion": "",
+ "rendererData": {
+ "resize": true,
+ "sdkEngineVersion": "189"
+ }
+ }
+ }
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ ],
+ "expectedMakeBidsErrors": [
+ {
+ "value": "RendererVersion should not be empty if present",
+ "comparison": "literal"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/adapters/teads/teadstest/supplemental/status-400.json b/adapters/teads/teadstest/supplemental/status-400.json
new file mode 100644
index 00000000000..cd9fafff0a1
--- /dev/null
+++ b/adapters/teads/teadstest/supplemental/status-400.json
@@ -0,0 +1,65 @@
+{
+ "mockBidRequest": {
+ "id": "test-request-id",
+ "imp": [
+ {
+ "id": "test-imp-id",
+ "banner": {
+ "format": [
+ {
+ "w": 300,
+ "h": 250
+ }
+ ]
+ },
+ "ext": {
+ "bidder": {
+ "placementId": 1
+ }
+ }
+ }
+ ]
+ },
+
+ "httpCalls": [
+ {
+ "expectedRequest": {
+ "uri": "https://a.teads.tv/prebid-server/bid-request",
+ "body": {
+ "id": "test-request-id",
+ "imp": [
+ {
+ "id": "test-imp-id",
+ "tagid": "1",
+ "banner": {
+ "format": [
+ {
+ "w": 300,
+ "h": 250
+ }
+ ],
+ "w": 300,
+ "h": 250
+ },
+ "ext": {
+ "kv": {
+ "placementId": 1
+ }
+ }
+ }
+ ]
+ }
+ },
+ "mockResponse": {
+ "status": 400,
+ "body": {}
+ }
+ }
+ ],
+ "expectedMakeBidsErrors": [
+ {
+ "value": "Unexpected status code: 400. Run with request.debug = 1 for more info",
+ "comparison": "literal"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/adapters/teads/teadstest/supplemental/status-500.json b/adapters/teads/teadstest/supplemental/status-500.json
new file mode 100644
index 00000000000..337d4754006
--- /dev/null
+++ b/adapters/teads/teadstest/supplemental/status-500.json
@@ -0,0 +1,65 @@
+{
+ "mockBidRequest": {
+ "id": "test-request-id",
+ "imp": [
+ {
+ "id": "test-imp-id",
+ "banner": {
+ "format": [
+ {
+ "w": 300,
+ "h": 250
+ }
+ ]
+ },
+ "ext": {
+ "bidder": {
+ "placementId": 1
+ }
+ }
+ }
+ ]
+ },
+
+ "httpCalls": [
+ {
+ "expectedRequest": {
+ "uri": "https://a.teads.tv/prebid-server/bid-request",
+ "body": {
+ "id": "test-request-id",
+ "imp": [
+ {
+ "id": "test-imp-id",
+ "tagid": "1",
+ "banner": {
+ "format": [
+ {
+ "w": 300,
+ "h": 250
+ }
+ ],
+ "w": 300,
+ "h": 250
+ },
+ "ext": {
+ "kv": {
+ "placementId": 1
+ }
+ }
+ }
+ ]
+ }
+ },
+ "mockResponse": {
+ "status": 500,
+ "body": {}
+ }
+ }
+ ],
+ "expectedMakeBidsErrors": [
+ {
+ "value": "Unexpected status code: 500. Run with request.debug = 1 for more info",
+ "comparison": "literal"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/exchange/adapter_builders.go b/exchange/adapter_builders.go
index c5e9dc4947b..8153f1c2ed3 100755
--- a/exchange/adapter_builders.go
+++ b/exchange/adapter_builders.go
@@ -162,6 +162,7 @@ import (
"github.com/prebid/prebid-server/adapters/suntContent"
"github.com/prebid/prebid-server/adapters/taboola"
"github.com/prebid/prebid-server/adapters/tappx"
+ "github.com/prebid/prebid-server/adapters/teads"
"github.com/prebid/prebid-server/adapters/telaria"
"github.com/prebid/prebid-server/adapters/tpmn"
"github.com/prebid/prebid-server/adapters/trafficgate"
@@ -370,6 +371,7 @@ func newAdapterBuilders() map[openrtb_ext.BidderName]adapters.Builder {
openrtb_ext.BidderSynacormedia: imds.Builder,
openrtb_ext.BidderTaboola: taboola.Builder,
openrtb_ext.BidderTappx: tappx.Builder,
+ openrtb_ext.BidderTeads: teads.Builder,
openrtb_ext.BidderTelaria: telaria.Builder,
openrtb_ext.BidderTpmn: tpmn.Builder,
openrtb_ext.BidderTrafficGate: trafficgate.Builder,
diff --git a/openrtb_ext/bidders.go b/openrtb_ext/bidders.go
index 11f01988013..3b9f6a3a312 100644
--- a/openrtb_ext/bidders.go
+++ b/openrtb_ext/bidders.go
@@ -194,6 +194,7 @@ var coreBidderNames []BidderName = []BidderName{
BidderSynacormedia,
BidderTaboola,
BidderTappx,
+ BidderTeads,
BidderTelaria,
BidderTpmn,
BidderTrafficGate,
@@ -487,6 +488,7 @@ const (
BidderSynacormedia BidderName = "synacormedia"
BidderTaboola BidderName = "taboola"
BidderTappx BidderName = "tappx"
+ BidderTeads BidderName = "teads"
BidderTelaria BidderName = "telaria"
BidderTpmn BidderName = "tpmn"
BidderTrafficGate BidderName = "trafficgate"
diff --git a/openrtb_ext/imp_teads.go b/openrtb_ext/imp_teads.go
new file mode 100644
index 00000000000..50d11ae9192
--- /dev/null
+++ b/openrtb_ext/imp_teads.go
@@ -0,0 +1,5 @@
+package openrtb_ext
+
+type ExtImpTeads struct {
+ PlacementID string `json:"placementId"`
+}
diff --git a/static/bidder-info/teads.yaml b/static/bidder-info/teads.yaml
new file mode 100644
index 00000000000..5dc428ddf7b
--- /dev/null
+++ b/static/bidder-info/teads.yaml
@@ -0,0 +1,9 @@
+endpoint: "https://a.teads.tv/prebid-server/bid-request"
+maintainer:
+ email: "support-sdk@teads.com"
+gvlVendorID: 132
+capabilities:
+ app:
+ mediaTypes:
+ - banner
+ - video
\ No newline at end of file
diff --git a/static/bidder-params/teads.json b/static/bidder-params/teads.json
new file mode 100644
index 00000000000..2b3f47d8bc2
--- /dev/null
+++ b/static/bidder-params/teads.json
@@ -0,0 +1,15 @@
+{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "title": "Teads Adapter Params",
+ "description": "A schema which validates params accepted by the Teads adapter",
+
+ "type": "object",
+ "properties": {
+ "placementId": {
+ "type": "integer",
+ "description": "The placement id.",
+ "minimum": 1
+ }
+ },
+ "required": ["placementId"]
+ }
\ No newline at end of file