Field Squared API Services

<back to all web services

PublicUser

The following routes are available for this service:
GET/{Workspace}/API/User/Schema
GET, PUT, POST, DELETE/{Workspace}/API/User/{Id}
GET, PUT, POST, DELETE/{Workspace}/API/User
import 'package:servicestack/servicestack.dart';

class Location implements IConvertible
{
    double? y;
    double? x;

    Location({this.y,this.x});
    Location.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        y = JsonConverters.toDouble(json['y']);
        x = JsonConverters.toDouble(json['x']);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'y': y,
        'x': x
    };

    getTypeName() => "Location";
    TypeContext? context = _ctx;
}

enum UserStatus
{
    NotStarted,
    Driving,
    InProgress,
    Complete,
    Blocked,
}

class Address implements IConvertible
{
    String? Street;
    String? Unit;
    String? City;
    String? State;
    String? Zip;
    String? ContactTitle;
    String? ContactName;
    String? ContactPhone;
    String? ContactEmail;
    Location? Location;
    String? SiteName;
    bool? GeocodeFailed;
    String? Country;

    Address({this.Street,this.Unit,this.City,this.State,this.Zip,this.ContactTitle,this.ContactName,this.ContactPhone,this.ContactEmail,this.Location,this.SiteName,this.GeocodeFailed,this.Country});
    Address.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Street = json['Street'];
        Unit = json['Unit'];
        City = json['City'];
        State = json['State'];
        Zip = json['Zip'];
        ContactTitle = json['ContactTitle'];
        ContactName = json['ContactName'];
        ContactPhone = json['ContactPhone'];
        ContactEmail = json['ContactEmail'];
        Location = JsonConverters.fromJson(json['Location'],'Location',context!);
        SiteName = json['SiteName'];
        GeocodeFailed = json['GeocodeFailed'];
        Country = json['Country'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Street': Street,
        'Unit': Unit,
        'City': City,
        'State': State,
        'Zip': Zip,
        'ContactTitle': ContactTitle,
        'ContactName': ContactName,
        'ContactPhone': ContactPhone,
        'ContactEmail': ContactEmail,
        'Location': JsonConverters.toJson(Location,'Location',context!),
        'SiteName': SiteName,
        'GeocodeFailed': GeocodeFailed,
        'Country': Country
    };

    getTypeName() => "Address";
    TypeContext? context = _ctx;
}

class UIColumnPref implements IConvertible
{
    String? Name;
    double? Width;

    UIColumnPref({this.Name,this.Width});
    UIColumnPref.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Name = json['Name'];
        Width = JsonConverters.toDouble(json['Width']);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Name': Name,
        'Width': Width
    };

    getTypeName() => "UIColumnPref";
    TypeContext? context = _ctx;
}

class EventItem implements IConvertible
{
    String? ObjectId;
    String? Date;
    Location? Location;
    String? Barcode;
    String? Details;
    String? Type;
    bool? IsScan;
    String? User;
    String? SelectedBy;
    String? Status;
    String? StatusType;
    String? DateCreated;
    bool? Automatic;

    EventItem({this.ObjectId,this.Date,this.Location,this.Barcode,this.Details,this.Type,this.IsScan,this.User,this.SelectedBy,this.Status,this.StatusType,this.DateCreated,this.Automatic});
    EventItem.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        ObjectId = json['ObjectId'];
        Date = json['Date'];
        Location = JsonConverters.fromJson(json['Location'],'Location',context!);
        Barcode = json['Barcode'];
        Details = json['Details'];
        Type = json['Type'];
        IsScan = json['IsScan'];
        User = json['User'];
        SelectedBy = json['SelectedBy'];
        Status = json['Status'];
        StatusType = json['StatusType'];
        DateCreated = json['DateCreated'];
        Automatic = json['Automatic'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'ObjectId': ObjectId,
        'Date': Date,
        'Location': JsonConverters.toJson(Location,'Location',context!),
        'Barcode': Barcode,
        'Details': Details,
        'Type': Type,
        'IsScan': IsScan,
        'User': User,
        'SelectedBy': SelectedBy,
        'Status': Status,
        'StatusType': StatusType,
        'DateCreated': DateCreated,
        'Automatic': Automatic
    };

