The problem is you are trying to manually serialize your request body.
# warning, I am not a C# guy, so I know C# gets weird about strings. Needing a number of
# $ equal to the number of sequential {{{ for example, and """ three or greater depending
# on how many sequential quotes are inside the string.
var queryString = """{
items_page_by_column_values(
board_id: 5146042481
columns: [{column_id: "name", column_values: "DDNL05"}]
) {
cursor
items {
id
}
}
}""";
var fullQuery = JsonSerializer.Serialize({query: queryString});
Investigate GraphQL Variables because they will make your life much easier trying to substitute the values in your query.
Hello @J_Morl I don’t have experience with C# either, but this might help. I used your query in Postman and then exported it and this is the result:
C# HttpClient:
var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Post, "https://api.monday.com/v2/");
request.Headers.Add("API-Version", "2023-10");
request.Headers.Add("Authorization", "APITOKEN");
var content = new StringContent("{\\"query\\":\\"{\\\\n items_page_by_column_values(\\\\n board_id: 1234567890\\\\n columns: :{column_id: \\\\\\"name\\\\\\", column_values: \\\\\\"DDNL05\\\\\\"}]\\\\n ) {\\\\n cursor\\\\n items {\\\\n id\\\\n }\\\\n }\\\\n}\\",\\"variables\\":{}}", null, "application/json");
request.Content = content;
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
Console.WriteLine(await response.Content.ReadAsStringAsync());
C# RestSharp:
var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Post, "https://api.monday.com/v2/");
request.Headers.Add("API-Version", "2023-10");
request.Headers.Add("Authorization", "APITOKEN");
var content = new StringContent("{\\"query\\":\\"{\\\\n items_page_by_column_values(\\\\n board_id: 1234567890\\\\n columns: :{column_id: \\\\\\"name\\\\\\", column_values: \\\\\\"DDNL05\\\\\\"}]\\\\n ) {\\\\n cursor\\\\n items {\\\\n id\\\\n }\\\\n }\\\\n}\\",\\"variables\\":{}}", null, "application/json");
request.Content = content;
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
Console.WriteLine(await response.Content.ReadAsStringAsync());
Hope that helps!
Cheers,
Matias
Hey guys,
Thank you both for the great suggestions, I have definitely added Postman to my tools. I wanted to give an update. I was able to get a working query this morning using JsonSerializer. with a basic HttpClient.
string json =
System.Text.Json.JsonSerializer.Serialize(
new
{
query = @"{
items_page_by_column_values (board_id: $board columns: [{column_id: ""name"", column_values: ""Test_01""}]) {cursor items{id}} }",
}
);