Marketplaces / Storesome / Storesome Price Update

Storesome Price Update

Purpose of this page is to specify details for Price updates to Storesome

API Docs: https://storesome-test-seller-api.azurewebsites.net/index.html

API Call: PUT /api/product/price

Updates can be sent in multiples via duplicating the below mapped object within the array. We are following the general logic for Special Price vs Normal Price we have (note: If promotions are ready those should be incorporated as well). If we have only Start Price in Hemisphere this is what we send as price and we ignore all other fields. If we have RRP and it is bigger than the StartPrice we move the RRP as the “normalPrice” and send the StartPrice (as it is effectively a Sale price) to the “salePrice” field. Start and End dates at this point are either picked from the respective fields in Item Account Storesome or we use the default Now() and Now + 2 years

Set a limit of 10 items per call to begin with but please have this value in an easy manageable place so it can be extended when we receive the green light from the Storesome team

Example:

[
  {
    "sku": "string",
    "normalPrice": 0,
    "salePrice": 0,
    "saleStartDate": "2021-08-19T13:09:02.777Z",
    "saleEndDate": "2021-08-19T13:09:02.777Z"
  }
]

Mapping:

Storesome fields WAP Mapping WAP Notes
sku Item > SKU
normalPrice Item Account > Start Price

OR Item Account > RRP | In the cases we have both StartPrice and RRP we want to send RRP as price and the StartPrice in the following Storesome field “salePrice”. If we don’t have an RRP we want to send only “price” in the “normalPrice” field and ignore all other fields | | salePrice | Item Account > Start Price* | Conditional - see “price” Also if Promotions are ready they should take over here | | saleStartDate | Item Account Storesome > StartDate OR DEFAULT (NOW) | Conditional - see “price” | | saleEndDate | Item Account Storesome > EndDate OR DEFAULT (NOW+2years) | Conditional - see “price” |

As for the Content management - any fields that are not used are not to be sent

NOTE - If we are doing this the right way we should build the Storesome integration as a connector that we can easily extend / replicate / add to for multiple different MPs as we might have multiple store some sites on the same Hemi instance the same way we have for Mirakl

Example response:

Success

[]

Error

  1. Error in the info passed or missing products - In this case we will still receive a status 200 as the call itself will be a success but it will have the products in there that have not updated

    [
      {
        "key": "dhsaidhsdas",
        "value": "NotFound"
      },
      {
        "key": "hhhhhh",
        "value": "NotFound"
      }
    ]

    Note: Key should be used for our SKU that we provided where Value should be the value we store in the error field - ONLY the error products should be put on error, everything else should be treated as success

  2. Error in the payload itself - In this case we will receive a status 400 with the relevant information in the “errors” section that we need to store on ALL products that were pushed with said call as none of them should be treated as success

    {
      "type": "https://tools.ietf.org/html/rfc7231#section-6.5.1",
      "title": "One or more validation errors occurred.",
      "status": 400,
      "traceId": "00-c67d3bff82cc5b40b810539b0fb2cfac-ac0790ed327a4842-00",
      "errors": {
        "$[0]": [
          "'\"' is invalid after a value. Expected either ',', '}', or ']'. Path: $[0] | LineNumber: 3 | BytePositionInLine: 4."
        ]
      }
    }
Is this article helpful?
0 0 0