    getTypeName() => "EventItem";
    TypeContext? context = _ctx;
}

class WorkDay implements IConvertible
{
    int? DayOfWeek;
    int? Start;
    int? End;
    int? Lunch;

    WorkDay({this.DayOfWeek,this.Start,this.End,this.Lunch});
    WorkDay.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        DayOfWeek = json['DayOfWeek'];
        Start = json['Start'];
        End = json['End'];
        Lunch = json['Lunch'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'DayOfWeek': DayOfWeek,
        'Start': Start,
        'End': End,
        'Lunch': Lunch
    };

    getTypeName() => "WorkDay";
    TypeContext? context = _ctx;
}

class CustomSchedule implements IConvertible
{
    String? Date;
    int? Start;
    int? End;
    String? Type;

    CustomSchedule({this.Date,this.Start,this.End,this.Type});
    CustomSchedule.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Date = json['Date'];
        Start = json['Start'];
        End = json['End'];
        Type = json['Type'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Date': Date,
        'Start': Start,
        'End': End,
        'Type': Type
    };

    getTypeName() => "CustomSchedule";
    TypeContext? context = _ctx;
}

/**
* Represents a DTO for a user in a workspace. Calls without an ObjectId will retrieve an array of all user objects for the workspace.
*/
class User implements IConvertible
{
    String? Workspace;
    String? TimeZone;
    String? ObjectId;
    String? VersionId;
    String? Created;
    String? LastUpdated;
    String? BasedOn;
    String? ExternalId;
    String? Name;
    String? Initials;
    String? Phone;
    String? Email;
    String? Password;
    String? RequestUser;
    Location? Location;
    String? UserType;
    List<Location>? ProposedRoute;
    List<Location>? ActualRoute;
    String? Image;
    UserStatus? UserStatus;
    String? RecordStatus;
    List<String>? Documents;
    bool? SubscribeToEmails;
    Address? Address;
    List<String>? SkillTags;
    bool? Enabled;
    List<String>? UIPrefTaskColumnsOff;
    List<UIColumnPref>? UIPrefTaskColumns;
    Map<String,String?>? Data;
    List<String>? Teams;
    List<EventItem>? Events;
    String? Color;
    String? VehicleAsset;
    bool? ExternalAuth;
    String? CreatedBy;
    bool? ServiceAccount;
    List<String>? Assets;
    bool? TfaRequired;
    String? TfaPreference;
    List<WorkDay>? WorkWeek;
    bool? CustomSchedulesEnabled;
    List<CustomSchedule>? CustomSchedules;
    bool? OverrideSso;

