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);