Field Squared API Services

<back to all web services

PublicTask

The following routes are available for this service:
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}

export class Location
{
    public Latitude: number;
    public Longitude: number;
    public HasValidLocation: boolean;

    public constructor(init?: Partial<Location>) { (Object as any).assign(this, init); }
}

export class AddressBase
{
    public Id: string;
    public AddressLine1: string;
    public AddressLine2: string;
    public City: string;
    public State: string;
    public Zip: string;
    public Location: Location;
    public Name: string;
    public NameSingleLine: string;
    public NameSingleLine5DigitZip: string;
    public HasValidLocation: boolean;
    public GeocodeFailed: boolean;
    public GeocodeResultCode: string;
    public Country: string;

    public constructor(init?: Partial<AddressBase>) { (Object as any).assign(this, init); }
}

export class Address extends AddressBase
{
    public SiteName: string;
    public ContactTitle: string;
    public ContactName: string;
    public ContactPhone: string;
    public ContactEmail: string;

    public constructor(init?: Partial<Address>) { super(init); (Object as any).assign(this, init); }
}

export class Schedule
{
    public Workspace: string;
    public ObjectId: string;
    public VersionId: string;
    public BasedOn: string;
    public Start: string;
    public End: string;
    public TimeZone: string;
    public Users: string[];
    public Teams: string[];
    public Data: { [index: string]: Object; };

    public constructor(init?: Partial<Schedule>) { (Object as any).assign(this, init); }
}

export class TimeWindow
{
    public Start: number;
    public End: number;

    public constructor(init?: Partial<TimeWindow>) { (Object as any).assign(this, init); }
}

export class DomainItem
{
    public Workspace: string;
    public ObjectId: string;
    public VersionId: string;
    public LastUpdated: string;

    public constructor(init?: Partial<DomainItem>) { (Object as any).assign(this, init); }
}

export class ClassedItem
{
    public ObjectId: string;
    public Class: string;
    public VersionId: string;
    public Ancestors: string[];
    public Type: string;

    public constructor(init?: Partial<ClassedItem>) { (Object as any).assign(this, init); }
}

export class RangeExceptionItem
{
    public Binding: string;
    public Message: string;
    public Type: string;
    public ClassName: string;

    public constructor(init?: Partial<RangeExceptionItem>) { (Object as any).assign(this, init); }
}

export class EventItem
{
    public ObjectId: string;
    public Date: string;
    public Location: Location;
    public Barcode: string;
    public Details: string;
    public Type: string;
    public IsScan: boolean;
    public User: string;
    public SelectedBy: string;
    public Status: string;
    public StatusType: string;
    public DateCreated: string;
    public Automatic: boolean;

    public constructor(init?: Partial<EventItem>) { (Object as any).assign(this, init); }
}

/** @description Represents a DTO for a team in a workspace. Calls without an ObjectId will retrieve an array of all team objects for the workspace. */
export class Team
{
    public Workspace: string;
    public TimeZone: string;
    public ObjectId: string;
    public ExternalId: string;
    public VersionId: string;
    public BasedOn: string;
    public Name: string;
    public Enabled: boolean;
    public Members: DomainItem[];
    public Lead: DomainItem;
    public Parent: DomainItem;
    public Address: Address;
    public Data: { [index: string]: string; };
    public Teams: string[];
    public Events: EventItem[];
    public CreatedBy: string;
    public ActiveLaborTypes: { [index: string]: Object; };

    public constructor(init?: Partial<Team>) { (Object as any).assign(this, init); }
}

export class CustomDataField
{
    public Binding: string;
    public Label: string;
    public Value: Object;
    public DataType: string;
    public IsReadOnly: boolean;
    public IsHidden: boolean;
    public Values: string;

    public constructor(init?: Partial<CustomDataField>) { (Object as any).assign(this, init); }
}

export class DocumentOwnerDataTask
{
    public ObjectId: string;
    public Name: string;
    public Status: string;
    public TaskType: string;
    public LastUpdated: string;
    public Created: string;
    public Priority?: number;
    public Rank: number;
    public FirstTeam: Team;
    public Address: Address;
    public CustomDataFields: CustomDataField[];

    public constructor(init?: Partial<DocumentOwnerDataTask>) { (Object as any).assign(this, init); }
}

export class AddressBasic extends AddressBase
{

    public constructor(init?: Partial<AddressBasic>) { super(init); (Object as any).assign(this, init); }
}

export class DocumentOwnerDataAsset
{
    public ObjectId: string;
    public Name: string;
    public AssetType: string;
    public LastUpdated: string;
    public Created: string;
    public Address: AddressBasic;
    public CustomDataFields: CustomDataField[];

