I'm looking for a way to create/update bundle product using Rest API, but I couldn't find any hint for that. Can some one help is this regard.
1 Answer
<?php
// 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";
$product_links = array(
array("sku"=>"cpu1","qty"=>1)
);
//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);
// Create the Bundle Product
$configProductData = array(
'sku' => 'bundle'. uniqid(),
'name' => 'Bundle' . uniqid(),
'visibility' => 4, /*'catalog',*/
'type_id' => 'bundle',
'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' ),
array( 'attribute_code' => 'price_view', 'value' => '0' ),
array( 'attribute_code' => 'price_type', 'value' => '0' ),
),
'extension_attributes' => array("bundle_product_options"=>array(
array("title"=>"CPU","type"=>"select","product_links"=>$product_links),
),
)
);
$productData = json_encode(array('product' => $configProductData));
$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);