Marketplaces / The Iconic Technical Scope Overview / The Iconic Product Management

The Iconic Product Management

The Iconic is feed based marketplace supporting both xml and json feeds. Product calls creates feeds, which are then processed by system in the background thus we will be storing them in our Marketplace feeds table. Please note the Iconic provide taxonomy which will be stored in Hemi and will be used for internal validations. The product flows will include in the initial integration are Product Create, Product Update, Product Remove, Image, Product Stock Update, Product Price Update

Product Create

POST - https://api.sellercenter.net/?Action=ProductCreate

Parameters:

Parameter Name Parameter Value Comment Required
Action “ProductCreate“ for product create our action will always be “ProductCreate Yes
Format “XML“ or “JSON“ both options are available, If not supplied, 'XML' is assumed. No
Timestamp the current time in ISO8601 format relative to UTC e.g., Timestamp=2015-04-01T10:00:00+02:00 for Berlin Yes
UserID Account The Iconic > User ID The ID of the user making the call Yes
Version “2.6.20“ hardcoded the latest available version Yes
Signature Account The Iconic > Signature The cryptographic signature, authenticating the request. A caller must create this value by computing the SHA256 hash of the request, using the API key of the user specified in the UserID parameter Yes

Example:

url = "https://api.sellercenter.net/"
post
data-urlencode Action=ProductCreate
data Timestamp=2015-07-01T11:11+0000
data-urlencode UserID=maintenance@sellercenter.net
data-urlencode Version=1.0
data-urlencode Signature=7cd3bf58ba87e2928c8fbb93acab0fa9e88cd8086231977d5cd78c4c495bedb5

In the body of the request we are sending the actual product information

<?xml version="1.0" encoding="UTF-8" ?>
<Request>
  <Product>
    <SellerSku>4105382173aaee4</SellerSku>
    <ParentSku/>
    <Status>active</Status>
    <Name>Magic Product</Name>
    <Variation>XXL</Variation>
    <PrimaryCategory>4</PrimaryCategory>
    <Categories>2,3,5</Categories>
    <Description><![CDATA[This is a <b>bold</b> product.]]></Description>
    <Brand>ASM</Brand>
    <Price>1.00</Price>
    <SalePrice>32.5</SalePrice>
    <SaleStartDate>2013-09-03T11:31:23+00:00</SaleStartDate>
    <SaleEndDate>2013-10-03T11:31:23+00:00</SaleEndDate>
    <TaxClass>default</TaxClass>
    <ShipmentType>dropshipping</ShipmentType>
    <ProductId>xyzabc</ProductId>
    <Condition>new</Condition>
    <ProductData>
      <Megapixels>490</Megapixels>
      <OpticalZoom>7</OpticalZoom>
      <SystemMemory>4</SystemMemory>
      <NumberCpus>32</NumberCpus>
      <Network>This is network</Network>
    </ProductData>
    <Quantity>10</Quantity>
  </Product>
  <Product>
    <SellerSku>513558029156743ab4e3</SellerSku>
    <ParentSku/>
    <Status>active</Status>
    <Name>Normal Product</Name>
    <Variation>XS</Variation>
    <PrimaryCategory>4</PrimaryCategory>
    <Categories>2,3,5</Categories>
    <Description><![CDATA[This is a <i>cursive</i> product.]]></Description>
    <Brand>BIN</Brand>
    <Price>2.50</Price>
    <SalePrice>1.50</SalePrice>
    <SaleStartDate>2016-07-01T11:15:07+00:00</SaleStartDate>
    <SaleEndDate>2016-07-01T11:15:07+00:00</SaleEndDate>
    <TaxClass>default</TaxClass>
    <ShipmentType>dropshipping</ShipmentType>
    <ProductId>foobar</ProductId>
    <Condition>new</Condition>
    <ProductData>
      <Megapixels>1</Megapixels>
      <OpticalZoom>100</OpticalZoom>
      <SystemMemory>2</SystemMemory>
      <NumberCpus>3</NumberCpus>
      <Network>This is network</Network>
    </ProductData>
    <Quantity>5</Quantity>
  </Product>
</Request>
The Iconic Field Hemi Field Comment Type Required
Product
SellerSku Item > SKU String Yes
ParentSku N/A The unique identifier of a product with which this product should be associated.
[Free nomenclature ParentSku feature enabled] If ParentSku is provided than it will pick the defined ParentSku otherwise it will use SellerSku of the first variation. String No
Status “active” One of the following values: 'active', 'inactive' or 'deleted'. Optional, defaults to 'active'. String No
Name Item Account > Title Must be between 2 to 255 characters. String Yes
Variation Item Account > Variation Specific (Value) If a product is available in multiple variations (e.g., colors or size), this is the value of the variation. E.g., if the product is a jacket that comes in different sizes, this would be the size of the jacket's variation that is added with the call (e.g., 'Extra Small'). String No
PrimaryCategory Item Account > Primary Category ID The ID of the primary category for his product. This will be picked based on the mapping and internal Hemi validation String Yes
Categories Item Account > Secondary Category ID A comma-separated list of one to thee sub-categories to which the product belongs. Each of the given sub-categories must descend from the category specified by the PrimaryCategory parameter. String No
Description Item Account > Description The description of the product, as shown to the end-user. 6 to 25000 characters. Embedding certain HTML tags is allowed, but must be escaped as ![CDATA[ ]] String Yes
Brand Item Account > Item Specific String Yes
Price Item Account > Price / RRP If RRP is provided in Hemi then the Price is picked from Item Account > RRP field else we push Item Account > Price field Decimal Yes
SalePrice Item Account > Price If RRP is provided in Hemi we push the SalePrice as Item Account > Price Decimal No (Yes if Sales dates are added)
SaleStartDate “CURTIME“ If RRP is provided we hardcode the dates until when the sale is active. DateTime No (Yes if SalePrice is added)
SaleEndDate “CURTIME + 2 years“ If RRP is provided we hardcode the dates until when the sale is active. DateTime No (Yes if SalePrice is added)
TaxClass N/A The taxation class the product belongs to. The available tax classes are dependent on the specific installation the call is executed against. String No
ShipmentType N/A Indicates whether the product is shipped directly upon receipt ('crossdocking') or is drop shipped ('dropshipping'). Which shipment types are permissible depends on what is set up for a specific seller. Optional String No
ProductId Item > EAN

