cancel
Showing results for 
Search instead for 
Did you mean: 

"Unable to save Stock Item" error when saving a product via REST API.

"Unable to save Stock Item" error when saving a product via REST API.

I'm attempting to use cURL to update the stock for an item - it connects, and the item exists (tried using an invalid sku to test), using the below code. However, it throws an error, and I can't figure out why. I can get the catalog without issue, but whenever I attempt to set stock it fails. I've tested the JSON output and it's valid.

The code I'm using:

// UPDATE Stock
        //Use above token into header
        $headers = array("Authorization: Bearer $token","Content-Type: application/json");

        $skus = array(
        '67462335058' => 8
    );

        foreach ($skus as $sku => $stock) {
        $requestUrl='http://testing.mysite.com/index.php/rest/V1/products/' . $sku . '/stockItems/1';

        $sampleProductData = array(
            "qty" => $stock
        );
        $productData = json_encode(array('stockItem' => $sampleProductData));

        //var_dump($productData);

        $ch = curl_init();
        curl_setopt($ch,CURLOPT_URL, $requestUrl);
        curl_setopt($ch,CURLOPT_POSTFIELDS, $productData);
        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        $response = curl_exec($ch);
        curl_close($ch);
        var_dump($response);

        unset($productData);
        unset($sampleProductData);
        }

And get the following error:

string(1999) "{"message":"Unable to save Stock Item","trace":"#0 /home/mulltest/public_html/vendor/magento/module-catalog-inventory/Model/StockRegistry.php(180): Magento\CatalogInventory\Model\Stock\StockItemRepository->save(Object(Magento\CatalogInventory\Model\Stock\Item))\n#1 [internal function]: Magento\CatalogInventory\Model\StockRegistry->updateStockItemBySku('67462335058', Object(Magento\CatalogInventory\Model\Stock\Item))\n#2 /home/mulltest/public_html/vendor/magento/module-webapi/Controller/Rest.php(330): call_user_func_array(Array, Array)\n#3 /home/mulltest/public_html/vendor/magento/module-webapi/Controller/Rest.php(239): Magento\Webapi\Controller\Rest->processApiRequest()\n#4 /home/mulltest/public_html/vendor/magento/framework/Interception/Interceptor.php(58): Magento\Webapi\Controller\Rest->dispatch(Object(Magento\Framework\App\Request\Http))\n#5 /home/mulltest/public_html/vendor/magento/framework/Interception/Interceptor.php(138): Magento\Webapi\Controller\Rest\Interceptor->___callParent('dispatch', Array)\n#6 /home/mulltest/public_html/vendor/magento/framework/Interception/Interceptor.php(153): Magento\Webapi\Controller\Rest\Interceptor->Magento\Framework\Interception\{closure}(Object(Magento\Framework\App\Request\Http))\n#7 /home/mulltest/public_html/generated/code/Magento/Webapi/Controller/Rest/Interceptor.php(26): Magento\Webapi\Controller\Rest\Interceptor->___callPlugins('dispatch', Array, Array)\n#8 /home/mulltest/public_html/vendor/magento/framework/App/Http.php(135): Magento\Webapi\Controller\Rest\Interceptor->dispatch(Object(Magento\Framework\App\Request\Http))\n#9 /home/mulltest/public_html/vendor/magento/framework/App/Bootstrap.php(256): Magento\Framework\App\Http->launch()\n#10 /home/mulltest/public_html/index.php(57): Magento\Framework\App\Bootstrap->run(Object(Magento\Framework\App\Http\Interceptor))\n#11 {main}"}"

Any ideas? Thank you!

3 REPLIES 3

Re: "Unable to save Stock Item" error when saving a product via REST API.

Hey @ryan_shenk 

 

Check that you are using same process in your Code.

 

Use PUT method on 

http://yourmagento.com/rest/V1/products/{productSku}/stockItems/{itemId}.

 

For example:

 

http://yourmagento.com/rest/V1/products/24-MB01/stockItems/1


*stockItems will be always 1 if you're not having multiple stocks.

 


As parameter, provide qty in JSON, for example:

 

{"stockItem":{"qty":100}}

 

 

Also this issues is also registered on GitHub.

 

Here I found some solutions, works for this.

 

1) Elasticsearch service was not active. After starting the elasticsearch service the error was gone

2) Had same error on a update from 2.2.3 to 2.2.4. magento indexer:reindex helped me out

 

I hope it will help you.

 

Thanks
--
If my answer is useful, please Accept as Solution & give Kudos

Re: "Unable to save Stock Item" error when saving a product via REST API.

I had the similar issue where I was not able to save/create a new product in admin. 

 

Running reindex on below indexers solved the issue.

 

php bin/magento indexer:reindex inventory catalog_product_attribute catalog_product_category

 

 

Re: "Unable to save Stock Item" error when saving a product via REST API.

This helps. Thanks