application/json { "error": "query is required" } @("https://api.loganalytics.azure.com/v1/workspaces/" + (string)context.Variables["logAnalyticsWorkspaceId"] + "/query") POST @("Bearer " + (string)context.Variables["logsToken"]) application/json @{ var input = (JObject)context.Variables["requestBody"]; var body = new JObject(); body["query"] = input["query"]; body["timespan"] = input["timespan"] != null ? input["timespan"] : "P1D"; return body.ToString(); } (); var tables = (JArray)result["tables"]; var table = (JObject)tables[0]; var columns = (JArray)table["columns"]; var rows = (JArray)table["rows"]; var lines = new List(); var headerFields = new List(); foreach (JObject col in columns) { string v = (string)col["name"]; if (v == null) { v = ""; } string escaped = v.Replace("\"", "\"\""); if (escaped.Contains(",") || escaped.Contains("\"") || escaped.Contains("\n") || escaped.Contains("\r")) { escaped = "\"" + escaped + "\""; } headerFields.Add(escaped); } lines.Add(string.Join(",", headerFields)); foreach (JArray row in rows) { var rowFields = new List(); foreach (var cell in row) { string v = cell.Type == JTokenType.Null ? "" : cell.ToString(); string escaped = v.Replace("\"", "\"\""); if (escaped.Contains(",") || escaped.Contains("\"") || escaped.Contains("\n") || escaped.Contains("\r")) { escaped = "\"" + escaped + "\""; } rowFields.Add(escaped); } lines.Add(string.Join(",", rowFields)); } return string.Join("\r\n", lines); }" /> text/csv; charset=utf-8 attachment; filename="query-result.csv" @((string)context.Variables["csvBody"]) application/json @(((IResponse)context.Variables["queryResponse"]).Body.As())