Magento rest API – I need to change the customer password using REST API.
In POSTMAN application
url action :: PUT
http://magento.host/rest/V1/customers/me/password?customerId=146
And i passed integration token in header.
Authorization :: Bearer <Token Value>
Content-Type :: application/json
And In Form-data
customerId :: <customerId>
currentPassword :: <currentPassword>
newPassword :: <newPassword>
webapi.xml code is
<route url="/V1/customers/me/password" method="PUT">
<service class="Magento\Customer\Api\AccountManagementInterface" method="changePasswordById"/>
<resources>
<resource ref="self"/>
</resources>
<data>
<parameter name="customerId" force="true">%customer_id%</parameter>
</data>
</route>
But it give me error
{"message":"Decoding error: \nUnable to unserialize value.\n#0
/var/www/html/rb-dev/vendor/magento/framework/Webapi/Rest/Request/Deserializer/Json.php(64):
Magento\Framework\Serialize\Serializer\Json->unserialize('——WebKitFor…')\n#1
/var/www/html/rb-dev/vendor/magento/framework/Webapi/Rest/Request.php(141):
Magento\Framework\Webapi\Rest\Request\Deserializer\Json->deserialize('——WebKitFor…')\n#2
/var/www/html/rb-dev/vendor/magento/module-webapi/Controller/Rest/InputParamsResolver.php(91):
Magento\Framework\Webapi\Rest\Request->getBodyParams()\n#3
/var/www/html/rb-dev/vendor/magento/module-webapi/Controller/Rest.php(322):
Magento\Webapi\Controller\Rest\InputParamsResolver->resolve()\n#4
/var/www/html/rb-dev/vendor/magento/module-webapi/Controller/Rest.php(239):
Magento\Webapi\Controller\Rest->processApiRequest()\n#5
/var/www/html/rb-dev/vendor/magento/framework/Interception/Interceptor.php(58):
Magento\Webapi\Controller\Rest->dispatch(Object(Magento\Framework\App\Request\Http))\n#6
/var/www/html/rb-dev/vendor/magento/framework/Interception/Interceptor.php(138):
Magento\Webapi\Controller\Rest\Interceptor->___callParent('dispatch',
Array)\n#7
/var/www/html/rb-dev/vendor/magento/framework/Interception/Interceptor.php(153):
Magento\Webapi\Controller\Rest\Interceptor->Magento\Framework\Interception\{closure}(Object(Magento\Framework\App\Request\Http))\n#8
/var/www/html/rb-dev/generated/code/Magento/Webapi/Controller/Rest/Interceptor.php(39):
Magento\Webapi\Controller\Rest\Interceptor->___callPlugins('dispatch',
Array, Array)\n#9
/var/www/html/rb-dev/vendor/magento/framework/App/Http.php(135):
Magento\Webapi\Controller\Rest\Interceptor->dispatch(Object(Magento\Framework\App\Request\Http))\n#10
/var/www/html/rb-dev/generated/code/Magento/Framework/App/Http/Interceptor.php(24):
Magento\Framework\App\Http->launch()\n#11
/var/www/html/rb-dev/vendor/magento/framework/App/Bootstrap.php(256):
Magento\Framework\App\Http\Interceptor->launch()\n#12
/var/www/html/rb-dev/index.php(39):
Magento\Framework\App\Bootstrap->run(Object(Magento\Framework\App\Http\Interceptor))\n#13
{main}","trace":null}
Anyone have any idea?
Thanks in advance.
Best Answer
I have seen you are passing parameter in Form-Data that might be the reason you are facing this kind of issue instead of Form-data select parameter as RAW - then choose JSON(application/json) !
Also you are passing customerId=146 in URL - so you actually don't need to pass this in parameter - as it is for that specific user only so !!
Below i am sharing exact endpoint with parameters which you need to pass in POSTMAN.
Endpoint - http://magento.host/rest/V1/customers/me/password?customerId=146
Headers - Authorization bearer your_access_token
Content - Type - application/json
Body :
l
Method Name : PUT
For more reference refer this link - https://devdocs.magento.com/swagger/#!/customerAccountManagementV1/customerAccountManagementV1Change...