Item > UPC Item > MPN Item > ISBN | If we have EAN we push Item > EAN else if Item > UPC else if Item > MPN else Item > ISBN | String | No | | | Condition | | Item > Condition | Indicates whether the product is new or used. One of ‘new', 'used' or 'refurbished'. Conditions to be mapped like: ’new' - New (with tags) 1000 'used' - Used (Pre-owned, Like new) 3000 'refurbished' - Seller refurbished (Re-manufactured) 2500 | String | No | | | ProductData | | | | | | | | | Megapixels (just as an example) | Item Account > Item Specifics | `

1
  <OpticalZoom>100</OpticalZoom>
  <SystemMemory>2</SystemMemory>
  <NumberCpus>3</NumberCpus>
  <Network>This is network</Network>
</ProductData>

 <Megapixels>1</Megapixels> Item specific name will be "Megapixels" and Item Specific Value "1"` | Subsection | Depends on the category attributes |

| | Quantity | | Item Account > Quantity | | Integer | Yes | | | VolumetricWeight | | N/A | | Number | No | | | ProductGroup | | Item Account > Variation Group | The name of the group | String | No |


If we have successfully pass our internal validation and push the feed to The Iconic we will receive the feed ID (RequestId) which will be stored in Hemi in Marketplace Feeds

Successful Response:

<?xml version="1.0" encoding="UTF-8"?>
<SuccessResponse>
    <Head>
        <RequestId>cb106552-87f3-450b-aa8b-412246a24b34</RequestId>
        <RequestAction>ProductCreate</RequestAction>
        <ResponseType/>
        <Timestamp>2016-06-22T04:40:14+0200</Timestamp>
    </Head>
    <Body/>
</SuccessResponse>
The Iconic Field Hemi Field Comment
RequestId Marketplace Feeds > External ID
RequestAction Marketplace Feeds > Type
Timestamp Marketplace Feeds > Submitted Date

The account will be picked from the Item Account > Account ID the feed status by default will be “Processing” and the Sent Objects Count will depends on how many products we include in the feed.


If we receive an error while sending the feed we will need to store:

Error Response:

<?xml version="1.0" encoding="UTF-8"?>
<ErrorResponse>
    <Head>
        <RequestAction>ProductCreate</RequestAction>
        <ErrorType>Platform</ErrorType>
        <ErrorCode>1000</ErrorCode>
        <ErrorMessage>Could not save product: An exact match of the document is being processed, cb106552-87f3-450b-aa8b-412246a24b34</ErrorMessage>
    </Head>
    <Body/>
</ErrorResponse>
The Iconic Field Hemi Field Comment
ErrorType Item Account > Update Item Error We concatenate the the fields into Item Account > Update Item Error
ErrorCode Item Account > Update Item Error We concatenate the the fields into Item Account > Update Item Error
ErrorMessage Item Account > Update Item Error We concatenate the the fields into Item Account > Update Item Error

Product Create Status Flow

In order to create a new product we must have Item Account >List Update The Whole Item = Pending AND Item Account > Listing Status = Inactive AND Item Account > Product Status IN (Awaiting Creation, Product Removed). This way the cron will pick the product for creation and if the feed is generated successfully we will set the Item Account >List Update The Whole Item = Sent and once the feed is processed and we get the response we will either have successful product creation or error. If we receive error we set Item Account >List Update The Whole Item = Error. If we receive success we set Item Account >List Update The Whole Item = Pending AND Item Account > Listing Status = Inactive AND Item Account > Product Status = Product Created. This way the next step is the image cron to pick this product and send the images to the MP. In order to do so the Image Upload Cron will look for products with Item Account >List Update The Whole Item = Pending AND Item Account > Listing Status = Inactive AND Item Account > Product Status = Product Created. When the images are sent to the MP we need to update Item Account >List Update The Whole Item = Sent AND Item Account > Product Status = Images Uploaded and once the feed is processed and we get the response we will either have successful image upload or error. If we receive error we set Item Account >List Update The Whole Item = Error AND Item Account > Product Status = Product Created If we receive success we set Item Account >List Update The Whole Item = Not Needed AND Item Account > Listing Status = Active AND Item Account > Product Status = Product Published


Product Update

POST - https://api.sellercenter.net/?Action=ProductUpdate

Parameters:

