| GET | /{Workspace}/API/Task/Schema | ||
|---|---|---|---|
| GET, PUT, POST, DELETE | /{Workspace}/API/Task/{Id} | ||
| GET, PUT, POST, DELETE | /{Workspace}/API/Task | ||
| GET | /{Workspace}/API/Task/Schema/{TaskTemplate} |
import java.math.*
import java.util.*
import net.servicestack.client.*
@DataContract
open class PublicTask
{
@DataMember
var Id:String? = null
@DataMember
var Workspace:String? = null
@DataMember
var TaskTemplate:String? = null
@DataMember
var Task:Task? = null
@DataMember
var Tasks:ArrayList<Task> = ArrayList<Task>()
}
/**
* Contains the data for a task within the system, with versioned object referneces to users and forms.
*/
open class Task
{
var Workspace:String? = null
var AssignedWorkspace:String? = null
var ObjectId:String? = null
var VersionId:String? = null
var BasedOn:String? = null
var ExternalId:String? = null
var Created:String? = null
var LastUpdated:String? = null
var LastUpdatedLocal:String? = null
var Rank:BigDecimal? = null
var Name:String? = null
var Description:String? = null
var Address:Address? = null
var Schedules:ArrayList<Schedule> = ArrayList<Schedule>()
var Status:String? = null
var BlockedReason:String? = null
var TaskType:String? = null
var DueDate:String? = null
var DesiredCompletionDate:String? = null
var DesiredTimeWindow:TimeWindow? = null
var Priority:Int? = null
var PercentComplete:Double? = null
var Users:ArrayList<String> = ArrayList<String>()
var UsersExtended:ArrayList<DomainItem> = ArrayList<DomainItem>()
var Teams:ArrayList<DomainItem> = ArrayList<DomainItem>()
var Documents:ArrayList<String> = ArrayList<String>()
var Docs:ArrayList<DomainItem> = ArrayList<DomainItem>()
var DocSummaries:ArrayList<Document> = ArrayList<Document>()
var Data:HashMap<String,Object> = HashMap<String,Object>()
var Contacts:ArrayList<String> = ArrayList<String>()
var StatusLocation:Location? = null
var Assets:ArrayList<String> = ArrayList<String>()
var Tasks:ArrayList<String> = ArrayList<String>()
var Owner:String? = null
var Events:ArrayList<EventItem> = ArrayList<EventItem>()
var UserStatuses:HashMap<String,ArrayList<EventItem>> = HashMap<String,ArrayList<EventItem>>()
var CreatedBy:String? = null
var TimeZone:String? = null
var SeriesId:String? = null
var JobTimerRunTime:Int? = null
var JobTimerPauseTime:Int? = null
var JobTimerTransitTime:Int? = null
var CurrentJobTimerStatus:String? = null
var CurrentJobTimerTime:String? = null
var InventoryItems:ArrayList<String> = ArrayList<String>()
var LaborItems:ArrayList<String> = ArrayList<String>()
var RequiredAssets:ArrayList<RequiredAsset> = ArrayList<RequiredAsset>()
var RequiredInventoryTypes:ArrayList<RequiredInventoryType> = ArrayList<RequiredInventoryType>()
var RequiredUsers:ArrayList<RequiredUser> = ArrayList<RequiredUser>()
var Locked:Boolean? = null
var Ready:Boolean? = null
var TaskTemplate:TaskTemplate? = null
var CustomDataFields:ArrayList<CustomDataField> = ArrayList<CustomDataField>()
}
open class Address
{
var Street:String? = null
var Unit:String? = null
var City:String? = null
var State:String? = null
var Zip:String? = null
var ContactTitle:String? = null
var ContactName:String? = null
var ContactPhone:String? = null
var ContactEmail:String? = null
var Location:Location? = null
var SiteName:String? = null
var GeocodeFailed:Boolean? = null
var Country:String? = null
}
open class Location
{
var y:Double? = null
var x:Double? = null
}
open class Schedule
{
var Workspace:String? = null
var ObjectId:String? = null
var VersionId:String? = null
var BasedOn:String? = null
var Start:String? = null
var End:String? = null
var TimeZone:String? = null
var Users:ArrayList<String> = ArrayList<String>()
var Teams:ArrayList<String> = ArrayList<String>()
var Data:HashMap<String,Object> = HashMap<String,Object>()
}
open class TimeWindow
{
var Start:Int? = null
var End:Int? = null
}
open class DomainItem
{
var Workspace:String? = null
var ObjectId:String? = null
var VersionId:String? = null
var LastUpdated:String? = null
}
/**
* Represents a document associated with a task or user. To return multiple documents, call /{Workspace}/Document and pass in query parameter ids = comma separated list of document ids.
*/
open class Document
{
var Workspace:String? = null
var AssignedWorkspace:String? = null
var ObjectId:String? = null
var VersionId:String? = null
var BasedOn:String? = null
var Created:String? = null
var ExternalId:String? = null
var LastUpdated:String? = null
var Type:String? = null
var Name:String? = null
var Title:String? = null
var Data:HashMap<String,Object> = HashMap<String,Object>()
var Owner:ClassedItem? = null
var SecondaryOwners:ArrayList<ClassedItem> = ArrayList<ClassedItem>()
var Location:Location? = null
var Date:String? = null
var CreatedBy:String? = null
var PercentComplete:Double? = null
var PercentTotal:Int? = null
var PercentDone:Int? = null
var RangeExceptions:ArrayList<RangeExceptionItem> = ArrayList<RangeExceptionItem>()
var Submitted:Boolean? = null
var Schema:String? = null
var OwnerData:DocumentOwnerData? = null
}
open class ClassedItem
{
var ObjectId:String? = null
var Class:String? = null
var VersionId:String? = null
var Ancestors:ArrayList<String> = ArrayList<String>()
var Type:String? = null
}
open class RangeExceptionItem
{
var Binding:String? = null
var Message:String? = null
var Type:String? = null
var ClassName:String? = null
}
open class DocumentOwnerData
{
var OwnerType:String? = null
var TaskData:DocumentOwnerDataTask? = null
var AssetData:DocumentOwnerDataAsset? = null
}
open class DocumentOwnerDataTask
{
var ObjectId:String? = null
var Name:String? = null
var Status:String? = null
var TaskType:String? = null
var LastUpdated:Date? = null
var Created:Date? = null
var Priority:Int? = null
var Rank:BigDecimal? = null
var FirstTeam:Team? = null
var Address:Address? = null
var CustomDataFields:ArrayList<CustomDataField> = ArrayList<CustomDataField>()
}
/**
* Represents a DTO for a team in a workspace. Calls without an ObjectId will retrieve an array of all team objects for the workspace.
*/
open class Team
{
var Workspace:String? = null
var TimeZone:String? = null
var ObjectId:String? = null
var ExternalId:String? = null
var VersionId:String? = null
var BasedOn:String? = null
var Name:String? = null
var Enabled:Boolean? = null
var Members:ArrayList<DomainItem> = ArrayList<DomainItem>()
var Lead:DomainItem? = null
var Parent:DomainItem? = null
var Address:Address? = null
var Data:HashMap<String,String> = HashMap<String,String>()
var Teams:ArrayList<String> = ArrayList<String>()
var Events:ArrayList<EventItem> = ArrayList<EventItem>()
var CreatedBy:String? = null
var ActiveLaborTypes:HashMap<String,Object> = HashMap<String,Object>()
}
open class EventItem
{
var ObjectId:String? = null
var Date:String? = null
var Location:Location? = null
var Barcode:String? = null
var Details:String? = null
var Type:String? = null
var IsScan:Boolean? = null
var User:String? = null
var SelectedBy:String? = null
var Status:String? = null
var StatusType:String? = null
var DateCreated:String? = null
var Automatic:Boolean? = null
}
open class Address : AddressBase()
{
var SiteName:String? = null
var ContactTitle:String? = null
var ContactName:String? = null
var ContactPhone:String? = null
var ContactEmail:String? = null
}
open class AddressBase
{
var Id:String? = null
var AddressLine1:String? = null
var AddressLine2:String? = null
var City:String? = null
var State:String? = null
var Zip:String? = null
var Location:Location? = null
var Name:String? = null
var NameSingleLine:String? = null
var NameSingleLine5DigitZip:String? = null
var HasValidLocation:Boolean? = null
var GeocodeFailed:Boolean? = null
var GeocodeResultCode:String? = null
var Country:String? = null
}
open class Location
{
var Latitude:Double? = null
var Longitude:Double? = null
var HasValidLocation:Boolean? = null
}
open class CustomDataField
{
var Binding:String? = null
var Label:String? = null
var Value:Object? = null
var DataType:String? = null
var IsReadOnly:Boolean? = null
var IsHidden:Boolean? = null
var Values:String? = null
}
open class DocumentOwnerDataAsset
{
var ObjectId:String? = null
var Name:String? = null
var AssetType:String? = null
var LastUpdated:Date? = null
var Created:Date? = null
var Address:AddressBasic? = null
var CustomDataFields:ArrayList<CustomDataField> = ArrayList<CustomDataField>()
}
open class AddressBasic : AddressBase()
{
}
open class RequiredAsset
{
var Number:Int? = null
var Type:String? = null
}
open class RequiredInventoryType
{
var Number:Int? = null
var Type:String? = null
var Name:String? = null
var IsSerialized:Boolean? = null
var Description:String? = null
}
open class RequiredUser
{
var Number:Int? = null
var SkillTags:ArrayList<String> = ArrayList<String>()
}
open class TaskTemplate
{
var CustomFields:ArrayList<CustomField> = ArrayList<CustomField>()
var Statuses:ArrayList<TaskStatusDef> = ArrayList<TaskStatusDef>()
var TaskListDetails:String? = null
var AutoAssignStatus:String? = null
var AutoUnassignStatus:String? = null
var AutoScheduleStatus:String? = null
var AutoUnscheduleStatus:String? = null
var AutoUpdateStartStatus:String? = null
var AutoUpdateEndStatus:String? = null
var ArrivalStatus:String? = null
var DepartureStatus:String? = null
var ConfirmArrival:Boolean? = null
var ConfirmDeparture:Boolean? = null
var ManualArrivalAllowed:Boolean? = null
var ManualDepartureAllowed:Boolean? = null
var HideDisabledStatuses:Boolean? = null
var GeofenceRadius:Int? = null
}
open class CustomField
{
var Key:String? = null
var Label:String? = null
var IsActive:Boolean? = null
var IsReadOnly:Boolean? = null
var IsHidden:Boolean? = null
var IsMandatory:Boolean? = null
var DisplayOnMap:Boolean? = null
var CustomFieldDataType:CustomFieldDataType? = null
var Values:String? = null
var Prompt:String? = null
var Default:String? = null
var DefaultAutoUpdate:Boolean? = null
var RequiredIf:String? = null
var Hidden:ArrayList<String> = ArrayList<String>()
var ReadOnly:ArrayList<String> = ArrayList<String>()
var ControlArgs:HashMap<String,Object> = HashMap<String,Object>()
var IndexSlot:String? = null
var Index:String? = null
}
enum class CustomFieldDataType
{
Text,
Number,
Decimal,
Money,
PhoneNumber,
Ssn,
List,
Date,
File,
Barcode,
Gps,
Photo,
Spacer,
Separator,
AutoNumber,
TextArea,
Contact,
User,
Asset,
Checkbox,
CoreAssetList,
CoreTaskList,
CoreParentTask,
CoreContactList,
ComboBox,
DateTime,
Time,
Location,
CoreLocation,
Label,
EventLog,
Address,
Catalog,
CoreTeamList,
Segment,
CoreTimeSeries,
TimeSeries,
Command,
AutoNumberNumeric,
CatalogList,
CatalogComboBox,
DateRange,
DocumentGrid,
ReportLink,
Hyperlink,
PercentComplete,
Chart,
Range,
ExternalId,
AssetCatalog,
Inventory,
CoreTaskLaborItemTypes,
CoreTaskLaborItems,
ObjectList,
CoreTimeZone,
}
open class TaskStatusDef
{
var Name:String? = null
var Color:String? = null
var Code:String? = null
var TransitionFrom:String? = null
var TransitionMessage:String? = null
var TransitionCustomFields:ArrayList<String> = ArrayList<String>()
var HiddenIf:String? = null
var IsStart:Boolean? = null
var IsEnd:Boolean? = null
var IsBlocked:Boolean? = null
var StatusType:String? = null
var ProgressType:String? = null
var AutoCreateDocuments:ArrayList<String> = ArrayList<String>()
var LockTask:Boolean? = null
var SubmittedForms:ArrayList<BindingDescriptor> = ArrayList<BindingDescriptor>()
}
open class BindingDescriptor
{
var Binding:String? = null
var Required:Boolean? = null
}
To override the Content-type in your clients, use the HTTP Accept Header, append the .xml suffix or ?format=xml
The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.
POST /{Workspace}/API/Task/{Id} HTTP/1.1
Host: dev.fieldsquared.com
Accept: application/xml
Content-Type: application/xml
Content-Length: length
<PublicTask xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/Field2Office.API.Model.PublicApi.Tasks">
<Id>String</Id>
<Task>
<Asset xmlns="">String</Asset>
<City xmlns="">String</City>
<Contact xmlns="">String</Contact>
<Country xmlns="">String</Country>
<Created xmlns="">String</Created>
<Data xmlns:d3p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays" xmlns="">
<d3p1:KeyValueOfstringanyType>
<d3p1:Key>String</d3p1:Key>
<d3p1:Value />
</d3p1:KeyValueOfstringanyType>
</Data>
<Description xmlns="">String</Description>
<DesiredCompletionDate xmlns="">String</DesiredCompletionDate>
<DueDate xmlns="">String</DueDate>
<ExternalId xmlns="">String</ExternalId>
<LastUpdated xmlns="">String</LastUpdated>
<Lat xmlns="">0</Lat>
<Lon xmlns="">0</Lon>
<Name xmlns="">String</Name>
<Priority xmlns="">0</Priority>
<ScheduleEnd xmlns="">String</ScheduleEnd>
<ScheduleStart xmlns="">String</ScheduleStart>
<State xmlns="">String</State>
<Status xmlns="">String</Status>
<StreetAddress xmlns="">String</StreetAddress>
<TaskType xmlns="">String</TaskType>
<Team xmlns="">String</Team>
<TimeZone xmlns="">String</TimeZone>
<Unit xmlns="">String</Unit>
<User xmlns="">String</User>
<Zip xmlns="">String</Zip>
</Task>
<TaskTemplate>String</TaskTemplate>
<Tasks>
<Task xmlns="">
<Asset>String</Asset>
<City>String</City>
<Contact>String</Contact>
<Country>String</Country>
<Created>String</Created>
<Data xmlns:d4p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
<d4p1:KeyValueOfstringanyType>
<d4p1:Key>String</d4p1:Key>
<d4p1:Value />
</d4p1:KeyValueOfstringanyType>
</Data>
<Description>String</Description>
<DesiredCompletionDate>String</DesiredCompletionDate>
<DueDate>String</DueDate>
<ExternalId>String</ExternalId>
<LastUpdated>String</LastUpdated>
<Lat>0</Lat>
<Lon>0</Lon>
<Name>String</Name>
<Priority>0</Priority>
<ScheduleEnd>String</ScheduleEnd>
<ScheduleStart>String</ScheduleStart>
<State>String</State>
<Status>String</Status>
<StreetAddress>String</StreetAddress>
<TaskType>String</TaskType>
<Team>String</Team>
<TimeZone>String</TimeZone>
<Unit>String</Unit>
<User>String</User>
<Zip>String</Zip>
</Task>
</Tasks>
<Workspace>String</Workspace>
</PublicTask>