SQL request PUT to update deals

Hi every one,
I tried to update a deal status by using a PUT request with SQL (sql server 2019) and the result is always 400 : Bad request.
I don’t have problem to read and import JSON data to my sql table but the PUT doesn’t work.
Could somebody help me ?

My code :

DECLARE @Object INT;
DECLARE @ResponseText AS VARCHAR(8000)
DECLARE @url VARCHAR(512);
DECLARE @status NVARCHAR(32);
DECLARE @statusText NVARCHAR(32);
SET @url = 'https://blabla-sandbox.pipedrive.com/api/v1/deals/1?api_token=***???***';

 EXEC sp_OACreate 'WinHttp.WinHttpRequest.5.1', @Object OUT;

-- Get Data
EXEC sp_OAMethod @Object, 'Open', NULL, 'GET', @url, 'false'
EXEC sp_OAMethod @Object, 'setRequestHeader', NULL, 'Content-Type', 'application/json'
EXEC sp_OAMethod @Object, 'send'
EXEC sp_OAMethod @Object, 'responseText', @ResponseText OUTPUT

if ISJSON(@ResponseText) = 1
	BEGIN	
		
		SELECT JSON_VALUE(@ResponseText, '$.data.id'), JSON_VALUE(@ResponseText, '$.data.status')	 
		
		-- update json status		
		SELECT @ResponseText = JSON_MODIFY(@ResponseText, '$.data.status', 'won')
				
		EXEC sp_OAMethod @Object, 'Open', NULL, 'PUT', @url, 'false'		
		EXEC sp_OAMethod @Object, 'setRequestHeader', NULL, 'Content-Type', 'application/json'	
		EXEC sp_OAMethod @Object, 'setRequestHeader', NULL, 'Body', @responseText
		EXEC sp_OAMethod @Object, 'send', null,  @ResponseText

		EXEC sp_OAGetProperty @Object, 'status', @status OUT
		EXEC sp_OAGetProperty @Object, 'statusText', @statusText OUT

		PRINT 'Status: ' + @status + ' (' + @statusText + ')';
	END	
  EXEC sp_OADestroy @Object

Problem solved ! It works :slight_smile:

2 Likes