    User({this.Workspace,this.TimeZone,this.ObjectId,this.VersionId,this.Created,this.LastUpdated,this.BasedOn,this.ExternalId,this.Name,this.Initials,this.Phone,this.Email,this.Password,this.RequestUser,this.Location,this.UserType,this.ProposedRoute,this.ActualRoute,this.Image,this.UserStatus,this.RecordStatus,this.Documents,this.SubscribeToEmails,this.Address,this.SkillTags,this.Enabled,this.UIPrefTaskColumnsOff,this.UIPrefTaskColumns,this.Data,this.Teams,this.Events,this.Color,this.VehicleAsset,this.ExternalAuth,this.CreatedBy,this.ServiceAccount,this.Assets,this.TfaRequired,this.TfaPreference,this.WorkWeek,this.CustomSchedulesEnabled,this.CustomSchedules,this.OverrideSso});
    User.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Workspace = json['Workspace'];
        TimeZone = json['TimeZone'];
        ObjectId = json['ObjectId'];
        VersionId = json['VersionId'];
        Created = json['Created'];
        LastUpdated = json['LastUpdated'];
        BasedOn = json['BasedOn'];
        ExternalId = json['ExternalId'];
        Name = json['Name'];
        Initials = json['Initials'];
        Phone = json['Phone'];
        Email = json['Email'];
        Password = json['Password'];
        RequestUser = json['RequestUser'];
        Location = JsonConverters.fromJson(json['Location'],'Location',context!);
        UserType = json['UserType'];
        ProposedRoute = JsonConverters.fromJson(json['ProposedRoute'],'List<Location>',context!);
        ActualRoute = JsonConverters.fromJson(json['ActualRoute'],'List<Location>',context!);
        Image = json['Image'];
        UserStatus = JsonConverters.fromJson(json['UserStatus'],'UserStatus',context!);
        RecordStatus = json['RecordStatus'];
        Documents = JsonConverters.fromJson(json['Documents'],'List<String>',context!);
        SubscribeToEmails = json['SubscribeToEmails'];
        Address = JsonConverters.fromJson(json['Address'],'Address',context!);
        SkillTags = JsonConverters.fromJson(json['SkillTags'],'List<String>',context!);
        Enabled = json['Enabled'];
        UIPrefTaskColumnsOff = JsonConverters.fromJson(json['UIPrefTaskColumnsOff'],'List<String>',context!);
        UIPrefTaskColumns = JsonConverters.fromJson(json['UIPrefTaskColumns'],'List<UIColumnPref>',context!);
        Data = JsonConverters.toStringMap(json['Data']);
        Teams = JsonConverters.fromJson(json['Teams'],'List<String>',context!);
        Events = JsonConverters.fromJson(json['Events'],'List<EventItem>',context!);
        Color = json['Color'];
        VehicleAsset = json['VehicleAsset'];
        ExternalAuth = json['ExternalAuth'];
        CreatedBy = json['CreatedBy'];
        ServiceAccount = json['ServiceAccount'];
        Assets = JsonConverters.fromJson(json['Assets'],'List<String>',context!);
        TfaRequired = json['TfaRequired'];
        TfaPreference = json['TfaPreference'];
        WorkWeek = JsonConverters.fromJson(json['WorkWeek'],'List<WorkDay>',context!);
        CustomSchedulesEnabled = json['CustomSchedulesEnabled'];
        CustomSchedules = JsonConverters.fromJson(json['CustomSchedules'],'List<CustomSchedule>',context!);
        OverrideSso = json['OverrideSso'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Workspace': Workspace,
        'TimeZone': TimeZone,
        'ObjectId': ObjectId,
        'VersionId': VersionId,
        'Created': Created,
        'LastUpdated': LastUpdated,
        'BasedOn': BasedOn,
        'ExternalId': ExternalId,
        'Name': Name,
        'Initials': Initials,
        'Phone': Phone,
        'Email': Email,
        'Password': Password,
        'RequestUser': RequestUser,
        'Location': JsonConverters.toJson(Location,'Location',context!),
        'UserType': UserType,
        'ProposedRoute': JsonConverters.toJson(ProposedRoute,'List<Location>',context!),
        'ActualRoute': JsonConverters.toJson(ActualRoute,'List<Location>',context!),
        'Image': Image,
        'UserStatus': JsonConverters.toJson(UserStatus,'UserStatus',context!),
        'RecordStatus': RecordStatus,
        'Documents': JsonConverters.toJson(Documents,'List<String>',context!),
        'SubscribeToEmails': SubscribeToEmails,
        'Address': JsonConverters.toJson(Address,'Address',context!),
        'SkillTags': JsonConverters.toJson(SkillTags,'List<String>',context!),
        'Enabled': Enabled,
        'UIPrefTaskColumnsOff': JsonConverters.toJson(UIPrefTaskColumnsOff,'List<String>',context!),
        'UIPrefTaskColumns': JsonConverters.toJson(UIPrefTaskColumns,'List<UIColumnPref>',context!),
        'Data': Data,
        'Teams': JsonConverters.toJson(Teams,'List<String>',context!),
        'Events': JsonConverters.toJson(Events,'List<EventItem>',context!),
        'Color': Color,
        'VehicleAsset': VehicleAsset,
        'ExternalAuth': ExternalAuth,
        'CreatedBy': CreatedBy,
        'ServiceAccount': ServiceAccount,
        'Assets': JsonConverters.toJson(Assets,'List<String>',context!),
        'TfaRequired': TfaRequired,
        'TfaPreference': TfaPreference,
        'WorkWeek': JsonConverters.toJson(WorkWeek,'List<WorkDay>',context!),
        'CustomSchedulesEnabled': CustomSchedulesEnabled,
        'CustomSchedules': JsonConverters.toJson(CustomSchedules,'List<CustomSchedule>',context!),
        'OverrideSso': OverrideSso
    };