Parameters Name Parameter Value Comments
1 Action ProductUpdate for product update our action will always be “ProductUpdate
2 Format “XML“ or “JSON“ both options are available, If not supplied, 'XML' is assumed.
3 Timestamp the current time in ISO8601 format relative to UTC e.g., Timestamp=2015-04-01T10:00:00+02:00 for Berlin
4 UserID Account The Iconic > User ID The ID of the user making the call
5 Version “2.6.20“ hardcoded the latest available version
6 Signature Account The Iconic > Signature The cryptographic signature, authenticating the request. A caller must create this value by computing the SHA256 hash of the request, using the API key of the user specified in the UserID parameter

Example:

url = "https://api.sellercenter.net/"
post
data-urlencode Action=ProductUpdate
data Timestamp=2015-07-01T11:11+0000
data-urlencode UserID=maintenance@sellercenter.net
data-urlencode Version=1.0
data-urlencode Signature=7cd3bf58ba87e2928c8fbb93acab0fa9e88cd8086231977d5cd78c4c495bedb5

The Product Update request could be split for 3 different updates - Full Product Update, Stock update and Price update; The only difference between Product Update request & Product Create request is that there are no mandatory fields for Product Update apart from the seller SKU;

Full Product Update

In the body of the request we are sending the actual product information

<?xml version="1.0" encoding="UTF-8" ?>
<Request>
  <Product>
    <SellerSku>4105382173aaee4</SellerSku>
    <ParentSku/>
    <Status>active</Status>
    <Name>Magic Product</Name>
    <Variation>XXL</Variation>
    <PrimaryCategory>4</PrimaryCategory>
    <Categories>2,3,5</Categories>
    <Description><![CDATA[This is a <b>bold</b> product.]]></Description>
    <Brand>ASM</Brand>
    <Price>1.00</Price>
    <SalePrice>32.5</SalePrice>
    <SaleStartDate>2013-09-03T11:31:23+00:00</SaleStartDate>
    <SaleEndDate>2013-10-03T11:31:23+00:00</SaleEndDate>
    <TaxClass>default</TaxClass>
    <ShipmentType>dropshipping</ShipmentType>
    <ProductId>xyzabc</ProductId>
    <Condition>new</Condition>
    <ProductData>
      <Megapixels>490</Megapixels>
      <OpticalZoom>7</OpticalZoom>
      <SystemMemory>4</SystemMemory>
      <NumberCpus>32</NumberCpus>
      <Network>This is network</Network>
    </ProductData>
    <Quantity>10</Quantity>
  </Product>
  <Product>
    <SellerSku>513558029156743ab4e3</SellerSku>
    <ParentSku/>
    <Status>active</Status>
    <Name>Normal Product</Name>
    <Variation>XS</Variation>
    <PrimaryCategory>4</PrimaryCategory>
    <Categories>2,3,5</Categories>
    <Description><![CDATA[This is a <i>cursive</i> product.]]></Description>
    <Brand>BIN</Brand>
    <Price>2.50</Price>
    <SalePrice>1.50</SalePrice>
    <SaleStartDate>2016-07-01T11:15:07+00:00</SaleStartDate>
    <SaleEndDate>2016-07-01T11:15:07+00:00</SaleEndDate>
    <TaxClass>default</TaxClass>
    <ShipmentType>dropshipping</ShipmentType>
    <ProductId>foobar</ProductId>
    <Condition>new</Condition>
    <ProductData>
      <Megapixels>1</Megapixels>
      <OpticalZoom>100</OpticalZoom>
      <SystemMemory>2</SystemMemory>
      <NumberCpus>3</NumberCpus>
      <Network>This is network</Network>
    </ProductData>
    <Quantity>5</Quantity>
  </Product>
</Request>

The Iconic Field Hemi Field Comment Type Required
Product
SellerSku Item > SKU String Yes
ParentSku N/A The unique identifier of a product with which this product should be associated.
[Free nomenclature ParentSku feature enabled] If ParentSku is provided than it will pick the defined ParentSku otherwise it will use SellerSku of the first variation. Optional String No
Status “active” One of the following values: 'active', 'inactive' or 'deleted'. Optional, defaults to 'active'. String No
Name Item Account > Title Must be between 2 to 255 characters. String Yes
Variation Item Account > Variation Specific (Value) If a product is available in multiple variations (e.g., colors or size), this is the value of the variation. E.g., if the product is a jacket that comes in different sizes, this would be the size of the jacket's variation that is added with the call (e.g., 'Extra Small'). String No
PrimaryCategory Item Account > Primary Category ID The ID of the primary category for his product. This will be picked based on the mapping and internal Hemi validation String Yes
Categories Item Account > Secondary Category ID A comma-separated list of one to thee sub-categories to which the product belongs. Each of the given sub-categories must descend from the category specified by the PrimaryCategory parameter. String No
Description Item Account > Description The description of the product, as shown to the end-user. 6 to 25000 characters. Embedding certain HTML tags is allowed, but must be escaped as ![CDATA[ ]] String Yes
Brand Item Account > Item Specific String Yes
Price Item Account > Price / RRP If RRP is provided in Hemi then the Price is picked from Item Account > RRP field else we push Item Account > Price field Decimal Yes
SalePrice Item Account > Price If RRP is provided in Hemi we push the SalePrice as Item Account > Price Decimal No (Yes if Sales dates are added)
SaleStartDate “CURTIME“ If RRP is provided we hardcode the dates until when the sale is active. DateTime No (Yes if SalePrice is added)
SaleEndDate “CURTIME + 2 years“ If RRP is provided we hardcode the dates until when the sale is active. DateTime No (Yes if SalePrice is added)
TaxClass N/A The taxation class the product belongs to. The available tax classes are dependent on the specific installation the call is executed against. String No
ShipmentType N/A Indicates whether the product is shipped direcly upon receipt ('crossdocking') or is drop shipped ('dropshipping'). Which shipment types are permissible depends on what is set up for a specific seller. Optional String No
ProductId Item > EAN

