Search code examples
dynamics-crmpostmandynamics-365

How can I make a POST request to my Dynamics CRM from Postman?


I am having trouble making a successful HTTPS Post Request to my Dynamics Health 365 CRM.

My goal is to update the "description" field for one specific contact through a Post request.

I am able to make a successful Get request for this specific contact by passing in their contactid to the /contacts path.

get req

However, I am unable to make a Post request on this URI for my CRM site. I am consistently met with a "405 - Method Not Allowed" response.

post req body

Here are the headers I have set. Is there something I am not doing correctly to add content to a certain field for a certain contact?

post req headers

I have also tried to use a Put request but am met with the same 405 error.

I do not know of any guidance on the Dynamics CRM Web API documentation. If there is any content specifically on making Post requests to the Dynamics CRM, I would be more than happy to look to that. I am just looking for any guidance on this because I feel like I have totally hit a wall on this for the last few days. Anything helps, thank you!!

  • This is for a dynamics CRM portal
  • I am able to make Get requests on this same URL
  • I think I need to set the key-value pair of the data I want to update in the body of the request, but that seems not to be correct. Either that, or I am not doing some preliminary step in order to allow for that Post body content to be applied to the contact I am passing.

I want the "description" field in the contact's data to update to the value I set it to. See second image of my post request body.


Solution

  • I recommend you to check the documentation, it has a Postman specific section and some helpful examples.

    About your question, updates use the HTTP PATCH verb (POST is used for create operations):

    PATCH [Organization URI]/api/data/v9.0/accounts(00000000-0000-0000-0000-000000000001) HTTP/1.1  
    Content-Type: application/json  
    OData-MaxVersion: 4.0  
    OData-Version: 4.0  
    
    {  
        "name": "Updated Sample Account ",  
        "description": "This is the updated description of the sample account"
    }
    

    If you're trying to update a single attribute, you can use PUT as you did but the URL must include the attribute name (/name after the record id in this case):

    PUT [Organization URI]/api/data/v9.0/accounts(00000000-0000-0000-0000-000000000001)/name HTTP/1.1  
    Content-Type: application/json  
    OData-MaxVersion: 4.0  
    OData-Version: 4.0  
    
    {"value": "Updated Sample Account Name"}  
    

    More about update operations on the documentation.

    You can also check out the Postman collection template I created some time ago in GitHub.