I need to call this REST endpoint
PATCH https://graph.windows.net/contoso.onmicrosoft.com/users/[email protected]?api-version=1.5 HTTP/1.1
{
"<extensionPropertyName>": <value>
}
Please see documentation here: https://msdn.microsoft.com/en-us/library/azure/dn720459.aspx
I have the following code to set the value of one property for a user:
public async Task<ActionResult> AddExtensionPropertyValueToUser()
{
Uri serviceRoot = new Uri(azureAdGraphApiEndPoint);
var token = await GetAppTokenAsync();
string requestUrl = "https://graph.windows.net/mysaasapp.onmicrosoft.com/users/[email protected]?api-version=1.5";
HttpClient hc = new HttpClient();
hc.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", token);
var method = new HttpMethod("PATCH");
var request = new HttpRequestMessage(method, requestUrl)
{
Content = new StringContent("{ \"extension_33e037a7b1aa42ab96936c22d01ca338_Compania\": \"Empresa1\" }", Encoding.UTF8, "application/json")
};
HttpResponseMessage hrm = await hc.GetAsync(new Uri(requestUrl));
if (hrm.IsSuccessStatusCode)
{
string jsonresult = await hrm.Content.ReadAsStringAsync();
return View("TestRestCall", new SuccessViewModel
{
Name = "The Title",
Message = "The message",
JSON = jsonresult.ToJson()
});
}
else
{
return View();
}
}
However instead of respongint with 204 (No content), its responding with the entire user properties, so I guess something is wrong with my rest CALL
I think your problem is this line:
HttpResponseMessage hrm = await hc.GetAsync(new Uri(requestUrl));
This sends an HTTP GET request to the URL that you supply, which in this case references the user "[email protected]". That is why you are seeing all the properties of the user returned in the response.
I think what you want to do is send the PATCH HttpRequestMessage that you created. To do this you need to use the SendAsync method and supply the HttpRequestMessage as a parameter. If you change the line above to the following, I think you'll set the property value and get your 204 No Content response:
HttpResponseMessage hrm = await hc.SendAsync(request);