Item > UPC Item > MPN Item > ISBN | If we have EAN we push Item > EAN else if Item > UPC else if Item > MPN else Item > ISBN | String | No | | | Condition | | Item > Condition | Indicates whether the product is new or used. One of ‘new', 'used' or 'refurbished'. Conditions to be mapped like: ’new' - New (with tags) 1000 'used' - Used (Pre-owned, Like new) 3000 'refurbished' - Seller refurbished (Re-manufactured) 2500 | String | No | | | ProductData | | | | | | | | | Megapixels (just as an example) | Item Account > Item Specifics | `

1
  <OpticalZoom>100</OpticalZoom>
  <SystemMemory>2</SystemMemory>
  <NumberCpus>3</NumberCpus>
  <Network>This is network</Network>
</ProductData>

 <Megapixels>1</Megapixels> Item specific name will be "Megapixels" and Item Specific Value "1"` | Subsection | Depends on the category attributes |

| | Quantity | | Item Account > Quantity | | Integer | Yes | | | VolumetricWeight | | N/A | | Number | No | | | ProductGroup | | Item Account > Variation Group | The name of the group | String | No |

Product Full Update Status Flow

In order to Update products we must have:

(1)

Item Account >List Update The Whole Item = Pending;

Item Account> Product Status = Published;

Item Account > Listing Status = Active OR Item Account > Listing Status = Inactive;

This way the cron will pick the product for update and if the feed is generated successfully we will set:

(2)

Item Account >List Update The Whole Item = Sent;

Item Account>Product Status=Published;

Item Account>Listing Status=Active OR Item Account > Listing Status = Inactive

Once the feed is processed and we get the response we will have successful product update (3) or error (4).

If we receive successful Product Update we need to set:

(3)

Item Account >List Update The Whole Item = Not Needed;

Item Account> Product Status=Product Published;

Item Account>Listing Status=Active;

If we receive error we set:

(4)

Item Account >List Update The Whole Item = Error;

Item Account > Product Status=Published;

Item Account>Listing Status=Active OR Item Account > Listing Status = Inactive;

If we have successfully pass our internal validation and push the feed to The Iconic we will receive the feed ID (RequestId) which will be stored in Hemi in Marketplace Feeds

Successful Response:

<?xml version="1.0" encoding="UTF-8"?>
<SuccessResponse>
    <Head>
        <RequestId>cb106552-87f3-450b-aa8b-412246a24b34</RequestId>
        <RequestAction>ProductCreate</RequestAction>
        <ResponseType/>
        <Timestamp>2016-06-22T04:40:14+0200</Timestamp>
    </Head>
    <Body/>
</SuccessResponse>
The Iconic Field Hemi Field Comment
RequestId Marketplace Feeds > External ID
RequestAction Marketplace Feeds > Type
Timestamp Marketplace Feeds > Submitted Date

The account will be picked from the Item Account > Account ID the feed status by default will be “Processing” and the Sent Objects Count will depends on how many products we include in the feed.


If we receive an error while sending the feed we will need to store:

Error Response:

<?xml version="1.0" encoding="UTF-8"?>
<ErrorResponse>
    <Head>
        <RequestAction>ProductCreate</RequestAction>
        <ErrorType>Platform</ErrorType>
        <ErrorCode>1000</ErrorCode>
        <ErrorMessage>Could not save product: An exact match of the document is being processed, cb106552-87f3-450b-aa8b-412246a24b34</ErrorMessage>
    </Head>
    <Body/>
</ErrorResponse>
The Iconic Field Hemi Field Comment
ErrorType Item Account > Update Item Error We concatenate the the fields into Item Account > Update Item Error
ErrorCode Item Account > Update Item Error We concatenate the the fields into Item Account > Update Item Error
ErrorMessage Item Account > Update Item Error We concatenate the the fields into Item Account > Update Item Error

Price Update

Example:

<?xml version="1.0" encoding="UTF-8" ?>
<Request>
  <Product>
    <SellerSku>4105382173aaee4</SellerSku>
     <Price>2.50</Price>
    <SalePrice>1.50</SalePrice>
    <SaleStartDate>2016-07-01T11:15:07+00:00</SaleStartDate>
    <SaleEndDate>2016-07-01T11:15:07+00:00</SaleEndDate>
  </Product>
</Request>
The Iconic fields Hemi Field Comment Type Required
1 Product
2 Price Item Account > Price / RRP If RRP is provided in Hemi then the Price is picked from Item Account > RRP field else we push Item Account > Price field Decimal Yes
3 SalePrice Item Account > Price If RRP is provided in Hemi we push the SalePrice as Item Account > Price Decimal No (Yes if Sales dates are added)
4 SaleStartDate “CURTIME“ If RRP is provided we hardcode the dates until when the sale is active. DateTime No (Yes if SalePrice is added)
5 SaleEndDate “CURTIME + 2 years“ If RRP is provided we hardcode the dates until when the sale is active. DateTime No (Yes if SalePrice is added)

Price Update Flow

To Update the Product Price we must have:

(1)

Item Account >Update Price = Pending;

Item Account> Product Status = Published;

Item Account > Listing Status = Active;

This way the cron will pick the product for price update and if the feed is generated successfully we will set:

