Product Feed Import via HTTP API - EN documentation - REES46 Manual
Page tree
Skip to end of metadata
Go to start of metadata

This topic helps you import your Product Feed via our HTTP API.

This page covers the following:

Why You May Need HTTP API for Product Feed Import

There are situations when the XML Product Feed option is unavailable:

  1. Too many items in your database (over 200,000)
  2. New arrivals come often and in small batches, which consistently results in "out of stock" pages for these lots after a short time. In this situation, importing every time a complete product feed with hundreds of thousands of items to update a few hundred is a waste a traffic and server resources.
  3. You need to constantly monitor your products (more often than once every 3 hours)

For the situations like these, we have developed a proper solution – HTTP API.

For the user of REES46 Niche Solutions: HTTP API supports a limited number of additional parameters (unlike the XML option), which may cause a poorer performance of the Niche Solution algorithms.

ATTENTION

Product feed import via HTTP API requires the following preparatory actions:

Also note that by default unauthorized HTTP request are rejected by our servers.

To use the HTTP requests feature, please first contact us at support@rees46.com, so we can whitelist your account.


Types of HTTP Requests

Our API supports the the following types:

OperationHTTP Request TypeDescription
OverwritePOSTRewrite the database removing all previously imported records and adding new items
AddPUTUpdate the database adding new items (no rewriting)
SyncPATCHSync product availability status
RemoveDELETERemove selected items from the database (mark the selected items as "out of stock")

TIP

In the situation lacking a technical feasibility to send DELETE, PATCH and PUT requests, use POST requests and add to the JSON-body a variable method with the corresponding value in the upper case.

Examples: method = PUT, method = PATCH, method = DELETE.


URL Structure

The requests are made through POST/PATCH/PUT/DELETE requests to http://api.rees46.com/import/products 

Include into the request the following header:

Content-Type: application/json

The data is sent in the form of a JSON-string (the body of the request).

Request Lifecycle

  1. API REES46 server receives the initial request
  2. The server verifies your access using your unique keys (variables shop_id, shop_secret standing for your Store Key and Secret Key from your Store Settings). 
    Note that if the shop_id and shop_secret values do not correlate with existing in our database, the server returns a 400 Bad request error.
  3. Upon a successful verification, the server sends the task to the processing queue.
  4. To inform your about it, the server returns you a 204 No body notification.
  5. When the task is successfully processed, you can see the renewed numbers in your REES46 account: on the Product Feed widget and the Product Catalog page.
  6. In case of a failure in processing, you get a notification email to the address you specified in your Store Settings on rees46.com.


Note that all keys are case-sensitive.

Data Array Syntax

'{
	shop_id: '...',
	shop_secret: '...',
	items: [item1, item2, ...]
}'

items is an array of JSON objects containing details of the imported items.

For a full list available details, consider this example of a JSON object:

{
	id:		   '...', // String (max 64). Required
	name:      '...', // String (max 255). Required
	price:      ...,  // Float (positive). Required
	oldprice:   ...,  // Float (positive). Optional
	currency:  '...', // Currency code: USD, RUB, EUR. Required.
	url:       '...', // String (URL). Required
	picture:   '...', // String (URL). Required
	available:  ...,  // Boolean (true, false). Required
	categories:[...], // Array of categories IDs. Required.
	locations: [location_price_1, location_price_2, ...], // Array of prices in locations. See below
	brand:     '...', // String
	barcode:   '...', // String
	price_margin: ...,// Integer
    tags:      [...], // Array of strings.
    is_child:   ...,  // Boolean (true, false).
	is_fashion  ...,  // Boolean (true, false).
    fashion:   { fashion_data }, // Object
    cosmetic:  { cosmetic_data } //Object
} 


A JSON object example for the users of REES46 Apparel & Accessories Niche Solution (code fashion; for more information on this topic, address the Apparel & Accessories section):

{
    "gender": "...",  // String. Required if gender is set. Not required for unisex items.
	"sizes":  [], 	// Array. Optional.
    "type":   "...",  // String. Required if sizes are set.
	"colors": [{color: "red", picture: "https://my-store.com/product/100500/images/red.jpg"}, {color: "...", picture: "..."}, ...], 
		// An array of objects with params of color. Optional.
} 


A JSON object example for the users of REES46 Cosmetics & Perfumes Niche Solution (code cosmetic; for more information on this topic, address the Cosmetics & Perfumes section):

