Module: Complex Product API
Resource: product_custom_option
Method:
- product_custom_option.update (SOAP V1)
- catalogProductCustomOptionUpdate (SOAP V2)
Allows you to update the required product custom option.
Arguments:
Type | Name | Description |
string | sessionId | Session ID |
string | optionId | Option ID |
array | data | Array of catalogProductCustomOptionToUpdate |
string | store | Store view ID or code (optional) |
Return:
Type | Description |
boolean\int | True (1) if the custom option is updated |
The catalogProductCustomOptionToUpdate content is as follows:
Type | Name | Description |
string | title | Title of the custom option to be updated |
string | type | Custom option type |
string | sort_order | Custom option sort order |
int | is_require | Defines whether the custom option is required |
array | additional_fields | Array of catalogProductCustomOptionAdditionalFields |
The catalogProductCustomOptionAdditionalFields 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; for the File input type) |
string | image_size_x | Width limit for uploaded images (optional; for the File input type) |
string | image_size_y | Height limit for uploaded images (optional; for the File input type) |
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. |
105 | Option with requested 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');
$selectOptionId = 1379;
$selectOptionValueId = 794;
$textOptionId = 1380;
$fileOptionId = 1381;
// Update custom option of Text Field type
$customTextFieldOption = array(
"title" => "Custom Text Field Option Title Updated",
"type" => "field",
"is_require" => 1,
"sort_order" => 20,
"additional_fields" => array(
array(
"price" => 13.00,
"price_type" => "fixed",
"sku" => "custom_text_option_sku_updated",
"max_characters" => 127
)
)
);
$resultCustomTextFieldOptionUpdate = $proxy->call(
$sessionId,
"product_custom_option.update",
array(
$textOptionId,
$customTextFieldOption
)
);
// Update custom option of File type
$customFileOption = array(
"title" => "Custom File Option Title Updated",
"additional_fields" => array(
array(
"image_size_x" => 800,
"image_size_y" => 999
)
)
);
$resultCustomFileOptionUpdate = $proxy->call(
$sessionId,
"product_custom_option.update",
array(
$fileOptionId,
$customFileOption
)
);
// Update custom option of Dropdown type
$customDropdownOption = array(
"title" => "Custom Dropdown Option Title Updated to Multiselect",
"type" => "multiple",
"additional_fields" => array(
array(
"value_id" => $selectOptionValueId,
"price" => 14.00,
"price_type" => 'percent',
"sku" => "custom_select_option_sku_1 updated",
"sort_order" => 26
)
)
);
$resultCustomDropdownOptionUpdate = $proxy->call(
$sessionId,
"product_custom_option.update",
array(
$selectOptionId,
$customDropdownOption
)
);
Request Example SOAP V2
$proxy = new SoapClient('http://magentohost/api/v2_soap/?wsdl');
$sessionId = $proxy->login('apiUser', 'apiKey');
$result = $proxy->catalogProductCustomOptionUpdate($sessionId, '1', array(
'title' => 'title_updated',
'is_require' => 0,
'sort_order' => '2'
));
var_dump($result);
Request Example SOAP V2 (WS-I Compliance Mode)
$proxy = new SoapClient('http://magentohost/api/v2_soap/?wsdl');
$sessionId = $proxy->login((object)array('username' => 'apiUser', 'apiKey' => 'apiKey'));
$result = $proxy->catalogProductCustomOptionUpdate((object)array('sessionId' => $sessionId->result, 'optionId' => '1', 'data' => ((object)array(
'title' => 'title_updated',
'is_require' => 0,
'sort_order' => '2'
))));
var_dump($result->result);