(2)

Item Account >Update Price = Sent;

Item Account> Product Status = Published;

Item Account > Listing Status = Active;

Once the feed is processed and we get the response, we will have successful product price update or error.

(3) If we have successful Product Price Update we will set:

Item Account >Update Price = Not Needed;

Item Account> Product Status = Published;

Item Account > Listing Status = Active;

(4) If an error:

Item Account >Update Price = Error;

Item Account> Product Status = Published;

Item Account > Listing Status = Active;

If we have successfully pass our internal validation and push the feed to The Iconic we will receive the feed ID (RequestId) which will be stored in Hemi in Marketplace Feeds

Successful Response:

<?xml version="1.0" encoding="UTF-8"?>
<SuccessResponse>
    <Head>
        <RequestId>cb106552-87f3-450b-aa8b-412246a24b34</RequestId>
        <RequestAction>ProductCreate</RequestAction>
        <ResponseType/>
        <Timestamp>2016-06-22T04:40:14+0200</Timestamp>
    </Head>
    <Body/>
</SuccessResponse>
The Iconic Field Hemi Field Comment
RequestId Marketplace Feeds > External ID
RequestAction Marketplace Feeds > Type
Timestamp Marketplace Feeds > Submitted Date

The account will be picked from the Item Account > Account ID the feed status by default will be “Processing” and the Sent Objects Count will depends on how many products we include in the feed.


If we receive an error while sending the feed we will need to store:

Error Response:

<?xml version="1.0" encoding="UTF-8"?>
<ErrorResponse>
    <Head>
        <RequestAction>ProductCreate</RequestAction>
        <ErrorType>Platform</ErrorType>
        <ErrorCode>1000</ErrorCode>
        <ErrorMessage>Could not save product: An exact match of the document is being processed, cb106552-87f3-450b-aa8b-412246a24b34</ErrorMessage>
    </Head>
    <Body/>
</ErrorResponse>
The Iconic Field Hemi Field Comment
ErrorType Item Account > Update Item Error We concatenate the the fields into Item Account > Update Item Error
ErrorCode Item Account > Update Item Error We concatenate the the fields into Item Account > Update Item Error
ErrorMessage Item Account > Update Item Error We concatenate the the fields into Item Account > Update Item Error

Stock Update

Example:

<?xml version="1.0" encoding="UTF-8" ?>
<Request>
  <Product>
    <SellerSku>4105382173aaee4</SellerSku>
    <Quantity>4</Quantity>
  </Product>
</Request>

Mapping:

The Iconic fields Hemi Field Comment Type Required
1 Product
2 SellerSku Item > SKU String Yes
3 Quantity Item Account > Quantity Integer Yes

Stock Update Flow

In order to update the stock (quantity) we must have:

(1)

Item Account >Update Quantity = Pending;

Item Account> Product Status = Published;

Item Account > Listing Status = Active OR Item Account > Listing Status = Inactive (After successful end item)

The cron will pick the product for stock update and if the feed is generated successfully we will set:

(2)

Item Account >Update Quantity = Sent;

Item Account> Product Status = Published;

Item Account > Listing Status = Active OR Item Account > Listing Status = Inactive

We will get 2 possible responses - success or error

If the response is successful we need to set:

(3)

Item Account >Update Quantity = Not Needed;

Item Account> Product Status = Published;

Item Account > Listing Status = Active;

If there is an error, we need to set:

(4)

Item Account >Update Quantity = Error;

Item Account> Product Status = Published;

Item Account > Listing Status = Active OR Item Account > Listing Status = Inactive;

If we have successfully pass our internal validation and push the feed to The Iconic we will receive the feed ID (RequestId) which will be stored in Hemi in Marketplace Feeds

Successful Response:

<?xml version="1.0" encoding="UTF-8"?>
<SuccessResponse>
    <Head>
        <RequestId>cb106552-87f3-450b-aa8b-412246a24b34</RequestId>
        <RequestAction>ProductCreate</RequestAction>
        <ResponseType/>
        <Timestamp>2016-06-22T04:40:14+0200</Timestamp>
    </Head>
    <Body/>
</SuccessResponse>
The Iconic Field Hemi Field Comment
RequestId Marketplace Feeds > External ID
RequestAction Marketplace Feeds > Type
Timestamp Marketplace Feeds > Submitted Date

The account will be picked from the Item Account > Account ID the feed status by default will be “Processing” and the Sent Objects Count will depends on how many products we include in the feed.


If we receive an error while sending the feed we will need to store:

Error Response:

<?xml version="1.0" encoding="UTF-8"?>
<ErrorResponse>
    <Head>
        <RequestAction>ProductCreate</RequestAction>
        <ErrorType>Platform</ErrorType>
        <ErrorCode>1000</ErrorCode>
        <ErrorMessage>Could not save product: An exact match of the document is being processed, cb106552-87f3-450b-aa8b-412246a24b34</ErrorMessage>
    </Head>
    <Body/>
</ErrorResponse>
The Iconic Field Hemi Field Comment
ErrorType Item Account > Update Item Error We concatenate the the fields into Item Account > Update Item Error
ErrorCode Item Account > Update Item Error We concatenate the the fields into Item Account > Update Item Error
ErrorMessage Item Account > Update Item Error We concatenate the the fields into Item Account > Update Item Error

Product End

Product end simply send 0 stock for the SKU. In order to send product end we will need to have a product with Item Account > End Item= 1, Item Account > Product Status = Product Published, Item Account > Listing Status = Active

