| 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 .jsv suffix or ?format=jsv
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: text/jsv
Content-Type: text/jsv
Content-Length: length
{
Id: String,
Workspace: String,
TaskTemplate: String,
Task:
{
Name: String,
Description: String,
ExternalId: String,
TaskType: String,
Priority: 0,
DueDate: String,
DesiredCompletionDate: String,
Lat: 0,
Lon: 0,
StreetAddress: String,
Unit: String,
City: String,
State: String,
Zip: String,
Country: String,
ScheduleStart: String,
ScheduleEnd: String,
Status: String,
User: String,
Team: String,
Asset: String,
Contact: String,
TimeZone: String,
LastUpdated: String,
Created: String,
Data:
{
String: {}
}
},
Tasks:
[
{
Name: String,
Description: String,
ExternalId: String,
TaskType: String,
Priority: 0,
DueDate: String,
DesiredCompletionDate: String,
Lat: 0,
Lon: 0,
StreetAddress: String,
Unit: String,
City: String,
State: String,
Zip: String,
Country: String,
ScheduleStart: String,
ScheduleEnd: String,
Status: String,
User: String,
Team: String,
Asset: String,
Contact: String,
TimeZone: String,
LastUpdated: String,
Created: String,
Data:
{
String: {}
}
}
]
}