I run post to get API Management subscription data but can't parse the returned json and can't find what further filtering on the returned string is required.
Postman shows json just fine. Other APIM REST requests parse json just fine.
Can someone please shed some light?
string url = $"https://management.azure.com/subscriptions/XXX/resourceGroups/YYY/providers/Microsoft.ApiManagement/service/ZZZ/subscriptions?api-version=2019-12-01&$filter=(contains(name, '{myname}'))";
string json = null;
using (HttpClient client = new HttpClient())
{
client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", bearerToken);
using (HttpResponseMessage response2 = client.GetAsync(url).Result)
{
using (HttpContent content = response2.Content)
{
json = content.ReadAsStringAsync().Result;
//JObject s = JObject.Parse(json);//didn't work
//Console.WriteLine((string)s["name"]);//didn't work
//var user = JsonConvert.DeserializeObject<UserAPIMSubscriptionMetaData>(json);//didn't work
//var user3 = JsonConvert.DeserializeObject(json);//didn't work
var json2 = json.Replace("\r\n", "");
json2 = json2.Replace(" ", "");// first replace didn't work so tried adding this one too but didn't work either
//var a = JObject.Parse(json2);//tried this too but didn't work
var user = JsonConvert.DeserializeObject<UserAPIMSubscriptionMetaData>(json2);
}
}
}
internal class properties
{
[JsonProperty("ownerId")]
public string ownerId { get; set; }
[JsonProperty("scope")]
public string scope { get; set; }
[JsonProperty("displayName")]
public string displayName { get; set; }
[JsonProperty("state")]
public string state { get; set; }
[JsonProperty("createdDate")]
public string createdDate { get; set; }
[JsonProperty("startDate")]
public string startDate { get; set; }
[JsonProperty("expirationDate")]
public string expirationDate { get; set; }
[JsonProperty("endDate")]
public string endDate { get; set; }
[JsonProperty("notificationDate")]
public string notificationDate { get; set; }
[JsonProperty("stateComment")]
public string stateComment { get; set; }
[JsonProperty("allowTracing")]
public string allowTracing { get; set; }
}
internal class UserAPIMSubscriptionMetaData
{
[JsonProperty("id")]
public string id { get; set; }
[JsonProperty("type")]
public string thisType { get; set; }
[JsonProperty("name")]
public string name { get; set; }
[JsonProperty("properties")]
public properties properties { get; set; }
}
Initial Result value from ReadAsStringAsync():
"{\r\n \"value\": [\r\n {\r\n \"id\": \"/subscriptions/XXXXX/resourceGroups/ZZZZ/providers/Microsoft.ApiManagement/service/YYYYY/subscriptions/sergiosolorzanoSubscription\",\r\n \"type\": \"Microsoft.ApiManagement/service/subscriptions\",\r\n \"name\": \"sergiosolorzanoSubscription\",\r\n \"properties\": {\r\n \"ownerId\": \"/subscriptions/XXXX/resourceGroups/YYYY/providers/Microsoft.ApiManagement/service/ZZZ/users/sergiosolorzanogmailcom\",\r\n \"scope\": \"/subscriptions/XXXX/resourceGroups/JJJJJ/providers/Microsoft.ApiManagement/service/ZZZZ/apis\",\r\n \"displayName\": \"sergiosolorzanoSubscription\",\r\n \"state\": \"active\",\r\n \"createdDate\": \"2020-04-23T08:04:31.737Z\",\r\n \"startDate\": null,\r\n \"expirationDate\": null,\r\n \"endDate\": null,\r\n \"notificationDate\": null,\r\n \"stateComment\": null,\r\n \"allowTracing\": true\r\n }\r\n }\r\n ],\r\n \"count\": 1\r\n}"