Example:

<?xml version="1.0" encoding="UTF-8" ?>
<Request>
  <Product>
    <SellerSku>4105382173aaee4</SellerSku>
    <Quantity>4</Quantity>
  </Product>
</Request>

Mapping:

The Iconic fields Hemi Field Comment Type Required
1 Product
2 SellerSku Item > SKU String Yes
3 Quantity Hardcoded as “0“ For end item we always push “0” stock Integer Yes

Product End Status Flow

In order to End a product we must have:

(1)

Item Account>End Item=Pending;

Item Account>Product Status=Published;

Item Account>Listing Status=Active

Then the cron will pick the item and if the feed is generated successfully we will set:

(2)

Item Account >End Item=Sent;

Item Account>Product Status=Published;

Item Account>Listing Status=Active

Once the feed is processed and we get the response we will either have success or error.

(3) If we receive success we set:

Item Account>End Item= Not Needed;

Item Account>Product Status= Published;

Item Account>Listing Status=Inactive;

(4) If we receive an error we set:

Item Account>End Item= Error;

Item Account>Product Status=Published;

Item Account>Listing Status=Active;

If we have successfully pass our internal validation and push the feed to The Iconic we will receive the feed ID (RequestId) which will be stored in Hemi in Marketplace Feeds

Successful Response:

<?xml version="1.0" encoding="UTF-8"?>
<SuccessResponse>
    <Head>
        <RequestId>cb106552-87f3-450b-aa8b-412246a24b34</RequestId>
        <RequestAction>ProductCreate</RequestAction>
        <ResponseType/>
        <Timestamp>2016-06-22T04:40:14+0200</Timestamp>
    </Head>
    <Body/>
</SuccessResponse>
The Iconic Field Hemi Field Comment
RequestId Marketplace Feeds > External ID
RequestAction Marketplace Feeds > Type
Timestamp Marketplace Feeds > Submitted Date

The account will be picked from the Item Account > Account ID the feed status by default will be “Processing” and the Sent Objects Count will depends on how many products we include in the feed.


If we receive an error while sending the feed we will need to store:

Error Response:

<?xml version="1.0" encoding="UTF-8"?>
<ErrorResponse>
    <Head>
        <RequestAction>ProductCreate</RequestAction>
        <ErrorType>Platform</ErrorType>
        <ErrorCode>1000</ErrorCode>
        <ErrorMessage>Could not save product: An exact match of the document is being processed, cb106552-87f3-450b-aa8b-412246a24b34</ErrorMessage>
    </Head>
    <Body/>
</ErrorResponse>
The Iconic Field Hemi Field Comment
ErrorType Item Account > Update Item Error We concatenate the the fields into Item Account > Update Item Error
ErrorCode Item Account > Update Item Error We concatenate the the fields into Item Account > Update Item Error
ErrorMessage Item Account > Update Item Error We concatenate the the fields into Item Account > Update Item Error

Product Remove

POST - https://api.sellercenter.net/?Action=ProductRemove

In order to remove a product, we should have an active listing and need to set Item Account > End Listing = 1, Item Account > Product Status = Product Published, Item Account > Listing Status = Active

Parameters:

Parameter Name Parameter Value Comment Required
Action “ProductRemove“ for product remove our action will always be “ProductRemove Yes
Format “XML“ or “JSON“ both options are available, If not supplied, 'XML' is assumed. No
Timestamp the current time in ISO8601 format relative to UTC e.g., Timestamp=2015-04-01T10:00:00+02:00 for Berlin Yes
UserID Account The Iconic > User ID The ID of the user making the call Yes
Version “2.6.20“ hardcoded the latest available version Yes
Signature Account The Iconic > Signature The cryptographic signature, authenticating the request. A caller must create this value by computing the SHA256 hash of the request, using the API key of the user specified in the UserID parameter Yes

Example:

url = "https://api.sellercenter.net/"
post
data-urlencode Action=ProductRemove
data Timestamp=2015-07-01T11:11+0000
data-urlencode UserID=maintenance@sellercenter.net
data-urlencode Version=1.0
data-urlencode Signature=7cd3bf58ba87e2928c8fbb93acab0fa9e88cd8086231977d5cd78c4c495bedb5

In the body of the request we are sending the following:

Example request:

<?xml version="1.0" encoding="UTF-8" ?>
<Request>
  <Product>
    <SellerSku>297afb9c989c6ad</SellerSku>
  </Product>
  <Product>
    <SellerSku>1b71ff01983241f</SellerSku>
  </Product>
</Request>

Mapping:

The Iconic Field Hemi Field Comment Type Required
SellerSku Item > SKU String Yes

Example response:

<?xml version="1.0" encoding="UTF-8"?>
<SuccessResponse>
  <Head>
    <RequestId>f8bf8d09-1647-4136-b405-03c44f228cf5</RequestId>
    <RequestAction>ProductRemove</RequestAction>
    <ResponseType/>
    <Timestamp>2015-07-01T11:11:11+0000</Timestamp>
  </Head>
  <Body/>
</SuccessResponse>

Mapping:

The Iconic Field Hemi Field Comment
RequestId Marketplace Feeds > External ID
RequestAction Marketplace Feeds > Type
Timestamp Marketplace Feeds > Submitted Date

We will receive the feed ID (RequestId) which will be stored in Hemi in Marketplace Feeds.

