Module: Complex Product API
Resource: product_custom_option
Method:
- product_custom_option.add (SOAP V1)
- catalogProductCustomOptionAdd (SOAP V2)
Allows you to add a new custom option for a product.
Arguments:
Type | Name | Description |
---|---|---|
string | sessionId | Session ID |
string |
productId | Product ID |
array | data | Array of catalogProductCustomOptionToAdd |
string | store | Store view ID or code (optional) |
Return:
Type | Description |
---|---|
boolean | True if the custom option is added |
The catalogProductCustomOptionToAdd content is as follows:
Type | Name | Description |
---|---|---|
string | title |
Option title |
string |
type |
Option type |
string |
sort_order |
Option sort order |
int | is_require |
Defines whether the option is required |
array | additional_fields |
Array of catalogProductCustomOptionAdditionalFields |
The catalogProductCustomOptionAdditionalFieldsEntity content is as follows:
Type | Name | Description |
---|---|---|
string | title |
Custom option title |
string |
price |
Custom option price |
string |
price_type |
Price type. Possible values are as follows: "fixed" or "percent" |
string |
sku |
Custom option SKU |
string |
max_characters |
Maximum number of characters for the customer input on the frontend (optional) |
string |
sort_order |
Custom option sort order |
string |
file_extension |
List of file extensions allowed to upload by the user on the frontend (optional) |
string |
image_size_x |
Width limit for uploaded images (optional) |
string |
image_size_y |
Height limit for uploaded images (optional) |
string |
value_id |
Value ID |
Faults:
Fault Code | Fault Message |
---|---|
101 | Product with requested id does not exist. |
102 | Provided data is invalid. |
103 | Error while saving an option. Details are in the error message. |
104 | Store with requested code/id does not exist. |
106 | Invalid option type provided. Call 'types' to get list of allowed option types. |
Examples
Request Example SOAP V1
$proxy = new SoapClient('http://magentohost/api/soap/?wsdl'); $sessionId = $proxy->login('apiUser', 'apiKey'); $productId = 1;// Existing product ID // Add custom option of Text Field type $customTextFieldOption = array( "title" => "Custom Text Field Option Title", "type" => "field", "is_require" => 1, "sort_order" => 0, "additional_fields" => array( array( "price" => 10.00, "price_type" => "fixed", "sku" => "custom_text_option_sku", "max_characters" => 255 ) ) ); $resultCustomTextFieldOptionAdd = $proxy->call( $sessionId, "product_custom_option.add", array( $productId, $customTextFieldOption ) ); // Add custom option of File type $customFileOption = array( "title" => "Custom File Option Title", "type" => "file", "is_require" => 1, "sort_order" => 5, "additional_fields" => array( array( "price" => 10.00, "price_type" => "fixed", "sku" => "custom_file_option_sku", "file_extension" => "jpg", "image_size_x" => 800, "image_size_y" => 600 ) ) ); $resultCustomFileOptionAdd = $proxy->call( $sessionId, "product_custom_option.add", array( $productId, $customFileOption ) ); // Add custom option of Dropdown type $customDropdownOption = array( "title" => "Custom Dropdown Option Title", "type" => "drop_down", "is_require" => 1, "sort_order" => 10, "additional_fields" => array( array( "title" => "Dropdown row #1", "price" => 10.00, "price_type" => "fixed", "sku" => "custom_select_option_sku_1", "sort_order" => 0 ), array( "title" => "Dropdown row #2", "price" => 10.00, "price_type" => "fixed", "sku" => "custom_select_option_sku_2", "sort_order" => 5 ) ) ); $resultCustomDropdownOptionAdd = $proxy->call( $sessionId, "product_custom_option.add", array( $productId, $customDropdownOption ) );
Request Example SOAP V2
$proxy = new SoapClient('http://magentohost/api/v2_soap/?wsdl'); $sessionId = $proxy->login('apiUser', 'apiKey'); $result = $proxy->catalogProductCustomOptionAdd($sessionId, '1', array('title' => 'title', 'type' => 'field', 'sort_order' => '1', 'is_require' => 1, 'additional_fields' => array(array( 'price' => '15', 'price_type' => 'fixed', 'sku' => 'sku', 'max_characters' => '100' )))); var_dump($result);
Request Example SOAP V2 (WS-I Compliance Example)
$proxy = new SoapClient('http://magentohost/api/v2_soap/?wsdl'); $sessionId = $proxy->login((object)array('username' => 'apiUser', 'apiKey' => 'apiKey')); $result = $proxy->catalogProductCustomOptionAdd((object)array('sessionId' => $sessionId->result, 'productId' => '1', 'store' => '1', 'data' => ((object)array( 'title' => 'title', 'type' => 'field', 'sort_order' => '1', 'is_require' => 1, 'additional_fields' => array(array( 'price' => '15', 'price_type' => 'fixed', 'sku' => 'sku', 'max_characters' => '100' )))))); var_dump($result->result);