Field Squared API Services

<back to all web services

Workspace

Represents a grouping of users and their tasks. These dtos allow transfer of that data from the client to the server and vice versa.
The WorkWeek property is sorted by DayofWeek.
If the 'exportemail' argument is called i.e. (/workspace/?exportemail=test@test.com, this emails a .csv export
of the workspace to the specified email address
.

The following routes are available for this service:
GET,POST/{ObjectId}/Workspace
POST/workspace
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;
}

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;
}

enum 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,
}

class CustomField implements IConvertible
{
    String? Key;
    String? Label;
    bool? IsActive;
    bool? IsReadOnly;
    bool? IsHidden;
    bool? IsMandatory;
    bool? DisplayOnMap;
    CustomFieldDataType? CustomFieldDataType;
    String? Values;
    String? Prompt;
    String? Default;
    bool? DefaultAutoUpdate;
    String? RequiredIf;
    List<String>? Hidden;
    List<String>? ReadOnly;
    Map<String,dynamic?>? ControlArgs;
    String? IndexSlot;
    String? Index;

    CustomField({this.Key,this.Label,this.IsActive,this.IsReadOnly,this.IsHidden,this.IsMandatory,this.DisplayOnMap,this.CustomFieldDataType,this.Values,this.Prompt,this.Default,this.DefaultAutoUpdate,this.RequiredIf,this.Hidden,this.ReadOnly,this.ControlArgs,this.IndexSlot,this.Index});
    CustomField.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Key = json['Key'];
        Label = json['Label'];
        IsActive = json['IsActive'];
        IsReadOnly = json['IsReadOnly'];
        IsHidden = json['IsHidden'];
        IsMandatory = json['IsMandatory'];
        DisplayOnMap = json['DisplayOnMap'];
        CustomFieldDataType = JsonConverters.fromJson(json['CustomFieldDataType'],'CustomFieldDataType',context!);
        Values = json['Values'];
        Prompt = json['Prompt'];
        Default = json['Default'];
        DefaultAutoUpdate = json['DefaultAutoUpdate'];
        RequiredIf = json['RequiredIf'];
        Hidden = JsonConverters.fromJson(json['Hidden'],'List<String>',context!);
        ReadOnly = JsonConverters.fromJson(json['ReadOnly'],'List<String>',context!);
        ControlArgs = JsonConverters.fromJson(json['ControlArgs'],'Map<String,dynamic?>',context!);
        IndexSlot = json['IndexSlot'];
        Index = json['Index'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Key': Key,
        'Label': Label,
        'IsActive': IsActive,
        'IsReadOnly': IsReadOnly,
        'IsHidden': IsHidden,
        'IsMandatory': IsMandatory,
        'DisplayOnMap': DisplayOnMap,
        'CustomFieldDataType': JsonConverters.toJson(CustomFieldDataType,'CustomFieldDataType',context!),
        'Values': Values,
        'Prompt': Prompt,
        'Default': Default,
        'DefaultAutoUpdate': DefaultAutoUpdate,
        'RequiredIf': RequiredIf,
        'Hidden': JsonConverters.toJson(Hidden,'List<String>',context!),
        'ReadOnly': JsonConverters.toJson(ReadOnly,'List<String>',context!),
        'ControlArgs': JsonConverters.toJson(ControlArgs,'Map<String,dynamic?>',context!),
        'IndexSlot': IndexSlot,
        'Index': Index
    };

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

class BindingDescriptor implements IConvertible
{
    String? Binding;
    bool? Required;

    BindingDescriptor({this.Binding,this.Required});
    BindingDescriptor.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Binding = json['Binding'];
        Required = json['Required'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Binding': Binding,
        'Required': Required
    };

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

class TaskStatusDef implements IConvertible
{
    String? Name;
    String? Color;
    String? Code;
    String? TransitionFrom;
    String? TransitionMessage;
    List<String>? TransitionCustomFields;
    String? HiddenIf;
    bool? IsStart;
    bool? IsEnd;
    bool? IsBlocked;
    String? StatusType;
    String? ProgressType;
    List<String>? AutoCreateDocuments;
    bool? LockTask;
    List<BindingDescriptor>? SubmittedForms;

    TaskStatusDef({this.Name,this.Color,this.Code,this.TransitionFrom,this.TransitionMessage,this.TransitionCustomFields,this.HiddenIf,this.IsStart,this.IsEnd,this.IsBlocked,this.StatusType,this.ProgressType,this.AutoCreateDocuments,this.LockTask,this.SubmittedForms});
    TaskStatusDef.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Name = json['Name'];
        Color = json['Color'];
        Code = json['Code'];
        TransitionFrom = json['TransitionFrom'];
        TransitionMessage = json['TransitionMessage'];
        TransitionCustomFields = JsonConverters.fromJson(json['TransitionCustomFields'],'List<String>',context!);
        HiddenIf = json['HiddenIf'];
        IsStart = json['IsStart'];
        IsEnd = json['IsEnd'];
        IsBlocked = json['IsBlocked'];
        StatusType = json['StatusType'];
        ProgressType = json['ProgressType'];
        AutoCreateDocuments = JsonConverters.fromJson(json['AutoCreateDocuments'],'List<String>',context!);
        LockTask = json['LockTask'];
        SubmittedForms = JsonConverters.fromJson(json['SubmittedForms'],'List<BindingDescriptor>',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Name': Name,
        'Color': Color,
        'Code': Code,
        'TransitionFrom': TransitionFrom,
        'TransitionMessage': TransitionMessage,
        'TransitionCustomFields': JsonConverters.toJson(TransitionCustomFields,'List<String>',context!),
        'HiddenIf': HiddenIf,
        'IsStart': IsStart,
        'IsEnd': IsEnd,
        'IsBlocked': IsBlocked,
        'StatusType': StatusType,
        'ProgressType': ProgressType,
        'AutoCreateDocuments': JsonConverters.toJson(AutoCreateDocuments,'List<String>',context!),
        'LockTask': LockTask,
        'SubmittedForms': JsonConverters.toJson(SubmittedForms,'List<BindingDescriptor>',context!)
    };

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

class TaskTemplate implements IConvertible
{
    List<CustomField>? CustomFields;
    List<TaskStatusDef>? Statuses;
    String? TaskListDetails;
    String? AutoAssignStatus;
    String? AutoUnassignStatus;
    String? AutoScheduleStatus;
    String? AutoUnscheduleStatus;
    String? AutoUpdateStartStatus;
    String? AutoUpdateEndStatus;
    String? ArrivalStatus;
    String? DepartureStatus;
    bool? ConfirmArrival;
    bool? ConfirmDeparture;
    bool? ManualArrivalAllowed;
    bool? ManualDepartureAllowed;
    bool? HideDisabledStatuses;
    int? GeofenceRadius;

    TaskTemplate({this.CustomFields,this.Statuses,this.TaskListDetails,this.AutoAssignStatus,this.AutoUnassignStatus,this.AutoScheduleStatus,this.AutoUnscheduleStatus,this.AutoUpdateStartStatus,this.AutoUpdateEndStatus,this.ArrivalStatus,this.DepartureStatus,this.ConfirmArrival,this.ConfirmDeparture,this.ManualArrivalAllowed,this.ManualDepartureAllowed,this.HideDisabledStatuses,this.GeofenceRadius});
    TaskTemplate.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        CustomFields = JsonConverters.fromJson(json['CustomFields'],'List<CustomField>',context!);
        Statuses = JsonConverters.fromJson(json['Statuses'],'List<TaskStatusDef>',context!);
        TaskListDetails = json['TaskListDetails'];
        AutoAssignStatus = json['AutoAssignStatus'];
        AutoUnassignStatus = json['AutoUnassignStatus'];
        AutoScheduleStatus = json['AutoScheduleStatus'];
        AutoUnscheduleStatus = json['AutoUnscheduleStatus'];
        AutoUpdateStartStatus = json['AutoUpdateStartStatus'];
        AutoUpdateEndStatus = json['AutoUpdateEndStatus'];
        ArrivalStatus = json['ArrivalStatus'];
        DepartureStatus = json['DepartureStatus'];
        ConfirmArrival = json['ConfirmArrival'];
        ConfirmDeparture = json['ConfirmDeparture'];
        ManualArrivalAllowed = json['ManualArrivalAllowed'];
        ManualDepartureAllowed = json['ManualDepartureAllowed'];
        HideDisabledStatuses = json['HideDisabledStatuses'];
        GeofenceRadius = json['GeofenceRadius'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'CustomFields': JsonConverters.toJson(CustomFields,'List<CustomField>',context!),
        'Statuses': JsonConverters.toJson(Statuses,'List<TaskStatusDef>',context!),
        'TaskListDetails': TaskListDetails,
        'AutoAssignStatus': AutoAssignStatus,
        'AutoUnassignStatus': AutoUnassignStatus,
        'AutoScheduleStatus': AutoScheduleStatus,
        'AutoUnscheduleStatus': AutoUnscheduleStatus,
        'AutoUpdateStartStatus': AutoUpdateStartStatus,
        'AutoUpdateEndStatus': AutoUpdateEndStatus,
        'ArrivalStatus': ArrivalStatus,
        'DepartureStatus': DepartureStatus,
        'ConfirmArrival': ConfirmArrival,
        'ConfirmDeparture': ConfirmDeparture,
        'ManualArrivalAllowed': ManualArrivalAllowed,
        'ManualDepartureAllowed': ManualDepartureAllowed,
        'HideDisabledStatuses': HideDisabledStatuses,
        'GeofenceRadius': GeofenceRadius
    };

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

class DocumentTemplateGhost implements IConvertible
{
    String? Title;
    bool? IsSubDoc;
    String? Folder;
    bool? IsFragment;
    List<String>? EditTeams;
    bool? HasSecondaryOwner;
    bool? TaskDocument;
    bool? AssetDocument;
    bool? ContactDocument;
    bool? UserDocument;
    bool? MultipleCopies;
    bool? SubmitOption;
    String? Image;
    List<String>? HiddenFor;

    DocumentTemplateGhost({this.Title,this.IsSubDoc,this.Folder,this.IsFragment,this.EditTeams,this.HasSecondaryOwner,this.TaskDocument,this.AssetDocument,this.ContactDocument,this.UserDocument,this.MultipleCopies,this.SubmitOption,this.Image,this.HiddenFor});
    DocumentTemplateGhost.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Title = json['Title'];
        IsSubDoc = json['IsSubDoc'];
        Folder = json['Folder'];
        IsFragment = json['IsFragment'];
        EditTeams = JsonConverters.fromJson(json['EditTeams'],'List<String>',context!);
        HasSecondaryOwner = json['HasSecondaryOwner'];
        TaskDocument = json['TaskDocument'];
        AssetDocument = json['AssetDocument'];
        ContactDocument = json['ContactDocument'];
        UserDocument = json['UserDocument'];
        MultipleCopies = json['MultipleCopies'];
        SubmitOption = json['SubmitOption'];
        Image = json['Image'];
        HiddenFor = JsonConverters.fromJson(json['HiddenFor'],'List<String>',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Title': Title,
        'IsSubDoc': IsSubDoc,
        'Folder': Folder,
        'IsFragment': IsFragment,
        'EditTeams': JsonConverters.toJson(EditTeams,'List<String>',context!),
        'HasSecondaryOwner': HasSecondaryOwner,
        'TaskDocument': TaskDocument,
        'AssetDocument': AssetDocument,
        'ContactDocument': ContactDocument,
        'UserDocument': UserDocument,
        'MultipleCopies': MultipleCopies,
        'SubmitOption': SubmitOption,
        'Image': Image,
        'HiddenFor': JsonConverters.toJson(HiddenFor,'List<String>',context!)
    };

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

/**
* Represents a single asset type.
*/
class AssetType implements IConvertible
{
    String? Workspace;
    String? Type;
    bool? IsActive;
    String? Name;
    String? Make;
    String? Model;
    String? Manuf;
    String? Barcode;
    String? Symbol;
    String? Color;
    double? LineThickness;
    double? Scale;
    double? VisibilityMin;
    double? VisibilityMax;
    bool? SyncNode;
    List<CustomField>? CustomFields;
    List<String>? AllowedParentTypes;
    List<String>? AllowedChildTypes;
    bool? UseLocationHistory;
    bool? IsMobileAsset;
    Map<String,String?>? Data;
    String? GeomType;
    bool? DocFilter;
    bool? ShowRelatedDocs;
    List<String>? AllowedDocTypes;
    String? TLA;
    bool? UseTLAOnMap;
    String? RoutingLocation;
    String? Fill;
    double? FillOpacity;
    bool? ShowAnno;
    String? AnnoColor;
    double? MaxAnnoVisibility;
    String? AnnoFont;
    bool? HideTypeLabel;
    bool? UseAddress;
    bool? UseFullScreen;
    int? TimeSeries;
    bool? IsUnselectable;
    List<String>? EditTeams;
    bool? IsWarehouse;
    bool? IsVehicle;
    Map<String,dynamic?>? CustomSymbol;
    List<String>? TaskSeriesTemplates;