To remove a product/products the status should be “Product Published”. After successful removing of product, the Product status should be “Product Removed“ and product listing status should be set to “Inactive”.

If we receive an error while sending the feed we will need to store:

The Iconic Field Hemi Field Comment
ErrorType Item Account > End Listing Error We concatenate the the fields into Item Account > Update Item Error
ErrorCode Item Account > End Listing Error We concatenate the the fields into Item Account > Update Item Error
ErrorMessage Item Account > End Listing Error We concatenate the the fields into Item Account > Update Item Error

Error codes/messages (The Iconic):

Error code Message
1000 Could not remove product: %s
1000 Format Error Detected

Product Remove Status Flow

In order to remove a product we must have:

(1)

Item Account>End Listing=Pending;

Item Account>Product Status=Published;

Item Account>Listing Status=Active;

The cron will pick the product that should be removed and if the feed is generated successfully we will set: (2)

Item Account>End Listing=Sent;

Item Account>Product Status=Published;

Item Account>Listing Status=Active;

Once the feed is processed we can receive successful product removed or error.

(3) If we receive success we set:

Item Account>End Listing= Not Needed;

Item Account>Product Status= Removed;

Item Account>Listing Status=Inactive;

(4) If we receive an error we set:

Item Account>End Listing= Error;

Item Account>Product Status=Published;

Item Account>Listing Status=Active;


Listing Image

The purpose of this documentation is to describe process of listing images on the 'The Iconic' marketplace. The first image passed in, becomes the product's default image, i.e. we need to submit main image first.

Limit: 8 images per product.

POST-https://api.sellercenter.net/?Action=Image

Parameter Name Parameter Value Comment Required
Action “Image“ The action will be “Listing Image? Yes
Format “XML“ or “JSON“ both options are available, If not supplied, 'XML' is assumed. No
Timestamp the current time in ISO8601 format relative to UTC e.g., Timestamp=2015-04-01T10:00:00+02:00 for Berlin Yes
UserID Account The Iconic > User ID The ID of the user making the call Yes
Version “2.6.20“ hardcoded the latest available version Yes
Signature Account The Iconic > Signature The cryptographic signature, authenticating the request. A caller must create this value by computing the SHA256 hash of the request, using the API key of the user specified in the UserID parameter Yes
  • Setting Single Image

Example request:

<?xml version="1.0" encoding="UTF-8" ?>
<Request>
  <ProductImage>
    <SellerSku>b2378adf</SellerSku>
    <Images>
      <Image>http://static.somecdn.com/rear.jpeg</Image>
    </Images>
  </ProductImage>
</Request>

Mapping:

The Iconic Field Hemi Field Comment Type Required
ProductImage
SellerSku Item > SKU string Yes
Images
Image Item > Main Image

OR Item Account The Iconic > Main Image | The first image we push is always our main image | image (jpeg?) | Yes | | | | Image | Item > More Picture URLs OR Item Account The Iconic > More Picture URLs | | image (jpeg?) | Yes |

Example response:

<?xml version="1.0" encoding="UTF-8"?>
<SuccessResponse>
  <Head>
    <RequestId>4d9c69e1-a581-4114-8ef1-210541b7c070</RequestId>
    <RequestAction>Image</RequestAction>
    <ResponseType/>
    <Timestamp>2015-07-03T11:14:32+0200</Timestamp>
  </Head>
  <Body/>
</SuccessResponse>

Mapping:

The Iconic Field Hemi Field Comment
RequestId Marketplace Feeds > External ID
RequestAction Marketplace Feeds > Type
Timestamp Marketplace Feeds > Submitted Date
  • Set Three images

Example request:

<?xml version="1.0" encoding="UTF-8" ?>
<Request>
  <ProductImage>
    <SellerSku>b2378adf</SellerSku>
    <Images>
      <Image>http://static.somecdn.com/moneyshot.jpeg</Image>
      <Image>http://static.somecdn.com/front.jpeg</Image>
      <Image>http://static.somecdn.com/rear.jpeg</Image>
    </Images>
  </ProductImage>
</Request>

Mapping:

The Iconic Field Hemi Field Comment Type Required
ProductImage
SellerSku Item > SKU string Yes
Images
Image Item > Main Image

OR Item Account The Iconic > Main Image | The first image we push is always our main image | image (jpeg?) | Yes | | | | Image | Item > More Picture URLs OR Item Account The Iconic > More Picture URLs | | image (jpeg?) | Yes |

Response:

<?xml version="1.0" encoding="UTF-8"?>
<SuccessResponse>
  <Head>
    <RequestId>4d9c69e1-a581-4114-8ef1-210541b7c070</RequestId>
    <RequestAction>Image</RequestAction>
    <ResponseType/>
    <Timestamp>2015-07-03T11:14:32+0200</Timestamp>
  </Head>
  <Body/>
</SuccessResponse>

Mapping:

The Iconic Field Hemi Field Comment
RequestId Marketplace Feeds > External ID
RequestAction Marketplace Feeds > Type
Timestamp Marketplace Feeds > Submitted Date
  • Set images for multiple product - (To list images for 2 or more products simultaneously).

Example request:

<?xml version="1.0" encoding="UTF-8" ?>
<Request>
  <ProductImage>
    <SellerSku>b2378adf</SellerSku>
    <Images>
      <Image>http://static.somecdn.com/moneyshot.jpeg</Image>
      <Image>http://static.somecdn.com/front.jpeg</Image>
      <Image>http://static.somecdn.com/rear.jpeg</Image>
    </Images>
  </ProductImage>
  <ProductImage>
    <SellerSku>c62378fdf</SellerSku>
    <Images>
      <Image>http://static.somecdn.com/unboxing.jpeg</Image>
      <Image>http://static.somecdn.com/in-use.jpeg</Image>
      <Image>http://static.somecdn.com/recycled.jpeg</Image>
    </Images>
  </ProductImage>
