diff --git a/src/objects/Category.php b/src/objects/Category.php
index f1568e6..4d0f8f6 100644
--- a/src/objects/Category.php
+++ b/src/objects/Category.php
@@ -23,6 +23,12 @@ final class Category
*/
public $name;
+ /**
+ * The context free category name.
+ * @var string|null
+ */
+ public $contextFreeName;
+
/**
* List of all sub categories. null or [] (empty array) if the category has no sub categories.
* @var int[]|null
diff --git a/src/objects/Product.php b/src/objects/Product.php
index 97aadb8..2d50392 100644
--- a/src/objects/Product.php
+++ b/src/objects/Product.php
@@ -32,26 +32,6 @@ class Product
*/
public $variationCSV = null;
- /**
- * @deprecated use first upcList entry instead.
- * The UPC of the product. Caution: leading zeros are truncated.
- * @var string
- */
- public $upc = 0;
-
- /**
- * @deprecated use first eanList entry instead.
- * The EAN of the product. Caution: leading zeros are truncated.
- * @var string
- */
- public $ean = 0;
-
- /**
- * The manufacturer’s part number.
- * @var string|null
- */
- public $mpn = null;
-
/**
* Comma separated list of image names of the product. Full Amazon image path:
* https://images-na.ssl-images-amazon.com/images/I/_image name_
@@ -106,24 +86,6 @@ class Product
*/
public $brand = null;
- /**
- * The item's label. null if not available.
- * @var string|null
- */
- public $label = null;
-
- /**
- * The item's department. null if not available.
- * @var string|null
- */
- public $department = null;
-
- /**
- * The item's publisher. null if not available.
- * @var string|null
- */
- public $publisher = null;
-
/**
* The item's productGroup. null if not available.
* @var string|null
@@ -136,18 +98,6 @@ class Product
*/
public $partNumber = null;
- /**
- * The item's studio. null if not available.
- * @var string|null
- */
- public $studio = null;
-
- /**
- * The item's genre. null if not available.
- * @var string|null
- */
- public $genre = null;
-
/**
* The item's model. null if not available.
* @var string|null
@@ -172,12 +122,6 @@ class Product
*/
public $edition = null;
- /**
- * The item's platform. null if not available.
- * @var string|null
- */
- public $platform = null;
-
/**
* The item's format. null if not available.
* @var string|null
@@ -266,12 +210,6 @@ class Product
*/
public $description = null;
- /**
- * The item's format. null if not available.
- * @var int|null
- */
- public $hazardousMaterialType = null;
-
/**
* The package's height in millimeter. 0 or -1 if not available.
* @var int
@@ -377,11 +315,31 @@ class Product
public $lastEbayUpdate = 0;
/**
- * Availability of the Amazon offer {@link Product.AvailabilityType}.
+ * Availability of the Amazon offer {@link Product.AvailabilityType}. If Amazon offer exists but does not hold the buy box the value will be 2 (unknown).
+ * To request the Amazon availability in such cases the offers parameter is required.
* @var int
*/
public $availabilityAmazon = -1;
+ /**
+ * Contains subcategory rank histories. Each key represents the categoryId of the rank with the history in the corresponding value.
+ * @var array|null
+ */
+ public $salesRanks = null;
+
+ /**
+ * The category node id of the main sales rank. -1 if not available.
+ * @var int
+ */
+ public $salesRankReference = -1;
+
+ /**
+ * The category node id history of the main sales rank (format: timestamp, categoryId, […]). null if not available.
+ * @var int[]
+ */
+ public $salesRankReferenceHistory = null;
+
+
/**
* States the last time we have updated the product rating and review count, in Keepa Time minutes.
* Use {@link KeepaTime#keepaMinuteToUnixInMillis(int)} (long)} to get an uncompressed timestamp (Unix epoch time).
diff --git a/src/objects/Stats.php b/src/objects/Stats.php
index d257dbc..a024c65 100644
--- a/src/objects/Stats.php
+++ b/src/objects/Stats.php
@@ -238,6 +238,50 @@ class Stats
*/
public $buyBoxIsMAP = null;
+ /**
+ * The minimum order quantity of the buy box. -1 if not available, 0 if no limit exists.
+ * @var bool|null
+ */
+ public $buyBoxMinOrderQuantity = null;
+
+ /**
+ * The maximum order quantity of the buy box. -1 if not available, 0 if no limit exists.
+ * @var bool|null
+ */
+ public $buyBoxMaxOrderQuantity = null;
+
+ /**
+ * The availability message of the buy box. null if not available.
+ * Example: “In Stock.”
+ * @var string|null
+ */
+ public $buyBoxAvailabilityMessage = null;
+
+ /**
+ * The default shipping country of the buy box seller. null if not available. Example: “US”
+ * @var string|null
+ */
+ public $buyBoxShippingCountry = null;
+
+ /**
+ * If the buy box is Prime exclusive. null if not available.
+ * @var bool|null
+ */
+ public $buyBoxIsPrimeExclusive = null;
+
+ /**
+ * If the buy box is Prime eligible. null if not available.
+ * @var bool|null
+ */
+ public $buyBoxIsPrimeEligible = null;
+
+ /**
+ * If the buy box is a Prime Pantry offer. null if not available.
+ * @var bool|null
+ */
+ public $buyBoxIsPrimePantry = null;
+
+
/**
* Only set when the offers parameter was used. If the product is an add-on item (add-on Items ship with orders that include $25 or more of items shipped by Amazon).
* @var bool|null
diff --git a/src/tests/ProductRequestTest.php b/src/tests/ProductRequestTest.php
index 4bce3e0..c973c79 100644
--- a/src/tests/ProductRequestTest.php
+++ b/src/tests/ProductRequestTest.php
@@ -162,19 +162,6 @@ public function testFeatures()
self::assertGreaterThan(0, count($response->products[0]->features));
}
- /**
- * @throws \Exception
- */
- public function testHazardousMaterialType()
- {
- $request = Request::getProductRequest(AmazonLocale::US, 0, null, null, 0, true, ['B00EAN1APM']);
-
- $response = $this->api->sendRequestWithRetry($request);
- self::assertEquals($response->status, "OK");
- self::assertNotNull($response->products[0]->hazardousMaterialType);
- self::assertEquals(HazardousMaterialType::ORM_D_Class, $response->products[0]->hazardousMaterialType);
- }
-
/**
* @throws \Exception
*/
@@ -201,26 +188,6 @@ public function testMap()
self::assertNotNull($response->products[0]->newPriceIsMAP);
}
- /**
- * @throws \Exception
- */
- public function testPromotions()
- {
- $request = Request::getProductRequest(AmazonLocale::US, 0, null, null, 0, true, ['B006XISCNA']);
-
- $response = $this->api->sendRequestWithRetry($request);
- self::assertEquals($response->status, "OK");
- self::assertEquals(1, count($response->products));
- self::assertNotNull($response->products);
- self::assertGreaterThan(0, count($response->products));
- self::assertNotNull($response->products[0]->promotions);
- self::assertGreaterThan(0, count($response->products[0]->promotions));
- self::assertNotNull($response->products[0]->promotions[0]->benefitDescription);
- self::assertNotNull($response->products[0]->promotions[0]->eligibilityRequirementDescription);
- self::assertNotNull($response->products[0]->promotions[0]->promotionId);
- self::assertNotNull($response->products[0]->promotions[0]->type);
- }
-
/**
* @throws \Exception
@@ -468,4 +435,23 @@ public function testItemDimensions()
self::assertGreaterThan(0, $response->products[0]->itemLength);
self::assertGreaterThan(0, $response->products[0]->itemWeight);
}
+
+
+ /**
+ * @throws \Exception
+ */
+ public function testSalesRanks()
+ {
+ $request = Request::getProductRequest(AmazonLocale::DE, 20, null, null, 0, true, ['B07HB4TJH1']);
+
+ $response = $this->api->sendRequestWithRetry($request);
+ self::assertEquals($response->status, "OK");
+ self::assertEquals(1, count($response->products));
+ self::assertNotNull($response->products[0]->salesRanks);
+ foreach($response->products[0]->salesRanks as $caId => $historie)
+ {
+ self::assertGreaterThan(0, $caId);
+ self::assertGreaterThan(0, count($historie));
+ }
+ }
}
\ No newline at end of file