    AssetType({this.Workspace,this.Type,this.IsActive,this.Name,this.Make,this.Model,this.Manuf,this.Barcode,this.Symbol,this.Color,this.LineThickness,this.Scale,this.VisibilityMin,this.VisibilityMax,this.SyncNode,this.CustomFields,this.AllowedParentTypes,this.AllowedChildTypes,this.UseLocationHistory,this.IsMobileAsset,this.Data,this.GeomType,this.DocFilter,this.ShowRelatedDocs,this.AllowedDocTypes,this.TLA,this.UseTLAOnMap,this.RoutingLocation,this.Fill,this.FillOpacity,this.ShowAnno,this.AnnoColor,this.MaxAnnoVisibility,this.AnnoFont,this.HideTypeLabel,this.UseAddress,this.UseFullScreen,this.TimeSeries,this.IsUnselectable,this.EditTeams,this.IsWarehouse,this.IsVehicle,this.CustomSymbol,this.TaskSeriesTemplates});
    AssetType.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Workspace = json['Workspace'];
        Type = json['Type'];
        IsActive = json['IsActive'];
        Name = json['Name'];
        Make = json['Make'];
        Model = json['Model'];
        Manuf = json['Manuf'];
        Barcode = json['Barcode'];
        Symbol = json['Symbol'];
        Color = json['Color'];
        LineThickness = JsonConverters.toDouble(json['LineThickness']);
        Scale = JsonConverters.toDouble(json['Scale']);
        VisibilityMin = JsonConverters.toDouble(json['VisibilityMin']);
        VisibilityMax = JsonConverters.toDouble(json['VisibilityMax']);
        SyncNode = json['SyncNode'];
        CustomFields = JsonConverters.fromJson(json['CustomFields'],'List<CustomField>',context!);
        AllowedParentTypes = JsonConverters.fromJson(json['AllowedParentTypes'],'List<String>',context!);
        AllowedChildTypes = JsonConverters.fromJson(json['AllowedChildTypes'],'List<String>',context!);
        UseLocationHistory = json['UseLocationHistory'];
        IsMobileAsset = json['IsMobileAsset'];
        Data = JsonConverters.toStringMap(json['Data']);
        GeomType = json['GeomType'];
        DocFilter = json['DocFilter'];
        ShowRelatedDocs = json['ShowRelatedDocs'];
        AllowedDocTypes = JsonConverters.fromJson(json['AllowedDocTypes'],'List<String>',context!);
        TLA = json['TLA'];
        UseTLAOnMap = json['UseTLAOnMap'];
        RoutingLocation = json['RoutingLocation'];
        Fill = json['Fill'];
        FillOpacity = JsonConverters.toDouble(json['FillOpacity']);
        ShowAnno = json['ShowAnno'];
        AnnoColor = json['AnnoColor'];
        MaxAnnoVisibility = JsonConverters.toDouble(json['MaxAnnoVisibility']);
        AnnoFont = json['AnnoFont'];
        HideTypeLabel = json['HideTypeLabel'];
        UseAddress = json['UseAddress'];
        UseFullScreen = json['UseFullScreen'];
        TimeSeries = json['TimeSeries'];
        IsUnselectable = json['IsUnselectable'];
        EditTeams = JsonConverters.fromJson(json['EditTeams'],'List<String>',context!);
        IsWarehouse = json['IsWarehouse'];
        IsVehicle = json['IsVehicle'];
        CustomSymbol = JsonConverters.fromJson(json['CustomSymbol'],'Map<String,dynamic?>',context!);
        TaskSeriesTemplates = JsonConverters.fromJson(json['TaskSeriesTemplates'],'List<String>',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Workspace': Workspace,
        'Type': Type,
        'IsActive': IsActive,
        'Name': Name,
        'Make': Make,
        'Model': Model,
        'Manuf': Manuf,
        'Barcode': Barcode,
        'Symbol': Symbol,
        'Color': Color,
        'LineThickness': LineThickness,
        'Scale': Scale,
        'VisibilityMin': VisibilityMin,
        'VisibilityMax': VisibilityMax,
        'SyncNode': SyncNode,
        'CustomFields': JsonConverters.toJson(CustomFields,'List<CustomField>',context!),
        'AllowedParentTypes': JsonConverters.toJson(AllowedParentTypes,'List<String>',context!),
        'AllowedChildTypes': JsonConverters.toJson(AllowedChildTypes,'List<String>',context!),
        'UseLocationHistory': UseLocationHistory,
        'IsMobileAsset': IsMobileAsset,
        'Data': Data,
        'GeomType': GeomType,
        'DocFilter': DocFilter,
        'ShowRelatedDocs': ShowRelatedDocs,
        'AllowedDocTypes': JsonConverters.toJson(AllowedDocTypes,'List<String>',context!),
        'TLA': TLA,
        'UseTLAOnMap': UseTLAOnMap,
        'RoutingLocation': RoutingLocation,
        'Fill': Fill,
        'FillOpacity': FillOpacity,
        'ShowAnno': ShowAnno,
        'AnnoColor': AnnoColor,
        'MaxAnnoVisibility': MaxAnnoVisibility,
        'AnnoFont': AnnoFont,
        'HideTypeLabel': HideTypeLabel,
        'UseAddress': UseAddress,
        'UseFullScreen': UseFullScreen,
        'TimeSeries': TimeSeries,
        'IsUnselectable': IsUnselectable,
        'EditTeams': JsonConverters.toJson(EditTeams,'List<String>',context!),
        'IsWarehouse': IsWarehouse,
        'IsVehicle': IsVehicle,
        'CustomSymbol': JsonConverters.toJson(CustomSymbol,'Map<String,dynamic?>',context!),
        'TaskSeriesTemplates': JsonConverters.toJson(TaskSeriesTemplates,'List<String>',context!)
    };

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

class CatalogType implements IConvertible
{
    String? Type;
    String? Name;
    List<CustomField>? CustomFields;

    CatalogType({this.Type,this.Name,this.CustomFields});
    CatalogType.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Type = json['Type'];
        Name = json['Name'];
        CustomFields = JsonConverters.fromJson(json['CustomFields'],'List<CustomField>',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Type': Type,
        'Name': Name,
        'CustomFields': JsonConverters.toJson(CustomFields,'List<CustomField>',context!)
    };

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

class RequiredAsset implements IConvertible
{
    int? Number;
    String? Type;

    RequiredAsset({this.Number,this.Type});
    RequiredAsset.fromJson(Map<String, dynamic> json) { fromMap(json); }

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

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

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

class RequiredInventoryType implements IConvertible
{
    int? Number;
    String? Type;
    String? Name;
    bool? IsSerialized;
    String? Description;

    RequiredInventoryType({this.Number,this.Type,this.Name,this.IsSerialized,this.Description});
    RequiredInventoryType.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Number = json['Number'];
        Type = json['Type'];
        Name = json['Name'];
        IsSerialized = json['IsSerialized'];
        Description = json['Description'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Number': Number,
        'Type': Type,
        'Name': Name,
        'IsSerialized': IsSerialized,
        'Description': Description
    };

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

class RequiredUser implements IConvertible
{
    int? Number;
    List<String>? SkillTags;

    RequiredUser({this.Number,this.SkillTags});
    RequiredUser.fromJson(Map<String, dynamic> json) { fromMap(json); }

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

    Map<String, dynamic> toJson() => {
        'Number': Number,
        'SkillTags': JsonConverters.toJson(SkillTags,'List<String>',context!)
    };

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

class AutoCreateDocExpression implements IConvertible
{
    String? Document;
    String? Expression;
    bool? MultipleCopies;

    AutoCreateDocExpression({this.Document,this.Expression,this.MultipleCopies});
    AutoCreateDocExpression.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Document = json['Document'];
        Expression = json['Expression'];
        MultipleCopies = json['MultipleCopies'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Document': Document,
        'Expression': Expression,
        'MultipleCopies': MultipleCopies
    };

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

class TaskType implements IConvertible
{
    String? Workspace;
    String? Type;
    String? Icon;
    List<String>? SkillTags;
    double? MinTimeToComplete;
    double? AvgTimeToComplete;
    double? MaxTimeToComplete;
    String? Template;
    bool? DocFilter;
    bool? ShowRelatedDocs;
    List<String>? AllowedDocTypes;
    int? DefaultPriority;
    bool? Inactive;
    List<String>? AutoCreateDocuments;
    String? PercentCompleteType;
    bool? UseJobTimers;
    bool? InheritAssetTeams;
    bool? InheritContactTeams;
    List<String>? EditTeams;
    bool? UseRequired;
    bool? AllowOverride;
    List<RequiredAsset>? RequiredAssets;
    List<RequiredInventoryType>? RequiredInventoryTypes;
    List<RequiredUser>? RequiredUsers;
    Map<String,dynamic?>? ActiveLaborTypes;
    bool? IndividualUserStatuses;
    bool? LockOption;
    List<AutoCreateDocExpression>? AutoCreateDocExpressions;
    bool? PTO;

