I went through quite some trial and error (403 and 422 specifically) to fire a successful PUT request to the Zendesk API. While I thought I got the hang of it, because the requests to our own API (all POST and GET) were done so easily.
So the code I started my trial and error with looked somewhat like the code below. But gave me a 403 error, until I added the contentType parameter. Which gave me the 422 error, until i passed the JSON as a string and set the processData parameter to false.