    public constructor(init?: Partial<DocumentOwnerDataAsset>) { (Object as any).assign(this, init); }
}

export class DocumentOwnerData
{
    public OwnerType: string;
    public TaskData: DocumentOwnerDataTask;
    public AssetData: DocumentOwnerDataAsset;

    public constructor(init?: Partial<DocumentOwnerData>) { (Object as any).assign(this, init); }
}

/** @description 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.  */
export class Document
{
    public Workspace: string;
    public AssignedWorkspace: string;
    public ObjectId: string;
    public VersionId: string;
    public BasedOn: string;
    public Created: string;
    public ExternalId: string;
    public LastUpdated: string;
    public Type: string;
    public Name: string;
    public Title: string;
    public Data: { [index: string]: Object; };
    public Owner: ClassedItem;
    public SecondaryOwners: ClassedItem[];
    public Location: Location;
    public Date: string;
    public CreatedBy: string;
    public PercentComplete: number;
    public PercentTotal: number;
    public PercentDone: number;
    public RangeExceptions: RangeExceptionItem[];
    public Submitted: boolean;
    public Schema: string;
    public OwnerData: DocumentOwnerData;

    public constructor(init?: Partial<Document>) { (Object as any).assign(this, init); }
}

export class RequiredAsset
{
    public Number: number;
    public Type: string;

    public constructor(init?: Partial<RequiredAsset>) { (Object as any).assign(this, init); }
}

export class RequiredInventoryType
{
    public Number: number;
    public Type: string;
    public Name: string;
    public IsSerialized: boolean;
    public Description: string;

    public constructor(init?: Partial<RequiredInventoryType>) { (Object as any).assign(this, init); }
}

export class RequiredUser
{
    public Number: number;
    public SkillTags: string[];

    public constructor(init?: Partial<RequiredUser>) { (Object as any).assign(this, init); }
}

export enum CustomFieldDataType
{
    Text = 'Text',
    Number = 'Number',
    Decimal = 'Decimal',
    Money = 'Money',
    PhoneNumber = 'PhoneNumber',
    Ssn = 'Ssn',
    List = 'List',
    Date = 'Date',
    File = 'File',
    Barcode = 'Barcode',
    GPS = 'GPS',
    Photo = 'Photo',
    Spacer = 'Spacer',
    Separator = 'Separator',
    AutoNumber = 'AutoNumber',
    TextArea = 'TextArea',
    Contact = 'Contact',
    User = 'User',
    Asset = 'Asset',
    Checkbox = 'Checkbox',
    CoreAssetList = 'CoreAssetList',
    CoreTaskList = 'CoreTaskList',
    CoreParentTask = 'CoreParentTask',
    CoreContactList = 'CoreContactList',
    ComboBox = 'ComboBox',
    DateTime = 'DateTime',
    Time = 'Time',
    Location = 'Location',
    CoreLocation = 'CoreLocation',
    Label = 'Label',
    EventLog = 'EventLog',
    Address = 'Address',
    Catalog = 'Catalog',
    CoreTeamList = 'CoreTeamList',
    Segment = 'Segment',
    CoreTimeSeries = 'CoreTimeSeries',
    TimeSeries = 'TimeSeries',
    Command = 'Command',
    AutoNumberNumeric = 'AutoNumberNumeric',
    CatalogList = 'CatalogList',
    CatalogComboBox = 'CatalogComboBox',
    DateRange = 'DateRange',
    DocumentGrid = 'DocumentGrid',
    ReportLink = 'ReportLink',
    Hyperlink = 'Hyperlink',
    PercentComplete = 'PercentComplete',
    Chart = 'Chart',
    Range = 'Range',
    ExternalId = 'ExternalId',
    AssetCatalog = 'AssetCatalog',
    Inventory = 'Inventory',
    CoreTaskLaborItemTypes = 'CoreTaskLaborItemTypes',
    CoreTaskLaborItems = 'CoreTaskLaborItems',
    ObjectList = 'ObjectList',
    CoreTimeZone = 'CoreTimeZone',
}

export class CustomField
{
    public Key: string;
    public Label: string;
    public IsActive: boolean;
    public IsReadOnly: boolean;
    public IsHidden: boolean;
    public IsMandatory: boolean;
    public DisplayOnMap: boolean;
    public CustomFieldDataType: CustomFieldDataType;
    public Values: string;
    public Prompt: string;
    public Default: string;
    public DefaultAutoUpdate: boolean;
    public RequiredIf: string;
    public Hidden: string[];
    public ReadOnly: string[];
    public ControlArgs: { [index: string]: Object; };
    public IndexSlot: string;
    public Index: string;

    public constructor(init?: Partial<CustomField>) { (Object as any).assign(this, init); }
}

