Document toolboxDocument toolbox

Send requests with C#

Introduction

After authorizing API requests as required and setting up a C# environment, you can use the script below to send API requests using C#:

using System.Security.Cryptography;
using System.Text;


namespace Devo
{
    class Program
    {
        public void callDevoAPI()
        {

            String key = "YOUR-DEVO-API-KEY-GOES-HERE";
            String secret = "YOUR-DEVO-API-SECRET-GOES-HERE";
            String cloud = "us";
            String query = "from box.unix select *";
            String body = "" +
                "{\"from\": \"2h\", " +
                "\"to\": \"now\", " +
                "\"query\":\"" + query + "\"," +
                "\"limit\": 10, " +
                "\"mode\": { \"type\":\"csv\"}}";

            var httpclient = new HttpClient();
            httpclient.Timeout = TimeSpan.FromMinutes(9999);
            String queryEndpoint = "https://apiv2-" + cloud + ".devo.com/search/query";
            var webRequest = new HttpRequestMessage(HttpMethod.Post, queryEndpoint)
            {
                Content = new StringContent(body, Encoding.UTF8, "application/json")
            };

            String unixTimestamp = (DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalMilliseconds.ToString();
            unixTimestamp = unixTimestamp.Substring(0, unixTimestamp.IndexOf("."));
            String data = key + body + unixTimestamp;
            byte[] byteArrayData = Encoding.UTF8.GetBytes(data);
            byte[] byteArraySecret = Encoding.UTF8.GetBytes(secret);
            var hash = new HMACSHA256(byteArraySecret);
            byte[] byteSigned = hash.ComputeHash(byteArrayData);
            var hexString = BitConverter.ToString(byteSigned);
            String sign = hexString.Replace("-", "").ToLower();

            httpclient.DefaultRequestHeaders.Add("x-logtrust-apikey", key);
            httpclient.DefaultRequestHeaders.Add("x-logtrust-timestamp", unixTimestamp);
            httpclient.DefaultRequestHeaders.Add("x-logtrust-sign", sign);

            try
            {
                var response = httpclient.Send(webRequest);
                Console.WriteLine(response.Content.ReadAsStringAsync().Result);
            }

            catch (Exception ex)
            {
                Console.WriteLine("Exception occured: " + ex.Message);
            }
         }

        public static void Main(string[] args)
        {
            Program p = new Program();
            p.callDevoAPI();
        }
    }
}

Parameters

Replace the following parameters in the script using your own information:

keyEnter the API key of your Devo domain. To get it, access Devo and go to Administration → Credentials → Access Keys. Learn more in this article.
secretEnter the API secret of your Devo domain. To get it, access Devo and go to Administration → Credentials → Access Keys. Learn more in this article.
cloudSpecify the Devo cloud of your domain. The available options are us, eu, es, ca and saas
queryEnter the query you want to run.
bodySpecify the body of your requests, following the format of the script above.