Field Squared API Services

<back to all web services

AssetQuery

/{Workspace}/AssetQuery allows flexible querying of assets using structured filters.
Supports various operators (eq, ne, contains, in, gt, lt, exists) for precise asset searches.
Can query by core fields (type, name, created) and custom data fields (data.EID, data.FDH_ID, etc.).
Example: POST with filters for exact matches on type='FDH' and data.EID='specific-value'

The following routes are available for this service:
POST/{Workspace}/AssetQuery
Imports System
Imports System.Collections
Imports System.Collections.Generic
Imports System.Runtime.Serialization
Imports ServiceStack
Imports ServiceStack.DataAnnotations
Imports Field2Office.API.Model.Assets
Imports Field2Office.API.Model
Imports Field2Office.API.Model.Schedules
Imports Field2Office.Core.Model.Task

Namespace Global

    Namespace Field2Office.API.Model

        Public Partial Class AddressBasic
            Public Overridable Property Street As String
            Public Overridable Property Unit As String
            Public Overridable Property City As String
            Public Overridable Property State As String
            Public Overridable Property Zip As String
            Public Overridable Property Country As String
            Public Overridable Property Location As Location
        End Class

        Public Partial Class Anno
            Public Overridable Property X As Double
            Public Overridable Property Y As Double
            Public Overridable Property R As Double
            Public Overridable Property S As Double
            Public Overridable Property T As String
        End Class

        '''<Summary>
        '''Contains the data for an asset within the system.
        '''</Summary>
        Public Partial Class Asset
            Public Sub New()
                Schedules = New List(Of Schedule)
                Documents = New List(Of DomainItem)
                Tasks = New List(Of DomainItem)
                TaskSeries = New List(Of String)
                TaskSeriesTemplates = New List(Of String)
                Users = New List(Of DomainItem)
                Data = New Dictionary(Of String, String)
                MaintenanceHistory = New List(Of MaintenanceRecord)
                Ancestors = New List(Of String)
                LocationHistory = New List(Of LocationHistory)
                Assets = New List(Of String)
                Contacts = New List(Of String)
                Events = New List(Of EventItem)
                Teams = New List(Of String)
                InventoryItems = New List(Of String)
                ActiveLaborTypes = New Dictionary(Of String, Object)
                CustomDataFields = New List(Of CustomDataField)
            End Sub

            Public Overridable Property Workspace As String
            Public Overridable Property TimeZone As String
            Public Overridable Property AssignedWorkspace As String
            Public Overridable Property ObjectId As String
            Public Overridable Property VersionId As String
            Public Overridable Property BasedOn As String
            Public Overridable Property ExternalId As String
            Public Overridable Property Created As String
            Public Overridable Property LastUpdated As String
            Public Overridable Property Name As String
            Public Overridable Property Schedules As List(Of Schedule)
            Public Overridable Property Documents As List(Of DomainItem)
            Public Overridable Property Tasks As List(Of DomainItem)
            Public Overridable Property TaskSeries As List(Of String)
            Public Overridable Property TaskSeriesTemplates As List(Of String)
            Public Overridable Property Users As List(Of DomainItem)
            Public Overridable Property Type As String
            Public Overridable Property Symbol As String
            Public Overridable Property Data As Dictionary(Of String, String)
            Public Overridable Property Geometry As Geometry
            Public Overridable Property MaintenanceHistory As List(Of MaintenanceRecord)
            Public Overridable Property Parent As String
            Public Overridable Property Ancestors As List(Of String)
            Public Overridable Property LocationHistory As List(Of LocationHistory)
            Public Overridable Property Owner As ClassedItem
            Public Overridable Property IsParent As Boolean
            Public Overridable Property Assets As List(Of String)
            Public Overridable Property Contacts As List(Of String)
            Public Overridable Property GeometryString As String
            Public Overridable Property SourceProjection As String
            Public Overridable Property Events As List(Of EventItem)
            Public Overridable Property Anno As Anno
            Public Overridable Property Teams As List(Of String)
            Public Overridable Property Address As AddressBasic
            Public Overridable Property CreatedBy As String
            Public Overridable Property InventoryItems As List(Of String)
            Public Overridable Property ActiveLaborTypes As Dictionary(Of String, Object)
            Public Overridable Property Levels As Integer
            Public Overridable Property AllAssests As Integer
            Public Overridable Property Barcode As String
            Public Overridable Property CustomDataFields As List(Of CustomDataField)
        End Class

        Public Partial Class ClassedItem
            Public Sub New()
                Ancestors = New List(Of String)
            End Sub

            Public Overridable Property ObjectId As String
            Public Overridable Property [Class] As String
            Public Overridable Property VersionId As String
            Public Overridable Property Ancestors As List(Of String)
            Public Overridable Property Type As String
        End Class

        Public Partial Class DomainItem
            Public Overridable Property Workspace As String
            Public Overridable Property ObjectId As String
            Public Overridable Property VersionId As String
            Public Overridable Property LastUpdated As String
        End Class

        Public Partial Class EventItem
            Public Overridable Property ObjectId As String
            Public Overridable Property [Date] As String
            Public Overridable Property Location As Location
            Public Overridable Property Barcode As String
            Public Overridable Property Details As String
            Public Overridable Property Type As String
            Public Overridable Property IsScan As Boolean
            Public Overridable Property User As String
            Public Overridable Property SelectedBy As String
            Public Overridable Property Status As String
            Public Overridable Property StatusType As String
            Public Overridable Property DateCreated As String
            Public Overridable Property Automatic As Boolean
        End Class

        Public Partial Class Geometry
            Public Sub New()
                Coordinates = New List(Of Location)
            End Sub

            Public Overridable Property Type As String
            Public Overridable Property Coordinates As List(Of Location)
        End Class

        Public Partial Class Location
            Public Overridable Property y As Double
            Public Overridable Property x As Double
        End Class

        Public Partial Class LocationHistory
            Public Overridable Property [Date] As String
            Public Overridable Property Location As Location
            Public Overridable Property Barcode As String
            Public Overridable Property Notes As String
            Public Overridable Property IsScan As Boolean
        End Class

        Public Partial Class MaintenanceRecord
            Public Overridable Property DateTime As String
            Public Overridable Property Notes As String
        End Class
    End Namespace

    Namespace Field2Office.API.Model.Assets

        '''<Summary>
        '''/{Workspace}/AssetQuery allows flexible querying of assets using structured filters.Supports various operators (eq, ne, contains, in, gt, lt, exists) for precise asset searches.Can query by core fields (type, name, created) and custom data fields (data.EID, data.FDH_ID, etc.).Example: POST with filters for exact matches on type='FDH' and data.EID='specific-value'
        '''</Summary>
        Public Partial Class AssetQuery
            Public Sub New()
                Filters = New List(Of QueryFilter)
                Sort = New List(Of SortCriteria)
            End Sub

            Public Overridable Property Workspace As String
            Public Overridable Property Filters As List(Of QueryFilter)
            Public Overridable Property RecStart As Nullable(Of Integer)
            Public Overridable Property RecCount As Nullable(Of Integer)
            Public Overridable Property Sort As List(Of SortCriteria)
            Public Overridable Property SuppressGeometry As Nullable(Of Boolean)
        End Class

        Public Partial Class AssetQueryResponse
            Public Sub New()
                Assets = New List(Of Asset)
            End Sub

            Public Overridable Property Assets As List(Of Asset)
            Public Overridable Property TotalCount As Long
            Public Overridable Property RecStart As Integer
            Public Overridable Property RecCount As Integer
        End Class

        Public Partial Class QueryFilter
            Public Overridable Property Field As String
            Public Overridable Property [Operator] As String
            Public Overridable Property Value As Object
        End Class

        Public Partial Class SortCriteria
            Public Overridable Property Field As String
            Public Overridable Property Direction As String
        End Class
    End Namespace

    Namespace Field2Office.API.Model.Schedules

        Public Partial Class Schedule
            Public Sub New()
                Users = New List(Of String)
                Teams = New List(Of String)
                Data = New Dictionary(Of String, Object)
            End Sub

            Public Overridable Property Workspace As String
            Public Overridable Property ObjectId As String
            Public Overridable Property VersionId As String
            Public Overridable Property BasedOn As String
            Public Overridable Property Start As String
            Public Overridable Property [End] As String
            Public Overridable Property TimeZone As String
            Public Overridable Property Users As List(Of String)
            Public Overridable Property Teams As List(Of String)
            Public Overridable Property Data As Dictionary(Of String, Object)
        End Class
    End Namespace

    Namespace Field2Office.Core.Model.Task

        Public Partial Class CustomDataField
            Public Overridable Property Binding As String
            Public Overridable Property Label As String
            Public Overridable Property Value As Object
            Public Overridable Property DataType As String
            Public Overridable Property IsReadOnly As Boolean
            Public Overridable Property IsHidden As Boolean
            Public Overridable Property Values As String
        End Class
    End Namespace
