Generate a table of Asset History information for an asset or a list of assets
xAssets stores each instance of an asset record every time it is saved, so a full audit trail exists for the asset in a history table
Use this function to query the asset history. You can query for a specific field or for all fields, and over all time or over a specific time frame
Any number of Asset table fields can be added to the data
Asset History XML in standard format
Imports System.Text Imports Newtonsoft.Json.Linq Public Module Module1 Public Sub Main() Try ' Enter your API key and company database name in these variables Dim _db As String = "mycompany" Dim apikey As String = "YOURAPIKEY" ' Open a web client to login Dim web As New System.Net.WebClient() Dim urlroot as String = "https://" & _db & ".yourxassetsplatform.xassets.net/api" Dim json As String = web.DownloadString(urlroot & "/api.ashx?apikey=" & apikey & "&database=" & _db & "&command=apilogon") ' Check the login for errors Dim o As JObject = JObject.Parse(json) Dim e As String = GetResultFromJson(o, "error") If e <> "" Then Throw New Exception(e) End If ' Store the login hash, nonce and noncedate Dim hash As String = GetResultFromJson(o, "hash") Dim nonce As String = GetResultFromJson(o, "nonce") Dim noncedate As Date = CDate(GetResultFromJson(o, "noncetime")) If hash = "" Then Throw New Exception("Unexpected error - a hash was not returned from the API logon process") End If Console.WriteLine("Logged on OK") ' Open a new web client to perform the API call web = New System.Net.WebClient() ' Add the authorization header web.Headers.Add("Authorization", "Bearer " & hash) web.Headers.Add("Sec", _db & "|" & nonce & "|" & Format(noncedate, "dd-MMM-yyyy HH:mm:ss") & "|" & Format(noncedate, "fff")) ' Perform the actual API call Dim url as String = urlroot & "/api.ashx?command=AssetAuditXML&arg0=ASSET&arg1=7&arg2=false&arg3=Original Value&arg4=&arg5=&arg6=60&arg7=WhatsChanged,Barcode,AssetRef,OldValue,NewValue Dim data As String = web.DownloadString(url.ToString) ' Parse and output the data Dim ob As JObject = JObject.Parse(data) Dim err As String = GetResultFromJson(ob, "error") If err <> "" Then Throw New Exception(err) End If Dim xml As String = GetResultFromJson(ob, "returncode") Console.WriteLine(xml) Console.WriteLine("Finished - Press enter to close") Catch ex As Exception Console.WriteLine("Error:" & ex.Message & " - Press enter to close") End Try Console.ReadLine() End Sub Private Function GetResultFromJson(o As JObject, sFind As String) As String For Each res As JObject In o.SelectTokens("data[*]") If res("type").Value(Of String) = sFind Then Return res("value").ToString End If Next Return "" End Function End Module
Try ErrorMessage = "" Return w.WebCommandProcessorArray(_hash, _username, _db, _ip, "AssetAuditXML", {"ASSET", "7", "false", "Original Value", "", "", "60", "WhatsChanged,Barcode,AssetRef,OldValue,NewValue"}, _dns, _port, _scheme, _nonce, _noncedate) Catch ex As Exception ErrorMessage = ex.Message Return "" End Try
Set xml = CommandProcessor "AssetAuditXML", "ASSET", "7", "false", "Original Value", "", "", "60", "WhatsChanged,Barcode,AssetRef,OldValue,NewValue"
Dim xml As String = Server.API("AssetAuditXML", "ASSET", "7", "false", "Original Value", "", "", "60", "WhatsChanged,Barcode,AssetRef,OldValue,NewValue")
Download the Visual Studio API Samples Project
Return to the API Index Page