Magento2 Create Configurable Product via Rest in PHP

In this wiki we will see how can we create new configurable product using rest in magento2.

- First let us write the configurations (URL's,username,password)

// configuration Data
$url="http://www.example.com/index.php/";
$token_url=$url."rest/V1/integration/admin/token";
$product_url=$url. "rest/V1/products";
$username="your admin username";
$password="your admin password";
$children_ids=array(196);

 

- Then let us get access token

//Authentication rest API magento2, get access token
$ch = curl_init();
$data = array("username" => $username, "password" => $password);
$data_string = json_encode($data);

$ch = curl_init($token_url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'Content-Type: application/json',
    'Content-Length: ' . strlen($data_string))
    );
$token = curl_exec($ch);
$adminToken=  json_decode($token);

 

- No let us prepare the Product data

// Create the Configurable Product
$configProductData = array(
        'sku'               => 'Config_product',
        'name'              => 'Configurable' . uniqid(),
        'visibility'        => 4, /*'catalog',*/
        'type_id'           => 'configurable',
        'price'             => 99.95,
        'status'            => 1,
        'attribute_set_id'  => 4,
        'weight'            => 1,
        'custom_attributes' => array(
                array( 'attribute_code' => 'category_ids', 'value' => ["42","41","32"] ),
                array( 'attribute_code' => 'description', 'value' => 'Description' ),
                array( 'attribute_code' => 'short_description', 'value' => 'Short Description' )//,
        ),
        'extension_attributes' => array(
                "configurable_product_options"=>array(
                                                array("attribute_id"=>90,"label"=>"color","position"=>"0","values"=>array(array("value_index"=>8),array("value_index"=>9))),
                                                array("attribute_id"=>131,"label"=>"size","position"=>"0","values"=>array(array("value_index"=>5),array("value_index"=>4))),
                                                ),
                "configurable_product_links"=>$children_ids,
                
        )
        
);
$productData = json_encode(array('product' => $configProductData));

 

- At the end we will send the product data to magento to create the product

 

$setHaders = array('Content-Type:application/json','Authorization:Bearer '.$adminToken);

$ch = curl_init();
curl_setopt($ch,CURLOPT_URL, $product_url);
curl_setopt($ch,CURLOPT_POSTFIELDS, $productData);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_HTTPHEADER, $setHaders);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
var_dump($response);

in case you see this wiki is useful , please like our page on facebook

you can download the file from github