header

Magento 1.x Software Support Notice

For Magento Commerce 1, Magento is providing software support through June 2020. Depending on your Magento Commerce 1 version, software support may include both quality fixes and security patches. Please review our Magento Software Lifecycle Policy to see how your version of Magento Commerce 1 is supported.

For Magento Open Source 1.5 to 1.9, Magento is providing software security patches through June 2020 to ensure those sites remain secure and compliant. Visit our information page for more details about our software maintenance policy and other considerations for your business.

Product Custom Option Add

Module: Complex Product API

Resource: product_custom_option

Method:

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