</Request>
The Iconic Field Hemi Field Comment Type Required
ProductImage
SellerSku Item > SKU string Yes
Images
Image Item > Main Image

OR Item Account The Iconic > Main Image | The first image we push is always our main image | image (jpeg?) | Yes | | | | Image | Item > More Picture URLs OR Item Account The Iconic > More Picture URLs | | image (jpeg?) | Yes |

Example response:

<?xml version="1.0" encoding="UTF-8"?>
<SuccessResponse>
  <Head>
    <RequestId>4d9c69e1-a581-4114-8ef1-210541b7c070</RequestId>
    <RequestAction>Image</RequestAction>
    <ResponseType/>
    <Timestamp>2015-07-03T11:14:32+0200</Timestamp>
  </Head>
  <Body/>
</SuccessResponse>

Errors:

If we receive an error while sending the feed we will need to store the error in Item Account > Update Item Error”.

Error code Message
1000 Format Error Detected

Listing Image Status

In order to list images, cron will look for products with Item Account >List Update The Whole Item = Pending AND Item Account > Listing Status = Inactive AND Item Account > Product Status = Product Created. When the images are sent to the MP we need to update Item Account >List Update The Whole Item = Sent AND Item Account > Product Status = Images Uploaded and once the feed is processed and we get the response we will either have successful image upload or error. If we receive error we set Item Account >List Update The Whole Item = Error AND Item Account > Product Status = Product Created If we receive success we set Item Account >List Update The Whole Item = Not Needed AND Item Account > Listing Status = Active AND Item Account > Product Status = Product Published


Response Reader

In order to process the feeds in Hemi we need to check what have been successfully update and what returns an error. Thus we need to call each processing feed for The Iconic using the GetFeedStatus request.

GET https://api.sellercenter.net/?Action=FeedStatus

Parameters Name Parameter Value Comments
1 Action ProductUpdate for product update our action will always be “ProductUpdate
2 Format “XML“ or “JSON“ both options are available, If not supplied, 'XML' is assumed.
3 Timestamp the current time in ISO8601 format relative to UTC e.g., Timestamp=2015-04-01T10:00:00+02:00 for Berlin
4 UserID Account The Iconic > User ID The ID of the user making the call
5 Version “2.6.20“ hardcoded the latest available version
6 Signature Account The Iconic > Signature The cryptographic signature, authenticating the request. A caller must create this value by computing the SHA256 hash of the request, using the API key of the user specified in the UserID parameter
7 FeedID Marketplace Feed > External ID string The identifier (UUID) of the feed.

Examples

# FeedStatus cURL example
# to run, update Timestamp and recompute Signature
#
url = "https://api.sellercenter.net/"
get
data-urlencode Action=FeedStatus
data-urlencode FeedID=4a835cd5-1f55-f56e011be009
data-urlencode Timestamp=2015-07-01T11:11+0000
data-urlencode UserID=maintenance@sellercenter.net
data-urlencode Version=1.0
data-urlencode Signature=685d7883322681f9d70948312b7cf7d7b9639bb10ba2c111122f9c289fda128c

Example Payload:

<?xml version="1.0" encoding="UTF-8"?>
<SuccessResponse>
  <Head>
    <RequestId/>
    <RequestAction>FeedStatus</RequestAction>
    <ResponseType>FeedDetail</ResponseType>
    <Timestamp>2015-07-06T15:00:14+0200</Timestamp>
    <RequestParameters>
      <FeedID>883bdfe3-950f-4390-9a80-41437b69808c</FeedID>
    </RequestParameters>
  </Head>
  <Body>
    <FeedDetail>
      <Feed>883bdfe3-950f-4390-9a80-41437b69808c</Feed>
      <Status>Finished</Status>
      <Action>ProductUpdate</Action>
      <CreationDate>2015-05-05 15:06:35</CreationDate>
      <UpdatedDate>2015-05-05 15:07:11</UpdatedDate>
      <Source>api</Source>
      <TotalRecords>10</TotalRecords>
      <ProcessedRecords>10</ProcessedRecords>
      <FailedRecords>0</FailedRecords>
      <FeedErrors/>
      <FeedWarnings>
        <Warning>
          <Message>The following SKUs have been excluded...</Message>
          <SellerSku>SKU-123</SellerSku>
        </Warning>
      </FeedWarnings>
    </FeedDetail>
  </Body>
</SuccessResponse>
The Iconic fields Hemi Field Comment Type Required
1 Status Marketplace Feed > External Status string Yes
2 FeedWarnings Item Account > Error Fields Depends on the type of the feed we need to update the relevant error field in Hemi.
For example if we have Type > UpdateProduct then we update the revise item error field if any errors, consequently the case is the same for Type > UpdateStock, Type > UpdatePrice, Type > ProductCreate , Type > EndListing, Type > ImageUpload, Type > EndItem string Yes
3 Completed Date The CURTTIME() date Yes

Request Limits:TBA Variations what to do? Error messages? Do they support multivariations? Flags Closed Protect Price, Protect Quantity etc TBA add the standard logic reference

Is this article helpful?
0 0 0