diff --git a/pom.xml b/pom.xml index 41576bb..2fd8434 100644 --- a/pom.xml +++ b/pom.xml @@ -51,11 +51,6 @@ ${org.mapstruct.version} - - com.h2database - h2 - test - org.projectlombok lombok @@ -86,8 +81,33 @@ jjwt-jackson ${jjwt.version} + + org.springdoc + springdoc-openapi-starter-webmvc-ui + 2.1.0 + + + com.github.cloudyrock.mongock + mongock-spring-v5 + + + com.github.cloudyrock.mongock + mongodb-springdata-v3-driver + + + + + com.github.cloudyrock.mongock + mongock-bom + 4.3.8 + pom + import + + + + diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..4658dc9 --- /dev/null +++ b/readme.md @@ -0,0 +1,55 @@ +#
Statistics API
+ +Welcome to the Statistics API project! This project aims to create a Spring Boot RESTful API that updates statistics in the database and caches responses that we retrieve. +This README.md file provides an overview of the project. + +## Get Started + +To run the project, follow this instruction: + +1. Clone the repository: + ```bash + git clone https://github.com/vadymhrnk/statistics-api.git + ``` +2. Download [JDK](https://www.oracle.com/java/technologies/downloads/), [Apache Maven](https://maven.apache.org/download.cgi) and [Docker](https://docs.docker.com/get-docker/) +3. Use Docker to build and run MongoDB: + ```bash + docker-compose -f docker-compose.yaml -p statistics-api up -d + ``` +4. Build and run the project using: + ```bash + mvn clean spring-boot:run + ``` + +### Backend Technologies +- **Java 17**: the primary programming language for backend development. +- **Spring Boot**: the framework for building and deploying Java-based applications with ease. +- **Spring Security**: ensures secure authentication and authorization within the application. +- **Spring Data MongoDB**: provides easy integration with MongoDB for data access. +- **Spring Boot Starter Web**: starter for building web applications, including RESTful APIs. +- **Spring Boot Starter Cache**: starter for using Spring Framework’s caching support. +- **Spring Boot Starter Validation**: starter for using JSR-380 Bean Validation with Hibernate Validator. +- **MapStruct**: simplifies the implementation of bean mappings, reducing manual coding effort. +- **Lombok**: a tool to reduce boilerplate code, enhancing code readability and conciseness. +- **MongoDB Driver**: driver for MongoDB integration. + +### API Documentation +- **Springdoc OpenAPI**: an OpenAPI for generating documentation. + +### Security +- **JWT (JSON Web Token)**: used for secure communication and authorization between client and server. + +### Database Migration +- **Mongock**: enables MongoDB database migration management. + +### Application Endpoints + +- **Authentication controller:** + - `POST: /auth/registration` -> Sign in to the app. + - `POST: /auth/login` -> Log in to get token for further interactions. + +- **Report controller:** + - `GET: /reports/dates` -> Get list of all reports by dates. + - `GET: /reports/dates?firstDate=2024-02-15&secondDate=2024-02-16` -> Get list of all reports by selected dates + - `GET: /reports/ASIN` -> Get all reports by ASINs. + - `GET: /reports/ASIN?asinList=B07JWCZKSJ&asinList=B09ZDDDS1X` -> Get all reports by specific ASINs. \ No newline at end of file diff --git a/src/main/java/com/example/statisticsapi/StatisticsApiApplication.java b/src/main/java/com/example/statisticsapi/StatisticsApiApplication.java index 7830ddd..f061781 100644 --- a/src/main/java/com/example/statisticsapi/StatisticsApiApplication.java +++ b/src/main/java/com/example/statisticsapi/StatisticsApiApplication.java @@ -1,9 +1,13 @@ package com.example.statisticsapi; +import com.github.cloudyrock.spring.v5.EnableMongock; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.scheduling.annotation.EnableScheduling; @SpringBootApplication +@EnableMongock +@EnableScheduling public class StatisticsApiApplication { public static void main(String[] args) { diff --git a/src/main/java/com/example/statisticsapi/config/DatabaseChangelog.java b/src/main/java/com/example/statisticsapi/config/DatabaseChangelog.java new file mode 100644 index 0000000..3c89de0 --- /dev/null +++ b/src/main/java/com/example/statisticsapi/config/DatabaseChangelog.java @@ -0,0 +1,26 @@ +package com.example.statisticsapi.config; + +import com.example.statisticsapi.document.Role; +import com.example.statisticsapi.repository.RoleRepository; +import com.github.cloudyrock.mongock.ChangeLog; +import com.github.cloudyrock.mongock.ChangeSet; +import java.util.ArrayList; +import java.util.List; + +@ChangeLog +public class DatabaseChangelog { + @ChangeSet(order = "001", id = "seedDatabase", author = "Vadym Hurnik") + public void seedDatabase(RoleRepository roleRepository) { + List roleList = new ArrayList<>(); + + Role user = new Role(); + user.setRoleName(Role.RoleName.USER); + roleList.add(user); + + Role admin = new Role(); + admin.setRoleName(Role.RoleName.ADMIN); + roleList.add(admin); + + roleRepository.insert(roleList); + } +} diff --git a/src/main/java/com/example/statisticsapi/config/MapperConfig.java b/src/main/java/com/example/statisticsapi/config/MapperConfig.java new file mode 100644 index 0000000..8aa490e --- /dev/null +++ b/src/main/java/com/example/statisticsapi/config/MapperConfig.java @@ -0,0 +1,13 @@ +package com.example.statisticsapi.config; + +import org.mapstruct.InjectionStrategy; +import org.mapstruct.NullValueCheckStrategy; + +@org.mapstruct.MapperConfig( + componentModel = "spring", + injectionStrategy = InjectionStrategy.CONSTRUCTOR, + nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS, + implementationPackage = ".impl" +) +public class MapperConfig { +} diff --git a/src/main/java/com/example/statisticsapi/config/SecurityConfig.java b/src/main/java/com/example/statisticsapi/config/SecurityConfig.java new file mode 100644 index 0000000..694af37 --- /dev/null +++ b/src/main/java/com/example/statisticsapi/config/SecurityConfig.java @@ -0,0 +1,65 @@ +package com.example.statisticsapi.config; + +import com.example.statisticsapi.securtity.JwtAuthenticationFilter; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.authentication.AuthenticationManager; +import org.springframework.security.config.Customizer; +import org.springframework.security.config.annotation.authentication.configuration.AuthenticationConfiguration; +import org.springframework.security.config.annotation.method.configuration.EnableMethodSecurity; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer; +import org.springframework.security.config.http.SessionCreationPolicy; +import org.springframework.security.core.userdetails.UserDetailsService; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.security.crypto.password.PasswordEncoder; +import org.springframework.security.web.SecurityFilterChain; +import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; + +@Configuration +@RequiredArgsConstructor +@EnableMethodSecurity +public class SecurityConfig { + @Value("${spring.security.public.endpoints}") + private String[] publicEndpoints; + + private final UserDetailsService userDetailsService; + private final JwtAuthenticationFilter jwtAuthenticationFilter; + + @Bean + public PasswordEncoder getPasswordEncoder() { + return new BCryptPasswordEncoder(); + } + + @Bean + public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { + return http + .cors(AbstractHttpConfigurer::disable) + .csrf(AbstractHttpConfigurer::disable) + .authorizeHttpRequests( + auth -> auth + .requestMatchers(publicEndpoints) + .permitAll() + .anyRequest() + .authenticated() + ) + .httpBasic(Customizer.withDefaults()) + .sessionManagement( + session -> session.sessionCreationPolicy(SessionCreationPolicy.STATELESS) + ) + .addFilterBefore( + jwtAuthenticationFilter, UsernamePasswordAuthenticationFilter.class + ) + .userDetailsService(userDetailsService) + .build(); + } + + @Bean + public AuthenticationManager authenticationManager( + AuthenticationConfiguration authenticationConfiguration + ) throws Exception { + return authenticationConfiguration.getAuthenticationManager(); + } +} diff --git a/src/main/java/com/example/statisticsapi/config/cache/CachingConfig.java b/src/main/java/com/example/statisticsapi/config/cache/CachingConfig.java new file mode 100644 index 0000000..f2e6a48 --- /dev/null +++ b/src/main/java/com/example/statisticsapi/config/cache/CachingConfig.java @@ -0,0 +1,16 @@ +package com.example.statisticsapi.config.cache; + +import org.springframework.cache.CacheManager; +import org.springframework.cache.annotation.EnableCaching; +import org.springframework.cache.concurrent.ConcurrentMapCacheManager; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +@EnableCaching +public class CachingConfig { + @Bean + public CacheManager cacheManager() { + return new ConcurrentMapCacheManager(); + } +} diff --git a/src/main/java/com/example/statisticsapi/config/cache/SimpleCacheCustomizer.java b/src/main/java/com/example/statisticsapi/config/cache/SimpleCacheCustomizer.java new file mode 100644 index 0000000..5e52085 --- /dev/null +++ b/src/main/java/com/example/statisticsapi/config/cache/SimpleCacheCustomizer.java @@ -0,0 +1,17 @@ +package com.example.statisticsapi.config.cache; + +import java.util.List; +import org.springframework.boot.autoconfigure.cache.CacheManagerCustomizer; +import org.springframework.cache.concurrent.ConcurrentMapCacheManager; +import org.springframework.stereotype.Component; + +@Component +public class SimpleCacheCustomizer + implements CacheManagerCustomizer { + public static final String REPORT_CACHE = "reportCache"; + + @Override + public void customize(ConcurrentMapCacheManager cacheManager) { + cacheManager.setCacheNames(List.of(REPORT_CACHE)); + } +} diff --git a/src/main/java/com/example/statisticsapi/controller/AuthenticationController.java b/src/main/java/com/example/statisticsapi/controller/AuthenticationController.java new file mode 100644 index 0000000..e53ae78 --- /dev/null +++ b/src/main/java/com/example/statisticsapi/controller/AuthenticationController.java @@ -0,0 +1,47 @@ +package com.example.statisticsapi.controller; + +import com.example.statisticsapi.dto.internal.UserLoginRequestDto; +import com.example.statisticsapi.dto.internal.UserLoginResponseDto; +import com.example.statisticsapi.dto.internal.UserRegistrationRequestDto; +import com.example.statisticsapi.dto.internal.UserResponseDto; +import com.example.statisticsapi.exception.AuthenticationException; +import com.example.statisticsapi.exception.RegistrationException; +import com.example.statisticsapi.securtity.AuthenticationService; +import com.example.statisticsapi.service.user.UserService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.validation.Valid; +import lombok.RequiredArgsConstructor; +import org.springframework.http.HttpStatus; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseStatus; +import org.springframework.web.bind.annotation.RestController; + +@Tag(name = "Authentication manager", description = "Endpoint to authenticate users") +@RestController +@RequiredArgsConstructor +@RequestMapping("/auth") +public class AuthenticationController { + private final UserService userService; + private final AuthenticationService authenticationService; + + @PostMapping("/registration") + @ResponseStatus(HttpStatus.CREATED) + @Operation(summary = "Register a new user", description = "Register a new user") + public UserResponseDto register(@RequestBody @Valid UserRegistrationRequestDto requestDto) + throws RegistrationException { + return userService.register(requestDto); + } + + @PostMapping("/login") + @Operation( + summary = "Login using existing credentials", + description = "Login using existing credentials" + ) + public UserLoginResponseDto login(@RequestBody @Valid UserLoginRequestDto requestDto) + throws AuthenticationException { + return authenticationService.authenticate(requestDto); + } +} diff --git a/src/main/java/com/example/statisticsapi/controller/ReportController.java b/src/main/java/com/example/statisticsapi/controller/ReportController.java new file mode 100644 index 0000000..13cb360 --- /dev/null +++ b/src/main/java/com/example/statisticsapi/controller/ReportController.java @@ -0,0 +1,71 @@ +package com.example.statisticsapi.controller; + +import com.example.statisticsapi.dto.external.SalesAndTrafficByAsinDto; +import com.example.statisticsapi.dto.external.SalesAndTrafficByDateDto; +import com.example.statisticsapi.service.report.ReportService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import java.time.LocalDate; +import java.util.List; +import lombok.RequiredArgsConstructor; +import org.springframework.data.domain.Pageable; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +@Tag(name = "Report selector", description = "Endpoint for viewing reports") +@RestController +@RequiredArgsConstructor +@RequestMapping("/reports") +public class ReportController { + private final ReportService reportService; + + @PreAuthorize("hasRole('USER')") + @GetMapping("/dates") + @Operation( + summary = "Get all reports by date", + description = "Get a list of all reports by date" + ) + public List getAllSalesAndTrafficByDate(Pageable pageable) { + return reportService.findAllSalesAndTrafficByDate(pageable); + } + + @PreAuthorize("hasRole('USER')") + @GetMapping("/ASIN") + @Operation( + summary = "Get all reports by ASIN", + description = "Get a list of all by ASIN" + ) + public List getAllSalesAndTrafficByAsin(Pageable pageable) { + return reportService.findAllSalesAndTrafficByAsin(pageable); + } + + @PreAuthorize("hasRole('USER')") + @GetMapping(value = "/dates", params = {"firstDate", "secondDate"}) + @Operation( + summary = "Get all reports by selected dates", + description = "Get a list of all by selected dates" + ) + public List getAllSalesAndTrafficBySelectedDates( + Pageable pageable, + @RequestParam(required = false) LocalDate firstDate, + @RequestParam(required = false) LocalDate secondDate + ) { + return reportService.findAllSalesAndTrafficBySelectedDates(pageable, firstDate, secondDate); + } + + @PreAuthorize("hasRole('USER')") + @GetMapping(value = "/ASIN", params = {"asinList"}) + @Operation( + summary = "Get all reports by selected ASINs", + description = "Get a list of all by selected ASINs" + ) + public List getAllSalesAndTrafficBySelectedAsins( + Pageable pageable, + @RequestParam(required = false) List asinList) { + return reportService.findAllSalesAndTrafficBySelectedAsins(pageable, asinList); + } +} + diff --git a/src/main/java/com/example/statisticsapi/document/Report.java b/src/main/java/com/example/statisticsapi/document/Report.java new file mode 100644 index 0000000..b23b3d0 --- /dev/null +++ b/src/main/java/com/example/statisticsapi/document/Report.java @@ -0,0 +1,20 @@ +package com.example.statisticsapi.document; + +import com.example.statisticsapi.dto.external.ReportSpecificationDto; +import java.util.List; +import lombok.Data; +import org.springframework.data.annotation.Id; +import org.springframework.data.mongodb.core.mapping.DBRef; +import org.springframework.data.mongodb.core.mapping.Document; + +@Data +@Document +public class Report { + @Id + private String id; + private ReportSpecificationDto reportSpecification; + @DBRef + private List salesAndTrafficByDate; + @DBRef + private List salesAndTrafficByAsin; +} diff --git a/src/main/java/com/example/statisticsapi/document/Role.java b/src/main/java/com/example/statisticsapi/document/Role.java new file mode 100644 index 0000000..0d01708 --- /dev/null +++ b/src/main/java/com/example/statisticsapi/document/Role.java @@ -0,0 +1,26 @@ +package com.example.statisticsapi.document; + +import lombok.Data; +import org.springframework.data.annotation.Id; +import org.springframework.data.mongodb.core.index.Indexed; +import org.springframework.data.mongodb.core.mapping.Document; +import org.springframework.security.core.GrantedAuthority; + +@Data +@Document +public class Role implements GrantedAuthority { + @Id + private String id; + @Indexed(unique = true) + private RoleName roleName; + + @Override + public String getAuthority() { + return "ROLE_" + roleName.name(); + } + + public enum RoleName { + USER, + ADMIN + } +} diff --git a/src/main/java/com/example/statisticsapi/document/SalesAndTrafficByAsin.java b/src/main/java/com/example/statisticsapi/document/SalesAndTrafficByAsin.java new file mode 100644 index 0000000..c5beecc --- /dev/null +++ b/src/main/java/com/example/statisticsapi/document/SalesAndTrafficByAsin.java @@ -0,0 +1,17 @@ +package com.example.statisticsapi.document; + +import com.example.statisticsapi.dto.external.SalesByAsinDto; +import com.example.statisticsapi.dto.external.TrafficByAsinDto; +import lombok.Data; +import org.springframework.data.annotation.Id; +import org.springframework.data.mongodb.core.mapping.Document; + +@Data +@Document +public class SalesAndTrafficByAsin { + @Id + private String id; + private String parentAsin; + private SalesByAsinDto salesByAsin; + private TrafficByAsinDto trafficByAsin; +} diff --git a/src/main/java/com/example/statisticsapi/document/SalesAndTrafficByDate.java b/src/main/java/com/example/statisticsapi/document/SalesAndTrafficByDate.java new file mode 100644 index 0000000..b40f6d7 --- /dev/null +++ b/src/main/java/com/example/statisticsapi/document/SalesAndTrafficByDate.java @@ -0,0 +1,18 @@ +package com.example.statisticsapi.document; + +import com.example.statisticsapi.dto.external.SalesByDateDto; +import com.example.statisticsapi.dto.external.TrafficByDateDto; +import java.time.LocalDate; +import lombok.Data; +import org.springframework.data.annotation.Id; +import org.springframework.data.mongodb.core.mapping.Document; + +@Data +@Document +public class SalesAndTrafficByDate { + @Id + private String id; + private LocalDate date; + private SalesByDateDto salesByDate; + private TrafficByDateDto trafficByDate; +} diff --git a/src/main/java/com/example/statisticsapi/document/User.java b/src/main/java/com/example/statisticsapi/document/User.java new file mode 100644 index 0000000..f0bbe4b --- /dev/null +++ b/src/main/java/com/example/statisticsapi/document/User.java @@ -0,0 +1,61 @@ +package com.example.statisticsapi.document; + +import java.util.Collection; +import java.util.HashSet; +import java.util.Set; +import lombok.Data; +import org.springframework.data.annotation.Id; +import org.springframework.data.mongodb.core.index.Indexed; +import org.springframework.data.mongodb.core.mapping.DBRef; +import org.springframework.data.mongodb.core.mapping.Document; +import org.springframework.security.core.GrantedAuthority; +import org.springframework.security.core.userdetails.UserDetails; + +@Data +@Document +public class User implements UserDetails { + @Id + private String id; + @Indexed(unique = true) + private String email; + private String password; + private String firstName; + private String lastName; + @DBRef + private Set roles = new HashSet<>(); + + @Override + public Collection getAuthorities() { + return roles; + } + + @Override + public String getUsername() { + return email; + } + + @Override + public String getPassword() { + return password; + } + + @Override + public boolean isAccountNonExpired() { + return true; + } + + @Override + public boolean isAccountNonLocked() { + return true; + } + + @Override + public boolean isCredentialsNonExpired() { + return true; + } + + @Override + public boolean isEnabled() { + return true; + } +} diff --git a/src/main/java/com/example/statisticsapi/dto/external/MoneyAmountAndCurrencyCodeDto.java b/src/main/java/com/example/statisticsapi/dto/external/MoneyAmountAndCurrencyCodeDto.java new file mode 100644 index 0000000..a4b662c --- /dev/null +++ b/src/main/java/com/example/statisticsapi/dto/external/MoneyAmountAndCurrencyCodeDto.java @@ -0,0 +1,14 @@ +package com.example.statisticsapi.dto.external; + +import java.math.BigDecimal; +import lombok.Data; + +@Data +public class MoneyAmountAndCurrencyCodeDto { + private BigDecimal amount; + private CurrencyCode currencyCode; + + public enum CurrencyCode { + USD + } +} diff --git a/src/main/java/com/example/statisticsapi/dto/external/ReportOptionsDto.java b/src/main/java/com/example/statisticsapi/dto/external/ReportOptionsDto.java new file mode 100644 index 0000000..de0f86c --- /dev/null +++ b/src/main/java/com/example/statisticsapi/dto/external/ReportOptionsDto.java @@ -0,0 +1,9 @@ +package com.example.statisticsapi.dto.external; + +import lombok.Data; + +@Data +public class ReportOptionsDto { + private String dateGranularity; + private String asinGranularity; +} diff --git a/src/main/java/com/example/statisticsapi/dto/external/ReportResponseDto.java b/src/main/java/com/example/statisticsapi/dto/external/ReportResponseDto.java new file mode 100644 index 0000000..e9c8651 --- /dev/null +++ b/src/main/java/com/example/statisticsapi/dto/external/ReportResponseDto.java @@ -0,0 +1,10 @@ +package com.example.statisticsapi.dto.external; + +import lombok.Data; + +@Data +public class ReportResponseDto { + private ReportSpecificationDto reportSpecification; + private SalesAndTrafficByDateDto salesAndTrafficByDate; + private SalesAndTrafficByAsinDto salesAndTrafficByAsin; +} diff --git a/src/main/java/com/example/statisticsapi/dto/external/ReportSpecificationDto.java b/src/main/java/com/example/statisticsapi/dto/external/ReportSpecificationDto.java new file mode 100644 index 0000000..4bc255f --- /dev/null +++ b/src/main/java/com/example/statisticsapi/dto/external/ReportSpecificationDto.java @@ -0,0 +1,14 @@ +package com.example.statisticsapi.dto.external; + +import java.time.LocalDate; +import java.util.List; +import lombok.Data; + +@Data +public class ReportSpecificationDto { + private String reportType; + private ReportOptionsDto reportOptions; + private LocalDate dataStartTime; + private LocalDate dataEndTime; + private List marketplaceIds; +} diff --git a/src/main/java/com/example/statisticsapi/dto/external/SalesAndTrafficByAsinDto.java b/src/main/java/com/example/statisticsapi/dto/external/SalesAndTrafficByAsinDto.java new file mode 100644 index 0000000..751ba7b --- /dev/null +++ b/src/main/java/com/example/statisticsapi/dto/external/SalesAndTrafficByAsinDto.java @@ -0,0 +1,10 @@ +package com.example.statisticsapi.dto.external; + +import lombok.Data; + +@Data +public class SalesAndTrafficByAsinDto { + private String parentAsin; + private SalesByAsinDto salesByAsin; + private TrafficByAsinDto trafficByAsin; +} diff --git a/src/main/java/com/example/statisticsapi/dto/external/SalesAndTrafficByDateDto.java b/src/main/java/com/example/statisticsapi/dto/external/SalesAndTrafficByDateDto.java new file mode 100644 index 0000000..f02c2df --- /dev/null +++ b/src/main/java/com/example/statisticsapi/dto/external/SalesAndTrafficByDateDto.java @@ -0,0 +1,11 @@ +package com.example.statisticsapi.dto.external; + +import java.time.LocalDate; +import lombok.Data; + +@Data +public class SalesAndTrafficByDateDto { + private LocalDate date; + private SalesByDateDto salesByDate; + private TrafficByDateDto trafficByDate; +} diff --git a/src/main/java/com/example/statisticsapi/dto/external/SalesByAsinDto.java b/src/main/java/com/example/statisticsapi/dto/external/SalesByAsinDto.java new file mode 100644 index 0000000..e789901 --- /dev/null +++ b/src/main/java/com/example/statisticsapi/dto/external/SalesByAsinDto.java @@ -0,0 +1,13 @@ +package com.example.statisticsapi.dto.external; + +import lombok.Data; + +@Data +public class SalesByAsinDto { + private int unitsOrdered; + private int unitsOrderedB2B; + private MoneyAmountAndCurrencyCodeDto orderedProductSales; + private MoneyAmountAndCurrencyCodeDto orderedProductSalesB2B; + private int totalOrderItems; + private int totalOrderItemsB2B; +} diff --git a/src/main/java/com/example/statisticsapi/dto/external/SalesByDateDto.java b/src/main/java/com/example/statisticsapi/dto/external/SalesByDateDto.java new file mode 100644 index 0000000..0b70f10 --- /dev/null +++ b/src/main/java/com/example/statisticsapi/dto/external/SalesByDateDto.java @@ -0,0 +1,27 @@ +package com.example.statisticsapi.dto.external; + +import java.math.BigDecimal; +import lombok.Data; + +@Data +public class SalesByDateDto { + private MoneyAmountAndCurrencyCodeDto orderedProductSales; + private MoneyAmountAndCurrencyCodeDto orderedProductSalesB2B; + private int unitsOrdered; + private int unitsOrderedB2B; + private int totalOrderItems; + private int totalOrderItemsB2B; + private MoneyAmountAndCurrencyCodeDto averageSalesPerOrderItem; + private MoneyAmountAndCurrencyCodeDto averageSalesPerOrderItemB2B; + private BigDecimal averageUnitsPerOrderItem; + private BigDecimal averageUnitsPerOrderItemB2B; + private MoneyAmountAndCurrencyCodeDto averageSellingPrice; + private MoneyAmountAndCurrencyCodeDto averageSellingPriceB2B; + private int unitsRefunded; + private BigDecimal refundRate; + private int claimsGranted; + private MoneyAmountAndCurrencyCodeDto claimsAmount; + private MoneyAmountAndCurrencyCodeDto shippedProductSales; + private int unitsShipped; + private int ordersShipped; +} diff --git a/src/main/java/com/example/statisticsapi/dto/external/TrafficByAsinDto.java b/src/main/java/com/example/statisticsapi/dto/external/TrafficByAsinDto.java new file mode 100644 index 0000000..fa18f12 --- /dev/null +++ b/src/main/java/com/example/statisticsapi/dto/external/TrafficByAsinDto.java @@ -0,0 +1,36 @@ +package com.example.statisticsapi.dto.external; + +import java.math.BigDecimal; +import lombok.Data; + +@Data +public class TrafficByAsinDto { + private int browserSessions; + private int browserSessionsB2B; + private int mobileAppSessions; + private int mobileAppSessionsB2B; + private int sessions; + private int sessionsB2B; + private BigDecimal browserSessionPercentage; + private BigDecimal browserSessionPercentageB2B; + private BigDecimal mobileAppSessionPercentage; + private BigDecimal mobileAppSessionPercentageB2B; + private BigDecimal sessionPercentage; + private BigDecimal sessionPercentageB2B; + private int browserPageViews; + private int browserPageViewsB2B; + private int mobileAppPageViews; + private int mobileAppPageViewsB2B; + private int pageViews; + private int pageViewsB2B; + private BigDecimal browserPageViewsPercentage; + private BigDecimal browserPageViewsPercentageB2B; + private BigDecimal mobileAppPageViewsPercentage; + private BigDecimal mobileAppPageViewsPercentageB2B; + private BigDecimal pageViewsPercentage; + private BigDecimal pageViewsPercentageB2B; + private BigDecimal buyBoxPercentage; + private BigDecimal buyBoxPercentageB2B; + private BigDecimal unitSessionPercentage; + private BigDecimal unitSessionPercentageB2B; +} diff --git a/src/main/java/com/example/statisticsapi/dto/external/TrafficByDateDto.java b/src/main/java/com/example/statisticsapi/dto/external/TrafficByDateDto.java new file mode 100644 index 0000000..8d27c2c --- /dev/null +++ b/src/main/java/com/example/statisticsapi/dto/external/TrafficByDateDto.java @@ -0,0 +1,31 @@ +package com.example.statisticsapi.dto.external; + +import java.math.BigDecimal; +import lombok.Data; + +@Data +public class TrafficByDateDto { + private int browserPageViews; + private int browserPageViewsB2B; + private int mobileAppPageViews; + private int mobileAppPageViewsB2B; + private int pageViews; + private int pageViewsB2B; + private int browserSessions; + private int browserSessionsB2B; + private int mobileAppSessions; + private int mobileAppSessionsB2B; + private int sessions; + private int sessionsB2B; + private BigDecimal buyBoxPercentage; + private BigDecimal buyBoxPercentageB2B; + private BigDecimal orderItemSessionPercentage; + private BigDecimal orderItemSessionPercentageB2B; + private BigDecimal unitSessionPercentage; + private BigDecimal unitSessionPercentageB2B; + private BigDecimal averageOfferCount; + private BigDecimal averageParentItems; + private int feedbackReceived; + private int negativeFeedbackReceived; + private BigDecimal receivedNegativeFeedbackRate; +} diff --git a/src/main/java/com/example/statisticsapi/dto/internal/UserLoginRequestDto.java b/src/main/java/com/example/statisticsapi/dto/internal/UserLoginRequestDto.java new file mode 100644 index 0000000..b1b3462 --- /dev/null +++ b/src/main/java/com/example/statisticsapi/dto/internal/UserLoginRequestDto.java @@ -0,0 +1,14 @@ +package com.example.statisticsapi.dto.internal; + +import jakarta.validation.constraints.Email; +import jakarta.validation.constraints.NotBlank; +import lombok.Data; + +@Data +public class UserLoginRequestDto { + @NotBlank + @Email + private String email; + @NotBlank + private String password; +} diff --git a/src/main/java/com/example/statisticsapi/dto/internal/UserLoginResponseDto.java b/src/main/java/com/example/statisticsapi/dto/internal/UserLoginResponseDto.java new file mode 100644 index 0000000..2c825d9 --- /dev/null +++ b/src/main/java/com/example/statisticsapi/dto/internal/UserLoginResponseDto.java @@ -0,0 +1,4 @@ +package com.example.statisticsapi.dto.internal; + +public record UserLoginResponseDto(String token) { +} diff --git a/src/main/java/com/example/statisticsapi/dto/internal/UserRegistrationRequestDto.java b/src/main/java/com/example/statisticsapi/dto/internal/UserRegistrationRequestDto.java new file mode 100644 index 0000000..ceccd8a --- /dev/null +++ b/src/main/java/com/example/statisticsapi/dto/internal/UserRegistrationRequestDto.java @@ -0,0 +1,29 @@ +package com.example.statisticsapi.dto.internal; + +import com.example.statisticsapi.validation.FieldMatch; +import jakarta.validation.constraints.Email; +import jakarta.validation.constraints.NotBlank; +import lombok.Data; +import org.hibernate.validator.constraints.Length; + +@Data +@FieldMatch +public class UserRegistrationRequestDto { + @Email + @NotBlank + private String email; + + @NotBlank + @Length(min = 6, max = 40) + private String password; + + @NotBlank + @Length(min = 6, max = 40) + private String repeatPassword; + + @NotBlank + private String firstName; + + @NotBlank + private String lastName; +} diff --git a/src/main/java/com/example/statisticsapi/dto/internal/UserResponseDto.java b/src/main/java/com/example/statisticsapi/dto/internal/UserResponseDto.java new file mode 100644 index 0000000..9ac78ab --- /dev/null +++ b/src/main/java/com/example/statisticsapi/dto/internal/UserResponseDto.java @@ -0,0 +1,11 @@ +package com.example.statisticsapi.dto.internal; + +import lombok.Data; + +@Data +public class UserResponseDto { + private String id; + private String email; + private String firstName; + private String lastName; +} diff --git a/src/main/java/com/example/statisticsapi/exception/AuthenticationException.java b/src/main/java/com/example/statisticsapi/exception/AuthenticationException.java new file mode 100644 index 0000000..834222e --- /dev/null +++ b/src/main/java/com/example/statisticsapi/exception/AuthenticationException.java @@ -0,0 +1,9 @@ +package com.example.statisticsapi.exception; + +import org.springframework.security.authentication.BadCredentialsException; + +public class AuthenticationException extends RuntimeException { + public AuthenticationException(String message, BadCredentialsException ex) { + super(message + ex.getMessage()); + } +} diff --git a/src/main/java/com/example/statisticsapi/exception/CustomGlobalExceptionHandler.java b/src/main/java/com/example/statisticsapi/exception/CustomGlobalExceptionHandler.java new file mode 100644 index 0000000..d329642 --- /dev/null +++ b/src/main/java/com/example/statisticsapi/exception/CustomGlobalExceptionHandler.java @@ -0,0 +1,64 @@ +package com.example.statisticsapi.exception; + +import java.time.LocalDateTime; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.HttpStatusCode; +import org.springframework.http.ResponseEntity; +import org.springframework.validation.FieldError; +import org.springframework.validation.ObjectError; +import org.springframework.web.bind.MethodArgumentNotValidException; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.context.request.WebRequest; +import org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExceptionHandler; + +@ControllerAdvice +public class CustomGlobalExceptionHandler extends ResponseEntityExceptionHandler { + @Override + protected ResponseEntity handleMethodArgumentNotValid( + MethodArgumentNotValidException ex, + HttpHeaders headers, + HttpStatusCode status, + WebRequest request + ) { + Map body = new LinkedHashMap<>(); + body.put("timestamp", LocalDateTime.now()); + body.put("status", HttpStatus.BAD_REQUEST); + List errors = ex.getBindingResult().getAllErrors().stream() + .map(this::getErrorMessage) + .toList(); + body.put("errors", errors); + return new ResponseEntity<>(body, headers, status); + } + + private String getErrorMessage(ObjectError e) { + if (e instanceof FieldError) { + String field = ((FieldError) e).getField(); + String message = e.getDefaultMessage(); + return field + " " + message; + } + return e.getDefaultMessage(); + } + + @ExceptionHandler({RegistrationException.class}) + protected ResponseEntity handleRegistrationException(RegistrationException ex) { + return handleException(HttpStatus.BAD_REQUEST, ex); + } + + @ExceptionHandler({AuthenticationException.class}) + protected ResponseEntity handleAuthenticationException(AuthenticationException ex) { + return handleException(HttpStatus.FORBIDDEN, ex); + } + + private ResponseEntity handleException(HttpStatus status, Exception ex) { + Map body = new LinkedHashMap<>(); + body.put("timestamp", LocalDateTime.now()); + body.put("status", status); + body.put("message", ex.getMessage()); + return new ResponseEntity<>(body, status); + } +} diff --git a/src/main/java/com/example/statisticsapi/exception/RegistrationException.java b/src/main/java/com/example/statisticsapi/exception/RegistrationException.java new file mode 100644 index 0000000..8fb017f --- /dev/null +++ b/src/main/java/com/example/statisticsapi/exception/RegistrationException.java @@ -0,0 +1,7 @@ +package com.example.statisticsapi.exception; + +public class RegistrationException extends RuntimeException { + public RegistrationException(String message) { + super(message); + } +} diff --git a/src/main/java/com/example/statisticsapi/mapper/SalesAndTrafficByAsinMapper.java b/src/main/java/com/example/statisticsapi/mapper/SalesAndTrafficByAsinMapper.java new file mode 100644 index 0000000..67e9a11 --- /dev/null +++ b/src/main/java/com/example/statisticsapi/mapper/SalesAndTrafficByAsinMapper.java @@ -0,0 +1,12 @@ + +package com.example.statisticsapi.mapper; + +import com.example.statisticsapi.config.MapperConfig; +import com.example.statisticsapi.document.SalesAndTrafficByAsin; +import com.example.statisticsapi.dto.external.SalesAndTrafficByAsinDto; +import org.mapstruct.Mapper; + +@Mapper(config = MapperConfig.class) +public interface SalesAndTrafficByAsinMapper { + SalesAndTrafficByAsinDto toDto(SalesAndTrafficByAsin salesAndTrafficByAsin); +} diff --git a/src/main/java/com/example/statisticsapi/mapper/SalesAndTrafficByDateMapper.java b/src/main/java/com/example/statisticsapi/mapper/SalesAndTrafficByDateMapper.java new file mode 100644 index 0000000..950662b --- /dev/null +++ b/src/main/java/com/example/statisticsapi/mapper/SalesAndTrafficByDateMapper.java @@ -0,0 +1,11 @@ +package com.example.statisticsapi.mapper; + +import com.example.statisticsapi.config.MapperConfig; +import com.example.statisticsapi.document.SalesAndTrafficByDate; +import com.example.statisticsapi.dto.external.SalesAndTrafficByDateDto; +import org.mapstruct.Mapper; + +@Mapper(config = MapperConfig.class) +public interface SalesAndTrafficByDateMapper { + SalesAndTrafficByDateDto toDto(SalesAndTrafficByDate salesAndTrafficByDate); +} diff --git a/src/main/java/com/example/statisticsapi/mapper/UserMapper.java b/src/main/java/com/example/statisticsapi/mapper/UserMapper.java new file mode 100644 index 0000000..c123af9 --- /dev/null +++ b/src/main/java/com/example/statisticsapi/mapper/UserMapper.java @@ -0,0 +1,14 @@ +package com.example.statisticsapi.mapper; + +import com.example.statisticsapi.config.MapperConfig; +import com.example.statisticsapi.document.User; +import com.example.statisticsapi.dto.internal.UserRegistrationRequestDto; +import com.example.statisticsapi.dto.internal.UserResponseDto; +import org.mapstruct.Mapper; + +@Mapper(config = MapperConfig.class) +public interface UserMapper { + UserResponseDto toDto(User user); + + User toModel(UserRegistrationRequestDto requestDto); +} diff --git a/src/main/java/com/example/statisticsapi/repository/ReportRepository.java b/src/main/java/com/example/statisticsapi/repository/ReportRepository.java new file mode 100644 index 0000000..dead135 --- /dev/null +++ b/src/main/java/com/example/statisticsapi/repository/ReportRepository.java @@ -0,0 +1,12 @@ +package com.example.statisticsapi.repository; + +import com.example.statisticsapi.document.Report; +import com.example.statisticsapi.dto.external.ReportSpecificationDto; +import java.util.Optional; +import org.springframework.data.mongodb.repository.MongoRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface ReportRepository extends MongoRepository { + Optional findByReportSpecification(ReportSpecificationDto reportSpecification); +} diff --git a/src/main/java/com/example/statisticsapi/repository/RoleRepository.java b/src/main/java/com/example/statisticsapi/repository/RoleRepository.java new file mode 100644 index 0000000..f40579d --- /dev/null +++ b/src/main/java/com/example/statisticsapi/repository/RoleRepository.java @@ -0,0 +1,8 @@ +package com.example.statisticsapi.repository; + +import com.example.statisticsapi.document.Role; +import org.springframework.data.mongodb.repository.MongoRepository; + +public interface RoleRepository extends MongoRepository { + Role findByRoleName(Role.RoleName roleName); +} diff --git a/src/main/java/com/example/statisticsapi/repository/SalesAndTrafficByAsinRepository.java b/src/main/java/com/example/statisticsapi/repository/SalesAndTrafficByAsinRepository.java new file mode 100644 index 0000000..b11db19 --- /dev/null +++ b/src/main/java/com/example/statisticsapi/repository/SalesAndTrafficByAsinRepository.java @@ -0,0 +1,12 @@ +package com.example.statisticsapi.repository; + +import com.example.statisticsapi.document.SalesAndTrafficByAsin; +import java.util.Optional; +import org.springframework.data.mongodb.repository.MongoRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface SalesAndTrafficByAsinRepository + extends MongoRepository { + Optional findByParentAsin(String parentAsin); +} diff --git a/src/main/java/com/example/statisticsapi/repository/SalesAndTrafficByDateRepository.java b/src/main/java/com/example/statisticsapi/repository/SalesAndTrafficByDateRepository.java new file mode 100644 index 0000000..84ce76b --- /dev/null +++ b/src/main/java/com/example/statisticsapi/repository/SalesAndTrafficByDateRepository.java @@ -0,0 +1,13 @@ +package com.example.statisticsapi.repository; + +import com.example.statisticsapi.document.SalesAndTrafficByDate; +import java.time.LocalDate; +import java.util.Optional; +import org.springframework.data.mongodb.repository.MongoRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface SalesAndTrafficByDateRepository + extends MongoRepository { + Optional findByDate(LocalDate date); +} diff --git a/src/main/java/com/example/statisticsapi/repository/UserRepository.java b/src/main/java/com/example/statisticsapi/repository/UserRepository.java new file mode 100644 index 0000000..ac76f26 --- /dev/null +++ b/src/main/java/com/example/statisticsapi/repository/UserRepository.java @@ -0,0 +1,9 @@ +package com.example.statisticsapi.repository; + +import com.example.statisticsapi.document.User; +import java.util.Optional; +import org.springframework.data.mongodb.repository.MongoRepository; + +public interface UserRepository extends MongoRepository { + Optional findByEmail(String email); +} diff --git a/src/main/java/com/example/statisticsapi/securtity/AuthenticationService.java b/src/main/java/com/example/statisticsapi/securtity/AuthenticationService.java new file mode 100644 index 0000000..402187e --- /dev/null +++ b/src/main/java/com/example/statisticsapi/securtity/AuthenticationService.java @@ -0,0 +1,37 @@ +package com.example.statisticsapi.securtity; + +import com.example.statisticsapi.dto.internal.UserLoginRequestDto; +import com.example.statisticsapi.dto.internal.UserLoginResponseDto; +import com.example.statisticsapi.exception.AuthenticationException; +import lombok.RequiredArgsConstructor; +import org.springframework.security.authentication.AuthenticationManager; +import org.springframework.security.authentication.BadCredentialsException; +import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; +import org.springframework.security.core.Authentication; +import org.springframework.stereotype.Service; + +@RequiredArgsConstructor +@Service +public class AuthenticationService { + private static final String LOGIN_ERROR_MESSAGE = "Can't log in: "; + + private final JwtUtil jwtUtil; + private final AuthenticationManager authenticationManager; + + public UserLoginResponseDto authenticate(UserLoginRequestDto requestDto) + throws AuthenticationException { + try { + final Authentication authentication = authenticationManager.authenticate( + new UsernamePasswordAuthenticationToken( + requestDto.getEmail(), + requestDto.getPassword() + ) + ); + + String token = jwtUtil.generateToken(authentication.getName()); + return new UserLoginResponseDto(token); + } catch (BadCredentialsException ex) { + throw new AuthenticationException(LOGIN_ERROR_MESSAGE, ex); + } + } +} diff --git a/src/main/java/com/example/statisticsapi/securtity/CustomUserDetailsService.java b/src/main/java/com/example/statisticsapi/securtity/CustomUserDetailsService.java new file mode 100644 index 0000000..7a0e5f0 --- /dev/null +++ b/src/main/java/com/example/statisticsapi/securtity/CustomUserDetailsService.java @@ -0,0 +1,21 @@ +package com.example.statisticsapi.securtity; + +import com.example.statisticsapi.repository.UserRepository; +import lombok.RequiredArgsConstructor; +import org.springframework.security.core.userdetails.UserDetails; +import org.springframework.security.core.userdetails.UserDetailsService; +import org.springframework.security.core.userdetails.UsernameNotFoundException; +import org.springframework.stereotype.Service; + +@Service +@RequiredArgsConstructor +public class CustomUserDetailsService implements UserDetailsService { + private final UserRepository userRepository; + + @Override + public UserDetails loadUserByUsername(String email) throws UsernameNotFoundException { + return userRepository.findByEmail(email).orElseThrow( + () -> new UsernameNotFoundException("Can't find user by email: " + email) + ); + } +} diff --git a/src/main/java/com/example/statisticsapi/securtity/JwtAuthenticationFilter.java b/src/main/java/com/example/statisticsapi/securtity/JwtAuthenticationFilter.java new file mode 100644 index 0000000..76c41ed --- /dev/null +++ b/src/main/java/com/example/statisticsapi/securtity/JwtAuthenticationFilter.java @@ -0,0 +1,57 @@ +package com.example.statisticsapi.securtity; + +import jakarta.servlet.FilterChain; +import jakarta.servlet.ServletException; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.util.Optional; +import lombok.RequiredArgsConstructor; +import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.security.core.userdetails.UserDetails; +import org.springframework.security.core.userdetails.UserDetailsService; +import org.springframework.stereotype.Component; +import org.springframework.util.StringUtils; +import org.springframework.web.filter.OncePerRequestFilter; + +@Component +@RequiredArgsConstructor +public class JwtAuthenticationFilter extends OncePerRequestFilter { + private static final String HEADER = "Authorization"; + private static final String BEARER = "Bearer "; + private static final int TOKEN_START_INDEX = 7; + + private final JwtUtil jwtUtil; + private final UserDetailsService userDetailsService; + + @Override + protected void doFilterInternal( + HttpServletRequest request, + HttpServletResponse response, + FilterChain filterChain + ) throws ServletException, IOException { + Optional tokenOptional = getToken(request); + + if (tokenOptional.isPresent() && jwtUtil.isValidToken(tokenOptional.get())) { + String token = tokenOptional.get(); + String username = jwtUtil.getUsername(token); + UserDetails userDetails = userDetailsService.loadUserByUsername(username); + Authentication authentication = new UsernamePasswordAuthenticationToken( + userDetails, null, userDetails.getAuthorities() + ); + SecurityContextHolder.getContext().setAuthentication(authentication); + } + + filterChain.doFilter(request, response); + } + + private Optional getToken(HttpServletRequest request) { + String bearerToken = request.getHeader(HEADER); + if (StringUtils.hasText(bearerToken) && bearerToken.startsWith(BEARER)) { + return Optional.of(bearerToken.substring(TOKEN_START_INDEX)); + } + return Optional.empty(); + } +} diff --git a/src/main/java/com/example/statisticsapi/securtity/JwtUtil.java b/src/main/java/com/example/statisticsapi/securtity/JwtUtil.java new file mode 100644 index 0000000..9ad26fd --- /dev/null +++ b/src/main/java/com/example/statisticsapi/securtity/JwtUtil.java @@ -0,0 +1,61 @@ +package com.example.statisticsapi.securtity; + +import io.jsonwebtoken.Claims; +import io.jsonwebtoken.Jws; +import io.jsonwebtoken.JwtException; +import io.jsonwebtoken.Jwts; +import io.jsonwebtoken.security.Keys; +import java.nio.charset.StandardCharsets; +import java.util.Date; +import java.util.function.Function; +import javax.crypto.SecretKey; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +@Component +public class JwtUtil { + private static final String EXPIRED_OR_INVALID_TOKEN = "Expired or invalid JWT token"; + + private final SecretKey secret; + @Value("${jwt.expiration}") + private long expiration; + + public JwtUtil(@Value("${jwt.secret}") String secretString) { + this.secret = Keys.hmacShaKeyFor(secretString.getBytes(StandardCharsets.UTF_8)); + } + + public String generateToken(String email) { + return Jwts.builder() + .subject(email) + .issuedAt(new Date(System.currentTimeMillis())) + .expiration(new Date(System.currentTimeMillis() + expiration)) + .signWith(secret) + .compact(); + } + + public boolean isValidToken(String token) { + try { + Jws claimsJws = Jwts.parser() + .verifyWith(secret) + .build() + .parseSignedClaims(token); + + return !claimsJws.getPayload().getExpiration().before(new Date()); + } catch (JwtException | IllegalArgumentException e) { + throw new JwtException(EXPIRED_OR_INVALID_TOKEN); + } + } + + public String getUsername(String token) { + return getClaimsFromToken(token, Claims::getSubject); + } + + private T getClaimsFromToken(String token, Function claimsResolver) { + final Claims claims = Jwts.parser() + .verifyWith(secret) + .build() + .parseSignedClaims(token) + .getPayload(); + return claimsResolver.apply(claims); + } +} diff --git a/src/main/java/com/example/statisticsapi/service/file/FileReaderService.java b/src/main/java/com/example/statisticsapi/service/file/FileReaderService.java new file mode 100644 index 0000000..bbe6c1b --- /dev/null +++ b/src/main/java/com/example/statisticsapi/service/file/FileReaderService.java @@ -0,0 +1,7 @@ +package com.example.statisticsapi.service.file; + +import java.util.List; + +public interface FileReaderService { + List readFromFile(String filePath); +} diff --git a/src/main/java/com/example/statisticsapi/service/file/impl/JsonFileReaderServiceImpl.java b/src/main/java/com/example/statisticsapi/service/file/impl/JsonFileReaderServiceImpl.java new file mode 100644 index 0000000..56646bb --- /dev/null +++ b/src/main/java/com/example/statisticsapi/service/file/impl/JsonFileReaderServiceImpl.java @@ -0,0 +1,34 @@ +package com.example.statisticsapi.service.file.impl; + +import com.example.statisticsapi.service.file.FileReaderService; +import java.io.BufferedReader; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.util.Collections; +import java.util.List; +import org.springframework.stereotype.Service; + +@Service +public class JsonFileReaderServiceImpl implements FileReaderService { + + public static final String READ_ERROR_MESSAGE = "Can't read from file: %s"; + public static final String EMPTY_STRING = ""; + public static final String SPACE_REGEX = "\\s+"; + + @Override + public List readFromFile(String filePath) { + try (BufferedReader bufferedReader = Files.newBufferedReader(Paths.get(filePath))) { + StringBuilder jsonContent = new StringBuilder(); + String line; + + while ((line = bufferedReader.readLine()) != null) { + jsonContent.append(line.trim().replaceAll(SPACE_REGEX, EMPTY_STRING)); + } + + return Collections.singletonList(jsonContent.toString()); + } catch (IOException e) { + throw new RuntimeException(READ_ERROR_MESSAGE.formatted(filePath), e); + } + } +} diff --git a/src/main/java/com/example/statisticsapi/service/initializer/DatabaseInitializer.java b/src/main/java/com/example/statisticsapi/service/initializer/DatabaseInitializer.java new file mode 100644 index 0000000..3977aa1 --- /dev/null +++ b/src/main/java/com/example/statisticsapi/service/initializer/DatabaseInitializer.java @@ -0,0 +1,87 @@ +package com.example.statisticsapi.service.initializer; + +import com.example.statisticsapi.document.Report; +import com.example.statisticsapi.document.SalesAndTrafficByAsin; +import com.example.statisticsapi.document.SalesAndTrafficByDate; +import com.example.statisticsapi.dto.external.ReportSpecificationDto; +import com.example.statisticsapi.repository.ReportRepository; +import com.example.statisticsapi.repository.SalesAndTrafficByAsinRepository; +import com.example.statisticsapi.repository.SalesAndTrafficByDateRepository; +import com.example.statisticsapi.service.file.FileReaderService; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import jakarta.annotation.PostConstruct; +import java.util.List; +import java.util.Optional; +import java.util.concurrent.TimeUnit; +import lombok.RequiredArgsConstructor; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +@Component +@RequiredArgsConstructor +public class DatabaseInitializer { + public static final String FILE_PATH = "src/main/resources/static/test_report.json"; + public static final int FIRST_INDEX = 0; + public static final String ERROR_MESSAGE = "Can't process JSON."; + public static final int UPDATE_RATE_MINUTES = 15; + + private final FileReaderService fileReaderService; + private final ObjectMapper objectMapper; + private final ReportRepository reportRepository; + private final SalesAndTrafficByDateRepository salesAndTrafficByDateRepository; + private final SalesAndTrafficByAsinRepository salesAndTrafficByAsinRepository; + + @PostConstruct + private void init() { + Report entity = getReport(); + + salesAndTrafficByDateRepository.saveAll(entity.getSalesAndTrafficByDate()); + salesAndTrafficByAsinRepository.saveAll(entity.getSalesAndTrafficByAsin()); + reportRepository.save(entity); + } + + @Scheduled(fixedRate = UPDATE_RATE_MINUTES, timeUnit = TimeUnit.MINUTES) + public void update() { + Report entity = getReport(); + + ReportSpecificationDto reportSpecification = entity.getReportSpecification(); + Optional existingReport = reportRepository + .findByReportSpecification(reportSpecification); + + existingReport.ifPresent(report -> entity.setId(report.getId())); + + for (SalesAndTrafficByDate salesAndTrafficByDate : entity.getSalesAndTrafficByDate()) { + Optional optionalSalesAndTrafficByDate + = salesAndTrafficByDateRepository.findByDate(salesAndTrafficByDate.getDate()); + + optionalSalesAndTrafficByDate + .ifPresent(data -> salesAndTrafficByDate.setId(data.getId())); + + salesAndTrafficByDateRepository.save(salesAndTrafficByDate); + } + + for (SalesAndTrafficByAsin salesAndTrafficByAsin : entity.getSalesAndTrafficByAsin()) { + Optional existingSalesData = salesAndTrafficByAsinRepository + .findByParentAsin(salesAndTrafficByAsin.getParentAsin()); + + existingSalesData + .ifPresent(data -> salesAndTrafficByAsin.setId(data.getId())); + + salesAndTrafficByAsinRepository.save(salesAndTrafficByAsin); + } + + reportRepository.save(entity); + } + + private Report getReport() { + List strings = fileReaderService.readFromFile(FILE_PATH); + Report entity; + try { + entity = objectMapper.readValue(strings.get(FIRST_INDEX), Report.class); + } catch (JsonProcessingException e) { + throw new RuntimeException(ERROR_MESSAGE, e); + } + return entity; + } +} diff --git a/src/main/java/com/example/statisticsapi/service/report/ReportService.java b/src/main/java/com/example/statisticsapi/service/report/ReportService.java new file mode 100644 index 0000000..e6291fb --- /dev/null +++ b/src/main/java/com/example/statisticsapi/service/report/ReportService.java @@ -0,0 +1,24 @@ +package com.example.statisticsapi.service.report; + +import com.example.statisticsapi.dto.external.SalesAndTrafficByAsinDto; +import com.example.statisticsapi.dto.external.SalesAndTrafficByDateDto; +import java.time.LocalDate; +import java.util.List; +import org.springframework.data.domain.Pageable; + +public interface ReportService { + List findAllSalesAndTrafficByDate(Pageable pageable); + + List findAllSalesAndTrafficByAsin(Pageable pageable); + + List findAllSalesAndTrafficBySelectedDates( + Pageable pageable, + LocalDate firstDate, + LocalDate secondDate + ); + + List findAllSalesAndTrafficBySelectedAsins( + Pageable pageable, + List asinList + ); +} diff --git a/src/main/java/com/example/statisticsapi/service/report/impl/ReportServiceImpl.java b/src/main/java/com/example/statisticsapi/service/report/impl/ReportServiceImpl.java new file mode 100644 index 0000000..14cb59d --- /dev/null +++ b/src/main/java/com/example/statisticsapi/service/report/impl/ReportServiceImpl.java @@ -0,0 +1,95 @@ +package com.example.statisticsapi.service.report.impl; + +import com.example.statisticsapi.dto.external.SalesAndTrafficByAsinDto; +import com.example.statisticsapi.dto.external.SalesAndTrafficByDateDto; +import com.example.statisticsapi.mapper.SalesAndTrafficByAsinMapper; +import com.example.statisticsapi.mapper.SalesAndTrafficByDateMapper; +import com.example.statisticsapi.repository.SalesAndTrafficByAsinRepository; +import com.example.statisticsapi.repository.SalesAndTrafficByDateRepository; +import com.example.statisticsapi.service.report.ReportService; +import java.time.LocalDate; +import java.util.List; +import java.util.concurrent.TimeUnit; +import java.util.function.Predicate; +import java.util.stream.Collectors; +import lombok.RequiredArgsConstructor; +import org.springframework.cache.annotation.CacheEvict; +import org.springframework.cache.annotation.Cacheable; +import org.springframework.data.domain.Pageable; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Service; + +@Service +@RequiredArgsConstructor +public class ReportServiceImpl implements ReportService { + public static final String REPORT_CACHE_NAME = "reportCache"; + public static final int CACHE_CLEAR_RATE_MINUTES = 5; + private final SalesAndTrafficByDateRepository salesAndTrafficByDateRepository; + private final SalesAndTrafficByAsinRepository salesAndTrafficByAsinRepository; + private final SalesAndTrafficByDateMapper salesAndTrafficByDateMapper; + private final SalesAndTrafficByAsinMapper salesAndTrafficByAsinMapper; + + @Cacheable(value = REPORT_CACHE_NAME) + @Override + public List findAllSalesAndTrafficByDate(Pageable pageable) { + return salesAndTrafficByDateRepository.findAll(pageable).stream() + .map(salesAndTrafficByDateMapper::toDto) + .collect(Collectors.toList()); + } + + @Cacheable(value = REPORT_CACHE_NAME) + @Override + public List findAllSalesAndTrafficByAsin(Pageable pageable) { + return salesAndTrafficByAsinRepository.findAll(pageable).stream() + .map(salesAndTrafficByAsinMapper::toDto) + .collect(Collectors.toList()); + } + + @Cacheable(value = REPORT_CACHE_NAME) + @Override + public List findAllSalesAndTrafficBySelectedDates( + Pageable pageable, + LocalDate firstDate, + LocalDate secondDate + ) { + + Predicate salesAndTrafficByDatePredicate; + if (firstDate.isAfter(secondDate)) { + salesAndTrafficByDatePredicate = salesAndTrafficByDateDto -> { + LocalDate date = salesAndTrafficByDateDto.getDate(); + return (date.isEqual(firstDate) || date.isBefore(firstDate)) + & (date.isEqual(secondDate) || date.isAfter(secondDate)); + }; + } else { + salesAndTrafficByDatePredicate = salesAndTrafficByDateDto -> { + LocalDate date = salesAndTrafficByDateDto.getDate(); + return (date.isEqual(firstDate) || date.isAfter(firstDate)) + & (date.isEqual(secondDate) || date.isBefore(secondDate)); + }; + } + + return salesAndTrafficByDateRepository.findAll(pageable).stream() + .map(salesAndTrafficByDateMapper::toDto) + .filter(salesAndTrafficByDatePredicate) + .collect(Collectors.toList()); + } + + @Cacheable(value = REPORT_CACHE_NAME) + @Override + public List findAllSalesAndTrafficBySelectedAsins( + Pageable pageable, + List asinList + ) { + return salesAndTrafficByAsinRepository.findAll(pageable).stream() + .map(salesAndTrafficByAsinMapper::toDto) + .filter(salesAndTrafficByDateDto -> asinList.contains( + salesAndTrafficByDateDto.getParentAsin() + )) + .collect(Collectors.toList()); + } + + @CacheEvict(value = REPORT_CACHE_NAME, allEntries = true) + @Scheduled(fixedRate = CACHE_CLEAR_RATE_MINUTES, timeUnit = TimeUnit.MINUTES) + public void clearCache() { + } +} diff --git a/src/main/java/com/example/statisticsapi/service/user/UserService.java b/src/main/java/com/example/statisticsapi/service/user/UserService.java new file mode 100644 index 0000000..dd5962b --- /dev/null +++ b/src/main/java/com/example/statisticsapi/service/user/UserService.java @@ -0,0 +1,8 @@ +package com.example.statisticsapi.service.user; + +import com.example.statisticsapi.dto.internal.UserRegistrationRequestDto; +import com.example.statisticsapi.dto.internal.UserResponseDto; + +public interface UserService { + UserResponseDto register(UserRegistrationRequestDto requestDto); +} diff --git a/src/main/java/com/example/statisticsapi/service/user/impl/UserServiceImpl.java b/src/main/java/com/example/statisticsapi/service/user/impl/UserServiceImpl.java new file mode 100644 index 0000000..c411a68 --- /dev/null +++ b/src/main/java/com/example/statisticsapi/service/user/impl/UserServiceImpl.java @@ -0,0 +1,39 @@ +package com.example.statisticsapi.service.user.impl; + +import com.example.statisticsapi.document.Role; +import com.example.statisticsapi.document.User; +import com.example.statisticsapi.dto.internal.UserRegistrationRequestDto; +import com.example.statisticsapi.dto.internal.UserResponseDto; +import com.example.statisticsapi.exception.RegistrationException; +import com.example.statisticsapi.mapper.UserMapper; +import com.example.statisticsapi.repository.RoleRepository; +import com.example.statisticsapi.repository.UserRepository; +import com.example.statisticsapi.service.user.UserService; +import java.util.Set; +import lombok.RequiredArgsConstructor; +import org.springframework.security.crypto.password.PasswordEncoder; +import org.springframework.stereotype.Service; + +@Service +@RequiredArgsConstructor +public class UserServiceImpl implements UserService { + private static final String REGISTER_ERROR_MESSAGE = "Can't register a new user with email: "; + + private final UserRepository userRepository; + private final RoleRepository roleRepository; + private final UserMapper userMapper; + private final PasswordEncoder passwordEncoder; + + @Override + public UserResponseDto register(UserRegistrationRequestDto requestDto) { + if (userRepository.findByEmail(requestDto.getEmail()).isPresent()) { + throw new RegistrationException(REGISTER_ERROR_MESSAGE + requestDto.getEmail() + ); + } + requestDto.setPassword(passwordEncoder.encode(requestDto.getPassword())); + Role userRole = roleRepository.findByRoleName(Role.RoleName.USER); + User user = userMapper.toModel(requestDto); + user.setRoles(Set.of(userRole)); + return userMapper.toDto(userRepository.save(user)); + } +} diff --git a/src/main/java/com/example/statisticsapi/validation/FieldMatch.java b/src/main/java/com/example/statisticsapi/validation/FieldMatch.java new file mode 100644 index 0000000..65bf4fc --- /dev/null +++ b/src/main/java/com/example/statisticsapi/validation/FieldMatch.java @@ -0,0 +1,17 @@ +package com.example.statisticsapi.validation; + +import jakarta.validation.Constraint; +import jakarta.validation.Payload; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Constraint(validatedBy = RepeatedPasswordValidator.class) +@Target({ElementType.TYPE, ElementType.ANNOTATION_TYPE}) +@Retention(RetentionPolicy.RUNTIME) +public @interface FieldMatch { + String message() default "Passwords don't match"; + Class[] groups() default {}; + Class[] payload() default {}; +} diff --git a/src/main/java/com/example/statisticsapi/validation/RepeatedPasswordValidator.java b/src/main/java/com/example/statisticsapi/validation/RepeatedPasswordValidator.java new file mode 100644 index 0000000..2a9d0f5 --- /dev/null +++ b/src/main/java/com/example/statisticsapi/validation/RepeatedPasswordValidator.java @@ -0,0 +1,14 @@ +package com.example.statisticsapi.validation; + +import com.example.statisticsapi.dto.internal.UserRegistrationRequestDto; +import jakarta.validation.ConstraintValidator; +import jakarta.validation.ConstraintValidatorContext; + +public class RepeatedPasswordValidator implements ConstraintValidator { + @Override + public boolean isValid(UserRegistrationRequestDto user, + ConstraintValidatorContext constraintValidatorContext) { + return user.getPassword() != null && user.getPassword().equals(user.getRepeatPassword()); + } +} diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 849ca9e..a00be0f 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1,7 +1,14 @@ -spring.data.mongodb.authentication-database=admin -spring.data.mongodb.username=rootuser -spring.data.mongodb.password=rootpass -spring.data.mongodb.database=statistics +spring.data.mongodb.authentication-database=${AUTH_DB} +spring.data.mongodb.username=${USER} +spring.data.mongodb.password=${PASSWORD} +spring.data.mongodb.database=${DB} spring.data.mongodb.host=localhost spring.data.mongodb.port=27017 spring.data.mongodb.auto-index-creation=true +logging.level.org.springframework.data.mongodb.core.MongoTemplate=DEBUG + +mongock.change-logs-scan-package=com.example.statisticsapi.config + +jwt.expiration=300000 +jwt.secret=${JWT_SECRET} +spring.security.public.endpoints=/v3/api-docs/**,/swagger-ui/**,/auth/**,/error diff --git a/src/main/resources/static/test_report.json b/src/main/resources/static/test_report.json new file mode 100644 index 0000000..cf635fb --- /dev/null +++ b/src/main/resources/static/test_report.json @@ -0,0 +1,7380 @@ +{ + "reportSpecification": { + "reportType": "GET_SALES_AND_TRAFFIC_REPORT", + "reportOptions": { + "dateGranularity": "DAY", + "asinGranularity": "PARENT" + }, + "dataStartTime": "2024-02-14", + "dataEndTime": "2024-02-26", + "marketplaceIds": [ + "ATVPDKIKX0DER" + ] + }, + "salesAndTrafficByDate": [ + { + "date": "2024-02-14", + "salesByDate": { + "orderedProductSales": { + "amount": 10614.69, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 204.48, + "currencyCode": "USD" + }, + "unitsOrdered": 526, + "unitsOrderedB2B": 9, + "totalOrderItems": 496, + "totalOrderItemsB2B": 8, + "averageSalesPerOrderItem": { + "amount": 21.4, + "currencyCode": "USD" + }, + "averageSalesPerOrderItemB2B": { + "amount": 25.56, + "currencyCode": "USD" + }, + "averageUnitsPerOrderItem": 1.06, + "averageUnitsPerOrderItemB2B": 1.12, + "averageSellingPrice": { + "amount": 20.18, + "currencyCode": "USD" + }, + "averageSellingPriceB2B": { + "amount": 22.72, + "currencyCode": "USD" + }, + "unitsRefunded": 14, + "refundRate": 2.66, + "claimsGranted": 0, + "claimsAmount": { + "amount": 0, + "currencyCode": "USD" + }, + "shippedProductSales": { + "amount": 11093.69, + "currencyCode": "USD" + }, + "unitsShipped": 538, + "ordersShipped": 537 + }, + "trafficByDate": { + "browserPageViews": 1721, + "browserPageViewsB2B": 60, + "mobileAppPageViews": 3889, + "mobileAppPageViewsB2B": 79, + "pageViews": 5610, + "pageViewsB2B": 139, + "browserSessions": 1178, + "browserSessionsB2B": 44, + "mobileAppSessions": 1664, + "mobileAppSessionsB2B": 31, + "sessions": 2842, + "sessionsB2B": 75, + "buyBoxPercentage": 98.12, + "buyBoxPercentageB2B": 93.33, + "orderItemSessionPercentage": 17.45, + "orderItemSessionPercentageB2B": 10.67, + "unitSessionPercentage": 18.51, + "unitSessionPercentageB2B": 12, + "averageOfferCount": 232, + "averageParentItems": 128, + "feedbackReceived": 1, + "negativeFeedbackReceived": 0, + "receivedNegativeFeedbackRate": 0 + } + }, + { + "date": "2024-02-15", + "salesByDate": { + "orderedProductSales": { + "amount": 11519.48, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 166.2, + "currencyCode": "USD" + }, + "unitsOrdered": 544, + "unitsOrderedB2B": 8, + "totalOrderItems": 516, + "totalOrderItemsB2B": 8, + "averageSalesPerOrderItem": { + "amount": 22.32, + "currencyCode": "USD" + }, + "averageSalesPerOrderItemB2B": { + "amount": 20.78, + "currencyCode": "USD" + }, + "averageUnitsPerOrderItem": 1.05, + "averageUnitsPerOrderItemB2B": 1, + "averageSellingPrice": { + "amount": 21.18, + "currencyCode": "USD" + }, + "averageSellingPriceB2B": { + "amount": 20.78, + "currencyCode": "USD" + }, + "unitsRefunded": 13, + "refundRate": 2.39, + "claimsGranted": 0, + "claimsAmount": { + "amount": 0, + "currencyCode": "USD" + }, + "shippedProductSales": { + "amount": 11892.89, + "currencyCode": "USD" + }, + "unitsShipped": 576, + "ordersShipped": 574 + }, + "trafficByDate": { + "browserPageViews": 1825, + "browserPageViewsB2B": 61, + "mobileAppPageViews": 4558, + "mobileAppPageViewsB2B": 32, + "pageViews": 6383, + "pageViewsB2B": 93, + "browserSessions": 1226, + "browserSessionsB2B": 38, + "mobileAppSessions": 1858, + "mobileAppSessionsB2B": 18, + "sessions": 3084, + "sessionsB2B": 56, + "buyBoxPercentage": 98.97, + "buyBoxPercentageB2B": 96.49, + "orderItemSessionPercentage": 16.73, + "orderItemSessionPercentageB2B": 14.29, + "unitSessionPercentage": 17.64, + "unitSessionPercentageB2B": 14.29, + "averageOfferCount": 232, + "averageParentItems": 128, + "feedbackReceived": 3, + "negativeFeedbackReceived": 0, + "receivedNegativeFeedbackRate": 0 + } + }, + { + "date": "2024-02-16", + "salesByDate": { + "orderedProductSales": { + "amount": 11028.57, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 218.7, + "currencyCode": "USD" + }, + "unitsOrdered": 517, + "unitsOrderedB2B": 11, + "totalOrderItems": 489, + "totalOrderItemsB2B": 9, + "averageSalesPerOrderItem": { + "amount": 22.55, + "currencyCode": "USD" + }, + "averageSalesPerOrderItemB2B": { + "amount": 24.3, + "currencyCode": "USD" + }, + "averageUnitsPerOrderItem": 1.06, + "averageUnitsPerOrderItemB2B": 1.22, + "averageSellingPrice": { + "amount": 21.33, + "currencyCode": "USD" + }, + "averageSellingPriceB2B": { + "amount": 19.88, + "currencyCode": "USD" + }, + "unitsRefunded": 13, + "refundRate": 2.51, + "claimsGranted": 0, + "claimsAmount": { + "amount": 0, + "currencyCode": "USD" + }, + "shippedProductSales": { + "amount": 9798.11, + "currencyCode": "USD" + }, + "unitsShipped": 465, + "ordersShipped": 464 + }, + "trafficByDate": { + "browserPageViews": 1723, + "browserPageViewsB2B": 54, + "mobileAppPageViews": 4575, + "mobileAppPageViewsB2B": 56, + "pageViews": 6298, + "pageViewsB2B": 110, + "browserSessions": 1050, + "browserSessionsB2B": 28, + "mobileAppSessions": 1854, + "mobileAppSessionsB2B": 20, + "sessions": 2904, + "sessionsB2B": 48, + "buyBoxPercentage": 99.19, + "buyBoxPercentageB2B": 100, + "orderItemSessionPercentage": 16.84, + "orderItemSessionPercentageB2B": 18.75, + "unitSessionPercentage": 17.8, + "unitSessionPercentageB2B": 22.92, + "averageOfferCount": 230, + "averageParentItems": 128, + "feedbackReceived": 1, + "negativeFeedbackReceived": 0, + "receivedNegativeFeedbackRate": 0 + } + }, + { + "date": "2024-02-17", + "salesByDate": { + "orderedProductSales": { + "amount": 11910.43, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 240.77, + "currencyCode": "USD" + }, + "unitsOrdered": 557, + "unitsOrderedB2B": 10, + "totalOrderItems": 543, + "totalOrderItemsB2B": 10, + "averageSalesPerOrderItem": { + "amount": 21.93, + "currencyCode": "USD" + }, + "averageSalesPerOrderItemB2B": { + "amount": 24.08, + "currencyCode": "USD" + }, + "averageUnitsPerOrderItem": 1.03, + "averageUnitsPerOrderItemB2B": 1, + "averageSellingPrice": { + "amount": 21.38, + "currencyCode": "USD" + }, + "averageSellingPriceB2B": { + "amount": 24.08, + "currencyCode": "USD" + }, + "unitsRefunded": 16, + "refundRate": 2.87, + "claimsGranted": 0, + "claimsAmount": { + "amount": 0, + "currencyCode": "USD" + }, + "shippedProductSales": { + "amount": 9631.77, + "currencyCode": "USD" + }, + "unitsShipped": 450, + "ordersShipped": 448 + }, + "trafficByDate": { + "browserPageViews": 2707, + "browserPageViewsB2B": 45, + "mobileAppPageViews": 7031, + "mobileAppPageViewsB2B": 398, + "pageViews": 9738, + "pageViewsB2B": 443, + "browserSessions": 1237, + "browserSessionsB2B": 34, + "mobileAppSessions": 2336, + "mobileAppSessionsB2B": 37, + "sessions": 3573, + "sessionsB2B": 71, + "buyBoxPercentage": 99.39, + "buyBoxPercentageB2B": 100, + "orderItemSessionPercentage": 15.2, + "orderItemSessionPercentageB2B": 14.08, + "unitSessionPercentage": 15.59, + "unitSessionPercentageB2B": 14.08, + "averageOfferCount": 229, + "averageParentItems": 127, + "feedbackReceived": 1, + "negativeFeedbackReceived": 0, + "receivedNegativeFeedbackRate": 0 + } + }, + { + "date": "2024-02-18", + "salesByDate": { + "orderedProductSales": { + "amount": 14427.6, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 110.15, + "currencyCode": "USD" + }, + "unitsOrdered": 688, + "unitsOrderedB2B": 5, + "totalOrderItems": 644, + "totalOrderItemsB2B": 5, + "averageSalesPerOrderItem": { + "amount": 22.4, + "currencyCode": "USD" + }, + "averageSalesPerOrderItemB2B": { + "amount": 22.03, + "currencyCode": "USD" + }, + "averageUnitsPerOrderItem": 1.07, + "averageUnitsPerOrderItemB2B": 1, + "averageSellingPrice": { + "amount": 20.97, + "currencyCode": "USD" + }, + "averageSellingPriceB2B": { + "amount": 22.03, + "currencyCode": "USD" + }, + "unitsRefunded": 6, + "refundRate": 0.87, + "claimsGranted": 0, + "claimsAmount": { + "amount": 0, + "currencyCode": "USD" + }, + "shippedProductSales": { + "amount": 11177.79, + "currencyCode": "USD" + }, + "unitsShipped": 527, + "ordersShipped": 526 + }, + "trafficByDate": { + "browserPageViews": 2259, + "browserPageViewsB2B": 64, + "mobileAppPageViews": 6225, + "mobileAppPageViewsB2B": 59, + "pageViews": 8484, + "pageViewsB2B": 123, + "browserSessions": 1497, + "browserSessionsB2B": 36, + "mobileAppSessions": 2625, + "mobileAppSessionsB2B": 31, + "sessions": 4122, + "sessionsB2B": 67, + "buyBoxPercentage": 99.27, + "buyBoxPercentageB2B": 100, + "orderItemSessionPercentage": 15.62, + "orderItemSessionPercentageB2B": 7.46, + "unitSessionPercentage": 16.69, + "unitSessionPercentageB2B": 7.46, + "averageOfferCount": 229, + "averageParentItems": 126, + "feedbackReceived": 0, + "negativeFeedbackReceived": 0, + "receivedNegativeFeedbackRate": 0 + } + }, + { + "date": "2024-02-19", + "salesByDate": { + "orderedProductSales": { + "amount": 12651.3, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 543.03, + "currencyCode": "USD" + }, + "unitsOrdered": 603, + "unitsOrderedB2B": 25, + "totalOrderItems": 570, + "totalOrderItemsB2B": 13, + "averageSalesPerOrderItem": { + "amount": 22.2, + "currencyCode": "USD" + }, + "averageSalesPerOrderItemB2B": { + "amount": 41.77, + "currencyCode": "USD" + }, + "averageUnitsPerOrderItem": 1.06, + "averageUnitsPerOrderItemB2B": 1.92, + "averageSellingPrice": { + "amount": 20.98, + "currencyCode": "USD" + }, + "averageSellingPriceB2B": { + "amount": 21.72, + "currencyCode": "USD" + }, + "unitsRefunded": 15, + "refundRate": 2.49, + "claimsGranted": 0, + "claimsAmount": { + "amount": 0, + "currencyCode": "USD" + }, + "shippedProductSales": { + "amount": 13521.58, + "currencyCode": "USD" + }, + "unitsShipped": 630, + "ordersShipped": 628 + }, + "trafficByDate": { + "browserPageViews": 2774, + "browserPageViewsB2B": 73, + "mobileAppPageViews": 4967, + "mobileAppPageViewsB2B": 140, + "pageViews": 7741, + "pageViewsB2B": 213, + "browserSessions": 1405, + "browserSessionsB2B": 42, + "mobileAppSessions": 2212, + "mobileAppSessionsB2B": 47, + "sessions": 3617, + "sessionsB2B": 89, + "buyBoxPercentage": 99.41, + "buyBoxPercentageB2B": 96.33, + "orderItemSessionPercentage": 15.76, + "orderItemSessionPercentageB2B": 14.61, + "unitSessionPercentage": 16.67, + "unitSessionPercentageB2B": 28.09, + "averageOfferCount": 231, + "averageParentItems": 127, + "feedbackReceived": 1, + "negativeFeedbackReceived": 0, + "receivedNegativeFeedbackRate": 0 + } + }, + { + "date": "2024-02-20", + "salesByDate": { + "orderedProductSales": { + "amount": 10485.75, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 234.2, + "currencyCode": "USD" + }, + "unitsOrdered": 501, + "unitsOrderedB2B": 12, + "totalOrderItems": 482, + "totalOrderItemsB2B": 10, + "averageSalesPerOrderItem": { + "amount": 21.75, + "currencyCode": "USD" + }, + "averageSalesPerOrderItemB2B": { + "amount": 23.42, + "currencyCode": "USD" + }, + "averageUnitsPerOrderItem": 1.04, + "averageUnitsPerOrderItemB2B": 1.2, + "averageSellingPrice": { + "amount": 20.93, + "currencyCode": "USD" + }, + "averageSellingPriceB2B": { + "amount": 19.52, + "currencyCode": "USD" + }, + "unitsRefunded": 13, + "refundRate": 2.59, + "claimsGranted": 0, + "claimsAmount": { + "amount": 0, + "currencyCode": "USD" + }, + "shippedProductSales": { + "amount": 12366.12, + "currencyCode": "USD" + }, + "unitsShipped": 595, + "ordersShipped": 592 + }, + "trafficByDate": { + "browserPageViews": 2303, + "browserPageViewsB2B": 62, + "mobileAppPageViews": 5595, + "mobileAppPageViewsB2B": 28, + "pageViews": 7898, + "pageViewsB2B": 90, + "browserSessions": 1325, + "browserSessionsB2B": 33, + "mobileAppSessions": 1982, + "mobileAppSessionsB2B": 15, + "sessions": 3307, + "sessionsB2B": 48, + "buyBoxPercentage": 98.62, + "buyBoxPercentageB2B": 94.64, + "orderItemSessionPercentage": 14.58, + "orderItemSessionPercentageB2B": 20.83, + "unitSessionPercentage": 15.15, + "unitSessionPercentageB2B": 25, + "averageOfferCount": 232, + "averageParentItems": 128, + "feedbackReceived": 2, + "negativeFeedbackReceived": 0, + "receivedNegativeFeedbackRate": 0 + } + }, + { + "date": "2024-02-21", + "salesByDate": { + "orderedProductSales": { + "amount": 11634.7, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 180.2, + "currencyCode": "USD" + }, + "unitsOrdered": 551, + "unitsOrderedB2B": 8, + "totalOrderItems": 538, + "totalOrderItemsB2B": 8, + "averageSalesPerOrderItem": { + "amount": 21.63, + "currencyCode": "USD" + }, + "averageSalesPerOrderItemB2B": { + "amount": 22.52, + "currencyCode": "USD" + }, + "averageUnitsPerOrderItem": 1.02, + "averageUnitsPerOrderItemB2B": 1, + "averageSellingPrice": { + "amount": 21.12, + "currencyCode": "USD" + }, + "averageSellingPriceB2B": { + "amount": 22.52, + "currencyCode": "USD" + }, + "unitsRefunded": 13, + "refundRate": 2.36, + "claimsGranted": 0, + "claimsAmount": { + "amount": 0, + "currencyCode": "USD" + }, + "shippedProductSales": { + "amount": 11564.61, + "currencyCode": "USD" + }, + "unitsShipped": 562, + "ordersShipped": 561 + }, + "trafficByDate": { + "browserPageViews": 2348, + "browserPageViewsB2B": 47, + "mobileAppPageViews": 4122, + "mobileAppPageViewsB2B": 82, + "pageViews": 6470, + "pageViewsB2B": 129, + "browserSessions": 1288, + "browserSessionsB2B": 34, + "mobileAppSessions": 1940, + "mobileAppSessionsB2B": 31, + "sessions": 3228, + "sessionsB2B": 65, + "buyBoxPercentage": 98.75, + "buyBoxPercentageB2B": 89.29, + "orderItemSessionPercentage": 16.67, + "orderItemSessionPercentageB2B": 12.31, + "unitSessionPercentage": 17.07, + "unitSessionPercentageB2B": 12.31, + "averageOfferCount": 230, + "averageParentItems": 127, + "feedbackReceived": 1, + "negativeFeedbackReceived": 0, + "receivedNegativeFeedbackRate": 0 + } + }, + { + "date": "2024-02-22", + "salesByDate": { + "orderedProductSales": { + "amount": 11719.22, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 173.38, + "currencyCode": "USD" + }, + "unitsOrdered": 549, + "unitsOrderedB2B": 8, + "totalOrderItems": 535, + "totalOrderItemsB2B": 8, + "averageSalesPerOrderItem": { + "amount": 21.91, + "currencyCode": "USD" + }, + "averageSalesPerOrderItemB2B": { + "amount": 21.67, + "currencyCode": "USD" + }, + "averageUnitsPerOrderItem": 1.03, + "averageUnitsPerOrderItemB2B": 1, + "averageSellingPrice": { + "amount": 21.35, + "currencyCode": "USD" + }, + "averageSellingPriceB2B": { + "amount": 21.67, + "currencyCode": "USD" + }, + "unitsRefunded": 12, + "refundRate": 2.19, + "claimsGranted": 0, + "claimsAmount": { + "amount": 0, + "currencyCode": "USD" + }, + "shippedProductSales": { + "amount": 10704.55, + "currencyCode": "USD" + }, + "unitsShipped": 507, + "ordersShipped": 507 + }, + "trafficByDate": { + "browserPageViews": 1995, + "browserPageViewsB2B": 68, + "mobileAppPageViews": 3962, + "mobileAppPageViewsB2B": 47, + "pageViews": 5957, + "pageViewsB2B": 115, + "browserSessions": 1205, + "browserSessionsB2B": 47, + "mobileAppSessions": 1884, + "mobileAppSessionsB2B": 23, + "sessions": 3089, + "sessionsB2B": 70, + "buyBoxPercentage": 98.81, + "buyBoxPercentageB2B": 100, + "orderItemSessionPercentage": 17.32, + "orderItemSessionPercentageB2B": 11.43, + "unitSessionPercentage": 17.77, + "unitSessionPercentageB2B": 11.43, + "averageOfferCount": 230, + "averageParentItems": 127, + "feedbackReceived": 0, + "negativeFeedbackReceived": 0, + "receivedNegativeFeedbackRate": 0 + } + }, + { + "date": "2024-02-23", + "salesByDate": { + "orderedProductSales": { + "amount": 9995.56, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 54.79, + "currencyCode": "USD" + }, + "unitsOrdered": 478, + "unitsOrderedB2B": 3, + "totalOrderItems": 466, + "totalOrderItemsB2B": 3, + "averageSalesPerOrderItem": { + "amount": 21.45, + "currencyCode": "USD" + }, + "averageSalesPerOrderItemB2B": { + "amount": 18.26, + "currencyCode": "USD" + }, + "averageUnitsPerOrderItem": 1.03, + "averageUnitsPerOrderItemB2B": 1, + "averageSellingPrice": { + "amount": 20.91, + "currencyCode": "USD" + }, + "averageSellingPriceB2B": { + "amount": 18.26, + "currencyCode": "USD" + }, + "unitsRefunded": 13, + "refundRate": 2.72, + "claimsGranted": 0, + "claimsAmount": { + "amount": 0, + "currencyCode": "USD" + }, + "shippedProductSales": { + "amount": 10477.08, + "currencyCode": "USD" + }, + "unitsShipped": 491, + "ordersShipped": 490 + }, + "trafficByDate": { + "browserPageViews": 1921, + "browserPageViewsB2B": 65, + "mobileAppPageViews": 3709, + "mobileAppPageViewsB2B": 52, + "pageViews": 5630, + "pageViewsB2B": 117, + "browserSessions": 1160, + "browserSessionsB2B": 37, + "mobileAppSessions": 1783, + "mobileAppSessionsB2B": 23, + "sessions": 2943, + "sessionsB2B": 60, + "buyBoxPercentage": 98.85, + "buyBoxPercentageB2B": 100, + "orderItemSessionPercentage": 15.83, + "orderItemSessionPercentageB2B": 5, + "unitSessionPercentage": 16.24, + "unitSessionPercentageB2B": 5, + "averageOfferCount": 238, + "averageParentItems": 135, + "feedbackReceived": 1, + "negativeFeedbackReceived": 0, + "receivedNegativeFeedbackRate": 0 + } + }, + { + "date": "2024-02-24", + "salesByDate": { + "orderedProductSales": { + "amount": 10844.66, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 198.87, + "currencyCode": "USD" + }, + "unitsOrdered": 531, + "unitsOrderedB2B": 9, + "totalOrderItems": 511, + "totalOrderItemsB2B": 9, + "averageSalesPerOrderItem": { + "amount": 21.22, + "currencyCode": "USD" + }, + "averageSalesPerOrderItemB2B": { + "amount": 22.1, + "currencyCode": "USD" + }, + "averageUnitsPerOrderItem": 1.04, + "averageUnitsPerOrderItemB2B": 1, + "averageSellingPrice": { + "amount": 20.42, + "currencyCode": "USD" + }, + "averageSellingPriceB2B": { + "amount": 22.1, + "currencyCode": "USD" + }, + "unitsRefunded": 10, + "refundRate": 1.88, + "claimsGranted": 0, + "claimsAmount": { + "amount": 0, + "currencyCode": "USD" + }, + "shippedProductSales": { + "amount": 7532.8, + "currencyCode": "USD" + }, + "unitsShipped": 364, + "ordersShipped": 364 + }, + "trafficByDate": { + "browserPageViews": 2124, + "browserPageViewsB2B": 67, + "mobileAppPageViews": 4332, + "mobileAppPageViewsB2B": 78, + "pageViews": 6456, + "pageViewsB2B": 145, + "browserSessions": 1330, + "browserSessionsB2B": 35, + "mobileAppSessions": 2051, + "mobileAppSessionsB2B": 37, + "sessions": 3381, + "sessionsB2B": 72, + "buyBoxPercentage": 98.76, + "buyBoxPercentageB2B": 95.06, + "orderItemSessionPercentage": 15.11, + "orderItemSessionPercentageB2B": 12.5, + "unitSessionPercentage": 15.71, + "unitSessionPercentageB2B": 12.5, + "averageOfferCount": 238, + "averageParentItems": 133, + "feedbackReceived": 0, + "negativeFeedbackReceived": 0, + "receivedNegativeFeedbackRate": 0 + } + }, + { + "date": "2024-02-25", + "salesByDate": { + "orderedProductSales": { + "amount": 13236.96, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 225.97, + "currencyCode": "USD" + }, + "unitsOrdered": 639, + "unitsOrderedB2B": 12, + "totalOrderItems": 616, + "totalOrderItemsB2B": 11, + "averageSalesPerOrderItem": { + "amount": 21.49, + "currencyCode": "USD" + }, + "averageSalesPerOrderItemB2B": { + "amount": 20.54, + "currencyCode": "USD" + }, + "averageUnitsPerOrderItem": 1.04, + "averageUnitsPerOrderItemB2B": 1.09, + "averageSellingPrice": { + "amount": 20.72, + "currencyCode": "USD" + }, + "averageSellingPriceB2B": { + "amount": 18.83, + "currencyCode": "USD" + }, + "unitsRefunded": 5, + "refundRate": 0.78, + "claimsGranted": 0, + "claimsAmount": { + "amount": 0, + "currencyCode": "USD" + }, + "shippedProductSales": { + "amount": 10936.66, + "currencyCode": "USD" + }, + "unitsShipped": 517, + "ordersShipped": 517 + }, + "trafficByDate": { + "browserPageViews": 2367, + "browserPageViewsB2B": 34, + "mobileAppPageViews": 5169, + "mobileAppPageViewsB2B": 59, + "pageViews": 7536, + "pageViewsB2B": 93, + "browserSessions": 1399, + "browserSessionsB2B": 26, + "mobileAppSessions": 2387, + "mobileAppSessionsB2B": 26, + "sessions": 3786, + "sessionsB2B": 52, + "buyBoxPercentage": 98.94, + "buyBoxPercentageB2B": 96.72, + "orderItemSessionPercentage": 16.27, + "orderItemSessionPercentageB2B": 21.15, + "unitSessionPercentage": 16.88, + "unitSessionPercentageB2B": 23.08, + "averageOfferCount": 266, + "averageParentItems": 163, + "feedbackReceived": 0, + "negativeFeedbackReceived": 0, + "receivedNegativeFeedbackRate": 0 + } + } + ], + "salesAndTrafficByAsin": [ + { + "parentAsin": "B07JWCZKSJ", + "salesByAsin": { + "unitsOrdered": 4, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 54.9, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 4, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 18, + "browserSessionsB2B": 0, + "mobileAppSessions": 15, + "mobileAppSessionsB2B": 0, + "sessions": 33, + "sessionsB2B": 0, + "browserSessionPercentage": 0.12, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0.06, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0.08, + "sessionPercentageB2B": 0, + "browserPageViews": 29, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 21, + "mobileAppPageViewsB2B": 0, + "pageViews": 50, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0.11, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0.04, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0.06, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 12.12, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B09ZDDDS1X", + "salesByAsin": { + "unitsOrdered": 1, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 14.97, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 1, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 13, + "browserSessionsB2B": 0, + "mobileAppSessions": 10, + "mobileAppSessionsB2B": 0, + "sessions": 23, + "sessionsB2B": 0, + "browserSessionPercentage": 0.08, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0.04, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0.06, + "sessionPercentageB2B": 0, + "browserPageViews": 16, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 10, + "mobileAppPageViewsB2B": 0, + "pageViews": 26, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0.06, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0.02, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0.03, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 92.31, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 4.35, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0B14B89VH", + "salesByAsin": { + "unitsOrdered": 4, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 53.88, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 3, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 5, + "browserSessionsB2B": 0, + "mobileAppSessions": 10, + "mobileAppSessionsB2B": 0, + "sessions": 15, + "sessionsB2B": 0, + "browserSessionPercentage": 0.03, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0.04, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0.04, + "sessionPercentageB2B": 0, + "browserPageViews": 9, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 14, + "mobileAppPageViewsB2B": 0, + "pageViews": 23, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0.03, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0.02, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0.03, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 26.67, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0B43N9JKF", + "salesByAsin": { + "unitsOrdered": 381, + "unitsOrderedB2B": 3, + "orderedProductSales": { + "amount": 5276.48, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 41.01, + "currencyCode": "USD" + }, + "totalOrderItems": 365, + "totalOrderItemsB2B": 3 + }, + "trafficByAsin": { + "browserSessions": 1023, + "browserSessionsB2B": 36, + "mobileAppSessions": 2370, + "mobileAppSessionsB2B": 22, + "sessions": 3393, + "sessionsB2B": 58, + "browserSessionPercentage": 6.69, + "browserSessionPercentageB2B": 8.29, + "mobileAppSessionPercentage": 9.64, + "mobileAppSessionPercentageB2B": 6.49, + "sessionPercentage": 8.51, + "sessionPercentageB2B": 7.5, + "browserPageViews": 1377, + "browserPageViewsB2B": 47, + "mobileAppPageViews": 4478, + "mobileAppPageViewsB2B": 37, + "pageViews": 5855, + "pageViewsB2B": 84, + "browserPageViewsPercentage": 5.28, + "browserPageViewsPercentageB2B": 6.71, + "mobileAppPageViewsPercentage": 7.7, + "mobileAppPageViewsPercentageB2B": 3.33, + "pageViewsPercentage": 6.95, + "pageViewsPercentageB2B": 4.64, + "buyBoxPercentage": 99.56, + "buyBoxPercentageB2B": 84.75, + "unitSessionPercentage": 11.23, + "unitSessionPercentageB2B": 5.17 + } + }, + { + "parentAsin": "B0B71WZ2MF", + "salesByAsin": { + "unitsOrdered": 79, + "unitsOrderedB2B": 1, + "orderedProductSales": { + "amount": 1730.1, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 21.9, + "currencyCode": "USD" + }, + "totalOrderItems": 76, + "totalOrderItemsB2B": 1 + }, + "trafficByAsin": { + "browserSessions": 187, + "browserSessionsB2B": 2, + "mobileAppSessions": 219, + "mobileAppSessionsB2B": 2, + "sessions": 406, + "sessionsB2B": 4, + "browserSessionPercentage": 1.22, + "browserSessionPercentageB2B": 0.46, + "mobileAppSessionPercentage": 0.89, + "mobileAppSessionPercentageB2B": 0.59, + "sessionPercentage": 1.02, + "sessionPercentageB2B": 0.52, + "browserPageViews": 331, + "browserPageViewsB2B": 7, + "mobileAppPageViews": 574, + "mobileAppPageViewsB2B": 7, + "pageViews": 905, + "pageViewsB2B": 14, + "browserPageViewsPercentage": 1.27, + "browserPageViewsPercentageB2B": 1, + "mobileAppPageViewsPercentage": 0.99, + "mobileAppPageViewsPercentageB2B": 0.63, + "pageViewsPercentage": 1.07, + "pageViewsPercentageB2B": 0.77, + "buyBoxPercentage": 98.67, + "buyBoxPercentageB2B": 100, + "unitSessionPercentage": 19.46, + "unitSessionPercentageB2B": 25 + } + }, + { + "parentAsin": "B0BHWD3DW6", + "salesByAsin": { + "unitsOrdered": 147, + "unitsOrderedB2B": 2, + "orderedProductSales": { + "amount": 2482.61, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 33.8, + "currencyCode": "USD" + }, + "totalOrderItems": 135, + "totalOrderItemsB2B": 2 + }, + "trafficByAsin": { + "browserSessions": 650, + "browserSessionsB2B": 14, + "mobileAppSessions": 515, + "mobileAppSessionsB2B": 8, + "sessions": 1165, + "sessionsB2B": 22, + "browserSessionPercentage": 4.25, + "browserSessionPercentageB2B": 3.23, + "mobileAppSessionPercentage": 2.1, + "mobileAppSessionPercentageB2B": 2.36, + "sessionPercentage": 2.92, + "sessionPercentageB2B": 2.85, + "browserPageViews": 977, + "browserPageViewsB2B": 20, + "mobileAppPageViews": 952, + "mobileAppPageViewsB2B": 12, + "pageViews": 1929, + "pageViewsB2B": 32, + "browserPageViewsPercentage": 3.75, + "browserPageViewsPercentageB2B": 2.86, + "mobileAppPageViewsPercentage": 1.64, + "mobileAppPageViewsPercentageB2B": 1.08, + "pageViewsPercentage": 2.29, + "pageViewsPercentageB2B": 1.77, + "buyBoxPercentage": 98.31, + "buyBoxPercentageB2B": 96.3, + "unitSessionPercentage": 12.62, + "unitSessionPercentageB2B": 9.09 + } + }, + { + "parentAsin": "B0BHWGQF3B", + "salesByAsin": { + "unitsOrdered": 147, + "unitsOrderedB2B": 4, + "orderedProductSales": { + "amount": 2481.77, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 67.6, + "currencyCode": "USD" + }, + "totalOrderItems": 138, + "totalOrderItemsB2B": 4 + }, + "trafficByAsin": { + "browserSessions": 492, + "browserSessionsB2B": 13, + "mobileAppSessions": 506, + "mobileAppSessionsB2B": 1, + "sessions": 998, + "sessionsB2B": 14, + "browserSessionPercentage": 3.22, + "browserSessionPercentageB2B": 3, + "mobileAppSessionPercentage": 2.06, + "mobileAppSessionPercentageB2B": 0.29, + "sessionPercentage": 2.5, + "sessionPercentageB2B": 1.81, + "browserPageViews": 857, + "browserPageViewsB2B": 17, + "mobileAppPageViews": 1146, + "mobileAppPageViewsB2B": 3, + "pageViews": 2003, + "pageViewsB2B": 20, + "browserPageViewsPercentage": 3.29, + "browserPageViewsPercentageB2B": 2.43, + "mobileAppPageViewsPercentage": 1.97, + "mobileAppPageViewsPercentageB2B": 0.27, + "pageViewsPercentage": 2.38, + "pageViewsPercentageB2B": 1.1, + "buyBoxPercentage": 98.36, + "buyBoxPercentageB2B": 92.86, + "unitSessionPercentage": 14.73, + "unitSessionPercentageB2B": 28.57 + } + }, + { + "parentAsin": "B0BKLMBFVB", + "salesByAsin": { + "unitsOrdered": 776, + "unitsOrderedB2B": 9, + "orderedProductSales": { + "amount": 11526.8, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 132.02, + "currencyCode": "USD" + }, + "totalOrderItems": 735, + "totalOrderItemsB2B": 8 + }, + "trafficByAsin": { + "browserSessions": 1429, + "browserSessionsB2B": 35, + "mobileAppSessions": 1971, + "mobileAppSessionsB2B": 23, + "sessions": 3400, + "sessionsB2B": 58, + "browserSessionPercentage": 9.34, + "browserSessionPercentageB2B": 8.06, + "mobileAppSessionPercentage": 8.02, + "mobileAppSessionPercentageB2B": 6.78, + "sessionPercentage": 8.53, + "sessionPercentageB2B": 7.5, + "browserPageViews": 3941, + "browserPageViewsB2B": 62, + "mobileAppPageViews": 8321, + "mobileAppPageViewsB2B": 57, + "pageViews": 12262, + "pageViewsB2B": 119, + "browserPageViewsPercentage": 15.12, + "browserPageViewsPercentageB2B": 8.86, + "mobileAppPageViewsPercentage": 14.31, + "mobileAppPageViewsPercentageB2B": 5.14, + "pageViewsPercentage": 14.56, + "pageViewsPercentageB2B": 6.57, + "buyBoxPercentage": 99.26, + "buyBoxPercentageB2B": 94.12, + "unitSessionPercentage": 22.82, + "unitSessionPercentageB2B": 15.52 + } + }, + { + "parentAsin": "B0BM9XXZF9", + "salesByAsin": { + "unitsOrdered": 159, + "unitsOrderedB2B": 2, + "orderedProductSales": { + "amount": 2516.21, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 28.62, + "currencyCode": "USD" + }, + "totalOrderItems": 135, + "totalOrderItemsB2B": 1 + }, + "trafficByAsin": { + "browserSessions": 307, + "browserSessionsB2B": 12, + "mobileAppSessions": 495, + "mobileAppSessionsB2B": 9, + "sessions": 802, + "sessionsB2B": 21, + "browserSessionPercentage": 2.01, + "browserSessionPercentageB2B": 2.76, + "mobileAppSessionPercentage": 2.01, + "mobileAppSessionPercentageB2B": 2.65, + "sessionPercentage": 2.01, + "sessionPercentageB2B": 2.72, + "browserPageViews": 549, + "browserPageViewsB2B": 21, + "mobileAppPageViews": 1525, + "mobileAppPageViewsB2B": 22, + "pageViews": 2074, + "pageViewsB2B": 43, + "browserPageViewsPercentage": 2.11, + "browserPageViewsPercentageB2B": 3, + "mobileAppPageViewsPercentage": 2.62, + "mobileAppPageViewsPercentageB2B": 1.98, + "pageViewsPercentage": 2.46, + "pageViewsPercentageB2B": 2.38, + "buyBoxPercentage": 99.61, + "buyBoxPercentageB2B": 100, + "unitSessionPercentage": 19.83, + "unitSessionPercentageB2B": 9.52 + } + }, + { + "parentAsin": "B0BTM7F76V", + "salesByAsin": { + "unitsOrdered": 54, + "unitsOrderedB2B": 1, + "orderedProductSales": { + "amount": 878.8, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 16.9, + "currencyCode": "USD" + }, + "totalOrderItems": 53, + "totalOrderItemsB2B": 1 + }, + "trafficByAsin": { + "browserSessions": 247, + "browserSessionsB2B": 10, + "mobileAppSessions": 237, + "mobileAppSessionsB2B": 2, + "sessions": 484, + "sessionsB2B": 12, + "browserSessionPercentage": 1.61, + "browserSessionPercentageB2B": 2.3, + "mobileAppSessionPercentage": 0.96, + "mobileAppSessionPercentageB2B": 0.59, + "sessionPercentage": 1.21, + "sessionPercentageB2B": 1.55, + "browserPageViews": 308, + "browserPageViewsB2B": 12, + "mobileAppPageViews": 318, + "mobileAppPageViewsB2B": 2, + "pageViews": 626, + "pageViewsB2B": 14, + "browserPageViewsPercentage": 1.18, + "browserPageViewsPercentageB2B": 1.71, + "mobileAppPageViewsPercentage": 0.55, + "mobileAppPageViewsPercentageB2B": 0.18, + "pageViewsPercentage": 0.74, + "pageViewsPercentageB2B": 0.77, + "buyBoxPercentage": 99.26, + "buyBoxPercentageB2B": 100, + "unitSessionPercentage": 11.16, + "unitSessionPercentageB2B": 8.33 + } + }, + { + "parentAsin": "B0BTMKDMYJ", + "salesByAsin": { + "unitsOrdered": 627, + "unitsOrderedB2B": 6, + "orderedProductSales": { + "amount": 13709.4, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 131.4, + "currencyCode": "USD" + }, + "totalOrderItems": 603, + "totalOrderItemsB2B": 6 + }, + "trafficByAsin": { + "browserSessions": 1210, + "browserSessionsB2B": 31, + "mobileAppSessions": 2348, + "mobileAppSessionsB2B": 28, + "sessions": 3558, + "sessionsB2B": 59, + "browserSessionPercentage": 7.91, + "browserSessionPercentageB2B": 7.14, + "mobileAppSessionPercentage": 9.55, + "mobileAppSessionPercentageB2B": 8.26, + "sessionPercentage": 8.92, + "sessionPercentageB2B": 7.63, + "browserPageViews": 1600, + "browserPageViewsB2B": 40, + "mobileAppPageViews": 3111, + "mobileAppPageViewsB2B": 35, + "pageViews": 4711, + "pageViewsB2B": 75, + "browserPageViewsPercentage": 6.14, + "browserPageViewsPercentageB2B": 5.71, + "mobileAppPageViewsPercentage": 5.35, + "mobileAppPageViewsPercentageB2B": 3.15, + "pageViewsPercentage": 5.59, + "pageViewsPercentageB2B": 4.14, + "buyBoxPercentage": 99.91, + "buyBoxPercentageB2B": 95.31, + "unitSessionPercentage": 17.62, + "unitSessionPercentageB2B": 10.17 + } + }, + { + "parentAsin": "B0BV743RJS", + "salesByAsin": { + "unitsOrdered": 97, + "unitsOrderedB2B": 1, + "orderedProductSales": { + "amount": 2338.35, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 23.9, + "currencyCode": "USD" + }, + "totalOrderItems": 87, + "totalOrderItemsB2B": 1 + }, + "trafficByAsin": { + "browserSessions": 341, + "browserSessionsB2B": 1, + "mobileAppSessions": 503, + "mobileAppSessionsB2B": 11, + "sessions": 844, + "sessionsB2B": 12, + "browserSessionPercentage": 2.23, + "browserSessionPercentageB2B": 0.23, + "mobileAppSessionPercentage": 2.05, + "mobileAppSessionPercentageB2B": 3.24, + "sessionPercentage": 2.12, + "sessionPercentageB2B": 1.55, + "browserPageViews": 614, + "browserPageViewsB2B": 3, + "mobileAppPageViews": 1213, + "mobileAppPageViewsB2B": 19, + "pageViews": 1827, + "pageViewsB2B": 22, + "browserPageViewsPercentage": 2.36, + "browserPageViewsPercentageB2B": 0.43, + "mobileAppPageViewsPercentage": 2.09, + "mobileAppPageViewsPercentageB2B": 1.71, + "pageViewsPercentage": 2.17, + "pageViewsPercentageB2B": 1.22, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 100, + "unitSessionPercentage": 11.49, + "unitSessionPercentageB2B": 8.33 + } + }, + { + "parentAsin": "B0BX6HJN28", + "salesByAsin": { + "unitsOrdered": 376, + "unitsOrderedB2B": 10, + "orderedProductSales": { + "amount": 7457.31, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 195.8, + "currencyCode": "USD" + }, + "totalOrderItems": 352, + "totalOrderItemsB2B": 8 + }, + "trafficByAsin": { + "browserSessions": 731, + "browserSessionsB2B": 22, + "mobileAppSessions": 1079, + "mobileAppSessionsB2B": 24, + "sessions": 1810, + "sessionsB2B": 46, + "browserSessionPercentage": 4.78, + "browserSessionPercentageB2B": 5.07, + "mobileAppSessionPercentage": 4.39, + "mobileAppSessionPercentageB2B": 7.08, + "sessionPercentage": 4.54, + "sessionPercentageB2B": 5.95, + "browserPageViews": 1072, + "browserPageViewsB2B": 28, + "mobileAppPageViews": 2208, + "mobileAppPageViewsB2B": 48, + "pageViews": 3280, + "pageViewsB2B": 76, + "browserPageViewsPercentage": 4.11, + "browserPageViewsPercentageB2B": 4, + "mobileAppPageViewsPercentage": 3.8, + "mobileAppPageViewsPercentageB2B": 4.32, + "pageViewsPercentage": 3.9, + "pageViewsPercentageB2B": 4.2, + "buyBoxPercentage": 99.25, + "buyBoxPercentageB2B": 100, + "unitSessionPercentage": 20.77, + "unitSessionPercentageB2B": 21.74 + } + }, + { + "parentAsin": "B0C5N1GBDL", + "salesByAsin": { + "unitsOrdered": 1616, + "unitsOrderedB2B": 39, + "orderedProductSales": { + "amount": 40040.07, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 891.02, + "currencyCode": "USD" + }, + "totalOrderItems": 1584, + "totalOrderItemsB2B": 30 + }, + "trafficByAsin": { + "browserSessions": 1871, + "browserSessionsB2B": 75, + "mobileAppSessions": 3763, + "mobileAppSessionsB2B": 66, + "sessions": 5634, + "sessionsB2B": 141, + "browserSessionPercentage": 12.23, + "browserSessionPercentageB2B": 17.28, + "mobileAppSessionPercentage": 15.31, + "mobileAppSessionPercentageB2B": 19.47, + "sessionPercentage": 14.13, + "sessionPercentageB2B": 18.24, + "browserPageViews": 3322, + "browserPageViewsB2B": 124, + "mobileAppPageViews": 10344, + "mobileAppPageViewsB2B": 518, + "pageViews": 13666, + "pageViewsB2B": 642, + "browserPageViewsPercentage": 12.74, + "browserPageViewsPercentageB2B": 17.71, + "mobileAppPageViewsPercentage": 17.79, + "mobileAppPageViewsPercentageB2B": 46.67, + "pageViewsPercentage": 16.23, + "pageViewsPercentageB2B": 35.47, + "buyBoxPercentage": 99.48, + "buyBoxPercentageB2B": 96.76, + "unitSessionPercentage": 28.68, + "unitSessionPercentageB2B": 27.66 + } + }, + { + "parentAsin": "B0C72K4WKC", + "salesByAsin": { + "unitsOrdered": 141, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 2348.25, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 133, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 245, + "browserSessionsB2B": 6, + "mobileAppSessions": 501, + "mobileAppSessionsB2B": 7, + "sessions": 746, + "sessionsB2B": 13, + "browserSessionPercentage": 1.6, + "browserSessionPercentageB2B": 1.38, + "mobileAppSessionPercentage": 2.04, + "mobileAppSessionPercentageB2B": 2.06, + "sessionPercentage": 1.87, + "sessionPercentageB2B": 1.68, + "browserPageViews": 302, + "browserPageViewsB2B": 6, + "mobileAppPageViews": 678, + "mobileAppPageViewsB2B": 13, + "pageViews": 980, + "pageViewsB2B": 19, + "browserPageViewsPercentage": 1.16, + "browserPageViewsPercentageB2B": 0.86, + "mobileAppPageViewsPercentage": 1.17, + "mobileAppPageViewsPercentageB2B": 1.17, + "pageViewsPercentage": 1.16, + "pageViewsPercentageB2B": 1.05, + "buyBoxPercentage": 97.88, + "buyBoxPercentageB2B": 94.74, + "unitSessionPercentage": 18.9, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0CCF45HVQ", + "salesByAsin": { + "unitsOrdered": 82, + "unitsOrderedB2B": 2, + "orderedProductSales": { + "amount": 1773.9, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 43.8, + "currencyCode": "USD" + }, + "totalOrderItems": 81, + "totalOrderItemsB2B": 2 + }, + "trafficByAsin": { + "browserSessions": 149, + "browserSessionsB2B": 4, + "mobileAppSessions": 291, + "mobileAppSessionsB2B": 5, + "sessions": 440, + "sessionsB2B": 9, + "browserSessionPercentage": 0.97, + "browserSessionPercentageB2B": 0.92, + "mobileAppSessionPercentage": 1.18, + "mobileAppSessionPercentageB2B": 1.47, + "sessionPercentage": 1.1, + "sessionPercentageB2B": 1.16, + "browserPageViews": 178, + "browserPageViewsB2B": 4, + "mobileAppPageViews": 408, + "mobileAppPageViewsB2B": 7, + "pageViews": 586, + "pageViewsB2B": 11, + "browserPageViewsPercentage": 0.68, + "browserPageViewsPercentageB2B": 0.57, + "mobileAppPageViewsPercentage": 0.7, + "mobileAppPageViewsPercentageB2B": 0.63, + "pageViewsPercentage": 0.7, + "pageViewsPercentageB2B": 0.61, + "buyBoxPercentage": 98.7, + "buyBoxPercentageB2B": 100, + "unitSessionPercentage": 18.64, + "unitSessionPercentageB2B": 22.22 + } + }, + { + "parentAsin": "B0CDGTTG6Y", + "salesByAsin": { + "unitsOrdered": 12, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 200.25, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 11, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 59, + "browserSessionsB2B": 1, + "mobileAppSessions": 67, + "mobileAppSessionsB2B": 0, + "sessions": 126, + "sessionsB2B": 1, + "browserSessionPercentage": 0.39, + "browserSessionPercentageB2B": 0.23, + "mobileAppSessionPercentage": 0.27, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0.32, + "sessionPercentageB2B": 0.13, + "browserPageViews": 76, + "browserPageViewsB2B": 1, + "mobileAppPageViews": 93, + "mobileAppPageViewsB2B": 0, + "pageViews": 169, + "pageViewsB2B": 1, + "browserPageViewsPercentage": 0.29, + "browserPageViewsPercentageB2B": 0.14, + "mobileAppPageViewsPercentage": 0.16, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0.2, + "pageViewsPercentageB2B": 0.06, + "buyBoxPercentage": 96.27, + "buyBoxPercentageB2B": 100, + "unitSessionPercentage": 9.52, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0CDM9C122", + "salesByAsin": { + "unitsOrdered": 30, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 747, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 27, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 250, + "browserSessionsB2B": 8, + "mobileAppSessions": 281, + "mobileAppSessionsB2B": 2, + "sessions": 531, + "sessionsB2B": 10, + "browserSessionPercentage": 1.63, + "browserSessionPercentageB2B": 1.84, + "mobileAppSessionPercentage": 1.14, + "mobileAppSessionPercentageB2B": 0.59, + "sessionPercentage": 1.33, + "sessionPercentageB2B": 1.29, + "browserPageViews": 302, + "browserPageViewsB2B": 13, + "mobileAppPageViews": 386, + "mobileAppPageViewsB2B": 2, + "pageViews": 688, + "pageViewsB2B": 15, + "browserPageViewsPercentage": 1.16, + "browserPageViewsPercentageB2B": 1.86, + "mobileAppPageViewsPercentage": 0.66, + "mobileAppPageViewsPercentageB2B": 0.18, + "pageViewsPercentage": 0.82, + "pageViewsPercentageB2B": 0.83, + "buyBoxPercentage": 93.98, + "buyBoxPercentageB2B": 100, + "unitSessionPercentage": 5.65, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0CDXZWVGN", + "salesByAsin": { + "unitsOrdered": 38, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 452.2, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 34, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 180, + "browserSessionsB2B": 4, + "mobileAppSessions": 227, + "mobileAppSessionsB2B": 3, + "sessions": 407, + "sessionsB2B": 7, + "browserSessionPercentage": 1.18, + "browserSessionPercentageB2B": 0.92, + "mobileAppSessionPercentage": 0.92, + "mobileAppSessionPercentageB2B": 0.88, + "sessionPercentage": 1.02, + "sessionPercentageB2B": 0.91, + "browserPageViews": 239, + "browserPageViewsB2B": 4, + "mobileAppPageViews": 284, + "mobileAppPageViewsB2B": 5, + "pageViews": 523, + "pageViewsB2B": 9, + "browserPageViewsPercentage": 0.92, + "browserPageViewsPercentageB2B": 0.57, + "mobileAppPageViewsPercentage": 0.49, + "mobileAppPageViewsPercentageB2B": 0.45, + "pageViewsPercentage": 0.62, + "pageViewsPercentageB2B": 0.5, + "buyBoxPercentage": 96.83, + "buyBoxPercentageB2B": 100, + "unitSessionPercentage": 9.34, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0CF2FCYMZ", + "salesByAsin": { + "unitsOrdered": 25, + "unitsOrderedB2B": 1, + "orderedProductSales": { + "amount": 722.5, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 28.9, + "currencyCode": "USD" + }, + "totalOrderItems": 23, + "totalOrderItemsB2B": 1 + }, + "trafficByAsin": { + "browserSessions": 232, + "browserSessionsB2B": 4, + "mobileAppSessions": 312, + "mobileAppSessionsB2B": 5, + "sessions": 544, + "sessionsB2B": 9, + "browserSessionPercentage": 1.52, + "browserSessionPercentageB2B": 0.92, + "mobileAppSessionPercentage": 1.27, + "mobileAppSessionPercentageB2B": 1.47, + "sessionPercentage": 1.36, + "sessionPercentageB2B": 1.16, + "browserPageViews": 293, + "browserPageViewsB2B": 4, + "mobileAppPageViews": 437, + "mobileAppPageViewsB2B": 9, + "pageViews": 730, + "pageViewsB2B": 13, + "browserPageViewsPercentage": 1.12, + "browserPageViewsPercentageB2B": 0.57, + "mobileAppPageViewsPercentage": 0.75, + "mobileAppPageViewsPercentageB2B": 0.81, + "pageViewsPercentage": 0.87, + "pageViewsPercentageB2B": 0.72, + "buyBoxPercentage": 99.15, + "buyBoxPercentageB2B": 84.62, + "unitSessionPercentage": 4.6, + "unitSessionPercentageB2B": 11.11 + } + }, + { + "parentAsin": "B0CG4JGTSW", + "salesByAsin": { + "unitsOrdered": 173, + "unitsOrderedB2B": 2, + "orderedProductSales": { + "amount": 4052.96, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 42.56, + "currencyCode": "USD" + }, + "totalOrderItems": 170, + "totalOrderItemsB2B": 2 + }, + "trafficByAsin": { + "browserSessions": 349, + "browserSessionsB2B": 10, + "mobileAppSessions": 730, + "mobileAppSessionsB2B": 12, + "sessions": 1079, + "sessionsB2B": 22, + "browserSessionPercentage": 2.28, + "browserSessionPercentageB2B": 2.3, + "mobileAppSessionPercentage": 2.97, + "mobileAppSessionPercentageB2B": 3.54, + "sessionPercentage": 2.71, + "sessionPercentageB2B": 2.85, + "browserPageViews": 578, + "browserPageViewsB2B": 28, + "mobileAppPageViews": 1657, + "mobileAppPageViewsB2B": 32, + "pageViews": 2235, + "pageViewsB2B": 60, + "browserPageViewsPercentage": 2.22, + "browserPageViewsPercentageB2B": 4, + "mobileAppPageViewsPercentage": 2.85, + "mobileAppPageViewsPercentageB2B": 2.88, + "pageViewsPercentage": 2.65, + "pageViewsPercentageB2B": 3.31, + "buyBoxPercentage": 99.65, + "buyBoxPercentageB2B": 100, + "unitSessionPercentage": 16.03, + "unitSessionPercentageB2B": 9.09 + } + }, + { + "parentAsin": "B0CGV89ZBG", + "salesByAsin": { + "unitsOrdered": 25, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 249.75, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 20, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 126, + "browserSessionsB2B": 5, + "mobileAppSessions": 82, + "mobileAppSessionsB2B": 1, + "sessions": 208, + "sessionsB2B": 6, + "browserSessionPercentage": 0.82, + "browserSessionPercentageB2B": 1.15, + "mobileAppSessionPercentage": 0.33, + "mobileAppSessionPercentageB2B": 0.29, + "sessionPercentage": 0.52, + "sessionPercentageB2B": 0.78, + "browserPageViews": 164, + "browserPageViewsB2B": 5, + "mobileAppPageViews": 149, + "mobileAppPageViewsB2B": 1, + "pageViews": 313, + "pageViewsB2B": 6, + "browserPageViewsPercentage": 0.63, + "browserPageViewsPercentageB2B": 0.71, + "mobileAppPageViewsPercentage": 0.26, + "mobileAppPageViewsPercentageB2B": 0.09, + "pageViewsPercentage": 0.37, + "pageViewsPercentageB2B": 0.33, + "buyBoxPercentage": 98.4, + "buyBoxPercentageB2B": 100, + "unitSessionPercentage": 12.02, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0CK8C6JF9", + "salesByAsin": { + "unitsOrdered": 11, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 11, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 45, + "browserSessionsB2B": 1, + "mobileAppSessions": 2, + "mobileAppSessionsB2B": 0, + "sessions": 47, + "sessionsB2B": 1, + "browserSessionPercentage": 0.29, + "browserSessionPercentageB2B": 0.23, + "mobileAppSessionPercentage": 0.01, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0.12, + "sessionPercentageB2B": 0.13, + "browserPageViews": 54, + "browserPageViewsB2B": 1, + "mobileAppPageViews": 3, + "mobileAppPageViewsB2B": 0, + "pageViews": 57, + "pageViewsB2B": 1, + "browserPageViewsPercentage": 0.21, + "browserPageViewsPercentageB2B": 0.14, + "mobileAppPageViewsPercentage": 0.01, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0.07, + "pageViewsPercentageB2B": 0.06, + "buyBoxPercentage": 96.49, + "buyBoxPercentageB2B": 100, + "unitSessionPercentage": 23.4, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0CK8CXGZV", + "salesByAsin": { + "unitsOrdered": 9, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 9, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 89, + "browserSessionsB2B": 3, + "mobileAppSessions": 10, + "mobileAppSessionsB2B": 0, + "sessions": 99, + "sessionsB2B": 3, + "browserSessionPercentage": 0.58, + "browserSessionPercentageB2B": 0.69, + "mobileAppSessionPercentage": 0.04, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0.25, + "sessionPercentageB2B": 0.39, + "browserPageViews": 108, + "browserPageViewsB2B": 4, + "mobileAppPageViews": 11, + "mobileAppPageViewsB2B": 0, + "pageViews": 119, + "pageViewsB2B": 4, + "browserPageViewsPercentage": 0.41, + "browserPageViewsPercentageB2B": 0.57, + "mobileAppPageViewsPercentage": 0.02, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0.14, + "pageViewsPercentageB2B": 0.22, + "buyBoxPercentage": 72.27, + "buyBoxPercentageB2B": 100, + "unitSessionPercentage": 9.09, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0CK8MHBPY", + "salesByAsin": { + "unitsOrdered": 2, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 60, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 2, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 79, + "browserSessionsB2B": 0, + "mobileAppSessions": 67, + "mobileAppSessionsB2B": 0, + "sessions": 146, + "sessionsB2B": 0, + "browserSessionPercentage": 0.52, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0.27, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0.37, + "sessionPercentageB2B": 0, + "browserPageViews": 112, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 86, + "mobileAppPageViewsB2B": 0, + "pageViews": 198, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0.43, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0.15, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0.24, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 95.83, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 1.37, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0CKC3WQVS", + "salesByAsin": { + "unitsOrdered": 56, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 945.55, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 53, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 258, + "browserSessionsB2B": 0, + "mobileAppSessions": 270, + "mobileAppSessionsB2B": 3, + "sessions": 528, + "sessionsB2B": 3, + "browserSessionPercentage": 1.69, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 1.1, + "mobileAppSessionPercentageB2B": 0.88, + "sessionPercentage": 1.32, + "sessionPercentageB2B": 0.39, + "browserPageViews": 381, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 446, + "mobileAppPageViewsB2B": 5, + "pageViews": 827, + "pageViewsB2B": 5, + "browserPageViewsPercentage": 1.46, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0.77, + "mobileAppPageViewsPercentageB2B": 0.45, + "pageViewsPercentage": 0.98, + "pageViewsPercentageB2B": 0.28, + "buyBoxPercentage": 97.58, + "buyBoxPercentageB2B": 40, + "unitSessionPercentage": 10.61, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0CL4N5NWJ", + "salesByAsin": { + "unitsOrdered": 1, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 14.9, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 1, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 20, + "browserSessionsB2B": 0, + "mobileAppSessions": 4, + "mobileAppSessionsB2B": 0, + "sessions": 24, + "sessionsB2B": 0, + "browserSessionPercentage": 0.13, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0.02, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0.06, + "sessionPercentageB2B": 0, + "browserPageViews": 22, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 5, + "mobileAppPageViewsB2B": 0, + "pageViews": 27, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0.08, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0.01, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0.03, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 85.19, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 4.17, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0CMP4D3QW", + "salesByAsin": { + "unitsOrdered": 1377, + "unitsOrderedB2B": 32, + "orderedProductSales": { + "amount": 34087.47, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 766.33, + "currencyCode": "USD" + }, + "totalOrderItems": 1340, + "totalOrderItemsB2B": 27 + }, + "trafficByAsin": { + "browserSessions": 2885, + "browserSessionsB2B": 95, + "mobileAppSessions": 4788, + "mobileAppSessionsB2B": 73, + "sessions": 7673, + "sessionsB2B": 168, + "browserSessionPercentage": 18.86, + "browserSessionPercentageB2B": 21.89, + "mobileAppSessionPercentage": 19.48, + "mobileAppSessionPercentageB2B": 21.53, + "sessionPercentage": 19.24, + "sessionPercentageB2B": 21.73, + "browserPageViews": 5764, + "browserPageViewsB2B": 188, + "mobileAppPageViews": 14513, + "mobileAppPageViewsB2B": 222, + "pageViews": 20277, + "pageViewsB2B": 410, + "browserPageViewsPercentage": 22.11, + "browserPageViewsPercentageB2B": 26.86, + "mobileAppPageViewsPercentage": 24.96, + "mobileAppPageViewsPercentageB2B": 20, + "pageViewsPercentage": 24.08, + "pageViewsPercentageB2B": 22.65, + "buyBoxPercentage": 99.05, + "buyBoxPercentageB2B": 99.48, + "unitSessionPercentage": 17.95, + "unitSessionPercentageB2B": 19.05 + } + }, + { + "parentAsin": "B0CN5MTWQW", + "salesByAsin": { + "unitsOrdered": 79, + "unitsOrderedB2B": 1, + "orderedProductSales": { + "amount": 1335.1, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 16.9, + "currencyCode": "USD" + }, + "totalOrderItems": 73, + "totalOrderItemsB2B": 1 + }, + "trafficByAsin": { + "browserSessions": 417, + "browserSessionsB2B": 17, + "mobileAppSessions": 500, + "mobileAppSessionsB2B": 3, + "sessions": 917, + "sessionsB2B": 20, + "browserSessionPercentage": 2.73, + "browserSessionPercentageB2B": 3.92, + "mobileAppSessionPercentage": 2.03, + "mobileAppSessionPercentageB2B": 0.88, + "sessionPercentage": 2.3, + "sessionPercentageB2B": 2.59, + "browserPageViews": 517, + "browserPageViewsB2B": 17, + "mobileAppPageViews": 754, + "mobileAppPageViewsB2B": 5, + "pageViews": 1271, + "pageViewsB2B": 22, + "browserPageViewsPercentage": 1.98, + "browserPageViewsPercentageB2B": 2.43, + "mobileAppPageViewsPercentage": 1.3, + "mobileAppPageViewsPercentageB2B": 0.45, + "pageViewsPercentage": 1.51, + "pageViewsPercentageB2B": 1.22, + "buyBoxPercentage": 97.14, + "buyBoxPercentageB2B": 100, + "unitSessionPercentage": 8.62, + "unitSessionPercentageB2B": 5 + } + }, + { + "parentAsin": "B0CN5PCPM3", + "salesByAsin": { + "unitsOrdered": 14, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 376.6, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 13, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 155, + "browserSessionsB2B": 2, + "mobileAppSessions": 145, + "mobileAppSessionsB2B": 1, + "sessions": 300, + "sessionsB2B": 3, + "browserSessionPercentage": 1.01, + "browserSessionPercentageB2B": 0.46, + "mobileAppSessionPercentage": 0.59, + "mobileAppSessionPercentageB2B": 0.29, + "sessionPercentage": 0.75, + "sessionPercentageB2B": 0.39, + "browserPageViews": 195, + "browserPageViewsB2B": 2, + "mobileAppPageViews": 188, + "mobileAppPageViewsB2B": 1, + "pageViews": 383, + "pageViewsB2B": 3, + "browserPageViewsPercentage": 0.75, + "browserPageViewsPercentageB2B": 0.29, + "mobileAppPageViewsPercentage": 0.32, + "mobileAppPageViewsPercentageB2B": 0.09, + "pageViewsPercentage": 0.45, + "pageViewsPercentageB2B": 0.17, + "buyBoxPercentage": 99.44, + "buyBoxPercentageB2B": 100, + "unitSessionPercentage": 4.67, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0CN7983W8", + "salesByAsin": { + "unitsOrdered": 84, + "unitsOrderedB2B": 2, + "orderedProductSales": { + "amount": 1047.84, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 25.89, + "currencyCode": "USD" + }, + "totalOrderItems": 81, + "totalOrderItemsB2B": 2 + }, + "trafficByAsin": { + "browserSessions": 331, + "browserSessionsB2B": 4, + "mobileAppSessions": 720, + "mobileAppSessionsB2B": 9, + "sessions": 1051, + "sessionsB2B": 13, + "browserSessionPercentage": 2.16, + "browserSessionPercentageB2B": 0.92, + "mobileAppSessionPercentage": 2.93, + "mobileAppSessionPercentageB2B": 2.65, + "sessionPercentage": 2.64, + "sessionPercentageB2B": 1.68, + "browserPageViews": 418, + "browserPageViewsB2B": 5, + "mobileAppPageViews": 1021, + "mobileAppPageViewsB2B": 12, + "pageViews": 1439, + "pageViewsB2B": 17, + "browserPageViewsPercentage": 1.6, + "browserPageViewsPercentageB2B": 0.71, + "mobileAppPageViewsPercentage": 1.76, + "mobileAppPageViewsPercentageB2B": 1.08, + "pageViewsPercentage": 1.71, + "pageViewsPercentageB2B": 0.94, + "buyBoxPercentage": 99.34, + "buyBoxPercentageB2B": 100, + "unitSessionPercentage": 7.99, + "unitSessionPercentageB2B": 15.38 + } + }, + { + "parentAsin": "B0CNTHM63L", + "salesByAsin": { + "unitsOrdered": 39, + "unitsOrderedB2B": 1, + "orderedProductSales": { + "amount": 775.1, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 18.9, + "currencyCode": "USD" + }, + "totalOrderItems": 38, + "totalOrderItemsB2B": 1 + }, + "trafficByAsin": { + "browserSessions": 148, + "browserSessionsB2B": 3, + "mobileAppSessions": 271, + "mobileAppSessionsB2B": 2, + "sessions": 419, + "sessionsB2B": 5, + "browserSessionPercentage": 0.97, + "browserSessionPercentageB2B": 0.69, + "mobileAppSessionPercentage": 1.1, + "mobileAppSessionPercentageB2B": 0.59, + "sessionPercentage": 1.05, + "sessionPercentageB2B": 0.65, + "browserPageViews": 196, + "browserPageViewsB2B": 4, + "mobileAppPageViews": 355, + "mobileAppPageViewsB2B": 3, + "pageViews": 551, + "pageViewsB2B": 7, + "browserPageViewsPercentage": 0.75, + "browserPageViewsPercentageB2B": 0.57, + "mobileAppPageViewsPercentage": 0.61, + "mobileAppPageViewsPercentageB2B": 0.27, + "pageViewsPercentage": 0.65, + "pageViewsPercentageB2B": 0.39, + "buyBoxPercentage": 99.81, + "buyBoxPercentageB2B": 100, + "unitSessionPercentage": 9.31, + "unitSessionPercentageB2B": 20 + } + }, + { + "parentAsin": "B0CPCX455S", + "salesByAsin": { + "unitsOrdered": 39, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 776.1, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 36, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 302, + "browserSessionsB2B": 5, + "mobileAppSessions": 343, + "mobileAppSessionsB2B": 4, + "sessions": 645, + "sessionsB2B": 9, + "browserSessionPercentage": 1.97, + "browserSessionPercentageB2B": 1.15, + "mobileAppSessionPercentage": 1.4, + "mobileAppSessionPercentageB2B": 1.18, + "sessionPercentage": 1.62, + "sessionPercentageB2B": 1.16, + "browserPageViews": 400, + "browserPageViewsB2B": 5, + "mobileAppPageViews": 477, + "mobileAppPageViewsB2B": 5, + "pageViews": 877, + "pageViewsB2B": 10, + "browserPageViewsPercentage": 1.53, + "browserPageViewsPercentageB2B": 0.71, + "mobileAppPageViewsPercentage": 0.82, + "mobileAppPageViewsPercentageB2B": 0.45, + "pageViewsPercentage": 1.04, + "pageViewsPercentageB2B": 0.55, + "buyBoxPercentage": 96.32, + "buyBoxPercentageB2B": 100, + "unitSessionPercentage": 6.05, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0CQYS6XL6", + "salesByAsin": { + "unitsOrdered": 2, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 19.98, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 2, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 89, + "browserSessionsB2B": 1, + "mobileAppSessions": 187, + "mobileAppSessionsB2B": 2, + "sessions": 276, + "sessionsB2B": 3, + "browserSessionPercentage": 0.58, + "browserSessionPercentageB2B": 0.23, + "mobileAppSessionPercentage": 0.76, + "mobileAppSessionPercentageB2B": 0.59, + "sessionPercentage": 0.69, + "sessionPercentageB2B": 0.39, + "browserPageViews": 111, + "browserPageViewsB2B": 1, + "mobileAppPageViews": 236, + "mobileAppPageViewsB2B": 2, + "pageViews": 347, + "pageViewsB2B": 3, + "browserPageViewsPercentage": 0.43, + "browserPageViewsPercentageB2B": 0.14, + "mobileAppPageViewsPercentage": 0.41, + "mobileAppPageViewsPercentageB2B": 0.18, + "pageViewsPercentage": 0.41, + "pageViewsPercentageB2B": 0.17, + "buyBoxPercentage": 99.1, + "buyBoxPercentageB2B": 100, + "unitSessionPercentage": 0.72, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0C3DDGHXY", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 15, + "browserSessionsB2B": 0, + "mobileAppSessions": 6, + "mobileAppSessionsB2B": 0, + "sessions": 21, + "sessionsB2B": 0, + "browserSessionPercentage": 0.1, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0.02, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0.05, + "sessionPercentageB2B": 0, + "browserPageViews": 15, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 7, + "mobileAppPageViewsB2B": 0, + "pageViews": 22, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0.06, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0.01, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0.03, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0BYDPNTZH", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 1, + "browserSessionsB2B": 0, + "mobileAppSessions": 3, + "mobileAppSessionsB2B": 0, + "sessions": 4, + "sessionsB2B": 0, + "browserSessionPercentage": 0.01, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0.01, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0.01, + "sessionPercentageB2B": 0, + "browserPageViews": 1, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 3, + "mobileAppPageViewsB2B": 0, + "pageViews": 4, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0.01, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0BZ8HS6Z3", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 0, + "browserSessionsB2B": 0, + "mobileAppSessions": 1, + "mobileAppSessionsB2B": 0, + "sessions": 1, + "sessionsB2B": 0, + "browserSessionPercentage": 0, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0, + "sessionPercentageB2B": 0, + "browserPageViews": 0, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 2, + "mobileAppPageViewsB2B": 0, + "pageViews": 2, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0C8Z4B6YM", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 4, + "browserSessionsB2B": 0, + "mobileAppSessions": 1, + "mobileAppSessionsB2B": 0, + "sessions": 5, + "sessionsB2B": 0, + "browserSessionPercentage": 0.03, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0.01, + "sessionPercentageB2B": 0, + "browserPageViews": 4, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 2, + "mobileAppPageViewsB2B": 0, + "pageViews": 6, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0.02, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0.01, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 33.33, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0CM3JNPFB", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 2, + "browserSessionsB2B": 0, + "mobileAppSessions": 3, + "mobileAppSessionsB2B": 0, + "sessions": 5, + "sessionsB2B": 0, + "browserSessionPercentage": 0.01, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0.01, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0.01, + "sessionPercentageB2B": 0, + "browserPageViews": 3, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 6, + "mobileAppPageViewsB2B": 0, + "pageViews": 9, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0.01, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0.01, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0.01, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0BYDCRZ8R", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 1, + "browserSessionsB2B": 0, + "mobileAppSessions": 1, + "mobileAppSessionsB2B": 0, + "sessions": 2, + "sessionsB2B": 0, + "browserSessionPercentage": 0.01, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0.01, + "sessionPercentageB2B": 0, + "browserPageViews": 2, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 2, + "mobileAppPageViewsB2B": 0, + "pageViews": 4, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0.01, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0CWF55D81", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 0, + "browserSessionsB2B": 0, + "mobileAppSessions": 1, + "mobileAppSessionsB2B": 0, + "sessions": 1, + "sessionsB2B": 0, + "browserSessionPercentage": 0, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0, + "sessionPercentageB2B": 0, + "browserPageViews": 0, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 2, + "mobileAppPageViewsB2B": 0, + "pageViews": 2, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0BX9L6SYS", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 0, + "browserSessionsB2B": 0, + "mobileAppSessions": 1, + "mobileAppSessionsB2B": 0, + "sessions": 1, + "sessionsB2B": 0, + "browserSessionPercentage": 0, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0, + "sessionPercentageB2B": 0, + "browserPageViews": 0, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 1, + "mobileAppPageViewsB2B": 0, + "pageViews": 1, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0CWF6N6RM", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 0, + "browserSessionsB2B": 0, + "mobileAppSessions": 1, + "mobileAppSessionsB2B": 0, + "sessions": 1, + "sessionsB2B": 0, + "browserSessionPercentage": 0, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0, + "sessionPercentageB2B": 0, + "browserPageViews": 0, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 1, + "mobileAppPageViewsB2B": 0, + "pageViews": 1, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0BZ8449SR", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 0, + "browserSessionsB2B": 0, + "mobileAppSessions": 1, + "mobileAppSessionsB2B": 0, + "sessions": 1, + "sessionsB2B": 0, + "browserSessionPercentage": 0, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0, + "sessionPercentageB2B": 0, + "browserPageViews": 0, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 2, + "mobileAppPageViewsB2B": 0, + "pageViews": 2, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0CM26KHRT", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 4, + "browserSessionsB2B": 0, + "mobileAppSessions": 6, + "mobileAppSessionsB2B": 0, + "sessions": 10, + "sessionsB2B": 0, + "browserSessionPercentage": 0.03, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0.02, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0.03, + "sessionPercentageB2B": 0, + "browserPageViews": 7, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 10, + "mobileAppPageViewsB2B": 0, + "pageViews": 17, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0.03, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0.02, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0.02, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0BXY4Q733", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 7, + "browserSessionsB2B": 0, + "mobileAppSessions": 15, + "mobileAppSessionsB2B": 0, + "sessions": 22, + "sessionsB2B": 0, + "browserSessionPercentage": 0.05, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0.06, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0.06, + "sessionPercentageB2B": 0, + "browserPageViews": 16, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 34, + "mobileAppPageViewsB2B": 0, + "pageViews": 50, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0.06, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0.06, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0.06, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0BXKWQPB4", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 5, + "browserSessionsB2B": 0, + "mobileAppSessions": 4, + "mobileAppSessionsB2B": 0, + "sessions": 9, + "sessionsB2B": 0, + "browserSessionPercentage": 0.03, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0.02, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0.02, + "sessionPercentageB2B": 0, + "browserPageViews": 7, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 5, + "mobileAppPageViewsB2B": 0, + "pageViews": 12, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0.03, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0.01, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0.01, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0BXLVQDLS", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 2, + "browserSessionsB2B": 0, + "mobileAppSessions": 3, + "mobileAppSessionsB2B": 0, + "sessions": 5, + "sessionsB2B": 0, + "browserSessionPercentage": 0.01, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0.01, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0.01, + "sessionPercentageB2B": 0, + "browserPageViews": 4, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 6, + "mobileAppPageViewsB2B": 0, + "pageViews": 10, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0.02, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0.01, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0.01, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0BXKWVR6C", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 10, + "browserSessionsB2B": 0, + "mobileAppSessions": 2, + "mobileAppSessionsB2B": 0, + "sessions": 12, + "sessionsB2B": 0, + "browserSessionPercentage": 0.07, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0.01, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0.03, + "sessionPercentageB2B": 0, + "browserPageViews": 13, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 4, + "mobileAppPageViewsB2B": 0, + "pageViews": 17, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0.05, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0.01, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0.02, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0BYDJ1H16", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 2, + "browserSessionsB2B": 0, + "mobileAppSessions": 0, + "mobileAppSessionsB2B": 0, + "sessions": 2, + "sessionsB2B": 0, + "browserSessionPercentage": 0.01, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0.01, + "sessionPercentageB2B": 0, + "browserPageViews": 2, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 0, + "mobileAppPageViewsB2B": 0, + "pageViews": 2, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0.01, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0BXL9Z94M", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 2, + "browserSessionsB2B": 0, + "mobileAppSessions": 2, + "mobileAppSessionsB2B": 0, + "sessions": 4, + "sessionsB2B": 0, + "browserSessionPercentage": 0.01, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0.01, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0.01, + "sessionPercentageB2B": 0, + "browserPageViews": 3, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 4, + "mobileAppPageViewsB2B": 0, + "pageViews": 7, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0.01, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0.01, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0.01, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0BZ8X83QD", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 4, + "browserSessionsB2B": 0, + "mobileAppSessions": 4, + "mobileAppSessionsB2B": 0, + "sessions": 8, + "sessionsB2B": 0, + "browserSessionPercentage": 0.03, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0.02, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0.02, + "sessionPercentageB2B": 0, + "browserPageViews": 4, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 4, + "mobileAppPageViewsB2B": 0, + "pageViews": 8, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0.02, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0.01, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0.01, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0CM2664NZ", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 5, + "browserSessionsB2B": 0, + "mobileAppSessions": 23, + "mobileAppSessionsB2B": 1, + "sessions": 28, + "sessionsB2B": 1, + "browserSessionPercentage": 0.03, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0.09, + "mobileAppSessionPercentageB2B": 0.29, + "sessionPercentage": 0.07, + "sessionPercentageB2B": 0.13, + "browserPageViews": 9, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 46, + "mobileAppPageViewsB2B": 2, + "pageViews": 55, + "pageViewsB2B": 2, + "browserPageViewsPercentage": 0.03, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0.08, + "mobileAppPageViewsPercentageB2B": 0.18, + "pageViewsPercentage": 0.07, + "pageViewsPercentageB2B": 0.11, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 100, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0BXB4PN8N", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 3, + "browserSessionsB2B": 0, + "mobileAppSessions": 4, + "mobileAppSessionsB2B": 0, + "sessions": 7, + "sessionsB2B": 0, + "browserSessionPercentage": 0.02, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0.02, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0.02, + "sessionPercentageB2B": 0, + "browserPageViews": 3, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 6, + "mobileAppPageViewsB2B": 0, + "pageViews": 9, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0.01, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0.01, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0.01, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0BX6YV7F5", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 6, + "browserSessionsB2B": 0, + "mobileAppSessions": 2, + "mobileAppSessionsB2B": 0, + "sessions": 8, + "sessionsB2B": 0, + "browserSessionPercentage": 0.04, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0.01, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0.02, + "sessionPercentageB2B": 0, + "browserPageViews": 12, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 5, + "mobileAppPageViewsB2B": 0, + "pageViews": 17, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0.05, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0.01, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0.02, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0BNG2FTJW", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 2, + "browserSessionsB2B": 0, + "mobileAppSessions": 12, + "mobileAppSessionsB2B": 0, + "sessions": 14, + "sessionsB2B": 0, + "browserSessionPercentage": 0.01, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0.05, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0.04, + "sessionPercentageB2B": 0, + "browserPageViews": 4, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 27, + "mobileAppPageViewsB2B": 0, + "pageViews": 31, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0.02, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0.05, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0.04, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0BX6LJY9V", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 0, + "browserSessionsB2B": 0, + "mobileAppSessions": 1, + "mobileAppSessionsB2B": 0, + "sessions": 1, + "sessionsB2B": 0, + "browserSessionPercentage": 0, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0, + "sessionPercentageB2B": 0, + "browserPageViews": 0, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 2, + "mobileAppPageViewsB2B": 0, + "pageViews": 2, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0CM3KWYK1", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 3, + "browserSessionsB2B": 0, + "mobileAppSessions": 7, + "mobileAppSessionsB2B": 0, + "sessions": 10, + "sessionsB2B": 0, + "browserSessionPercentage": 0.02, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0.03, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0.03, + "sessionPercentageB2B": 0, + "browserPageViews": 3, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 21, + "mobileAppPageViewsB2B": 0, + "pageViews": 24, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0.01, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0.04, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0.03, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0BN8ZC8CD", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 3, + "browserSessionsB2B": 0, + "mobileAppSessions": 3, + "mobileAppSessionsB2B": 0, + "sessions": 6, + "sessionsB2B": 0, + "browserSessionPercentage": 0.02, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0.01, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0.02, + "sessionPercentageB2B": 0, + "browserPageViews": 4, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 6, + "mobileAppPageViewsB2B": 0, + "pageViews": 10, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0.02, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0.01, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0.01, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0BZ511S4C", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 6, + "browserSessionsB2B": 0, + "mobileAppSessions": 9, + "mobileAppSessionsB2B": 0, + "sessions": 15, + "sessionsB2B": 0, + "browserSessionPercentage": 0.04, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0.04, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0.04, + "sessionPercentageB2B": 0, + "browserPageViews": 12, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 28, + "mobileAppPageViewsB2B": 0, + "pageViews": 40, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0.05, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0.05, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0.05, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0BJQLK1BX", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 12, + "browserSessionsB2B": 0, + "mobileAppSessions": 2, + "mobileAppSessionsB2B": 0, + "sessions": 14, + "sessionsB2B": 0, + "browserSessionPercentage": 0.08, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0.01, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0.04, + "sessionPercentageB2B": 0, + "browserPageViews": 15, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 2, + "mobileAppPageViewsB2B": 0, + "pageViews": 17, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0.06, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0.02, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 94.12, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0BXLLQWHH", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 1, + "browserSessionsB2B": 0, + "mobileAppSessions": 13, + "mobileAppSessionsB2B": 0, + "sessions": 14, + "sessionsB2B": 0, + "browserSessionPercentage": 0.01, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0.05, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0.04, + "sessionPercentageB2B": 0, + "browserPageViews": 2, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 30, + "mobileAppPageViewsB2B": 0, + "pageViews": 32, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0.01, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0.05, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0.04, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0BY9JV948", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 0, + "browserSessionsB2B": 0, + "mobileAppSessions": 1, + "mobileAppSessionsB2B": 0, + "sessions": 1, + "sessionsB2B": 0, + "browserSessionPercentage": 0, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0, + "sessionPercentageB2B": 0, + "browserPageViews": 0, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 2, + "mobileAppPageViewsB2B": 0, + "pageViews": 2, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0BXLJ1RCN", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 0, + "browserSessionsB2B": 0, + "mobileAppSessions": 8, + "mobileAppSessionsB2B": 0, + "sessions": 8, + "sessionsB2B": 0, + "browserSessionPercentage": 0, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0.03, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0.02, + "sessionPercentageB2B": 0, + "browserPageViews": 0, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 23, + "mobileAppPageViewsB2B": 0, + "pageViews": 23, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0.04, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0.03, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0BX6VB3BB", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 2, + "browserSessionsB2B": 0, + "mobileAppSessions": 3, + "mobileAppSessionsB2B": 0, + "sessions": 5, + "sessionsB2B": 0, + "browserSessionPercentage": 0.01, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0.01, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0.01, + "sessionPercentageB2B": 0, + "browserPageViews": 7, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 7, + "mobileAppPageViewsB2B": 0, + "pageViews": 14, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0.03, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0.01, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0.02, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0CWF3JD67", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 0, + "browserSessionsB2B": 0, + "mobileAppSessions": 1, + "mobileAppSessionsB2B": 0, + "sessions": 1, + "sessionsB2B": 0, + "browserSessionPercentage": 0, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0, + "sessionPercentageB2B": 0, + "browserPageViews": 0, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 2, + "mobileAppPageViewsB2B": 0, + "pageViews": 2, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0BZ8BXKS1", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 2, + "browserSessionsB2B": 0, + "mobileAppSessions": 1, + "mobileAppSessionsB2B": 0, + "sessions": 3, + "sessionsB2B": 0, + "browserSessionPercentage": 0.01, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0.01, + "sessionPercentageB2B": 0, + "browserPageViews": 2, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 2, + "mobileAppPageViewsB2B": 0, + "pageViews": 4, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0.01, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0BZ4VLP75", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 13, + "browserSessionsB2B": 0, + "mobileAppSessions": 35, + "mobileAppSessionsB2B": 1, + "sessions": 48, + "sessionsB2B": 1, + "browserSessionPercentage": 0.08, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0.14, + "mobileAppSessionPercentageB2B": 0.29, + "sessionPercentage": 0.12, + "sessionPercentageB2B": 0.13, + "browserPageViews": 25, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 82, + "mobileAppPageViewsB2B": 2, + "pageViews": 107, + "pageViewsB2B": 2, + "browserPageViewsPercentage": 0.1, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0.14, + "mobileAppPageViewsPercentageB2B": 0.18, + "pageViewsPercentage": 0.13, + "pageViewsPercentageB2B": 0.11, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 100, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0CWDZHCV4", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 1, + "browserSessionsB2B": 0, + "mobileAppSessions": 0, + "mobileAppSessionsB2B": 0, + "sessions": 1, + "sessionsB2B": 0, + "browserSessionPercentage": 0.01, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0, + "sessionPercentageB2B": 0, + "browserPageViews": 1, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 0, + "mobileAppPageViewsB2B": 0, + "pageViews": 1, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0BZ838KH6", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 1, + "browserSessionsB2B": 0, + "mobileAppSessions": 5, + "mobileAppSessionsB2B": 0, + "sessions": 6, + "sessionsB2B": 0, + "browserSessionPercentage": 0.01, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0.02, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0.02, + "sessionPercentageB2B": 0, + "browserPageViews": 2, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 13, + "mobileAppPageViewsB2B": 0, + "pageViews": 15, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0.01, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0.02, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0.02, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0BXJ95XC7", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 3, + "browserSessionsB2B": 0, + "mobileAppSessions": 6, + "mobileAppSessionsB2B": 0, + "sessions": 9, + "sessionsB2B": 0, + "browserSessionPercentage": 0.02, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0.02, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0.02, + "sessionPercentageB2B": 0, + "browserPageViews": 3, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 6, + "mobileAppPageViewsB2B": 0, + "pageViews": 9, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0.01, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0.01, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0.01, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0BNG36NQ7", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 4, + "browserSessionsB2B": 0, + "mobileAppSessions": 14, + "mobileAppSessionsB2B": 0, + "sessions": 18, + "sessionsB2B": 0, + "browserSessionPercentage": 0.03, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0.06, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0.05, + "sessionPercentageB2B": 0, + "browserPageViews": 7, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 30, + "mobileAppPageViewsB2B": 0, + "pageViews": 37, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0.03, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0.05, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0.04, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 95, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0BN8VYXLD", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 3, + "browserSessionsB2B": 0, + "mobileAppSessions": 4, + "mobileAppSessionsB2B": 0, + "sessions": 7, + "sessionsB2B": 0, + "browserSessionPercentage": 0.02, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0.02, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0.02, + "sessionPercentageB2B": 0, + "browserPageViews": 3, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 6, + "mobileAppPageViewsB2B": 0, + "pageViews": 9, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0.01, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0.01, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0.01, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0BYDMCGQG", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 0, + "browserSessionsB2B": 0, + "mobileAppSessions": 2, + "mobileAppSessionsB2B": 0, + "sessions": 2, + "sessionsB2B": 0, + "browserSessionPercentage": 0, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0.01, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0.01, + "sessionPercentageB2B": 0, + "browserPageViews": 0, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 5, + "mobileAppPageViewsB2B": 0, + "pageViews": 5, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0.01, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0.01, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 33.33, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0CWF4W99Y", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 1, + "browserSessionsB2B": 0, + "mobileAppSessions": 1, + "mobileAppSessionsB2B": 0, + "sessions": 2, + "sessionsB2B": 0, + "browserSessionPercentage": 0.01, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0.01, + "sessionPercentageB2B": 0, + "browserPageViews": 1, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 3, + "mobileAppPageViewsB2B": 0, + "pageViews": 4, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0.01, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0BN8PY5JC", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 9, + "browserSessionsB2B": 1, + "mobileAppSessions": 17, + "mobileAppSessionsB2B": 0, + "sessions": 26, + "sessionsB2B": 1, + "browserSessionPercentage": 0.06, + "browserSessionPercentageB2B": 0.23, + "mobileAppSessionPercentage": 0.07, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0.07, + "sessionPercentageB2B": 0.13, + "browserPageViews": 22, + "browserPageViewsB2B": 9, + "mobileAppPageViews": 41, + "mobileAppPageViewsB2B": 0, + "pageViews": 63, + "pageViewsB2B": 9, + "browserPageViewsPercentage": 0.08, + "browserPageViewsPercentageB2B": 1.29, + "mobileAppPageViewsPercentage": 0.07, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0.07, + "pageViewsPercentageB2B": 0.5, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 100, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0CM3JGCRP", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 2, + "browserSessionsB2B": 0, + "mobileAppSessions": 5, + "mobileAppSessionsB2B": 0, + "sessions": 7, + "sessionsB2B": 0, + "browserSessionPercentage": 0.01, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0.02, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0.02, + "sessionPercentageB2B": 0, + "browserPageViews": 3, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 12, + "mobileAppPageViewsB2B": 0, + "pageViews": 15, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0.01, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0.02, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0.02, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0CM27MD68", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 2, + "browserSessionsB2B": 0, + "mobileAppSessions": 4, + "mobileAppSessionsB2B": 0, + "sessions": 6, + "sessionsB2B": 0, + "browserSessionPercentage": 0.01, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0.02, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0.02, + "sessionPercentageB2B": 0, + "browserPageViews": 4, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 8, + "mobileAppPageViewsB2B": 0, + "pageViews": 12, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0.02, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0.01, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0.01, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0BXJCR4D1", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 2, + "browserSessionsB2B": 0, + "mobileAppSessions": 8, + "mobileAppSessionsB2B": 0, + "sessions": 10, + "sessionsB2B": 0, + "browserSessionPercentage": 0.01, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0.03, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0.03, + "sessionPercentageB2B": 0, + "browserPageViews": 4, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 21, + "mobileAppPageViewsB2B": 0, + "pageViews": 25, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0.02, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0.04, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0.03, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0BRKGS7K2", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 14, + "browserSessionsB2B": 1, + "mobileAppSessions": 29, + "mobileAppSessionsB2B": 0, + "sessions": 43, + "sessionsB2B": 1, + "browserSessionPercentage": 0.09, + "browserSessionPercentageB2B": 0.23, + "mobileAppSessionPercentage": 0.12, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0.11, + "sessionPercentageB2B": 0.13, + "browserPageViews": 34, + "browserPageViewsB2B": 2, + "mobileAppPageViews": 74, + "mobileAppPageViewsB2B": 0, + "pageViews": 108, + "pageViewsB2B": 2, + "browserPageViewsPercentage": 0.13, + "browserPageViewsPercentageB2B": 0.29, + "mobileAppPageViewsPercentage": 0.13, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0.13, + "pageViewsPercentageB2B": 0.11, + "buyBoxPercentage": 98.57, + "buyBoxPercentageB2B": 100, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0BNFYSCX8", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 15, + "browserSessionsB2B": 1, + "mobileAppSessions": 36, + "mobileAppSessionsB2B": 1, + "sessions": 51, + "sessionsB2B": 2, + "browserSessionPercentage": 0.1, + "browserSessionPercentageB2B": 0.23, + "mobileAppSessionPercentage": 0.15, + "mobileAppSessionPercentageB2B": 0.29, + "sessionPercentage": 0.13, + "sessionPercentageB2B": 0.26, + "browserPageViews": 33, + "browserPageViewsB2B": 2, + "mobileAppPageViews": 103, + "mobileAppPageViewsB2B": 2, + "pageViews": 136, + "pageViewsB2B": 4, + "browserPageViewsPercentage": 0.13, + "browserPageViewsPercentageB2B": 0.29, + "mobileAppPageViewsPercentage": 0.18, + "mobileAppPageViewsPercentageB2B": 0.18, + "pageViewsPercentage": 0.16, + "pageViewsPercentageB2B": 0.22, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 100, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0BZ8NSFXT", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 1, + "browserSessionsB2B": 0, + "mobileAppSessions": 0, + "mobileAppSessionsB2B": 0, + "sessions": 1, + "sessionsB2B": 0, + "browserSessionPercentage": 0.01, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0, + "sessionPercentageB2B": 0, + "browserPageViews": 1, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 0, + "mobileAppPageViewsB2B": 0, + "pageViews": 1, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0BXJDM9M6", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 2, + "browserSessionsB2B": 0, + "mobileAppSessions": 5, + "mobileAppSessionsB2B": 0, + "sessions": 7, + "sessionsB2B": 0, + "browserSessionPercentage": 0.01, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0.02, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0.02, + "sessionPercentageB2B": 0, + "browserPageViews": 2, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 5, + "mobileAppPageViewsB2B": 0, + "pageViews": 7, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0.01, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0.01, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0.01, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0BXP26HY3", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 6, + "browserSessionsB2B": 0, + "mobileAppSessions": 6, + "mobileAppSessionsB2B": 0, + "sessions": 12, + "sessionsB2B": 0, + "browserSessionPercentage": 0.04, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0.02, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0.03, + "sessionPercentageB2B": 0, + "browserPageViews": 10, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 13, + "mobileAppPageViewsB2B": 0, + "pageViews": 23, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0.04, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0.02, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0.03, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0BJQKBVXF", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 1, + "browserSessionsB2B": 0, + "mobileAppSessions": 12, + "mobileAppSessionsB2B": 0, + "sessions": 13, + "sessionsB2B": 0, + "browserSessionPercentage": 0.01, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0.05, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0.03, + "sessionPercentageB2B": 0, + "browserPageViews": 1, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 27, + "mobileAppPageViewsB2B": 0, + "pageViews": 28, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0.05, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0.03, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 93.33, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0BNQPYZD7", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 2, + "browserSessionsB2B": 0, + "mobileAppSessions": 11, + "mobileAppSessionsB2B": 2, + "sessions": 13, + "sessionsB2B": 2, + "browserSessionPercentage": 0.01, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0.04, + "mobileAppSessionPercentageB2B": 0.59, + "sessionPercentage": 0.03, + "sessionPercentageB2B": 0.26, + "browserPageViews": 4, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 26, + "mobileAppPageViewsB2B": 4, + "pageViews": 30, + "pageViewsB2B": 4, + "browserPageViewsPercentage": 0.02, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0.04, + "mobileAppPageViewsPercentageB2B": 0.36, + "pageViewsPercentage": 0.04, + "pageViewsPercentageB2B": 0.22, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 100, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0BN8RWPZV", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 12, + "browserSessionsB2B": 1, + "mobileAppSessions": 34, + "mobileAppSessionsB2B": 1, + "sessions": 46, + "sessionsB2B": 2, + "browserSessionPercentage": 0.08, + "browserSessionPercentageB2B": 0.23, + "mobileAppSessionPercentage": 0.14, + "mobileAppSessionPercentageB2B": 0.29, + "sessionPercentage": 0.12, + "sessionPercentageB2B": 0.26, + "browserPageViews": 21, + "browserPageViewsB2B": 1, + "mobileAppPageViews": 78, + "mobileAppPageViewsB2B": 2, + "pageViews": 99, + "pageViewsB2B": 3, + "browserPageViewsPercentage": 0.08, + "browserPageViewsPercentageB2B": 0.14, + "mobileAppPageViewsPercentage": 0.13, + "mobileAppPageViewsPercentageB2B": 0.18, + "pageViewsPercentage": 0.12, + "pageViewsPercentageB2B": 0.17, + "buyBoxPercentage": 98.28, + "buyBoxPercentageB2B": 100, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0BXB44QLH", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 0, + "browserSessionsB2B": 0, + "mobileAppSessions": 2, + "mobileAppSessionsB2B": 0, + "sessions": 2, + "sessionsB2B": 0, + "browserSessionPercentage": 0, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0.01, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0.01, + "sessionPercentageB2B": 0, + "browserPageViews": 0, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 4, + "mobileAppPageViewsB2B": 0, + "pageViews": 4, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0.01, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0BX9G2LKR", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 4, + "browserSessionsB2B": 0, + "mobileAppSessions": 9, + "mobileAppSessionsB2B": 0, + "sessions": 13, + "sessionsB2B": 0, + "browserSessionPercentage": 0.03, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0.04, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0.03, + "sessionPercentageB2B": 0, + "browserPageViews": 5, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 22, + "mobileAppPageViewsB2B": 0, + "pageViews": 27, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0.02, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0.04, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0.03, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0CT5CJYCN", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 2, + "browserSessionsB2B": 0, + "mobileAppSessions": 0, + "mobileAppSessionsB2B": 0, + "sessions": 2, + "sessionsB2B": 0, + "browserSessionPercentage": 0.01, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0.01, + "sessionPercentageB2B": 0, + "browserPageViews": 2, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 0, + "mobileAppPageViewsB2B": 0, + "pageViews": 2, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0.01, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0BZ579FDT", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 3, + "browserSessionsB2B": 0, + "mobileAppSessions": 6, + "mobileAppSessionsB2B": 0, + "sessions": 9, + "sessionsB2B": 0, + "browserSessionPercentage": 0.02, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0.02, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0.02, + "sessionPercentageB2B": 0, + "browserPageViews": 6, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 14, + "mobileAppPageViewsB2B": 0, + "pageViews": 20, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0.02, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0.02, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0.02, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0BN9DTWQ2", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 0, + "browserSessionsB2B": 0, + "mobileAppSessions": 4, + "mobileAppSessionsB2B": 0, + "sessions": 4, + "sessionsB2B": 0, + "browserSessionPercentage": 0, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0.02, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0.01, + "sessionPercentageB2B": 0, + "browserPageViews": 0, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 21, + "mobileAppPageViewsB2B": 0, + "pageViews": 21, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0.04, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0.02, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0BN8WX36F", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 2, + "browserSessionsB2B": 1, + "mobileAppSessions": 9, + "mobileAppSessionsB2B": 1, + "sessions": 11, + "sessionsB2B": 2, + "browserSessionPercentage": 0.01, + "browserSessionPercentageB2B": 0.23, + "mobileAppSessionPercentage": 0.04, + "mobileAppSessionPercentageB2B": 0.29, + "sessionPercentage": 0.03, + "sessionPercentageB2B": 0.26, + "browserPageViews": 7, + "browserPageViewsB2B": 5, + "mobileAppPageViews": 22, + "mobileAppPageViewsB2B": 3, + "pageViews": 29, + "pageViewsB2B": 8, + "browserPageViewsPercentage": 0.03, + "browserPageViewsPercentageB2B": 0.71, + "mobileAppPageViewsPercentage": 0.04, + "mobileAppPageViewsPercentageB2B": 0.27, + "pageViewsPercentage": 0.03, + "pageViewsPercentageB2B": 0.44, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 100, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0BKLJCXDL", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 7, + "browserSessionsB2B": 0, + "mobileAppSessions": 3, + "mobileAppSessionsB2B": 0, + "sessions": 10, + "sessionsB2B": 0, + "browserSessionPercentage": 0.05, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0.01, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0.03, + "sessionPercentageB2B": 0, + "browserPageViews": 19, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 8, + "mobileAppPageViewsB2B": 0, + "pageViews": 27, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0.07, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0.01, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0.03, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0BZ8BRRQK", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 6, + "browserSessionsB2B": 0, + "mobileAppSessions": 11, + "mobileAppSessionsB2B": 0, + "sessions": 17, + "sessionsB2B": 0, + "browserSessionPercentage": 0.04, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0.04, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0.04, + "sessionPercentageB2B": 0, + "browserPageViews": 11, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 32, + "mobileAppPageViewsB2B": 0, + "pageViews": 43, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0.04, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0.06, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0.05, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 96.15, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0BXLK9VZQ", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 1, + "browserSessionsB2B": 0, + "mobileAppSessions": 1, + "mobileAppSessionsB2B": 0, + "sessions": 2, + "sessionsB2B": 0, + "browserSessionPercentage": 0.01, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0.01, + "sessionPercentageB2B": 0, + "browserPageViews": 1, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 1, + "mobileAppPageViewsB2B": 0, + "pageViews": 2, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0BK9BPYH6", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 6, + "browserSessionsB2B": 0, + "mobileAppSessions": 6, + "mobileAppSessionsB2B": 0, + "sessions": 12, + "sessionsB2B": 0, + "browserSessionPercentage": 0.04, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0.02, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0.03, + "sessionPercentageB2B": 0, + "browserPageViews": 21, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 15, + "mobileAppPageViewsB2B": 0, + "pageViews": 36, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0.08, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0.03, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0.04, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0BX61WVKQ", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 3, + "browserSessionsB2B": 0, + "mobileAppSessions": 7, + "mobileAppSessionsB2B": 0, + "sessions": 10, + "sessionsB2B": 0, + "browserSessionPercentage": 0.02, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0.03, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0.03, + "sessionPercentageB2B": 0, + "browserPageViews": 6, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 15, + "mobileAppPageViewsB2B": 0, + "pageViews": 21, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0.02, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0.03, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0.02, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0BPJQ567M", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 4, + "browserSessionsB2B": 0, + "mobileAppSessions": 6, + "mobileAppSessionsB2B": 0, + "sessions": 10, + "sessionsB2B": 0, + "browserSessionPercentage": 0.03, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0.02, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0.03, + "sessionPercentageB2B": 0, + "browserPageViews": 4, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 9, + "mobileAppPageViewsB2B": 0, + "pageViews": 13, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0.02, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0.02, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0.02, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0BZ53BPQ8", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 1, + "browserSessionsB2B": 0, + "mobileAppSessions": 4, + "mobileAppSessionsB2B": 0, + "sessions": 5, + "sessionsB2B": 0, + "browserSessionPercentage": 0.01, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0.02, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0.01, + "sessionPercentageB2B": 0, + "browserPageViews": 3, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 10, + "mobileAppPageViewsB2B": 0, + "pageViews": 13, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0.01, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0.02, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0.02, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0CWF3YWW7", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 0, + "browserSessionsB2B": 0, + "mobileAppSessions": 3, + "mobileAppSessionsB2B": 0, + "sessions": 3, + "sessionsB2B": 0, + "browserSessionPercentage": 0, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0.01, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0.01, + "sessionPercentageB2B": 0, + "browserPageViews": 0, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 6, + "mobileAppPageViewsB2B": 0, + "pageViews": 6, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0.01, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0.01, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0BX4FSKXQ", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 2, + "browserSessionsB2B": 0, + "mobileAppSessions": 1, + "mobileAppSessionsB2B": 0, + "sessions": 3, + "sessionsB2B": 0, + "browserSessionPercentage": 0.01, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0.01, + "sessionPercentageB2B": 0, + "browserPageViews": 4, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 3, + "mobileAppPageViewsB2B": 0, + "pageViews": 7, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0.02, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0.01, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0.01, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 50, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0CWF2QGZX", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 1, + "browserSessionsB2B": 0, + "mobileAppSessions": 0, + "mobileAppSessionsB2B": 0, + "sessions": 1, + "sessionsB2B": 0, + "browserSessionPercentage": 0.01, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0, + "sessionPercentageB2B": 0, + "browserPageViews": 1, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 0, + "mobileAppPageViewsB2B": 0, + "pageViews": 1, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0BXLDNVSG", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 2, + "browserSessionsB2B": 0, + "mobileAppSessions": 1, + "mobileAppSessionsB2B": 0, + "sessions": 3, + "sessionsB2B": 0, + "browserSessionPercentage": 0.01, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0.01, + "sessionPercentageB2B": 0, + "browserPageViews": 5, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 2, + "mobileAppPageViewsB2B": 0, + "pageViews": 7, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0.02, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0.01, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0BZ4WGQWZ", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 3, + "browserSessionsB2B": 0, + "mobileAppSessions": 4, + "mobileAppSessionsB2B": 1, + "sessions": 7, + "sessionsB2B": 1, + "browserSessionPercentage": 0.02, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0.02, + "mobileAppSessionPercentageB2B": 0.29, + "sessionPercentage": 0.02, + "sessionPercentageB2B": 0.13, + "browserPageViews": 4, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 12, + "mobileAppPageViewsB2B": 4, + "pageViews": 16, + "pageViewsB2B": 4, + "browserPageViewsPercentage": 0.02, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0.02, + "mobileAppPageViewsPercentageB2B": 0.36, + "pageViewsPercentage": 0.02, + "pageViewsPercentageB2B": 0.22, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 100, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0BPJYBZG6", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 0, + "browserSessionsB2B": 0, + "mobileAppSessions": 3, + "mobileAppSessionsB2B": 0, + "sessions": 3, + "sessionsB2B": 0, + "browserSessionPercentage": 0, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0.01, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0.01, + "sessionPercentageB2B": 0, + "browserPageViews": 0, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 4, + "mobileAppPageViewsB2B": 0, + "pageViews": 4, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0.01, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0BXB51Q6N", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 0, + "browserSessionsB2B": 0, + "mobileAppSessions": 5, + "mobileAppSessionsB2B": 0, + "sessions": 5, + "sessionsB2B": 0, + "browserSessionPercentage": 0, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0.02, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0.01, + "sessionPercentageB2B": 0, + "browserPageViews": 0, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 14, + "mobileAppPageViewsB2B": 0, + "pageViews": 14, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0.02, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0.02, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 85.71, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0BXPS88XZ", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 4, + "browserSessionsB2B": 0, + "mobileAppSessions": 11, + "mobileAppSessionsB2B": 0, + "sessions": 15, + "sessionsB2B": 0, + "browserSessionPercentage": 0.03, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0.04, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0.04, + "sessionPercentageB2B": 0, + "browserPageViews": 9, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 21, + "mobileAppPageViewsB2B": 0, + "pageViews": 30, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0.03, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0.04, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0.04, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0BXY5BC6K", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 1, + "browserSessionsB2B": 0, + "mobileAppSessions": 6, + "mobileAppSessionsB2B": 0, + "sessions": 7, + "sessionsB2B": 0, + "browserSessionPercentage": 0.01, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0.02, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0.02, + "sessionPercentageB2B": 0, + "browserPageViews": 4, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 14, + "mobileAppPageViewsB2B": 0, + "pageViews": 18, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0.02, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0.02, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0.02, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0BK98D4YR", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 2, + "browserSessionsB2B": 0, + "mobileAppSessions": 4, + "mobileAppSessionsB2B": 0, + "sessions": 6, + "sessionsB2B": 0, + "browserSessionPercentage": 0.01, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0.02, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0.02, + "sessionPercentageB2B": 0, + "browserPageViews": 3, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 8, + "mobileAppPageViewsB2B": 0, + "pageViews": 11, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0.01, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0.01, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0.01, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0CWF4LDVM", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 1, + "browserSessionsB2B": 1, + "mobileAppSessions": 1, + "mobileAppSessionsB2B": 0, + "sessions": 2, + "sessionsB2B": 1, + "browserSessionPercentage": 0.01, + "browserSessionPercentageB2B": 0.23, + "mobileAppSessionPercentage": 0, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0.01, + "sessionPercentageB2B": 0.13, + "browserPageViews": 1, + "browserPageViewsB2B": 1, + "mobileAppPageViews": 2, + "mobileAppPageViewsB2B": 0, + "pageViews": 3, + "pageViewsB2B": 1, + "browserPageViewsPercentage": 0, + "browserPageViewsPercentageB2B": 0.14, + "mobileAppPageViewsPercentage": 0, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0, + "pageViewsPercentageB2B": 0.06, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 100, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0BXPLWSMD", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 2, + "browserSessionsB2B": 0, + "mobileAppSessions": 2, + "mobileAppSessionsB2B": 0, + "sessions": 4, + "sessionsB2B": 0, + "browserSessionPercentage": 0.01, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0.01, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0.01, + "sessionPercentageB2B": 0, + "browserPageViews": 6, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 3, + "mobileAppPageViewsB2B": 0, + "pageViews": 9, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0.02, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0.01, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0.01, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0BYK4K8R8", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 1, + "browserSessionsB2B": 0, + "mobileAppSessions": 2, + "mobileAppSessionsB2B": 0, + "sessions": 3, + "sessionsB2B": 0, + "browserSessionPercentage": 0.01, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0.01, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0.01, + "sessionPercentageB2B": 0, + "browserPageViews": 1, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 4, + "mobileAppPageViewsB2B": 0, + "pageViews": 5, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0.01, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0.01, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0BZ4XS3JH", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 3, + "browserSessionsB2B": 1, + "mobileAppSessions": 6, + "mobileAppSessionsB2B": 0, + "sessions": 9, + "sessionsB2B": 1, + "browserSessionPercentage": 0.02, + "browserSessionPercentageB2B": 0.23, + "mobileAppSessionPercentage": 0.02, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0.02, + "sessionPercentageB2B": 0.13, + "browserPageViews": 3, + "browserPageViewsB2B": 1, + "mobileAppPageViews": 14, + "mobileAppPageViewsB2B": 0, + "pageViews": 17, + "pageViewsB2B": 1, + "browserPageViewsPercentage": 0.01, + "browserPageViewsPercentageB2B": 0.14, + "mobileAppPageViewsPercentage": 0.02, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0.02, + "pageViewsPercentageB2B": 0.06, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 100, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0BZ8L314V", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 0, + "browserSessionsB2B": 0, + "mobileAppSessions": 5, + "mobileAppSessionsB2B": 0, + "sessions": 5, + "sessionsB2B": 0, + "browserSessionPercentage": 0, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0.02, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0.01, + "sessionPercentageB2B": 0, + "browserPageViews": 0, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 11, + "mobileAppPageViewsB2B": 0, + "pageViews": 11, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0.02, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0.01, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0BXSWCL7X", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 9, + "browserSessionsB2B": 0, + "mobileAppSessions": 8, + "mobileAppSessionsB2B": 0, + "sessions": 17, + "sessionsB2B": 0, + "browserSessionPercentage": 0.06, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0.03, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0.04, + "sessionPercentageB2B": 0, + "browserPageViews": 12, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 18, + "mobileAppPageViewsB2B": 0, + "pageViews": 30, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0.05, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0.03, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0.04, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0BNQS12XM", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 2, + "browserSessionsB2B": 0, + "mobileAppSessions": 1, + "mobileAppSessionsB2B": 0, + "sessions": 3, + "sessionsB2B": 0, + "browserSessionPercentage": 0.01, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0.01, + "sessionPercentageB2B": 0, + "browserPageViews": 3, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 3, + "mobileAppPageViewsB2B": 0, + "pageViews": 6, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0.01, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0.01, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0.01, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0BZ8589HQ", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 0, + "browserSessionsB2B": 0, + "mobileAppSessions": 2, + "mobileAppSessionsB2B": 0, + "sessions": 2, + "sessionsB2B": 0, + "browserSessionPercentage": 0, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0.01, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0.01, + "sessionPercentageB2B": 0, + "browserPageViews": 0, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 4, + "mobileAppPageViewsB2B": 0, + "pageViews": 4, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0.01, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0BYDKZFS2", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 0, + "browserSessionsB2B": 0, + "mobileAppSessions": 2, + "mobileAppSessionsB2B": 0, + "sessions": 2, + "sessionsB2B": 0, + "browserSessionPercentage": 0, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0.01, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0.01, + "sessionPercentageB2B": 0, + "browserPageViews": 0, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 7, + "mobileAppPageViewsB2B": 0, + "pageViews": 7, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0.01, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0.01, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0BZ8VG2JR", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 5, + "browserSessionsB2B": 0, + "mobileAppSessions": 10, + "mobileAppSessionsB2B": 0, + "sessions": 15, + "sessionsB2B": 0, + "browserSessionPercentage": 0.03, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0.04, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0.04, + "sessionPercentageB2B": 0, + "browserPageViews": 10, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 22, + "mobileAppPageViewsB2B": 0, + "pageViews": 32, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0.04, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0.04, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0.04, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0BX64DX15", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 4, + "browserSessionsB2B": 1, + "mobileAppSessions": 17, + "mobileAppSessionsB2B": 0, + "sessions": 21, + "sessionsB2B": 1, + "browserSessionPercentage": 0.03, + "browserSessionPercentageB2B": 0.23, + "mobileAppSessionPercentage": 0.07, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0.05, + "sessionPercentageB2B": 0.13, + "browserPageViews": 8, + "browserPageViewsB2B": 2, + "mobileAppPageViews": 41, + "mobileAppPageViewsB2B": 0, + "pageViews": 49, + "pageViewsB2B": 2, + "browserPageViewsPercentage": 0.03, + "browserPageViewsPercentageB2B": 0.29, + "mobileAppPageViewsPercentage": 0.07, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0.06, + "pageViewsPercentageB2B": 0.11, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 100, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0BZ8W2GTZ", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 2, + "browserSessionsB2B": 0, + "mobileAppSessions": 4, + "mobileAppSessionsB2B": 0, + "sessions": 6, + "sessionsB2B": 0, + "browserSessionPercentage": 0.01, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0.02, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0.02, + "sessionPercentageB2B": 0, + "browserPageViews": 4, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 10, + "mobileAppPageViewsB2B": 0, + "pageViews": 14, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0.02, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0.02, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0.02, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0BZ81GPXT", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 8, + "browserSessionsB2B": 0, + "mobileAppSessions": 4, + "mobileAppSessionsB2B": 0, + "sessions": 12, + "sessionsB2B": 0, + "browserSessionPercentage": 0.05, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0.02, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0.03, + "sessionPercentageB2B": 0, + "browserPageViews": 12, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 12, + "mobileAppPageViewsB2B": 0, + "pageViews": 24, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0.05, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0.02, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0.03, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0BX6R3KNR", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 4, + "browserSessionsB2B": 0, + "mobileAppSessions": 18, + "mobileAppSessionsB2B": 1, + "sessions": 22, + "sessionsB2B": 1, + "browserSessionPercentage": 0.03, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0.07, + "mobileAppSessionPercentageB2B": 0.29, + "sessionPercentage": 0.06, + "sessionPercentageB2B": 0.13, + "browserPageViews": 6, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 44, + "mobileAppPageViewsB2B": 2, + "pageViews": 50, + "pageViewsB2B": 2, + "browserPageViewsPercentage": 0.02, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0.08, + "mobileAppPageViewsPercentageB2B": 0.18, + "pageViewsPercentage": 0.06, + "pageViewsPercentageB2B": 0.11, + "buyBoxPercentage": 93.1, + "buyBoxPercentageB2B": 100, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0CM26W8F3", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 3, + "browserSessionsB2B": 0, + "mobileAppSessions": 31, + "mobileAppSessionsB2B": 0, + "sessions": 34, + "sessionsB2B": 0, + "browserSessionPercentage": 0.02, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0.13, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0.09, + "sessionPercentageB2B": 0, + "browserPageViews": 8, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 70, + "mobileAppPageViewsB2B": 0, + "pageViews": 78, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0.03, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0.12, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0.09, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0CWF23L25", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 1, + "browserSessionsB2B": 0, + "mobileAppSessions": 0, + "mobileAppSessionsB2B": 0, + "sessions": 1, + "sessionsB2B": 0, + "browserSessionPercentage": 0.01, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0, + "sessionPercentageB2B": 0, + "browserPageViews": 1, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 0, + "mobileAppPageViewsB2B": 0, + "pageViews": 1, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0CWF3BKH1", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 1, + "browserSessionsB2B": 0, + "mobileAppSessions": 0, + "mobileAppSessionsB2B": 0, + "sessions": 1, + "sessionsB2B": 0, + "browserSessionPercentage": 0.01, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0, + "sessionPercentageB2B": 0, + "browserPageViews": 2, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 0, + "mobileAppPageViewsB2B": 0, + "pageViews": 2, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0.01, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0BX66BD7S", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 11, + "browserSessionsB2B": 1, + "mobileAppSessions": 12, + "mobileAppSessionsB2B": 0, + "sessions": 23, + "sessionsB2B": 1, + "browserSessionPercentage": 0.07, + "browserSessionPercentageB2B": 0.23, + "mobileAppSessionPercentage": 0.05, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0.06, + "sessionPercentageB2B": 0.13, + "browserPageViews": 26, + "browserPageViewsB2B": 2, + "mobileAppPageViews": 28, + "mobileAppPageViewsB2B": 0, + "pageViews": 54, + "pageViewsB2B": 2, + "browserPageViewsPercentage": 0.1, + "browserPageViewsPercentageB2B": 0.29, + "mobileAppPageViewsPercentage": 0.05, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0.06, + "pageViewsPercentageB2B": 0.11, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 100, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0BXJCTN5Q", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 3, + "browserSessionsB2B": 0, + "mobileAppSessions": 14, + "mobileAppSessionsB2B": 1, + "sessions": 17, + "sessionsB2B": 1, + "browserSessionPercentage": 0.02, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0.06, + "mobileAppSessionPercentageB2B": 0.29, + "sessionPercentage": 0.04, + "sessionPercentageB2B": 0.13, + "browserPageViews": 8, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 41, + "mobileAppPageViewsB2B": 3, + "pageViews": 49, + "pageViewsB2B": 3, + "browserPageViewsPercentage": 0.03, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0.07, + "mobileAppPageViewsPercentageB2B": 0.27, + "pageViewsPercentage": 0.06, + "pageViewsPercentageB2B": 0.17, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 100, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0CM26HCRN", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 2, + "browserSessionsB2B": 0, + "mobileAppSessions": 2, + "mobileAppSessionsB2B": 0, + "sessions": 4, + "sessionsB2B": 0, + "browserSessionPercentage": 0.01, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0.01, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0.01, + "sessionPercentageB2B": 0, + "browserPageViews": 4, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 6, + "mobileAppPageViewsB2B": 0, + "pageViews": 10, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0.02, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0.01, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0.01, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0BX99CYSM", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 25, + "browserSessionsB2B": 1, + "mobileAppSessions": 63, + "mobileAppSessionsB2B": 1, + "sessions": 88, + "sessionsB2B": 2, + "browserSessionPercentage": 0.16, + "browserSessionPercentageB2B": 0.23, + "mobileAppSessionPercentage": 0.26, + "mobileAppSessionPercentageB2B": 0.29, + "sessionPercentage": 0.22, + "sessionPercentageB2B": 0.26, + "browserPageViews": 54, + "browserPageViewsB2B": 2, + "mobileAppPageViews": 150, + "mobileAppPageViewsB2B": 2, + "pageViews": 204, + "pageViewsB2B": 4, + "browserPageViewsPercentage": 0.21, + "browserPageViewsPercentageB2B": 0.29, + "mobileAppPageViewsPercentage": 0.26, + "mobileAppPageViewsPercentageB2B": 0.18, + "pageViewsPercentage": 0.24, + "pageViewsPercentageB2B": 0.22, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 100, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0BYDS6D3X", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 0, + "browserSessionsB2B": 0, + "mobileAppSessions": 3, + "mobileAppSessionsB2B": 0, + "sessions": 3, + "sessionsB2B": 0, + "browserSessionPercentage": 0, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0.01, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0.01, + "sessionPercentageB2B": 0, + "browserPageViews": 0, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 8, + "mobileAppPageViewsB2B": 0, + "pageViews": 8, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0.01, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0.01, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0BXB5Q8WW", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 3, + "browserSessionsB2B": 0, + "mobileAppSessions": 8, + "mobileAppSessionsB2B": 0, + "sessions": 11, + "sessionsB2B": 0, + "browserSessionPercentage": 0.02, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0.03, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0.03, + "sessionPercentageB2B": 0, + "browserPageViews": 4, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 18, + "mobileAppPageViewsB2B": 0, + "pageViews": 22, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0.02, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0.03, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0.03, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0C3DF873W", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 5, + "browserSessionsB2B": 0, + "mobileAppSessions": 3, + "mobileAppSessionsB2B": 0, + "sessions": 8, + "sessionsB2B": 0, + "browserSessionPercentage": 0.03, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0.01, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0.02, + "sessionPercentageB2B": 0, + "browserPageViews": 6, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 6, + "mobileAppPageViewsB2B": 0, + "pageViews": 12, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0.02, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0.01, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0.01, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0C3D76JQH", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 12, + "browserSessionsB2B": 0, + "mobileAppSessions": 15, + "mobileAppSessionsB2B": 0, + "sessions": 27, + "sessionsB2B": 0, + "browserSessionPercentage": 0.08, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0.06, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0.07, + "sessionPercentageB2B": 0, + "browserPageViews": 13, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 30, + "mobileAppPageViewsB2B": 0, + "pageViews": 43, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0.05, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0.05, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0.05, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0BXP5VVJ1", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 0, + "browserSessionsB2B": 0, + "mobileAppSessions": 2, + "mobileAppSessionsB2B": 0, + "sessions": 2, + "sessionsB2B": 0, + "browserSessionPercentage": 0, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0.01, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0.01, + "sessionPercentageB2B": 0, + "browserPageViews": 0, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 5, + "mobileAppPageViewsB2B": 0, + "pageViews": 5, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0.01, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0.01, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0BXL8CHYL", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 1, + "browserSessionsB2B": 0, + "mobileAppSessions": 6, + "mobileAppSessionsB2B": 0, + "sessions": 7, + "sessionsB2B": 0, + "browserSessionPercentage": 0.01, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0.02, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0.02, + "sessionPercentageB2B": 0, + "browserPageViews": 2, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 18, + "mobileAppPageViewsB2B": 0, + "pageViews": 20, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0.01, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0.03, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0.02, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 92.31, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + }, + { + "parentAsin": "B0BZ4WH3M5", + "salesByAsin": { + "unitsOrdered": 0, + "unitsOrderedB2B": 0, + "orderedProductSales": { + "amount": 0, + "currencyCode": "USD" + }, + "orderedProductSalesB2B": { + "amount": 0, + "currencyCode": "USD" + }, + "totalOrderItems": 0, + "totalOrderItemsB2B": 0 + }, + "trafficByAsin": { + "browserSessions": 8, + "browserSessionsB2B": 0, + "mobileAppSessions": 11, + "mobileAppSessionsB2B": 0, + "sessions": 19, + "sessionsB2B": 0, + "browserSessionPercentage": 0.05, + "browserSessionPercentageB2B": 0, + "mobileAppSessionPercentage": 0.04, + "mobileAppSessionPercentageB2B": 0, + "sessionPercentage": 0.05, + "sessionPercentageB2B": 0, + "browserPageViews": 11, + "browserPageViewsB2B": 0, + "mobileAppPageViews": 23, + "mobileAppPageViewsB2B": 0, + "pageViews": 34, + "pageViewsB2B": 0, + "browserPageViewsPercentage": 0.04, + "browserPageViewsPercentageB2B": 0, + "mobileAppPageViewsPercentage": 0.04, + "mobileAppPageViewsPercentageB2B": 0, + "pageViewsPercentage": 0.04, + "pageViewsPercentageB2B": 0, + "buyBoxPercentage": 100, + "buyBoxPercentageB2B": 0, + "unitSessionPercentage": 0, + "unitSessionPercentageB2B": 0 + } + } + ] +} \ No newline at end of file diff --git a/src/test/java/com/example/statisticsapi/StatisticsApiApplicationTests.java b/src/test/java/com/example/statisticsapi/StatisticsApiApplicationTests.java index 9d43a3c..e715115 100644 --- a/src/test/java/com/example/statisticsapi/StatisticsApiApplicationTests.java +++ b/src/test/java/com/example/statisticsapi/StatisticsApiApplicationTests.java @@ -1,13 +1,7 @@ package com.example.statisticsapi; -import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; @SpringBootTest class StatisticsApiApplicationTests { - - @Test - void contextLoads() { - } - }