The xAssets API - Method : AssetAuditXML

Summary

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

Parameters

Parameter : sArguments

0
"ASSET" to return data for a single asset or "FIXEDLIST" to return data for a list of assets
1
AssetID or List of Asset IDs, comma separated
2
Flag for whether to report all changes(false) or just most recent changes(true)
3
Text to use for when the asset was created (defaults to "First Version")
4
Transformation to run and then rollback after the report is created (for impact assessment)
5
Asset Table Field name we are reporting changes for
6
Days to report (eg 60 = most recent 60 days) 0 = All
7
Fields to report history on. If left blank, this will return the WhatsChangedField. It can also contain OldValue and NewValue. Any other fields are taken from the new asset record. e.g. Arguments(7) = "WhatsChanged,AssetRef,OldValue,NewValue"

Returns

Asset History XML in standard format

Syntax and Examples

Restful syntax with Microsoft Visual Basic

Example 1 - To get Asset History XML for 60 days, and all changed fields for Asset Number 7


    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 & ".hosted.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
                

SOAP Syntax with Microsoft Visual Basic

Example 1 - To get Asset History XML for 60 days, and all changed fields for Asset Number 7



    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
                        

AMSX Syntax

Example 1 - To get Asset History XML for 60 days, and all changed fields for Asset Number 7


    Set xml = CommandProcessor "AssetAuditXML", "ASSET", "7", "false", "Original Value", "", "", "60", "WhatsChanged,Barcode,AssetRef,OldValue,NewValue"
                        

XCS Syntax

Example 1 - To get Asset History XML for 60 days, and all changed fields for Asset Number 7


    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