    TaskType({this.Workspace,this.Type,this.Icon,this.SkillTags,this.MinTimeToComplete,this.AvgTimeToComplete,this.MaxTimeToComplete,this.Template,this.DocFilter,this.ShowRelatedDocs,this.AllowedDocTypes,this.DefaultPriority,this.Inactive,this.AutoCreateDocuments,this.PercentCompleteType,this.UseJobTimers,this.InheritAssetTeams,this.InheritContactTeams,this.EditTeams,this.UseRequired,this.AllowOverride,this.RequiredAssets,this.RequiredInventoryTypes,this.RequiredUsers,this.ActiveLaborTypes,this.IndividualUserStatuses,this.LockOption,this.AutoCreateDocExpressions,this.PTO});
    TaskType.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Workspace = json['Workspace'];
        Type = json['Type'];
        Icon = json['Icon'];
        SkillTags = JsonConverters.fromJson(json['SkillTags'],'List<String>',context!);
        MinTimeToComplete = JsonConverters.toDouble(json['MinTimeToComplete']);
        AvgTimeToComplete = JsonConverters.toDouble(json['AvgTimeToComplete']);
        MaxTimeToComplete = JsonConverters.toDouble(json['MaxTimeToComplete']);
        Template = json['Template'];
        DocFilter = json['DocFilter'];
        ShowRelatedDocs = json['ShowRelatedDocs'];
        AllowedDocTypes = JsonConverters.fromJson(json['AllowedDocTypes'],'List<String>',context!);
        DefaultPriority = json['DefaultPriority'];
        Inactive = json['Inactive'];
        AutoCreateDocuments = JsonConverters.fromJson(json['AutoCreateDocuments'],'List<String>',context!);
        PercentCompleteType = json['PercentCompleteType'];
        UseJobTimers = json['UseJobTimers'];
        InheritAssetTeams = json['InheritAssetTeams'];
        InheritContactTeams = json['InheritContactTeams'];
        EditTeams = JsonConverters.fromJson(json['EditTeams'],'List<String>',context!);
        UseRequired = json['UseRequired'];
        AllowOverride = json['AllowOverride'];
        RequiredAssets = JsonConverters.fromJson(json['RequiredAssets'],'List<RequiredAsset>',context!);
        RequiredInventoryTypes = JsonConverters.fromJson(json['RequiredInventoryTypes'],'List<RequiredInventoryType>',context!);
        RequiredUsers = JsonConverters.fromJson(json['RequiredUsers'],'List<RequiredUser>',context!);
        ActiveLaborTypes = JsonConverters.fromJson(json['ActiveLaborTypes'],'Map<String,dynamic?>',context!);
        IndividualUserStatuses = json['IndividualUserStatuses'];
        LockOption = json['LockOption'];
        AutoCreateDocExpressions = JsonConverters.fromJson(json['AutoCreateDocExpressions'],'List<AutoCreateDocExpression>',context!);
        PTO = json['PTO'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Workspace': Workspace,
        'Type': Type,
        'Icon': Icon,
        'SkillTags': JsonConverters.toJson(SkillTags,'List<String>',context!),
        'MinTimeToComplete': MinTimeToComplete,
        'AvgTimeToComplete': AvgTimeToComplete,
        'MaxTimeToComplete': MaxTimeToComplete,
        'Template': Template,
        'DocFilter': DocFilter,
        'ShowRelatedDocs': ShowRelatedDocs,
        'AllowedDocTypes': JsonConverters.toJson(AllowedDocTypes,'List<String>',context!),
        'DefaultPriority': DefaultPriority,
        'Inactive': Inactive,
        'AutoCreateDocuments': JsonConverters.toJson(AutoCreateDocuments,'List<String>',context!),
        'PercentCompleteType': PercentCompleteType,
        'UseJobTimers': UseJobTimers,
        'InheritAssetTeams': InheritAssetTeams,
        'InheritContactTeams': InheritContactTeams,
        'EditTeams': JsonConverters.toJson(EditTeams,'List<String>',context!),
        'UseRequired': UseRequired,
        'AllowOverride': AllowOverride,
        'RequiredAssets': JsonConverters.toJson(RequiredAssets,'List<RequiredAsset>',context!),
        'RequiredInventoryTypes': JsonConverters.toJson(RequiredInventoryTypes,'List<RequiredInventoryType>',context!),
        'RequiredUsers': JsonConverters.toJson(RequiredUsers,'List<RequiredUser>',context!),
        'ActiveLaborTypes': JsonConverters.toJson(ActiveLaborTypes,'Map<String,dynamic?>',context!),
        'IndividualUserStatuses': IndividualUserStatuses,
        'LockOption': LockOption,
        'AutoCreateDocExpressions': JsonConverters.toJson(AutoCreateDocExpressions,'List<AutoCreateDocExpression>',context!),
        'PTO': PTO
    };