    getTypeName() => "User";
    TypeContext? context = _ctx;
}

// @DataContract
class PublicUser implements IConvertible
{
    // @DataMember
    String? Id;

    // @DataMember
    String? Workspace;

    // @DataMember
    User? User;

    // @DataMember
    List<User>? Users;

    PublicUser({this.Id,this.Workspace,this.User,this.Users});
    PublicUser.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Id = json['Id'];
        Workspace = json['Workspace'];
        User = JsonConverters.fromJson(json['User'],'User',context!);
        Users = JsonConverters.fromJson(json['Users'],'List<User>',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Id': Id,
        'Workspace': Workspace,
        'User': JsonConverters.toJson(User,'User',context!),
        'Users': JsonConverters.toJson(Users,'List<User>',context!)
    };

    getTypeName() => "PublicUser";
    TypeContext? context = _ctx;
}

TypeContext _ctx = TypeContext(library: 'dev.fieldsquared.com', types: <String, TypeInfo> {
    'Location': TypeInfo(TypeOf.Class, create:() => Location()),
    'UserStatus': TypeInfo(TypeOf.Enum, enumValues:UserStatus.values),
    'Address': TypeInfo(TypeOf.Class, create:() => Address()),
    'UIColumnPref': TypeInfo(TypeOf.Class, create:() => UIColumnPref()),
    'EventItem': TypeInfo(TypeOf.Class, create:() => EventItem()),
    'WorkDay': TypeInfo(TypeOf.Class, create:() => WorkDay()),
    'CustomSchedule': TypeInfo(TypeOf.Class, create:() => CustomSchedule()),
    'User': TypeInfo(TypeOf.Class, create:() => User()),
    'List<Location>': TypeInfo(TypeOf.Class, create:() => <Location>[]),
    'List<UIColumnPref>': TypeInfo(TypeOf.Class, create:() => <UIColumnPref>[]),
    'List<EventItem>': TypeInfo(TypeOf.Class, create:() => <EventItem>[]),
    'List<WorkDay>': TypeInfo(TypeOf.Class, create:() => <WorkDay>[]),
    'List<CustomSchedule>': TypeInfo(TypeOf.Class, create:() => <CustomSchedule>[]),
    'PublicUser': TypeInfo(TypeOf.Class, create:() => PublicUser()),
    'List<User>': TypeInfo(TypeOf.Class, create:() => <User>[]),
});

Dart PublicUser 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}/API/User/{Id} HTTP/1.1 
Host: dev.fieldsquared.com 
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length

{
	Id: String,
	Workspace: String,
	User: 
	{
		ExternalId: String,
		Name: String,
		Initials: String,
		Phone: String,
		Email: String,
		UserType: String,
		Image: String,
		Lat: 0,
		Lon: 0,
		StreetAddress: String,
		Unit: String,
		City: String,
		State: String,
		Zip: String,
		Country: String,
		SkillTags: 
		[
			String
		],
		Enabled: False,
		Data: 
		{
			String: {}
		},
		Teams: 
		[
			String
		],
		LastUpdated: String,
		Created: String
	},
	Users: 
	[
		{
			ExternalId: String,
			Name: String,
			Initials: String,
			Phone: String,
			Email: String,
			UserType: String,
			Image: String,
			Lat: 0,
			Lon: 0,
			StreetAddress: String,
			Unit: String,
			City: String,
			State: String,
			Zip: String,
			Country: String,
			SkillTags: 
			[
				String
			],
			Enabled: False,
			Data: 
			{
				String: {}
			},
			Teams: 
			[
				String
			],
			LastUpdated: String,
			Created: String
		}
	]
}