API Overview
API Code Examples
35min
the following c# code blocks serve as examples of how to interact with the hunni api using various methods you will need to replace the client id and client secret with your credentials and update any asset ids to reflect ids your account has access to at the end of doc, all the examples are combined into in a single api code examples docid\ n3w2kf2 cfm3ihf3 rbvu if you run into any issues please contact support\@hunni io note all the c# examples below require the newtonsoft json library retrieve a token use the below code example to retrieve an access token see api authentication for more information string strtoken = null; string strclientid = "\<client id>"; string strclientsecret = "\<client secret>"; using (httpclient client = new httpclient()) { var requesttoken = new httprequestmessage { method = httpmethod post, requesturi = new uri"https //api hunni io/oauth/token"), content = new stringcontent("grant type=client credentials\&client id=" + strclientid + "\&client secret=" + strclientsecret) }; using (httpresponsemessage response = client sendasync(requesttoken) result) { using (httpcontent content = response content) { var json = content readasstringasync() result; var result = jsonconvert deserializeobject\<dynamic>(json); if (result\["error description"] == null) { strtoken = result access token; } } } } folders create a folder public static int createfolder(string foldername, int? parentfolderid, string token) { hunnifolder hf = new hunnifolder(); hf name = foldername; hf parentfolderid = parentfolderid; var jhunnifolder = jobject parse(jsonconvert serializeobject(hf)); hunniresult hr = postjsontowebapi("https //api hunni io/v1/hunnifolder", jhunnifolder tostring(), token); if (hr issuccess) { return hr objectid; } else { return 1; } } public static hunniresult postjsontowebapi(string url, string json, string token) { httpclient client = new httpclient(); var contenttype = new system net http headers mediatypewithqualityheadervalue("application/json"); client defaultrequestheaders accept add(contenttype); client defaultrequestheaders authorization = new system net http headers authenticationheadervalue("bearer", token); var contentdata = new stringcontent(json, encoding utf8, "application/json"); var response = client postasync(url, contentdata); if (response result issuccessstatuscode) { var stringdata = response result content readasstringasync(); return jsonconvert deserializeobject\<hunniresult>(stringdata result); } else { return null; } } public class hunnifolder { public int id; public string name; public string iconurl; public bool isshared; public bool isownorgshared; public int? parentfolderid; } public class hunniresult { public string message; public bool issuccess; public int objectid; } retrieve child folders by parent folder id public static list\<hunnifolder> getchildfoldersbyparentfolderid(int? folderid, string token) { string jsfolders = ""; if (folderid == null) { jsfolders = callrestmethod("https //api hunni io/v1/hunnifolders/null", token); } else { jsfolders = callrestmethod("https //api hunni io/v1/hunnifolders/" + folderid, token); } return jsonconvert deserializeobject\<list\<hunnifolder>>(jsfolders); } public static string callrestmethod(string url, string token) { try { var myuri = new uri(url); var mywebrequest = webrequest create(myuri); var myhttpwebrequest = (httpwebrequest)mywebrequest; myhttpwebrequest headers add("authorization", "bearer " + token); var mywebresponse = mywebrequest getresponse(); encoding enc = system text encoding getencoding("utf 8"); streamreader responsestream = new streamreader(mywebresponse getresponsestream(), enc); string result = string empty; result = responsestream readtoend(); mywebresponse close(); return result; } catch { return null; } } public class hunnifolder { public int id; public string name; public string iconurl; public bool isshared; public bool isownorgshared; public int? parentfolderid; } tables retrieve table definition public static hunnitable gethunnitable(int tableid, string token) { string jstable = callrestmethod("https //api hunni io/v1/hunnitable/" + tableid, token); return jsonconvert deserializeobject\<hunnitable>(jstable); } public static string callrestmethod(string url, string token) { try { var myuri = new uri(url); var mywebrequest = webrequest create(myuri); var myhttpwebrequest = (httpwebrequest)mywebrequest; myhttpwebrequest headers add("authorization", "bearer " + token); var mywebresponse = mywebrequest getresponse(); encoding enc = system text encoding getencoding("utf 8"); streamreader responsestream = new streamreader(mywebresponse getresponsestream(), enc); string result = string empty; result = responsestream readtoend(); mywebresponse close(); return result; } catch { return null; } } public class hunnitable { public enum hunnitableaccess { owner, write, read } public int id; public string name; public int hunnifolderid; public hunnitableaccess access; public string description; public datetime lastupdatedon; public list\<hunnicolumn> hunnicolumns; } public class hunnicolumn { public int id; public int hunniassetid; public int assettypeid; public string name; public int hunnicolumntypeid; public bool isrequired; public int displayorder; } create a table public static int createtable(string tablename, int folderid, string token) { hunnitable ht = new hunnitable(); ht name = tablename; ht hunnifolderid = folderid; list\<hunnicolumn> lhunnicolumns = new list\<hunnicolumn>(); hunnicolumn hcname = new hunnicolumn(); hcname assettypeid = 1; hcname name = "column 1 name"; hcname hunnicolumntypeid = 2; hcname isrequired = true; hcname displayorder = 1; lhunnicolumns add(hcname); hunnicolumn hcfile = new hunnicolumn(); hcfile assettypeid = 1; hcfile hunnicolumntypeid = 5; hcfile name = "column 2 file"; hcfile isrequired = false; hcfile displayorder = 1; lhunnicolumns add(hcfile); ht hunnicolumns = lhunnicolumns; var jhunnitable = jobject parse(jsonconvert serializeobject(ht)); hunniresult hr = postjsontowebapi("https //api hunni io/v1/hunnitable", jhunnitable tostring(), token); if (hr issuccess) { return hr objectid; } else { return 1; } } public static hunniresult postjsontowebapi(string url, string json, string token) { httpclient client = new httpclient(); var contenttype = new system net http headers mediatypewithqualityheadervalue("application/json"); client defaultrequestheaders accept add(contenttype); client defaultrequestheaders authorization = new system net http headers authenticationheadervalue("bearer", token); var contentdata = new stringcontent(json, encoding utf8, "application/json"); var response = client postasync(url, contentdata); if (response result issuccessstatuscode) { var stringdata = response result content readasstringasync(); return jsonconvert deserializeobject\<hunniresult>(stringdata result); } else { return null; } } public class hunniresult { public string message; public bool issuccess; public int objectid; } public class hunnitable { public enum hunnitableaccess { owner, write, read } public int id; public string name; public int hunnifolderid; public hunnitableaccess access; public string description; public datetime lastupdatedon; public list\<hunnicolumn> hunnicolumns; } public class hunnicolumn { public int id; public int hunniassetid; public int assettypeid; public string name; public int hunnicolumntypeid; public bool isrequired; public int displayorder; } retrieve the tables from a folder public static list\<hunnitable> gethunnitablesbyfolderid(int folderid, string token) { string jstables = callrestmethod("https //api hunni io/v1/hunnifoldertables/" + folderid, token); return jsonconvert deserializeobject\<list\<hunnitable>>(jstables); } public static string callrestmethod(string url, string token) { try { var myuri = new uri(url); var mywebrequest = webrequest create(myuri); var myhttpwebrequest = (httpwebrequest)mywebrequest; myhttpwebrequest headers add("authorization", "bearer " + token); var mywebresponse = mywebrequest getresponse(); encoding enc = system text encoding getencoding("utf 8"); streamreader responsestream = new streamreader(mywebresponse getresponsestream(), enc); string result = string empty; result = responsestream readtoend(); mywebresponse close(); return result; } catch { return null; } } public class hunnitable { public enum hunnitableaccess { owner, write, read } public int id; public string name; public int hunnifolderid; public hunnitableaccess access; public string description; public datetime lastupdatedon; public list\<hunnicolumn> hunnicolumns; } public class hunnicolumn { public int id; public int hunniassetid; public int assettypeid; public string name; public int hunnicolumntypeid; public bool isrequired; public int displayorder; } retrieve data from a table public static datatable getdatafortable(int tableid, string token) { string jshoneydata = callrestmethod("https //api hunni io/v1/hunnitabledata/" + tableid, token); return jsonconvert deserializeobject\<system data datatable>(jshoneydata); } public static string callrestmethod(string url, string token) { try { var myuri = new uri(url); var mywebrequest = webrequest create(myuri); var myhttpwebrequest = (httpwebrequest)mywebrequest; myhttpwebrequest headers add("authorization", "bearer " + token); var mywebresponse = mywebrequest getresponse(); encoding enc = system text encoding getencoding("utf 8"); streamreader responsestream = new streamreader(mywebresponse getresponsestream(), enc); string result = string empty; result = responsestream readtoend(); mywebresponse close(); return result; } catch { return null; } } file groups retrieve file group definition public static hunnifilegroup gethunnifilegroup(int filegroupid, string token) { string jsfilegroup = callrestmethod("https //api hunni io/v1/hunnifilegroup/" + filegroupid, token); return jsonconvert deserializeobject\<hunnifilegroup>(jsfilegroup); } public static string callrestmethod(string url, string token) { try { var myuri = new uri(url); var mywebrequest = webrequest create(myuri); var myhttpwebrequest = (httpwebrequest)mywebrequest; myhttpwebrequest headers add("authorization", "bearer " + token); var mywebresponse = mywebrequest getresponse(); encoding enc = system text encoding getencoding("utf 8"); streamreader responsestream = new streamreader(mywebresponse getresponsestream(), enc); string result = string empty; result = responsestream readtoend(); mywebresponse close(); return result; } catch { return null; } } public class hunnifilegroup { public enum hunnitableaccess { owner, write, read } public int id; public string name; public int hunnifolderid; public string description; public datetime lastupdatedon; public list\<hunnicolumn> hunnicolumns; } public class hunnicolumn { public int id; public int hunniassetid; public int assettypeid; public string name; public int hunnicolumntypeid; public bool isrequired; public int displayorder; } create a file group //when creating a file group only name and hunnifolderid need to provided //although a file group has columns, like a table, there is only one //column that the user can put data into it is auto created when //a file group is crated it will called "file" and will be of type //file (id=5) public static int createfilegroup(string filegroupname, int folderid, string token) { hunnifilegroup hfg = new hunnifilegroup(); hfg name = filegroupname; hfg hunnifolderid = folderid; var jshunnifilegroup = jobject parse(jsonconvert serializeobject(hfg)); hunniresult hr = postjsontowebapi("https //api hunni io/v1/hunnifilegroup", jshunnifilegroup tostring(), token); if (hr issuccess) { return hr objectid; } else { return 1; } } public static hunniresult postjsontowebapi(string url, string json, string token) { httpclient client = new httpclient(); var contenttype = new system net http headers mediatypewithqualityheadervalue("application/json"); client defaultrequestheaders accept add(contenttype); client defaultrequestheaders authorization = new system net http headers authenticationheadervalue("bearer", token); var contentdata = new stringcontent(json, encoding utf8, "application/json"); var response = client postasync(url, contentdata); if (response result issuccessstatuscode) { var stringdata = response result content readasstringasync(); return jsonconvert deserializeobject\<hunniresult>(stringdata result); } else { return null; } } public class hunniresult { public string message; public bool issuccess; public int objectid; } public class hunnifilegroup { public enum hunnitableaccess { owner, write, read } public int id; public string name; public int hunnifolderid; public string description; public datetime lastupdatedon; public list\<hunnicolumn> hunnicolumns; } public class hunnicolumn { public int id; public int hunniassetid; public int assettypeid; public string name; public int hunnicolumntypeid; public bool isrequired; public int displayorder; } retrieve the file groups from a folder public static list\<hunnifilegroup> gethunnifilegroupsbyfolderid(int folderid, string token) { string jsfilegroups = callrestmethod("https //api hunni io/v1/hunnifoldertables/" + folderid, token); return jsonconvert deserializeobject\<list\<hunnifilegroup>>(jsfilegroups); } public static string callrestmethod(string url, string token) { try { var myuri = new uri(url); var mywebrequest = webrequest create(myuri); var myhttpwebrequest = (httpwebrequest)mywebrequest; myhttpwebrequest headers add("authorization", "bearer " + token); var mywebresponse = mywebrequest getresponse(); encoding enc = system text encoding getencoding("utf 8"); streamreader responsestream = new streamreader(mywebresponse getresponsestream(), enc); string result = string empty; result = responsestream readtoend(); mywebresponse close(); return result; } catch { return null; } } public class hunnifilegroup { public enum hunnitableaccess { owner, write, read } public int id; public string name; public int hunnifolderid; public string description; public datetime lastupdatedon; public list\<hunnicolumn> hunnicolumns; } public class hunnicolumn { public int id; public int hunniassetid; public int assettypeid; public string name; public int hunnicolumntypeid; public bool isrequired; public int displayorder; } retrieve data from a file group public static datatable getdataforfilegroup(int filegroupid, string token) { string jshoneydata = callrestmethod("https //api hunni io/v1/hunnifilegroupdata/" + filegroupid, token); return jsonconvert deserializeobject\<system data datatable>(jshoneydata); } public static string callrestmethod(string url, string token) { try { var myuri = new uri(url); var mywebrequest = webrequest create(myuri); var myhttpwebrequest = (httpwebrequest)mywebrequest; myhttpwebrequest headers add("authorization", "bearer " + token); var mywebresponse = mywebrequest getresponse(); encoding enc = system text encoding getencoding("utf 8"); streamreader responsestream = new streamreader(mywebresponse getresponsestream(), enc); string result = string empty; result = responsestream readtoend(); mywebresponse close(); return result; } catch { return null; } } views retrieve the views from a folder public static list\<hunniview> gethunniviewsbyfolderid(int folderid, string token) { string jsviews = callrestmethod("https //api hunni io/v1/hunnifolderviews/" + folderid, token); return jsonconvert deserializeobject\<list\<hunniview>>(jsviews); } public static string callrestmethod(string url, string token) { try { var myuri = new uri(url); var mywebrequest = webrequest create(myuri); var myhttpwebrequest = (httpwebrequest)mywebrequest; myhttpwebrequest headers add("authorization", "bearer " + token); var mywebresponse = mywebrequest getresponse(); encoding enc = system text encoding getencoding("utf 8"); streamreader responsestream = new streamreader(mywebresponse getresponsestream(), enc); string result = string empty; result = responsestream readtoend(); mywebresponse close(); return result; } catch { return null; } } public class hunniview { public enum hunniviewaccess { owner, write, read } public int id; public string name; public hunniviewaccess access; public string description; public datetime lastupdatedon; public list\<hunnicolumn> hunnicolumns; } public class hunnicolumn { public int id; public int hunniassetid; public int assettypeid; public string name; public int hunnicolumntypeid; public bool isrequired; public int displayorder; } retrieve view definition public static hunniview gethunniview(int viewid, string token) { string jsview = callrestmethod("https //api hunni io/v1/hunniview/" + viewid, token); return jsonconvert deserializeobject\<hunniview>(jsview); } public static string callrestmethod(string url, string token) { try { var myuri = new uri(url); var mywebrequest = webrequest create(myuri); var myhttpwebrequest = (httpwebrequest)mywebrequest; myhttpwebrequest headers add("authorization", "bearer " + token); var mywebresponse = mywebrequest getresponse(); encoding enc = system text encoding getencoding("utf 8"); streamreader responsestream = new streamreader(mywebresponse getresponsestream(), enc); string result = string empty; result = responsestream readtoend(); mywebresponse close(); return result; } catch { return null; } } public class hunniview { public enum hunniviewaccess { owner, write, read } public int id; public string name; public hunniviewaccess access; public string description; public datetime lastupdatedon; public list\<hunnicolumn> hunnicolumns; } public class hunnicolumn { public int id; public int hunniassetid; public int assettypeid; public string name; public int hunnicolumntypeid; public bool isrequired; public int displayorder; } retrieve the data from a view public static datatable getdataforview(int viewid, string token) { string jshoneydata = callrestmethod("https //api hunni io/v1/hunniviewdata/" + viewid, token); return jsonconvert deserializeobject\<system data datatable>(jshoneydata); } public static string callrestmethod(string url, string token) { try { var myuri = new uri(url); var mywebrequest = webrequest create(myuri); var myhttpwebrequest = (httpwebrequest)mywebrequest; myhttpwebrequest headers add("authorization", "bearer " + token); var mywebresponse = mywebrequest getresponse(); encoding enc = system text encoding getencoding("utf 8"); streamreader responsestream = new streamreader(mywebresponse getresponsestream(), enc); string result = string empty; result = responsestream readtoend(); mywebresponse close(); return result; } catch { return null; } } columns retrieve column types public static list\<hunnicolumntype> gethunnicolumntypes(string token) { string jscolumntypes = callrestmethod("https //api hunni io/v1/hunnicolumntypes", token); return jsonconvert deserializeobject\<list\<hunnicolumntype>>(jscolumntypes); } public static string callrestmethod(string url, string token) { try { var myuri = new uri(url); var mywebrequest = webrequest create(myuri); var myhttpwebrequest = (httpwebrequest)mywebrequest; myhttpwebrequest headers add("authorization", "bearer " + token); var mywebresponse = mywebrequest getresponse(); encoding enc = system text encoding getencoding("utf 8"); streamreader responsestream = new streamreader(mywebresponse getresponsestream(), enc); string result = string empty; result = responsestream readtoend(); mywebresponse close(); return result; } catch { return null; } } public class hunnicolumntype { public int id; public string name; } retrieve column definitions for a table public static list\<hunnicolumn> gethunnicolumnsbytableid(int tableid, string token) { string jscolumns = callrestmethod("https //api hunni io/v1/hunnicolumns/" + tableid, token); return jsonconvert deserializeobject\<list\<hunnicolumn>>(jscolumns); } public static string callrestmethod(string url, string token) { try { var myuri = new uri(url); var mywebrequest = webrequest create(myuri); var myhttpwebrequest = (httpwebrequest)mywebrequest; myhttpwebrequest headers add("authorization", "bearer " + token); var mywebresponse = mywebrequest getresponse(); encoding enc = system text encoding getencoding("utf 8"); streamreader responsestream = new streamreader(mywebresponse getresponsestream(), enc); string result = string empty; result = responsestream readtoend(); mywebresponse close(); return result; } catch { return null; } } public class hunnicolumn { public int id; public int hunniassetid; public int assettypeid; public string name; public int hunnicolumntypeid; public bool isrequired; public int displayorder; } rows insert single table row //the code below is only for illustrative purposes of how to leverage the api call and would only //work if the hunni column ids lined up for the table id that was passed //the only difference between an insert and an update is whether a legitimate row id was passed in //leave the hunni row id = 0 for insert or set it to a valid value for an update public static int dosinglerowinsert(int tableid, string token) { hunnirow hr = new hunnirow(); hr assettype = hunnirow\ hunniassettype table; hr hunniassetid = tableid; list\<hunnirowcolumnvalue> lvalues = new list\<hunnirowcolumnvalue>(); hunnirowcolumnvalue value1 = new hunnirowcolumnvalue(); value1 hunnicolumnid = 33; value1 value = "column 1 value"; lvalues add(value1); hunnirowcolumnvalue value2 = new hunnirowcolumnvalue(); value2 hunnicolumnid = 44; value2 value = "column 2 value"; lvalues add(value2); hr hunnirowcolumnvalues = lvalues; var jhunnirow = jobject parse(jsonconvert serializeobject(hr)); hunniresult hrhunnirow = postjsontowebapi("https //api hunni io/v1/hunnirowsave", jhunnirow\ tostring(), token); if (hrhunnirow\ issuccess) { return hrhunnirow\ objectid; } else { return 1; } } public static hunniresult postjsontowebapi(string url, string json, string token) { httpclient client = new httpclient(); var contenttype = new system net http headers mediatypewithqualityheadervalue("application/json"); client defaultrequestheaders accept add(contenttype); client defaultrequestheaders authorization = new system net http headers authenticationheadervalue("bearer", token); var contentdata = new stringcontent(json, encoding utf8, "application/json"); var response = client postasync(url, contentdata); if (response result issuccessstatuscode) { var stringdata = response result content readasstringasync(); return jsonconvert deserializeobject\<hunniresult>(stringdata result); } else { return null; } } public class hunnirow { public enum hunniassettype { table, filegroup } public int id; public int hunniassetid; public list\<hunnirowcolumnvalue> hunnirowcolumnvalues; public hunniassettype assettype; } public class hunnirowcolumnvalue { public int hunnirowid; public int hunnicolumnid; public string value; } public class hunniresult { public string message; public bool issuccess; public int objectid; } insert table rows in bulk //the code below is only for illustrative purposes of how to leverage the api call and would only //work if the hunni column ids lined up for the table id that was passed //the only difference between an insert and an update is whether a legitimate row id was passed in //leave the hunni row id = 0 for insert or set it to a valid value for an update public static hunniresult dobulkrowinsert(int tableid, string token) { list\<hunnirow> lrows = new list\<hunnirow>(); for (int i = 0; i< 10; i++) { hunnirow hr = new hunnirow(); hr assettype = hunnirow\ hunniassettype table; hr hunniassetid= tableid; list\<hunnirowcolumnvalue> lvalues = new list\<hunnirowcolumnvalue>(); hunnirowcolumnvalue value1 = new hunnirowcolumnvalue(); value1 hunnicolumnid = 2375; value1 value = "column 1 value"; lvalues add(value1); hunnirowcolumnvalue value2 = new hunnirowcolumnvalue(); value2 hunnicolumnid = 2376; value2 value = "column 2 value"; lvalues add(value2); hr hunnirowcolumnvalues = lvalues; lrows add(hr); } var jhunnirows = jarray parse(jsonconvert serializeobject(lrows)); return postjsontowebapi("https //api hunni io/v1/hunnirowsavebulk", jhunnirows tostring(), token); } public static hunniresult postjsontowebapi(string url, string json, string token) { httpclient client = new httpclient(); var contenttype = new system net http headers mediatypewithqualityheadervalue("application/json"); client defaultrequestheaders accept add(contenttype); client defaultrequestheaders authorization = new system net http headers authenticationheadervalue("bearer", token); var contentdata = new stringcontent(json, encoding utf8, "application/json"); var response = client postasync(url, contentdata); if (response result issuccessstatuscode) { var stringdata = response result content readasstringasync(); return jsonconvert deserializeobject\<hunniresult>(stringdata result); } else { return null; } } public class hunnirow { public enum hunniassettype { table, filegroup } public int id; public int hunniassetid; public list\<hunnirowcolumnvalue> hunnirowcolumnvalues; public hunniassettype assettype; } public class hunnirowcolumnvalue { public int hunnirowid; public int hunnicolumnid; public string value; } public class hunniresult { public string message; public bool issuccess; public int objectid; } update single table row //the code below is only for illustrative purposes of how to leverage the api call and would only //work if the hunni column ids lined up for the table id that was passed //the only difference between an insert and an update is whether a legitimate row id was passed in //leave the hunni row id = 0 for insert or set it to a valid value for an update public static hunniresult dosinglerowupdate(int tableid, int rowid, string token) { hunnirow hr = new hunnirow(); hr assettype = hunnirow\ hunniassettype table; hr hunniassetid= tableid; hr id = rowid; list\<hunnirowcolumnvalue> lvalues = new list\<hunnirowcolumnvalue>(); hunnirowcolumnvalue value1 = new hunnirowcolumnvalue(); value1 hunnicolumnid = 2375; value1 value = "column 1 value"; lvalues add(value1); hunnirowcolumnvalue value2 = new hunnirowcolumnvalue(); value2 hunnicolumnid = 2376; value2 value = "column 2 value"; lvalues add(value2); hr hunnirowcolumnvalues = lvalues; var jhunnirow = jobject parse(jsonconvert serializeobject(hr)); return postjsontowebapi("https //api hunni io/v1/hunnirowsave", jhunnirow\ tostring(), token); } public static hunniresult postjsontowebapi(string url, string json, string token) { httpclient client = new httpclient(); var contenttype = new system net http headers mediatypewithqualityheadervalue("application/json"); client defaultrequestheaders accept add(contenttype); client defaultrequestheaders authorization = new system net http headers authenticationheadervalue("bearer", token); var contentdata = new stringcontent(json, encoding utf8, "application/json"); var response = client postasync(url, contentdata); if (response result issuccessstatuscode) { var stringdata = response result content readasstringasync(); return jsonconvert deserializeobject\<hunniresult>(stringdata result); } else { return null; } } public class hunnirow { public enum hunniassettype { table, filegroup } public int id; public int hunniassetid; public list\<hunnirowcolumnvalue> hunnirowcolumnvalues; public hunniassettype assettype; } public class hunnirowcolumnvalue { public int hunnirowid; public int hunnicolumnid; public string value; } public class hunniresult { public string message; public bool issuccess; public int objectid; } update table rows in bulk //the code below is only for illustrative purposes of how to leverage the api call and would only //work if the hunni column ids lined up for the table id that was passed //the only difference between an insert and an update is whether a legitimate row id was passed in //leave the hunni row id = 0 for insert or set it to a valid value for an update public static hunniresult dobulkrowupdate(int tableid, string token) { list\<hunnirow> lrows = new list\<hunnirow>(); for (int i = 0; i< 10; i++) { hunnirow hr = new hunnirow(); hr assettype = hunnirow\ hunniassettype table; hr hunniassetid= tableid; hr id = i; list\<hunnirowcolumnvalue> lvalues = new list\<hunnirowcolumnvalue>(); hunnirowcolumnvalue value1 = new hunnirowcolumnvalue(); value1 hunnicolumnid = 2375; value1 value = "column 1 value"; lvalues add(value1); hunnirowcolumnvalue value2 = new hunnirowcolumnvalue(); value2 hunnicolumnid = 2376; value2 value = "column 2 value"; lvalues add(value2); hr hunnirowcolumnvalues = lvalues; lrows add(hr); } var jhunnirows = jarray parse(jsonconvert serializeobject(lrows)); return postjsontowebapi("https //api hunni io/v1/hunnirowsavebulk", jhunnirows tostring(), token); } public static hunniresult postjsontowebapi(string url, string json, string token) { httpclient client = new httpclient(); var contenttype = new system net http headers mediatypewithqualityheadervalue("application/json"); client defaultrequestheaders accept add(contenttype); client defaultrequestheaders authorization = new system net http headers authenticationheadervalue("bearer", token); var contentdata = new stringcontent(json, encoding utf8, "application/json"); var response = client postasync(url, contentdata); if (response result issuccessstatuscode) { var stringdata = response result content readasstringasync(); return jsonconvert deserializeobject\<hunniresult>(stringdata result); } else { return null; } } public class hunnirow { public enum hunniassettype { table, filegroup } public int id; public int hunniassetid; public list\<hunnirowcolumnvalue> hunnirowcolumnvalues; public hunniassettype assettype; } public class hunnirowcolumnvalue { public int hunnirowid; public int hunnicolumnid; public string value; } public class hunniresult { public string message; public bool issuccess; public int objectid; } delete table rows public static hunniresult deleterowsfromtable(int tableid, list\<int> rowids, string token) { hunnirowbulkdeletepayload payload = new hunnirowbulkdeletepayload(); payload tableid = tableid; payload rowids = rowids; var jbulkdeletepayload = jobject parse(jsonconvert serializeobject(payload)); return postjsontowebapi("https //api hunni io/v1/hunnirowdelete", jbulkdeletepayload tostring(), token); } public static hunniresult postjsontowebapi(string url, string json, string token) { httpclient client = new httpclient(); var contenttype = new system net http headers mediatypewithqualityheadervalue("application/json"); client defaultrequestheaders accept add(contenttype); client defaultrequestheaders authorization = new system net http headers authenticationheadervalue("bearer", token); var contentdata = new stringcontent(json, encoding utf8, "application/json"); var response = client postasync(url, contentdata); if (response result issuccessstatuscode) { var stringdata = response result content readasstringasync(); return jsonconvert deserializeobject\<hunniresult>(stringdata result); } else { return null; } } public class hunnirowbulkdeletepayload { public int tableid; public list\<int> rowids; } files orphaned documents files uploaded through the api that are not associated with a table after 24 hours are deleted upload a file public static int uploadfile(string strfilepath, string strfilename, string token) { var client = new httpclient(); var request = new httprequestmessage(httpmethod post, "https //api hunni io/v1/hunnifilebinary"); client defaultrequestheaders authorization = new system net http headers authenticationheadervalue("bearer", token); var content = new multipartformdatacontent(); content add(new streamcontent(file openread(strfilepath + strfilename)), "file", strfilename); request content = content; var response = client sendasync(request); response result content readasstringasync(); if (response result issuccessstatuscode) { var stringdata = response result content readasstringasync(); hunniresult hr = jsonconvert deserializeobject\<hunniresult>(stringdata result); if (hr issuccess) { return hr objectid; } else { return 1; } } else { return 1; } } public class hunniresult { public string message; public bool issuccess; public int objectid; } upload a file into a table cell value public static bool uploadfiletotablecellvalue(string strfilepath, string strfilename, int tableid, string token) { int ifileid = 0; var client = new httpclient(); var request = new httprequestmessage(httpmethod post, "https //api hunni io/v1/hunnifilebinary"); client defaultrequestheaders authorization = new system net http headers authenticationheadervalue("bearer", token); var content = new multipartformdatacontent(); content add(new streamcontent(file openread(strfilepath + strfilename)), "file", strfilename); request content = content; var response = client sendasync(request); response result content readasstringasync(); if (response result issuccessstatuscode) { var stringdata = response result content readasstringasync(); hunniresult hr = jsonconvert deserializeobject\<hunniresult>(stringdata result); if (hr issuccess) { ifileid = hr objectid; hunnirow row = new hunnirow(); row\ hunnitableid = tableid; list\<hunnirowcolumnvalue> lvalues = new list\<hunnirowcolumnvalue>(); hunnirowcolumnvalue value1 = new hunnirowcolumnvalue(); value1 hunnicolumnid = 2152; value1 value = ifileid tostring(); lvalues add(value1); row\ hunnirowcolumnvalues = lvalues; var jhunnirow = jobject parse(jsonconvert serializeobject(row)); hunniresult hrhunnirow = postjsontowebapi("https //api hunni io/v1/hunnirowsave", jhunnirow\ tostring(), token); if (hrhunnirow\ issuccess) { return true; } else { return false; } } else { return false; } } else { return false; } } public static hunniresult postjsontowebapi(string url, string json, string token) { httpclient client = new httpclient(); var contenttype = new system net http headers mediatypewithqualityheadervalue("application/json"); client defaultrequestheaders accept add(contenttype); client defaultrequestheaders authorization = new system net http headers authenticationheadervalue("bearer", token); var contentdata = new stringcontent(json, encoding utf8, "application/json"); var response = client postasync(url, contentdata); if (response result issuccessstatuscode) { var stringdata = response result content readasstringasync(); return jsonconvert deserializeobject\<hunniresult>(stringdata result); } else { return null; } } public class hunniresult { public string message; public bool issuccess; public int objectid; } public class hunnirow { public enum hunniassettype { table, filegroup } public int id; public int hunniassetid; public list\<hunnirowcolumnvalue> hunnirowcolumnvalues; public hunniassettype assettype; } public class hunnirowcolumnvalue { public int hunnirowid; public int hunnicolumnid; public string value; } retrieve the details for a file public static hunnifile getdetailsforfile(int fileid, int assettypeid, int assetid, string token) { string jsfile = callrestmethod("https //api hunni io/v1/hunnifiledetail/" + fileid + "/" + assettypeid + "/" + assetid, token); return jsonconvert deserializeobject\<hunnifile>(jsfile); } public static string callrestmethod(string url, string token) { try { var myuri = new uri(url); var mywebrequest = webrequest create(myuri); var myhttpwebrequest = (httpwebrequest)mywebrequest; myhttpwebrequest headers add("authorization", "bearer " + token); var mywebresponse = mywebrequest getresponse(); encoding enc = system text encoding getencoding("utf 8"); streamreader responsestream = new streamreader(mywebresponse getresponsestream(), enc); string result = string empty; result = responsestream readtoend(); mywebresponse close(); return result; } catch { return null; } } public class hunnifile { public int id; public string name; public int64 length; } download a file public static bool getbinaryforfile(int fileid, int assettypeid, int assetid, string filepath, string token) { try { var myuri = new uri("https //api hunni io/v1/hunnifilebinary/" + fileid + "/" + assettypeid + "/" + assetid); var mywebrequest = webrequest create(myuri); var myhttpwebrequest = (httpwebrequest)mywebrequest; myhttpwebrequest headers add("authorization", "bearer " + token); myhttpwebrequest method = webrequestmethods http get; httpwebresponse httpresponse = (httpwebresponse)myhttpwebrequest getresponse(); stream httpresponsestream = httpresponse getresponsestream(); if (file exists(filepath)) { file delete(filepath); } using (var fs = file create(filepath)) { httpresponsestream copyto(fs); } return true; } catch { return false; } } miscellaneous retrieve the api version private static string getapiversion(string token) { var myuri = new uri("https //apidev hunni io/v1/hunniapiversion"); var mywebrequest = webrequest create(myuri); var myhttpwebrequest = (httpwebrequest)mywebrequest; myhttpwebrequest headers add("authorization", "bearer " + token); var mywebresponse = mywebrequest getresponse(); encoding enc = system text encoding getencoding("utf 8"); streamreader responsestream = new streamreader(mywebresponse getresponsestream(), enc); return responsestream readtoend() tostring(); } retrieve organization subscription details public static organizationsubscription getsubscriptiondetails(string token) { string jsorganizationsubscription = callrestmethod("https //api hunni io/v1/hunniorganizationsubscription", token); return jsonconvert deserializeobject\<organizationsubscription>(jsorganizationsubscription); } public static string callrestmethod(string url, string token) { try { var myuri = new uri(url); var mywebrequest = webrequest create(myuri); var myhttpwebrequest = (httpwebrequest)mywebrequest; myhttpwebrequest headers add("authorization", "bearer " + token); var mywebresponse = mywebrequest getresponse(); encoding enc = system text encoding getencoding("utf 8"); streamreader responsestream = new streamreader(mywebresponse getresponsestream(), enc); string result = string empty; result = responsestream readtoend(); mywebresponse close(); return result; } catch { return null; } } public class organizationsubscription { public enum organizationsubscriptiontype { free, individual, business } public organizationsubscriptiontype subscriptiontype; public int64 datavaluelimit; public int64 currentdatavaluetotal; } retrieve asset types public static list\<hunniassettype> gethunniassettypes(string token) { string jsassettypes = callrestmethod("https //api hunni io/v1/hunniassettypes", token); return jsonconvert deserializeobject\<list\<hunniassettype>>(jsassettypes); } public static string callrestmethod(string url, string token) { try { var myuri = new uri(url); var mywebrequest = webrequest create(myuri); var myhttpwebrequest = (httpwebrequest)mywebrequest; myhttpwebrequest headers add("authorization", "bearer " + token); var mywebresponse = mywebrequest getresponse(); encoding enc = system text encoding getencoding("utf 8"); streamreader responsestream = new streamreader(mywebresponse getresponsestream(), enc); string result = string empty; result = responsestream readtoend(); mywebresponse close(); return result; } catch { return null; } } public class hunniassettype { public int id; public string name; } all the above examples in a single c# console app the following code serves as an example of how to interact with the hunni api you will need to replace the client id and client secret with your credentials and update any asset ids to reflect ids your account has access to using newtonsoft json; using system; using system collections generic; using system net http; using system text; using system io; using system net; using newtonsoft json linq; using system data; namespace hunniapiexamples { internal class program { static void main(string\[] args) { string strtoken = gettoken(); console writeline("api version " + getapiversion(strtoken)); console writeline("new folder id = " + createfolder(datetime now\ tostring("mmddyyhhmmss"), null, strtoken)); list\<hunnifolder> lrootfolders = getchildfoldersbyparentfolderid(null, strtoken); if (lrootfolders != null) { foreach (hunnifolder hfolder in lrootfolders) { console writeline("folder name/id " + hfolder name + "/" + hfolder id); } } hunnitable ht = gethunnitable(103, strtoken); if (ht != null) { console writeline("table name " + ht name); console writeline("table id " + ht id); if (ht hunnicolumns != null) { foreach (hunnicolumn hc in ht hunnicolumns) { console writeline("column name " + hc name); console writeline("column type id " + hc hunnicolumntypeid); } } } hunniview hv = gethunniview(8, strtoken); if (hv != null) { console writeline("view name " + hv name); console writeline("view id " + hv id); if (hv hunnicolumns != null) { foreach (hunnicolumn hc in hv hunnicolumns) { console writeline("column name " + hc name); console writeline("column type id " + hc hunnicolumntypeid); } } } console writeline("uploaded file id " + uploadfile(@"c \temp\\", "filename xlsx", strtoken)); console writeline("upload file to table cell success " + uploadfiletotablecellvalue(@"c \temp\\", "filename xlsx", 86, strtoken) tostring()); console writeline("new table id " + createtable(datetime now\ tostring("mmddyyhhmmss"), 168, strtoken)); list\<hunnicolumn> lhunnicolumns = gethunnicolumnsbytableid(103, strtoken); if (lhunnicolumns != null) { foreach (hunnicolumn hc in lhunnicolumns) { console writeline("column name " + hc name); console writeline("column type id " + hc hunnicolumntypeid); } } list\<hunnicolumntype> lhunnicolumntypes = gethunnicolumntypes(strtoken); if (lhunnicolumntypes != null) { foreach (hunnicolumntype hct in lhunnicolumntypes) { console writeline("column type name " + hct name); console writeline("column type id " + hct id); } } list\<hunniassettype> lhunniassettypes = gethunniassettypes(strtoken); if (lhunniassettypes != null) { foreach (hunniassettype hct in lhunniassettypes) { console writeline("asset type name " + hct name); console writeline("asset type id " + hct id); } } hunnifile hf = getdetailsforfile(16, 1, 86, strtoken); if (hf != null) { console writeline("file id " + hf id); console writeline("file name " + hf name); } console writeline("file download success " + getbinaryforfile(16, 1, 86, @"c \temp\\" + datetime now\ tostring("mmddyyhhmmss"), strtoken) tostring()); list\<hunnitable> lhunnitables = gethunnitablesbyfolderid(1, strtoken); if (lhunnitables != null) { foreach (hunnitable htable in lhunnitables) { console writeline("table name " + htable name); console writeline("table id " + htable id); if (htable hunnicolumns != null) { foreach (hunnicolumn hc in htable hunnicolumns) { console writeline("column name " + hc name); console writeline("column type id " + hc hunnicolumntypeid); } } } } list\<hunniview> lhunniviews = gethunniviewsbyfolderid(1, strtoken); if (lhunniviews != null) { foreach (hunniview hview in lhunniviews) { console writeline("view name " + hview\ name); console writeline("view id " + hview\ id); if (hview\ hunnicolumns != null) { foreach (hunnicolumn hc in hview\ hunnicolumns) { console writeline("column name " + hc name); console writeline("column type id " + hc hunnicolumntypeid); } } } } organizationsubscription os = getsubscriptiondetails(strtoken); if (os != null) { console writeline("current data value total " + os currentdatavaluetotal); console writeline("data value limit " + os datavaluelimit); console writeline("organization subscription type " + os organizationsubscriptiontype); } list\<int> lrowids = new list\<int>(); lrowids add(1); lrowids add(2); console writeline("row delete success " + deleterowsfromtable(39, lrowids, strtoken) issuccess); console writeline("row insert id " + dosinglerowinsert(103, strtoken) tostring()); console writeline("singe row update success " + dosinglerowupdate(103, 1, strtoken) issuccess tostring()); console writeline("bulk insert success " + dobulkrowinsert(103, strtoken) issuccess tostring()); console writeline("bulk update success " + dobulkrowupdate(103, strtoken) issuccess tostring()); datatable dttabledata = getdatafortable(103, strtoken); if (dttabledata != null) { foreach (datacolumn dc in dttabledata columns) { console writeline(dc columnname); } } datatable dtviewdata = getdataforview(8, strtoken); if (dtviewdata != null) { foreach (datacolumn dc in dtviewdata columns) { console writeline(dc columnname); } } } private static string gettoken() { string strtoken = null; string strclientid = "\<client id>"; string strclientsecret = "\<client secret>"; using (httpclient client = new httpclient()) { var requesttoken = new httprequestmessage { method = httpmethod post, requesturi = new uri("https //api hunni io/oauth/token"), content = new stringcontent("grant type=client credentials\&client id=" + strclientid + "\&client secret=" + strclientsecret) }; using (httpresponsemessage response = client sendasync(requesttoken) result) { using (httpcontent content = response content) { var json = content readasstringasync() result; var result = jsonconvert deserializeobject\<dynamic>(json); if (result\["error description"] == null) { strtoken = result access token; } } } } return strtoken; } public static hunniresult postjsontowebapi(string url, string json, string token) { httpclient client = new httpclient(); var contenttype = new system net http headers mediatypewithqualityheadervalue("application/json"); client defaultrequestheaders accept add(contenttype); client defaultrequestheaders authorization = new system net http headers authenticationheadervalue("bearer", token); var contentdata = new stringcontent(json, encoding utf8, "application/json"); var response = client postasync(url, contentdata); if (response result issuccessstatuscode) { var stringdata = response result content readasstringasync(); return jsonconvert deserializeobject\<hunniresult>(stringdata result); } else { return null; } } public static string callrestmethod(string url, string token) { try { var myuri = new uri(url); var mywebrequest = webrequest create(myuri); var myhttpwebrequest = (httpwebrequest)mywebrequest; myhttpwebrequest headers add("authorization", "bearer " + token); var mywebresponse = mywebrequest getresponse(); encoding enc = system text encoding getencoding("utf 8"); streamreader responsestream = new streamreader(mywebresponse getresponsestream(), enc); string result = string empty; result = responsestream readtoend(); mywebresponse close(); return result; } catch { return null; } } public static bool uploadfiletotablecellvalue(string strfilepath, string strfilename, int tableid, string token) { int ifileid = 0; var client = new httpclient(); var request = new httprequestmessage(httpmethod post, "https //api hunni io//v1/hunnifilebinary"); client defaultrequestheaders authorization = new system net http headers authenticationheadervalue("bearer", token); var content = new multipartformdatacontent(); content add(new streamcontent(file openread(strfilepath + strfilename)), "file", strfilename); request content = content; var response = client sendasync(request); response result content readasstringasync(); if (response result issuccessstatuscode) { var stringdata = response result content readasstringasync(); hunniresult hr = jsonconvert deserializeobject\<hunniresult>(stringdata result); if (hr issuccess) { ifileid = hr objectid; hunnirow row = new hunnirow(); row\ hunnitableid = tableid; list\<hunnirowcolumnvalue> lvalues = new list\<hunnirowcolumnvalue>(); hunnirowcolumnvalue value1 = new hunnirowcolumnvalue(); value1 hunnicolumnid = 2152; value1 value = ifileid tostring(); lvalues add(value1); row\ hunnirowcolumnvalues = lvalues; var jhunnirow = jobject parse(jsonconvert serializeobject(row)); hunniresult hrhunnirow = postjsontowebapi("https //api hunni io/v1/hunnirowsave", jhunnirow\ tostring(), token); if (hrhunnirow\ issuccess) { return true; } else { return false; } } else { return false; } } else { return false; } } public static bool getbinaryforfile(int fileid, int assettypeid, int assetid, string filepath, string token) { try { var myuri = new uri("https //api hunni io/v1/hunnifilebinary/" + fileid + "/" + assettypeid + "/" + assetid); var mywebrequest = webrequest create(myuri); var myhttpwebrequest = (httpwebrequest)mywebrequest; myhttpwebrequest headers add("authorization", "bearer " + token); myhttpwebrequest method = webrequestmethods http get; httpwebresponse httpresponse = (httpwebresponse)myhttpwebrequest getresponse(); stream httpresponsestream = httpresponse getresponsestream(); if (file exists(filepath)) { file delete(filepath); } using (var fs = file create(filepath)) { httpresponsestream copyto(fs); } return true; } catch { return false; } } private static string getapiversion(string token) { var myuri = new uri("https //api hunni io/v1/hunniapiversion"); var mywebrequest = webrequest create(myuri); var myhttpwebrequest = (httpwebrequest)mywebrequest; myhttpwebrequest headers add("authorization", "bearer " + token); var mywebresponse = mywebrequest getresponse(); encoding enc = system text encoding getencoding("utf 8"); streamreader responsestream = new streamreader(mywebresponse getresponsestream(), enc); return responsestream readtoend() tostring(); } public static int createfolder(string foldername, int? parentfolderid, string token) { hunnifolder hf = new hunnifolder(); hf name = foldername; hf parentfolderid = parentfolderid; var jhunnifolder = jobject parse(jsonconvert serializeobject(hf)); hunniresult hr = postjsontowebapi("https //api hunni io/v1/hunnifolder", jhunnifolder tostring(), token); if (hr issuccess) { return hr objectid; } else { return 1; } } public static list\<hunnifolder> getchildfoldersbyparentfolderid(int? folderid, string token) { string jsfolders = ""; if (folderid == null) { jsfolders = callrestmethod("https //api hunni io/v1/hunnifolders/null", token); } else { jsfolders = callrestmethod("https //api hunni io/v1/hunnifolders/" + folderid, token); } return jsonconvert deserializeobject\<list\<hunnifolder>>(jsfolders); } public static hunnitable gethunnitable(int tableid, string token) { string jstable = callrestmethod("https //api hunni io/v1/hunnitable/" + tableid, token); return jsonconvert deserializeobject\<hunnitable>(jstable); } public static hunniview gethunniview(int viewid, string token) { string jsview = callrestmethod("https //api hunni io/v1/hunniview/" + viewid, token); return jsonconvert deserializeobject\<hunniview>(jsview); } public static int uploadfile(string strfilepath, string strfilename, string token) { var client = new httpclient(); var request = new httprequestmessage(httpmethod post, "https //api hunni io//v1/hunnifilebinary"); client defaultrequestheaders authorization = new system net http headers authenticationheadervalue("bearer", token); var content = new multipartformdatacontent(); content add(new streamcontent(file openread(strfilepath + strfilename)), "file", strfilename); request content = content; var response = client sendasync(request); response result content readasstringasync(); if (response result issuccessstatuscode) { var stringdata = response result content readasstringasync(); hunniresult hr = jsonconvert deserializeobject\<hunniresult>(stringdata result); if (hr issuccess) { return hr objectid; } else { return 1; } } else { return 1; } } public static int createtable(string tablename, int folderid, string token) { hunnitable ht = new hunnitable(); ht name = tablename; ht hunnifolderid = folderid; list\<hunnicolumn> lhunnicolumns = new list\<hunnicolumn>(); hunnicolumn hcname = new hunnicolumn(); hcname name = "column 1 name"; hcname hunnicolumntypeid = 2; hcname isrequired = true; hcname displayorder = 1; lhunnicolumns add(hcname); hunnicolumn hcfile = new hunnicolumn(); hcfile hunnicolumntypeid = 5; hcfile name = "column 2 file"; hcfile isrequired = false; hcfile displayorder = 1; lhunnicolumns add(hcfile); ht hunnicolumns = lhunnicolumns; var jhunnitable = jobject parse(jsonconvert serializeobject(ht)); hunniresult hr = postjsontowebapi("https //api hunni io/v1/hunnitable", jhunnitable tostring(), token); if (hr issuccess) { return hr objectid; } else { return 1; } } public static list\<hunnicolumn> gethunnicolumnsbytableid(int tableid, string token) { string jscolumns = callrestmethod("https //api hunni io/v1/hunnicolumns/" + tableid, token); return jsonconvert deserializeobject\<list\<hunnicolumn>>(jscolumns); } public static list\<hunnicolumntype> gethunnicolumntypes(string token) { string jscolumntypes = callrestmethod("https //api hunni io/v1/hunnicolumntypes", token); return jsonconvert deserializeobject\<list\<hunnicolumntype>>(jscolumntypes); } public static list\<hunniassettype> gethunniassettypes(string token) { string jsassettypes = callrestmethod("https //api hunni io/v1/hunniassettypes", token); return jsonconvert deserializeobject\<list\<hunniassettype>>(jsassettypes); } public static hunnifile getdetailsforfile(int fileid, int assettypeid, int assetid, string token) { string jsfile = callrestmethod("https //api hunni io/v1/hunnifiledetail/" + fileid + "/" + assettypeid + "/" + assetid, token); return jsonconvert deserializeobject\<hunnifile>(jsfile); } public static list\<hunnitable> gethunnitablesbyfolderid(int folderid, string token) { string jstables = callrestmethod("https //api hunni io/v1/hunnifoldertables/" + folderid, token); return jsonconvert deserializeobject\<list\<hunnitable>>(jstables); } public static list\<hunniview> gethunniviewsbyfolderid(int folderid, string token) { string jsviews = callrestmethod("https //api hunni io/v1/hunnifolderviews/" + folderid, token); return jsonconvert deserializeobject\<list\<hunniview>>(jsviews); } public static organizationsubscription getsubscriptiondetails(string token) { string jsorganizationsubscription = callrestmethod("https //api hunni io/v1/hunniorganizationsubscription", token); return jsonconvert deserializeobject\<organizationsubscription>(jsorganizationsubscription); } public static hunniresult deleterowsfromtable(int tableid, list\<int> rowids, string token) { hunnirowbulkdeletepayload payload = new hunnirowbulkdeletepayload(); payload tableid = tableid; payload rowids = rowids; var jbulkdeletepayload = jobject parse(jsonconvert serializeobject(payload)); return postjsontowebapi("https //api hunni io/v1/hunnirowdelete", jbulkdeletepayload tostring(), token); } public static int dosinglerowinsert(int tableid, string token) { hunnirow hr = new hunnirow(); hr hunnitableid = tableid; list\<hunnirowcolumnvalue> lvalues = new list\<hunnirowcolumnvalue>(); hunnirowcolumnvalue value1 = new hunnirowcolumnvalue(); value1 hunnicolumnid = 2375; value1 value = "column 1 value"; lvalues add(value1); hunnirowcolumnvalue value2 = new hunnirowcolumnvalue(); value2 hunnicolumnid = 2376; value2 value = "column 2 value"; lvalues add(value2); hr hunnirowcolumnvalues = lvalues; var jhunnirow = jobject parse(jsonconvert serializeobject(hr)); hunniresult hrhunnirow = postjsontowebapi("https //api hunni io/v1/hunnirowsave", jhunnirow\ tostring(), token); if (hrhunnirow\ issuccess) { return hrhunnirow\ objectid; } else { return 1; } } public static hunniresult dosinglerowupdate(int tableid, int rowid, string token) { hunnirow hr = new hunnirow(); hr hunnitableid = tableid; hr id = rowid; list\<hunnirowcolumnvalue> lvalues = new list\<hunnirowcolumnvalue>(); hunnirowcolumnvalue value1 = new hunnirowcolumnvalue(); value1 hunnicolumnid = 2375; value1 value = "column 1 value"; lvalues add(value1); hunnirowcolumnvalue value2 = new hunnirowcolumnvalue(); value2 hunnicolumnid = 2376; value2 value = "column 2 value"; lvalues add(value2); hr hunnirowcolumnvalues = lvalues; var jhunnirow = jobject parse(jsonconvert serializeobject(hr)); return postjsontowebapi("https //api hunni io/v1/hunnirowsave", jhunnirow\ tostring(), token); } public static hunniresult dobulkrowinsert(int tableid, string token) { list\<hunnirow> lrows = new list\<hunnirow>(); for (int i = 0; i < 10; i++) { hunnirow hr = new hunnirow(); hr hunnitableid = tableid; list\<hunnirowcolumnvalue> lvalues = new list\<hunnirowcolumnvalue>(); hunnirowcolumnvalue value1 = new hunnirowcolumnvalue(); value1 hunnicolumnid = 2375; value1 value = "column 1 value"; lvalues add(value1); hunnirowcolumnvalue value2 = new hunnirowcolumnvalue(); value2 hunnicolumnid = 2376; value2 value = "column 2 value"; lvalues add(value2); hr hunnirowcolumnvalues = lvalues; lrows add(hr); } var jhunnirows = jarray parse(jsonconvert serializeobject(lrows)); return postjsontowebapi("https //api hunni io/v1/hunnirowsavebulk", jhunnirows tostring(), token); } public static hunniresult dobulkrowupdate(int tableid, string token) { list\<hunnirow> lrows = new list\<hunnirow>(); for (int i = 0; i < 10; i++) { hunnirow hr = new hunnirow(); hr hunnitableid = tableid; hr id = i; list\<hunnirowcolumnvalue> lvalues = new list\<hunnirowcolumnvalue>(); hunnirowcolumnvalue value1 = new hunnirowcolumnvalue(); value1 hunnicolumnid = 2375; value1 value = "column 1 value"; lvalues add(value1); hunnirowcolumnvalue value2 = new hunnirowcolumnvalue(); value2 hunnicolumnid = 2376; value2 value = "column 2 value"; lvalues add(value2); hr hunnirowcolumnvalues = lvalues; lrows add(hr); } var jhunnirows = jarray parse(jsonconvert serializeobject(lrows)); return postjsontowebapi("https //api hunni io/v1/hunnirowsavebulk", jhunnirows tostring(), token); } public static datatable getdatafortable(int tableid, string token) { string jshoneydata = callrestmethod("https //api hunni io/v1/hunnitabledata/" + tableid, token); return jsonconvert deserializeobject\<system data datatable>(jshoneydata); } public static datatable getdataforview(int viewid, string token) { string jshoneydata = callrestmethod("https //api hunni io/v1/hunniviewdata/" + viewid, token); return jsonconvert deserializeobject\<system data datatable>(jshoneydata); } public class hunnirow { public enum hunniassettype { table, filegroup } public int id; public int hunniassetid; public list\<hunnirowcolumnvalue> hunnirowcolumnvalues; public hunniassettype assettype; } public class hunnirowcolumnvalue { public int hunnirowid; public int hunnicolumnid; public string value; } public class organizationsubscription { public enum organizationsubscriptiontype { free, individual, business } public organizationsubscriptiontype subscriptiontype; public int64 datavaluelimit; public int64 currentdatavaluetotal; } public class hunnirowbulkdeletepayload { public int tableid; public list\<int> rowids; } public class hunnifile { public int id; public string name; public int64 length; } public class hunniassettype { public int id; public string name; } public class hunnicolumntype { public int id; public string name; } public class hunnitable { public enum hunnitableaccess { owner, write, read } public int id; public string name; public int hunnifolderid; public hunnitableaccess access; public string description; public datetime lastupdatedon; public list\<hunnicolumn> hunnicolumns; } public class hunnicolumn { public int id; public int hunniassetid; public int assettypeid; public string name; public int hunnicolumntypeid; public bool isrequired; public int displayorder; } public class hunniview { public enum hunniviewaccess { owner, write, read } public int id; public string name; public hunniviewaccess access; public string description; public datetime lastupdatedon; public list\<hunnicolumn> hunnicolumns; } public class hunnifolder { public int id; public string name; public string iconurl; public bool isshared; public bool isownorgshared; public int? parentfolderid; } public class hunniresult { public string message; public bool issuccess; public int objectid; } } }