End Namespace

VB.NET AssetQuery DTOs

To override the Content-type in your clients, use the HTTP Accept Header, append the .jsv suffix or ?format=jsv

HTTP + JSV

The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.

POST /{Workspace}/AssetQuery HTTP/1.1 
Host: dev.fieldsquared.com 
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length

{
	Workspace: String,
	Filters: 
	[
		{
			Field: String,
			Operator: String,
			Value: {}
		}
	],
	RecStart: 0,
	RecCount: 0,
	Sort: 
	[
		{
			Field: String,
			Direction: String
		}
	],
	SuppressGeometry: False
}
HTTP/1.1 200 OK
Content-Type: text/jsv
Content-Length: length

{
	Assets: 
	[
		{
			Workspace: String,
			TimeZone: String,
			AssignedWorkspace: String,
			ObjectId: String,
			VersionId: String,
			BasedOn: String,
			ExternalId: String,
			Created: String,
			LastUpdated: String,
			Name: String,
			Schedules: 
			[
				{
					Workspace: String,
					ObjectId: String,
					VersionId: String,
					BasedOn: String,
					Start: String,
					End: String,
					TimeZone: String,
					Users: 
					[
						String
					],
					Teams: 
					[
						String
					],
					Data: 
					{
						String: {}
					}
				}
			],
			Documents: 
			[
				{
					Workspace: String,
					ObjectId: String,
					VersionId: String,
					LastUpdated: String
				}
			],
			Tasks: 
			[
				{
					Workspace: String,
					ObjectId: String,
					VersionId: String,
					LastUpdated: String
				}
			],
			TaskSeries: 
			[
				String
			],
			TaskSeriesTemplates: 
			[
				String
			],
			Users: 
			[
				{
					Workspace: String,
					ObjectId: String,
					VersionId: String,
					LastUpdated: String
				}
			],
			Type: String,
			Symbol: String,
			Data: 
			{
				String: String
			},
			Geometry: 
			{
				Type: String,
				Coordinates: 
				[
					{
						y: 0,
						x: 0
					}
				]
			},
			MaintenanceHistory: 
			[
				{
					DateTime: String,
					Notes: String
				}
			],
			Parent: String,
			Ancestors: 
			[
				String
			],
			LocationHistory: 
			[
				{
					Date: String,
					Location: 
					{
						y: 0,
						x: 0
					},
					Barcode: String,
					Notes: String,
					IsScan: False
				}
			],
			Owner: 
			{
				ObjectId: String,
				Class: String,
				VersionId: String,
				Ancestors: 
				[
					String
				],
				Type: String
			},
			IsParent: False,
			Assets: 
			[
				String
			],
			Contacts: 
			[
				String
			],
			GeometryString: String,
			SourceProjection: String,
			Events: 
			[
				{
					ObjectId: String,
					Date: String,
					Location: 
					{
						y: 0,
						x: 0
					},
					Barcode: String,
					Details: String,
					Type: String,
					IsScan: False,
					User: String,
					SelectedBy: String,
					Status: String,
					StatusType: String,
					DateCreated: String,
					Automatic: False
				}
			],
			Anno: 
			{
				X: 0,
				Y: 0,
				R: 0,
				S: 0,
				T: String
			},
			Teams: 
			[
				String
			],
			Address: 
			{
				Street: String,
				Unit: String,
				City: String,
				State: String,
				Zip: String,
				Country: String,
				Location: 
				{
					y: 0,
					x: 0
				}
			},
			CreatedBy: String,
			InventoryItems: 
			[
				String
			],
			ActiveLaborTypes: 
			{
				String: {}
			},
			Levels: 0,
			AllAssests: 0,
			Barcode: String,
			CustomDataFields: 
			[
				{
					Binding: String,
					Label: String,
					Value: {},
					DataType: String,
					IsReadOnly: False,
					IsHidden: False,
					Values: String
				}
			]
		}
	],
	TotalCount: 0,
	RecStart: 0,
	RecCount: 0
}