export class BindingDescriptor
{
    public Binding: string;
    public Required: boolean;

    public constructor(init?: Partial<BindingDescriptor>) { (Object as any).assign(this, init); }
}

export class TaskStatusDef
{
    public Name: string;
    public Color: string;
    public Code: string;
    public TransitionFrom: string;
    public TransitionMessage: string;
    public TransitionCustomFields: string[];
    public HiddenIf: string;
    public IsStart: boolean;
    public IsEnd: boolean;
    public IsBlocked: boolean;
    public StatusType: string;
    public ProgressType: string;
    public AutoCreateDocuments: string[];
    public LockTask: boolean;
    public SubmittedForms: BindingDescriptor[];

    public constructor(init?: Partial<TaskStatusDef>) { (Object as any).assign(this, init); }
}

export class TaskTemplate
{
    public CustomFields: CustomField[];
    public Statuses: TaskStatusDef[];
    public TaskListDetails: string;
    public AutoAssignStatus: string;
    public AutoUnassignStatus: string;
    public AutoScheduleStatus: string;
    public AutoUnscheduleStatus: string;
    public AutoUpdateStartStatus: string;
    public AutoUpdateEndStatus: string;
    public ArrivalStatus: string;
    public DepartureStatus: string;
    public ConfirmArrival: boolean;
    public ConfirmDeparture: boolean;
    public ManualArrivalAllowed: boolean;
    public ManualDepartureAllowed: boolean;
    public HideDisabledStatuses: boolean;
    public GeofenceRadius: number;

    public constructor(init?: Partial<TaskTemplate>) { (Object as any).assign(this, init); }
}

/** @description Contains the data for a task within the system, with versioned object referneces to users and forms. */
export class Task
{
    public Workspace: string;
    public AssignedWorkspace: string;
    public ObjectId: string;
    public VersionId: string;
    public BasedOn: string;
    public ExternalId: string;
    public Created: string;
    public LastUpdated: string;
    public LastUpdatedLocal: string;
    public Rank: number;
    public Name: string;
    public Description: string;
    public Address: Address;
    public Schedules: Schedule[];
    public Status: string;
    public BlockedReason: string;
    public TaskType: string;
    public DueDate: string;
    public DesiredCompletionDate: string;
    public DesiredTimeWindow: TimeWindow;
    public Priority?: number;
    public PercentComplete: number;
    public Users: string[];
    public UsersExtended: DomainItem[];
    public Teams: DomainItem[];
    public Documents: string[];
    public Docs: DomainItem[];
    public DocSummaries: Document[];
    public Data: { [index: string]: Object; };
    public Contacts: string[];
    public StatusLocation: Location;
    public Assets: string[];
    public Tasks: string[];
    public Owner: string;
    public Events: EventItem[];
    public UserStatuses: { [index: string]: EventItem[]; };
    public CreatedBy: string;
    public TimeZone: string;
    public SeriesId: string;
    public JobTimerRunTime: number;
    public JobTimerPauseTime: number;
    public JobTimerTransitTime: number;
    public CurrentJobTimerStatus: string;
    public CurrentJobTimerTime: string;
    public InventoryItems: string[];
    public LaborItems: string[];
    public RequiredAssets: RequiredAsset[];
    public RequiredInventoryTypes: RequiredInventoryType[];
    public RequiredUsers: RequiredUser[];
    public Locked: boolean;
    public Ready: boolean;
    public TaskTemplate: TaskTemplate;
    public CustomDataFields: CustomDataField[];

    public constructor(init?: Partial<Task>) { (Object as any).assign(this, init); }
}

// @DataContract
export class PublicTask
{
    // @DataMember
    public Id: string;

    // @DataMember
    public Workspace: string;

    // @DataMember
    public TaskTemplate: string;

    // @DataMember
    public Task: Task;

    // @DataMember
    public Tasks: Task[];

    public constructor(init?: Partial<PublicTask>) { (Object as any).assign(this, init); }
}

export class Address
{
    public Street: string;
    public Unit: string;
    public City: string;
    public State: string;
    public Zip: string;
    public ContactTitle: string;
    public ContactName: string;
    public ContactPhone: string;
    public ContactEmail: string;
    public Location: Location;
    public SiteName: string;
    public GeocodeFailed: boolean;
    public Country: string;

    public constructor(init?: Partial<Address>) { (Object as any).assign(this, init); }
}

export class Location
{
    public y: number;
    public x: number;

    public constructor(init?: Partial<Location>) { (Object as any).assign(this, init); }
}

TypeScript PublicTask DTOs

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

HTTP + CSV

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/csv
Content-Type: text/csv
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":{}}}]}