ProductOptionsAssignToProduct Endpoint

Overview

It wouldn't be enough to create an option alone.  This endpoint allows you to assign a new option to an existing product.

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 created so that you can successfully assign an option to it.

ProductOptionsAssignToProduct

This REST API endpoint allows you to assign a newly created option to an existing product.  This not only requires that you have an existing product to assign an option to, but that you also create or find a newly created option to assign to the product.  In this example, we'll call the ProductOptionsCreate endpoint to create a new option and then assign that option to the product.

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/productoptions/[OPTIONBVIN]/products/[PRODUCTBVIN]?key=[YOURKEY]&generatevariants=[BOOLEAN]

OPTIONBVIN is the option ID as described in the parameters below.

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

HTTP Method

POST

Parameters

Parameter Description
optionbvin This is the unique ID of the product option that you wish to assign to the product.
productbvin This is the unique ID of the product that you wish to assign an option to.
generatevariants If true, all possible variants will be created after this option is assigned to the product.

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 option ID or product ID doesn't exist, 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);

// create a new instance of a product option
var option = new OptionDTO();

// populate the product option object with minimal information
option.Name = "Color";
option.OptionType = OptionTypesDTO.DropDownList;
option.Items.Add(new OptionItemDTO
{
    Name = "Red"
});
option.Items.Add(new OptionItemDTO
{
    Name = "White"
});
option.Items.Add(new OptionItemDTO
{
    Name = "Blue"
});
option.Settings.Add(new OptionSettingDTO
{
    Key = "ERPID",
    Value = "1234567890"
});

// call the API to create the new product option
ApiResponse<OptionDTO> optionResponse = proxy.ProductOptionsCreate(option);

// the ID of the option to assign to the product
var optionId = optionResponse.Content.Bvin;

// specify the ID of the product to assign the option to
var productId = "06f2347e-ee44-4c54-a530-61f6848f2bea";

// call the API to assign the option to the product
ApiResponse<bool> response = proxy.ProductOptionsAssignToProduct(optionId, productId, false);
// 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 = "productoptions";  
// get this from the store admin
var apiKey = "YOUR-API-KEY";

$(document).ready(function() {

    // create a new instance of a product option
    var option = {
        "Name": "Color",
        "OptionType": 100,
        "Items": [
            {
                "Name": "Red"
            },
            {
                "Name": "White"
            },
            {
                "Name": "Blue"
            }
        ],
        "Settings": [
            {
                "Key": "ERPID",
                "Value": "123456789"
            }
        ]
    };

    // call the API to create the new product option
    $.ajax({
        dataType: "json",
        url: url + apiPath + endPoint + "?key=" + apiKey,
        data: JSON.stringify(option),
        type: 'POST',
        success: function (data) {
            // assign the new option to the product
            AssignOptionToProduct(data.Content.Bvin);
        },
        error: function (jqXHR, textStatus) {
            // do something
        }
    });

});

function AssignOptionToProduct(optionId) {
            
    // set to true if you want to generate all possible variants after adding this option
    var generateVariants = "0";

    // specify the ID of the product to create variants for
    var productId = "06f2347e-ee44-4c54-a530-61f6848f2bea";

    // call the API to generate the variants
    $.ajax({
        dataType: "json",
        url: url + apiPath + endPoint + "/" + optionId + "/products/" + productId + "?key=" + apiKey + "&generatevariants=" + generateVariants,
        type: 'POST',
        success: function (data) {
            $('#lblStatus').html("Success!");
            var json = JSON.stringify(data);
            printResults(json);
        },
        error: function (jqXHR, textStatus) {
            $('#lblStatus').html("Error!");
            printResults("// " + textStatus);
        }
    });

}
{
   "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.