0

Is it possible to use Magento 1.9 REST API to create or update products that have custom attributes?

example: http://magentohost/api/rest/products/8

Request Example: JSON

    {
     "attribute_set_id":"4",
     "type_id":"simple",
     "sku":"wedding dress",
     "name":"Dress_test",
     "custom_attr1":"test",
     "custom_attr2":"test2",
      ............
     }

1 Answer 1

1
<?php
$curl = curl_init();
$URL = "http://magento.dev";

curl_setopt_array($curl, array(
  CURLOPT_URL => $URL . "/rest/V1/integration/admin/token",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => "{\"username\":\"admin\", \"password\":\"123123q\"}",
  CURLOPT_HTTPHEADER => array(
    "accept: application/json",
    "cache-control: no-cache",
    "content-type: application/json",
    "postman-token: 654c3084-0e0a-b3a1-043f-0960e695e520"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
  die();
} else {
  $key = $response;
}


$data = [
    "product"=> [
        "sku"=> "DownloadableProduct_18sdsd5",
        "name"=> "DownloadableProduct_185",
        "attribute_set_id"=> 4,
        "price"=> "1",
        "status"=> 1,
        "visibility"=> 4,
        "type_id"=> "downloadable",
        "extension_attributes"=> [
            "stock_item"=> [
                "manage_stock"=> 1,
                "is_in_stock"=> 1,
                "qty"=> "10"
            ],
            "downloadable_product_samples"=> [[
                "title"=> "sample1185869143",
                "sort_order"=> "0",
                "sample_type"=> "url",
                "sample_url"=> "http://example.com"
            ]],
            "downloadable_product_links"=> [[
                "title"=> "link-1-185862143",
                "sort_order"=> "1",
                "is_shareable"=> 0,
                "price"=> 2.43,
                "number_of_downloads"=> "2",
                "link_type"=> "url",
                "link_url"=> "http://example.com",
                "sample_type"=> "url",
                "sample_url"=> "http://example.com"
            ]]
        ],
        "custom_attributes"=> [[
            "attribute_code"=> "tax_class_id",
            "value"=> 2
        ], [
            "attribute_code"=> "quantity_and_stock_status",
            "value"=> [
                "qty"=> "10",
                "is_in_stock"=> 1
            ]
        ], [
            "attribute_code"=> "is_virtual",
            "value"=> 1
        ], [
            "attribute_code"=> "url_key",
            "value"=> "downloadableproduct-185892143"
        ], [
            "attribute_code"=> "links_title",
            "value"=> "Links title 185862143"
        ], [
            "attribute_code"=> "links_purchased_separately",
            "value"=> 1
        ], [
            "attribute_code"=> "samples_title",
            "value"=> "Samples185692143"
        ], [
            "attribute_code"=> "links_exist",
            "value"=> 1
        ]]
    ]
];


$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => $URL . "/rest/admin/V1/products/",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => $data,
  CURLOPT_HTTPHEADER => array(
    "accept: application/json",
    "content-type: application/json",
    "authorization: Bearer " . $key,
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
2
  • thanks is this by default accepted by magento: "attribute_code"=> "samples_title", "value"=> "Samples185692143". Or I need some extension? Commented Apr 24, 2017 at 5:48
  • magento will accept this default Commented Apr 24, 2017 at 6:31

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.