    getTypeName() => "TaskType";
    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 WorkspaceImage implements IConvertible
{
    String? Category;
    String? ObjectId;

    WorkspaceImage({this.Category,this.ObjectId});
    WorkspaceImage.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Category = json['Category'];
        ObjectId = json['ObjectId'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Category': Category,
        'ObjectId': ObjectId
    };

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

class CustomReport implements IConvertible
{
    String? ObjectId;
    String? Name;
    List<CustomField>? Inputs;

    CustomReport({this.ObjectId,this.Name,this.Inputs});
    CustomReport.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        ObjectId = json['ObjectId'];
        Name = json['Name'];
        Inputs = JsonConverters.fromJson(json['Inputs'],'List<CustomField>',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'ObjectId': ObjectId,
        'Name': Name,
        'Inputs': JsonConverters.toJson(Inputs,'List<CustomField>',context!)
    };

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

class ClientBacklogSortItem implements IConvertible
{
    String? Key;
    String? Label;
    String? Sort;
    String? Compare;

    ClientBacklogSortItem({this.Key,this.Label,this.Sort,this.Compare});
    ClientBacklogSortItem.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Key = json['Key'];
        Label = json['Label'];
        Sort = json['Sort'];
        Compare = json['Compare'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Key': Key,
        'Label': Label,
        'Sort': Sort,
        'Compare': Compare
    };

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

class GridItem implements IConvertible
{
    String? Binding;
    String? Heading;
    int? Width;

    GridItem({this.Binding,this.Heading,this.Width});
    GridItem.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Binding = json['Binding'];
        Heading = json['Heading'];
        Width = json['Width'];
        return this;
    }

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

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

class ScheduleGridConfiguration implements IConvertible
{
    List<GridItem>? Grid;

    ScheduleGridConfiguration({this.Grid});
    ScheduleGridConfiguration.fromJson(Map<String, dynamic> json) { fromMap(json); }

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

    Map<String, dynamic> toJson() => {
        'Grid': JsonConverters.toJson(Grid,'List<GridItem>',context!)
    };

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

/**
* Represents a grouping of users and their tasks. These dtos allow transfer of that data from the client to the server and vice versa.The WorkWeek property is sorted by DayofWeek.If the 'exportemail' argument is called i.e. (/workspace/?exportemail=test@test.com, this emails a .csv export of the workspace to the specified email address.
*/
class Workspace implements IConvertible
{
    String? ObjectId;
    String? VersionId;
    String? BasedOn;
    String? Name;
    DateTime? LastUpdated;
    bool? PaymentRequired;
    String? CompanyName;
    String? CompanyLogoUri;
    String? CompanySupportUrl;
    String? CompanySupportEmail;
    String? AdminEmail;
    Address? CompanyAddress;
    String? TaskTitle;
    String? TasksTitle;
    String? TeamTitle;
    String? TeamsTitle;
    String? UserTitle;
    String? UsersTitle;
    String? ContactTitle;
    String? ContactsTitle;
    String? SalesforceElementId;
    String? ScheduleTitle;
    String? SchedulesTitle;
    String? FormTitle;
    String? FormsTitle;
    String? PoiTitle;
    String? PoisTitle;
    String? AssetMakeTitle;
    String? AssetModelTitle;
    String? AssetManufacturerTitle;
    String? AssetBarcodeTitle;
    String? AssetAncestorsTitle;
    String? AssetWarehouseTitle;
    String? AssetWarehousesTitle;
    String? AssetVehicleTitle;
    String? AssetVehiclesTitle;
    bool? UseTeamMaps;
    bool? UseContacts;
    bool? UseAssets;
    bool? ShouldRunIntegrations;
    Map<String,TaskTemplate?>? TaskTemplates;
    String? FormTemplates;
    Map<String,DocumentTemplateGhost?>? DocTemplateGhosts;
    Map<String,AssetType?>? AssetTypes;
    List<CatalogType>? CatalogTypes;
    List<TaskType>? TaskTypes;
    List<WorkDay>? WorkWeek;
    double? SalesTaxRate;
    List<String>? SkillTags;
    String? TimeZoneId;
    String? IANATimeZoneId;
    String? Country;
    int? StopTime;
    int? StopDistance;
    double? SpeedingSpeed;
    int? SpeedingDuration;
    String? ContactIcon;
    bool? UseOnSiteContact;
    bool? UseServiceAddresses;
    bool? UseSharedWorkspaces;
    bool? IsMetric;
    List<int>? BreakLength;
    List<String>? PriorityNames;
    String? PriorityDefault;
    bool? IsFinanceIntegrationEnabled;
    bool? IsCRMIntegrationEnabled;
    bool? IsBoxIntegrationEnabled;
    bool? IsDropboxIntegrationEnabled;
    bool? IsGoogleDriveIntegrationEnabled;
    bool? IsEsriIntegrationEnabled;
    bool? IsPaycomIntegrationEnabled;
    bool? IsP21IntegrationEnabled;
    List<WorkspaceImage>? Images;
    List<CustomField>? ContactCustomFields;
    List<CustomField>? UserCustomFields;
    List<CustomField>? TeamCustomFields;
    bool? UseAssetMaintenanceHistory;
    bool? UseAssetSchedules;
    bool? UseTaskAssets;
    bool? UseSchedules;
    bool? UseTasks;
    bool? AssetsReadOnly;
    double? AssetVisibilityMax;
    double? ContactVisibilityMax;
    double? TaskVisibilityMax;
    bool? AutoScanAndTrackAsset;
    bool? BarcodeTrackAsset;
    bool? GPSTrackAsset;
    List<CustomReport>? CustomReports;
    bool? ShowRelatedContactDocs;
    bool? ShowRelatedAssetDocs;
    bool? RequireAssetName;
    bool? ShowRelatedTaskDocs;
    List<ClientBacklogSortItem>? ClientBacklogSort;
    bool? AutoAssignJobOnDriving;
    bool? AutoAssignJobOnSite;
    bool? AutoAssignJobOnComplete;
    bool? AutoUnassignJobOnNotStarted;
    bool? AutoScheduleJobOnDriving;
    bool? AutoScheduleJobOnComplete;
    bool? AutoScheduleJobOnSite;
    bool? AutoUnscheduleJobOnNotStarted;
    bool? AutoUpdateJobStartTimeOnSite;
    bool? AutoUpdateJobEndTimeOnComplete;
    String? AutoAssignNewTasksTo;
    bool? UseIntegrationEmail;
    bool? UseTaskTarget;
    bool? UseTaskDue;
    bool? UseTaskPri;
    bool? UseTaskAddr;
    String? TaskListDetails;
    bool? AutocreateTaskStatusEvents;
    bool? AutocreateTaskAssignmentEvents;
    bool? FilterContactsByTeam;
    bool? FilterUsersAndTeamsByTeam;
    bool? AutoUpdateTaskContactChanged;
    bool? AutoAssignTeamsOnTaskCreate;
    bool? HtmlEmailIncludeTaskName;
    bool? HtmlEmailIncludeUsers;
    bool? HtmlEmailIncludeDateCreated;
    bool? HtmlEmailIncludeDateLastUpdated;
    String? ClientStartupView;
    int? ClientAutoSyncInterval;
    int? MobileTaskRangePast;
    int? MobileTaskRangeFuture;
    bool? ClientShowScheduledTasks;
    bool? ClientShowMyTasksOnly;
    bool? ClientShowBacklogTasks;
    bool? ClientHideCompleteTasks;
    String? ClientMapType;
    String? ClientGPSAccuracy;
    bool? ClientShowTaskIconsOnMap;
    bool? ClientMapLayerScheduledTasks;
    bool? ClientMapLayerBacklog;
    bool? ClientMapLayerAssets;
    bool? ClientMapLayerContacts;
    bool? ClientMapLayerTracks;
    bool? ClientMapLayerStops;
    bool? ClientMapLayerSpeeding;
    String? ClientMapStartLocation;
    Map<String,int?>? SecurityDict;
    String? ContactSearchResultExpression;
    bool? LandscapePhotos;
    bool? LogApiTraffic;
    bool? UseDueDate;
    bool? UsePriority;
    List<String>? ScheduleTimeZones;
    bool? UseTimezones;
    String? TaskListSummaryExpression1;
    String? TaskListSummaryExpression2;
    bool? ShowScheduleButton;
    bool? ShowScheduleGrid;
    List<CustomField>? ScheduleCustomFields;
    ScheduleGridConfiguration? ScheduleGridConfig;
    bool? SaveOnPhoto;
    bool? CleanseGeocodes;
    String? GeocodeQuality;
    String? RetainCustomerDatabase;
    String? RetainAssetDatabase;
    bool? ShowDriveTimes;
    double? LocAccFilter;
    bool? AutoCreateRoutesFromAssignedTasks;
    String? TaskNameExpression;
    bool? UseAddressCountry;
    bool? MessageAppEnabled;
    List<String>? GisLayers;
    bool? AllowStatusDoubleClick;
    bool? UseTimecard;
    List<String>? TimecardCategories;
    bool? UseLocalAdminUsers;
    bool? UseInventory;
    int? ClientScheduledTaskSort;
    List<String>? LaborPricingHierarchy;
    bool? UseLabor;
    bool? LaborHourFormat;
    bool? TfaEnabled;
    bool? TaskNameExpressionAutoUpdate;
    bool? AutocreateInitialTaskStatusEvent;
    int? InactivityTimer;
    int? OfflineAuthTimer;
    Map<String,int?>? Sequences;
    String? OverrideEmail;
    String? OverrideSms;
    String? PortalImageUrl;
    String? PortalImageId;
    bool? SecureImageService;
    bool? SuppressAssetTeamCascading;
    bool? MilitaryTime;
    bool? SecureHookService;
    bool? ShowDashboard;
    bool? DefaultBusinessHours;
    Map<String,bool?>? ForceSso;
    bool? SuppressSsoAccountCreation;
    bool? UseAdvancedScheduler;
    bool? EnableUnsavedChangesPrompt;
    bool? ReturnInactiveWorkspace;
    String? CustomerSupportEmail;
    String? CustomerSupportPhoneNumber;
    bool? ShowColorCode;

    Workspace({this.ObjectId,this.VersionId,this.BasedOn,this.Name,this.LastUpdated,this.PaymentRequired,this.CompanyName,this.CompanyLogoUri,this.CompanySupportUrl,this.CompanySupportEmail,this.AdminEmail,this.CompanyAddress,this.TaskTitle,this.TasksTitle,this.TeamTitle,this.TeamsTitle,this.UserTitle,this.UsersTitle,this.ContactTitle,this.ContactsTitle,this.SalesforceElementId,this.ScheduleTitle,this.SchedulesTitle,this.FormTitle,this.FormsTitle,this.PoiTitle,this.PoisTitle,this.AssetMakeTitle,this.AssetModelTitle,this.AssetManufacturerTitle,this.AssetBarcodeTitle,this.AssetAncestorsTitle,this.AssetWarehouseTitle,this.AssetWarehousesTitle,this.AssetVehicleTitle,this.AssetVehiclesTitle,this.UseTeamMaps,this.UseContacts,this.UseAssets,this.ShouldRunIntegrations,this.TaskTemplates,this.FormTemplates,this.DocTemplateGhosts,this.AssetTypes,this.CatalogTypes,this.TaskTypes,this.WorkWeek,this.SalesTaxRate,this.SkillTags,this.TimeZoneId,this.IANATimeZoneId,this.Country,this.StopTime,this.StopDistance,this.SpeedingSpeed,this.SpeedingDuration,this.ContactIcon,this.UseOnSiteContact,this.UseServiceAddresses,this.UseSharedWorkspaces,this.IsMetric,this.BreakLength,this.PriorityNames,this.PriorityDefault,this.IsFinanceIntegrationEnabled,this.IsCRMIntegrationEnabled,this.IsBoxIntegrationEnabled,this.IsDropboxIntegrationEnabled,this.IsGoogleDriveIntegrationEnabled,this.IsEsriIntegrationEnabled,this.IsPaycomIntegrationEnabled,this.IsP21IntegrationEnabled,this.Images,this.ContactCustomFields,this.UserCustomFields,this.TeamCustomFields,this.UseAssetMaintenanceHistory,this.UseAssetSchedules,this.UseTaskAssets,this.UseSchedules,this.UseTasks,this.AssetsReadOnly,this.AssetVisibilityMax,this.ContactVisibilityMax,this.TaskVisibilityMax,this.AutoScanAndTrackAsset,this.BarcodeTrackAsset,this.GPSTrackAsset,this.CustomReports,this.ShowRelatedContactDocs,this.ShowRelatedAssetDocs,this.RequireAssetName,this.ShowRelatedTaskDocs,this.ClientBacklogSort,this.AutoAssignJobOnDriving,this.AutoAssignJobOnSite,this.AutoAssignJobOnComplete,this.AutoUnassignJobOnNotStarted,this.AutoScheduleJobOnDriving,this.AutoScheduleJobOnComplete,this.AutoScheduleJobOnSite,this.AutoUnscheduleJobOnNotStarted,this.AutoUpdateJobStartTimeOnSite,this.AutoUpdateJobEndTimeOnComplete,this.AutoAssignNewTasksTo,this.UseIntegrationEmail,this.UseTaskTarget,this.UseTaskDue,this.UseTaskPri,this.UseTaskAddr,this.TaskListDetails,this.AutocreateTaskStatusEvents,this.AutocreateTaskAssignmentEvents,this.FilterContactsByTeam,this.FilterUsersAndTeamsByTeam,this.AutoUpdateTaskContactChanged,this.AutoAssignTeamsOnTaskCreate,this.HtmlEmailIncludeTaskName,this.HtmlEmailIncludeUsers,this.HtmlEmailIncludeDateCreated,this.HtmlEmailIncludeDateLastUpdated,this.ClientStartupView,this.ClientAutoSyncInterval,this.MobileTaskRangePast,this.MobileTaskRangeFuture,this.ClientShowScheduledTasks,this.ClientShowMyTasksOnly,this.ClientShowBacklogTasks,this.ClientHideCompleteTasks,this.ClientMapType,this.ClientGPSAccuracy,this.ClientShowTaskIconsOnMap,this.ClientMapLayerScheduledTasks,this.ClientMapLayerBacklog,this.ClientMapLayerAssets,this.ClientMapLayerContacts,this.ClientMapLayerTracks,this.ClientMapLayerStops,this.ClientMapLayerSpeeding,this.ClientMapStartLocation,this.SecurityDict,this.ContactSearchResultExpression,this.LandscapePhotos,this.LogApiTraffic,this.UseDueDate,this.UsePriority,this.ScheduleTimeZones,this.UseTimezones,this.TaskListSummaryExpression1,this.TaskListSummaryExpression2,this.ShowScheduleButton,this.ShowScheduleGrid,this.ScheduleCustomFields,this.ScheduleGridConfig,this.SaveOnPhoto,this.CleanseGeocodes,this.GeocodeQuality,this.RetainCustomerDatabase,this.RetainAssetDatabase,this.ShowDriveTimes,this.LocAccFilter,this.AutoCreateRoutesFromAssignedTasks,this.TaskNameExpression,this.UseAddressCountry,this.MessageAppEnabled,this.GisLayers,this.AllowStatusDoubleClick,this.UseTimecard,this.TimecardCategories,this.UseLocalAdminUsers,this.UseInventory,this.ClientScheduledTaskSort,this.LaborPricingHierarchy,this.UseLabor,this.LaborHourFormat,this.TfaEnabled,this.TaskNameExpressionAutoUpdate,this.AutocreateInitialTaskStatusEvent,this.InactivityTimer,this.OfflineAuthTimer,this.Sequences,this.OverrideEmail,this.OverrideSms,this.PortalImageUrl,this.PortalImageId,this.SecureImageService,this.SuppressAssetTeamCascading,this.MilitaryTime,this.SecureHookService,this.ShowDashboard,this.DefaultBusinessHours,this.ForceSso,this.SuppressSsoAccountCreation,this.UseAdvancedScheduler,this.EnableUnsavedChangesPrompt,this.ReturnInactiveWorkspace,this.CustomerSupportEmail,this.CustomerSupportPhoneNumber,this.ShowColorCode});
    Workspace.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        ObjectId = json['ObjectId'];
        VersionId = json['VersionId'];
        BasedOn = json['BasedOn'];
        Name = json['Name'];
        LastUpdated = JsonConverters.fromJson(json['LastUpdated'],'DateTime',context!);
        PaymentRequired = json['PaymentRequired'];
        CompanyName = json['CompanyName'];
        CompanyLogoUri = json['CompanyLogoUri'];
        CompanySupportUrl = json['CompanySupportUrl'];
        CompanySupportEmail = json['CompanySupportEmail'];
        AdminEmail = json['AdminEmail'];
        CompanyAddress = JsonConverters.fromJson(json['CompanyAddress'],'Address',context!);
        TaskTitle = json['TaskTitle'];
        TasksTitle = json['TasksTitle'];
        TeamTitle = json['TeamTitle'];
        TeamsTitle = json['TeamsTitle'];
        UserTitle = json['UserTitle'];
        UsersTitle = json['UsersTitle'];
        ContactTitle = json['ContactTitle'];
        ContactsTitle = json['ContactsTitle'];
        SalesforceElementId = json['SalesforceElementId'];
        ScheduleTitle = json['ScheduleTitle'];
        SchedulesTitle = json['SchedulesTitle'];
        FormTitle = json['FormTitle'];
        FormsTitle = json['FormsTitle'];
        PoiTitle = json['PoiTitle'];
        PoisTitle = json['PoisTitle'];
        AssetMakeTitle = json['AssetMakeTitle'];
        AssetModelTitle = json['AssetModelTitle'];
        AssetManufacturerTitle = json['AssetManufacturerTitle'];
        AssetBarcodeTitle = json['AssetBarcodeTitle'];
        AssetAncestorsTitle = json['AssetAncestorsTitle'];
        AssetWarehouseTitle = json['AssetWarehouseTitle'];
        AssetWarehousesTitle = json['AssetWarehousesTitle'];
        AssetVehicleTitle = json['AssetVehicleTitle'];
        AssetVehiclesTitle = json['AssetVehiclesTitle'];
        UseTeamMaps = json['UseTeamMaps'];
        UseContacts = json['UseContacts'];
        UseAssets = json['UseAssets'];
        ShouldRunIntegrations = json['ShouldRunIntegrations'];
        TaskTemplates = JsonConverters.fromJson(json['TaskTemplates'],'Map<String,TaskTemplate?>',context!);
        FormTemplates = json['FormTemplates'];
        DocTemplateGhosts = JsonConverters.fromJson(json['DocTemplateGhosts'],'Map<String,DocumentTemplateGhost?>',context!);
        AssetTypes = JsonConverters.fromJson(json['AssetTypes'],'Map<String,AssetType?>',context!);
        CatalogTypes = JsonConverters.fromJson(json['CatalogTypes'],'List<CatalogType>',context!);
        TaskTypes = JsonConverters.fromJson(json['TaskTypes'],'List<TaskType>',context!);
        WorkWeek = JsonConverters.fromJson(json['WorkWeek'],'List<WorkDay>',context!);
        SalesTaxRate = JsonConverters.toDouble(json['SalesTaxRate']);
        SkillTags = JsonConverters.fromJson(json['SkillTags'],'List<String>',context!);
        TimeZoneId = json['TimeZoneId'];
        IANATimeZoneId = json['IANATimeZoneId'];
        Country = json['Country'];
        StopTime = json['StopTime'];
        StopDistance = json['StopDistance'];
        SpeedingSpeed = JsonConverters.toDouble(json['SpeedingSpeed']);
        SpeedingDuration = json['SpeedingDuration'];
        ContactIcon = json['ContactIcon'];
        UseOnSiteContact = json['UseOnSiteContact'];
        UseServiceAddresses = json['UseServiceAddresses'];
        UseSharedWorkspaces = json['UseSharedWorkspaces'];
        IsMetric = json['IsMetric'];
        BreakLength = JsonConverters.fromJson(json['BreakLength'],'List<int>',context!);
        PriorityNames = JsonConverters.fromJson(json['PriorityNames'],'List<String>',context!);
        PriorityDefault = json['PriorityDefault'];
        IsFinanceIntegrationEnabled = json['IsFinanceIntegrationEnabled'];
        IsCRMIntegrationEnabled = json['IsCRMIntegrationEnabled'];
        IsBoxIntegrationEnabled = json['IsBoxIntegrationEnabled'];
        IsDropboxIntegrationEnabled = json['IsDropboxIntegrationEnabled'];
        IsGoogleDriveIntegrationEnabled = json['IsGoogleDriveIntegrationEnabled'];
        IsEsriIntegrationEnabled = json['IsEsriIntegrationEnabled'];
        IsPaycomIntegrationEnabled = json['IsPaycomIntegrationEnabled'];
        IsP21IntegrationEnabled = json['IsP21IntegrationEnabled'];
        Images = JsonConverters.fromJson(json['Images'],'List<WorkspaceImage>',context!);
        ContactCustomFields = JsonConverters.fromJson(json['ContactCustomFields'],'List<CustomField>',context!);
        UserCustomFields = JsonConverters.fromJson(json['UserCustomFields'],'List<CustomField>',context!);
        TeamCustomFields = JsonConverters.fromJson(json['TeamCustomFields'],'List<CustomField>',context!);
        UseAssetMaintenanceHistory = json['UseAssetMaintenanceHistory'];
        UseAssetSchedules = json['UseAssetSchedules'];
        UseTaskAssets = json['UseTaskAssets'];
        UseSchedules = json['UseSchedules'];
        UseTasks = json['UseTasks'];
        AssetsReadOnly = json['AssetsReadOnly'];
        AssetVisibilityMax = JsonConverters.toDouble(json['AssetVisibilityMax']);
        ContactVisibilityMax = JsonConverters.toDouble(json['ContactVisibilityMax']);
        TaskVisibilityMax = JsonConverters.toDouble(json['TaskVisibilityMax']);
        AutoScanAndTrackAsset = json['AutoScanAndTrackAsset'];
        BarcodeTrackAsset = json['BarcodeTrackAsset'];
        GPSTrackAsset = json['GPSTrackAsset'];
        CustomReports = JsonConverters.fromJson(json['CustomReports'],'List<CustomReport>',context!);
        ShowRelatedContactDocs = json['ShowRelatedContactDocs'];
        ShowRelatedAssetDocs = json['ShowRelatedAssetDocs'];
        RequireAssetName = json['RequireAssetName'];
        ShowRelatedTaskDocs = json['ShowRelatedTaskDocs'];
        ClientBacklogSort = JsonConverters.fromJson(json['ClientBacklogSort'],'List<ClientBacklogSortItem>',context!);
        AutoAssignJobOnDriving = json['AutoAssignJobOnDriving'];
        AutoAssignJobOnSite = json['AutoAssignJobOnSite'];
        AutoAssignJobOnComplete = json['AutoAssignJobOnComplete'];
        AutoUnassignJobOnNotStarted = json['AutoUnassignJobOnNotStarted'];
        AutoScheduleJobOnDriving = json['AutoScheduleJobOnDriving'];
        AutoScheduleJobOnComplete = json['AutoScheduleJobOnComplete'];
        AutoScheduleJobOnSite = json['AutoScheduleJobOnSite'];
        AutoUnscheduleJobOnNotStarted = json['AutoUnscheduleJobOnNotStarted'];
        AutoUpdateJobStartTimeOnSite = json['AutoUpdateJobStartTimeOnSite'];
        AutoUpdateJobEndTimeOnComplete = json['AutoUpdateJobEndTimeOnComplete'];
        AutoAssignNewTasksTo = json['AutoAssignNewTasksTo'];
        UseIntegrationEmail = json['UseIntegrationEmail'];
        UseTaskTarget = json['UseTaskTarget'];
        UseTaskDue = json['UseTaskDue'];
        UseTaskPri = json['UseTaskPri'];
        UseTaskAddr = json['UseTaskAddr'];
        TaskListDetails = json['TaskListDetails'];
        AutocreateTaskStatusEvents = json['AutocreateTaskStatusEvents'];
        AutocreateTaskAssignmentEvents = json['AutocreateTaskAssignmentEvents'];
        FilterContactsByTeam = json['FilterContactsByTeam'];
        FilterUsersAndTeamsByTeam = json['FilterUsersAndTeamsByTeam'];
        AutoUpdateTaskContactChanged = json['AutoUpdateTaskContactChanged'];
        AutoAssignTeamsOnTaskCreate = json['AutoAssignTeamsOnTaskCreate'];
        HtmlEmailIncludeTaskName = json['HtmlEmailIncludeTaskName'];
        HtmlEmailIncludeUsers = json['HtmlEmailIncludeUsers'];
        HtmlEmailIncludeDateCreated = json['HtmlEmailIncludeDateCreated'];
        HtmlEmailIncludeDateLastUpdated = json['HtmlEmailIncludeDateLastUpdated'];
        ClientStartupView = json['ClientStartupView'];
        ClientAutoSyncInterval = json['ClientAutoSyncInterval'];
        MobileTaskRangePast = json['MobileTaskRangePast'];
        MobileTaskRangeFuture = json['MobileTaskRangeFuture'];
        ClientShowScheduledTasks = json['ClientShowScheduledTasks'];
        ClientShowMyTasksOnly = json['ClientShowMyTasksOnly'];
        ClientShowBacklogTasks = json['ClientShowBacklogTasks'];
        ClientHideCompleteTasks = json['ClientHideCompleteTasks'];
        ClientMapType = json['ClientMapType'];
        ClientGPSAccuracy = json['ClientGPSAccuracy'];
        ClientShowTaskIconsOnMap = json['ClientShowTaskIconsOnMap'];
        ClientMapLayerScheduledTasks = json['ClientMapLayerScheduledTasks'];
        ClientMapLayerBacklog = json['ClientMapLayerBacklog'];
        ClientMapLayerAssets = json['ClientMapLayerAssets'];
        ClientMapLayerContacts = json['ClientMapLayerContacts'];
        ClientMapLayerTracks = json['ClientMapLayerTracks'];
        ClientMapLayerStops = json['ClientMapLayerStops'];
        ClientMapLayerSpeeding = json['ClientMapLayerSpeeding'];
        ClientMapStartLocation = json['ClientMapStartLocation'];
        SecurityDict = JsonConverters.fromJson(json['SecurityDict'],'Map<String,int?>',context!);
        ContactSearchResultExpression = json['ContactSearchResultExpression'];
        LandscapePhotos = json['LandscapePhotos'];
        LogApiTraffic = json['LogApiTraffic'];
        UseDueDate = json['UseDueDate'];
        UsePriority = json['UsePriority'];
        ScheduleTimeZones = JsonConverters.fromJson(json['ScheduleTimeZones'],'List<String>',context!);
        UseTimezones = json['UseTimezones'];
        TaskListSummaryExpression1 = json['TaskListSummaryExpression1'];
        TaskListSummaryExpression2 = json['TaskListSummaryExpression2'];
        ShowScheduleButton = json['ShowScheduleButton'];
        ShowScheduleGrid = json['ShowScheduleGrid'];
        ScheduleCustomFields = JsonConverters.fromJson(json['ScheduleCustomFields'],'List<CustomField>',context!);
        ScheduleGridConfig = JsonConverters.fromJson(json['ScheduleGridConfig'],'ScheduleGridConfiguration',context!);
        SaveOnPhoto = json['SaveOnPhoto'];
        CleanseGeocodes = json['CleanseGeocodes'];
        GeocodeQuality = json['GeocodeQuality'];
        RetainCustomerDatabase = json['RetainCustomerDatabase'];
        RetainAssetDatabase = json['RetainAssetDatabase'];
        ShowDriveTimes = json['ShowDriveTimes'];
        LocAccFilter = JsonConverters.toDouble(json['LocAccFilter']);
        AutoCreateRoutesFromAssignedTasks = json['AutoCreateRoutesFromAssignedTasks'];
        TaskNameExpression = json['TaskNameExpression'];
        UseAddressCountry = json['UseAddressCountry'];
        MessageAppEnabled = json['MessageAppEnabled'];
        GisLayers = JsonConverters.fromJson(json['GisLayers'],'List<String>',context!);
        AllowStatusDoubleClick = json['AllowStatusDoubleClick'];
        UseTimecard = json['UseTimecard'];
        TimecardCategories = JsonConverters.fromJson(json['TimecardCategories'],'List<String>',context!);
        UseLocalAdminUsers = json['UseLocalAdminUsers'];
        UseInventory = json['UseInventory'];
        ClientScheduledTaskSort = json['ClientScheduledTaskSort'];
        LaborPricingHierarchy = JsonConverters.fromJson(json['LaborPricingHierarchy'],'List<String>',context!);
        UseLabor = json['UseLabor'];
        LaborHourFormat = json['LaborHourFormat'];
        TfaEnabled = json['TfaEnabled'];
        TaskNameExpressionAutoUpdate = json['TaskNameExpressionAutoUpdate'];
        AutocreateInitialTaskStatusEvent = json['AutocreateInitialTaskStatusEvent'];
        InactivityTimer = json['InactivityTimer'];
        OfflineAuthTimer = json['OfflineAuthTimer'];
        Sequences = JsonConverters.fromJson(json['Sequences'],'Map<String,int?>',context!);
        OverrideEmail = json['OverrideEmail'];
        OverrideSms = json['OverrideSms'];
        PortalImageUrl = json['PortalImageUrl'];
        PortalImageId = json['PortalImageId'];
        SecureImageService = json['SecureImageService'];
        SuppressAssetTeamCascading = json['SuppressAssetTeamCascading'];
        MilitaryTime = json['MilitaryTime'];
        SecureHookService = json['SecureHookService'];
        ShowDashboard = json['ShowDashboard'];
        DefaultBusinessHours = json['DefaultBusinessHours'];
        ForceSso = JsonConverters.fromJson(json['ForceSso'],'Map<String,bool?>',context!);
        SuppressSsoAccountCreation = json['SuppressSsoAccountCreation'];
        UseAdvancedScheduler = json['UseAdvancedScheduler'];
        EnableUnsavedChangesPrompt = json['EnableUnsavedChangesPrompt'];
        ReturnInactiveWorkspace = json['ReturnInactiveWorkspace'];
        CustomerSupportEmail = json['CustomerSupportEmail'];
        CustomerSupportPhoneNumber = json['CustomerSupportPhoneNumber'];
        ShowColorCode = json['ShowColorCode'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'ObjectId': ObjectId,
        'VersionId': VersionId,
        'BasedOn': BasedOn,
        'Name': Name,
        'LastUpdated': JsonConverters.toJson(LastUpdated,'DateTime',context!),
        'PaymentRequired': PaymentRequired,
        'CompanyName': CompanyName,
        'CompanyLogoUri': CompanyLogoUri,
        'CompanySupportUrl': CompanySupportUrl,
        'CompanySupportEmail': CompanySupportEmail,
        'AdminEmail': AdminEmail,
        'CompanyAddress': JsonConverters.toJson(CompanyAddress,'Address',context!),
        'TaskTitle': TaskTitle,
        'TasksTitle': TasksTitle,
        'TeamTitle': TeamTitle,
        'TeamsTitle': TeamsTitle,
        'UserTitle': UserTitle,
        'UsersTitle': UsersTitle,
        'ContactTitle': ContactTitle,
        'ContactsTitle': ContactsTitle,
        'SalesforceElementId': SalesforceElementId,
        'ScheduleTitle': ScheduleTitle,
        'SchedulesTitle': SchedulesTitle,
        'FormTitle': FormTitle,
        'FormsTitle': FormsTitle,
        'PoiTitle': PoiTitle,
        'PoisTitle': PoisTitle,
        'AssetMakeTitle': AssetMakeTitle,
        'AssetModelTitle': AssetModelTitle,
        'AssetManufacturerTitle': AssetManufacturerTitle,
        'AssetBarcodeTitle': AssetBarcodeTitle,
        'AssetAncestorsTitle': AssetAncestorsTitle,
        'AssetWarehouseTitle': AssetWarehouseTitle,
        'AssetWarehousesTitle': AssetWarehousesTitle,
        'AssetVehicleTitle': AssetVehicleTitle,
        'AssetVehiclesTitle': AssetVehiclesTitle,
        'UseTeamMaps': UseTeamMaps,
        'UseContacts': UseContacts,
        'UseAssets': UseAssets,
        'ShouldRunIntegrations': ShouldRunIntegrations,
        'TaskTemplates': JsonConverters.toJson(TaskTemplates,'Map<String,TaskTemplate?>',context!),
        'FormTemplates': FormTemplates,
        'DocTemplateGhosts': JsonConverters.toJson(DocTemplateGhosts,'Map<String,DocumentTemplateGhost?>',context!),
        'AssetTypes': JsonConverters.toJson(AssetTypes,'Map<String,AssetType?>',context!),
        'CatalogTypes': JsonConverters.toJson(CatalogTypes,'List<CatalogType>',context!),
        'TaskTypes': JsonConverters.toJson(TaskTypes,'List<TaskType>',context!),
        'WorkWeek': JsonConverters.toJson(WorkWeek,'List<WorkDay>',context!),
        'SalesTaxRate': SalesTaxRate,
        'SkillTags': JsonConverters.toJson(SkillTags,'List<String>',context!),
        'TimeZoneId': TimeZoneId,
        'IANATimeZoneId': IANATimeZoneId,
        'Country': Country,
        'StopTime': StopTime,
        'StopDistance': StopDistance,
        'SpeedingSpeed': SpeedingSpeed,
        'SpeedingDuration': SpeedingDuration,
        'ContactIcon': ContactIcon,
        'UseOnSiteContact': UseOnSiteContact,
        'UseServiceAddresses': UseServiceAddresses,
        'UseSharedWorkspaces': UseSharedWorkspaces,
        'IsMetric': IsMetric,
        'BreakLength': JsonConverters.toJson(BreakLength,'List<int>',context!),
        'PriorityNames': JsonConverters.toJson(PriorityNames,'List<String>',context!),
        'PriorityDefault': PriorityDefault,
        'IsFinanceIntegrationEnabled': IsFinanceIntegrationEnabled,
        'IsCRMIntegrationEnabled': IsCRMIntegrationEnabled,
        'IsBoxIntegrationEnabled': IsBoxIntegrationEnabled,
        'IsDropboxIntegrationEnabled': IsDropboxIntegrationEnabled,
        'IsGoogleDriveIntegrationEnabled': IsGoogleDriveIntegrationEnabled,
        'IsEsriIntegrationEnabled': IsEsriIntegrationEnabled,
        'IsPaycomIntegrationEnabled': IsPaycomIntegrationEnabled,
        'IsP21IntegrationEnabled': IsP21IntegrationEnabled,
        'Images': JsonConverters.toJson(Images,'List<WorkspaceImage>',context!),
        'ContactCustomFields': JsonConverters.toJson(ContactCustomFields,'List<CustomField>',context!),
        'UserCustomFields': JsonConverters.toJson(UserCustomFields,'List<CustomField>',context!),
        'TeamCustomFields': JsonConverters.toJson(TeamCustomFields,'List<CustomField>',context!),
        'UseAssetMaintenanceHistory': UseAssetMaintenanceHistory,
        'UseAssetSchedules': UseAssetSchedules,
        'UseTaskAssets': UseTaskAssets,
        'UseSchedules': UseSchedules,
        'UseTasks': UseTasks,
        'AssetsReadOnly': AssetsReadOnly,
        'AssetVisibilityMax': AssetVisibilityMax,
        'ContactVisibilityMax': ContactVisibilityMax,
        'TaskVisibilityMax': TaskVisibilityMax,
        'AutoScanAndTrackAsset': AutoScanAndTrackAsset,
        'BarcodeTrackAsset': BarcodeTrackAsset,
        'GPSTrackAsset': GPSTrackAsset,
        'CustomReports': JsonConverters.toJson(CustomReports,'List<CustomReport>',context!),
        'ShowRelatedContactDocs': ShowRelatedContactDocs,
        'ShowRelatedAssetDocs': ShowRelatedAssetDocs,
        'RequireAssetName': RequireAssetName,
        'ShowRelatedTaskDocs': ShowRelatedTaskDocs,
        'ClientBacklogSort': JsonConverters.toJson(ClientBacklogSort,'List<ClientBacklogSortItem>',context!),
        'AutoAssignJobOnDriving': AutoAssignJobOnDriving,
        'AutoAssignJobOnSite': AutoAssignJobOnSite,
        'AutoAssignJobOnComplete': AutoAssignJobOnComplete,
        'AutoUnassignJobOnNotStarted': AutoUnassignJobOnNotStarted,
        'AutoScheduleJobOnDriving': AutoScheduleJobOnDriving,
        'AutoScheduleJobOnComplete': AutoScheduleJobOnComplete,
        'AutoScheduleJobOnSite': AutoScheduleJobOnSite,
        'AutoUnscheduleJobOnNotStarted': AutoUnscheduleJobOnNotStarted,
        'AutoUpdateJobStartTimeOnSite': AutoUpdateJobStartTimeOnSite,
        'AutoUpdateJobEndTimeOnComplete': AutoUpdateJobEndTimeOnComplete,
        'AutoAssignNewTasksTo': AutoAssignNewTasksTo,
        'UseIntegrationEmail': UseIntegrationEmail,
        'UseTaskTarget': UseTaskTarget,
        'UseTaskDue': UseTaskDue,
        'UseTaskPri': UseTaskPri,
        'UseTaskAddr': UseTaskAddr,
        'TaskListDetails': TaskListDetails,
        'AutocreateTaskStatusEvents': AutocreateTaskStatusEvents,
        'AutocreateTaskAssignmentEvents': AutocreateTaskAssignmentEvents,
        'FilterContactsByTeam': FilterContactsByTeam,
        'FilterUsersAndTeamsByTeam': FilterUsersAndTeamsByTeam,
        'AutoUpdateTaskContactChanged': AutoUpdateTaskContactChanged,
        'AutoAssignTeamsOnTaskCreate': AutoAssignTeamsOnTaskCreate,
        'HtmlEmailIncludeTaskName': HtmlEmailIncludeTaskName,
        'HtmlEmailIncludeUsers': HtmlEmailIncludeUsers,
        'HtmlEmailIncludeDateCreated': HtmlEmailIncludeDateCreated,
        'HtmlEmailIncludeDateLastUpdated': HtmlEmailIncludeDateLastUpdated,
        'ClientStartupView': ClientStartupView,
        'ClientAutoSyncInterval': ClientAutoSyncInterval,
        'MobileTaskRangePast': MobileTaskRangePast,
        'MobileTaskRangeFuture': MobileTaskRangeFuture,
        'ClientShowScheduledTasks': ClientShowScheduledTasks,
        'ClientShowMyTasksOnly': ClientShowMyTasksOnly,
        'ClientShowBacklogTasks': ClientShowBacklogTasks,
        'ClientHideCompleteTasks': ClientHideCompleteTasks,
        'ClientMapType': ClientMapType,
        'ClientGPSAccuracy': ClientGPSAccuracy,
        'ClientShowTaskIconsOnMap': ClientShowTaskIconsOnMap,
        'ClientMapLayerScheduledTasks': ClientMapLayerScheduledTasks,
        'ClientMapLayerBacklog': ClientMapLayerBacklog,
        'ClientMapLayerAssets': ClientMapLayerAssets,
        'ClientMapLayerContacts': ClientMapLayerContacts,
        'ClientMapLayerTracks': ClientMapLayerTracks,
        'ClientMapLayerStops': ClientMapLayerStops,
        'ClientMapLayerSpeeding': ClientMapLayerSpeeding,
        'ClientMapStartLocation': ClientMapStartLocation,
        'SecurityDict': JsonConverters.toJson(SecurityDict,'Map<String,int?>',context!),
        'ContactSearchResultExpression': ContactSearchResultExpression,
        'LandscapePhotos': LandscapePhotos,
        'LogApiTraffic': LogApiTraffic,
        'UseDueDate': UseDueDate,
        'UsePriority': UsePriority,
        'ScheduleTimeZones': JsonConverters.toJson(ScheduleTimeZones,'List<String>',context!),
        'UseTimezones': UseTimezones,
        'TaskListSummaryExpression1': TaskListSummaryExpression1,
        'TaskListSummaryExpression2': TaskListSummaryExpression2,
        'ShowScheduleButton': ShowScheduleButton,
        'ShowScheduleGrid': ShowScheduleGrid,
        'ScheduleCustomFields': JsonConverters.toJson(ScheduleCustomFields,'List<CustomField>',context!),
        'ScheduleGridConfig': JsonConverters.toJson(ScheduleGridConfig,'ScheduleGridConfiguration',context!),
        'SaveOnPhoto': SaveOnPhoto,
        'CleanseGeocodes': CleanseGeocodes,
        'GeocodeQuality': GeocodeQuality,
        'RetainCustomerDatabase': RetainCustomerDatabase,
        'RetainAssetDatabase': RetainAssetDatabase,
        'ShowDriveTimes': ShowDriveTimes,
        'LocAccFilter': LocAccFilter,
        'AutoCreateRoutesFromAssignedTasks': AutoCreateRoutesFromAssignedTasks,
        'TaskNameExpression': TaskNameExpression,
        'UseAddressCountry': UseAddressCountry,
        'MessageAppEnabled': MessageAppEnabled,
        'GisLayers': JsonConverters.toJson(GisLayers,'List<String>',context!),
        'AllowStatusDoubleClick': AllowStatusDoubleClick,
        'UseTimecard': UseTimecard,
        'TimecardCategories': JsonConverters.toJson(TimecardCategories,'List<String>',context!),
        'UseLocalAdminUsers': UseLocalAdminUsers,
        'UseInventory': UseInventory,
        'ClientScheduledTaskSort': ClientScheduledTaskSort,
        'LaborPricingHierarchy': JsonConverters.toJson(LaborPricingHierarchy,'List<String>',context!),
        'UseLabor': UseLabor,
        'LaborHourFormat': LaborHourFormat,
        'TfaEnabled': TfaEnabled,
        'TaskNameExpressionAutoUpdate': TaskNameExpressionAutoUpdate,
        'AutocreateInitialTaskStatusEvent': AutocreateInitialTaskStatusEvent,
        'InactivityTimer': InactivityTimer,
        'OfflineAuthTimer': OfflineAuthTimer,
        'Sequences': JsonConverters.toJson(Sequences,'Map<String,int?>',context!),
        'OverrideEmail': OverrideEmail,
        'OverrideSms': OverrideSms,
        'PortalImageUrl': PortalImageUrl,
        'PortalImageId': PortalImageId,
        'SecureImageService': SecureImageService,
        'SuppressAssetTeamCascading': SuppressAssetTeamCascading,
        'MilitaryTime': MilitaryTime,
        'SecureHookService': SecureHookService,
        'ShowDashboard': ShowDashboard,
        'DefaultBusinessHours': DefaultBusinessHours,
        'ForceSso': JsonConverters.toJson(ForceSso,'Map<String,bool?>',context!),
        'SuppressSsoAccountCreation': SuppressSsoAccountCreation,
        'UseAdvancedScheduler': UseAdvancedScheduler,
        'EnableUnsavedChangesPrompt': EnableUnsavedChangesPrompt,
        'ReturnInactiveWorkspace': ReturnInactiveWorkspace,
        'CustomerSupportEmail': CustomerSupportEmail,
        'CustomerSupportPhoneNumber': CustomerSupportPhoneNumber,
        'ShowColorCode': ShowColorCode
    };

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

TypeContext _ctx = TypeContext(library: 'dev.fieldsquared.com', types: <String, TypeInfo> {
    'Location': TypeInfo(TypeOf.Class, create:() => Location()),
    'Address': TypeInfo(TypeOf.Class, create:() => Address()),
    'CustomFieldDataType': TypeInfo(TypeOf.Enum, enumValues:CustomFieldDataType.values),
    'CustomField': TypeInfo(TypeOf.Class, create:() => CustomField()),
    'Map<String,dynamic?>': TypeInfo(TypeOf.Class, create:() => Map<String,dynamic?>()),
    'BindingDescriptor': TypeInfo(TypeOf.Class, create:() => BindingDescriptor()),
    'TaskStatusDef': TypeInfo(TypeOf.Class, create:() => TaskStatusDef()),
    'List<BindingDescriptor>': TypeInfo(TypeOf.Class, create:() => <BindingDescriptor>[]),
    'TaskTemplate': TypeInfo(TypeOf.Class, create:() => TaskTemplate()),
    'List<CustomField>': TypeInfo(TypeOf.Class, create:() => <CustomField>[]),
    'List<TaskStatusDef>': TypeInfo(TypeOf.Class, create:() => <TaskStatusDef>[]),
    'DocumentTemplateGhost': TypeInfo(TypeOf.Class, create:() => DocumentTemplateGhost()),
    'AssetType': TypeInfo(TypeOf.Class, create:() => AssetType()),
    'CatalogType': TypeInfo(TypeOf.Class, create:() => CatalogType()),
    'RequiredAsset': TypeInfo(TypeOf.Class, create:() => RequiredAsset()),
    'RequiredInventoryType': TypeInfo(TypeOf.Class, create:() => RequiredInventoryType()),
    'RequiredUser': TypeInfo(TypeOf.Class, create:() => RequiredUser()),
    'AutoCreateDocExpression': TypeInfo(TypeOf.Class, create:() => AutoCreateDocExpression()),
    'TaskType': TypeInfo(TypeOf.Class, create:() => TaskType()),
    'List<RequiredAsset>': TypeInfo(TypeOf.Class, create:() => <RequiredAsset>[]),
    'List<RequiredInventoryType>': TypeInfo(TypeOf.Class, create:() => <RequiredInventoryType>[]),
    'List<RequiredUser>': TypeInfo(TypeOf.Class, create:() => <RequiredUser>[]),
    'List<AutoCreateDocExpression>': TypeInfo(TypeOf.Class, create:() => <AutoCreateDocExpression>[]),
    'WorkDay': TypeInfo(TypeOf.Class, create:() => WorkDay()),
    'WorkspaceImage': TypeInfo(TypeOf.Class, create:() => WorkspaceImage()),
    'CustomReport': TypeInfo(TypeOf.Class, create:() => CustomReport()),
    'ClientBacklogSortItem': TypeInfo(TypeOf.Class, create:() => ClientBacklogSortItem()),
    'GridItem': TypeInfo(TypeOf.Class, create:() => GridItem()),
    'ScheduleGridConfiguration': TypeInfo(TypeOf.Class, create:() => ScheduleGridConfiguration()),
    'List<GridItem>': TypeInfo(TypeOf.Class, create:() => <GridItem>[]),
    'Workspace': TypeInfo(TypeOf.Class, create:() => Workspace()),
    'Map<String,TaskTemplate?>': TypeInfo(TypeOf.Class, create:() => Map<String,TaskTemplate?>()),
    'Map<String,DocumentTemplateGhost?>': TypeInfo(TypeOf.Class, create:() => Map<String,DocumentTemplateGhost?>()),
    'Map<String,AssetType?>': TypeInfo(TypeOf.Class, create:() => Map<String,AssetType?>()),
    'List<CatalogType>': TypeInfo(TypeOf.Class, create:() => <CatalogType>[]),
    'List<TaskType>': TypeInfo(TypeOf.Class, create:() => <TaskType>[]),
    'List<WorkDay>': TypeInfo(TypeOf.Class, create:() => <WorkDay>[]),
    'List<WorkspaceImage>': TypeInfo(TypeOf.Class, create:() => <WorkspaceImage>[]),
    'List<CustomReport>': TypeInfo(TypeOf.Class, create:() => <CustomReport>[]),
    'List<ClientBacklogSortItem>': TypeInfo(TypeOf.Class, create:() => <ClientBacklogSortItem>[]),
    'Map<String,int?>': TypeInfo(TypeOf.Class, create:() => Map<String,int?>()),
    'Map<String,bool?>': TypeInfo(TypeOf.Class, create:() => Map<String,bool?>()),
});

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

{
	ObjectId: String,
	VersionId: String,
	BasedOn: String,
	Name: String,
	LastUpdated: 0001-01-01,
	PaymentRequired: False,
	CompanyName: String,
	CompanyLogoUri: String,
	CompanySupportUrl: String,
	CompanySupportEmail: String,
	AdminEmail: String,
	CompanyAddress: 
	{
		Street: String,
		Unit: String,
		City: String,
		State: String,
		Zip: String,
		ContactTitle: String,
		ContactName: String,
		ContactPhone: String,
		ContactEmail: String,
		Location: 
		{
			y: 0,
			x: 0
		},
		SiteName: String,
		GeocodeFailed: False,
		Country: String
	},
	TaskTitle: String,
	TasksTitle: String,
	TeamTitle: String,
	TeamsTitle: String,
	UserTitle: String,
	UsersTitle: String,
	ContactTitle: String,
	ContactsTitle: String,
	SalesforceElementId: String,
	ScheduleTitle: String,
	SchedulesTitle: String,
	FormTitle: String,
	FormsTitle: String,
	PoiTitle: String,
	PoisTitle: String,
	AssetMakeTitle: String,
	AssetModelTitle: String,
	AssetManufacturerTitle: String,
	AssetBarcodeTitle: String,
	AssetAncestorsTitle: String,
	AssetWarehouseTitle: String,
	AssetWarehousesTitle: String,
	AssetVehicleTitle: String,
	AssetVehiclesTitle: String,
	UseTeamMaps: False,
	UseContacts: False,
	UseAssets: False,
	ShouldRunIntegrations: False,
	TaskTemplates: 
	{
		String: 
		{
			CustomFields: 
			[
				{
					Key: String,
					Label: String,
					IsActive: False,
					IsReadOnly: False,
					IsHidden: False,
					IsMandatory: False,
					DisplayOnMap: False,
					CustomFieldDataType: Text,
					Values: String,
					Prompt: String,
					Default: String,
					DefaultAutoUpdate: False,
					RequiredIf: String,
					Hidden: 
					[
						String
					],
					ReadOnly: 
					[
						String
					],
					ControlArgs: 
					{
						String: {}
					},
					IndexSlot: String,
					Index: String
				}
			],
			Statuses: 
			[
				{
					Name: String,
					Color: String,
					Code: String,
					TransitionFrom: String,
					TransitionMessage: String,
					TransitionCustomFields: 
					[
						String
					],
					HiddenIf: String,
					IsStart: False,
					IsEnd: False,
					IsBlocked: False,
					StatusType: String,
					ProgressType: String,
					AutoCreateDocuments: 
					[
						String
					],
					LockTask: False,
					SubmittedForms: 
					[
						{
							Binding: String,
							Required: False
						}
					]
				}
			],
			TaskListDetails: String,
			AutoAssignStatus: String,
			AutoUnassignStatus: String,
			AutoScheduleStatus: String,
			AutoUnscheduleStatus: String,
			AutoUpdateStartStatus: String,
			AutoUpdateEndStatus: String,
			ArrivalStatus: String,
			DepartureStatus: String,
			ConfirmArrival: False,
			ConfirmDeparture: False,
			ManualArrivalAllowed: False,
			ManualDepartureAllowed: False,
			HideDisabledStatuses: False,
			GeofenceRadius: 0
		}
	},
	FormTemplates: String,
	DocTemplateGhosts: 
	{
		String: 
		{
			Title: String,
			IsSubDoc: False,
			Folder: String,
			IsFragment: False,
			EditTeams: 
			[
				String
			],
			HasSecondaryOwner: False,
			TaskDocument: False,
			AssetDocument: False,
			ContactDocument: False,
			UserDocument: False,
			MultipleCopies: False,
			SubmitOption: False,
			Image: String,
			HiddenFor: 
			[
				String
			]
		}
	},
	AssetTypes: 
	{
		String: 
		{
			Workspace: String,
			Type: String,
			IsActive: False,
			Name: String,
			Make: String,
			Model: String,
			Manuf: String,
			Barcode: String,
			Symbol: String,
			Color: String,
			LineThickness: 0,
			Scale: 0,
			VisibilityMin: 0,
			VisibilityMax: 0,
			SyncNode: False,
			CustomFields: 
			[
				{
					Key: String,
					Label: String,
					IsActive: False,
					IsReadOnly: False,
					IsHidden: False,
					IsMandatory: False,
					DisplayOnMap: False,
					CustomFieldDataType: Text,
					Values: String,
					Prompt: String,
					Default: String,
					DefaultAutoUpdate: False,
					RequiredIf: String,
					Hidden: 
					[
						String
					],
					ReadOnly: 
					[
						String
					],
					ControlArgs: 
					{
						String: String
					},
					UseArrayMergeType: Set,
					IndexSlot: String,
					Index: String
				}
			],
			AllowedParentTypes: 
			[
				String
			],
			AllowedChildTypes: 
			[
				String
			],
			UseLocationHistory: False,
			IsMobileAsset: False,
			Data: 
			{
				String: String
			},
			GeomType: String,
			DocFilter: False,
			ShowRelatedDocs: False,
			AllowedDocTypes: 
			[
				String
			],
			TLA: String,
			UseTLAOnMap: False,
			RoutingLocation: String,
			Fill: String,
			FillOpacity: 0,
			ShowAnno: False,
			AnnoColor: String,
			MaxAnnoVisibility: 0,
			AnnoFont: String,
			HideTypeLabel: False,
			UseAddress: False,
			UseFullScreen: False,
			TimeSeries: 0,
			IsUnselectable: False,
			EditTeams: 
			[
				String
			],
			IsWarehouse: False,
			IsVehicle: False,
			CustomSymbol: 
			{
				String: {}
			},
			TaskSeriesTemplates: 
			[
				String
			]
		}
	},
	CatalogTypes: 
	[
		{
			Type: String,
			Name: String,
			CustomFields: 
			[
				{
					Key: String,
					Label: String,
					IsActive: False,
					IsReadOnly: False,
					IsHidden: False,
					IsMandatory: False,
					DisplayOnMap: False,
					CustomFieldDataType: Text,
					Values: String,
					Prompt: String,
					Default: String,
					DefaultAutoUpdate: False,
					RequiredIf: String,
					Hidden: 
					[
						String
					],
					ReadOnly: 
					[
						String
					],
					ControlArgs: 
					{
						String: String
					},
					UseArrayMergeType: Set,
					IndexSlot: String,
					Index: String
				}
			]
		}
	],
	TaskTypes: 
	[
		{
			Workspace: String,
			Type: String,
			Icon: String,
			SkillTags: 
			[
				String
			],
			MinTimeToComplete: 0,
			AvgTimeToComplete: 0,
			MaxTimeToComplete: 0,
			Template: String,
			DocFilter: False,
			ShowRelatedDocs: False,
			AllowedDocTypes: 
			[
				String
			],
			DefaultPriority: 0,
			Inactive: False,
			AutoCreateDocuments: 
			[
				String
			],
			PercentCompleteType: String,
			UseJobTimers: False,
			InheritAssetTeams: False,
			InheritContactTeams: False,
			EditTeams: 
			[
				String
			],
			UseRequired: False,
			AllowOverride: False,
			RequiredAssets: 
			[
				{
					Number: 0,
					Type: String
				}
			],
			RequiredInventoryTypes: 
			[
				{
					Number: 0,
					Type: String,
					Name: String,
					IsSerialized: False,
					Description: String
				}
			],
			RequiredUsers: 
			[
				{
					Number: 0,
					SkillTags: 
					[
						String
					]
				}
			],
			ActiveLaborTypes: 
			{
				String: {}
			},
			IndividualUserStatuses: False,
			LockOption: False,
			AutoCreateDocExpressions: 
			[
				{
					Document: String,
					Expression: String,
					MultipleCopies: False
				}
			],
			PTO: False
		}
	],
	WorkWeek: 
	[
		{
			DayOfWeek: 0,
			Start: 0,
			End: 0,
			Lunch: 0
		}
	],
	SalesTaxRate: 0,
	SkillTags: 
	[
		String
	],
	TimeZoneId: String,
	IANATimeZoneId: String,
	Country: String,
	StopTime: 0,
	StopDistance: 0,
	SpeedingSpeed: 0,
	SpeedingDuration: 0,
	ContactIcon: String,
	UseOnSiteContact: False,
	UseServiceAddresses: False,
	UseSharedWorkspaces: False,
	IsMetric: False,
	BreakLength: 
	[
		0
	],
	PriorityNames: 
	[
		String
	],
	PriorityDefault: String,
	IsFinanceIntegrationEnabled: False,
	IsCRMIntegrationEnabled: False,
	IsBoxIntegrationEnabled: False,
	IsDropboxIntegrationEnabled: False,
	IsGoogleDriveIntegrationEnabled: False,
	IsEsriIntegrationEnabled: False,
	IsPaycomIntegrationEnabled: False,
	IsP21IntegrationEnabled: False,
	Images: 
	[
		{
			Category: String,
			ObjectId: String
		}
	],
	ContactCustomFields: 
	[
		{
			Key: String,
			Label: String,
			IsActive: False,
			IsReadOnly: False,
			IsHidden: False,
			IsMandatory: False,
			DisplayOnMap: False,
			CustomFieldDataType: Text,
			Values: String,
			Prompt: String,
			Default: String,
			DefaultAutoUpdate: False,
			RequiredIf: String,
			Hidden: 
			[
				String
			],
			ReadOnly: 
			[
				String
			],
			ControlArgs: 
			{
				String: {}
			},
			IndexSlot: String,
			Index: String
		}
	],
	UserCustomFields: 
	[
		{
			Key: String,
			Label: String,
			IsActive: False,
			IsReadOnly: False,
			IsHidden: False,
			IsMandatory: False,
			DisplayOnMap: False,
			CustomFieldDataType: Text,
			Values: String,
			Prompt: String,
			Default: String,
			DefaultAutoUpdate: False,
			RequiredIf: String,
			Hidden: 
			[
				String
			],
			ReadOnly: 
			[
				String
			],
			ControlArgs: 
			{
				String: {}
			},
			IndexSlot: String,
			Index: String
		}
	],
	TeamCustomFields: 
	[
		{
			Key: String,
			Label: String,
			IsActive: False,
			IsReadOnly: False,
			IsHidden: False,
			IsMandatory: False,
			DisplayOnMap: False,
			CustomFieldDataType: Text,
			Values: String,
			Prompt: String,
			Default: String,
			DefaultAutoUpdate: False,
			RequiredIf: String,
			Hidden: 
			[
				String
			],
			ReadOnly: 
			[
				String
			],
			ControlArgs: 
			{
				String: {}
			},
			IndexSlot: String,
			Index: String
		}
	],
	UseAssetMaintenanceHistory: False,
	UseAssetSchedules: False,
	UseTaskAssets: False,
	UseSchedules: False,
	UseTasks: False,
	AssetsReadOnly: False,
	AssetVisibilityMax: 0,
	ContactVisibilityMax: 0,
	TaskVisibilityMax: 0,
	AutoScanAndTrackAsset: False,
	BarcodeTrackAsset: False,
	GPSTrackAsset: False,
	CustomReports: 
	[
		{
			ObjectId: String,
			Name: String,
			Inputs: 
			[
				{
					Key: String,
					Label: String,
					IsActive: False,
					IsReadOnly: False,
					IsHidden: False,
					IsMandatory: False,
					DisplayOnMap: False,
					CustomFieldDataType: Text,
					Values: String,
					Prompt: String,
					Default: String,
					DefaultAutoUpdate: False,
					RequiredIf: String,
					Hidden: 
					[
						String
					],
					ReadOnly: 
					[
						String
					],
					ControlArgs: 
					{
						String: {}
					},
					IndexSlot: String,
					Index: String
				}
			]
		}
	],
	ShowRelatedContactDocs: False,
	ShowRelatedAssetDocs: False,
	RequireAssetName: False,
	ShowRelatedTaskDocs: False,
	ClientBacklogSort: 
	[
		{
			Key: String,
			Label: String,
			Sort: String,
			Compare: String
		}
	],
	AutoAssignJobOnDriving: False,
	AutoAssignJobOnSite: False,
	AutoAssignJobOnComplete: False,
	AutoUnassignJobOnNotStarted: False,
	AutoScheduleJobOnDriving: False,
	AutoScheduleJobOnComplete: False,
	AutoScheduleJobOnSite: False,
	AutoUnscheduleJobOnNotStarted: False,
	AutoUpdateJobStartTimeOnSite: False,
	AutoUpdateJobEndTimeOnComplete: False,
	AutoAssignNewTasksTo: String,
	UseIntegrationEmail: False,
	UseTaskTarget: False,
	UseTaskDue: False,
	UseTaskPri: False,
	UseTaskAddr: False,
	TaskListDetails: String,
	AutocreateTaskStatusEvents: False,
	AutocreateTaskAssignmentEvents: False,
	FilterContactsByTeam: False,
	FilterUsersAndTeamsByTeam: False,
	AutoUpdateTaskContactChanged: False,
	AutoAssignTeamsOnTaskCreate: False,
	HtmlEmailIncludeTaskName: False,
	HtmlEmailIncludeUsers: False,
	HtmlEmailIncludeDateCreated: False,
	HtmlEmailIncludeDateLastUpdated: False,
	ClientStartupView: String,
	ClientAutoSyncInterval: 0,
	MobileTaskRangePast: 0,
	MobileTaskRangeFuture: 0,
	ClientShowScheduledTasks: False,
	ClientShowMyTasksOnly: False,
	ClientShowBacklogTasks: False,
	ClientHideCompleteTasks: False,
	ClientMapType: String,
	ClientGPSAccuracy: String,
	ClientShowTaskIconsOnMap: False,
	ClientMapLayerScheduledTasks: False,
	ClientMapLayerBacklog: False,
	ClientMapLayerAssets: False,
	ClientMapLayerContacts: False,
	ClientMapLayerTracks: False,
	ClientMapLayerStops: False,
	ClientMapLayerSpeeding: False,
	ClientMapStartLocation: String,
	SecurityDict: 
	{
		String: 0
	},
	ContactSearchResultExpression: String,
	LandscapePhotos: False,
	LogApiTraffic: False,
	UseDueDate: False,
	UsePriority: False,
	ScheduleTimeZones: 
	[
		String
	],
	UseTimezones: False,
	TaskListSummaryExpression1: String,
	TaskListSummaryExpression2: String,
	ShowScheduleButton: False,
	ShowScheduleGrid: False,
	ScheduleCustomFields: 
	[
		{
			Key: String,
			Label: String,
			IsActive: False,
			IsReadOnly: False,
			IsHidden: False,
			IsMandatory: False,
			DisplayOnMap: False,
			CustomFieldDataType: Text,
			Values: String,
			Prompt: String,
			Default: String,
			DefaultAutoUpdate: False,
			RequiredIf: String,
			Hidden: 
			[
				String
			],
			ReadOnly: 
			[
				String
			],
			ControlArgs: 
			{
				String: {}
			},
			IndexSlot: String,
			Index: String
		}
	],
	ScheduleGridConfig: 
	{
		Grid: 
		[
			{
				Binding: String,
				Heading: String,
				Width: 0
			}
		]
	},
	SaveOnPhoto: False,
	CleanseGeocodes: False,
	GeocodeQuality: String,
	RetainCustomerDatabase: String,
	RetainAssetDatabase: String,
	ShowDriveTimes: False,
	LocAccFilter: 0,
	AutoCreateRoutesFromAssignedTasks: False,
	TaskNameExpression: String,
	UseAddressCountry: False,
	MessageAppEnabled: False,
	GisLayers: 
	[
		String
	],
	AllowStatusDoubleClick: False,
	UseTimecard: False,
	TimecardCategories: 
	[
		String
	],
	UseLocalAdminUsers: False,
	UseInventory: False,
	ClientScheduledTaskSort: 0,
	LaborPricingHierarchy: 
	[
		String
	],
	UseLabor: False,
	LaborHourFormat: False,
	TfaEnabled: False,
	TaskNameExpressionAutoUpdate: False,
	AutocreateInitialTaskStatusEvent: False,
	InactivityTimer: 0,
	OfflineAuthTimer: 0,
	Sequences: 
	{
		String: 0
	},
	OverrideEmail: String,
	OverrideSms: String,
	PortalImageUrl: String,
	PortalImageId: String,
	SecureImageService: False,
	SuppressAssetTeamCascading: False,
	MilitaryTime: False,
	SecureHookService: False,
	ShowDashboard: False,
	DefaultBusinessHours: False,
	ForceSso: 
	{
		String: False
	},
	SuppressSsoAccountCreation: False,
	UseAdvancedScheduler: False,
	EnableUnsavedChangesPrompt: False,
	ReturnInactiveWorkspace: False,
	CustomerSupportEmail: String,
	CustomerSupportPhoneNumber: String,
	ShowColorCode: False
}