diff --git a/CHANGELOG.md b/CHANGELOG.md
index 7c4518cb..e8e8e1a4 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,10 @@
# Changelog
+# 8.10.1
+## Fixed ADID Google play policy changes
+
+* Added ADID Google Play services normal permission.
+
# 8.10.0
## Hosted Auth Support for Progressive Submission
diff --git a/app/src/debug/AndroidManifest.xml b/app/src/debug/AndroidManifest.xml
index 3447f1fc..c563f437 100644
--- a/app/src/debug/AndroidManifest.xml
+++ b/app/src/debug/AndroidManifest.xml
@@ -6,6 +6,8 @@
+
+
+
+
+
diff --git a/bvcommon/src/main/AndroidManifest.xml b/bvcommon/src/main/AndroidManifest.xml
index cbc98ea4..80c5a15a 100644
--- a/bvcommon/src/main/AndroidManifest.xml
+++ b/bvcommon/src/main/AndroidManifest.xml
@@ -2,5 +2,6 @@
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.bazaarvoice.bvandroidsdk_common">
+
diff --git a/bvconversations/src/main/AndroidManifest.xml b/bvconversations/src/main/AndroidManifest.xml
index 401167a9..07f531cd 100644
--- a/bvconversations/src/main/AndroidManifest.xml
+++ b/bvconversations/src/main/AndroidManifest.xml
@@ -2,5 +2,6 @@
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.bazaarvoice.bvandroidsdk_conversations">
+
diff --git a/bvconversations/src/main/java/com/bazaarvoice/bvandroidsdk/AuthorOptions.java b/bvconversations/src/main/java/com/bazaarvoice/bvandroidsdk/AuthorOptions.java
index e104aa78..2f61e116 100644
--- a/bvconversations/src/main/java/com/bazaarvoice/bvandroidsdk/AuthorOptions.java
+++ b/bvconversations/src/main/java/com/bazaarvoice/bvandroidsdk/AuthorOptions.java
@@ -47,7 +47,7 @@ public String getValue() {
}
}
- public enum FilterOptions {
+ public enum Filter implements UGCOption {
ID("Id"),
CONTENT_LOCALE("ContentLocale"),
HAS_PHOTOS("HasPhotos"),
@@ -60,14 +60,14 @@ public enum FilterOptions {
TOTAL_REVIEW_COUNT("TotalReviewCount"),
USER_LOCATION("UserLocation");
- private String value;
+ private final String key;
- FilterOptions(String value) {
- this.value = value;
+ Filter(String key) {
+ this.key = key;
}
- public String getValue() {
- return value;
+ public String getKey() {
+ return this.key;
}
// AdditionalField_[FIELD_NAME]
@@ -77,4 +77,5 @@ public String getValue() {
// The context data value for the content. DIMENSION_EXTERNAL_ID can be age, gender, etc. e.g. filter=contextdatavalue_age:under21&filter=contextdatavalue_gender:male
}
+
}
diff --git a/bvconversations/src/main/java/com/bazaarvoice/bvandroidsdk/BVConversationsClient.java b/bvconversations/src/main/java/com/bazaarvoice/bvandroidsdk/BVConversationsClient.java
index 4e320061..2e57acc2 100644
--- a/bvconversations/src/main/java/com/bazaarvoice/bvandroidsdk/BVConversationsClient.java
+++ b/bvconversations/src/main/java/com/bazaarvoice/bvandroidsdk/BVConversationsClient.java
@@ -114,11 +114,11 @@ public LoadCallDisplay prepareCall(ReviewsReques
return factoryCreateDisplayCall(ReviewResponse.class, request);
}
/**
- * @param request TopicFilterRequest to be sent
+ * @param request FeatureRequest to be sent
* @return LoadCall object with the request ready to be sent
*/
- public LoadCallDisplay prepareCall(TopicFilterRequest request) {
- return factoryCreateDisplayCall(TopicFilterResponse.class, request);
+ public LoadCallDisplay prepareCall(FeaturesRequest request) {
+ return factoryCreateDisplayCall(FeaturesResponse.class, request);
}
public LoadCallDisplay prepareCall(StoreReviewsRequest request) {
diff --git a/bvconversations/src/main/java/com/bazaarvoice/bvandroidsdk/BVSecondaryRatingFilter.java b/bvconversations/src/main/java/com/bazaarvoice/bvandroidsdk/BVSecondaryRatingFilter.java
new file mode 100644
index 00000000..258da647
--- /dev/null
+++ b/bvconversations/src/main/java/com/bazaarvoice/bvandroidsdk/BVSecondaryRatingFilter.java
@@ -0,0 +1,26 @@
+package com.bazaarvoice.bvandroidsdk;
+
+public final class BVSecondaryRatingFilter {
+
+ private final String type;
+ private final EqualityOperator equalityOperator;
+ private final String value;
+
+ public BVSecondaryRatingFilter(String type, EqualityOperator equalityOperator, String value) {
+ this.type = type;
+ this.equalityOperator = equalityOperator;
+ this.value = value;
+ }
+
+ public String getType() {
+ return type;
+ }
+
+ public EqualityOperator getEqualityOperator() {
+ return equalityOperator;
+ }
+
+ public String getValue() {
+ return value;
+ }
+}
\ No newline at end of file
diff --git a/bvconversations/src/main/java/com/bazaarvoice/bvandroidsdk/BasicRequestFactory.java b/bvconversations/src/main/java/com/bazaarvoice/bvandroidsdk/BasicRequestFactory.java
index 29586f34..ea20ac51 100644
--- a/bvconversations/src/main/java/com/bazaarvoice/bvandroidsdk/BasicRequestFactory.java
+++ b/bvconversations/src/main/java/com/bazaarvoice/bvandroidsdk/BasicRequestFactory.java
@@ -48,12 +48,18 @@ class BasicRequestFactory implements RequestFactory {
private static final String kSORT_REVIEW = "Sort_Reviews";
private static final String kSORT_QUESTIONS = "Sort_Questions";
private static final String kSORT_ANSWERS = "Sort_Answers";
+ private static final String kFILTER_REVIEW = "Filter_Reviews";
+ private static final String kFILTER_QUESTIONS = "Filter_Questions";
+ private static final String kFILTER_AUTHORS = "Filter_Authors";
+ private static final String kFILTER_COMMENTS = "Filter_Comments";
private static final String kINCLUDE = "Include";
private static final String kSTATS = "Stats";
private static final String kLIMIT = "Limit";
private static final String kOFFSET = "Offset";
private static final String kSEARCH = "Search";
private static final String kINCENTIVIZED_STATS = "incentivizedstats";
+ private static final String kSECONDARY_RATING_STATS = "secondaryratingstats";
+ private static final String kTAG_STATS = "tagstats";
private static final String kFEATURES = "feature";
private static final String kProductId = "productId";
private static final String kLanguage = "language";
@@ -136,7 +142,9 @@ class BasicRequestFactory implements RequestFactory {
private static final String VIDEO_CAPTION_TEMPLATE = "VideoCaption_%d";
private static final String KEY_RATING_TEMPLATE = "rating_%s";
private static final String KEY_CDV_TEMPLATE = "contextdatavalue_%s";
+ private static final String KEY_SECONDARY_RATING_TEMPLATE = "SecondaryRating_%s";
private static final String KEY_FREEFORM_TAG_TEMPLATE = "tag_%s_%d";
+ private static final String KEY_TAG_FILTER_TEMPLATE = "tag_%s";
// endregion
// region Submit Question Request Keys
@@ -233,8 +241,8 @@ public Request create(RequestType req
return createFromBulkProductRequest((BulkProductRequest) request);
} else if (request instanceof ProductDisplayPageRequest) {
return createFromProductDisplayPageRequest((ProductDisplayPageRequest) request);
- } else if (request instanceof TopicFilterRequest) {
- return createFromTopicFilterRequest((TopicFilterRequest) request);
+ } else if (request instanceof FeaturesRequest) {
+ return createFromFeaturesRequest((FeaturesRequest) request);
}else if (request instanceof FeedbackSubmissionRequest) {
return createFromFeedbackSubmissionRequest((FeedbackSubmissionRequest) request);
} else if (request instanceof ReviewSubmissionRequest) {
@@ -385,6 +393,14 @@ private Request createFromReviewRequest(ReviewsRequest request) {
httpUrlBuilder.addQueryParameter(kINCENTIVIZED_STATS, request.getIncentivizedStats().toString());
}
+ if (request.getSecondaryratingstats()) {
+ httpUrlBuilder.addQueryParameter(kSECONDARY_RATING_STATS, request.getSecondaryratingstats().toString());
+ }
+
+ if (request.getTagStats()) {
+ httpUrlBuilder.addQueryParameter(kTAG_STATS, request.getTagStats().toString());
+ }
+
if (request.getFeatures() != null) {
httpUrlBuilder.addQueryParameter(kFEATURES, request.getFeatures());
}
@@ -407,6 +423,38 @@ private Request createFromReviewRequest(ReviewsRequest request) {
httpUrlBuilder.addQueryParameter(kSTATS, statsParam);
}
+ if (request.getContextDataValues()!= null) {
+ final Set contextDataValueKeys = request.getContextDataValues().keySet();
+ for (String key : contextDataValueKeys) {
+ String value = getContextDataValue(key,request.getContextDataValues().get(key));
+ httpUrlBuilder
+ .addEncodedQueryParameter(kFILTER, value);
+ }
+ }
+
+ if (request.getAdditionalFields()!= null) {
+ final Set additionalFields = request.getAdditionalFields().keySet();
+ for (String key : additionalFields) {
+ String value = addAdditionalQueryParam(key,request.getAdditionalFields().get(key));
+ httpUrlBuilder.addEncodedQueryParameter(kFILTER, value);
+ }
+ }
+
+ if (request.getSecondaryRatings()!= null) {
+ for (BVSecondaryRatingFilter secondaryRatingFilters : request.getSecondaryRatings() ) {
+ String value = addSecondaryRatingsQueryParam(secondaryRatingFilters.getType(), secondaryRatingFilters.getEqualityOperator(), secondaryRatingFilters.getValue());
+ httpUrlBuilder.addEncodedQueryParameter(kFILTER,value);
+ }
+ }
+
+ if (request.getTagFilters()!= null) {
+ final Set tagFilterValues = request.getTagFilters().keySet();
+ for (String key : tagFilterValues) {
+ String value = addTagQueryParam(key,request.getTagFilters().get(key));
+ httpUrlBuilder.addEncodedQueryParameter(kFILTER, value);
+ }
+ }
+
HttpUrl httpUrl = httpUrlBuilder.build();
Headers.Builder headersBuilder = new Headers.Builder();
@@ -419,6 +467,26 @@ private Request createFromReviewRequest(ReviewsRequest request) {
.build();
}
+ private String addSecondaryRatingsQueryParam(String type, EqualityOperator equalityOperator, String value) {
+ final String keyRating = String.format(Locale.US, KEY_SECONDARY_RATING_TEMPLATE, type);
+ return String.format("%s:%s:%s", keyRating,equalityOperator, value);
+ }
+
+ private String getContextDataValue(String key, String value) {
+ final String keyRating = String.format(Locale.US, KEY_CDV_TEMPLATE, key);
+ return String.format("%s:%s", keyRating, value);
+ }
+
+ private String addTagQueryParam(String type, String value) {
+ final String keyRating = String.format(Locale.US, KEY_TAG_FILTER_TEMPLATE, type);
+ return String.format("%s:%s",keyRating, value);
+ }
+
+ private String addAdditionalQueryParam(String key, String value) {
+ final String keyRating = String.format(Locale.US, KEY_ADDITIONAL_PARAM_TEMPLATE, key);
+ return String.format("%s:%s", keyRating, value);
+ }
+
private Request createFromQuestionAndAnswerRequest(QuestionAndAnswerRequest request) {
Request.Builder okRequestBuilder = new Request.Builder();
@@ -469,7 +537,7 @@ private Request createFromReviewHighlightsRequest(ReviewHighlightsRequest reques
.build();
}
- private Request createFromTopicFilterRequest(TopicFilterRequest request) {
+ private Request createFromFeaturesRequest(FeaturesRequest request) {
Request.Builder okRequestBuilder = new Request.Builder();
HttpUrl.Builder httpUrlBuilder = HttpUrl.parse(bvRootApiUrl)
@@ -687,6 +755,10 @@ private Request createFromBulkProductRequest(BulkProductRequest request) {
httpUrlBuilder.addQueryParameter(kINCENTIVIZED_STATS, request.getIncentivizedStats().toString());
}
+ if (request.getTagStats()) {
+ httpUrlBuilder.addQueryParameter(kTAG_STATS, request.getTagStats().toString());
+ }
+
HttpUrl httpUrl = httpUrlBuilder.build();
Headers.Builder headersBuilder = new Headers.Builder();
@@ -710,10 +782,18 @@ private Request createFromProductDisplayPageRequest(ProductDisplayPageRequest re
addCommonQueryParams(httpUrlBuilder, convApiKey, bvMobileInfo);
addCommonDisplayQueryParams(httpUrlBuilder, request);
addSortableProductParams(httpUrlBuilder, request);
+ addFilertableProductParams(httpUrlBuilder,request);
if (request.getIncentivizedStats()) {
httpUrlBuilder.addQueryParameter(kINCENTIVIZED_STATS, request.getIncentivizedStats().toString());
}
+ if (request.getSecondaryratingStats()) {
+ httpUrlBuilder.addQueryParameter(kSECONDARY_RATING_STATS, request.getSecondaryratingStats().toString());
+ }
+
+ if (request.getTagStats()) {
+ httpUrlBuilder.addQueryParameter(kTAG_STATS, request.getTagStats().toString());
+ }
HttpUrl httpUrl = httpUrlBuilder.build();
@@ -979,6 +1059,7 @@ private static void addCommonDisplayQueryParams(HttpUrl.Builder httpUrlBuilder,
addFilterQueryParams(httpUrlBuilder, request.getFilters());
addExtraQueryParams(httpUrlBuilder, request.getExtraParams());
addProductSortParam(httpUrlBuilder, request.getSorts());
+
}
private static void addFilterQueryParams(HttpUrl.Builder httpUrlBuilder, List filters) {
@@ -1028,6 +1109,39 @@ private static void addSortableProductParams(HttpUrl.Builder httpUrlBuilder, Sor
}
}
+ private static void addFilertableProductParams(HttpUrl.Builder httpUrlBuilder, SortableProductRequest request) {
+ if (!request.getReviewFilter().isEmpty()) {
+ for (Filter filter : request.getReviewFilter()) {
+ httpUrlBuilder
+ .addEncodedQueryParameter(kFILTER_REVIEW, filter.toString());
+ }
+ }
+
+
+ if (!request.getQuestionFilter().isEmpty()) {
+ for (Filter filter : request.getQuestionFilter()) {
+ httpUrlBuilder
+ .addEncodedQueryParameter(kFILTER_QUESTIONS, filter.toString());
+ }
+ }
+
+ if (!request.getAuthorFilter().isEmpty()) {
+ for (Filter filter : request.getAuthorFilter()) {
+ httpUrlBuilder
+ .addEncodedQueryParameter(kFILTER_AUTHORS, filter.toString());
+ }
+
+ }
+
+ if (!request.getCommentFilter().isEmpty()) {
+ for (Filter filter : request.getCommentFilter()) {
+ httpUrlBuilder
+ .addEncodedQueryParameter(kFILTER_COMMENTS, filter.toString());
+ }
+ }
+
+ }
+
private static void addProductSortParam(HttpUrl.Builder httpUrlBuilder, List sorts) {
for (Sort sort : sorts) {
httpUrlBuilder.addEncodedQueryParameter(kSORT, sort.toString());
diff --git a/bvconversations/src/main/java/com/bazaarvoice/bvandroidsdk/DistributionValue.java b/bvconversations/src/main/java/com/bazaarvoice/bvandroidsdk/DistributionValue.java
index dc112cf0..a54915af 100644
--- a/bvconversations/src/main/java/com/bazaarvoice/bvandroidsdk/DistributionValue.java
+++ b/bvconversations/src/main/java/com/bazaarvoice/bvandroidsdk/DistributionValue.java
@@ -24,6 +24,8 @@ public class DistributionValue {
private Integer count;
@SerializedName("Value")
private String value;
+ @SerializedName("ValueLabel")
+ private String valueLabel;
public Integer getCount() {
return count;
@@ -32,4 +34,8 @@ public Integer getCount() {
public String getValue() {
return value;
}
+
+ public String getValueLabel() {
+ return valueLabel;
+ }
}
\ No newline at end of file
diff --git a/bvconversations/src/main/java/com/bazaarvoice/bvandroidsdk/TopicFeature.java b/bvconversations/src/main/java/com/bazaarvoice/bvandroidsdk/FeatureKeyword.java
similarity index 86%
rename from bvconversations/src/main/java/com/bazaarvoice/bvandroidsdk/TopicFeature.java
rename to bvconversations/src/main/java/com/bazaarvoice/bvandroidsdk/FeatureKeyword.java
index 3043074b..3147e2e7 100644
--- a/bvconversations/src/main/java/com/bazaarvoice/bvandroidsdk/TopicFeature.java
+++ b/bvconversations/src/main/java/com/bazaarvoice/bvandroidsdk/FeatureKeyword.java
@@ -2,7 +2,7 @@
import com.google.gson.annotations.SerializedName;
-public class TopicFeature extends IncludeableContent {
+public class FeatureKeyword extends IncludeableContent {
@SerializedName("feature")
private String feature;
diff --git a/bvconversations/src/main/java/com/bazaarvoice/bvandroidsdk/TopicFeatureResults.java b/bvconversations/src/main/java/com/bazaarvoice/bvandroidsdk/Features.java
similarity index 74%
rename from bvconversations/src/main/java/com/bazaarvoice/bvandroidsdk/TopicFeatureResults.java
rename to bvconversations/src/main/java/com/bazaarvoice/bvandroidsdk/Features.java
index da7bcf20..5176833d 100644
--- a/bvconversations/src/main/java/com/bazaarvoice/bvandroidsdk/TopicFeatureResults.java
+++ b/bvconversations/src/main/java/com/bazaarvoice/bvandroidsdk/Features.java
@@ -4,10 +4,10 @@
import java.util.List;
-public class TopicFeatureResults extends IncludeableContent {
+public class Features extends IncludeableContent {
@SerializedName("features")
- private List features;
+ private List features;
@SerializedName("language")
private String language;
@@ -16,7 +16,7 @@ public class TopicFeatureResults extends IncludeableContent {
private String productId;
- public List getFeatures() {
+ public List getFeatures() {
return features;
}
diff --git a/bvconversations/src/main/java/com/bazaarvoice/bvandroidsdk/TopicFilterRequest.java b/bvconversations/src/main/java/com/bazaarvoice/bvandroidsdk/FeaturesRequest.java
similarity index 77%
rename from bvconversations/src/main/java/com/bazaarvoice/bvandroidsdk/TopicFilterRequest.java
rename to bvconversations/src/main/java/com/bazaarvoice/bvandroidsdk/FeaturesRequest.java
index 0e20e094..826c269c 100644
--- a/bvconversations/src/main/java/com/bazaarvoice/bvandroidsdk/TopicFilterRequest.java
+++ b/bvconversations/src/main/java/com/bazaarvoice/bvandroidsdk/FeaturesRequest.java
@@ -2,11 +2,11 @@
import androidx.annotation.NonNull;
-public class TopicFilterRequest extends ConversationsDisplayRequest {
+public class FeaturesRequest extends ConversationsDisplayRequest {
private final String productId;
private final String language;
- TopicFilterRequest(Builder builder) {
+ FeaturesRequest(Builder builder) {
super(builder);
this.productId = builder.productId;
this.language = builder.language;
@@ -25,7 +25,7 @@ BazaarException getError() {
return null;
}
- public static final class Builder extends ConversationsDisplayRequest.Builder {
+ public static final class Builder extends ConversationsDisplayRequest.Builder {
private String productId;
private String language;
@@ -40,8 +40,8 @@ public Builder addLanguage(String language) {
return this;
}
- public TopicFilterRequest build() {
- return new TopicFilterRequest(this);
+ public FeaturesRequest build() {
+ return new FeaturesRequest(this);
}
}
}
diff --git a/bvconversations/src/main/java/com/bazaarvoice/bvandroidsdk/FeaturesResponse.java b/bvconversations/src/main/java/com/bazaarvoice/bvandroidsdk/FeaturesResponse.java
new file mode 100644
index 00000000..fe660d8f
--- /dev/null
+++ b/bvconversations/src/main/java/com/bazaarvoice/bvandroidsdk/FeaturesResponse.java
@@ -0,0 +1,4 @@
+package com.bazaarvoice.bvandroidsdk;
+
+public class FeaturesResponse extends IncludesResponse{
+}
diff --git a/bvconversations/src/main/java/com/bazaarvoice/bvandroidsdk/ReviewDisplayRequestBuilder.java b/bvconversations/src/main/java/com/bazaarvoice/bvandroidsdk/ReviewDisplayRequestBuilder.java
index 41f2652a..e476aebf 100644
--- a/bvconversations/src/main/java/com/bazaarvoice/bvandroidsdk/ReviewDisplayRequestBuilder.java
+++ b/bvconversations/src/main/java/com/bazaarvoice/bvandroidsdk/ReviewDisplayRequestBuilder.java
@@ -20,7 +20,9 @@
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import androidx.annotation.NonNull;
@@ -35,8 +37,14 @@ public abstract class ReviewDisplayRequestBuilder exte
protected final ArrayList statistics;
protected String searchPhrase;
protected Boolean incentivizedStats;
+ protected Boolean secondaryratingstats;
+ protected Boolean tagStats;
protected List reviewIncludeTypes;
protected String feature;
+ protected final Map contextDataValues;
+ protected final List secondaryRatingFilters;
+ protected final Map tagFilters;
+ protected final Map additionalFields;
public ReviewDisplayRequestBuilder(@NonNull String productId, int limit, int offset) {
super();
@@ -48,7 +56,12 @@ public ReviewDisplayRequestBuilder(@NonNull String productId, int limit, int off
addFilter(new Filter(Filter.Type.ProductId, EqualityOperator.EQ, productId));
this.productId = productId;
this.incentivizedStats = false;
-
+ this.secondaryratingstats = false;
+ this.tagStats = false;
+ this.contextDataValues = new HashMap<>();
+ this.secondaryRatingFilters = new ArrayList<>();
+ this.tagFilters = new HashMap<>();
+ this.additionalFields = new HashMap<>();
}
public ReviewDisplayRequestBuilder(ReviewOptions.PrimaryFilter filterBy, String id, int limit, int offset) {
@@ -62,7 +75,12 @@ public ReviewDisplayRequestBuilder(ReviewOptions.PrimaryFilter filterBy, String
Filter filter = new Filter(filterBy, EqualityOperator.EQ, id);
addFilter(filter);
this.incentivizedStats = false;
+ this.tagStats = false;
this.feature = new String();
+ this.contextDataValues = new HashMap<>();
+ this.secondaryRatingFilters = new ArrayList<>();
+ this.tagFilters = new HashMap<>();
+ this.additionalFields = new HashMap<>();
}
public BuilderType addPDPContentType(PDPContentType pdpContentType) {
@@ -75,6 +93,15 @@ public BuilderType addIncentivizedStats(Boolean incentivizedstats) {
return (BuilderType) this;
}
+ public BuilderType addSecondaryRatingStats(Boolean secondaryratingstats) {
+ this.secondaryratingstats = secondaryratingstats;
+ return (BuilderType) this;
+ }
+ public BuilderType addTagStats(Boolean tagStats) {
+ this.tagStats = tagStats;
+ return (BuilderType) this;
+ }
+
public BuilderType addPDPContentType(PDPContentType... pdpContentTypes) {
this.statistics.addAll(Arrays.asList(pdpContentTypes));
return (BuilderType) this;
@@ -115,6 +142,26 @@ public BuilderType addFeature(String feature) {
return (BuilderType) this;
}
+ public BuilderType addFilterContextDataValue(String id, String value) {
+ contextDataValues.put(id, value);
+ return (BuilderType) this;
+ }
+
+ public BuilderType addAdditionalFields(String id, String value) {
+ additionalFields.put(id, value);
+ return (BuilderType) this;
+ }
+
+ public BuilderType addSecondaryRatingFilters(String type, EqualityOperator equalityOperator, String value) {
+ secondaryRatingFilters.add(new BVSecondaryRatingFilter(type, equalityOperator, value));
+ return (BuilderType) this;
+ }
+
+ public BuilderType addFilterTag(String id, String value) {
+ tagFilters.put(id, value);
+ return (BuilderType) this;
+ }
+
public abstract RequestType build();
-}
+}
\ No newline at end of file
diff --git a/bvconversations/src/main/java/com/bazaarvoice/bvandroidsdk/ReviewStatistics.java b/bvconversations/src/main/java/com/bazaarvoice/bvandroidsdk/ReviewStatistics.java
index a0dd36a8..b5012f56 100644
--- a/bvconversations/src/main/java/com/bazaarvoice/bvandroidsdk/ReviewStatistics.java
+++ b/bvconversations/src/main/java/com/bazaarvoice/bvandroidsdk/ReviewStatistics.java
@@ -64,6 +64,8 @@ public class ReviewStatistics {
private List ratingDistributions;
@SerializedName("TagDistribution")
private Map tagDistribution;
+ @SerializedName("SecondaryRatingsDistribution")
+ private Map secondaryRatingsDistribution;
@SerializedName("ContextDataDistribution")
private Map contextDataDistribution;
@@ -121,6 +123,10 @@ public Map getContextDataDistribution() {
return contextDataDistribution;
}
+ public Map getSecondaryRatingsDistribution() {
+ return secondaryRatingsDistribution;
+ }
+
public Date getFirstSubmissionDate() {
if (firstSubmissionDate == null) {
firstSubmissionDate = DateUtil.dateFromString(firstSubmissionTime);
diff --git a/bvconversations/src/main/java/com/bazaarvoice/bvandroidsdk/ReviewsRequest.java b/bvconversations/src/main/java/com/bazaarvoice/bvandroidsdk/ReviewsRequest.java
index a97fb12e..961c4102 100644
--- a/bvconversations/src/main/java/com/bazaarvoice/bvandroidsdk/ReviewsRequest.java
+++ b/bvconversations/src/main/java/com/bazaarvoice/bvandroidsdk/ReviewsRequest.java
@@ -18,6 +18,7 @@
package com.bazaarvoice.bvandroidsdk;
import java.util.List;
+import java.util.Map;
import androidx.annotation.NonNull;
@@ -33,7 +34,13 @@ public class ReviewsRequest extends ConversationsDisplayRequest {
private final List reviewIncludeTypes;
private final List statistics;
private final Boolean incentivizedStat;
+ private final Boolean secondaryratingstats;
+ private final Boolean tagStats;
private final String feature;
+ private final Map contextDataValues;
+ private final Map additionalFields;
+ protected final List secondaryRatingFilters;
+ private final Map tagFilters;
private ReviewsRequest(Builder builder) {
super(builder);
@@ -45,8 +52,13 @@ private ReviewsRequest(Builder builder) {
this.reviewIncludeTypes = builder.reviewIncludeTypes;
this.statistics = builder.statistics;
this.incentivizedStat = builder.incentivizedStats;
+ this.tagStats = builder.tagStats;
this.feature = builder.feature;
-
+ this.contextDataValues = builder.contextDataValues;
+ this.additionalFields = builder.additionalFields;
+ this.secondaryRatingFilters = builder.secondaryRatingFilters;
+ this.secondaryratingstats = builder.secondaryratingstats;
+ this.tagFilters=builder.tagFilters;
}
String getProductId() {
@@ -77,14 +89,32 @@ Boolean getIncentivizedStats() {
return incentivizedStat;
}
- String getFeatures(){
- return feature;
- }
+ Boolean getSecondaryratingstats() { return secondaryratingstats;}
+
+ Boolean getTagStats() { return tagStats; }
+
+ String getFeatures(){ return feature; }
List getStatistics() {
return statistics;
}
+ Map getContextDataValues() {
+ return contextDataValues;
+ }
+
+ public Map getAdditionalFields() {
+ return additionalFields;
+ }
+
+ public List getSecondaryRatings() {
+ return secondaryRatingFilters;
+ }
+
+ public Map getTagFilters() {
+ return tagFilters;
+ }
+
@Override
BazaarException getError() {
if (limit < 1 || limit > 100) {
@@ -121,6 +151,5 @@ public Builder(@NonNull ReviewOptions.PrimaryFilter filterBy, @NonNull String id
public ReviewsRequest build() {
return new ReviewsRequest(this);
}
-
}
}
\ No newline at end of file
diff --git a/bvconversations/src/main/java/com/bazaarvoice/bvandroidsdk/SecondaryDistributionElement.java b/bvconversations/src/main/java/com/bazaarvoice/bvandroidsdk/SecondaryDistributionElement.java
new file mode 100644
index 00000000..83762dc0
--- /dev/null
+++ b/bvconversations/src/main/java/com/bazaarvoice/bvandroidsdk/SecondaryDistributionElement.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright 2017
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package com.bazaarvoice.bvandroidsdk;
+
+import com.google.gson.annotations.SerializedName;
+
+import java.util.List;
+
+public class SecondaryDistributionElement {
+
+ @SerializedName("Id")
+ private String id;
+ @SerializedName("Label")
+ private String label;
+ @SerializedName("Values")
+ private List values;
+
+ public String getId() {
+ return id;
+ }
+
+ public String getLabel() {
+ return label;
+ }
+
+ public List getValues() {
+ return values;
+ }
+}
\ No newline at end of file
diff --git a/bvconversations/src/main/java/com/bazaarvoice/bvandroidsdk/SecondaryDistributionValue.java b/bvconversations/src/main/java/com/bazaarvoice/bvandroidsdk/SecondaryDistributionValue.java
new file mode 100644
index 00000000..1d1dd808
--- /dev/null
+++ b/bvconversations/src/main/java/com/bazaarvoice/bvandroidsdk/SecondaryDistributionValue.java
@@ -0,0 +1,41 @@
+/*
+ * Copyright 2017
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package com.bazaarvoice.bvandroidsdk;
+
+import com.google.gson.annotations.SerializedName;
+
+public class SecondaryDistributionValue {
+ @SerializedName("Count")
+ private Integer count;
+ @SerializedName("Value")
+ private Integer value;
+ @SerializedName("ValueLabel")
+ private String valueLabel;
+
+ public Integer getCount() {
+ return count;
+ }
+
+ public Integer getValue() {
+ return value;
+ }
+
+ public String getValueLabel() {
+ return valueLabel;
+ }
+}
\ No newline at end of file
diff --git a/bvconversations/src/main/java/com/bazaarvoice/bvandroidsdk/SecondaryRatingsAverages.java b/bvconversations/src/main/java/com/bazaarvoice/bvandroidsdk/SecondaryRatingsAverages.java
index ea9d4851..ecee5ad4 100644
--- a/bvconversations/src/main/java/com/bazaarvoice/bvandroidsdk/SecondaryRatingsAverages.java
+++ b/bvconversations/src/main/java/com/bazaarvoice/bvandroidsdk/SecondaryRatingsAverages.java
@@ -19,14 +19,58 @@
import com.google.gson.annotations.SerializedName;
+import java.util.List;
+
/**
* Averages for ratings for specific qualities
*/
public class SecondaryRatingsAverages {
+ @SerializedName("Id")
+ private String id;
@SerializedName("AverageRating")
private Float averageOverallRating;
+ @SerializedName("MaxLabel")
+ private String maxLabel;
+ @SerializedName("DisplayType")
+ private String displayType;
+ @SerializedName("MinLabel")
+ private String minLabel;
+ @SerializedName("Label")
+ private String label;
+ @SerializedName("ValueLabel")
+ private List valueLabel;
+ @SerializedName("ValueRange")
+ private Integer valueRange;
public Float getAverageOverallRating() {
return averageOverallRating;
}
+
+ public String getId() {
+ return id;
+ }
+
+ public String getMaxLabel() {
+ return maxLabel;
+ }
+
+ public String getDisplayType() {
+ return displayType;
+ }
+
+ public String getMinLabel() {
+ return minLabel;
+ }
+
+ public String getLabel() {
+ return label;
+ }
+
+ public List getValueLabel() {
+ return valueLabel;
+ }
+
+ public Integer getValueRange() {
+ return valueRange;
+ }
}
\ No newline at end of file
diff --git a/bvconversations/src/main/java/com/bazaarvoice/bvandroidsdk/SortableProductRequest.java b/bvconversations/src/main/java/com/bazaarvoice/bvandroidsdk/SortableProductRequest.java
index e2bbf06f..da391418 100644
--- a/bvconversations/src/main/java/com/bazaarvoice/bvandroidsdk/SortableProductRequest.java
+++ b/bvconversations/src/main/java/com/bazaarvoice/bvandroidsdk/SortableProductRequest.java
@@ -7,9 +7,13 @@
public abstract class SortableProductRequest extends ConversationsDisplayRequest {
private final List reviewSorts, questionSorts, answerSorts;
+ private final List reviewFilter, questionFilter,commentFilter,authorFilter;
private final List includes;
private final List statistics;
private boolean incentivizedStats;
+ private boolean secondaryratingstats;
+ private boolean tagStats;
+
SortableProductRequest(Builder builder) {
@@ -17,9 +21,15 @@ public abstract class SortableProductRequest extends ConversationsDisplayRequest
reviewSorts = builder.reviewSorts;
questionSorts = builder.questionSorts;
answerSorts = builder.answerSorts;
+ reviewFilter = builder.reviewFilter;
+ questionFilter = builder.questionFilter;
+ commentFilter=builder.commentFilter;
+ authorFilter=builder.authorFilter;
includes = builder.includes;
statistics = builder.statistics;
incentivizedStats = builder.incentivizedStats;
+ secondaryratingstats = builder.secondaryratingstats;
+ tagStats = builder.tagStats;
}
List getReviewSorts() {
@@ -42,10 +52,30 @@ List getStatistics() {
return statistics;
}
+ public List getReviewFilter() {
+ return reviewFilter;
+ }
+
+ public List getQuestionFilter() {
+ return questionFilter;
+ }
+
+ public List getCommentFilter() {
+ return commentFilter;
+ }
+
+ public List getAuthorFilter() {
+ return authorFilter;
+ }
+
Boolean getIncentivizedStats() {
return incentivizedStats;
}
+ Boolean getSecondaryratingStats() { return secondaryratingstats;}
+
+ Boolean getTagStats() { return tagStats; }
+
@Override
BazaarException getError() {
return null;
@@ -55,9 +85,15 @@ public static abstract class Builder extends Conversat
private final List reviewSorts = new ArrayList<>(),
questionSorts = new ArrayList<>(),
answerSorts = new ArrayList<>();
+ List reviewFilter = new ArrayList<>(),
+ questionFilter = new ArrayList<>(),
+ commentFilter = new ArrayList<>(),
+ authorFilter=new ArrayList<>();
private final List includes = new ArrayList<>();
private final List statistics = new ArrayList<>();
private boolean incentivizedStats = false;
+ private boolean secondaryratingstats = false;
+ private boolean tagStats = false;
Builder() {
super();
@@ -84,6 +120,26 @@ public BuilderType addAnswerSort(AnswerOptions.Sort sort, SortOrder order) {
return (BuilderType) this;
}
+ public BuilderType addReviewFilter(ReviewOptions.Filter filter, EqualityOperator equalityOperator, String value) {
+ reviewFilter.add(new Filter(filter, equalityOperator, value));
+ return (BuilderType) this;
+ }
+
+ public BuilderType addQuestionFilter(QuestionOptions.Filter filter, EqualityOperator equalityOperator, String value) {
+ questionFilter.add(new Filter(filter, equalityOperator, value));
+ return (BuilderType) this;
+ }
+
+ public BuilderType addCommentFilter(CommentOptions.Filter filter, EqualityOperator equalityOperator, String value) {
+ commentFilter.add(new Filter(filter, equalityOperator, value));
+ return (BuilderType) this;
+ }
+
+ public BuilderType addAuthorFilter(AuthorOptions.Filter filter, EqualityOperator equalityOperator, String value) {
+ authorFilter.add(new Filter(filter, equalityOperator, value));
+ return (BuilderType) this;
+ }
+
/**
* Type of social content to inlcude with the product request.
* NOTE: PDPContentType is only supported for statistics, not for Includes.
@@ -117,6 +173,16 @@ public BuilderType addIncentivizedStats(Boolean incentivizedStats){
return (BuilderType) this;
}
+ public BuilderType addSecondaryRatingStats(Boolean secondaryratingstats) {
+ this.secondaryratingstats = secondaryratingstats;
+ return (BuilderType) this;
+ }
+
+ public BuilderType addTagStats(Boolean tagStats){
+ this.tagStats = tagStats;
+ return (BuilderType) this;
+ }
+
public abstract RequestType build();
}
}
diff --git a/bvconversations/src/main/java/com/bazaarvoice/bvandroidsdk/TopicFilterResponse.java b/bvconversations/src/main/java/com/bazaarvoice/bvandroidsdk/TopicFilterResponse.java
deleted file mode 100644
index 5e14152e..00000000
--- a/bvconversations/src/main/java/com/bazaarvoice/bvandroidsdk/TopicFilterResponse.java
+++ /dev/null
@@ -1,4 +0,0 @@
-package com.bazaarvoice.bvandroidsdk;
-
-public class TopicFilterResponse extends IncludesResponse{
-}
diff --git a/bvconversations/src/test/java/com/bazaarvoice/bvandroidsdk/BasicRequestFactoryTest.java b/bvconversations/src/test/java/com/bazaarvoice/bvandroidsdk/BasicRequestFactoryTest.java
index c3aeaf6f..74236a5d 100644
--- a/bvconversations/src/test/java/com/bazaarvoice/bvandroidsdk/BasicRequestFactoryTest.java
+++ b/bvconversations/src/test/java/com/bazaarvoice/bvandroidsdk/BasicRequestFactoryTest.java
@@ -1,13 +1,10 @@
package com.bazaarvoice.bvandroidsdk;
-import junit.framework.Assert;
-
import org.junit.Before;
import org.junit.Test;
import java.io.File;
import java.util.ArrayList;
-import java.util.HashMap;
import java.util.List;
import okhttp3.HttpUrl;
@@ -30,8 +27,8 @@ public void setUp() throws Exception {
@Test
public void displayShouldHaveExtraQueryParams() throws Exception {
final ReviewsRequest request = new ReviewsRequest.Builder("some1", 10, 10)
- .addCustomDisplayParameter("duck duck", "goose")
- .build();
+ .addCustomDisplayParameter("duck duck", "goose")
+ .build();
final Request okRequest = requestFactory.create(request);
final HttpUrl url = okRequest.url();
assertTrue(url.queryParameterValues("duck duck").contains("goose"));
@@ -776,8 +773,8 @@ public void reviewShouldContainFeatureKeyword(){
}
@Test
- public void topicFilter() throws Exception {
- final TopicFilterRequest request = new TopicFilterRequest.Builder("test1")
+ public void feature() throws Exception {
+ final FeaturesRequest request = new FeaturesRequest.Builder("test1")
.addLanguage("en")
.build();
final Request okRequest = requestFactory.create(request);
@@ -786,6 +783,99 @@ public void topicFilter() throws Exception {
assertTrue(url.queryParameterValues("language").contains("en"));
}
+ @Test
+ public void testProductDisplayPageFilterType() {
+ ProductDisplayPageRequest pdpRequest = new ProductDisplayPageRequest.Builder("product_abc123")
+ .addReviewFilter(ReviewOptions.Filter.HasComments,EqualityOperator.EQ,"123")
+ .addQuestionFilter(QuestionOptions.Filter.HasAnswers,EqualityOperator.EQ,"123")
+ .addCommentFilter(CommentOptions.Filter.AUTHOR_ID,EqualityOperator.EQ,"123")
+ .addAuthorFilter(AuthorOptions.Filter.HAS_PHOTOS,EqualityOperator.EQ,"123")
+ .build();
+ assertTrue(pdpRequest.getReviewFilter().get(0).toString().contains("HasComments:eq:123"));
+ assertTrue(pdpRequest.getQuestionFilter().get(0).toString().contains("HasAnswers:eq:123"));
+ assertTrue(pdpRequest.getCommentFilter().get(0).toString().contains("AuthorId:eq:123"));
+ assertTrue(pdpRequest.getAuthorFilter().get(0).toString().contains("HasPhotos:eq:123"));
+
+
+ }
+
+ @Test
+ public void reviewDisplayRequestCreateRequestWithContextDataValues() {
+ final ReviewsRequest reviewsRequest = new ReviewsRequest.Builder("prod1", 10, 2)
+ .addFilterContextDataValue("Age","17orUnder")
+ .build();
+ final Request okRequest = requestFactory.create(reviewsRequest);
+ final List filterParams = okRequest.url().queryParameterValues("Filter");
+ assertEquals("contextdatavalue_Age:17orUnder", filterParams.get(1));
+ }
+
+ @Test
+ public void reviewDisplayRequestCreateRequestWithSecondaryRatingValues() {
+ final ReviewsRequest reviewsRequest = new ReviewsRequest.Builder("prod1", 10, 2)
+ .addSecondaryRatingFilters("Quality",EqualityOperator.EQ,"5")
+ .build();
+ final Request okRequest = requestFactory.create(reviewsRequest);
+ final List filterParams = okRequest.url().queryParameterValues("Filter");
+ assertEquals("SecondaryRating_Quality:EQ:5", filterParams.get(1));
+ }
+
+ @Test
+ public void reviewDisplayRequestCreateRequestWithSecondaryRatingsStats() {
+ final ReviewsRequest reviewsRequest = new ReviewsRequest.Builder("prod1", 10, 2)
+ .addSecondaryRatingStats(true)
+ .build();
+ final Request okRequest = requestFactory.create(reviewsRequest);
+ final HttpUrl url = okRequest.url();
+ assertEquals("true", url.queryParameter("secondaryratingstats"));
+ }
+
+ @Test
+ public void productreviewDisplayRequestCreateRequestWithSecondaryRatingsStats() {
+ final ProductDisplayPageRequest reviewsRequest = new ProductDisplayPageRequest.Builder("prod1")
+ .addSecondaryRatingStats(true)
+ .build();
+ final Request okRequest = requestFactory.create(reviewsRequest);
+ final HttpUrl url = okRequest.url();
+ assertEquals("true", url.queryParameter("secondaryratingstats"));
+ }
+ @Test
+ public void reviewDisplayRequestCreateRequestWithTagStats() {
+ final ReviewsRequest reviewsRequest = new ReviewsRequest.Builder("prod1", 10, 2)
+ .addTagStats(true)
+ .build();
+ final Request okRequest = requestFactory.create(reviewsRequest);
+ final HttpUrl url = okRequest.url();
+ assertEquals("true", url.queryParameter("tagstats"));
+ }
+ @Test
+ public void productreviewDisplayRequestCreateRequestWithTagStats() {
+ final ProductDisplayPageRequest reviewsRequest = new ProductDisplayPageRequest.Builder("prod1")
+ .addTagStats(true)
+ .build();
+ final Request okRequest = requestFactory.create(reviewsRequest);
+ final HttpUrl url = okRequest.url();
+ assertEquals("true", url.queryParameter("tagstats"));
+ }
+
+ @Test
+ public void reviewDisplayRequestCreateRequestWithTagFilter() {
+ final ReviewsRequest reviewsRequest = new ReviewsRequest.Builder("prod1", 10, 2)
+ .addFilterTag("TagsSet", "Volume")
+ .build();
+ final Request okRequest = requestFactory.create(reviewsRequest);
+ final List filterParams = okRequest.url().queryParameterValues("Filter");
+ assertEquals("tag_TagsSet:Volume", filterParams.get(1));
+ }
+
+ @Test
+ public void reviewDisplayRequestCreateRequestWithAdditionalFields() {
+ final ReviewsRequest reviewsRequest = new ReviewsRequest.Builder("prod1", 10, 2)
+ .addAdditionalFields("DateOfUserExperience","2021-04-03")
+ .build();
+ final Request okRequest = requestFactory.create(reviewsRequest);
+ final List filterParams = okRequest.url().queryParameterValues("Filter");
+ assertEquals("additionalfield_DateOfUserExperience:2021-04-03", filterParams.get(1));
+ }
}
\ No newline at end of file
diff --git a/bvconversations/src/test/java/com/bazaarvoice/bvandroidsdk/ConversationsUnitTest.java b/bvconversations/src/test/java/com/bazaarvoice/bvandroidsdk/ConversationsUnitTest.java
index 709adf36..2541126e 100644
--- a/bvconversations/src/test/java/com/bazaarvoice/bvandroidsdk/ConversationsUnitTest.java
+++ b/bvconversations/src/test/java/com/bazaarvoice/bvandroidsdk/ConversationsUnitTest.java
@@ -787,7 +787,7 @@ public void testParsingReviewRequestWithAuthorInclude() throws Exception {
@Test
public void testTopicFeatureResponse() throws Exception {
- TopicFilterResponse response = parseJsonResourceFile("topic_feature_response.json", TopicFilterResponse.class, gson);
+ FeaturesResponse response = parseJsonResourceFile("topic_feature_response.json", FeaturesResponse.class, gson);
assertNotNull(response.getResults());
assertEquals("XYZ123-prod-3-4-ExternalId", response.getResults().get(0).getProductId());
@@ -796,4 +796,51 @@ public void testTopicFeatureResponse() throws Exception {
}
+
+ @Test
+ public void testReviewsForSecondaryRatingsReviewParsing() throws Exception {
+ ReviewResponse response = parseJsonResourceFile("review_secondary_stats.json", ReviewResponse.class, gson);
+ for (Product includes : response.getIncludes().getProducts()) {
+ assertNotNull(includes.getReviewStatistics().getSecondaryRatingsDistribution());
+ }
+ assertEquals("WhatSizeIsTheProduct", response.getIncludes().getProducts().get(0).getReviewStatistics().getSecondaryRatingsDistribution().get("WhatSizeIsTheProduct").getId());
+ assertEquals(2, response.getIncludes().getProducts().get(0).getReviewStatistics().getSecondaryRatingsDistribution().get("WhatSizeIsTheProduct").getValues().get(0).getValue().intValue());
+ assertEquals(6, response.getIncludes().getProducts().get(0).getReviewStatistics().getSecondaryRatingsDistribution().get("WhatSizeIsTheProduct").getValues().get(0).getCount().intValue());
+ assertEquals("Medium", response.getIncludes().getProducts().get(0).getReviewStatistics().getSecondaryRatingsDistribution().get("WhatSizeIsTheProduct").getValues().get(0).getValueLabel());
+ }
+
+ @Test
+ public void testReviewsForTagStatsReviewParsing() throws Exception {
+ ReviewResponse response = parseJsonResourceFile("review_tag_stats.json", ReviewResponse.class, gson);
+ for (Product includes : response.getIncludes().getProducts()) {
+ assertNotNull(includes.getReviewStatistics().getTagDistribution());
+ }
+ assertEquals("ProductVariant", response.getIncludes().getProducts().get(0).getReviewStatistics().getTagDistribution().get("ProductVariant").getId());
+ assertEquals("Gray", response.getIncludes().getProducts().get(0).getReviewStatistics().getTagDistribution().get("ProductVariant").getValues().get(0).getValue());
+ assertEquals(9, response.getIncludes().getProducts().get(0).getReviewStatistics().getTagDistribution().get("ProductVariant").getValues().get(0).getCount().intValue());
+ }
+
+ @Test
+ public void testValueLabelReviewResponse() throws Exception {
+ ReviewResponse response = parseJsonResourceFile("reviews_include_value_label.json", ReviewResponse.class, gson);
+
+ for (Product includes : response.getIncludes().getProducts()) {
+ assertEquals("17 or under", includes.getReviewStatistics().getContextDataDistribution().get("Age").getValues().get(0).getValueLabel());
+ }
+ }
+
+ @Test
+ public void testValueLabelSecondaryRatingsAveragesReviewResponse() throws Exception {
+ ReviewResponse response = parseJsonResourceFile("review_value_lable_secondary_ratings_averages.json", ReviewResponse.class, gson);
+ for (Product includes : response.getIncludes().getProducts()) {
+ assertNotNull(includes.getReviewStatistics().getSecondaryRatingsAverages());
+ }
+ assertEquals("WhatSizeIsTheProduct", response.getIncludes().getProducts().get(0).getReviewStatistics().getSecondaryRatingsAverages().get("WhatSizeIsTheProduct").getId());
+ assertEquals("SLIDER", response.getIncludes().getProducts().get(0).getReviewStatistics().getSecondaryRatingsAverages().get("WhatSizeIsTheProduct").getDisplayType());
+ assertEquals(3, response.getIncludes().getProducts().get(0).getReviewStatistics().getSecondaryRatingsAverages().get("WhatSizeIsTheProduct").getValueRange().intValue());
+ assertEquals("Large", response.getIncludes().getProducts().get(0).getReviewStatistics().getSecondaryRatingsAverages().get("WhatSizeIsTheProduct").getMaxLabel());
+ assertEquals("Small", response.getIncludes().getProducts().get(0).getReviewStatistics().getSecondaryRatingsAverages().get("WhatSizeIsTheProduct").getMinLabel());
+ assertEquals("What size is the product?", response.getIncludes().getProducts().get(0).getReviewStatistics().getSecondaryRatingsAverages().get("WhatSizeIsTheProduct").getLabel());
+ assertEquals("Small", response.getIncludes().getProducts().get(0).getReviewStatistics().getSecondaryRatingsAverages().get("WhatSizeIsTheProduct").getValueLabel().get(0));
+ }
}
\ No newline at end of file
diff --git a/bvconversations/src/test/resources/review_secondary_stats.json b/bvconversations/src/test/resources/review_secondary_stats.json
new file mode 100644
index 00000000..35822065
--- /dev/null
+++ b/bvconversations/src/test/resources/review_secondary_stats.json
@@ -0,0 +1,910 @@
+{
+ "Limit": 10,
+ "Offset": 0,
+ "TotalResults": 13,
+ "Locale": "en_US",
+ "Results": [
+ {
+ "Id": "40791461",
+ "CID": "6d369b25-ced2-5de9-a5aa-0b42e9e7b422",
+ "SourceClient": "testcustomermobilesdk",
+ "LastModeratedTime": "2022-04-20T06:15:01.000+00:00",
+ "LastModificationTime": "2022-04-20T06:15:01.000+00:00",
+ "ProductId": "product1",
+ "AuthorId": "ev6uluge8efj1xaf4naspi1ni",
+ "ContentLocale": "en_US",
+ "IsFeatured": false,
+ "TotalInappropriateFeedbackCount": 0,
+ "TotalClientResponseCount": 0,
+ "TotalCommentCount": 0,
+ "Rating": 5,
+ "SecondaryRatingsOrder": [
+ "Quality",
+ "WhatSizeIsTheProduct"
+ ],
+ "IsRatingsOnly": false,
+ "TotalFeedbackCount": 0,
+ "TotalNegativeFeedbackCount": 0,
+ "TotalPositiveFeedbackCount": 0,
+ "ModerationStatus": "APPROVED",
+ "SubmissionId": "r210433_16504347wfNIAxPygT",
+ "SubmissionTime": "2022-04-20T06:06:17.000+00:00",
+ "ReviewText": "More then 50, More then 50, More then 50, More then 50,",
+ "Title": "Review title 6",
+ "UserNickname": "testSDKUse2234534543",
+ "SecondaryRatings": {
+ "Quality": {
+ "Value": 4,
+ "Id": "Quality",
+ "Label": "Quality of Product",
+ "MaxLabel": null,
+ "DisplayType": "NORMAL",
+ "ValueLabel": null,
+ "MinLabel": null,
+ "ValueRange": 5
+ },
+ "WhatSizeIsTheProduct": {
+ "Value": 2,
+ "Id": "WhatSizeIsTheProduct",
+ "Label": "What size is the product?",
+ "MaxLabel": "Large",
+ "DisplayType": "SLIDER",
+ "ValueLabel": "Medium",
+ "MinLabel": "Small",
+ "ValueRange": 3
+ }
+ },
+ "AdditionalFields": {
+ "DateOfUserExperience": {
+ "Value": "2021-03-10",
+ "Id": "DateOfUserExperience",
+ "Label": "Date of Use"
+ }
+ },
+ "AdditionalFieldsOrder": [
+ "DateOfUserExperience"
+ ],
+ "Pros": null,
+ "Badges": {},
+ "RatingRange": 5,
+ "Helpfulness": null,
+ "ContextDataValuesOrder": [],
+ "ClientResponses": [],
+ "CommentIds": [],
+ "IsRecommended": null,
+ "Cons": null,
+ "InappropriateFeedbackList": [],
+ "TagDimensions": {},
+ "IsSyndicated": false,
+ "ProductRecommendationIds": [],
+ "UserLocation": null,
+ "CampaignId": null,
+ "TagDimensionsOrder": [],
+ "BadgesOrder": [],
+ "Photos": [],
+ "ContextDataValues": {},
+ "Videos": []
+ },
+ {
+ "Id": "40779882",
+ "CID": "5c29b719-a2e0-5a26-897e-684c92781096",
+ "SourceClient": "testcustomermobilesdk",
+ "LastModeratedTime": "2022-04-19T13:00:01.000+00:00",
+ "LastModificationTime": "2022-04-19T13:00:01.000+00:00",
+ "ProductId": "product1",
+ "AuthorId": "tkmyz67zw3ca728lb1bsspppm",
+ "ContentLocale": "en_US",
+ "IsFeatured": false,
+ "TotalInappropriateFeedbackCount": 0,
+ "TotalClientResponseCount": 0,
+ "TotalCommentCount": 0,
+ "Rating": 5,
+ "SecondaryRatingsOrder": [
+ "Quality",
+ "WhatSizeIsTheProduct"
+ ],
+ "IsRatingsOnly": false,
+ "TotalFeedbackCount": 0,
+ "TotalNegativeFeedbackCount": 0,
+ "TotalPositiveFeedbackCount": 0,
+ "ModerationStatus": "APPROVED",
+ "SubmissionId": "r210433_16503724rskBklgu3U",
+ "SubmissionTime": "2022-04-19T12:47:02.000+00:00",
+ "ReviewText": "More then 50, More then 50, More then 50, More then 50,",
+ "Title": "Review title 6",
+ "UserNickname": "testSDKUse22345",
+ "SecondaryRatings": {
+ "Quality": {
+ "Value": 4,
+ "Id": "Quality",
+ "Label": "Quality of Product",
+ "MaxLabel": null,
+ "DisplayType": "NORMAL",
+ "ValueLabel": null,
+ "MinLabel": null,
+ "ValueRange": 5
+ },
+ "WhatSizeIsTheProduct": {
+ "Value": 2,
+ "Id": "WhatSizeIsTheProduct",
+ "Label": "What size is the product?",
+ "MaxLabel": "Large",
+ "DisplayType": "SLIDER",
+ "ValueLabel": "Medium",
+ "MinLabel": "Small",
+ "ValueRange": 3
+ }
+ },
+ "AdditionalFields": {
+ "DateOfUserExperience": {
+ "Value": "2021-03-10",
+ "Id": "DateOfUserExperience",
+ "Label": "Date of Use"
+ }
+ },
+ "AdditionalFieldsOrder": [
+ "DateOfUserExperience"
+ ],
+ "Pros": null,
+ "Badges": {},
+ "RatingRange": 5,
+ "Helpfulness": null,
+ "ContextDataValuesOrder": [],
+ "ClientResponses": [],
+ "CommentIds": [],
+ "IsRecommended": null,
+ "Cons": null,
+ "InappropriateFeedbackList": [],
+ "TagDimensions": {},
+ "IsSyndicated": false,
+ "ProductRecommendationIds": [],
+ "UserLocation": null,
+ "CampaignId": null,
+ "TagDimensionsOrder": [],
+ "BadgesOrder": [],
+ "Photos": [],
+ "ContextDataValues": {},
+ "Videos": []
+ },
+ {
+ "Id": "40779798",
+ "CID": "802d5824-297b-5d2b-85f4-97c7154a2639",
+ "SourceClient": "testcustomermobilesdk",
+ "LastModeratedTime": "2022-04-19T10:00:01.000+00:00",
+ "LastModificationTime": "2022-04-19T10:00:01.000+00:00",
+ "ProductId": "product1",
+ "AuthorId": "int717159chkdwold24oh71e5",
+ "ContentLocale": "en_US",
+ "IsFeatured": false,
+ "TotalInappropriateFeedbackCount": 0,
+ "TotalClientResponseCount": 0,
+ "TotalCommentCount": 0,
+ "Rating": 5,
+ "SecondaryRatingsOrder": [
+ "Quality",
+ "WhatSizeIsTheProduct"
+ ],
+ "IsRatingsOnly": false,
+ "TotalFeedbackCount": 0,
+ "TotalNegativeFeedbackCount": 0,
+ "TotalPositiveFeedbackCount": 0,
+ "ModerationStatus": "APPROVED",
+ "SubmissionId": "r210433_16503622uvf7b41tFn",
+ "SubmissionTime": "2022-04-19T09:58:14.000+00:00",
+ "ReviewText": "More then 50, More then 50, More then 50, More then 50,",
+ "Title": "Review title 6",
+ "UserNickname": "testSDKUse2234",
+ "SecondaryRatings": {
+ "Quality": {
+ "Value": 4,
+ "Id": "Quality",
+ "Label": "Quality of Product",
+ "MaxLabel": null,
+ "DisplayType": "NORMAL",
+ "ValueLabel": null,
+ "MinLabel": null,
+ "ValueRange": 5
+ },
+ "WhatSizeIsTheProduct": {
+ "Value": 2,
+ "Id": "WhatSizeIsTheProduct",
+ "Label": "What size is the product?",
+ "MaxLabel": "Large",
+ "DisplayType": "SLIDER",
+ "ValueLabel": "Medium",
+ "MinLabel": "Small",
+ "ValueRange": 3
+ }
+ },
+ "AdditionalFields": {
+ "DateOfUserExperience": {
+ "Value": "2021-03-10",
+ "Id": "DateOfUserExperience",
+ "Label": "Date of Use"
+ }
+ },
+ "AdditionalFieldsOrder": [
+ "DateOfUserExperience"
+ ],
+ "Pros": null,
+ "Badges": {},
+ "RatingRange": 5,
+ "Helpfulness": null,
+ "ContextDataValuesOrder": [],
+ "ClientResponses": [],
+ "CommentIds": [],
+ "IsRecommended": null,
+ "Cons": null,
+ "InappropriateFeedbackList": [],
+ "TagDimensions": {},
+ "IsSyndicated": false,
+ "ProductRecommendationIds": [],
+ "UserLocation": null,
+ "CampaignId": null,
+ "TagDimensionsOrder": [],
+ "BadgesOrder": [],
+ "Photos": [],
+ "ContextDataValues": {},
+ "Videos": []
+ },
+ {
+ "Id": "40779797",
+ "CID": "edf010ce-9c68-5412-be4e-e244995a338b",
+ "SourceClient": "testcustomermobilesdk",
+ "LastModeratedTime": "2022-04-19T10:00:01.000+00:00",
+ "LastModificationTime": "2022-04-19T10:00:01.000+00:00",
+ "ProductId": "product1",
+ "AuthorId": "sm95g67twftr2mof6xovpj1yz",
+ "ContentLocale": "en_US",
+ "IsFeatured": false,
+ "TotalInappropriateFeedbackCount": 0,
+ "TotalClientResponseCount": 0,
+ "TotalCommentCount": 0,
+ "Rating": 5,
+ "SecondaryRatingsOrder": [
+ "Quality",
+ "WhatSizeIsTheProduct"
+ ],
+ "IsRatingsOnly": false,
+ "TotalFeedbackCount": 0,
+ "TotalNegativeFeedbackCount": 0,
+ "TotalPositiveFeedbackCount": 0,
+ "ModerationStatus": "APPROVED",
+ "SubmissionId": "r210433_16503622rFngsnYbNK",
+ "SubmissionTime": "2022-04-19T09:58:11.000+00:00",
+ "ReviewText": "More then 50, More then 50, More then 50, More then 50,",
+ "Title": "Review title 6",
+ "UserNickname": "testSDKUse223",
+ "SecondaryRatings": {
+ "Quality": {
+ "Value": 4,
+ "Id": "Quality",
+ "Label": "Quality of Product",
+ "MaxLabel": null,
+ "DisplayType": "NORMAL",
+ "ValueLabel": null,
+ "MinLabel": null,
+ "ValueRange": 5
+ },
+ "WhatSizeIsTheProduct": {
+ "Value": 2,
+ "Id": "WhatSizeIsTheProduct",
+ "Label": "What size is the product?",
+ "MaxLabel": "Large",
+ "DisplayType": "SLIDER",
+ "ValueLabel": "Medium",
+ "MinLabel": "Small",
+ "ValueRange": 3
+ }
+ },
+ "AdditionalFields": {
+ "DateOfUserExperience": {
+ "Value": "2021-03-10",
+ "Id": "DateOfUserExperience",
+ "Label": "Date of Use"
+ }
+ },
+ "AdditionalFieldsOrder": [
+ "DateOfUserExperience"
+ ],
+ "Pros": null,
+ "Badges": {},
+ "RatingRange": 5,
+ "Helpfulness": null,
+ "ContextDataValuesOrder": [],
+ "ClientResponses": [],
+ "CommentIds": [],
+ "IsRecommended": null,
+ "Cons": null,
+ "InappropriateFeedbackList": [],
+ "TagDimensions": {},
+ "IsSyndicated": false,
+ "ProductRecommendationIds": [],
+ "UserLocation": null,
+ "CampaignId": null,
+ "TagDimensionsOrder": [],
+ "BadgesOrder": [],
+ "Photos": [],
+ "ContextDataValues": {},
+ "Videos": []
+ },
+ {
+ "Id": "40779795",
+ "CID": "28ea65b2-43ac-5cb0-9ca5-e9810972f6e8",
+ "SourceClient": "testcustomermobilesdk",
+ "LastModeratedTime": "2022-04-19T10:00:01.000+00:00",
+ "LastModificationTime": "2022-04-19T10:00:01.000+00:00",
+ "ProductId": "product1",
+ "AuthorId": "lq8zmafnrtsgmx4i73dp0m0ry",
+ "ContentLocale": "en_US",
+ "IsFeatured": false,
+ "TotalInappropriateFeedbackCount": 0,
+ "TotalClientResponseCount": 0,
+ "TotalCommentCount": 0,
+ "Rating": 5,
+ "SecondaryRatingsOrder": [
+ "Quality",
+ "WhatSizeIsTheProduct"
+ ],
+ "IsRatingsOnly": false,
+ "TotalFeedbackCount": 0,
+ "TotalNegativeFeedbackCount": 0,
+ "TotalPositiveFeedbackCount": 0,
+ "ModerationStatus": "APPROVED",
+ "SubmissionId": "r210433_16503622yCXV25pbp7",
+ "SubmissionTime": "2022-04-19T09:58:07.000+00:00",
+ "ReviewText": "More then 50, More then 50, More then 50, More then 50,",
+ "Title": "Review title 6",
+ "UserNickname": "testSDKUse22",
+ "SecondaryRatings": {
+ "Quality": {
+ "Value": 4,
+ "Id": "Quality",
+ "Label": "Quality of Product",
+ "MaxLabel": null,
+ "DisplayType": "NORMAL",
+ "ValueLabel": null,
+ "MinLabel": null,
+ "ValueRange": 5
+ },
+ "WhatSizeIsTheProduct": {
+ "Value": 2,
+ "Id": "WhatSizeIsTheProduct",
+ "Label": "What size is the product?",
+ "MaxLabel": "Large",
+ "DisplayType": "SLIDER",
+ "ValueLabel": "Medium",
+ "MinLabel": "Small",
+ "ValueRange": 3
+ }
+ },
+ "AdditionalFields": {
+ "DateOfUserExperience": {
+ "Value": "2021-03-10",
+ "Id": "DateOfUserExperience",
+ "Label": "Date of Use"
+ }
+ },
+ "AdditionalFieldsOrder": [
+ "DateOfUserExperience"
+ ],
+ "Pros": null,
+ "Badges": {},
+ "RatingRange": 5,
+ "Helpfulness": null,
+ "ContextDataValuesOrder": [],
+ "ClientResponses": [],
+ "CommentIds": [],
+ "IsRecommended": null,
+ "Cons": null,
+ "InappropriateFeedbackList": [],
+ "TagDimensions": {},
+ "IsSyndicated": false,
+ "ProductRecommendationIds": [],
+ "UserLocation": null,
+ "CampaignId": null,
+ "TagDimensionsOrder": [],
+ "BadgesOrder": [],
+ "Photos": [],
+ "ContextDataValues": {},
+ "Videos": []
+ },
+ {
+ "Id": "40779794",
+ "CID": "2822b55f-8d25-54f8-8ad2-e904345aadc2",
+ "SourceClient": "testcustomermobilesdk",
+ "LastModeratedTime": "2022-04-19T10:00:01.000+00:00",
+ "LastModificationTime": "2022-04-19T10:00:01.000+00:00",
+ "ProductId": "product1",
+ "AuthorId": "6cv147jittrwpgfewym9pnuxq",
+ "ContentLocale": "en_US",
+ "IsFeatured": false,
+ "TotalInappropriateFeedbackCount": 0,
+ "TotalClientResponseCount": 0,
+ "TotalCommentCount": 0,
+ "Rating": 5,
+ "SecondaryRatingsOrder": [
+ "Quality",
+ "WhatSizeIsTheProduct"
+ ],
+ "IsRatingsOnly": false,
+ "TotalFeedbackCount": 0,
+ "TotalNegativeFeedbackCount": 0,
+ "TotalPositiveFeedbackCount": 0,
+ "ModerationStatus": "APPROVED",
+ "SubmissionId": "r210433_16503622z2LBaoW8sh",
+ "SubmissionTime": "2022-04-19T09:58:03.000+00:00",
+ "ReviewText": "More then 50, More then 50, More then 50, More then 50,",
+ "Title": "Review title 6",
+ "UserNickname": "testSDKUse2",
+ "SecondaryRatings": {
+ "Quality": {
+ "Value": 4,
+ "Id": "Quality",
+ "Label": "Quality of Product",
+ "MaxLabel": null,
+ "DisplayType": "NORMAL",
+ "ValueLabel": null,
+ "MinLabel": null,
+ "ValueRange": 5
+ },
+ "WhatSizeIsTheProduct": {
+ "Value": 2,
+ "Id": "WhatSizeIsTheProduct",
+ "Label": "What size is the product?",
+ "MaxLabel": "Large",
+ "DisplayType": "SLIDER",
+ "ValueLabel": "Medium",
+ "MinLabel": "Small",
+ "ValueRange": 3
+ }
+ },
+ "AdditionalFields": {
+ "DateOfUserExperience": {
+ "Value": "2021-03-10",
+ "Id": "DateOfUserExperience",
+ "Label": "Date of Use"
+ }
+ },
+ "AdditionalFieldsOrder": [
+ "DateOfUserExperience"
+ ],
+ "Pros": null,
+ "Badges": {},
+ "RatingRange": 5,
+ "Helpfulness": null,
+ "ContextDataValuesOrder": [],
+ "ClientResponses": [],
+ "CommentIds": [],
+ "IsRecommended": null,
+ "Cons": null,
+ "InappropriateFeedbackList": [],
+ "TagDimensions": {},
+ "IsSyndicated": false,
+ "ProductRecommendationIds": [],
+ "UserLocation": null,
+ "CampaignId": null,
+ "TagDimensionsOrder": [],
+ "BadgesOrder": [],
+ "Photos": [],
+ "ContextDataValues": {},
+ "Videos": []
+ },
+ {
+ "Id": "40779793",
+ "CID": "5465ee80-3bbd-525d-a546-1848745290ec",
+ "SourceClient": "testcustomermobilesdk",
+ "LastModeratedTime": "2022-04-19T10:00:01.000+00:00",
+ "LastModificationTime": "2022-04-19T10:00:01.000+00:00",
+ "ProductId": "product1",
+ "AuthorId": "22osqe8zpx5n6srcpkvfp1j1b",
+ "ContentLocale": "en_US",
+ "IsFeatured": false,
+ "TotalInappropriateFeedbackCount": 0,
+ "TotalClientResponseCount": 0,
+ "TotalCommentCount": 0,
+ "Rating": 4,
+ "SecondaryRatingsOrder": [
+ "Quality",
+ "WhatSizeIsTheProduct"
+ ],
+ "IsRatingsOnly": false,
+ "TotalFeedbackCount": 0,
+ "TotalNegativeFeedbackCount": 0,
+ "TotalPositiveFeedbackCount": 0,
+ "ModerationStatus": "APPROVED",
+ "SubmissionId": "r210433_16503622OZr7JMLIbF",
+ "SubmissionTime": "2022-04-19T09:57:45.000+00:00",
+ "ReviewText": "More then 50, More then 50, More then 50, More then 50,",
+ "Title": "Review title 4",
+ "UserNickname": "testSDKUse",
+ "SecondaryRatings": {
+ "Quality": {
+ "Value": 5,
+ "Id": "Quality",
+ "Label": "Quality of Product",
+ "MaxLabel": null,
+ "DisplayType": "NORMAL",
+ "ValueLabel": null,
+ "MinLabel": null,
+ "ValueRange": 5
+ },
+ "WhatSizeIsTheProduct": {
+ "Value": 3,
+ "Id": "WhatSizeIsTheProduct",
+ "Label": "What size is the product?",
+ "MaxLabel": "Large",
+ "DisplayType": "SLIDER",
+ "ValueLabel": "Large",
+ "MinLabel": "Small",
+ "ValueRange": 3
+ }
+ },
+ "AdditionalFields": {
+ "DateOfUserExperience": {
+ "Value": "2021-03-10",
+ "Id": "DateOfUserExperience",
+ "Label": "Date of Use"
+ }
+ },
+ "AdditionalFieldsOrder": [
+ "DateOfUserExperience"
+ ],
+ "Pros": null,
+ "Badges": {},
+ "RatingRange": 5,
+ "Helpfulness": null,
+ "ContextDataValuesOrder": [],
+ "ClientResponses": [],
+ "CommentIds": [],
+ "IsRecommended": null,
+ "Cons": null,
+ "InappropriateFeedbackList": [],
+ "TagDimensions": {},
+ "IsSyndicated": false,
+ "ProductRecommendationIds": [],
+ "UserLocation": null,
+ "CampaignId": null,
+ "TagDimensionsOrder": [],
+ "BadgesOrder": [],
+ "Photos": [],
+ "ContextDataValues": {},
+ "Videos": []
+ },
+ {
+ "Id": "40779792",
+ "CID": "e0333450-2565-5c74-a1c5-d3afb1609ad3",
+ "SourceClient": "testcustomermobilesdk",
+ "LastModeratedTime": "2022-04-19T10:00:01.000+00:00",
+ "LastModificationTime": "2022-04-19T10:00:01.000+00:00",
+ "ProductId": "product1",
+ "AuthorId": "onwfpxl6aavn94o06ona361zb",
+ "ContentLocale": "en_US",
+ "IsFeatured": false,
+ "TotalInappropriateFeedbackCount": 0,
+ "TotalClientResponseCount": 0,
+ "TotalCommentCount": 0,
+ "Rating": 2,
+ "SecondaryRatingsOrder": [
+ "WhatSizeIsTheProduct"
+ ],
+ "IsRatingsOnly": false,
+ "TotalFeedbackCount": 0,
+ "TotalNegativeFeedbackCount": 0,
+ "TotalPositiveFeedbackCount": 0,
+ "ModerationStatus": "APPROVED",
+ "SubmissionId": "r210433_16503622WBMMjreSgu",
+ "SubmissionTime": "2022-04-19T09:56:54.000+00:00",
+ "ReviewText": "More then 50, More then 50, More then 50, More then 50,",
+ "Title": "Review title 2",
+ "UserNickname": "testSDKUser867jhhjkbjk",
+ "SecondaryRatings": {
+ "WhatSizeIsTheProduct": {
+ "Value": 3,
+ "Id": "WhatSizeIsTheProduct",
+ "Label": "What size is the product?",
+ "MaxLabel": "Large",
+ "DisplayType": "SLIDER",
+ "ValueLabel": "Large",
+ "MinLabel": "Small",
+ "ValueRange": 3
+ }
+ },
+ "AdditionalFields": {
+ "DateOfUserExperience": {
+ "Value": "2021-03-10",
+ "Id": "DateOfUserExperience",
+ "Label": "Date of Use"
+ }
+ },
+ "AdditionalFieldsOrder": [
+ "DateOfUserExperience"
+ ],
+ "Pros": null,
+ "Badges": {},
+ "RatingRange": 5,
+ "Helpfulness": null,
+ "ContextDataValuesOrder": [],
+ "ClientResponses": [],
+ "CommentIds": [],
+ "IsRecommended": null,
+ "Cons": null,
+ "InappropriateFeedbackList": [],
+ "TagDimensions": {},
+ "IsSyndicated": false,
+ "ProductRecommendationIds": [],
+ "UserLocation": null,
+ "CampaignId": null,
+ "TagDimensionsOrder": [],
+ "BadgesOrder": [],
+ "Photos": [],
+ "ContextDataValues": {},
+ "Videos": []
+ },
+ {
+ "Id": "40779790",
+ "CID": "eda8ea11-1fd9-5923-b7b5-96cc2ed0d5a8",
+ "SourceClient": "testcustomermobilesdk",
+ "LastModeratedTime": "2022-04-19T10:00:01.000+00:00",
+ "LastModificationTime": "2022-04-19T10:00:01.000+00:00",
+ "ProductId": "product1",
+ "AuthorId": "aoqigncoeyeacaomtarbytba4",
+ "ContentLocale": "en_US",
+ "IsFeatured": false,
+ "TotalInappropriateFeedbackCount": 0,
+ "TotalClientResponseCount": 0,
+ "TotalCommentCount": 0,
+ "Rating": 5,
+ "SecondaryRatingsOrder": [
+ "WhatSizeIsTheProduct"
+ ],
+ "IsRatingsOnly": false,
+ "TotalFeedbackCount": 0,
+ "TotalNegativeFeedbackCount": 0,
+ "TotalPositiveFeedbackCount": 0,
+ "ModerationStatus": "APPROVED",
+ "SubmissionId": "r210433_1650362182Fwy9x6Al",
+ "SubmissionTime": "2022-04-19T09:56:15.000+00:00",
+ "ReviewText": "More then 50, More then 50, More then 50, More then 50,",
+ "Title": "Review title",
+ "UserNickname": "testSDKUser867jh",
+ "SecondaryRatings": {
+ "WhatSizeIsTheProduct": {
+ "Value": 1,
+ "Id": "WhatSizeIsTheProduct",
+ "Label": "What size is the product?",
+ "MaxLabel": "Large",
+ "DisplayType": "SLIDER",
+ "ValueLabel": "Small",
+ "MinLabel": "Small",
+ "ValueRange": 3
+ }
+ },
+ "AdditionalFields": {
+ "DateOfUserExperience": {
+ "Value": "2021-03-10",
+ "Id": "DateOfUserExperience",
+ "Label": "Date of Use"
+ }
+ },
+ "AdditionalFieldsOrder": [
+ "DateOfUserExperience"
+ ],
+ "Pros": null,
+ "Badges": {},
+ "RatingRange": 5,
+ "Helpfulness": null,
+ "ContextDataValuesOrder": [],
+ "ClientResponses": [],
+ "CommentIds": [],
+ "IsRecommended": null,
+ "Cons": null,
+ "InappropriateFeedbackList": [],
+ "TagDimensions": {},
+ "IsSyndicated": false,
+ "ProductRecommendationIds": [],
+ "UserLocation": null,
+ "CampaignId": null,
+ "TagDimensionsOrder": [],
+ "BadgesOrder": [],
+ "Photos": [],
+ "ContextDataValues": {},
+ "Videos": []
+ },
+ {
+ "Id": "37976497",
+ "CID": "17b62d4c-8b9b-55fa-9531-2b045dc65320",
+ "SourceClient": "testcustomermobilesdk",
+ "LastModeratedTime": "2022-01-28T12:00:01.000+00:00",
+ "LastModificationTime": "2022-01-28T12:00:01.000+00:00",
+ "ProductId": "product1",
+ "AuthorId": "zeygrozkxbvg01ulz5yuxzk2y3",
+ "ContentLocale": "en_US",
+ "IsFeatured": false,
+ "TotalInappropriateFeedbackCount": 0,
+ "TotalClientResponseCount": 0,
+ "TotalCommentCount": 0,
+ "Rating": 4,
+ "IsRatingsOnly": false,
+ "TotalFeedbackCount": 0,
+ "TotalNegativeFeedbackCount": 0,
+ "TotalPositiveFeedbackCount": 0,
+ "ModerationStatus": "APPROVED",
+ "SubmissionId": "r210433-en_16433703ut9QJpQdTk",
+ "SubmissionTime": "2022-01-28T11:46:39.000+00:00",
+ "ReviewText": "This is great its so awesome. I highly recomend using this product and think it makes a great gift for any holiday or special occasion. by far the best purchase ive made this year",
+ "Title": "my favorite product ever!",
+ "UserNickname": null,
+ "AdditionalFields": {
+ "DateOfUserExperience": {
+ "Value": "2021-05-05",
+ "Id": "DateOfUserExperience",
+ "Label": "Date of Use"
+ }
+ },
+ "AdditionalFieldsOrder": [
+ "DateOfUserExperience"
+ ],
+ "Pros": null,
+ "Badges": {},
+ "RatingRange": 5,
+ "Helpfulness": null,
+ "ContextDataValuesOrder": [],
+ "ClientResponses": [],
+ "CommentIds": [],
+ "IsRecommended": null,
+ "Cons": null,
+ "InappropriateFeedbackList": [],
+ "SecondaryRatingsOrder": [],
+ "TagDimensions": {},
+ "IsSyndicated": false,
+ "ProductRecommendationIds": [],
+ "UserLocation": null,
+ "CampaignId": null,
+ "TagDimensionsOrder": [],
+ "BadgesOrder": [],
+ "Photos": [],
+ "SecondaryRatings": {},
+ "ContextDataValues": {},
+ "Videos": []
+ }
+ ],
+ "Includes": {
+ "Products": {
+ "product1": {
+ "Description": "Oriental poppies are among the most popular poppies available. The colors of the named varieties range all the way from silvery white, through blush and rose pink to salmon and scarlet-crimson.",
+ "ImageUrl": "http://display.ugc.bazaarvoice.com/common/test/images/oriental_poppy.jpg",
+ "Name": "Papaver orientale",
+ "Id": "product1",
+ "CategoryId": "sampleCategory",
+ "BrandExternalId": "sampleBrand",
+ "Brand": {
+ "Id": "sampleBrand",
+ "Name": "Flowers"
+ },
+ "Active": true,
+ "ProductPageUrl": "http://en.wikipedia.org/wiki/Papaver_orientale",
+ "Disabled": false,
+ "FamilyIds": [],
+ "ModelNumbers": [],
+ "AttributesOrder": [],
+ "UPCs": [],
+ "ISBNs": [],
+ "QuestionIds": [],
+ "StoryIds": [],
+ "Attributes": {},
+ "EANs": [],
+ "ManufacturerPartNumbers": [],
+ "ReviewIds": [],
+ "ReviewStatistics": {
+ "TotalReviewCount": 13,
+ "RecommendedCount": 0,
+ "NotRecommendedCount": 0,
+ "SecondaryRatingsDistributionOrder": [
+ "Quality",
+ null,
+ "WhatSizeIsTheProduct"
+ ],
+ "SecondaryRatingsDistribution": {
+ "Quality": {
+ "Id": "Quality",
+ "Values": [
+ {
+ "Value": 4,
+ "Count": 6
+ },
+ {
+ "Value": 5,
+ "Count": 1
+ }
+ ],
+ "Label": "Quality of Product"
+ },
+ "WhatSizeIsTheProduct": {
+ "Id": "WhatSizeIsTheProduct",
+ "Values": [
+ {
+ "Value": 2,
+ "Count": 6,
+ "ValueLabel": "Medium"
+ },
+ {
+ "Value": 3,
+ "Count": 2,
+ "ValueLabel": "Large"
+ },
+ {
+ "Value": 1,
+ "Count": 1,
+ "ValueLabel": "Small"
+ }
+ ],
+ "Label": "What size is the product?"
+ }
+ },
+ "HelpfulVoteCount": 0,
+ "RatingsOnlyReviewCount": 0,
+ "FirstSubmissionTime": "2021-12-17T06:50:48.000+00:00",
+ "LastSubmissionTime": "2022-04-20T06:06:17.000+00:00",
+ "NotHelpfulVoteCount": 0,
+ "RatingDistribution": [
+ {
+ "RatingValue": 5,
+ "Count": 7
+ },
+ {
+ "RatingValue": 4,
+ "Count": 5
+ },
+ {
+ "RatingValue": 2,
+ "Count": 1
+ }
+ ],
+ "SecondaryRatingsAveragesOrder": [
+ "Quality",
+ "WhatSizeIsTheProduct"
+ ],
+ "SecondaryRatingsAverages": {
+ "WhatSizeIsTheProduct": {
+ "Id": "WhatSizeIsTheProduct",
+ "AverageRating": 2.111111111111111,
+ "DisplayType": "SLIDER",
+ "ValueRange": 3,
+ "MaxLabel": "Large",
+ "MinLabel": "Small",
+ "Label": "What size is the product?",
+ "ValueLabel": [
+ "Small",
+ "Medium",
+ "Large"
+ ]
+ },
+ "Quality": {
+ "Id": "Quality",
+ "AverageRating": 4.142857142857143,
+ "MaxLabel": null,
+ "DisplayType": "NORMAL",
+ "MinLabel": null,
+ "ValueRange": 5,
+ "Label": "Quality of Product"
+ }
+ },
+ "AverageOverallRating": 4.384615384615385,
+ "FeaturedReviewCount": 0,
+ "ContextDataDistribution": {},
+ "ContextDataDistributionOrder": [],
+ "OverallRatingRange": 5,
+ "TagDistribution": {},
+ "TagDistributionOrder": []
+ },
+ "TotalReviewCount": 13
+ }
+ },
+ "ProductsOrder": [
+ "product1"
+ ]
+ },
+ "HasErrors": false,
+ "Errors": []
+}
\ No newline at end of file
diff --git a/bvconversations/src/test/resources/review_tag_stats.json b/bvconversations/src/test/resources/review_tag_stats.json
new file mode 100644
index 00000000..d567a95a
--- /dev/null
+++ b/bvconversations/src/test/resources/review_tag_stats.json
@@ -0,0 +1,1587 @@
+{
+ "Limit": 10,
+ "Offset": 0,
+ "TotalResults": 79,
+ "Locale": "en_US",
+ "Results": [
+ {
+ "Id": "36847658",
+ "CID": "6e656254-6443-5eb6-b806-fe835c4bf1a3",
+ "SourceClient": "trulliaudio",
+ "Badges": {
+ "verifiedPurchaser": {
+ "ContentType": "REVIEW",
+ "Id": "verifiedPurchaser",
+ "BadgeType": "Custom"
+ }
+ },
+ "BadgesOrder": [
+ "verifiedPurchaser"
+ ],
+ "LastModeratedTime": "2021-10-26T16:00:01.000+00:00",
+ "LastModificationTime": "2021-10-26T16:00:01.000+00:00",
+ "ProductId": "JAM5BLK",
+ "AuthorId": "local-1635263471589",
+ "ContentLocale": "en_US",
+ "IsFeatured": false,
+ "TotalInappropriateFeedbackCount": 0,
+ "TotalClientResponseCount": 0,
+ "TotalCommentCount": 0,
+ "Rating": 5,
+ "IsRatingsOnly": false,
+ "TotalFeedbackCount": 0,
+ "TotalNegativeFeedbackCount": 0,
+ "TotalPositiveFeedbackCount": 0,
+ "ModerationStatus": "APPROVED",
+ "SubmissionId": "r217601-en_16352638fBCAxYpgrY",
+ "SubmissionTime": "2021-10-26T15:56:56.000+00:00",
+ "ReviewText": "This is a preview of the Ratings format for the JAM5 review on the Main Implementation deployment zone.",
+ "Title": "Testing the Main Implementation",
+ "UserNickname": "England Dan",
+ "CommentIds": [],
+ "Pros": null,
+ "IsRecommended": null,
+ "ContextDataValuesOrder": [],
+ "Helpfulness": null,
+ "TagDimensionsOrder": [],
+ "AdditionalFieldsOrder": [],
+ "InappropriateFeedbackList": [],
+ "SecondaryRatingsOrder": [],
+ "Videos": [],
+ "ClientResponses": [],
+ "UserLocation": null,
+ "CampaignId": null,
+ "IsSyndicated": false,
+ "SecondaryRatings": {},
+ "TagDimensions": {},
+ "Photos": [],
+ "RatingRange": 5,
+ "ContextDataValues": {},
+ "AdditionalFields": {},
+ "Cons": null,
+ "ProductRecommendationIds": []
+ },
+ {
+ "Id": "36702903",
+ "CID": "463fb22b-e643-5b3e-9d6b-e5d7cf7f9996",
+ "SourceClient": "trulliaudio",
+ "LastModeratedTime": "2021-10-21T18:30:01.000+00:00",
+ "LastModificationTime": "2021-10-21T18:30:01.000+00:00",
+ "ProductId": "JAM5BLK",
+ "ContextDataValuesOrder": [
+ "RecommendRating",
+ "AreYouATrulliEmployee",
+ "DidYouReceiveThisProductForFree"
+ ],
+ "UserLocation": "test, NE",
+ "AuthorId": "66iaouoyiegqyoberaws7jsnv",
+ "ContentLocale": "en_US",
+ "IsFeatured": false,
+ "TotalInappropriateFeedbackCount": 0,
+ "TotalClientResponseCount": 0,
+ "TotalCommentCount": 0,
+ "Rating": 5,
+ "SecondaryRatingsOrder": [
+ "SoundQuality",
+ "Volume",
+ "BatteryLife",
+ "Portability",
+ "SignalRange",
+ "AppearanceDesign"
+ ],
+ "IsRatingsOnly": false,
+ "TotalFeedbackCount": 0,
+ "TotalNegativeFeedbackCount": 0,
+ "TotalPositiveFeedbackCount": 0,
+ "ModerationStatus": "APPROVED",
+ "SubmissionId": "r217601-en_16348405J0o4WX7Jr8",
+ "SubmissionTime": "2021-10-21T18:21:55.000+00:00",
+ "ReviewText": "Testing to validate whether the YouTube link inserted under \"Add photos / videos\" is working on dev.",
+ "Title": "Sound Quality is Super - Test Review AG",
+ "UserNickname": "Armand",
+ "Videos": [
+ {
+ "VideoId": "wzjWIxXBs_s",
+ "VideoHost": "www.youtube.com",
+ "VideoThumbnailUrl": null,
+ "VideoIframeUrl": "https://www.youtube.com/embed/wzjWIxXBs_s",
+ "Caption": null,
+ "VideoUrl": "https://www.youtube.com/watch?v=wzjWIxXBs_s"
+ }
+ ],
+ "SecondaryRatings": {
+ "AppearanceDesign": {
+ "Value": 5,
+ "Id": "AppearanceDesign",
+ "ValueLabel": null,
+ "ValueRange": 5,
+ "Label": null,
+ "DisplayType": "NORMAL",
+ "MaxLabel": null,
+ "MinLabel": null
+ },
+ "Volume": {
+ "Value": 5,
+ "Id": "Volume",
+ "ValueLabel": null,
+ "ValueRange": 5,
+ "Label": null,
+ "DisplayType": "NORMAL",
+ "MaxLabel": null,
+ "MinLabel": null
+ },
+ "SignalRange": {
+ "Value": 5,
+ "Id": "SignalRange",
+ "ValueLabel": null,
+ "ValueRange": 5,
+ "Label": null,
+ "DisplayType": "NORMAL",
+ "MaxLabel": null,
+ "MinLabel": null
+ },
+ "Portability": {
+ "Value": 5,
+ "Id": "Portability",
+ "ValueLabel": null,
+ "ValueRange": 5,
+ "Label": null,
+ "DisplayType": "NORMAL",
+ "MaxLabel": null,
+ "MinLabel": null
+ },
+ "BatteryLife": {
+ "Value": 5,
+ "Id": "BatteryLife",
+ "ValueLabel": null,
+ "ValueRange": 5,
+ "Label": null,
+ "DisplayType": "NORMAL",
+ "MaxLabel": null,
+ "MinLabel": null
+ },
+ "SoundQuality": {
+ "Value": 5,
+ "Id": "SoundQuality",
+ "ValueLabel": null,
+ "ValueRange": 5,
+ "Label": null,
+ "DisplayType": "NORMAL",
+ "MaxLabel": null,
+ "MinLabel": null
+ }
+ },
+ "ContextDataValues": {
+ "AreYouATrulliEmployee": {
+ "Value": "Yes",
+ "Id": "AreYouATrulliEmployee"
+ },
+ "DidYouReceiveThisProductForFree": {
+ "Value": "Yes",
+ "Id": "DidYouReceiveThisProductForFree"
+ },
+ "RecommendRating": {
+ "Value": "10",
+ "Id": "RecommendRating"
+ }
+ },
+ "AdditionalFields": {
+ "Avatar": {
+ "Value": "1",
+ "Id": "Avatar"
+ }
+ },
+ "AdditionalFieldsOrder": [
+ "Avatar"
+ ],
+ "CommentIds": [],
+ "Pros": null,
+ "IsRecommended": null,
+ "Helpfulness": null,
+ "TagDimensionsOrder": [],
+ "InappropriateFeedbackList": [],
+ "ClientResponses": [],
+ "CampaignId": null,
+ "IsSyndicated": false,
+ "TagDimensions": {},
+ "Photos": [],
+ "BadgesOrder": [],
+ "RatingRange": 5,
+ "Badges": {},
+ "Cons": null,
+ "ProductRecommendationIds": []
+ },
+ {
+ "Id": "36672313",
+ "CID": "afd06bb1-0af5-5433-90a9-55bc5d919310",
+ "SourceClient": "trulliaudio",
+ "LastModeratedTime": "2021-10-04T19:45:01.000+00:00",
+ "LastModificationTime": "2021-10-04T19:45:01.000+00:00",
+ "ProductId": "JAM5BLK",
+ "AuthorId": "6wjfm45mhkng1cjspdikm2oad",
+ "ContentLocale": "en_US",
+ "IsFeatured": false,
+ "TotalInappropriateFeedbackCount": 0,
+ "TotalClientResponseCount": 0,
+ "TotalCommentCount": 0,
+ "Rating": 5,
+ "IsRatingsOnly": false,
+ "TotalFeedbackCount": 0,
+ "TotalNegativeFeedbackCount": 0,
+ "TotalPositiveFeedbackCount": 0,
+ "ModerationStatus": "APPROVED",
+ "SubmissionId": "r217601-en_16333759awvhsXtXK4",
+ "SubmissionTime": "2021-10-04T19:32:58.000+00:00",
+ "ReviewText": "this is an amazing review from bv to test api submission",
+ "Title": "This is a bv title test",
+ "UserNickname": "Paulius",
+ "CommentIds": [],
+ "Pros": null,
+ "IsRecommended": null,
+ "ContextDataValuesOrder": [],
+ "Helpfulness": null,
+ "TagDimensionsOrder": [],
+ "AdditionalFieldsOrder": [],
+ "InappropriateFeedbackList": [],
+ "SecondaryRatingsOrder": [],
+ "Videos": [],
+ "ClientResponses": [],
+ "UserLocation": null,
+ "CampaignId": null,
+ "IsSyndicated": false,
+ "SecondaryRatings": {},
+ "TagDimensions": {},
+ "Photos": [],
+ "BadgesOrder": [],
+ "RatingRange": 5,
+ "Badges": {},
+ "ContextDataValues": {},
+ "AdditionalFields": {},
+ "Cons": null,
+ "ProductRecommendationIds": []
+ },
+ {
+ "Id": "36576409",
+ "CID": "163a372a-94c2-5192-b311-f9ae268261b9",
+ "SourceClient": "trulliaudio",
+ "LastModeratedTime": "2021-09-09T06:30:01.000+00:00",
+ "LastModificationTime": "2021-09-09T06:30:01.000+00:00",
+ "ProductId": "JAM5BLK",
+ "ContextDataValuesOrder": [
+ "Gender",
+ "TimeOwned"
+ ],
+ "UserLocation": "Austin, TX",
+ "AuthorId": "hwcmm4wso11imjb0k8lpgcswr",
+ "ContentLocale": "en_US",
+ "IsFeatured": false,
+ "TotalInappropriateFeedbackCount": 0,
+ "TotalClientResponseCount": 0,
+ "TotalCommentCount": 0,
+ "Rating": 5,
+ "SecondaryRatingsOrder": [
+ "SoundQuality",
+ "Volume",
+ "BatteryLife",
+ "Portability",
+ "EaseOfUse",
+ "SignalRange",
+ "AppearanceDesign"
+ ],
+ "IsRatingsOnly": false,
+ "TotalFeedbackCount": 0,
+ "TotalNegativeFeedbackCount": 0,
+ "TotalPositiveFeedbackCount": 0,
+ "ModerationStatus": "APPROVED",
+ "SubmissionId": "r217601-en_16311689ZVbJWCyWs7",
+ "SubmissionTime": "2021-09-09T06:29:43.000+00:00",
+ "ReviewText": "This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test",
+ "Title": "Test test test test test test2",
+ "UserNickname": "testievanumber2",
+ "SecondaryRatings": {
+ "AppearanceDesign": {
+ "Value": 2,
+ "Id": "AppearanceDesign",
+ "ValueLabel": null,
+ "ValueRange": 5,
+ "Label": null,
+ "DisplayType": "NORMAL",
+ "MaxLabel": null,
+ "MinLabel": null
+ },
+ "Volume": {
+ "Value": 4,
+ "Id": "Volume",
+ "ValueLabel": null,
+ "ValueRange": 5,
+ "Label": null,
+ "DisplayType": "NORMAL",
+ "MaxLabel": null,
+ "MinLabel": null
+ },
+ "EaseOfUse": {
+ "Value": 1,
+ "Id": "EaseOfUse",
+ "ValueLabel": null,
+ "ValueRange": 5,
+ "Label": null,
+ "DisplayType": "NORMAL",
+ "MaxLabel": null,
+ "MinLabel": null
+ },
+ "SignalRange": {
+ "Value": 4,
+ "Id": "SignalRange",
+ "ValueLabel": null,
+ "ValueRange": 5,
+ "Label": null,
+ "DisplayType": "NORMAL",
+ "MaxLabel": null,
+ "MinLabel": null
+ },
+ "Portability": {
+ "Value": 5,
+ "Id": "Portability",
+ "ValueLabel": null,
+ "ValueRange": 5,
+ "Label": null,
+ "DisplayType": "NORMAL",
+ "MaxLabel": null,
+ "MinLabel": null
+ },
+ "BatteryLife": {
+ "Value": 2,
+ "Id": "BatteryLife",
+ "ValueLabel": null,
+ "ValueRange": 5,
+ "Label": null,
+ "DisplayType": "NORMAL",
+ "MaxLabel": null,
+ "MinLabel": null
+ },
+ "SoundQuality": {
+ "Value": 3,
+ "Id": "SoundQuality",
+ "ValueLabel": null,
+ "ValueRange": 5,
+ "Label": null,
+ "DisplayType": "NORMAL",
+ "MaxLabel": null,
+ "MinLabel": null
+ }
+ },
+ "ContextDataValues": {
+ "TimeOwned": {
+ "Value": "2",
+ "Id": "TimeOwned"
+ },
+ "Gender": {
+ "Value": "Female",
+ "Id": "Gender"
+ }
+ },
+ "AdditionalFields": {
+ "Avatar": {
+ "Value": "1",
+ "Id": "Avatar"
+ }
+ },
+ "AdditionalFieldsOrder": [
+ "Avatar"
+ ],
+ "CommentIds": [],
+ "Pros": null,
+ "IsRecommended": null,
+ "Helpfulness": null,
+ "TagDimensionsOrder": [],
+ "InappropriateFeedbackList": [],
+ "Videos": [],
+ "ClientResponses": [],
+ "CampaignId": null,
+ "IsSyndicated": false,
+ "TagDimensions": {},
+ "Photos": [],
+ "BadgesOrder": [],
+ "RatingRange": 5,
+ "Badges": {},
+ "Cons": null,
+ "ProductRecommendationIds": []
+ },
+ {
+ "Id": "36576224",
+ "CID": "d7d801d3-80d9-58e7-afde-aa9287963ebb",
+ "SourceClient": "trulliaudio",
+ "LastModeratedTime": "2021-09-08T12:00:02.000+00:00",
+ "LastModificationTime": "2021-09-08T12:00:02.000+00:00",
+ "ProductId": "JAM5BLK",
+ "ContextDataValuesOrder": [
+ "Gender",
+ "TimeOwned"
+ ],
+ "UserLocation": "New York, AE",
+ "AuthorId": "sxvvfhbztoavxs2n84s16knql",
+ "ContentLocale": "en_US",
+ "IsFeatured": false,
+ "TotalInappropriateFeedbackCount": 0,
+ "TotalClientResponseCount": 0,
+ "TotalCommentCount": 0,
+ "Rating": 3,
+ "IsRatingsOnly": false,
+ "TotalFeedbackCount": 0,
+ "TotalNegativeFeedbackCount": 0,
+ "TotalPositiveFeedbackCount": 0,
+ "ModerationStatus": "APPROVED",
+ "SubmissionId": "r217601-en_16311016IjKr8W4hC0",
+ "SubmissionTime": "2021-09-08T11:48:08.000+00:00",
+ "ReviewText": "This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test",
+ "Title": "Test test test test test test",
+ "UserNickname": "Testnicname",
+ "ContextDataValues": {
+ "TimeOwned": {
+ "Value": "1",
+ "Id": "TimeOwned"
+ },
+ "Gender": {
+ "Value": "Female",
+ "Id": "Gender"
+ }
+ },
+ "AdditionalFields": {
+ "Avatar": {
+ "Value": "4",
+ "Id": "Avatar"
+ }
+ },
+ "AdditionalFieldsOrder": [
+ "Avatar"
+ ],
+ "CommentIds": [],
+ "Pros": null,
+ "IsRecommended": null,
+ "Helpfulness": null,
+ "TagDimensionsOrder": [],
+ "InappropriateFeedbackList": [],
+ "SecondaryRatingsOrder": [],
+ "Videos": [],
+ "ClientResponses": [],
+ "CampaignId": null,
+ "IsSyndicated": false,
+ "SecondaryRatings": {},
+ "TagDimensions": {},
+ "Photos": [],
+ "BadgesOrder": [],
+ "RatingRange": 5,
+ "Badges": {},
+ "Cons": null,
+ "ProductRecommendationIds": []
+ },
+ {
+ "Id": "36538052",
+ "CID": "dae26371-0454-58df-8778-de97dc4b78f0",
+ "SourceClient": "trulliaudio",
+ "LastModeratedTime": "2021-08-24T19:00:02.000+00:00",
+ "LastModificationTime": "2021-08-24T19:00:02.000+00:00",
+ "ProductId": "JAM5BLK",
+ "ContextDataValuesOrder": [
+ "RecommendRating",
+ "AreYouATrulliEmployee",
+ "DidYouReceiveThisProductForFree"
+ ],
+ "UserLocation": ", AZ",
+ "AuthorId": "2rmswzo5r3hc8gkv78ycc5j4j",
+ "ContentLocale": "en_US",
+ "IsFeatured": false,
+ "TotalInappropriateFeedbackCount": 0,
+ "TotalClientResponseCount": 0,
+ "TotalCommentCount": 0,
+ "Photos": [
+ {
+ "Sizes": {
+ "normal": {
+ "Id": "normal",
+ "Url": "https://photos-uat-us.bazaarvoice.com/photo/2/cGhvdG86dHJ1bGxpYXVkaW8/3e97ce2e-9884-5fcd-afb3-85942e9e120d"
+ },
+ "thumbnail": {
+ "Id": "thumbnail",
+ "Url": "https://photos-uat-us.bazaarvoice.com/photo/2/cGhvdG86dHJ1bGxpYXVkaW8/2e0d3837-683e-5c1d-99af-ca9886ba4d00"
+ },
+ "large": {
+ "Id": "large",
+ "Url": "https://photos-uat-us.bazaarvoice.com/photo/2/cGhvdG86dHJ1bGxpYXVkaW8/0b1438e6-a3ab-5107-8e1a-6fc75f1a7260"
+ }
+ },
+ "Id": "1214766",
+ "SizesOrder": [
+ "normal",
+ "thumbnail",
+ "large"
+ ],
+ "Caption": null
+ }
+ ],
+ "Rating": 3,
+ "SecondaryRatingsOrder": [
+ "SoundQuality",
+ "Volume",
+ "BatteryLife",
+ "Portability",
+ "SignalRange",
+ "AppearanceDesign"
+ ],
+ "IsRatingsOnly": false,
+ "TotalFeedbackCount": 0,
+ "TotalNegativeFeedbackCount": 0,
+ "TotalPositiveFeedbackCount": 0,
+ "ModerationStatus": "APPROVED",
+ "SubmissionId": "r217601-en_16298308XMYXqLu04S",
+ "SubmissionTime": "2021-08-24T18:47:01.000+00:00",
+ "ReviewText": "Mauris blandit aliquet elit, eget tincidunt nibh pulvinar a. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus suscipit tortor eget felis porttitor volutpat. Vivamus suscipit tortor eget felis porttitor volutpat. Nulla porttitor accumsan tincidunt. Donec rutrum congue leo eget malesuada. Nulla quis lorem ut libero malesuada feugiat. Vivamus magna justo, lacinia eget consectetur sed, convallis at tellus. Vestibulum ac diam sit amet quam vehicula elementum sed sit amet dui. Nulla porttitor accumsan tincidunt.",
+ "Title": "Testing 892",
+ "UserNickname": "nats",
+ "Videos": [
+ {
+ "VideoId": "rhE45ihB26E",
+ "VideoHost": "www.youtube.com",
+ "VideoThumbnailUrl": null,
+ "VideoIframeUrl": "https://www.youtube.com/embed/rhE45ihB26E",
+ "Caption": null,
+ "VideoUrl": "https://www.youtube.com/watch?v=rhE45ihB26E"
+ }
+ ],
+ "SecondaryRatings": {
+ "AppearanceDesign": {
+ "Value": 2,
+ "Id": "AppearanceDesign",
+ "ValueLabel": null,
+ "ValueRange": 5,
+ "Label": null,
+ "DisplayType": "NORMAL",
+ "MaxLabel": null,
+ "MinLabel": null
+ },
+ "Volume": {
+ "Value": 2,
+ "Id": "Volume",
+ "ValueLabel": null,
+ "ValueRange": 5,
+ "Label": null,
+ "DisplayType": "NORMAL",
+ "MaxLabel": null,
+ "MinLabel": null
+ },
+ "SignalRange": {
+ "Value": 5,
+ "Id": "SignalRange",
+ "ValueLabel": null,
+ "ValueRange": 5,
+ "Label": null,
+ "DisplayType": "NORMAL",
+ "MaxLabel": null,
+ "MinLabel": null
+ },
+ "Portability": {
+ "Value": 4,
+ "Id": "Portability",
+ "ValueLabel": null,
+ "ValueRange": 5,
+ "Label": null,
+ "DisplayType": "NORMAL",
+ "MaxLabel": null,
+ "MinLabel": null
+ },
+ "BatteryLife": {
+ "Value": 3,
+ "Id": "BatteryLife",
+ "ValueLabel": null,
+ "ValueRange": 5,
+ "Label": null,
+ "DisplayType": "NORMAL",
+ "MaxLabel": null,
+ "MinLabel": null
+ },
+ "SoundQuality": {
+ "Value": 1,
+ "Id": "SoundQuality",
+ "ValueLabel": null,
+ "ValueRange": 5,
+ "Label": null,
+ "DisplayType": "NORMAL",
+ "MaxLabel": null,
+ "MinLabel": null
+ }
+ },
+ "ContextDataValues": {
+ "AreYouATrulliEmployee": {
+ "Value": "Yes",
+ "Id": "AreYouATrulliEmployee"
+ },
+ "DidYouReceiveThisProductForFree": {
+ "Value": "Yes",
+ "Id": "DidYouReceiveThisProductForFree"
+ },
+ "RecommendRating": {
+ "Value": "8",
+ "Id": "RecommendRating"
+ }
+ },
+ "AdditionalFields": {
+ "Avatar": {
+ "Value": "2",
+ "Id": "Avatar"
+ }
+ },
+ "AdditionalFieldsOrder": [
+ "Avatar"
+ ],
+ "CommentIds": [],
+ "Pros": null,
+ "IsRecommended": null,
+ "Helpfulness": null,
+ "TagDimensionsOrder": [],
+ "InappropriateFeedbackList": [],
+ "ClientResponses": [],
+ "CampaignId": null,
+ "IsSyndicated": false,
+ "TagDimensions": {},
+ "BadgesOrder": [],
+ "RatingRange": 5,
+ "Badges": {},
+ "Cons": null,
+ "ProductRecommendationIds": []
+ },
+ {
+ "Id": "36537853",
+ "CID": "44afaaaf-dc68-53e8-8b15-9d918b3c1e21",
+ "SourceClient": "trulliaudio",
+ "LastModeratedTime": "2021-08-23T23:30:02.000+00:00",
+ "LastModificationTime": "2021-08-23T23:30:02.000+00:00",
+ "ProductId": "JAM5BLK",
+ "ContextDataValuesOrder": [
+ "RecommendRating",
+ "AreYouATrulliEmployee",
+ "DidYouReceiveThisProductForFree"
+ ],
+ "UserLocation": "Chicago, IL",
+ "AuthorId": "ku8k38cou74orxxhku2rjvxch",
+ "ContentLocale": "en_US",
+ "IsFeatured": false,
+ "TotalInappropriateFeedbackCount": 0,
+ "TotalClientResponseCount": 0,
+ "TotalCommentCount": 0,
+ "Rating": 5,
+ "SecondaryRatingsOrder": [
+ "SoundQuality",
+ "Volume",
+ "BatteryLife",
+ "Portability",
+ "SignalRange",
+ "AppearanceDesign"
+ ],
+ "IsRatingsOnly": false,
+ "TotalFeedbackCount": 0,
+ "TotalNegativeFeedbackCount": 0,
+ "TotalPositiveFeedbackCount": 0,
+ "ModerationStatus": "APPROVED",
+ "SubmissionId": "r217601-en_16297611pOhfeWokMN",
+ "SubmissionTime": "2021-08-23T23:26:17.000+00:00",
+ "ReviewText": "Ut scelerisque vitae tellus ac ullamcorper. Duis mollis quam vitae mauris consectetur, at lacinia ipsum fermentum. Aenean posuere viverra mattis. Phasellus finibus turpis velit, at tincidunt justo sollicitudin non.",
+ "Title": "Dev Test Review",
+ "UserNickname": "Dev Andres",
+ "SecondaryRatings": {
+ "AppearanceDesign": {
+ "Value": 4,
+ "Id": "AppearanceDesign",
+ "ValueLabel": null,
+ "ValueRange": 5,
+ "Label": null,
+ "DisplayType": "NORMAL",
+ "MaxLabel": null,
+ "MinLabel": null
+ },
+ "Volume": {
+ "Value": 5,
+ "Id": "Volume",
+ "ValueLabel": null,
+ "ValueRange": 5,
+ "Label": null,
+ "DisplayType": "NORMAL",
+ "MaxLabel": null,
+ "MinLabel": null
+ },
+ "SignalRange": {
+ "Value": 5,
+ "Id": "SignalRange",
+ "ValueLabel": null,
+ "ValueRange": 5,
+ "Label": null,
+ "DisplayType": "NORMAL",
+ "MaxLabel": null,
+ "MinLabel": null
+ },
+ "Portability": {
+ "Value": 5,
+ "Id": "Portability",
+ "ValueLabel": null,
+ "ValueRange": 5,
+ "Label": null,
+ "DisplayType": "NORMAL",
+ "MaxLabel": null,
+ "MinLabel": null
+ },
+ "BatteryLife": {
+ "Value": 5,
+ "Id": "BatteryLife",
+ "ValueLabel": null,
+ "ValueRange": 5,
+ "Label": null,
+ "DisplayType": "NORMAL",
+ "MaxLabel": null,
+ "MinLabel": null
+ },
+ "SoundQuality": {
+ "Value": 5,
+ "Id": "SoundQuality",
+ "ValueLabel": null,
+ "ValueRange": 5,
+ "Label": null,
+ "DisplayType": "NORMAL",
+ "MaxLabel": null,
+ "MinLabel": null
+ }
+ },
+ "ContextDataValues": {
+ "AreYouATrulliEmployee": {
+ "Value": "No",
+ "Id": "AreYouATrulliEmployee"
+ },
+ "DidYouReceiveThisProductForFree": {
+ "Value": "Yes",
+ "Id": "DidYouReceiveThisProductForFree"
+ },
+ "RecommendRating": {
+ "Value": "9",
+ "Id": "RecommendRating"
+ }
+ },
+ "AdditionalFields": {
+ "Avatar": {
+ "Value": "7",
+ "Id": "Avatar"
+ }
+ },
+ "AdditionalFieldsOrder": [
+ "Avatar"
+ ],
+ "CommentIds": [],
+ "Pros": null,
+ "IsRecommended": null,
+ "Helpfulness": null,
+ "TagDimensionsOrder": [],
+ "InappropriateFeedbackList": [],
+ "Videos": [],
+ "ClientResponses": [],
+ "CampaignId": null,
+ "IsSyndicated": false,
+ "TagDimensions": {},
+ "Photos": [],
+ "BadgesOrder": [],
+ "RatingRange": 5,
+ "Badges": {},
+ "Cons": null,
+ "ProductRecommendationIds": []
+ },
+ {
+ "Id": "36537615",
+ "CID": "d9ef4cd4-5693-5c81-9207-f80511b1c2cf",
+ "SourceClient": "trulliaudio",
+ "LastModeratedTime": "2021-08-23T17:00:02.000+00:00",
+ "LastModificationTime": "2021-08-23T17:00:02.000+00:00",
+ "ProductId": "JAM5BLK",
+ "ContextDataValuesOrder": [
+ "RecommendRating",
+ "AreYouATrulliEmployee",
+ "DidYouReceiveThisProductForFree"
+ ],
+ "UserLocation": ", undefined",
+ "AuthorId": "e9wezdu8bg3o2za7xh4injrlp",
+ "ContentLocale": "en_US",
+ "IsFeatured": false,
+ "TotalInappropriateFeedbackCount": 0,
+ "TotalClientResponseCount": 0,
+ "TotalCommentCount": 0,
+ "Rating": 4,
+ "SecondaryRatingsOrder": [
+ "SoundQuality",
+ "Volume",
+ "BatteryLife",
+ "Portability",
+ "SignalRange",
+ "AppearanceDesign"
+ ],
+ "IsRatingsOnly": false,
+ "TotalFeedbackCount": 0,
+ "TotalNegativeFeedbackCount": 0,
+ "TotalPositiveFeedbackCount": 0,
+ "ModerationStatus": "APPROVED",
+ "SubmissionId": "r217601-en_16297375sSV2td9w4R",
+ "SubmissionTime": "2021-08-23T16:51:48.000+00:00",
+ "ReviewText": "short review",
+ "Title": "Test Review",
+ "UserNickname": "Test Name",
+ "SecondaryRatings": {
+ "AppearanceDesign": {
+ "Value": 5,
+ "Id": "AppearanceDesign",
+ "ValueLabel": null,
+ "ValueRange": 5,
+ "Label": null,
+ "DisplayType": "NORMAL",
+ "MaxLabel": null,
+ "MinLabel": null
+ },
+ "Volume": {
+ "Value": 4,
+ "Id": "Volume",
+ "ValueLabel": null,
+ "ValueRange": 5,
+ "Label": null,
+ "DisplayType": "NORMAL",
+ "MaxLabel": null,
+ "MinLabel": null
+ },
+ "SignalRange": {
+ "Value": 4,
+ "Id": "SignalRange",
+ "ValueLabel": null,
+ "ValueRange": 5,
+ "Label": null,
+ "DisplayType": "NORMAL",
+ "MaxLabel": null,
+ "MinLabel": null
+ },
+ "Portability": {
+ "Value": 5,
+ "Id": "Portability",
+ "ValueLabel": null,
+ "ValueRange": 5,
+ "Label": null,
+ "DisplayType": "NORMAL",
+ "MaxLabel": null,
+ "MinLabel": null
+ },
+ "BatteryLife": {
+ "Value": 5,
+ "Id": "BatteryLife",
+ "ValueLabel": null,
+ "ValueRange": 5,
+ "Label": null,
+ "DisplayType": "NORMAL",
+ "MaxLabel": null,
+ "MinLabel": null
+ },
+ "SoundQuality": {
+ "Value": 5,
+ "Id": "SoundQuality",
+ "ValueLabel": null,
+ "ValueRange": 5,
+ "Label": null,
+ "DisplayType": "NORMAL",
+ "MaxLabel": null,
+ "MinLabel": null
+ }
+ },
+ "ContextDataValues": {
+ "AreYouATrulliEmployee": {
+ "Value": "No",
+ "Id": "AreYouATrulliEmployee"
+ },
+ "DidYouReceiveThisProductForFree": {
+ "Value": "Yes",
+ "Id": "DidYouReceiveThisProductForFree"
+ },
+ "RecommendRating": {
+ "Value": "9",
+ "Id": "RecommendRating"
+ }
+ },
+ "AdditionalFields": {
+ "Avatar": {
+ "Value": "2",
+ "Id": "Avatar"
+ }
+ },
+ "AdditionalFieldsOrder": [
+ "Avatar"
+ ],
+ "CommentIds": [],
+ "Pros": null,
+ "IsRecommended": null,
+ "Helpfulness": null,
+ "TagDimensionsOrder": [],
+ "InappropriateFeedbackList": [],
+ "Videos": [],
+ "ClientResponses": [],
+ "CampaignId": null,
+ "IsSyndicated": false,
+ "TagDimensions": {},
+ "Photos": [],
+ "BadgesOrder": [],
+ "RatingRange": 5,
+ "Badges": {},
+ "Cons": null,
+ "ProductRecommendationIds": []
+ },
+ {
+ "Id": "36075710",
+ "CID": "2d2b0abc-cdbd-53c1-a5b9-d48559af332c",
+ "SourceClient": "trulliaudio",
+ "LastModeratedTime": "2021-07-21T19:00:01.000+00:00",
+ "LastModificationTime": "2021-07-21T19:00:01.000+00:00",
+ "ProductId": "JAM5BLK",
+ "ContextDataValuesOrder": [
+ "RecommendRating",
+ "AreYouATrulliEmployee",
+ "DidYouReceiveThisProductForFree"
+ ],
+ "UserLocation": "Miami, FL",
+ "AuthorId": "q7i0cqiu5irjhr1vjwckj6374",
+ "ContentLocale": "en_US",
+ "IsFeatured": false,
+ "TotalInappropriateFeedbackCount": 0,
+ "TotalClientResponseCount": 0,
+ "TotalCommentCount": 0,
+ "Photos": [
+ {
+ "Sizes": {
+ "normal": {
+ "Id": "normal",
+ "Url": "https://photos-uat-us.bazaarvoice.com/photo/2/cGhvdG86dHJ1bGxpYXVkaW8/a6dae1b7-eeef-5858-82be-f41e7a180737"
+ },
+ "thumbnail": {
+ "Id": "thumbnail",
+ "Url": "https://photos-uat-us.bazaarvoice.com/photo/2/cGhvdG86dHJ1bGxpYXVkaW8/7508581f-8731-56de-b5bc-dc1ad565fe5d"
+ },
+ "large": {
+ "Id": "large",
+ "Url": "https://photos-uat-us.bazaarvoice.com/photo/2/cGhvdG86dHJ1bGxpYXVkaW8/e8cbd477-45f0-515f-8e4e-a1674cfa09b4"
+ }
+ },
+ "Id": "1201805",
+ "SizesOrder": [
+ "normal",
+ "thumbnail",
+ "large"
+ ],
+ "Caption": null
+ }
+ ],
+ "Rating": 2,
+ "SecondaryRatingsOrder": [
+ "SoundQuality",
+ "Volume",
+ "BatteryLife",
+ "Portability",
+ "SignalRange",
+ "AppearanceDesign"
+ ],
+ "IsRatingsOnly": false,
+ "TotalFeedbackCount": 0,
+ "TotalNegativeFeedbackCount": 0,
+ "TotalPositiveFeedbackCount": 0,
+ "ModerationStatus": "APPROVED",
+ "SubmissionId": "r217601-en_16268934WHjL9ZCuCQ",
+ "SubmissionTime": "2021-07-21T18:51:36.000+00:00",
+ "TagDimensionsOrder": [
+ "TagsSet"
+ ],
+ "ReviewText": "Vestibulum ac diam sit amet quam vehicula elementum sed sit amet dui. Quisque velit nisi, pretium ut lacinia in, elementum id enim. Praesent sapien massa, convallis a pellentesque nec, egestas non nisi. Curabitur non nulla sit amet nisl tempus convallis quis ac lectus. Mauris blandit aliquet elit, eget tincidunt nibh pulvinar a. Curabitur arcu erat, accumsan id imperdiet et, porttitor at sem. Quisque velit nisi, pretium ut lacinia in, elementum id enim. Vestibulum ac diam sit amet quam vehicula elementum sed sit amet dui. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec sollicitudin molestie malesuada.",
+ "Title": "testing JAM5",
+ "UserNickname": "Nats",
+ "Videos": [
+ {
+ "VideoId": "cDQ34z0oqnQ",
+ "VideoHost": "www.youtube.com",
+ "VideoThumbnailUrl": null,
+ "VideoIframeUrl": "https://www.youtube.com/embed/cDQ34z0oqnQ",
+ "Caption": null,
+ "VideoUrl": "https://www.youtube.com/watch?v=cDQ34z0oqnQ"
+ }
+ ],
+ "SecondaryRatings": {
+ "AppearanceDesign": {
+ "Value": 2,
+ "Id": "AppearanceDesign",
+ "ValueLabel": null,
+ "ValueRange": 5,
+ "Label": null,
+ "DisplayType": "NORMAL",
+ "MaxLabel": null,
+ "MinLabel": null
+ },
+ "Volume": {
+ "Value": 2,
+ "Id": "Volume",
+ "ValueLabel": null,
+ "ValueRange": 5,
+ "Label": null,
+ "DisplayType": "NORMAL",
+ "MaxLabel": null,
+ "MinLabel": null
+ },
+ "SignalRange": {
+ "Value": 5,
+ "Id": "SignalRange",
+ "ValueLabel": null,
+ "ValueRange": 5,
+ "Label": null,
+ "DisplayType": "NORMAL",
+ "MaxLabel": null,
+ "MinLabel": null
+ },
+ "Portability": {
+ "Value": 1,
+ "Id": "Portability",
+ "ValueLabel": null,
+ "ValueRange": 5,
+ "Label": null,
+ "DisplayType": "NORMAL",
+ "MaxLabel": null,
+ "MinLabel": null
+ },
+ "BatteryLife": {
+ "Value": 4,
+ "Id": "BatteryLife",
+ "ValueLabel": null,
+ "ValueRange": 5,
+ "Label": null,
+ "DisplayType": "NORMAL",
+ "MaxLabel": null,
+ "MinLabel": null
+ },
+ "SoundQuality": {
+ "Value": 3,
+ "Id": "SoundQuality",
+ "ValueLabel": null,
+ "ValueRange": 5,
+ "Label": null,
+ "DisplayType": "NORMAL",
+ "MaxLabel": null,
+ "MinLabel": null
+ }
+ },
+ "ContextDataValues": {
+ "AreYouATrulliEmployee": {
+ "Value": "No",
+ "Id": "AreYouATrulliEmployee"
+ },
+ "DidYouReceiveThisProductForFree": {
+ "Value": "Yes",
+ "Id": "DidYouReceiveThisProductForFree"
+ },
+ "RecommendRating": {
+ "Value": "7",
+ "Id": "RecommendRating"
+ }
+ },
+ "AdditionalFields": {
+ "Avatar": {
+ "Value": "5",
+ "Id": "Avatar"
+ }
+ },
+ "AdditionalFieldsOrder": [
+ "Avatar"
+ ],
+ "TagDimensions": {
+ "TagsSet": {
+ "Values": [
+ "Volume"
+ ],
+ "Id": "TagsSet",
+ "Label": null
+ }
+ },
+ "CommentIds": [],
+ "Pros": null,
+ "IsRecommended": null,
+ "Helpfulness": null,
+ "InappropriateFeedbackList": [],
+ "ClientResponses": [],
+ "CampaignId": null,
+ "IsSyndicated": false,
+ "BadgesOrder": [],
+ "RatingRange": 5,
+ "Badges": {},
+ "Cons": null,
+ "ProductRecommendationIds": []
+ },
+ {
+ "Id": "36068931",
+ "CID": "3370ad60-5292-588d-8b8d-4f8aebf86619",
+ "SourceClient": "trulliaudio",
+ "LastModeratedTime": "2021-07-21T18:15:01.000+00:00",
+ "LastModificationTime": "2021-07-21T18:15:01.000+00:00",
+ "ProductId": "JAM5BLK",
+ "ContextDataValuesOrder": [
+ "RecommendRating",
+ "AreYouATrulliEmployee",
+ "DidYouReceiveThisProductForFree"
+ ],
+ "UserLocation": "Hawaii, HI",
+ "AuthorId": "h9uj1m4qi8yihab5miqv3asmt",
+ "ContentLocale": "en_US",
+ "IsFeatured": false,
+ "TotalInappropriateFeedbackCount": 0,
+ "TotalClientResponseCount": 0,
+ "TotalCommentCount": 0,
+ "Photos": [
+ {
+ "Sizes": {
+ "normal": {
+ "Id": "normal",
+ "Url": "https://photos-uat-us.bazaarvoice.com/photo/2/cGhvdG86dHJ1bGxpYXVkaW8/92f0742a-3bc5-5b39-aacc-face6211c21a"
+ },
+ "thumbnail": {
+ "Id": "thumbnail",
+ "Url": "https://photos-uat-us.bazaarvoice.com/photo/2/cGhvdG86dHJ1bGxpYXVkaW8/309ae4b1-3e16-5b51-b95e-3d80fa1d3181"
+ },
+ "large": {
+ "Id": "large",
+ "Url": "https://photos-uat-us.bazaarvoice.com/photo/2/cGhvdG86dHJ1bGxpYXVkaW8/0c471235-a54b-5017-b612-80e3a7427364"
+ }
+ },
+ "Id": "1200226",
+ "SizesOrder": [
+ "normal",
+ "thumbnail",
+ "large"
+ ],
+ "Caption": null
+ }
+ ],
+ "Rating": 3,
+ "SecondaryRatingsOrder": [
+ "SoundQuality",
+ "Volume",
+ "BatteryLife",
+ "Portability",
+ "SignalRange",
+ "AppearanceDesign"
+ ],
+ "IsRatingsOnly": false,
+ "TotalFeedbackCount": 0,
+ "TotalNegativeFeedbackCount": 0,
+ "TotalPositiveFeedbackCount": 0,
+ "ModerationStatus": "APPROVED",
+ "SubmissionId": "r217601-en_16268905YaNxDfVg41",
+ "SubmissionTime": "2021-07-21T18:01:56.000+00:00",
+ "TagDimensionsOrder": [
+ "TagsSet"
+ ],
+ "ReviewText": "Pellentesque in ipsum id orci porta dapibus. Sed porttitor lectus nibh. Pellentesque in ipsum id orci porta dapibus. Cras ultricies ligula sed magna dictum porta. Vivamus suscipit tortor eget felis porttitor volutpat. Sed porttitor lectus nibh. Donec sollicitudin molestie malesuada. Praesent sapien massa, convallis a pellentesque nec, egestas non nisi. Praesent sapien massa, convallis a pellentesque nec, egestas non nisi. Donec rutrum congue leo eget malesuada.",
+ "Title": "QA Engineer",
+ "UserNickname": "nathytest",
+ "Videos": [
+ {
+ "VideoId": "9b8zcDVWM9M",
+ "VideoHost": "www.youtube.com",
+ "VideoThumbnailUrl": null,
+ "VideoIframeUrl": "https://www.youtube.com/embed/9b8zcDVWM9M",
+ "Caption": null,
+ "VideoUrl": "https://www.youtube.com/watch?v=9b8zcDVWM9M"
+ }
+ ],
+ "SecondaryRatings": {
+ "AppearanceDesign": {
+ "Value": 3,
+ "Id": "AppearanceDesign",
+ "ValueLabel": null,
+ "ValueRange": 5,
+ "Label": null,
+ "DisplayType": "NORMAL",
+ "MaxLabel": null,
+ "MinLabel": null
+ },
+ "Volume": {
+ "Value": 3,
+ "Id": "Volume",
+ "ValueLabel": null,
+ "ValueRange": 5,
+ "Label": null,
+ "DisplayType": "NORMAL",
+ "MaxLabel": null,
+ "MinLabel": null
+ },
+ "SignalRange": {
+ "Value": 3,
+ "Id": "SignalRange",
+ "ValueLabel": null,
+ "ValueRange": 5,
+ "Label": null,
+ "DisplayType": "NORMAL",
+ "MaxLabel": null,
+ "MinLabel": null
+ },
+ "Portability": {
+ "Value": 3,
+ "Id": "Portability",
+ "ValueLabel": null,
+ "ValueRange": 5,
+ "Label": null,
+ "DisplayType": "NORMAL",
+ "MaxLabel": null,
+ "MinLabel": null
+ },
+ "BatteryLife": {
+ "Value": 3,
+ "Id": "BatteryLife",
+ "ValueLabel": null,
+ "ValueRange": 5,
+ "Label": null,
+ "DisplayType": "NORMAL",
+ "MaxLabel": null,
+ "MinLabel": null
+ },
+ "SoundQuality": {
+ "Value": 3,
+ "Id": "SoundQuality",
+ "ValueLabel": null,
+ "ValueRange": 5,
+ "Label": null,
+ "DisplayType": "NORMAL",
+ "MaxLabel": null,
+ "MinLabel": null
+ }
+ },
+ "ContextDataValues": {
+ "AreYouATrulliEmployee": {
+ "Value": "Yes",
+ "Id": "AreYouATrulliEmployee"
+ },
+ "DidYouReceiveThisProductForFree": {
+ "Value": "Yes",
+ "Id": "DidYouReceiveThisProductForFree"
+ },
+ "RecommendRating": {
+ "Value": "8",
+ "Id": "RecommendRating"
+ }
+ },
+ "AdditionalFields": {
+ "Avatar": {
+ "Value": "1",
+ "Id": "Avatar"
+ }
+ },
+ "AdditionalFieldsOrder": [
+ "Avatar"
+ ],
+ "TagDimensions": {
+ "TagsSet": {
+ "Values": [
+ "Volume"
+ ],
+ "Id": "TagsSet",
+ "Label": null
+ }
+ },
+ "CommentIds": [],
+ "Pros": null,
+ "IsRecommended": null,
+ "Helpfulness": null,
+ "InappropriateFeedbackList": [],
+ "ClientResponses": [],
+ "CampaignId": null,
+ "IsSyndicated": false,
+ "BadgesOrder": [],
+ "RatingRange": 5,
+ "Badges": {},
+ "Cons": null,
+ "ProductRecommendationIds": []
+ }
+ ],
+ "Includes": {
+ "Products": {
+ "JAM5BLK": {
+ "Description": "Designed for music lovers, creators, performers, and educators alike",
+ "ModelNumbers": [
+ "3553585"
+ ],
+ "ImageUrl": "https://mcstaging.trulliaudio.com/media/catalog/product/f/r/front-1.jpg",
+ "Name": "JAM5",
+ "Id": "JAM5BLK",
+ "CategoryId": "9",
+ "Active": false,
+ "Disabled": false,
+ "ISBNs": [],
+ "ReviewIds": [],
+ "EANs": [],
+ "BrandExternalId": null,
+ "ProductPageUrl": null,
+ "FamilyIds": [],
+ "Brand": {},
+ "ManufacturerPartNumbers": [],
+ "QuestionIds": [],
+ "StoryIds": [],
+ "UPCs": [],
+ "Attributes": {},
+ "AttributesOrder": [],
+ "ReviewStatistics": {
+ "ContextDataDistributionOrder": [
+ "Gender",
+ "AreYouATrulliEmployee",
+ "ReadReviews_1",
+ "TimeOwned",
+ "IncentivizedReview",
+ "DidYouReceiveThisProductForFree"
+ ],
+ "ContextDataDistribution": {
+ "Gender": {
+ "Id": "Gender",
+ "Values": [
+ {
+ "Count": 20,
+ "Value": "Male"
+ },
+ {
+ "Count": 9,
+ "Value": "Female"
+ },
+ {
+ "Count": 3,
+ "Value": "Other"
+ }
+ ]
+ },
+ "AreYouATrulliEmployee": {
+ "Id": "AreYouATrulliEmployee",
+ "Values": [
+ {
+ "Count": 7,
+ "Value": "Yes"
+ },
+ {
+ "Count": 16,
+ "Value": "No"
+ }
+ ]
+ },
+ "ReadReviews_1": {
+ "Id": "ReadReviews_1",
+ "Values": [
+ {
+ "Count": 4,
+ "Value": "Yes"
+ },
+ {
+ "Count": 1,
+ "Value": "No"
+ }
+ ]
+ },
+ "TimeOwned": {
+ "Id": "TimeOwned",
+ "Values": [
+ {
+ "Count": 12,
+ "Value": "1"
+ },
+ {
+ "Count": 12,
+ "Value": "2"
+ },
+ {
+ "Count": 5,
+ "Value": "3"
+ }
+ ]
+ },
+ "IncentivizedReview": {
+ "Id": "IncentivizedReview",
+ "Values": [
+ {
+ "Count": 3,
+ "Value": "True"
+ }
+ ]
+ },
+ "DidYouReceiveThisProductForFree": {
+ "Id": "DidYouReceiveThisProductForFree",
+ "Values": [
+ {
+ "Count": 10,
+ "Value": "Yes"
+ },
+ {
+ "Count": 13,
+ "Value": "No"
+ }
+ ]
+ }
+ },
+ "FirstSubmissionTime": "2020-12-21T10:29:44.000+00:00",
+ "LastSubmissionTime": "2021-10-26T15:56:56.000+00:00",
+ "SecondaryRatingsAveragesOrder": [
+ "SoundQuality",
+ "Volume",
+ "BatteryLife",
+ "Portability",
+ "SignalRange",
+ "AppearanceDesign"
+ ],
+ "SecondaryRatingsAverages": {
+ "BatteryLife": {
+ "Id": "BatteryLife",
+ "AverageRating": 4.21875,
+ "MaxLabel": null,
+ "ValueRange": 5,
+ "MinLabel": null,
+ "DisplayType": "NORMAL"
+ },
+ "SignalRange": {
+ "Id": "SignalRange",
+ "AverageRating": 4.1875,
+ "MaxLabel": null,
+ "ValueRange": 5,
+ "MinLabel": null,
+ "DisplayType": "NORMAL"
+ },
+ "Volume": {
+ "Id": "Volume",
+ "AverageRating": 4.109375,
+ "MaxLabel": null,
+ "ValueRange": 5,
+ "MinLabel": null,
+ "DisplayType": "NORMAL"
+ },
+ "SoundQuality": {
+ "Id": "SoundQuality",
+ "AverageRating": 4.318181818181818,
+ "MaxLabel": null,
+ "ValueRange": 5,
+ "MinLabel": null,
+ "DisplayType": "NORMAL"
+ },
+ "Portability": {
+ "Id": "Portability",
+ "AverageRating": 4.0,
+ "MaxLabel": null,
+ "ValueRange": 5,
+ "MinLabel": null,
+ "DisplayType": "NORMAL"
+ },
+ "AppearanceDesign": {
+ "Id": "AppearanceDesign",
+ "AverageRating": 4.166666666666667,
+ "MaxLabel": null,
+ "ValueRange": 5,
+ "MinLabel": null,
+ "DisplayType": "NORMAL"
+ }
+ },
+ "HelpfulVoteCount": 0,
+ "RecommendedCount": 6,
+ "RatingDistribution": [
+ {
+ "RatingValue": 5,
+ "Count": 64
+ },
+ {
+ "RatingValue": 4,
+ "Count": 5
+ },
+ {
+ "RatingValue": 1,
+ "Count": 4
+ },
+ {
+ "RatingValue": 3,
+ "Count": 4
+ },
+ {
+ "RatingValue": 2,
+ "Count": 2
+ }
+ ],
+ "RatingsOnlyReviewCount": 3,
+ "NotRecommendedCount": 0,
+ "AverageOverallRating": 4.556962025316456,
+ "NotHelpfulVoteCount": 0,
+ "FeaturedReviewCount": 2,
+ "TagDistributionOrder": [
+ "TagsSet",
+ "ProductVariant"
+ ],
+ "TagDistribution": {
+ "ProductVariant": {
+ "Id": "ProductVariant",
+ "Values": [
+ {
+ "Value": "Gray",
+ "Count": 9
+ },
+ {
+ "Value": "Black",
+ "Count": 2
+ },
+ {
+ "Value": "White",
+ "Count": 1
+ }
+ ]
+ },
+ "TagsSet": {
+ "Id": "TagsSet",
+ "Values": [
+ {
+ "Value": "Easy To Use",
+ "Count": 7
+ },
+ {
+ "Value": "Great Sound",
+ "Count": 7
+ },
+ {
+ "Value": "Volume",
+ "Count": 6
+ },
+ {
+ "Value": "Connectivity",
+ "Count": 5
+ },
+ {
+ "Value": "Customer Service",
+ "Count": 4
+ },
+ {
+ "Value": "Good Design",
+ "Count": 4
+ },
+ {
+ "Value": "Sound Quality",
+ "Count": 4
+ },
+ {
+ "Value": "Color",
+ "Count": 3
+ },
+ {
+ "Value": "Ease of Use",
+ "Count": 1
+ }
+ ]
+ }
+ },
+ "TotalReviewCount": 79,
+ "OverallRatingRange": 5
+ },
+ "TotalReviewCount": 79
+ }
+ },
+ "ProductsOrder": [
+ "JAM5BLK"
+ ]
+ },
+ "HasErrors": false,
+ "Errors": []
+}
\ No newline at end of file
diff --git a/bvconversations/src/test/resources/review_value_lable_secondary_ratings_averages.json b/bvconversations/src/test/resources/review_value_lable_secondary_ratings_averages.json
new file mode 100644
index 00000000..35822065
--- /dev/null
+++ b/bvconversations/src/test/resources/review_value_lable_secondary_ratings_averages.json
@@ -0,0 +1,910 @@
+{
+ "Limit": 10,
+ "Offset": 0,
+ "TotalResults": 13,
+ "Locale": "en_US",
+ "Results": [
+ {
+ "Id": "40791461",
+ "CID": "6d369b25-ced2-5de9-a5aa-0b42e9e7b422",
+ "SourceClient": "testcustomermobilesdk",
+ "LastModeratedTime": "2022-04-20T06:15:01.000+00:00",
+ "LastModificationTime": "2022-04-20T06:15:01.000+00:00",
+ "ProductId": "product1",
+ "AuthorId": "ev6uluge8efj1xaf4naspi1ni",
+ "ContentLocale": "en_US",
+ "IsFeatured": false,
+ "TotalInappropriateFeedbackCount": 0,
+ "TotalClientResponseCount": 0,
+ "TotalCommentCount": 0,
+ "Rating": 5,
+ "SecondaryRatingsOrder": [
+ "Quality",
+ "WhatSizeIsTheProduct"
+ ],
+ "IsRatingsOnly": false,
+ "TotalFeedbackCount": 0,
+ "TotalNegativeFeedbackCount": 0,
+ "TotalPositiveFeedbackCount": 0,
+ "ModerationStatus": "APPROVED",
+ "SubmissionId": "r210433_16504347wfNIAxPygT",
+ "SubmissionTime": "2022-04-20T06:06:17.000+00:00",
+ "ReviewText": "More then 50, More then 50, More then 50, More then 50,",
+ "Title": "Review title 6",
+ "UserNickname": "testSDKUse2234534543",
+ "SecondaryRatings": {
+ "Quality": {
+ "Value": 4,
+ "Id": "Quality",
+ "Label": "Quality of Product",
+ "MaxLabel": null,
+ "DisplayType": "NORMAL",
+ "ValueLabel": null,
+ "MinLabel": null,
+ "ValueRange": 5
+ },
+ "WhatSizeIsTheProduct": {
+ "Value": 2,
+ "Id": "WhatSizeIsTheProduct",
+ "Label": "What size is the product?",
+ "MaxLabel": "Large",
+ "DisplayType": "SLIDER",
+ "ValueLabel": "Medium",
+ "MinLabel": "Small",
+ "ValueRange": 3
+ }
+ },
+ "AdditionalFields": {
+ "DateOfUserExperience": {
+ "Value": "2021-03-10",
+ "Id": "DateOfUserExperience",
+ "Label": "Date of Use"
+ }
+ },
+ "AdditionalFieldsOrder": [
+ "DateOfUserExperience"
+ ],
+ "Pros": null,
+ "Badges": {},
+ "RatingRange": 5,
+ "Helpfulness": null,
+ "ContextDataValuesOrder": [],
+ "ClientResponses": [],
+ "CommentIds": [],
+ "IsRecommended": null,
+ "Cons": null,
+ "InappropriateFeedbackList": [],
+ "TagDimensions": {},
+ "IsSyndicated": false,
+ "ProductRecommendationIds": [],
+ "UserLocation": null,
+ "CampaignId": null,
+ "TagDimensionsOrder": [],
+ "BadgesOrder": [],
+ "Photos": [],
+ "ContextDataValues": {},
+ "Videos": []
+ },
+ {
+ "Id": "40779882",
+ "CID": "5c29b719-a2e0-5a26-897e-684c92781096",
+ "SourceClient": "testcustomermobilesdk",
+ "LastModeratedTime": "2022-04-19T13:00:01.000+00:00",
+ "LastModificationTime": "2022-04-19T13:00:01.000+00:00",
+ "ProductId": "product1",
+ "AuthorId": "tkmyz67zw3ca728lb1bsspppm",
+ "ContentLocale": "en_US",
+ "IsFeatured": false,
+ "TotalInappropriateFeedbackCount": 0,
+ "TotalClientResponseCount": 0,
+ "TotalCommentCount": 0,
+ "Rating": 5,
+ "SecondaryRatingsOrder": [
+ "Quality",
+ "WhatSizeIsTheProduct"
+ ],
+ "IsRatingsOnly": false,
+ "TotalFeedbackCount": 0,
+ "TotalNegativeFeedbackCount": 0,
+ "TotalPositiveFeedbackCount": 0,
+ "ModerationStatus": "APPROVED",
+ "SubmissionId": "r210433_16503724rskBklgu3U",
+ "SubmissionTime": "2022-04-19T12:47:02.000+00:00",
+ "ReviewText": "More then 50, More then 50, More then 50, More then 50,",
+ "Title": "Review title 6",
+ "UserNickname": "testSDKUse22345",
+ "SecondaryRatings": {
+ "Quality": {
+ "Value": 4,
+ "Id": "Quality",
+ "Label": "Quality of Product",
+ "MaxLabel": null,
+ "DisplayType": "NORMAL",
+ "ValueLabel": null,
+ "MinLabel": null,
+ "ValueRange": 5
+ },
+ "WhatSizeIsTheProduct": {
+ "Value": 2,
+ "Id": "WhatSizeIsTheProduct",
+ "Label": "What size is the product?",
+ "MaxLabel": "Large",
+ "DisplayType": "SLIDER",
+ "ValueLabel": "Medium",
+ "MinLabel": "Small",
+ "ValueRange": 3
+ }
+ },
+ "AdditionalFields": {
+ "DateOfUserExperience": {
+ "Value": "2021-03-10",
+ "Id": "DateOfUserExperience",
+ "Label": "Date of Use"
+ }
+ },
+ "AdditionalFieldsOrder": [
+ "DateOfUserExperience"
+ ],
+ "Pros": null,
+ "Badges": {},
+ "RatingRange": 5,
+ "Helpfulness": null,
+ "ContextDataValuesOrder": [],
+ "ClientResponses": [],
+ "CommentIds": [],
+ "IsRecommended": null,
+ "Cons": null,
+ "InappropriateFeedbackList": [],
+ "TagDimensions": {},
+ "IsSyndicated": false,
+ "ProductRecommendationIds": [],
+ "UserLocation": null,
+ "CampaignId": null,
+ "TagDimensionsOrder": [],
+ "BadgesOrder": [],
+ "Photos": [],
+ "ContextDataValues": {},
+ "Videos": []
+ },
+ {
+ "Id": "40779798",
+ "CID": "802d5824-297b-5d2b-85f4-97c7154a2639",
+ "SourceClient": "testcustomermobilesdk",
+ "LastModeratedTime": "2022-04-19T10:00:01.000+00:00",
+ "LastModificationTime": "2022-04-19T10:00:01.000+00:00",
+ "ProductId": "product1",
+ "AuthorId": "int717159chkdwold24oh71e5",
+ "ContentLocale": "en_US",
+ "IsFeatured": false,
+ "TotalInappropriateFeedbackCount": 0,
+ "TotalClientResponseCount": 0,
+ "TotalCommentCount": 0,
+ "Rating": 5,
+ "SecondaryRatingsOrder": [
+ "Quality",
+ "WhatSizeIsTheProduct"
+ ],
+ "IsRatingsOnly": false,
+ "TotalFeedbackCount": 0,
+ "TotalNegativeFeedbackCount": 0,
+ "TotalPositiveFeedbackCount": 0,
+ "ModerationStatus": "APPROVED",
+ "SubmissionId": "r210433_16503622uvf7b41tFn",
+ "SubmissionTime": "2022-04-19T09:58:14.000+00:00",
+ "ReviewText": "More then 50, More then 50, More then 50, More then 50,",
+ "Title": "Review title 6",
+ "UserNickname": "testSDKUse2234",
+ "SecondaryRatings": {
+ "Quality": {
+ "Value": 4,
+ "Id": "Quality",
+ "Label": "Quality of Product",
+ "MaxLabel": null,
+ "DisplayType": "NORMAL",
+ "ValueLabel": null,
+ "MinLabel": null,
+ "ValueRange": 5
+ },
+ "WhatSizeIsTheProduct": {
+ "Value": 2,
+ "Id": "WhatSizeIsTheProduct",
+ "Label": "What size is the product?",
+ "MaxLabel": "Large",
+ "DisplayType": "SLIDER",
+ "ValueLabel": "Medium",
+ "MinLabel": "Small",
+ "ValueRange": 3
+ }
+ },
+ "AdditionalFields": {
+ "DateOfUserExperience": {
+ "Value": "2021-03-10",
+ "Id": "DateOfUserExperience",
+ "Label": "Date of Use"
+ }
+ },
+ "AdditionalFieldsOrder": [
+ "DateOfUserExperience"
+ ],
+ "Pros": null,
+ "Badges": {},
+ "RatingRange": 5,
+ "Helpfulness": null,
+ "ContextDataValuesOrder": [],
+ "ClientResponses": [],
+ "CommentIds": [],
+ "IsRecommended": null,
+ "Cons": null,
+ "InappropriateFeedbackList": [],
+ "TagDimensions": {},
+ "IsSyndicated": false,
+ "ProductRecommendationIds": [],
+ "UserLocation": null,
+ "CampaignId": null,
+ "TagDimensionsOrder": [],
+ "BadgesOrder": [],
+ "Photos": [],
+ "ContextDataValues": {},
+ "Videos": []
+ },
+ {
+ "Id": "40779797",
+ "CID": "edf010ce-9c68-5412-be4e-e244995a338b",
+ "SourceClient": "testcustomermobilesdk",
+ "LastModeratedTime": "2022-04-19T10:00:01.000+00:00",
+ "LastModificationTime": "2022-04-19T10:00:01.000+00:00",
+ "ProductId": "product1",
+ "AuthorId": "sm95g67twftr2mof6xovpj1yz",
+ "ContentLocale": "en_US",
+ "IsFeatured": false,
+ "TotalInappropriateFeedbackCount": 0,
+ "TotalClientResponseCount": 0,
+ "TotalCommentCount": 0,
+ "Rating": 5,
+ "SecondaryRatingsOrder": [
+ "Quality",
+ "WhatSizeIsTheProduct"
+ ],
+ "IsRatingsOnly": false,
+ "TotalFeedbackCount": 0,
+ "TotalNegativeFeedbackCount": 0,
+ "TotalPositiveFeedbackCount": 0,
+ "ModerationStatus": "APPROVED",
+ "SubmissionId": "r210433_16503622rFngsnYbNK",
+ "SubmissionTime": "2022-04-19T09:58:11.000+00:00",
+ "ReviewText": "More then 50, More then 50, More then 50, More then 50,",
+ "Title": "Review title 6",
+ "UserNickname": "testSDKUse223",
+ "SecondaryRatings": {
+ "Quality": {
+ "Value": 4,
+ "Id": "Quality",
+ "Label": "Quality of Product",
+ "MaxLabel": null,
+ "DisplayType": "NORMAL",
+ "ValueLabel": null,
+ "MinLabel": null,
+ "ValueRange": 5
+ },
+ "WhatSizeIsTheProduct": {
+ "Value": 2,
+ "Id": "WhatSizeIsTheProduct",
+ "Label": "What size is the product?",
+ "MaxLabel": "Large",
+ "DisplayType": "SLIDER",
+ "ValueLabel": "Medium",
+ "MinLabel": "Small",
+ "ValueRange": 3
+ }
+ },
+ "AdditionalFields": {
+ "DateOfUserExperience": {
+ "Value": "2021-03-10",
+ "Id": "DateOfUserExperience",
+ "Label": "Date of Use"
+ }
+ },
+ "AdditionalFieldsOrder": [
+ "DateOfUserExperience"
+ ],
+ "Pros": null,
+ "Badges": {},
+ "RatingRange": 5,
+ "Helpfulness": null,
+ "ContextDataValuesOrder": [],
+ "ClientResponses": [],
+ "CommentIds": [],
+ "IsRecommended": null,
+ "Cons": null,
+ "InappropriateFeedbackList": [],
+ "TagDimensions": {},
+ "IsSyndicated": false,
+ "ProductRecommendationIds": [],
+ "UserLocation": null,
+ "CampaignId": null,
+ "TagDimensionsOrder": [],
+ "BadgesOrder": [],
+ "Photos": [],
+ "ContextDataValues": {},
+ "Videos": []
+ },
+ {
+ "Id": "40779795",
+ "CID": "28ea65b2-43ac-5cb0-9ca5-e9810972f6e8",
+ "SourceClient": "testcustomermobilesdk",
+ "LastModeratedTime": "2022-04-19T10:00:01.000+00:00",
+ "LastModificationTime": "2022-04-19T10:00:01.000+00:00",
+ "ProductId": "product1",
+ "AuthorId": "lq8zmafnrtsgmx4i73dp0m0ry",
+ "ContentLocale": "en_US",
+ "IsFeatured": false,
+ "TotalInappropriateFeedbackCount": 0,
+ "TotalClientResponseCount": 0,
+ "TotalCommentCount": 0,
+ "Rating": 5,
+ "SecondaryRatingsOrder": [
+ "Quality",
+ "WhatSizeIsTheProduct"
+ ],
+ "IsRatingsOnly": false,
+ "TotalFeedbackCount": 0,
+ "TotalNegativeFeedbackCount": 0,
+ "TotalPositiveFeedbackCount": 0,
+ "ModerationStatus": "APPROVED",
+ "SubmissionId": "r210433_16503622yCXV25pbp7",
+ "SubmissionTime": "2022-04-19T09:58:07.000+00:00",
+ "ReviewText": "More then 50, More then 50, More then 50, More then 50,",
+ "Title": "Review title 6",
+ "UserNickname": "testSDKUse22",
+ "SecondaryRatings": {
+ "Quality": {
+ "Value": 4,
+ "Id": "Quality",
+ "Label": "Quality of Product",
+ "MaxLabel": null,
+ "DisplayType": "NORMAL",
+ "ValueLabel": null,
+ "MinLabel": null,
+ "ValueRange": 5
+ },
+ "WhatSizeIsTheProduct": {
+ "Value": 2,
+ "Id": "WhatSizeIsTheProduct",
+ "Label": "What size is the product?",
+ "MaxLabel": "Large",
+ "DisplayType": "SLIDER",
+ "ValueLabel": "Medium",
+ "MinLabel": "Small",
+ "ValueRange": 3
+ }
+ },
+ "AdditionalFields": {
+ "DateOfUserExperience": {
+ "Value": "2021-03-10",
+ "Id": "DateOfUserExperience",
+ "Label": "Date of Use"
+ }
+ },
+ "AdditionalFieldsOrder": [
+ "DateOfUserExperience"
+ ],
+ "Pros": null,
+ "Badges": {},
+ "RatingRange": 5,
+ "Helpfulness": null,
+ "ContextDataValuesOrder": [],
+ "ClientResponses": [],
+ "CommentIds": [],
+ "IsRecommended": null,
+ "Cons": null,
+ "InappropriateFeedbackList": [],
+ "TagDimensions": {},
+ "IsSyndicated": false,
+ "ProductRecommendationIds": [],
+ "UserLocation": null,
+ "CampaignId": null,
+ "TagDimensionsOrder": [],
+ "BadgesOrder": [],
+ "Photos": [],
+ "ContextDataValues": {},
+ "Videos": []
+ },
+ {
+ "Id": "40779794",
+ "CID": "2822b55f-8d25-54f8-8ad2-e904345aadc2",
+ "SourceClient": "testcustomermobilesdk",
+ "LastModeratedTime": "2022-04-19T10:00:01.000+00:00",
+ "LastModificationTime": "2022-04-19T10:00:01.000+00:00",
+ "ProductId": "product1",
+ "AuthorId": "6cv147jittrwpgfewym9pnuxq",
+ "ContentLocale": "en_US",
+ "IsFeatured": false,
+ "TotalInappropriateFeedbackCount": 0,
+ "TotalClientResponseCount": 0,
+ "TotalCommentCount": 0,
+ "Rating": 5,
+ "SecondaryRatingsOrder": [
+ "Quality",
+ "WhatSizeIsTheProduct"
+ ],
+ "IsRatingsOnly": false,
+ "TotalFeedbackCount": 0,
+ "TotalNegativeFeedbackCount": 0,
+ "TotalPositiveFeedbackCount": 0,
+ "ModerationStatus": "APPROVED",
+ "SubmissionId": "r210433_16503622z2LBaoW8sh",
+ "SubmissionTime": "2022-04-19T09:58:03.000+00:00",
+ "ReviewText": "More then 50, More then 50, More then 50, More then 50,",
+ "Title": "Review title 6",
+ "UserNickname": "testSDKUse2",
+ "SecondaryRatings": {
+ "Quality": {
+ "Value": 4,
+ "Id": "Quality",
+ "Label": "Quality of Product",
+ "MaxLabel": null,
+ "DisplayType": "NORMAL",
+ "ValueLabel": null,
+ "MinLabel": null,
+ "ValueRange": 5
+ },
+ "WhatSizeIsTheProduct": {
+ "Value": 2,
+ "Id": "WhatSizeIsTheProduct",
+ "Label": "What size is the product?",
+ "MaxLabel": "Large",
+ "DisplayType": "SLIDER",
+ "ValueLabel": "Medium",
+ "MinLabel": "Small",
+ "ValueRange": 3
+ }
+ },
+ "AdditionalFields": {
+ "DateOfUserExperience": {
+ "Value": "2021-03-10",
+ "Id": "DateOfUserExperience",
+ "Label": "Date of Use"
+ }
+ },
+ "AdditionalFieldsOrder": [
+ "DateOfUserExperience"
+ ],
+ "Pros": null,
+ "Badges": {},
+ "RatingRange": 5,
+ "Helpfulness": null,
+ "ContextDataValuesOrder": [],
+ "ClientResponses": [],
+ "CommentIds": [],
+ "IsRecommended": null,
+ "Cons": null,
+ "InappropriateFeedbackList": [],
+ "TagDimensions": {},
+ "IsSyndicated": false,
+ "ProductRecommendationIds": [],
+ "UserLocation": null,
+ "CampaignId": null,
+ "TagDimensionsOrder": [],
+ "BadgesOrder": [],
+ "Photos": [],
+ "ContextDataValues": {},
+ "Videos": []
+ },
+ {
+ "Id": "40779793",
+ "CID": "5465ee80-3bbd-525d-a546-1848745290ec",
+ "SourceClient": "testcustomermobilesdk",
+ "LastModeratedTime": "2022-04-19T10:00:01.000+00:00",
+ "LastModificationTime": "2022-04-19T10:00:01.000+00:00",
+ "ProductId": "product1",
+ "AuthorId": "22osqe8zpx5n6srcpkvfp1j1b",
+ "ContentLocale": "en_US",
+ "IsFeatured": false,
+ "TotalInappropriateFeedbackCount": 0,
+ "TotalClientResponseCount": 0,
+ "TotalCommentCount": 0,
+ "Rating": 4,
+ "SecondaryRatingsOrder": [
+ "Quality",
+ "WhatSizeIsTheProduct"
+ ],
+ "IsRatingsOnly": false,
+ "TotalFeedbackCount": 0,
+ "TotalNegativeFeedbackCount": 0,
+ "TotalPositiveFeedbackCount": 0,
+ "ModerationStatus": "APPROVED",
+ "SubmissionId": "r210433_16503622OZr7JMLIbF",
+ "SubmissionTime": "2022-04-19T09:57:45.000+00:00",
+ "ReviewText": "More then 50, More then 50, More then 50, More then 50,",
+ "Title": "Review title 4",
+ "UserNickname": "testSDKUse",
+ "SecondaryRatings": {
+ "Quality": {
+ "Value": 5,
+ "Id": "Quality",
+ "Label": "Quality of Product",
+ "MaxLabel": null,
+ "DisplayType": "NORMAL",
+ "ValueLabel": null,
+ "MinLabel": null,
+ "ValueRange": 5
+ },
+ "WhatSizeIsTheProduct": {
+ "Value": 3,
+ "Id": "WhatSizeIsTheProduct",
+ "Label": "What size is the product?",
+ "MaxLabel": "Large",
+ "DisplayType": "SLIDER",
+ "ValueLabel": "Large",
+ "MinLabel": "Small",
+ "ValueRange": 3
+ }
+ },
+ "AdditionalFields": {
+ "DateOfUserExperience": {
+ "Value": "2021-03-10",
+ "Id": "DateOfUserExperience",
+ "Label": "Date of Use"
+ }
+ },
+ "AdditionalFieldsOrder": [
+ "DateOfUserExperience"
+ ],
+ "Pros": null,
+ "Badges": {},
+ "RatingRange": 5,
+ "Helpfulness": null,
+ "ContextDataValuesOrder": [],
+ "ClientResponses": [],
+ "CommentIds": [],
+ "IsRecommended": null,
+ "Cons": null,
+ "InappropriateFeedbackList": [],
+ "TagDimensions": {},
+ "IsSyndicated": false,
+ "ProductRecommendationIds": [],
+ "UserLocation": null,
+ "CampaignId": null,
+ "TagDimensionsOrder": [],
+ "BadgesOrder": [],
+ "Photos": [],
+ "ContextDataValues": {},
+ "Videos": []
+ },
+ {
+ "Id": "40779792",
+ "CID": "e0333450-2565-5c74-a1c5-d3afb1609ad3",
+ "SourceClient": "testcustomermobilesdk",
+ "LastModeratedTime": "2022-04-19T10:00:01.000+00:00",
+ "LastModificationTime": "2022-04-19T10:00:01.000+00:00",
+ "ProductId": "product1",
+ "AuthorId": "onwfpxl6aavn94o06ona361zb",
+ "ContentLocale": "en_US",
+ "IsFeatured": false,
+ "TotalInappropriateFeedbackCount": 0,
+ "TotalClientResponseCount": 0,
+ "TotalCommentCount": 0,
+ "Rating": 2,
+ "SecondaryRatingsOrder": [
+ "WhatSizeIsTheProduct"
+ ],
+ "IsRatingsOnly": false,
+ "TotalFeedbackCount": 0,
+ "TotalNegativeFeedbackCount": 0,
+ "TotalPositiveFeedbackCount": 0,
+ "ModerationStatus": "APPROVED",
+ "SubmissionId": "r210433_16503622WBMMjreSgu",
+ "SubmissionTime": "2022-04-19T09:56:54.000+00:00",
+ "ReviewText": "More then 50, More then 50, More then 50, More then 50,",
+ "Title": "Review title 2",
+ "UserNickname": "testSDKUser867jhhjkbjk",
+ "SecondaryRatings": {
+ "WhatSizeIsTheProduct": {
+ "Value": 3,
+ "Id": "WhatSizeIsTheProduct",
+ "Label": "What size is the product?",
+ "MaxLabel": "Large",
+ "DisplayType": "SLIDER",
+ "ValueLabel": "Large",
+ "MinLabel": "Small",
+ "ValueRange": 3
+ }
+ },
+ "AdditionalFields": {
+ "DateOfUserExperience": {
+ "Value": "2021-03-10",
+ "Id": "DateOfUserExperience",
+ "Label": "Date of Use"
+ }
+ },
+ "AdditionalFieldsOrder": [
+ "DateOfUserExperience"
+ ],
+ "Pros": null,
+ "Badges": {},
+ "RatingRange": 5,
+ "Helpfulness": null,
+ "ContextDataValuesOrder": [],
+ "ClientResponses": [],
+ "CommentIds": [],
+ "IsRecommended": null,
+ "Cons": null,
+ "InappropriateFeedbackList": [],
+ "TagDimensions": {},
+ "IsSyndicated": false,
+ "ProductRecommendationIds": [],
+ "UserLocation": null,
+ "CampaignId": null,
+ "TagDimensionsOrder": [],
+ "BadgesOrder": [],
+ "Photos": [],
+ "ContextDataValues": {},
+ "Videos": []
+ },
+ {
+ "Id": "40779790",
+ "CID": "eda8ea11-1fd9-5923-b7b5-96cc2ed0d5a8",
+ "SourceClient": "testcustomermobilesdk",
+ "LastModeratedTime": "2022-04-19T10:00:01.000+00:00",
+ "LastModificationTime": "2022-04-19T10:00:01.000+00:00",
+ "ProductId": "product1",
+ "AuthorId": "aoqigncoeyeacaomtarbytba4",
+ "ContentLocale": "en_US",
+ "IsFeatured": false,
+ "TotalInappropriateFeedbackCount": 0,
+ "TotalClientResponseCount": 0,
+ "TotalCommentCount": 0,
+ "Rating": 5,
+ "SecondaryRatingsOrder": [
+ "WhatSizeIsTheProduct"
+ ],
+ "IsRatingsOnly": false,
+ "TotalFeedbackCount": 0,
+ "TotalNegativeFeedbackCount": 0,
+ "TotalPositiveFeedbackCount": 0,
+ "ModerationStatus": "APPROVED",
+ "SubmissionId": "r210433_1650362182Fwy9x6Al",
+ "SubmissionTime": "2022-04-19T09:56:15.000+00:00",
+ "ReviewText": "More then 50, More then 50, More then 50, More then 50,",
+ "Title": "Review title",
+ "UserNickname": "testSDKUser867jh",
+ "SecondaryRatings": {
+ "WhatSizeIsTheProduct": {
+ "Value": 1,
+ "Id": "WhatSizeIsTheProduct",
+ "Label": "What size is the product?",
+ "MaxLabel": "Large",
+ "DisplayType": "SLIDER",
+ "ValueLabel": "Small",
+ "MinLabel": "Small",
+ "ValueRange": 3
+ }
+ },
+ "AdditionalFields": {
+ "DateOfUserExperience": {
+ "Value": "2021-03-10",
+ "Id": "DateOfUserExperience",
+ "Label": "Date of Use"
+ }
+ },
+ "AdditionalFieldsOrder": [
+ "DateOfUserExperience"
+ ],
+ "Pros": null,
+ "Badges": {},
+ "RatingRange": 5,
+ "Helpfulness": null,
+ "ContextDataValuesOrder": [],
+ "ClientResponses": [],
+ "CommentIds": [],
+ "IsRecommended": null,
+ "Cons": null,
+ "InappropriateFeedbackList": [],
+ "TagDimensions": {},
+ "IsSyndicated": false,
+ "ProductRecommendationIds": [],
+ "UserLocation": null,
+ "CampaignId": null,
+ "TagDimensionsOrder": [],
+ "BadgesOrder": [],
+ "Photos": [],
+ "ContextDataValues": {},
+ "Videos": []
+ },
+ {
+ "Id": "37976497",
+ "CID": "17b62d4c-8b9b-55fa-9531-2b045dc65320",
+ "SourceClient": "testcustomermobilesdk",
+ "LastModeratedTime": "2022-01-28T12:00:01.000+00:00",
+ "LastModificationTime": "2022-01-28T12:00:01.000+00:00",
+ "ProductId": "product1",
+ "AuthorId": "zeygrozkxbvg01ulz5yuxzk2y3",
+ "ContentLocale": "en_US",
+ "IsFeatured": false,
+ "TotalInappropriateFeedbackCount": 0,
+ "TotalClientResponseCount": 0,
+ "TotalCommentCount": 0,
+ "Rating": 4,
+ "IsRatingsOnly": false,
+ "TotalFeedbackCount": 0,
+ "TotalNegativeFeedbackCount": 0,
+ "TotalPositiveFeedbackCount": 0,
+ "ModerationStatus": "APPROVED",
+ "SubmissionId": "r210433-en_16433703ut9QJpQdTk",
+ "SubmissionTime": "2022-01-28T11:46:39.000+00:00",
+ "ReviewText": "This is great its so awesome. I highly recomend using this product and think it makes a great gift for any holiday or special occasion. by far the best purchase ive made this year",
+ "Title": "my favorite product ever!",
+ "UserNickname": null,
+ "AdditionalFields": {
+ "DateOfUserExperience": {
+ "Value": "2021-05-05",
+ "Id": "DateOfUserExperience",
+ "Label": "Date of Use"
+ }
+ },
+ "AdditionalFieldsOrder": [
+ "DateOfUserExperience"
+ ],
+ "Pros": null,
+ "Badges": {},
+ "RatingRange": 5,
+ "Helpfulness": null,
+ "ContextDataValuesOrder": [],
+ "ClientResponses": [],
+ "CommentIds": [],
+ "IsRecommended": null,
+ "Cons": null,
+ "InappropriateFeedbackList": [],
+ "SecondaryRatingsOrder": [],
+ "TagDimensions": {},
+ "IsSyndicated": false,
+ "ProductRecommendationIds": [],
+ "UserLocation": null,
+ "CampaignId": null,
+ "TagDimensionsOrder": [],
+ "BadgesOrder": [],
+ "Photos": [],
+ "SecondaryRatings": {},
+ "ContextDataValues": {},
+ "Videos": []
+ }
+ ],
+ "Includes": {
+ "Products": {
+ "product1": {
+ "Description": "Oriental poppies are among the most popular poppies available. The colors of the named varieties range all the way from silvery white, through blush and rose pink to salmon and scarlet-crimson.",
+ "ImageUrl": "http://display.ugc.bazaarvoice.com/common/test/images/oriental_poppy.jpg",
+ "Name": "Papaver orientale",
+ "Id": "product1",
+ "CategoryId": "sampleCategory",
+ "BrandExternalId": "sampleBrand",
+ "Brand": {
+ "Id": "sampleBrand",
+ "Name": "Flowers"
+ },
+ "Active": true,
+ "ProductPageUrl": "http://en.wikipedia.org/wiki/Papaver_orientale",
+ "Disabled": false,
+ "FamilyIds": [],
+ "ModelNumbers": [],
+ "AttributesOrder": [],
+ "UPCs": [],
+ "ISBNs": [],
+ "QuestionIds": [],
+ "StoryIds": [],
+ "Attributes": {},
+ "EANs": [],
+ "ManufacturerPartNumbers": [],
+ "ReviewIds": [],
+ "ReviewStatistics": {
+ "TotalReviewCount": 13,
+ "RecommendedCount": 0,
+ "NotRecommendedCount": 0,
+ "SecondaryRatingsDistributionOrder": [
+ "Quality",
+ null,
+ "WhatSizeIsTheProduct"
+ ],
+ "SecondaryRatingsDistribution": {
+ "Quality": {
+ "Id": "Quality",
+ "Values": [
+ {
+ "Value": 4,
+ "Count": 6
+ },
+ {
+ "Value": 5,
+ "Count": 1
+ }
+ ],
+ "Label": "Quality of Product"
+ },
+ "WhatSizeIsTheProduct": {
+ "Id": "WhatSizeIsTheProduct",
+ "Values": [
+ {
+ "Value": 2,
+ "Count": 6,
+ "ValueLabel": "Medium"
+ },
+ {
+ "Value": 3,
+ "Count": 2,
+ "ValueLabel": "Large"
+ },
+ {
+ "Value": 1,
+ "Count": 1,
+ "ValueLabel": "Small"
+ }
+ ],
+ "Label": "What size is the product?"
+ }
+ },
+ "HelpfulVoteCount": 0,
+ "RatingsOnlyReviewCount": 0,
+ "FirstSubmissionTime": "2021-12-17T06:50:48.000+00:00",
+ "LastSubmissionTime": "2022-04-20T06:06:17.000+00:00",
+ "NotHelpfulVoteCount": 0,
+ "RatingDistribution": [
+ {
+ "RatingValue": 5,
+ "Count": 7
+ },
+ {
+ "RatingValue": 4,
+ "Count": 5
+ },
+ {
+ "RatingValue": 2,
+ "Count": 1
+ }
+ ],
+ "SecondaryRatingsAveragesOrder": [
+ "Quality",
+ "WhatSizeIsTheProduct"
+ ],
+ "SecondaryRatingsAverages": {
+ "WhatSizeIsTheProduct": {
+ "Id": "WhatSizeIsTheProduct",
+ "AverageRating": 2.111111111111111,
+ "DisplayType": "SLIDER",
+ "ValueRange": 3,
+ "MaxLabel": "Large",
+ "MinLabel": "Small",
+ "Label": "What size is the product?",
+ "ValueLabel": [
+ "Small",
+ "Medium",
+ "Large"
+ ]
+ },
+ "Quality": {
+ "Id": "Quality",
+ "AverageRating": 4.142857142857143,
+ "MaxLabel": null,
+ "DisplayType": "NORMAL",
+ "MinLabel": null,
+ "ValueRange": 5,
+ "Label": "Quality of Product"
+ }
+ },
+ "AverageOverallRating": 4.384615384615385,
+ "FeaturedReviewCount": 0,
+ "ContextDataDistribution": {},
+ "ContextDataDistributionOrder": [],
+ "OverallRatingRange": 5,
+ "TagDistribution": {},
+ "TagDistributionOrder": []
+ },
+ "TotalReviewCount": 13
+ }
+ },
+ "ProductsOrder": [
+ "product1"
+ ]
+ },
+ "HasErrors": false,
+ "Errors": []
+}
\ No newline at end of file
diff --git a/bvconversations/src/test/resources/reviews_include_value_label.json b/bvconversations/src/test/resources/reviews_include_value_label.json
new file mode 100644
index 00000000..f6454752
--- /dev/null
+++ b/bvconversations/src/test/resources/reviews_include_value_label.json
@@ -0,0 +1,1252 @@
+{
+ "Limit": 10,
+ "Offset": 0,
+ "TotalResults": 8,
+ "Locale": "en_US",
+ "Results": [
+ {
+ "Id": "19404139",
+ "CID": "5eed1861-104a-5a20-b7a2-963c911605c4",
+ "SourceClient": "conciergeapidocumentation",
+ "Badges": {
+ "incentivizedReview": {
+ "ContentType": "REVIEW",
+ "Id": "incentivizedReview",
+ "BadgeType": "Custom"
+ }
+ },
+ "BadgesOrder": [
+ "incentivizedReview"
+ ],
+ "LastModeratedTime": "2017-04-07T08:45:00.000+00:00",
+ "LastModificationTime": "2021-01-15T23:44:05.000+00:00",
+ "ProductId": "data-gen-moppq9ekthfzbc6qff3bqokie",
+ "ContextDataValuesOrder": [
+ "Age",
+ "Gender",
+ "IncentivizedReview",
+ "LengthOfOwnership"
+ ],
+ "AuthorId": "58e74d829c65a",
+ "ContentLocale": "en_US",
+ "IsFeatured": false,
+ "TotalInappropriateFeedbackCount": 0,
+ "TotalClientResponseCount": 0,
+ "TotalCommentCount": 0,
+ "Rating": 4,
+ "SecondaryRatingsOrder": [
+ "Quality",
+ "Value",
+ "Fit_22"
+ ],
+ "IsRatingsOnly": false,
+ "IsRecommended": true,
+ "Helpfulness": 1.0,
+ "TotalFeedbackCount": 1,
+ "TotalNegativeFeedbackCount": 0,
+ "TotalPositiveFeedbackCount": 1,
+ "ModerationStatus": "APPROVED",
+ "SubmissionId": "3flbs7hk2gvc6str1635rx2t6",
+ "SubmissionTime": "2017-04-07T08:30:10.000+00:00",
+ "ReviewText": "OusdglB XP8GYEIDSHBKN O8YGIDHSKBVN OSFY8EGILFHKBN OS8DYGIFKHB NOSDYGFILHXBN OS8GDIYHFBV O8WEGY SHRD O8I7ERSO8W7EIRGOV8WEIYGROI7. O8WEIYR O87E O8EY O 8EI7YO8WEY O8E O8 Y OQEY HWOE8YWOE8RUWEO8WEO 8 OEWI U. PIYGFPYEGPIYHGYouccfgvocugWefghjklsdfghjklzesrxdfghjnkawzesdjnkmesxdrcfhjh",
+ "Title": "Review title uastgvyatgvsdxiutgvjn",
+ "UserNickname": "test1111111123123",
+ "Videos": [
+ {
+ "VideoId": "OzQ3mdZTm-w",
+ "VideoHost": "www.youtube.com",
+ "VideoThumbnailUrl": null,
+ "VideoIframeUrl": "https://www.youtube.com/embed/OzQ3mdZTm-w",
+ "Caption": "Gsuad",
+ "VideoUrl": "https://www.youtube.com/watch?v=OzQ3mdZTm-w"
+ }
+ ],
+ "ContextDataValues": {
+ "Age": {
+ "Value": "17orUnder",
+ "Id": "Age",
+ "ValueLabel": "17 or under",
+ "DimensionLabel": "Age"
+ },
+ "LengthOfOwnership": {
+ "Value": "1week",
+ "Id": "LengthOfOwnership",
+ "ValueLabel": "1 week",
+ "DimensionLabel": "Length of ownership"
+ },
+ "Gender": {
+ "Value": "Female",
+ "Id": "Gender",
+ "ValueLabel": "Female",
+ "DimensionLabel": "Gender"
+ },
+ "IncentivizedReview": {
+ "Value": "True",
+ "Id": "IncentivizedReview",
+ "ValueLabel": "Yes",
+ "DimensionLabel": "Received an incentive for this review"
+ }
+ },
+ "SecondaryRatings": {
+ "Value": {
+ "Value": 5,
+ "Id": "Value",
+ "ValueLabel": null,
+ "ValueRange": 5,
+ "Label": "Value of Product",
+ "DisplayType": "NORMAL",
+ "MaxLabel": null,
+ "MinLabel": null
+ },
+ "Fit_22": {
+ "Value": 3,
+ "Id": "Fit_22",
+ "ValueLabel": "True to size",
+ "ValueRange": 5,
+ "Label": "Fit",
+ "DisplayType": "SLIDER",
+ "MaxLabel": "Runs Large",
+ "MinLabel": "Runs Small"
+ },
+ "Quality": {
+ "Value": 5,
+ "Id": "Quality",
+ "ValueLabel": null,
+ "ValueRange": 5,
+ "Label": "Quality of Product",
+ "DisplayType": "NORMAL",
+ "MaxLabel": null,
+ "MinLabel": null
+ }
+ },
+ "CommentIds": [],
+ "Pros": null,
+ "TagDimensionsOrder": [],
+ "AdditionalFieldsOrder": [],
+ "InappropriateFeedbackList": [],
+ "ClientResponses": [],
+ "UserLocation": null,
+ "CampaignId": null,
+ "IsSyndicated": false,
+ "TagDimensions": {},
+ "Photos": [],
+ "RatingRange": 5,
+ "AdditionalFields": {},
+ "Cons": null,
+ "ProductRecommendationIds": []
+ },
+ {
+ "Id": "19404130",
+ "CID": "73fbc1a6-f785-5f48-b2b7-6e68fb47f701",
+ "SourceClient": "conciergeapidocumentation",
+ "Badges": {
+ "incentivizedReview": {
+ "ContentType": "REVIEW",
+ "Id": "incentivizedReview",
+ "BadgeType": "Custom"
+ }
+ },
+ "BadgesOrder": [
+ "incentivizedReview"
+ ],
+ "LastModeratedTime": "2017-04-07T08:15:01.000+00:00",
+ "LastModificationTime": "2017-04-07T08:15:01.000+00:00",
+ "ProductId": "data-gen-moppq9ekthfzbc6qff3bqokie",
+ "ContextDataValuesOrder": [
+ "Age",
+ "Gender",
+ "IncentivizedReview",
+ "LengthOfOwnership"
+ ],
+ "AuthorId": "58e7477f9602a",
+ "ContentLocale": "en_US",
+ "IsFeatured": false,
+ "TotalInappropriateFeedbackCount": 0,
+ "TotalClientResponseCount": 0,
+ "TotalCommentCount": 0,
+ "Rating": 4,
+ "SecondaryRatingsOrder": [
+ "Quality",
+ "Value",
+ "Fit_22"
+ ],
+ "IsRatingsOnly": false,
+ "IsRecommended": true,
+ "TotalFeedbackCount": 0,
+ "TotalNegativeFeedbackCount": 0,
+ "TotalPositiveFeedbackCount": 0,
+ "ModerationStatus": "APPROVED",
+ "SubmissionId": "pcn6i076ka8vdjpyzy3qbz3tx",
+ "SubmissionTime": "2017-04-07T08:04:31.000+00:00",
+ "ReviewText": "OusdglB XP8GYEIDSHBKN O8YGIDHSKBVN OSFY8EGILFHKBN OS8DYGIFKHB NOSDYGFILHXBN OS8GDIYHFBV O8WEGY SHRD O8I7ERSO8W7EIRGOV8WEIYGROI7. O8WEIYR O87E O8EY O 8EI7YO8WEY O8E O8 Y OQEY HWOE8YWOE8RUWEO8WEO 8 OEWI U. PIYGFPYEGPIYHGYouccfgvocugWefghjklsdfghjklzesrxdfghjnkawzesdjnkmesxdrcfhjh",
+ "Title": "Review title uastgvyatgvsdxiutgvjn",
+ "UserNickname": "test1111111",
+ "Videos": [
+ {
+ "VideoId": "OzQ3mdZTm-w",
+ "VideoHost": "www.youtube.com",
+ "VideoThumbnailUrl": null,
+ "VideoIframeUrl": "https://www.youtube.com/embed/OzQ3mdZTm-w",
+ "Caption": "Gsuad",
+ "VideoUrl": "https://www.youtube.com/watch?v=OzQ3mdZTm-w"
+ }
+ ],
+ "ContextDataValues": {
+ "Age": {
+ "Value": "17orUnder",
+ "Id": "Age",
+ "ValueLabel": "17 or under",
+ "DimensionLabel": "Age"
+ },
+ "LengthOfOwnership": {
+ "Value": "1week",
+ "Id": "LengthOfOwnership",
+ "ValueLabel": "1 week",
+ "DimensionLabel": "Length of ownership"
+ },
+ "Gender": {
+ "Value": "Female",
+ "Id": "Gender",
+ "ValueLabel": "Female",
+ "DimensionLabel": "Gender"
+ },
+ "IncentivizedReview": {
+ "Value": "True",
+ "Id": "IncentivizedReview",
+ "ValueLabel": "Yes",
+ "DimensionLabel": "Received an incentive for this review"
+ }
+ },
+ "SecondaryRatings": {
+ "Value": {
+ "Value": 5,
+ "Id": "Value",
+ "ValueLabel": null,
+ "ValueRange": 5,
+ "Label": "Value of Product",
+ "DisplayType": "NORMAL",
+ "MaxLabel": null,
+ "MinLabel": null
+ },
+ "Fit_22": {
+ "Value": 3,
+ "Id": "Fit_22",
+ "ValueLabel": "True to size",
+ "ValueRange": 5,
+ "Label": "Fit",
+ "DisplayType": "SLIDER",
+ "MaxLabel": "Runs Large",
+ "MinLabel": "Runs Small"
+ },
+ "Quality": {
+ "Value": 5,
+ "Id": "Quality",
+ "ValueLabel": null,
+ "ValueRange": 5,
+ "Label": "Quality of Product",
+ "DisplayType": "NORMAL",
+ "MaxLabel": null,
+ "MinLabel": null
+ }
+ },
+ "CommentIds": [],
+ "Pros": null,
+ "Helpfulness": null,
+ "TagDimensionsOrder": [],
+ "AdditionalFieldsOrder": [],
+ "InappropriateFeedbackList": [],
+ "ClientResponses": [],
+ "UserLocation": null,
+ "CampaignId": null,
+ "IsSyndicated": false,
+ "TagDimensions": {},
+ "Photos": [],
+ "RatingRange": 5,
+ "AdditionalFields": {},
+ "Cons": null,
+ "ProductRecommendationIds": []
+ },
+ {
+ "Id": "19398816",
+ "CID": "0769b053-972a-5d88-aa70-f492f905bbc9",
+ "SourceClient": "conciergeapidocumentation",
+ "Badges": {
+ "incentivizedReview": {
+ "ContentType": "REVIEW",
+ "Id": "incentivizedReview",
+ "BadgeType": "Custom"
+ }
+ },
+ "BadgesOrder": [
+ "incentivizedReview"
+ ],
+ "LastModeratedTime": "2017-04-05T04:45:00.000+00:00",
+ "LastModificationTime": "2017-04-05T04:45:00.000+00:00",
+ "ProductId": "data-gen-moppq9ekthfzbc6qff3bqokie",
+ "ContextDataValuesOrder": [
+ "Age",
+ "Gender",
+ "IncentivizedReview",
+ "LengthOfOwnership"
+ ],
+ "AuthorId": "58e473d9b2725",
+ "ContentLocale": "en_US",
+ "IsFeatured": false,
+ "TotalInappropriateFeedbackCount": 0,
+ "TotalClientResponseCount": 0,
+ "TotalCommentCount": 0,
+ "Rating": 4,
+ "SecondaryRatingsOrder": [
+ "Quality",
+ "Value",
+ "Fit_22"
+ ],
+ "IsRatingsOnly": false,
+ "IsRecommended": true,
+ "TotalFeedbackCount": 0,
+ "TotalNegativeFeedbackCount": 0,
+ "TotalPositiveFeedbackCount": 0,
+ "ModerationStatus": "APPROVED",
+ "SubmissionId": "tfs591fosv9ygarm31z6djiax",
+ "SubmissionTime": "2017-04-05T04:36:54.000+00:00",
+ "ReviewText": "OusdglB XP8GYEIDSHBKN O8YGIDHSKBVN OSFY8EGILFHKBN OS8DYGIFKHB NOSDYGFILHXBN OS8GDIYHFBV O8WEGY SHRD O8I7ERSO8W7EIRGOV8WEIYGROI7. O8WEIYR O87E O8EY O 8EI7YO8WEY O8E O8 Y OQEY HWOE8YWOE8RUWEO8WEO 8 OEWI U. PIYGFPYEGPIYHGYouccfgvocugWefghjklsdfghjklzesrxdfghjnkawzesdjnkmesxdrcfhjh",
+ "Title": "Review title uastgvyatgvsdxiutgvjn",
+ "UserNickname": "Quan10",
+ "Videos": [
+ {
+ "VideoId": "OzQ3mdZTm-w",
+ "VideoHost": "www.youtube.com",
+ "VideoThumbnailUrl": null,
+ "VideoIframeUrl": "https://www.youtube.com/embed/OzQ3mdZTm-w",
+ "Caption": "Gsuad",
+ "VideoUrl": "https://www.youtube.com/watch?v=OzQ3mdZTm-w"
+ }
+ ],
+ "ContextDataValues": {
+ "Age": {
+ "Value": "17orUnder",
+ "Id": "Age",
+ "ValueLabel": "17 or under",
+ "DimensionLabel": "Age"
+ },
+ "LengthOfOwnership": {
+ "Value": "1week",
+ "Id": "LengthOfOwnership",
+ "ValueLabel": "1 week",
+ "DimensionLabel": "Length of ownership"
+ },
+ "Gender": {
+ "Value": "Female",
+ "Id": "Gender",
+ "ValueLabel": "Female",
+ "DimensionLabel": "Gender"
+ },
+ "IncentivizedReview": {
+ "Value": "True",
+ "Id": "IncentivizedReview",
+ "ValueLabel": "Yes",
+ "DimensionLabel": "Received an incentive for this review"
+ }
+ },
+ "SecondaryRatings": {
+ "Value": {
+ "Value": 5,
+ "Id": "Value",
+ "ValueLabel": null,
+ "ValueRange": 5,
+ "Label": "Value of Product",
+ "DisplayType": "NORMAL",
+ "MaxLabel": null,
+ "MinLabel": null
+ },
+ "Fit_22": {
+ "Value": 3,
+ "Id": "Fit_22",
+ "ValueLabel": "True to size",
+ "ValueRange": 5,
+ "Label": "Fit",
+ "DisplayType": "SLIDER",
+ "MaxLabel": "Runs Large",
+ "MinLabel": "Runs Small"
+ },
+ "Quality": {
+ "Value": 5,
+ "Id": "Quality",
+ "ValueLabel": null,
+ "ValueRange": 5,
+ "Label": "Quality of Product",
+ "DisplayType": "NORMAL",
+ "MaxLabel": null,
+ "MinLabel": null
+ }
+ },
+ "CommentIds": [],
+ "Pros": null,
+ "Helpfulness": null,
+ "TagDimensionsOrder": [],
+ "AdditionalFieldsOrder": [],
+ "InappropriateFeedbackList": [],
+ "ClientResponses": [],
+ "UserLocation": null,
+ "CampaignId": null,
+ "IsSyndicated": false,
+ "TagDimensions": {},
+ "Photos": [],
+ "RatingRange": 5,
+ "AdditionalFields": {},
+ "Cons": null,
+ "ProductRecommendationIds": []
+ },
+ {
+ "Id": "19398805",
+ "CID": "1c729a00-6ab0-5f01-83a5-2f5014bb24f4",
+ "SourceClient": "conciergeapidocumentation",
+ "Badges": {
+ "incentivizedReview": {
+ "ContentType": "REVIEW",
+ "Id": "incentivizedReview",
+ "BadgeType": "Custom"
+ }
+ },
+ "BadgesOrder": [
+ "incentivizedReview"
+ ],
+ "LastModeratedTime": "2017-04-05T04:30:00.000+00:00",
+ "LastModificationTime": "2017-04-05T04:30:00.000+00:00",
+ "ProductId": "data-gen-moppq9ekthfzbc6qff3bqokie",
+ "ContextDataValuesOrder": [
+ "Age",
+ "Gender",
+ "IncentivizedReview",
+ "LengthOfOwnership"
+ ],
+ "AuthorId": "58e46f913adae",
+ "ContentLocale": "en_US",
+ "IsFeatured": false,
+ "TotalInappropriateFeedbackCount": 0,
+ "TotalClientResponseCount": 0,
+ "TotalCommentCount": 0,
+ "Rating": 4,
+ "SecondaryRatingsOrder": [
+ "Quality",
+ "Value",
+ "Fit_22"
+ ],
+ "IsRatingsOnly": false,
+ "IsRecommended": true,
+ "TotalFeedbackCount": 0,
+ "TotalNegativeFeedbackCount": 0,
+ "TotalPositiveFeedbackCount": 0,
+ "ModerationStatus": "APPROVED",
+ "SubmissionId": "q9kxsutih0x78gdy0h2rx8bm8",
+ "SubmissionTime": "2017-04-05T04:18:38.000+00:00",
+ "ReviewText": "OusdglB XP8GYEIDSHBKN O8YGIDHSKBVN OSFY8EGILFHKBN OS8DYGIFKHB NOSDYGFILHXBN OS8GDIYHFBV O8WEGY SHRD O8I7ERSO8W7EIRGOV8WEIYGROI7. O8WEIYR O87E O8EY O 8EI7YO8WEY O8E O8 Y OQEY HWOE8YWOE8RUWEO8WEO 8 OEWI U. PIYGFPYEGPIYHGYouccfgvocugWefghjklsdfghjklzesrxdfghjnkawzesdjnkmesxdrcfhjh",
+ "Title": "Review title uastgvyatgvsdxiutgvjn",
+ "UserNickname": "Quan9",
+ "Videos": [
+ {
+ "VideoId": "OzQ3mdZTm-w",
+ "VideoHost": "www.youtube.com",
+ "VideoThumbnailUrl": null,
+ "VideoIframeUrl": "https://www.youtube.com/embed/OzQ3mdZTm-w",
+ "Caption": "Gsuad",
+ "VideoUrl": "https://www.youtube.com/watch?v=OzQ3mdZTm-w"
+ }
+ ],
+ "ContextDataValues": {
+ "Age": {
+ "Value": "17orUnder",
+ "Id": "Age",
+ "ValueLabel": "17 or under",
+ "DimensionLabel": "Age"
+ },
+ "LengthOfOwnership": {
+ "Value": "1week",
+ "Id": "LengthOfOwnership",
+ "ValueLabel": "1 week",
+ "DimensionLabel": "Length of ownership"
+ },
+ "Gender": {
+ "Value": "Female",
+ "Id": "Gender",
+ "ValueLabel": "Female",
+ "DimensionLabel": "Gender"
+ },
+ "IncentivizedReview": {
+ "Value": "True",
+ "Id": "IncentivizedReview",
+ "ValueLabel": "Yes",
+ "DimensionLabel": "Received an incentive for this review"
+ }
+ },
+ "SecondaryRatings": {
+ "Value": {
+ "Value": 5,
+ "Id": "Value",
+ "ValueLabel": null,
+ "ValueRange": 5,
+ "Label": "Value of Product",
+ "DisplayType": "NORMAL",
+ "MaxLabel": null,
+ "MinLabel": null
+ },
+ "Fit_22": {
+ "Value": 3,
+ "Id": "Fit_22",
+ "ValueLabel": "True to size",
+ "ValueRange": 5,
+ "Label": "Fit",
+ "DisplayType": "SLIDER",
+ "MaxLabel": "Runs Large",
+ "MinLabel": "Runs Small"
+ },
+ "Quality": {
+ "Value": 5,
+ "Id": "Quality",
+ "ValueLabel": null,
+ "ValueRange": 5,
+ "Label": "Quality of Product",
+ "DisplayType": "NORMAL",
+ "MaxLabel": null,
+ "MinLabel": null
+ }
+ },
+ "CommentIds": [],
+ "Pros": null,
+ "Helpfulness": null,
+ "TagDimensionsOrder": [],
+ "AdditionalFieldsOrder": [],
+ "InappropriateFeedbackList": [],
+ "ClientResponses": [],
+ "UserLocation": null,
+ "CampaignId": null,
+ "IsSyndicated": false,
+ "TagDimensions": {},
+ "Photos": [],
+ "RatingRange": 5,
+ "AdditionalFields": {},
+ "Cons": null,
+ "ProductRecommendationIds": []
+ },
+ {
+ "Id": "19385807",
+ "CID": "563426e6-038b-5ae8-8ca6-034dab786c00",
+ "SourceClient": "conciergeapidocumentation",
+ "LastModeratedTime": "2017-03-31T08:15:02.000+00:00",
+ "LastModificationTime": "2017-03-31T08:15:02.000+00:00",
+ "ProductId": "data-gen-moppq9ekthfzbc6qff3bqokie",
+ "ContextDataValuesOrder": [
+ "Age",
+ "Gender",
+ "LengthOfOwnership"
+ ],
+ "AuthorId": "58de0f787b53c",
+ "ContentLocale": "en_US",
+ "IsFeatured": false,
+ "TotalInappropriateFeedbackCount": 0,
+ "TotalClientResponseCount": 0,
+ "TotalCommentCount": 0,
+ "Rating": 4,
+ "SecondaryRatingsOrder": [
+ "Quality",
+ "Value",
+ "Fit_22"
+ ],
+ "IsRatingsOnly": false,
+ "IsRecommended": false,
+ "TotalFeedbackCount": 0,
+ "TotalNegativeFeedbackCount": 0,
+ "TotalPositiveFeedbackCount": 0,
+ "ModerationStatus": "APPROVED",
+ "SubmissionId": "mgz1229f600rx6ajrb9utlent",
+ "SubmissionTime": "2017-03-31T08:14:55.000+00:00",
+ "ReviewText": "Dung cung duoc, noi chung la ok blah blah blah blah blah",
+ "Title": "This is review title",
+ "UserNickname": "quan07",
+ "Videos": [
+ {
+ "VideoId": "KvbqjwpYywI",
+ "VideoHost": "www.youtube.com",
+ "VideoThumbnailUrl": null,
+ "VideoIframeUrl": "https://www.youtube.com/embed/KvbqjwpYywI",
+ "Caption": "This is video caption 1",
+ "VideoUrl": "https://www.youtube.com/watch?v=KvbqjwpYywI"
+ }
+ ],
+ "ContextDataValues": {
+ "Age": {
+ "Value": "17orUnder",
+ "Id": "Age",
+ "ValueLabel": "17 or under",
+ "DimensionLabel": "Age"
+ },
+ "LengthOfOwnership": {
+ "Value": "1week",
+ "Id": "LengthOfOwnership",
+ "ValueLabel": "1 week",
+ "DimensionLabel": "Length of ownership"
+ },
+ "Gender": {
+ "Value": "Female",
+ "Id": "Gender",
+ "ValueLabel": "Female",
+ "DimensionLabel": "Gender"
+ }
+ },
+ "SecondaryRatings": {
+ "Value": {
+ "Value": 4,
+ "Id": "Value",
+ "ValueLabel": null,
+ "ValueRange": 5,
+ "Label": "Value of Product",
+ "DisplayType": "NORMAL",
+ "MaxLabel": null,
+ "MinLabel": null
+ },
+ "Fit_22": {
+ "Value": 5,
+ "Id": "Fit_22",
+ "ValueLabel": "Too big",
+ "ValueRange": 5,
+ "Label": "Fit",
+ "DisplayType": "SLIDER",
+ "MaxLabel": "Runs Large",
+ "MinLabel": "Runs Small"
+ },
+ "Quality": {
+ "Value": 4,
+ "Id": "Quality",
+ "ValueLabel": null,
+ "ValueRange": 5,
+ "Label": "Quality of Product",
+ "DisplayType": "NORMAL",
+ "MaxLabel": null,
+ "MinLabel": null
+ }
+ },
+ "CommentIds": [],
+ "Pros": null,
+ "Helpfulness": null,
+ "TagDimensionsOrder": [],
+ "AdditionalFieldsOrder": [],
+ "InappropriateFeedbackList": [],
+ "ClientResponses": [],
+ "UserLocation": null,
+ "CampaignId": null,
+ "IsSyndicated": false,
+ "TagDimensions": {},
+ "Photos": [],
+ "BadgesOrder": [],
+ "RatingRange": 5,
+ "Badges": {},
+ "AdditionalFields": {},
+ "Cons": null,
+ "ProductRecommendationIds": []
+ },
+ {
+ "Id": "19385747",
+ "CID": "c368b097-3ba6-50ec-b758-280f372aa74c",
+ "SourceClient": "conciergeapidocumentation",
+ "LastModeratedTime": "2017-03-31T06:45:00.000+00:00",
+ "LastModificationTime": "2017-03-31T06:45:00.000+00:00",
+ "ProductId": "data-gen-moppq9ekthfzbc6qff3bqokie",
+ "ContextDataValuesOrder": [
+ "Age",
+ "Gender",
+ "LengthOfOwnership"
+ ],
+ "AuthorId": "58ddf885a99cf",
+ "ContentLocale": "en_US",
+ "IsFeatured": false,
+ "TotalInappropriateFeedbackCount": 0,
+ "TotalClientResponseCount": 0,
+ "TotalCommentCount": 0,
+ "Rating": 4,
+ "SecondaryRatingsOrder": [
+ "Quality",
+ "Value",
+ "Fit_22"
+ ],
+ "IsRatingsOnly": false,
+ "IsRecommended": false,
+ "TotalFeedbackCount": 0,
+ "TotalNegativeFeedbackCount": 0,
+ "TotalPositiveFeedbackCount": 0,
+ "ModerationStatus": "APPROVED",
+ "SubmissionId": "m381dr3t07r70b9vwjfd9i7kq",
+ "SubmissionTime": "2017-03-31T06:37:00.000+00:00",
+ "ReviewText": "Dung cung duoc, noi chung la ok blah blah blah blah blah",
+ "Title": "This is review title",
+ "UserNickname": "quan05",
+ "ContextDataValues": {
+ "Age": {
+ "Value": "17orUnder",
+ "Id": "Age",
+ "ValueLabel": "17 or under",
+ "DimensionLabel": "Age"
+ },
+ "LengthOfOwnership": {
+ "Value": "1week",
+ "Id": "LengthOfOwnership",
+ "ValueLabel": "1 week",
+ "DimensionLabel": "Length of ownership"
+ },
+ "Gender": {
+ "Value": "Female",
+ "Id": "Gender",
+ "ValueLabel": "Female",
+ "DimensionLabel": "Gender"
+ }
+ },
+ "SecondaryRatings": {
+ "Value": {
+ "Value": 4,
+ "Id": "Value",
+ "ValueLabel": null,
+ "ValueRange": 5,
+ "Label": "Value of Product",
+ "DisplayType": "NORMAL",
+ "MaxLabel": null,
+ "MinLabel": null
+ },
+ "Fit_22": {
+ "Value": 5,
+ "Id": "Fit_22",
+ "ValueLabel": "Too big",
+ "ValueRange": 5,
+ "Label": "Fit",
+ "DisplayType": "SLIDER",
+ "MaxLabel": "Runs Large",
+ "MinLabel": "Runs Small"
+ },
+ "Quality": {
+ "Value": 4,
+ "Id": "Quality",
+ "ValueLabel": null,
+ "ValueRange": 5,
+ "Label": "Quality of Product",
+ "DisplayType": "NORMAL",
+ "MaxLabel": null,
+ "MinLabel": null
+ }
+ },
+ "CommentIds": [],
+ "Pros": null,
+ "Helpfulness": null,
+ "TagDimensionsOrder": [],
+ "AdditionalFieldsOrder": [],
+ "InappropriateFeedbackList": [],
+ "Videos": [],
+ "ClientResponses": [],
+ "UserLocation": null,
+ "CampaignId": null,
+ "IsSyndicated": false,
+ "TagDimensions": {},
+ "Photos": [],
+ "BadgesOrder": [],
+ "RatingRange": 5,
+ "Badges": {},
+ "AdditionalFields": {},
+ "Cons": null,
+ "ProductRecommendationIds": []
+ },
+ {
+ "Id": "19385745",
+ "CID": "fb960048-9795-5447-8a75-4e7b99f47c10",
+ "SourceClient": "conciergeapidocumentation",
+ "LastModeratedTime": "2017-03-31T06:45:00.000+00:00",
+ "LastModificationTime": "2017-03-31T06:45:00.000+00:00",
+ "ProductId": "data-gen-moppq9ekthfzbc6qff3bqokie",
+ "ContextDataValuesOrder": [
+ "Age",
+ "Gender",
+ "LengthOfOwnership"
+ ],
+ "AuthorId": "58ddf834e8b1d",
+ "ContentLocale": "en_US",
+ "IsFeatured": false,
+ "TotalInappropriateFeedbackCount": 0,
+ "TotalClientResponseCount": 0,
+ "TotalCommentCount": 0,
+ "Rating": 4,
+ "SecondaryRatingsOrder": [
+ "Quality",
+ "Value",
+ "Fit_22"
+ ],
+ "IsRatingsOnly": false,
+ "IsRecommended": false,
+ "TotalFeedbackCount": 0,
+ "TotalNegativeFeedbackCount": 0,
+ "TotalPositiveFeedbackCount": 0,
+ "ModerationStatus": "APPROVED",
+ "SubmissionId": "9ntdq5s0klbr5kg1fb6mgiuqw",
+ "SubmissionTime": "2017-03-31T06:35:40.000+00:00",
+ "ReviewText": "Dung cung duoc, noi chung la ok blah blah blah blah blah",
+ "Title": "This is review title",
+ "UserNickname": "quan04",
+ "ContextDataValues": {
+ "Age": {
+ "Value": "17orUnder",
+ "Id": "Age",
+ "ValueLabel": "17 or under",
+ "DimensionLabel": "Age"
+ },
+ "LengthOfOwnership": {
+ "Value": "1week",
+ "Id": "LengthOfOwnership",
+ "ValueLabel": "1 week",
+ "DimensionLabel": "Length of ownership"
+ },
+ "Gender": {
+ "Value": "Female",
+ "Id": "Gender",
+ "ValueLabel": "Female",
+ "DimensionLabel": "Gender"
+ }
+ },
+ "SecondaryRatings": {
+ "Value": {
+ "Value": 4,
+ "Id": "Value",
+ "ValueLabel": null,
+ "ValueRange": 5,
+ "Label": "Value of Product",
+ "DisplayType": "NORMAL",
+ "MaxLabel": null,
+ "MinLabel": null
+ },
+ "Fit_22": {
+ "Value": 5,
+ "Id": "Fit_22",
+ "ValueLabel": "Too big",
+ "ValueRange": 5,
+ "Label": "Fit",
+ "DisplayType": "SLIDER",
+ "MaxLabel": "Runs Large",
+ "MinLabel": "Runs Small"
+ },
+ "Quality": {
+ "Value": 4,
+ "Id": "Quality",
+ "ValueLabel": null,
+ "ValueRange": 5,
+ "Label": "Quality of Product",
+ "DisplayType": "NORMAL",
+ "MaxLabel": null,
+ "MinLabel": null
+ }
+ },
+ "CommentIds": [],
+ "Pros": null,
+ "Helpfulness": null,
+ "TagDimensionsOrder": [],
+ "AdditionalFieldsOrder": [],
+ "InappropriateFeedbackList": [],
+ "Videos": [],
+ "ClientResponses": [],
+ "UserLocation": null,
+ "CampaignId": null,
+ "IsSyndicated": false,
+ "TagDimensions": {},
+ "Photos": [],
+ "BadgesOrder": [],
+ "RatingRange": 5,
+ "Badges": {},
+ "AdditionalFields": {},
+ "Cons": null,
+ "ProductRecommendationIds": []
+ },
+ {
+ "Id": "16970613",
+ "CID": "11eae441-87f7-5820-a873-9645cb5ae59c",
+ "SourceClient": "conciergeapidocumentation",
+ "Badges": {
+ "Expert": {
+ "ContentType": "REVIEW",
+ "Id": "Expert",
+ "BadgeType": "Rank"
+ },
+ "Staff": {
+ "ContentType": "REVIEW",
+ "Id": "Staff",
+ "BadgeType": "Affiliation"
+ }
+ },
+ "BadgesOrder": [
+ "Expert",
+ "Staff"
+ ],
+ "LastModeratedTime": "2017-01-05T19:36:10.000+00:00",
+ "LastModificationTime": "2021-01-14T22:50:18.000+00:00",
+ "ProductId": "data-gen-moppq9ekthfzbc6qff3bqokie",
+ "ContextDataValuesOrder": [
+ "Age",
+ "Gender"
+ ],
+ "UserLocation": "Rochester, MN",
+ "AuthorId": "data-gen-user-q329el4nt3x5p26bc88upxdj1",
+ "ContentLocale": "en_US",
+ "IsFeatured": false,
+ "TotalInappropriateFeedbackCount": 0,
+ "TotalClientResponseCount": 0,
+ "TotalCommentCount": 0,
+ "Photos": [
+ {
+ "Sizes": {
+ "normal": {
+ "Id": "normal",
+ "Url": "https://photos-uat-us.bazaarvoice.com/photo/2/cGhvdG86Y29uY2llcmdlYXBpZG9jdW1lbnRhdGlvbg/4b73d717-e338-5959-bcd1-b0478bd65b45"
+ },
+ "thumbnail": {
+ "Id": "thumbnail",
+ "Url": "https://photos-uat-us.bazaarvoice.com/photo/2/cGhvdG86Y29uY2llcmdlYXBpZG9jdW1lbnRhdGlvbg/be9256eb-24d7-5b03-b0ec-5c0b9232b3b5"
+ },
+ "large": {
+ "Id": "large",
+ "Url": "https://photos-uat-us.bazaarvoice.com/photo/2/cGhvdG86Y29uY2llcmdlYXBpZG9jdW1lbnRhdGlvbg/ce7fad87-0ff9-571f-9ed6-bd45d08aed77"
+ }
+ },
+ "Id": "658456",
+ "SizesOrder": [
+ "normal",
+ "thumbnail",
+ "large"
+ ],
+ "Caption": null
+ },
+ {
+ "Sizes": {
+ "normal": {
+ "Id": "normal",
+ "Url": "https://photos-uat-us.bazaarvoice.com/photo/2/cGhvdG86Y29uY2llcmdlYXBpZG9jdW1lbnRhdGlvbg/c8f6e924-4565-5c77-b9e9-189651b81c6c"
+ },
+ "thumbnail": {
+ "Id": "thumbnail",
+ "Url": "https://photos-uat-us.bazaarvoice.com/photo/2/cGhvdG86Y29uY2llcmdlYXBpZG9jdW1lbnRhdGlvbg/c0d9105a-8c3b-5e4e-8630-3939f411bd11"
+ },
+ "large": {
+ "Id": "large",
+ "Url": "https://photos-uat-us.bazaarvoice.com/photo/2/cGhvdG86Y29uY2llcmdlYXBpZG9jdW1lbnRhdGlvbg/56fec1d8-4135-5aa2-bcd8-d6e3fc62792d"
+ }
+ },
+ "Id": "658457",
+ "SizesOrder": [
+ "normal",
+ "thumbnail",
+ "large"
+ ],
+ "Caption": null
+ },
+ {
+ "Sizes": {
+ "normal": {
+ "Id": "normal",
+ "Url": "https://photos-uat-us.bazaarvoice.com/photo/2/cGhvdG86Y29uY2llcmdlYXBpZG9jdW1lbnRhdGlvbg/569b5372-bd70-50db-af53-7f0e59f088f7"
+ },
+ "thumbnail": {
+ "Id": "thumbnail",
+ "Url": "https://photos-uat-us.bazaarvoice.com/photo/2/cGhvdG86Y29uY2llcmdlYXBpZG9jdW1lbnRhdGlvbg/21ad3fe6-81f3-5fbd-a6b9-c66b8746c620"
+ },
+ "large": {
+ "Id": "large",
+ "Url": "https://photos-uat-us.bazaarvoice.com/photo/2/cGhvdG86Y29uY2llcmdlYXBpZG9jdW1lbnRhdGlvbg/dc8e376d-b0c1-5660-b494-1b9c3f8e8199"
+ }
+ },
+ "Id": "658458",
+ "SizesOrder": [
+ "normal",
+ "thumbnail",
+ "large"
+ ],
+ "Caption": null
+ },
+ {
+ "Sizes": {
+ "normal": {
+ "Id": "normal",
+ "Url": "https://photos-uat-us.bazaarvoice.com/photo/2/cGhvdG86Y29uY2llcmdlYXBpZG9jdW1lbnRhdGlvbg/d0c9dcdd-f00f-5f5c-a037-5a544d761a2e"
+ },
+ "thumbnail": {
+ "Id": "thumbnail",
+ "Url": "https://photos-uat-us.bazaarvoice.com/photo/2/cGhvdG86Y29uY2llcmdlYXBpZG9jdW1lbnRhdGlvbg/05660653-9103-52bd-9e50-58461b1b3da8"
+ },
+ "large": {
+ "Id": "large",
+ "Url": "https://photos-uat-us.bazaarvoice.com/photo/2/cGhvdG86Y29uY2llcmdlYXBpZG9jdW1lbnRhdGlvbg/3d20397a-fe5d-59be-9821-11e0743a904d"
+ }
+ },
+ "Id": "658459",
+ "SizesOrder": [
+ "normal",
+ "thumbnail",
+ "large"
+ ],
+ "Caption": null
+ }
+ ],
+ "Rating": 5,
+ "IsRatingsOnly": false,
+ "IsRecommended": true,
+ "Helpfulness": 1.0,
+ "TotalFeedbackCount": 2,
+ "TotalNegativeFeedbackCount": 0,
+ "TotalPositiveFeedbackCount": 2,
+ "ModerationStatus": "APPROVED",
+ "SubmissionTime": "2016-10-20T23:01:00.000+00:00",
+ "ReviewText": "Nullam vel dui neque, et volutpatsem.Curabitur sit amet nibhnunc.Lorem ipsum dolor sit amet, consectetur adipiscingelit.\n\nAliquam vitae risus a felis lobortismolestie.Aenean nec scelerisquenunc.Praesent non malesuadadolor.\n\nCurabitur feugiat libero at velit aliquetlacinia.Sed rutrum quam sit amet purus luctus at aliquet antedapibus.In leo libero, aliquam et pretium vitae, hendrerit atdui.Fusce condimentum posuerevenenatis.\n\nSed vel nisl a mi pellentesque porta ut arisus.",
+ "Title": "Mauris quis portaeros.Aenean sit amet lacusmagna.",
+ "UserNickname": "adrian597",
+ "ContextDataValues": {
+ "Age": {
+ "Value": "17orUnder",
+ "Id": "Age",
+ "ValueLabel": "17 or under",
+ "DimensionLabel": "Age"
+ },
+ "Gender": {
+ "Value": "Male",
+ "Id": "Gender",
+ "ValueLabel": "Male",
+ "DimensionLabel": "Gender"
+ }
+ },
+ "CommentIds": [],
+ "Pros": null,
+ "TagDimensionsOrder": [],
+ "AdditionalFieldsOrder": [],
+ "InappropriateFeedbackList": [],
+ "SecondaryRatingsOrder": [],
+ "Videos": [],
+ "ClientResponses": [],
+ "CampaignId": null,
+ "SubmissionId": null,
+ "IsSyndicated": false,
+ "SecondaryRatings": {},
+ "TagDimensions": {},
+ "RatingRange": 5,
+ "AdditionalFields": {},
+ "Cons": null,
+ "ProductRecommendationIds": []
+ }
+ ],
+ "Includes": {
+ "Products": {
+ "data-gen-moppq9ekthfzbc6qff3bqokie": {
+ "Description": "Increase your potential to shine with this beautiful Diamond necklace. A 16\" chain holds a White Gold teardrop studded with beautiful and shiny Diamonds. The smooth, shiny\n bail adds texture and contrast to this piece. Wear alone or complete this look with the matching ring and earrings.",
+ "ImageUrl": "http://myshco.com/productImages/teardrop.jpg",
+ "Name": "14K White Gold Diamond Teardrop Necklace",
+ "Id": "data-gen-moppq9ekthfzbc6qff3bqokie",
+ "CategoryId": "data-gen-ejcf7ia6yt7iw82ewnh3dhmyc",
+ "Active": false,
+ "Disabled": false,
+ "ModelNumbers": [],
+ "ISBNs": [],
+ "ReviewIds": [],
+ "EANs": [],
+ "BrandExternalId": null,
+ "ProductPageUrl": null,
+ "FamilyIds": [],
+ "Brand": {},
+ "ManufacturerPartNumbers": [],
+ "QuestionIds": [],
+ "StoryIds": [],
+ "UPCs": [],
+ "Attributes": {},
+ "AttributesOrder": [],
+ "ReviewStatistics": {
+ "RatingDistribution": [
+ {
+ "RatingValue": 4,
+ "Count": 40
+ },
+ {
+ "RatingValue": 5,
+ "Count": 35
+ },
+ {
+ "RatingValue": 3,
+ "Count": 10
+ },
+ {
+ "RatingValue": 1,
+ "Count": 1
+ },
+ {
+ "RatingValue": 2,
+ "Count": 1
+ }
+ ],
+ "HelpfulVoteCount": 845,
+ "FirstSubmissionTime": "2016-01-19T00:56:00.000+00:00",
+ "LastSubmissionTime": "2022-02-17T21:18:16.000+00:00",
+ "ContextDataDistributionOrder": [
+ "Age",
+ "Gender",
+ "IncentivizedReview",
+ "LengthOfOwnership",
+ "ReadReviews"
+ ],
+ "ContextDataDistribution": {
+ "Age": {
+ "Id": "Age",
+ "Values": [
+ {
+ "Count": 8,
+ "Value": "17orUnder",
+ "ValueLabel": "17 or under"
+ },
+ {
+ "Count": 2,
+ "Value": "18to24",
+ "ValueLabel": "18 to 24"
+ },
+ {
+ "Count": 5,
+ "Value": "25to34",
+ "ValueLabel": "25 to 34"
+ },
+ {
+ "Count": 2,
+ "Value": "35to44",
+ "ValueLabel": "35 to 44"
+ },
+ {
+ "Count": 1,
+ "Value": "45to54",
+ "ValueLabel": "45 to 54"
+ },
+ {
+ "Count": 1,
+ "Value": "65orOver",
+ "ValueLabel": "65 or over"
+ }
+ ],
+ "Label": "Age"
+ },
+ "Gender": {
+ "Id": "Gender",
+ "Values": [
+ {
+ "Count": 7,
+ "Value": "Male",
+ "ValueLabel": "Male"
+ },
+ {
+ "Count": 14,
+ "Value": "Female",
+ "ValueLabel": "Female"
+ }
+ ],
+ "Label": "Gender"
+ },
+ "IncentivizedReview": {
+ "Id": "IncentivizedReview",
+ "Values": [
+ {
+ "Count": 15,
+ "Value": "True",
+ "ValueLabel": "Yes"
+ }
+ ],
+ "Label": "Received an incentive for this review"
+ },
+ "LengthOfOwnership": {
+ "Id": "LengthOfOwnership",
+ "Values": [
+ {
+ "Count": 9,
+ "Value": "1week",
+ "ValueLabel": "1 week"
+ },
+ {
+ "Count": 3,
+ "Value": "1month",
+ "ValueLabel": "1 month"
+ },
+ {
+ "Count": 3,
+ "Value": "3months",
+ "ValueLabel": "3 months"
+ },
+ {
+ "Count": 1,
+ "Value": "6months",
+ "ValueLabel": "6 months"
+ }
+ ],
+ "Label": "Length of ownership"
+ },
+ "ReadReviews": {
+ "Id": "ReadReviews",
+ "Values": [
+ {
+ "Count": 12,
+ "Value": "Yes",
+ "ValueLabel": "Yes"
+ },
+ {
+ "Count": 6,
+ "Value": "No",
+ "ValueLabel": "No"
+ }
+ ],
+ "Label": "Read product reviews online before purchasing"
+ }
+ },
+ "RecommendedCount": 31,
+ "AverageOverallRating": 4.2298850574712645,
+ "NotRecommendedCount": 20,
+ "TotalReviewCount": 87,
+ "RatingsOnlyReviewCount": 0,
+ "NotHelpfulVoteCount": 83,
+ "SecondaryRatingsAveragesOrder": [
+ "Quality",
+ "Value",
+ "Fit_22"
+ ],
+ "SecondaryRatingsAverages": {
+ "Value": {
+ "Id": "Value",
+ "AverageRating": 4.515151515151516,
+ "MaxLabel": null,
+ "ValueRange": 5,
+ "MinLabel": null,
+ "DisplayType": "NORMAL",
+ "Label": "Value of Product"
+ },
+ "Quality": {
+ "Id": "Quality",
+ "AverageRating": 4.5,
+ "MaxLabel": null,
+ "ValueRange": 5,
+ "MinLabel": null,
+ "DisplayType": "NORMAL",
+ "Label": "Quality of Product"
+ },
+ "Fit_22": {
+ "Id": "Fit_22",
+ "AverageRating": 3.125,
+ "DisplayType": "SLIDER",
+ "ValueRange": 5,
+ "MaxLabel": "Runs Large",
+ "MinLabel": "Runs Small",
+ "Label": "Fit"
+ }
+ },
+ "FeaturedReviewCount": 1,
+ "OverallRatingRange": 5,
+ "TagDistribution": {},
+ "TagDistributionOrder": []
+ },
+ "TotalReviewCount": 87
+ }
+ },
+ "ProductsOrder": [
+ "data-gen-moppq9ekthfzbc6qff3bqokie"
+ ]
+ },
+ "HasErrors": false,
+ "Errors": []
+}
\ No newline at end of file
diff --git a/bvrecommendations/src/main/AndroidManifest.xml b/bvrecommendations/src/main/AndroidManifest.xml
index 88b09a3a..a33fab0c 100644
--- a/bvrecommendations/src/main/AndroidManifest.xml
+++ b/bvrecommendations/src/main/AndroidManifest.xml
@@ -2,5 +2,6 @@
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.bazaarvoice.bvandroidsdk_recommendations">
+