{
    gender: '...',  // String. Required if gender is set. Not required for unisex items.
    hypoallergenic: '...', // Boolean. Optional.
    skin: { ... }, // Object. Optional.
    hair: { ... }, // Object. Optional.
    nail: { ... }, // Object. Optional.
    perfume: { ... }, // Object. Optional.
    periodic: '...', // Boolean. Optional.
    professional: '...' //Boolean. Optional.
} 


The object "Geographic location and price" specifies the product availability status for various cities/towns as well as any alterations in price in these cities/towns. Your default price is used if the price alterations have not been stated in this object.

NOTE

All the locations not specified in the object (variable locations) will show the "out of stock" status for the given product.

{
	"location": "...", // String. Required
	"price":     ... , // Float (positive). Optional.
	"oldprice":  ... , // Float (positive). Optional.
}

Advanced Request Example

Consider this advanced request example for a better understanding of the structure:

{
	// Store Key from the Store Settings in your personal account on rees46.com (Dashboard > Settings > Store Settings)
	"shop_id": 		"eehj3eu84299kg5ghw5a6743r8",	
	
	// Secret Key from the Store Settings in your personal account on rees46.com (Dashboard > Settings > Store Settings)
	"shop_secret": 	"pmd5362597thrgq8k256ep01t0",	
	
	// Your Product Feed
	"items": 			[
		// Item 1
		{
 
			// ID of this product in your store database
			"id":			6335
 
			// Name of the product
			"name":		"Hoverboard X286-D0",
 
			// Price
			"price":      1000",  
 
			// Currency
			"currency":  "USD",
 
			// URL of the product without any UTM-parameters or other tracking parameters
			"url" :       "https://store.com/products/6335.html",
 
			// URL of the product image
			"picture":   "https://store.com/pictures/6335.jpg",
 
			// Product availability status
			"available":  true, 
 
			// An array with category IDs for the categories this product is sold in (no breadcrumbs, only the end-categories)
			"categories": [17, 3],
 
			// Bar-code of the product
			"barcode": 17333838374318,
 
			// Pricing margin (e.g. 10%)
			"price_margin": 10,
 
			// Product availability in certain cities/towns (e.g. available only in NY and LA)
			"locations": [
				// In stock in New York, default price
				{
					"location": "us-ny"
				}
				// In stock in Los Angeles, price differs
				{
					"location": "us-la",
					"price": "1250"
				}
			],
 
			// Manufacturer
			"brand":     "Dr. Emmett Brown and Co",
 
			// Tags
		    "tags":      ["titanium", "steel", "sport"],
 
			// Product is for children
    		"is_child":   true,


		},
 
		// Item 2
		{
			"id":			133
			"name":		"red jacket",
			"price":      200,  
			"currency":  "USD",
			"url":       "https://store.com/products/133.html",
			"picture":   "https://store.com/pictures/133.jpg",
			"available":  true, 
			"categories": [33],
 
			// In stock in New York
			"locations": [
				{ "location": "us-ny" }
			],
			"brand":     "McFly",
		    "tags":      ["winter", "sport"],
 
			// Product belongs to Apparel category
			"is_fashion": true
 
			"fashion": {
				// Men's clothing
				"gender": "m",
 
				// Available in M, L, XXL size
				"sizes": ["M", "L", "XXL"]
 
				// Type of the product
				"type": "jacket"
			}
 
		}
	]
}

DELETE Request Syntax

To remove an item from the REES46 database, specify the IDs of selected items in a DELETE request:

{
	"shop_id": 	"eehj3eu84299kg5ghw5a6743r8",	
	"shop_secret": 	"pmd5362597thrgq8k256ep01t0",	
	"items": 			[635, 3373, 75778]
}

PATCH Request Syntax

Syncing product availability statuses via a PATCH request, list the IDs of the items you want to mark as available. All the items in the database that are not listed in a PATCH request will be marked as out of stock:

{
	"shop_id": 		"eehj3eu84299kg5ghw5a6743r8",	
	"shop_secret": 	"pmd5362597thrgq8k256ep01t0",	
	"items": 		[635, 3373, 75778]
}

Limitations

ATTENTION

Please no more than 5000 items per request.

Return to the top of the page Return to Main Settings

Table of Contents

  • No labels