ProductVariantUpdateSku Endpoint

Overview

Variants allow for the choices of a product to define additional attributes or capabilities for merchants.  Those include giving a selection a specific price, tracking it in inventory different, and assigning it a unique SKU.  This endpoint allows you to update the SKU for any specific variant in your store.

Requirements

The following pre-requisites will be necessary to accomplish the goals of this article:

  • General understanding of REST and API’s
  • Understanding of C# and/or JavaScript
  • Visual Studio 2012 or newer

Getting Started

You should already have a project open and ready to accept code to allow you to use this REST API endpoint.  You should also have one or more products and variants created so that you can successfully update one.

ProductVariantUpdateSku

This REST API endpoint allows you to update the SKU for any specific variant in your store. 

Example URL

This is what the REST endpoint will look like if you are calling it using JavaScript.  See our REST API URL documentation for more information.

http://example.com/DesktopModules/Hotcakes/API/rest/v1/productvariantssku/[BVIN]

BVIN is the product ID as described in the parameters below.

HTTP Method

POST

Parameters

Parameter Description
bvin This is the unique ID of the product that the variant belongs to
data This is a populated instance of ProductVariantSkuUpdateDTO, which defines the criteria by which to find and update the variant

Returns

If successful, this endpoint will return True in the ApiResponse.Content object.  Otherwise, you should have one or more errors returned.  If you receive a False response with no error, either the product ID doesn't exist, the variant criteria doesn't match, or the REST call was improperly formatted.

Example Code

The following code will allow you to successfully call this endpoint, provided that you have enabled it.

Project References

  • Hotcakes.CommerceDTO

Import Namespaces

  • Hotcakes.CommerceDTO.v1
  • Hotcakes.CommerceDTO.v1.Catalog
  • Hotcakes.CommerceDTO.v1.Client

 

string url = "http://example.com";
string key = "YOUR-API-KEY";

Api proxy = new Api(url, key);

// this example works with the laptop in the sample products

// create an instance of the options to match against
var optionsToMatch = new List<VariantOptionDataDTO>();

// screen size option
optionsToMatch.Add(new VariantOptionDataDTO
{
    ChoiceId = "696252e1-ef08-4eef-b83a-1e9d237db51d", 
    ChoiceItemId = "5A5C3C93-4CE6-46CB-A460-06FD6F8E03BE" // 17-inch choice
});

// memory (ram) option
optionsToMatch.Add(new VariantOptionDataDTO
{
    ChoiceId = "f5c6fbd8-65c6-4942-9173-7f1c2c64b8c1",
    ChoiceItemId = "90C9CE3C-AD0E-4B8D-ABA9-3E825DB2DE93" // 8 GB choice
});

// create an instance of the update object to pass to the API
var productVariantSkuDto = new ProductVariantSkuUpdateDTO
{
    ProductBvin = "5d520070-17e5-4587-bddb-9935bc584b6c",  // the product ID
    Sku = "SAMPLE005-01", // the new SKU for the variant
    MatchingOptions = optionsToMatch // the options of matching variant
};

// call the API to update the product variant with the new SKU
ApiResponse<bool> response = proxy.ProductVariantUpdateSku(productVariantSkuDto);
// your domain name
var url = "http://example.com"; 
// the path where the API is
var apiPath = "/DesktopModules/Hotcakes/API/rest/v1/";  
// endpoint as shown in the documentation
var endPoint = "productvariantssku";  
// get this from the store admin
var apiKey = "YOUR-API-KEY";

$(document).ready(function() {

    // this example works with the laptop in the sample products

    // specify the product's ID or Bvin
    var productBvin = "5d520070-17e5-4587-bddb-9935bc584b6c";

    // create an instance of the options to match against
    // Option 1: Screen Size - 17 inch in this example
    // Option 2: Memory (RAM) - 8GB in this example
    var optionsToMatch = [{
            "ChoiceId": "696252e1-ef08-4eef-b83a-1e9d237db51d", 
            "ChoiceItemId": "5A5C3C93-4CE6-46CB-A460-06FD6F8E03BE"
        },
        {
            "ChoiceId": "f5c6fbd8-65c6-4942-9173-7f1c2c64b8c1",
            "ChoiceItemId": "90C9CE3C-AD0E-4B8D-ABA9-3E825DB2DE93"
        }];

    // create an instance of the update object to pass to the API
    var productVariantSkuDto = {
        "ProductBvin": productBvin, // the product ID
        "Sku": "SAMPLE005-01", // the new SKU for the variant
        "MatchingOptions": optionsToMatch // the options of matching variant
    };

    // call the API to update the product variant with the new SKU
    $.ajax({
        dataType: "json",
        url: url + apiPath + endPoint + "/" + productBvin + "?key=" + apiKey,
        data: JSON.stringify(productVariantSkuDto),
        type: 'POST',
        success: function (data) {
            // do something
        },
        error: function (jqXHR, textStatus) {
            // do something else
        }
    });

});
{
   "Errors":[

   ],
   "Content":true
}
Have more questions? Submit a request

Need More Help?

Do you need more assistance with this article? Please review your support options.