diff --git a/src/main/java/org/prebid/server/bidder/rubicon/RubiconBidder.java b/src/main/java/org/prebid/server/bidder/rubicon/RubiconBidder.java index 7fc5f321f4e..c1cd3551f20 100644 --- a/src/main/java/org/prebid/server/bidder/rubicon/RubiconBidder.java +++ b/src/main/java/org/prebid/server/bidder/rubicon/RubiconBidder.java @@ -4,6 +4,7 @@ import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.node.ArrayNode; import com.fasterxml.jackson.databind.node.ObjectNode; +import com.google.common.collect.ImmutableSet; import com.iab.openrtb.request.App; import com.iab.openrtb.request.Banner; import com.iab.openrtb.request.BidRequest; @@ -141,6 +142,9 @@ public class RubiconBidder implements Bidder { private static final String SHA256EMAIL_STYPE = "sha256email"; private static final String DMP_STYPE = "dmp"; private static final String XAPI_CURRENCY = "USD"; + private static final Set USER_SEGTAXES = ImmutableSet.of(3); + private static final Set SITE_SEGTAXES = ImmutableSet.of(1, 2); + private static final Set STYPE_TO_REMOVE = new HashSet<>(Arrays.asList(PPUID_STYPE, SHA256EMAIL_STYPE, DMP_STYPE)); private static final TypeReference> RUBICON_EXT_TYPE_REFERENCE = @@ -1073,7 +1077,7 @@ private JsonNode rubiconUserExtRpTarget(Map> sourceToUs if (user != null) { mergeFirstPartyDataFromUser(user.getExt(), result); - enrichWithIabAttribute(result, user.getData()); + enrichWithIabAttribute(result, user.getData(), USER_SEGTAXES); } return result.size() > 0 ? result : null; @@ -1108,10 +1112,10 @@ private void mergeFirstPartyDataFromUser(ExtUser userExt, ObjectNode result) { } } - private void enrichWithIabAttribute(ObjectNode target, List data) { + private static void enrichWithIabAttribute(ObjectNode target, List data, Set segtaxValues) { final List iabValue = CollectionUtils.emptyIfNull(data).stream() .filter(Objects::nonNull) - .filter(dataRecord -> containsIabTaxonomyName(dataRecord.getExt())) + .filter(dataRecord -> containsSegtaxValue(dataRecord.getExt(), segtaxValues)) .map(Data::getSegment) .filter(Objects::nonNull) .flatMap(segments -> segments.stream() @@ -1125,10 +1129,10 @@ private void enrichWithIabAttribute(ObjectNode target, List data) { } } - private boolean containsIabTaxonomyName(ObjectNode ext) { - final JsonNode taxonomyName = ext != null ? ext.get("taxonomyname") : null; - return taxonomyName != null && taxonomyName.isTextual() - && StringUtils.containsIgnoreCase(taxonomyName.textValue(), "iab"); + private static boolean containsSegtaxValue(ObjectNode ext, Set segtaxValues) { + final JsonNode taxonomyName = ext != null ? ext.get("segtax") : null; + + return taxonomyName != null && taxonomyName.isInt() && segtaxValues.contains(taxonomyName.intValue()); } private static String extractLiverampId(Map> sourceToUserEidExt) { @@ -1195,10 +1199,29 @@ private ExtPublisher makePublisherExt(ExtImpRubicon rubiconImpExt) { private ExtSite makeSiteExt(Site site, ExtImpRubicon rubiconImpExt) { final ExtSite extSite = site != null ? site.getExt() : null; final Integer siteExtAmp = extSite != null ? extSite.getAmp() : null; + final Content siteContent = site != null ? site.getContent() : null; + final List siteContentData = siteContent != null ? siteContent.getData() : null; + ObjectNode target = null; + + if (CollectionUtils.isNotEmpty(siteContentData)) { + target = existingRubiconSiteExtRpTargetOrEmptyNode(extSite); + enrichWithIabAttribute(target, siteContentData, SITE_SEGTAXES); + } return mapper.fillExtension( ExtSite.of(siteExtAmp, null), - RubiconSiteExt.of(RubiconSiteExtRp.of(rubiconImpExt.getSiteId()))); + RubiconSiteExt.of(RubiconSiteExtRp.of(rubiconImpExt.getSiteId(), + target != null && !target.isEmpty() ? target : null))); + } + + private ObjectNode existingRubiconSiteExtRpTargetOrEmptyNode(ExtSite siteExt) { + final RubiconSiteExt rubiconSiteExt = siteExt != null + ? mapper.mapper().convertValue(siteExt, RubiconSiteExt.class) + : null; + final RubiconSiteExtRp rubiconSiteExtRp = rubiconSiteExt != null ? rubiconSiteExt.getRp() : null; + final JsonNode target = rubiconSiteExtRp != null ? rubiconSiteExtRp.getTarget() : null; + + return target != null && target.isObject() ? (ObjectNode) target : mapper.mapper().createObjectNode(); } private App makeApp(App app, ExtImpRubicon rubiconImpExt) { @@ -1210,7 +1233,7 @@ private App makeApp(App app, ExtImpRubicon rubiconImpExt) { private ExtApp makeAppExt(ExtImpRubicon rubiconImpExt) { return mapper.fillExtension(ExtApp.of(null, null), - RubiconAppExt.of(RubiconSiteExtRp.of(rubiconImpExt.getSiteId()))); + RubiconAppExt.of(RubiconSiteExtRp.of(rubiconImpExt.getSiteId(), null))); } private static Source makeSource(Source source, String pchain) { diff --git a/src/main/java/org/prebid/server/bidder/rubicon/proto/RubiconSiteExtRp.java b/src/main/java/org/prebid/server/bidder/rubicon/proto/RubiconSiteExtRp.java index d96a1680103..1eca04ea728 100644 --- a/src/main/java/org/prebid/server/bidder/rubicon/proto/RubiconSiteExtRp.java +++ b/src/main/java/org/prebid/server/bidder/rubicon/proto/RubiconSiteExtRp.java @@ -1,5 +1,6 @@ package org.prebid.server.bidder.rubicon.proto; +import com.fasterxml.jackson.databind.JsonNode; import lombok.AllArgsConstructor; import lombok.Value; @@ -8,4 +9,6 @@ public class RubiconSiteExtRp { Integer siteId; + + JsonNode target; } diff --git a/src/test/java/org/prebid/server/bidder/rubicon/RubiconBidderTest.java b/src/test/java/org/prebid/server/bidder/rubicon/RubiconBidderTest.java index 09a97f5fd3c..84e3b3f19dd 100644 --- a/src/test/java/org/prebid/server/bidder/rubicon/RubiconBidderTest.java +++ b/src/test/java/org/prebid/server/bidder/rubicon/RubiconBidderTest.java @@ -814,15 +814,13 @@ public void makeHttpRequestsShouldFillUserExtIfUserAndVisitorPresent() { } @Test - public void makeHttpRequestsShouldFillUserExtRpWithIabAttributeIfTaxonomynameContainsIab() { + public void makeHttpRequestsShouldFillUserExtRpWithIabAttributeIfSegtaxEqualsThree() { // given - final ObjectNode userNode = mapper.createObjectNode(); - userNode.put("taxonomyname", "contains IaB"); final BidRequest bidRequest = givenBidRequest( - builder -> builder.user(User.builder().data(singletonList(Data.builder() - .segment(singletonList(Segment.builder().id("segmentId") - .build())) - .ext(userNode).build())).build()), + builder -> builder.user(User.builder() + .data(singletonList( + givenDataWithSegmentEntry(3, "segmentId") + )).build()), builder -> builder.video(Video.builder().build()), identity()); @@ -847,21 +845,14 @@ public void makeHttpRequestsShouldFillUserExtRpWithIabAttributeIfTaxonomynameCon } @Test - public void makeHttpRequestsShouldFillWithIabAttributeOnlyIfContainsIabInTaxonomynameAttribute() { + public void makeHttpRequestsShouldFillUserExtRpWithIabAttributeOnlyIfSegtaxIsEqualThree() { // given - final ObjectNode firstUserDataNode = mapper.createObjectNode(); - firstUserDataNode.put("taxonomyname", "contains IaB"); - final ObjectNode secondUserDataNode = mapper.createObjectNode(); - secondUserDataNode.put("taxonomyname", "not contain"); final BidRequest bidRequest = givenBidRequest( - builder -> builder.user(User.builder().data(asList(Data.builder() - .segment(singletonList(Segment.builder().id("segmentId") - .build())) - .ext(firstUserDataNode).build(), - Data.builder() - .segment(singletonList(Segment.builder().id("secondSegmentId") - .build())) - .ext(secondUserDataNode).build())).build()), + builder -> builder.user(User.builder() + .data(asList( + givenDataWithSegmentEntry(3, "segmentId"), + givenDataWithSegmentEntry(2, "secondSegmentId"))) + .build()), builder -> builder.video(Video.builder().build()), identity()); @@ -886,12 +877,44 @@ public void makeHttpRequestsShouldFillWithIabAttributeOnlyIfContainsIabInTaxonom } @Test - public void makeHttpRequestsShouldIgnoreNotTextualTaxonomynameProperty() { + public void makeHttpRequestsShouldFillSiteExtRpWithIabAttributeIfSegtaxEqualsOneOrTwo() { // given - final ObjectNode userNode = mapper.createObjectNode(); - final ArrayNode wrongTaxonomyAttributeType = userNode.putArray("taxonomyname"); - wrongTaxonomyAttributeType.add("contains IaB value"); + final BidRequest bidRequest = givenBidRequest( + builder -> builder.site(Site.builder() + .content(Content.builder() + .data(asList( + givenDataWithSegmentEntry(1, "firstSegmentId"), + givenDataWithSegmentEntry(2, "secondSegmentId"), + givenDataWithSegmentEntry(3, "thirdSegmentId"))) + .build()) + .build()), + builder -> builder.video(Video.builder().build()), + identity()); + + // when + final Result>> result = rubiconBidder.makeHttpRequests(bidRequest); + + // then + final ObjectNode expectedTarget = mapper.createObjectNode(); + final ArrayNode expectedIabAttribute = expectedTarget.putArray("iab"); + expectedIabAttribute.add("firstSegmentId"); + expectedIabAttribute.add("secondSegmentId"); + + assertThat(result.getErrors()).isEmpty(); + assertThat(result.getValue()).hasSize(1).doesNotContainNull() + .extracting(httpRequest -> mapper.readValue(httpRequest.getBody(), BidRequest.class)) + .extracting(BidRequest::getSite).doesNotContainNull() + .extracting(Site::getExt) + .extracting(ext -> ext.getProperty("rp")) + .extracting(rp -> rp.get("target")) + .containsExactly(expectedTarget); + } + @Test + public void makeHttpRequestsShouldIgnoreNotIntSegtaxProperty() { + // given + final ObjectNode userNode = mapper.createObjectNode(); + userNode.put("segtax", "3"); final BidRequest bidRequest = givenBidRequest( builder -> builder.user(User.builder().data(singletonList(Data.builder() .segment(singletonList(Segment.builder().id("segmentId") @@ -909,7 +932,6 @@ public void makeHttpRequestsShouldIgnoreNotTextualTaxonomynameProperty() { .extracting(httpRequest -> mapper.readValue(httpRequest.getBody(), BidRequest.class)) .extracting(BidRequest::getUser).doesNotContainNull() .extracting(User::getExt) - .hasSize(1) .containsNull(); } @@ -1564,7 +1586,7 @@ public void makeHttpRequestsShouldFillSiteExtIfSitePresent() { RubiconPubExt.of(RubiconPubExtRp.of(2001)))) .build()) .ext(jacksonMapper.fillExtension( - ExtSite.of(null, null), RubiconSiteExt.of(RubiconSiteExtRp.of(3001)))) + ExtSite.of(null, null), RubiconSiteExt.of(RubiconSiteExtRp.of(3001, null)))) .build()); } @@ -1591,7 +1613,7 @@ public void makeHttpRequestsShouldPassSiteExtAmpIfPresent() { RubiconPubExt.of(RubiconPubExtRp.of(2001)))) .build()) .ext(jacksonMapper.fillExtension( - ExtSite.of(1, null), RubiconSiteExt.of(RubiconSiteExtRp.of(3001)))) + ExtSite.of(1, null), RubiconSiteExt.of(RubiconSiteExtRp.of(3001, null)))) .build()); } @@ -1613,7 +1635,7 @@ public void makeHttpRequestsShouldRemoveSiteExtData() { .extracting(Site::getExt) .containsOnly(jacksonMapper.fillExtension( ExtSite.of(null, null), - RubiconSiteExt.of(RubiconSiteExtRp.of(3001)))); + RubiconSiteExt.of(RubiconSiteExtRp.of(3001, null)))); } @Test @@ -1640,7 +1662,7 @@ public void makeHttpRequestsShouldFillAppExtIfAppPresent() { .build()) .ext(jacksonMapper.fillExtension( ExtApp.of(null, null), - RubiconAppExt.of(RubiconSiteExtRp.of(3001)))) + RubiconAppExt.of(RubiconSiteExtRp.of(3001, null)))) .build()); } @@ -1662,7 +1684,7 @@ public void makeHttpRequestsShouldRemoveAppExtData() { .extracting(App::getExt) .containsOnly(jacksonMapper.fillExtension( ExtApp.of(null, null), - RubiconAppExt.of(RubiconSiteExtRp.of(3001)))); + RubiconAppExt.of(RubiconSiteExtRp.of(3001, null)))); } @Test @@ -2891,6 +2913,13 @@ private static Imp givenImp(Function impCustomizer) { return givenImp(impCustomizer, identity()); } + private static Data givenDataWithSegmentEntry(Integer segtax, String segmentId) { + return Data.builder() + .segment(singletonList(Segment.builder().id(segmentId).build())) + .ext(mapper.createObjectNode().put("segtax", segtax)) + .build(); + } + private static HttpCall givenHttpCall(BidRequest bidRequest, String body) { return HttpCall.success( HttpRequest.builder().payload(bidRequest).build(), diff --git a/src/test/java/org/prebid/server/it/RubiconTest.java b/src/test/java/org/prebid/server/it/RubiconTest.java new file mode 100644 index 00000000000..4a017e4b93f --- /dev/null +++ b/src/test/java/org/prebid/server/it/RubiconTest.java @@ -0,0 +1,61 @@ +package org.prebid.server.it; + +import io.restassured.response.Response; +import org.json.JSONException; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.skyscreamer.jsonassert.JSONAssert; +import org.skyscreamer.jsonassert.JSONCompareMode; +import org.springframework.test.context.junit4.SpringRunner; + +import java.io.IOException; + +import static com.github.tomakehurst.wiremock.client.WireMock.aResponse; +import static com.github.tomakehurst.wiremock.client.WireMock.equalTo; +import static com.github.tomakehurst.wiremock.client.WireMock.equalToJson; +import static com.github.tomakehurst.wiremock.client.WireMock.post; +import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo; +import static io.restassured.RestAssured.given; +import static java.util.Collections.singletonList; + +@RunWith(SpringRunner.class) +public class RubiconTest extends IntegrationTest { + + @Test + public void testOpenrtb2AuctionCoreFunctionality() throws IOException, JSONException { + // given + WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/rubicon-exchange")) + .withHeader("Accept", equalTo("application/json")) + .withHeader("Content-Type", equalTo("application/json;charset=UTF-8")) + .withQueryParam("tk_xint", equalTo("rp-pbs")) + .withRequestBody(equalToJson( + jsonFrom("openrtb2/rubicon/test-rubicon-bid-request.json"))) + .willReturn(aResponse().withBody( + jsonFrom("openrtb2/rubicon/test-rubicon-bid-response.json")))); + + // pre-bid cache + WIRE_MOCK_RULE.stubFor(post(urlPathEqualTo("/cache")) + .withRequestBody(equalToJson( + jsonFrom("openrtb2/rubicon/test-cache-rubicon-request.json"))) + .willReturn(aResponse().withBody( + jsonFrom("openrtb2/rubicon/test-cache-rubicon-response.json")))); + + // when + final Response response = given(SPEC) + .header("Referer", "http://www.example.com") + .header("X-Forwarded-For", "193.168.244.1") + .header("User-Agent", "userAgent") + .header("Origin", "http://www.example.com") + // this uids cookie value stands for {"uids":{"rubicon":"RUB-UID"}} + .cookie("uids", "eyJ1aWRzIjp7InJ1Ymljb24iOiJSVUItVUlEIn19") + .body(jsonFrom("openrtb2/rubicon/test-auction-rubicon-request.json")) + .post("/openrtb2/auction"); + + // then + final String expectedAuctionResponse = openrtbAuctionResponseFrom( + "openrtb2/rubicon/test-auction-rubicon-response.json", + response, singletonList("rubicon")); + + JSONAssert.assertEquals(expectedAuctionResponse, response.asString(), JSONCompareMode.NON_EXTENSIBLE); + } +} diff --git a/src/test/resources/org/prebid/server/it/openrtb2/rubicon/test-auction-rubicon-request.json b/src/test/resources/org/prebid/server/it/openrtb2/rubicon/test-auction-rubicon-request.json new file mode 100644 index 00000000000..f4d30b179ec --- /dev/null +++ b/src/test/resources/org/prebid/server/it/openrtb2/rubicon/test-auction-rubicon-request.json @@ -0,0 +1,89 @@ +{ + "id": "tid", + "imp": [ + { + "id": "impId001", + "video": { + "mimes": [ + "mimes" + ], + "w": 300, + "h": 250 + }, + "ext": { + "rubicon": { + "accountId": 2001, + "siteId": 3001, + "zoneId": 4001 + } + } + } + ], + "site": { + "content": { + "data": [ + { + "ext": { + "segtax": 1 + }, + "segment": [ + { + "id": "segmentId1" + }, + { + "id": "segmentId2" + } + ] + }, + { + "ext": { + "segtax": 2 + }, + "segment": [ + { + "id": "segmentId3" + } + ] + } + ] + } + }, + "user": { + "data": [ + { + "ext": { + "segtax": 3 + }, + "segment": [ + { + "id": "segmentId4" + } + ] + } + ] + }, + "ext": { + "prebid": { + "targeting": { + "pricegranularity": { + "precision": 2, + "ranges": [ + { + "max": 20, + "increment": 0.1 + } + ] + } + }, + "cache": { + "bids": {} + }, + "auctiontimestamp": 1000 + } + }, + "regs": { + "ext": { + "gdpr": 0 + } + } +} diff --git a/src/test/resources/org/prebid/server/it/openrtb2/rubicon/test-auction-rubicon-response.json b/src/test/resources/org/prebid/server/it/openrtb2/rubicon/test-auction-rubicon-response.json new file mode 100644 index 00000000000..cb5fe82a14c --- /dev/null +++ b/src/test/resources/org/prebid/server/it/openrtb2/rubicon/test-auction-rubicon-response.json @@ -0,0 +1,59 @@ +{ + "id": "tid", + "seatbid": [ + { + "bid": [ + { + "id": "bid001", + "impid": "impId001", + "price": 3.33, + "adm": "adm001", + "adid": "adid001", + "cid": "cid001", + "crid": "crid001", + "w": 300, + "h": 250, + "ext": { + "prebid": { + "type": "video", + "targeting": { + "hb_pb": "3.30", + "hb_size_rubicon": "300x250", + "hb_bidder_rubicon": "rubicon", + "hb_cache_path": "{{ cache.path }}", + "hb_size": "300x250", + "hb_cache_host_rubicon": "{{ cache.host }}", + "hb_cache_path_rubicon": "{{ cache.path }}", + "hb_cache_id_rubicon": "f0ab9105-cb21-4e59-b433-70f5ad6671cb", + "hb_bidder": "rubicon", + "hb_cache_id": "f0ab9105-cb21-4e59-b433-70f5ad6671cb", + "hb_pb_rubicon": "3.30", + "hb_cache_host": "{{ cache.host }}" + }, + "cache": { + "bids": { + "url": "{{ cache.resource_url }}f0ab9105-cb21-4e59-b433-70f5ad6671cb", + "cacheId": "f0ab9105-cb21-4e59-b433-70f5ad6671cb" + } + } + }, + "origbidcpm": 3.33 + } + } + ], + "seat": "rubicon", + "group": 0 + } + ], + "cur": "USD", + "ext": { + "responsetimemillis": { + "rubicon": "{{ rubicon.response_time_ms }}", + "cache": "{{ cache.response_time_ms }}" + }, + "tmaxrequest": 2000, + "prebid": { + "auctiontimestamp": 1000 + } + } +} diff --git a/src/test/resources/org/prebid/server/it/openrtb2/rubicon/test-cache-rubicon-request.json b/src/test/resources/org/prebid/server/it/openrtb2/rubicon/test-cache-rubicon-request.json new file mode 100644 index 00000000000..424a76e0ac4 --- /dev/null +++ b/src/test/resources/org/prebid/server/it/openrtb2/rubicon/test-cache-rubicon-request.json @@ -0,0 +1,21 @@ +{ + "puts": [ + { + "type": "json", + "value": { + "id": "bid001", + "impid": "impId001", + "price": 3.33, + "adm": "adm001", + "adid": "adid001", + "cid": "cid001", + "crid": "crid001", + "w": 300, + "h": 250, + "ext": { + "origbidcpm": 3.33 + } + } + } + ] +} diff --git a/src/test/resources/org/prebid/server/it/openrtb2/rubicon/test-cache-rubicon-response.json b/src/test/resources/org/prebid/server/it/openrtb2/rubicon/test-cache-rubicon-response.json new file mode 100644 index 00000000000..93d0b8de2cd --- /dev/null +++ b/src/test/resources/org/prebid/server/it/openrtb2/rubicon/test-cache-rubicon-response.json @@ -0,0 +1,7 @@ +{ + "responses": [ + { + "uuid": "f0ab9105-cb21-4e59-b433-70f5ad6671cb" + } + ] +} \ No newline at end of file diff --git a/src/test/resources/org/prebid/server/it/openrtb2/rubicon/test-rubicon-bid-request.json b/src/test/resources/org/prebid/server/it/openrtb2/rubicon/test-rubicon-bid-request.json new file mode 100644 index 00000000000..507eea2f26e --- /dev/null +++ b/src/test/resources/org/prebid/server/it/openrtb2/rubicon/test-rubicon-bid-request.json @@ -0,0 +1,120 @@ +{ + "id": "tid", + "imp": [ + { + "id": "impId001", + "video": { + "mimes": [ + "mimes" + ], + "w": 300, + "h": 250 + }, + "ext": { + "rp": { + "zone_id": 4001, + "target": { + "page": [ + "http://www.example.com" + ] + }, + "track": { + "mint": "", + "mint_version": "" + } + }, + "maxbids": 1 + } + } + ], + "site": { + "domain": "example.com", + "page": "http://www.example.com", + "publisher": { + "ext": { + "rp": { + "account_id": 2001 + } + } + }, + "content": { + "data": [ + { + "segment": [ + { + "id": "segmentId1" + }, + { + "id": "segmentId2" + } + ], + "ext": { + "segtax": 1 + } + }, + { + "segment": [ + { + "id": "segmentId3" + } + ], + "ext": { + "segtax": 2 + } + } + ] + }, + "ext": { + "amp": 0, + "rp": { + "site_id": 3001, + "target": { + "iab": [ + "segmentId1", + "segmentId2", + "segmentId3" + ] + } + } + } + }, + "device": { + "ua": "userAgent", + "ip": "193.168.244.1", + "ext": { + "rp": { + } + } + }, + "user": { + "buyeruid": "RUB-UID", + "data": [ + { + "segment": [ + { + "id": "segmentId4" + } + ], + "ext": { + "segtax": 3 + } + } + ], + "ext": { + "rp": { + "target": { + "iab": [ + "segmentId4" + ] + } + } + } + }, + "at": 1, + "tmax": 2000, + "regs": { + "ext": { + "gdpr": 0 + } + } +} diff --git a/src/test/resources/org/prebid/server/it/openrtb2/rubicon/test-rubicon-bid-response.json b/src/test/resources/org/prebid/server/it/openrtb2/rubicon/test-rubicon-bid-response.json new file mode 100644 index 00000000000..95a93284e04 --- /dev/null +++ b/src/test/resources/org/prebid/server/it/openrtb2/rubicon/test-rubicon-bid-response.json @@ -0,0 +1,20 @@ +{ + "id": "tid", + "seatbid": [ + { + "bid": [ + { + "id": "bid001", + "impid": "impId001", + "price": 3.33, + "adid": "adid001", + "crid": "crid001", + "cid": "cid001", + "adm": "adm001", + "h": 250, + "w": 300 + } + ] + } + ] +} \ No newline at end of file diff --git a/src/test/resources/org/prebid/server/it/openrtb2/rubicon_appnexus/test-appnexus-bid-request-1.json b/src/test/resources/org/prebid/server/it/openrtb2/rubicon_appnexus/test-appnexus-bid-request-1.json index 6f2f501a1ce..5779e906524 100644 --- a/src/test/resources/org/prebid/server/it/openrtb2/rubicon_appnexus/test-appnexus-bid-request-1.json +++ b/src/test/resources/org/prebid/server/it/openrtb2/rubicon_appnexus/test-appnexus-bid-request-1.json @@ -69,7 +69,7 @@ "data": [ { "ext": { - "taxonomyname": "Iab" + "segtax": 3 }, "segment": [ { diff --git a/src/test/resources/org/prebid/server/it/openrtb2/rubicon_appnexus/test-appnexus-bid-request-2.json b/src/test/resources/org/prebid/server/it/openrtb2/rubicon_appnexus/test-appnexus-bid-request-2.json index fa0c763f821..6f52f0dd761 100644 --- a/src/test/resources/org/prebid/server/it/openrtb2/rubicon_appnexus/test-appnexus-bid-request-2.json +++ b/src/test/resources/org/prebid/server/it/openrtb2/rubicon_appnexus/test-appnexus-bid-request-2.json @@ -57,7 +57,7 @@ "data": [ { "ext": { - "taxonomyname": "Iab" + "segtax": 3 }, "segment": [ { diff --git a/src/test/resources/org/prebid/server/it/openrtb2/rubicon_appnexus/test-auction-rubicon-appnexus-request.json b/src/test/resources/org/prebid/server/it/openrtb2/rubicon_appnexus/test-auction-rubicon-appnexus-request.json index 3b316db31ce..ab24f4d6f87 100644 --- a/src/test/resources/org/prebid/server/it/openrtb2/rubicon_appnexus/test-auction-rubicon-appnexus-request.json +++ b/src/test/resources/org/prebid/server/it/openrtb2/rubicon_appnexus/test-auction-rubicon-appnexus-request.json @@ -274,7 +274,7 @@ "data": [ { "ext": { - "taxonomyname": "Iab" + "segtax": 3 }, "segment": [ { diff --git a/src/test/resources/org/prebid/server/it/openrtb2/rubicon_appnexus/test-auction-rubicon-appnexus-response.json b/src/test/resources/org/prebid/server/it/openrtb2/rubicon_appnexus/test-auction-rubicon-appnexus-response.json index 66c8b5f8f8c..98dd14436d0 100644 --- a/src/test/resources/org/prebid/server/it/openrtb2/rubicon_appnexus/test-auction-rubicon-appnexus-response.json +++ b/src/test/resources/org/prebid/server/it/openrtb2/rubicon_appnexus/test-auction-rubicon-appnexus-response.json @@ -349,7 +349,7 @@ "appnexus": [ { "uri": "{{ appnexus.exchange_uri }}?member_id=103", - "requestbody": "{\"id\":\"tid\",\"imp\":[{\"id\":\"impId3\",\"banner\":{\"format\":[{\"w\":300,\"h\":250},{\"w\":300,\"h\":600}],\"w\":300,\"h\":250,\"pos\":3},\"tagid\":\"abc\",\"bidfloor\":1.0,\"ext\":{\"appnexus\":{\"keywords\":\"foo=bar,foo=baz\",\"traffic_source_code\":\"trafficSource\"}}},{\"id\":\"impId131\",\"native\":{\"request\":\"{\\\"ver\\\":\\\"1.1\\\",\\\"context\\\":1,\\\"contextsubtype\\\":11,\\\"plcmttype\\\":4,\\\"plcmtcnt\\\":1,\\\"assets\\\":[{\\\"id\\\":0,\\\"required\\\":1,\\\"title\\\":{\\\"len\\\":500}},{\\\"id\\\":1,\\\"required\\\":1,\\\"img\\\":{\\\"type\\\":3,\\\"wmin\\\":1,\\\"hmin\\\":1}},{\\\"id\\\":2,\\\"required\\\":0,\\\"data\\\":{\\\"len\\\":200}},{\\\"id\\\":3,\\\"required\\\":0,\\\"data\\\":{\\\"type\\\":2,\\\"len\\\":15000}},{\\\"id\\\":4,\\\"required\\\":0,\\\"data\\\":{\\\"len\\\":40}},{\\\"id\\\":5,\\\"required\\\":0,\\\"data\\\":{\\\"type\\\":11}}]}\",\"ver\":\"1.1\"},\"ext\":{\"appnexus\":{\"placement_id\":9880618}}}],\"site\":{\"domain\":\"example.com\",\"page\":\"http://www.example.com\",\"publisher\":{\"id\":\"5001\"},\"ext\":{\"amp\":0}},\"device\":{\"ua\":\"userAgent\",\"dnt\":2,\"ip\":\"80.215.195.0\",\"pxratio\":4.2,\"language\":\"en\",\"ext\":{\"prebid\":{\"interstitial\":{\"minwidthperc\":50,\"minheightperc\":60}}}},\"user\":{\"data\":[{\"segment\":[{\"id\":\"segmentId1\"},{\"id\":\"segmentId2\"}],\"ext\":{\"taxonomyname\":\"Iab\"}}],\"ext\":{\"consent\":\"BOEFEAyOEFEAyAHABDENAIgAAAB9vABAASA\"}},\"at\":1,\"tmax\":5000,\"cur\":[\"USD\"],\"source\":{\"fd\":1,\"tid\":\"tid\",\"ext\":{\"schain\":{\"ver\":\"1.0\"}}},\"regs\":{\"ext\":{\"us_privacy\":\"1YNN\"}},\"ext\":{\"prebid\":{\"debug\":1,\"aliases\":{\"appnexusAlias\":\"appnexus\"},\"currency\":{\"rates\":{\"EUR\":{\"USD\":1.2406},\"USD\":{\"EUR\":0.811}},\"usepbsrates\":false},\"targeting\":{\"pricegranularity\":{\"precision\":2,\"ranges\":[{\"max\":20,\"increment\":0.1}]},\"includewinners\":true,\"includebidderkeys\":true},\"cache\":{\"bids\":{},\"vastxml\":{\"ttlseconds\":120}},\"events\":{},\"auctiontimestamp\":1000,\"integration\":\"dmbjs\",\"channel\":{\"name\":\"web\"}}}}", + "requestbody": "{\"id\":\"tid\",\"imp\":[{\"id\":\"impId3\",\"banner\":{\"format\":[{\"w\":300,\"h\":250},{\"w\":300,\"h\":600}],\"w\":300,\"h\":250,\"pos\":3},\"tagid\":\"abc\",\"bidfloor\":1.0,\"ext\":{\"appnexus\":{\"keywords\":\"foo=bar,foo=baz\",\"traffic_source_code\":\"trafficSource\"}}},{\"id\":\"impId131\",\"native\":{\"request\":\"{\\\"ver\\\":\\\"1.1\\\",\\\"context\\\":1,\\\"contextsubtype\\\":11,\\\"plcmttype\\\":4,\\\"plcmtcnt\\\":1,\\\"assets\\\":[{\\\"id\\\":0,\\\"required\\\":1,\\\"title\\\":{\\\"len\\\":500}},{\\\"id\\\":1,\\\"required\\\":1,\\\"img\\\":{\\\"type\\\":3,\\\"wmin\\\":1,\\\"hmin\\\":1}},{\\\"id\\\":2,\\\"required\\\":0,\\\"data\\\":{\\\"len\\\":200}},{\\\"id\\\":3,\\\"required\\\":0,\\\"data\\\":{\\\"type\\\":2,\\\"len\\\":15000}},{\\\"id\\\":4,\\\"required\\\":0,\\\"data\\\":{\\\"len\\\":40}},{\\\"id\\\":5,\\\"required\\\":0,\\\"data\\\":{\\\"type\\\":11}}]}\",\"ver\":\"1.1\"},\"ext\":{\"appnexus\":{\"placement_id\":9880618}}}],\"site\":{\"domain\":\"example.com\",\"page\":\"http://www.example.com\",\"publisher\":{\"id\":\"5001\"},\"ext\":{\"amp\":0}},\"device\":{\"ua\":\"userAgent\",\"dnt\":2,\"ip\":\"80.215.195.0\",\"pxratio\":4.2,\"language\":\"en\",\"ext\":{\"prebid\":{\"interstitial\":{\"minwidthperc\":50,\"minheightperc\":60}}}},\"user\":{\"data\":[{\"segment\":[{\"id\":\"segmentId1\"},{\"id\":\"segmentId2\"}],\"ext\":{\"segtax\":3}}],\"ext\":{\"consent\":\"BOEFEAyOEFEAyAHABDENAIgAAAB9vABAASA\"}},\"at\":1,\"tmax\":5000,\"cur\":[\"USD\"],\"source\":{\"fd\":1,\"tid\":\"tid\",\"ext\":{\"schain\":{\"ver\":\"1.0\"}}},\"regs\":{\"ext\":{\"us_privacy\":\"1YNN\"}},\"ext\":{\"prebid\":{\"debug\":1,\"aliases\":{\"appnexusAlias\":\"appnexus\"},\"currency\":{\"rates\":{\"EUR\":{\"USD\":1.2406},\"USD\":{\"EUR\":0.811}},\"usepbsrates\":false},\"targeting\":{\"pricegranularity\":{\"precision\":2,\"ranges\":[{\"max\":20,\"increment\":0.1}]},\"includewinners\":true,\"includebidderkeys\":true},\"cache\":{\"bids\":{},\"vastxml\":{\"ttlseconds\":120}},\"events\":{},\"auctiontimestamp\":1000,\"integration\":\"dmbjs\",\"channel\":{\"name\":\"web\"}}}}", "responsebody": "{\"id\":\"tid\",\"seatbid\":[{\"seat\":\"958\",\"bid\":[{\"id\":\"7706636740145184841\",\"impid\":\"impId3\",\"price\":5.5,\"adid\":\"29681110\",\"adm\":\"some-test-ad\",\"adomain\":[\"appnexus.com\"],\"iurl\":\"http://nym1-ib.adnxs.com/cr?id=29681110\",\"cid\":\"958\",\"crid\":\"29681110\",\"h\":250,\"w\":300,\"ext\":{\"appnexus\":{\"brand_id\":1,\"auction_id\":8189378542222915032,\"bidder_id\":2,\"bid_ad_type\":0,\"ranking_price\":0.0}}},{\"id\":\"928185755156387460\",\"impid\":\"impId131\",\"price\":1.0,\"adid\":\"69595837\",\"adm\":\"{\\\"assets\\\":[{\\\"id\\\":0,\\\"img\\\":{\\\"url\\\":\\\"http://vcdn.adnxs.com/p/creative-image/5e/b6/de/c3/5eb6dec3-4854-4dcd-980a-347f36ab502e.jpg\\\",\\\"w\\\":3000,\\\"h\\\":2250,\\\"ext\\\":{\\\"appnexus\\\":{\\\"prevent_crop\\\":0}}}},{\\\"id\\\":1,\\\"title\\\":{\\\"text\\\":\\\"This is an example Prebid Native creative\\\"}},{\\\"id\\\":2,\\\"data\\\":{\\\"value\\\":\\\"Prebid.org\\\"}},{\\\"id\\\":3,\\\"data\\\":{\\\"value\\\":\\\"ThisisaPrebidNativeCreative.Therearemanylikeit,butthisoneismine.\\\"}}],\\\"link\\\":{\\\"url\\\":\\\"http://nym1-ib.adnxs.com/click?AAAAAAAA8D8AAAAAAADwPwAAAAAAAAAAAAAAAAAA8D8AAAAAAADwPwhdYz3ZyNFNG3fXpZUyLXNZ0o5aAAAAACrElgC-AwAAvgMAAAIAAAC98iUEeP4QAAAAAABVU0QAVVNEAAEAAQARIAAAAAABAgQCAAAAAAEAhBaSXgAAAAA./pp=${AUCTION_PRICE}/cnd=%21OwwGAQiGmooHEL3llyEY-PxDIAQoADoRZGVmYXVsdCNOWU0yOjQwMjM./bn=75922/test=1/referrer=prebid.org/clickenc=http%3A%2F%2Fprebid.org%2Fdev-docs%2Fshow-native-ads.html\\\"},\\\"imptrackers\\\":[\\\"http://nym1-ib.adnxs.com/openrtb_win?e=wqT_3QLFBqBFAwAAAwDWAAUBCNmku9QFEIi6jeuTm_LoTRib7t2u2tLMlnMqNgkAAAECCPA_EQEHEAAA8D8ZCQkIAAAhCQkI8D8pEQkAMQkJqAAAMKqI2wQ4vgdAvgdIAlC95ZchWPj8Q2AAaJFAeJLRBIABAYoBA1VTRJIFBvBQmAEBoAEBqAEBsAEAuAECwAEEyAEC0AEJ2AEA4AEB8AEAigI7dWYoJ2EnLCAxMzc2ODYwLCAxNTE5MzA5NDAxKTt1ZigncicsIDY5NTk1ODM3Nh4A8IqSAvUBIXRETkdfUWlHbW9vSEVMM2xseUVZQUNENF9FTXdBRGdBUUFSSXZnZFFxb2piQkZnQVlMTURhQUJ3QUhnQWdBRUFpQUVBa0FFQm1BRUJvQUVCcUFFRHNBRUF1UUVwaTRpREFBRHdQOEVCS1l1SWd3QUE4RF9KQVhfelYzek1zXzBfMlFFQUFBAQMkRHdQLUFCQVBVQgEOLEFKZ0NBS0FDQUxVQwUQBEwwCQjwTE1BQ0FNZ0NBT0FDQU9nQ0FQZ0NBSUFEQVpBREFKZ0RBYWdEaHBxS0I3b0RFV1JsWm1GMWJIUWpUbGxOTWpvME1ESXqaAjkhT3d3R0FRNvgA8E4tUHhESUFRb0FEb1JaR1ZtWVhWc2RDTk9XVTB5T2pRd01qTS7YAugH4ALH0wHqAgpwcmViaWQub3Jn8gIRCgZBRFZfSUQSBzEzNzY4NjDyARQMQ1BHXwEUNDM1MDMwOTjyAhEKBUNQARPwmQgxNDg0NzIzOIADAYgDAZADAJgDFKADAaoDAMADkBzIAwDYAwDgAwDoAwD4AwOABACSBAkvb3BlbnJ0YjKYBACiBAwxNTIuMTkzLjYuNzSoBJrMI7IEDAgAEAAYACAAMAA4ALgEAMAEAMgEANIEEWRlZmF1bHQjTllNMjo0MDIz2gQCCADgBADwBL3llyGIBQGYBQCgBf____8FA1ABqgULc29tZS1yZXEtaWTABQDJBQAFARTwP9IFCQkFC2QAAADYBQHgBQHwBd4C-gUECAAQAJAGAZgGAA..&s=08b1535744639c904684afe46e3c6c0e4786089f&test=1&referrer=prebid.org&pp=${AUCTION_PRICE}\\\"],\\\"jstracker\\\":\\\"\\\"}\",\"adomain\":[\"appnexus.com\"],\"iurl\":\"http://nym1-ib.adnxs.com/cr?id=69595837\",\"cid\":\"958\",\"crid\":\"69595837\",\"ext\":{\"appnexus\":{\"brand_id\":1,\"brand_category_id\":1,\"auction_id\":5607483846416358664,\"bidder_id\":2,\"bid_ad_type\":3}}}]}],\"bidid\":\"5778926625248726496\",\"cur\":\"USD\"}", "status": 200 } @@ -357,7 +357,7 @@ "appnexusAlias": [ { "uri": "{{ appnexus.exchange_uri }}?member_id=104", - "requestbody": "{\"id\":\"tid\",\"imp\":[{\"id\":\"impId3\",\"banner\":{\"format\":[{\"w\":300,\"h\":250},{\"w\":300,\"h\":600}],\"w\":300,\"h\":250,\"pos\":1},\"tagid\":\"abc\",\"bidfloor\":1.0,\"ext\":{\"appnexus\":{\"keywords\":\"foo=barAlias,foo=bazAlias\",\"traffic_source_code\":\"trafficSourceAlias\"}}}],\"site\":{\"domain\":\"example.com\",\"page\":\"http://www.example.com\",\"publisher\":{\"id\":\"5001\"},\"ext\":{\"amp\":0}},\"device\":{\"ua\":\"userAgent\",\"dnt\":2,\"ip\":\"80.215.195.0\",\"pxratio\":4.2,\"language\":\"en\",\"ext\":{\"prebid\":{\"interstitial\":{\"minwidthperc\":50,\"minheightperc\":60}}}},\"user\":{\"data\":[{\"segment\":[{\"id\":\"segmentId1\"},{\"id\":\"segmentId2\"}],\"ext\":{\"taxonomyname\":\"Iab\"}}],\"ext\":{\"consent\":\"BOEFEAyOEFEAyAHABDENAIgAAAB9vABAASA\"}},\"at\":1,\"tmax\":5000,\"cur\":[\"USD\"],\"source\":{\"fd\":1,\"tid\":\"tid\",\"ext\":{\"schain\":{\"ver\":\"1.0\"}}},\"regs\":{\"ext\":{\"us_privacy\":\"1YNN\"}},\"ext\":{\"prebid\":{\"debug\":1,\"aliases\":{\"appnexusAlias\":\"appnexus\"},\"currency\":{\"rates\":{\"EUR\":{\"USD\":1.2406},\"USD\":{\"EUR\":0.811}},\"usepbsrates\":false},\"targeting\":{\"pricegranularity\":{\"precision\":2,\"ranges\":[{\"max\":20,\"increment\":0.1}]},\"includewinners\":true,\"includebidderkeys\":true},\"cache\":{\"bids\":{},\"vastxml\":{\"ttlseconds\":120}},\"events\":{},\"auctiontimestamp\":1000,\"integration\":\"dmbjs\",\"channel\":{\"name\":\"web\"}}}}", + "requestbody": "{\"id\":\"tid\",\"imp\":[{\"id\":\"impId3\",\"banner\":{\"format\":[{\"w\":300,\"h\":250},{\"w\":300,\"h\":600}],\"w\":300,\"h\":250,\"pos\":1},\"tagid\":\"abc\",\"bidfloor\":1.0,\"ext\":{\"appnexus\":{\"keywords\":\"foo=barAlias,foo=bazAlias\",\"traffic_source_code\":\"trafficSourceAlias\"}}}],\"site\":{\"domain\":\"example.com\",\"page\":\"http://www.example.com\",\"publisher\":{\"id\":\"5001\"},\"ext\":{\"amp\":0}},\"device\":{\"ua\":\"userAgent\",\"dnt\":2,\"ip\":\"80.215.195.0\",\"pxratio\":4.2,\"language\":\"en\",\"ext\":{\"prebid\":{\"interstitial\":{\"minwidthperc\":50,\"minheightperc\":60}}}},\"user\":{\"data\":[{\"segment\":[{\"id\":\"segmentId1\"},{\"id\":\"segmentId2\"}],\"ext\":{\"segtax\":3}}],\"ext\":{\"consent\":\"BOEFEAyOEFEAyAHABDENAIgAAAB9vABAASA\"}},\"at\":1,\"tmax\":5000,\"cur\":[\"USD\"],\"source\":{\"fd\":1,\"tid\":\"tid\",\"ext\":{\"schain\":{\"ver\":\"1.0\"}}},\"regs\":{\"ext\":{\"us_privacy\":\"1YNN\"}},\"ext\":{\"prebid\":{\"debug\":1,\"aliases\":{\"appnexusAlias\":\"appnexus\"},\"currency\":{\"rates\":{\"EUR\":{\"USD\":1.2406},\"USD\":{\"EUR\":0.811}},\"usepbsrates\":false},\"targeting\":{\"pricegranularity\":{\"precision\":2,\"ranges\":[{\"max\":20,\"increment\":0.1}]},\"includewinners\":true,\"includebidderkeys\":true},\"cache\":{\"bids\":{},\"vastxml\":{\"ttlseconds\":120}},\"events\":{},\"auctiontimestamp\":1000,\"integration\":\"dmbjs\",\"channel\":{\"name\":\"web\"}}}}", "responsebody": "{\"id\":\"tid\",\"seatbid\":[{\"seat\":\"959\",\"bid\":[{\"id\":\"7706636740145184840\",\"impid\":\"impId3\",\"price\":5.0,\"adid\":\"29681110\",\"adm\":\"some-test-ad\",\"adomain\":[\"appnexus.com\"],\"iurl\":\"http://nym1-ib.adnxs.com/cr?id=29681110\",\"cid\":\"958\",\"crid\":\"29681110\",\"h\":250,\"w\":300,\"cat\":[\"IAB20-3\"],\"ext\":{\"appnexus\":{\"brand_id\":350,\"brand_category_id\":350,\"auction_id\":8189378542222915031,\"bidder_id\":2,\"bid_ad_type\":0,\"ranking_price\":0.0}}}]}],\"bidid\":\"5778926625248726496\",\"cur\":\"USD\"}", "status": 200 } @@ -365,13 +365,13 @@ "rubicon": [ { "uri": "{{ rubicon.exchange_uri }}?tk_xint=dmbjs", - "requestbody": "{\"id\":\"tid\",\"imp\":[{\"id\":\"impId1\",\"video\":{\"mimes\":[\"mimes\"],\"minduration\":20,\"maxduration\":60,\"protocols\":[1],\"w\":300,\"h\":250,\"startdelay\":5,\"skipmin\":0,\"skipafter\":0,\"playbackmethod\":[1],\"ext\":{\"skip\":5,\"skipdelay\":1,\"rp\":{\"size_id\":15},\"videotype\":\"rewarded\"}},\"ext\":{\"rp\":{\"zone_id\":4001,\"target\":{\"rating\":[\"5-star\"],\"prodtype\":[\"tech\"],\"page\":[\"http://www.example.com\"]},\"track\":{\"mint\":\"\",\"mint_version\":\"\"}},\"maxbids\":1}}],\"site\":{\"domain\":\"example.com\",\"page\":\"http://www.example.com\",\"publisher\":{\"ext\":{\"rp\":{\"account_id\":2001}}},\"ext\":{\"amp\":0,\"rp\":{\"site_id\":3001}}},\"device\":{\"ua\":\"userAgent\",\"dnt\":2,\"ip\":\"80.215.195.0\",\"pxratio\":4.2,\"language\":\"en\",\"ext\":{\"rp\":{\"pixelratio\":4.2}}},\"user\":{\"data\":[{\"segment\":[{\"id\":\"segmentId1\"},{\"id\":\"segmentId2\"}],\"ext\":{\"taxonomyname\":\"Iab\"}}],\"ext\":{\"consent\":\"BOEFEAyOEFEAyAHABDENAIgAAAB9vABAASA\",\"rp\":{\"target\":{\"ucat\":[\"new\"],\"search\":[\"iphone\"],\"iab\":[\"segmentId1\",\"segmentId2\"]}}}},\"at\":1,\"tmax\":5000,\"source\":{\"fd\":1,\"tid\":\"tid\",\"ext\":{\"schain\":{\"ver\":\"1.0\",\"complete\":1,\"nodes\":[{\"asi\":\"superads.com\",\"sid\":\"123\",\"hp\":1}]}}},\"regs\":{\"ext\":{\"us_privacy\":\"1YNN\"}}}", + "requestbody": "{\"id\":\"tid\",\"imp\":[{\"id\":\"impId1\",\"video\":{\"mimes\":[\"mimes\"],\"minduration\":20,\"maxduration\":60,\"protocols\":[1],\"w\":300,\"h\":250,\"startdelay\":5,\"skipmin\":0,\"skipafter\":0,\"playbackmethod\":[1],\"ext\":{\"skip\":5,\"skipdelay\":1,\"rp\":{\"size_id\":15},\"videotype\":\"rewarded\"}},\"ext\":{\"rp\":{\"zone_id\":4001,\"target\":{\"rating\":[\"5-star\"],\"prodtype\":[\"tech\"],\"page\":[\"http://www.example.com\"]},\"track\":{\"mint\":\"\",\"mint_version\":\"\"}},\"maxbids\":1}}],\"site\":{\"domain\":\"example.com\",\"page\":\"http://www.example.com\",\"publisher\":{\"ext\":{\"rp\":{\"account_id\":2001}}},\"ext\":{\"amp\":0,\"rp\":{\"site_id\":3001}}},\"device\":{\"ua\":\"userAgent\",\"dnt\":2,\"ip\":\"80.215.195.0\",\"pxratio\":4.2,\"language\":\"en\",\"ext\":{\"rp\":{\"pixelratio\":4.2}}},\"user\":{\"data\":[{\"segment\":[{\"id\":\"segmentId1\"},{\"id\":\"segmentId2\"}],\"ext\":{\"segtax\":3}}],\"ext\":{\"consent\":\"BOEFEAyOEFEAyAHABDENAIgAAAB9vABAASA\",\"rp\":{\"target\":{\"ucat\":[\"new\"],\"search\":[\"iphone\"],\"iab\":[\"segmentId1\",\"segmentId2\"]}}}},\"at\":1,\"tmax\":5000,\"source\":{\"fd\":1,\"tid\":\"tid\",\"ext\":{\"schain\":{\"ver\":\"1.0\",\"complete\":1,\"nodes\":[{\"asi\":\"superads.com\",\"sid\":\"123\",\"hp\":1}]}}},\"regs\":{\"ext\":{\"us_privacy\":\"1YNN\"}}}", "responsebody": "{\"id\":\"bidResponseId1\",\"seatbid\":[{\"bid\":[{\"id\":\"880290288\",\"impid\":\"impId1\",\"price\":8.43,\"adm\":\"\",\"crid\":\"crid1\",\"w\":300,\"h\":250,\"ext\":{\"rp\":{\"targeting\":[{\"key\":\"rpfl_1001\",\"values\":[\"2_tier0100\"]}]}}}],\"seat\":\"seatId1\",\"group\":0}]}", "status": 200 }, { "uri": "{{ rubicon.exchange_uri }}?tk_xint=dmbjs", - "requestbody": "{\"id\":\"tid\",\"imp\":[{\"id\":\"impId2\",\"banner\":{\"format\":[{\"w\":300,\"h\":600}],\"w\":300,\"h\":600,\"ext\":{\"rp\":{\"size_id\":10,\"mime\":\"text/html\"}}},\"ext\":{\"rp\":{\"zone_id\":7001,\"target\":{\"page\":[\"http://www.example.com\"]},\"track\":{\"mint\":\"\",\"mint_version\":\"\"}},\"maxbids\":1}}],\"site\":{\"domain\":\"example.com\",\"page\":\"http://www.example.com\",\"publisher\":{\"ext\":{\"rp\":{\"account_id\":5001}}},\"ext\":{\"amp\":0,\"rp\":{\"site_id\":6001}}},\"device\":{\"ua\":\"userAgent\",\"dnt\":2,\"ip\":\"80.215.195.0\",\"pxratio\":4.2,\"language\":\"en\",\"ext\":{\"rp\":{\"pixelratio\":4.2}}},\"user\":{\"data\":[{\"segment\":[{\"id\":\"segmentId1\"},{\"id\":\"segmentId2\"}],\"ext\":{\"taxonomyname\":\"Iab\"}}],\"ext\":{\"consent\":\"BOEFEAyOEFEAyAHABDENAIgAAAB9vABAASA\",\"rp\":{\"target\":{\"iab\":[\"segmentId1\",\"segmentId2\"]}}}},\"at\":1,\"tmax\":5000,\"source\":{\"fd\":1,\"tid\":\"tid\",\"ext\":{\"schain\":{\"ver\":\"1.0\",\"complete\":1,\"nodes\":[{\"asi\":\"superads.com\",\"sid\":\"123\",\"hp\":1}]}}},\"regs\":{\"ext\":{\"us_privacy\":\"1YNN\"}}}", + "requestbody": "{\"id\":\"tid\",\"imp\":[{\"id\":\"impId2\",\"banner\":{\"format\":[{\"w\":300,\"h\":600}],\"w\":300,\"h\":600,\"ext\":{\"rp\":{\"size_id\":10,\"mime\":\"text/html\"}}},\"ext\":{\"rp\":{\"zone_id\":7001,\"target\":{\"page\":[\"http://www.example.com\"]},\"track\":{\"mint\":\"\",\"mint_version\":\"\"}},\"maxbids\":1}}],\"site\":{\"domain\":\"example.com\",\"page\":\"http://www.example.com\",\"publisher\":{\"ext\":{\"rp\":{\"account_id\":5001}}},\"ext\":{\"amp\":0,\"rp\":{\"site_id\":6001}}},\"device\":{\"ua\":\"userAgent\",\"dnt\":2,\"ip\":\"80.215.195.0\",\"pxratio\":4.2,\"language\":\"en\",\"ext\":{\"rp\":{\"pixelratio\":4.2}}},\"user\":{\"data\":[{\"segment\":[{\"id\":\"segmentId1\"},{\"id\":\"segmentId2\"}],\"ext\":{\"segtax\":3}}],\"ext\":{\"consent\":\"BOEFEAyOEFEAyAHABDENAIgAAAB9vABAASA\",\"rp\":{\"target\":{\"iab\":[\"segmentId1\",\"segmentId2\"]}}}},\"at\":1,\"tmax\":5000,\"source\":{\"fd\":1,\"tid\":\"tid\",\"ext\":{\"schain\":{\"ver\":\"1.0\",\"complete\":1,\"nodes\":[{\"asi\":\"superads.com\",\"sid\":\"123\",\"hp\":1}]}}},\"regs\":{\"ext\":{\"us_privacy\":\"1YNN\"}}}", "responsebody": "{\"id\":\"bidResponseId2\",\"seatbid\":[{\"bid\":[{\"id\":\"466223845\",\"impid\":\"impId2\",\"price\":4.26,\"adm\":\"adm2\",\"crid\":\"crid2\",\"w\":300,\"h\":600}],\"seat\":\"seatId2\",\"group\":0}]}", "status": 200 } @@ -606,7 +606,7 @@ "data": [ { "ext": { - "taxonomyname": "Iab" + "segtax": 3 }, "segment": [ { diff --git a/src/test/resources/org/prebid/server/it/openrtb2/rubicon_appnexus/test-rubicon-bid-request-1.json b/src/test/resources/org/prebid/server/it/openrtb2/rubicon_appnexus/test-rubicon-bid-request-1.json index 996aa9f623c..4ed9ea4069b 100644 --- a/src/test/resources/org/prebid/server/it/openrtb2/rubicon_appnexus/test-rubicon-bid-request-1.json +++ b/src/test/resources/org/prebid/server/it/openrtb2/rubicon_appnexus/test-rubicon-bid-request-1.json @@ -85,7 +85,7 @@ "data": [ { "ext": { - "taxonomyname": "Iab" + "segtax": 3 }, "segment": [ { diff --git a/src/test/resources/org/prebid/server/it/openrtb2/rubicon_appnexus/test-rubicon-bid-request-2.json b/src/test/resources/org/prebid/server/it/openrtb2/rubicon_appnexus/test-rubicon-bid-request-2.json index 6ea71c88977..11e8f042646 100644 --- a/src/test/resources/org/prebid/server/it/openrtb2/rubicon_appnexus/test-rubicon-bid-request-2.json +++ b/src/test/resources/org/prebid/server/it/openrtb2/rubicon_appnexus/test-rubicon-bid-request-2.json @@ -69,7 +69,7 @@ "data": [ { "ext": { - "taxonomyname": "Iab" + "segtax": 3 }, "segment": [ {