Trendsic Platform Service

<back to all web services

CourierTrackMessageRequest

The following routes are available for this service:
POST,OPTIONS/v1/dispatch/track/{Token}/messages
import 'package:servicestack/servicestack.dart';

abstract class CourierTrackActRequest
{
    String? Token;
    String? ActToken;

    CourierTrackActRequest({this.Token,this.ActToken});
    CourierTrackActRequest.fromJson(Map<String, dynamic> json) { fromMap(json); }

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

    Map<String, dynamic> toJson() => {
        'Token': Token,
        'ActToken': ActToken
    };

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

class DispatchTrackStepView implements IConvertible
{
    String? Name;
    DateTime? At;
    bool? Done;
    bool? Current;

    DispatchTrackStepView({this.Name,this.At,this.Done,this.Current});
    DispatchTrackStepView.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Name = json['Name'];
        At = JsonConverters.fromJson(json['At'],'DateTime',context!);
        Done = json['Done'];
        Current = json['Current'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Name': Name,
        'At': JsonConverters.toJson(At,'DateTime',context!),
        'Done': Done,
        'Current': Current
    };

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

class CourierTrackBusiness implements IConvertible
{
    String? Name;
    String? Phone;

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

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

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

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

class CourierTrackDriver implements IConvertible
{
    String? FirstName;
    String? Initial;
    String? Vehicle;
    String? Plate;
    int? EtaMin;
    int? EtaPct;

    CourierTrackDriver({this.FirstName,this.Initial,this.Vehicle,this.Plate,this.EtaMin,this.EtaPct});
    CourierTrackDriver.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        FirstName = json['FirstName'];
        Initial = json['Initial'];
        Vehicle = json['Vehicle'];
        Plate = json['Plate'];
        EtaMin = json['EtaMin'];
        EtaPct = json['EtaPct'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'FirstName': FirstName,
        'Initial': Initial,
        'Vehicle': Vehicle,
        'Plate': Plate,
        'EtaMin': EtaMin,
        'EtaPct': EtaPct
    };

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

class CourierTrackProof implements IConvertible
{
    String? Kind;
    String? PhotoUrl;
    String? AtText;
    bool? GpsOk;
    int? Units;
    String? DamageNote;
    String? DeliveredTo;
    int? WaitedMin;
    int? Attempts;
    String? ContactedText;
    bool? EachTagged;
    bool? EachScanned;

    CourierTrackProof({this.Kind,this.PhotoUrl,this.AtText,this.GpsOk,this.Units,this.DamageNote,this.DeliveredTo,this.WaitedMin,this.Attempts,this.ContactedText,this.EachTagged,this.EachScanned});
    CourierTrackProof.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Kind = json['Kind'];
        PhotoUrl = json['PhotoUrl'];
        AtText = json['AtText'];
        GpsOk = json['GpsOk'];
        Units = json['Units'];
        DamageNote = json['DamageNote'];
        DeliveredTo = json['DeliveredTo'];
        WaitedMin = json['WaitedMin'];
        Attempts = json['Attempts'];
        ContactedText = json['ContactedText'];
        EachTagged = json['EachTagged'];
        EachScanned = json['EachScanned'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Kind': Kind,
        'PhotoUrl': PhotoUrl,
        'AtText': AtText,
        'GpsOk': GpsOk,
        'Units': Units,
        'DamageNote': DamageNote,
        'DeliveredTo': DeliveredTo,
        'WaitedMin': WaitedMin,
        'Attempts': Attempts,
        'ContactedText': ContactedText,
        'EachTagged': EachTagged,
        'EachScanned': EachScanned
    };

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

class CourierTrackRating implements IConvertible
{
    int? Stars;
    String? Tags;
    double? Tip;
    String? TipStatus;

    CourierTrackRating({this.Stars,this.Tags,this.Tip,this.TipStatus});
    CourierTrackRating.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Stars = json['Stars'];
        Tags = json['Tags'];
        Tip = JsonConverters.toDouble(json['Tip']);
        TipStatus = json['TipStatus'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Stars': Stars,
        'Tags': Tags,
        'Tip': Tip,
        'TipStatus': TipStatus
    };

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

class CourierTrackSlot implements IConvertible
{
    String? Id;
    String? Day;
    String? DayEs;
    String? Win;

    CourierTrackSlot({this.Id,this.Day,this.DayEs,this.Win});
    CourierTrackSlot.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Id = json['Id'];
        Day = json['Day'];
        DayEs = json['DayEs'];
        Win = json['Win'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Id': Id,
        'Day': Day,
        'DayEs': DayEs,
        'Win': Win
    };

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

class CourierTrackMissed implements IConvertible
{
    String? Code;
    double? Fee;
    int? WaitedMin;
    bool? AutoRebook;
    String? RebookWindowText;
    List<CourierTrackSlot>? Slots = [];

    CourierTrackMissed({this.Code,this.Fee,this.WaitedMin,this.AutoRebook,this.RebookWindowText,this.Slots});
    CourierTrackMissed.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Code = json['Code'];
        Fee = JsonConverters.toDouble(json['Fee']);
        WaitedMin = json['WaitedMin'];
        AutoRebook = json['AutoRebook'];
        RebookWindowText = json['RebookWindowText'];
        Slots = JsonConverters.fromJson(json['Slots'],'List<CourierTrackSlot>',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Code': Code,
        'Fee': Fee,
        'WaitedMin': WaitedMin,
        'AutoRebook': AutoRebook,
        'RebookWindowText': RebookWindowText,
        'Slots': JsonConverters.toJson(Slots,'List<CourierTrackSlot>',context!)
    };

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

class CourierTrackCan implements IConvertible
{
    bool? EditInstructions;
    bool? ChangeUnits;
    bool? Cancel;
    bool? RescheduleDelivery;
    bool? Rebook;
    bool? Rate;
    bool? Message;
    bool? Report;
    int? MaxUnits;

    CourierTrackCan({this.EditInstructions,this.ChangeUnits,this.Cancel,this.RescheduleDelivery,this.Rebook,this.Rate,this.Message,this.Report,this.MaxUnits});
    CourierTrackCan.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        EditInstructions = json['EditInstructions'];
        ChangeUnits = json['ChangeUnits'];
        Cancel = json['Cancel'];
        RescheduleDelivery = json['RescheduleDelivery'];
        Rebook = json['Rebook'];
        Rate = json['Rate'];
        Message = json['Message'];
        Report = json['Report'];
        MaxUnits = json['MaxUnits'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'EditInstructions': EditInstructions,
        'ChangeUnits': ChangeUnits,
        'Cancel': Cancel,
        'RescheduleDelivery': RescheduleDelivery,
        'Rebook': Rebook,
        'Rate': Rate,
        'Message': Message,
        'Report': Report,
        'MaxUnits': MaxUnits
    };

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

class CourierTrackMessage implements IConvertible
{
    String? Who;
    bool? Mine;
    bool? Office;
    String? AtText;
    String? Body;

    CourierTrackMessage({this.Who,this.Mine,this.Office,this.AtText,this.Body});
    CourierTrackMessage.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Who = json['Who'];
        Mine = json['Mine'];
        Office = json['Office'];
        AtText = json['AtText'];
        Body = json['Body'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Who': Who,
        'Mine': Mine,
        'Office': Office,
        'AtText': AtText,
        'Body': Body
    };

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

class CourierTrackView implements IConvertible
{
    String? State;
    String? Code;
    String? RunCode;
    String? Shape;
    String? Template;
    String? CourierStep;
    String? UnitOne;
    String? UnitMany;
    String? UnitOneEs;
    String? UnitManyEs;
    String? FacilityNoun;
    String? FacilityNounEs;
    int? Units;
    bool? UnitsCounted;
    String? Address;
    String? DropoffAddress;
    String? DropoffName;
    String? Instructions;
    String? GateCode;
    String? Handoff;
    String? LevelName;
    String? ReadyPromise;
    String? WindowText;
    bool? IsAsap;
    Map<String,String?>? Times = {};
    int? StopPosition;
    int? StopCount;
    String? DeliveryWindowText;
    CourierTrackDriver? Driver;
    CourierTrackProof? Proof;
    String? HandoffCode;
    CourierTrackRating? Rating;
    bool? TipAllowed;
    double? TipsPct;
    CourierTrackMissed? Missed;
    double? CancelFee;
    double? CancelFeeCharged;
    String? CancelledBy;
    String? BookUrl;
    CourierTrackCan? Can;
    List<CourierTrackSlot>? DeliverySlots = [];
    List<CourierTrackMessage>? Messages = [];
    bool? MessagesOpen;
    String? CaseCode;
    String? CaseStatus;
    String? CaseReply;
    int? ThreadHrs;
    DateTime? ExpiresUtc;
    bool? LiveEta;
    bool? Live;
    DateTime? ServerUtc;

    CourierTrackView({this.State,this.Code,this.RunCode,this.Shape,this.Template,this.CourierStep,this.UnitOne,this.UnitMany,this.UnitOneEs,this.UnitManyEs,this.FacilityNoun,this.FacilityNounEs,this.Units,this.UnitsCounted,this.Address,this.DropoffAddress,this.DropoffName,this.Instructions,this.GateCode,this.Handoff,this.LevelName,this.ReadyPromise,this.WindowText,this.IsAsap,this.Times,this.StopPosition,this.StopCount,this.DeliveryWindowText,this.Driver,this.Proof,this.HandoffCode,this.Rating,this.TipAllowed,this.TipsPct,this.Missed,this.CancelFee,this.CancelFeeCharged,this.CancelledBy,this.BookUrl,this.Can,this.DeliverySlots,this.Messages,this.MessagesOpen,this.CaseCode,this.CaseStatus,this.CaseReply,this.ThreadHrs,this.ExpiresUtc,this.LiveEta,this.Live,this.ServerUtc});
    CourierTrackView.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        State = json['State'];
        Code = json['Code'];
        RunCode = json['RunCode'];
        Shape = json['Shape'];
        Template = json['Template'];
        CourierStep = json['CourierStep'];
        UnitOne = json['UnitOne'];
        UnitMany = json['UnitMany'];
        UnitOneEs = json['UnitOneEs'];
        UnitManyEs = json['UnitManyEs'];
        FacilityNoun = json['FacilityNoun'];
        FacilityNounEs = json['FacilityNounEs'];
        Units = json['Units'];
        UnitsCounted = json['UnitsCounted'];
        Address = json['Address'];
        DropoffAddress = json['DropoffAddress'];
        DropoffName = json['DropoffName'];
        Instructions = json['Instructions'];
        GateCode = json['GateCode'];
        Handoff = json['Handoff'];
        LevelName = json['LevelName'];
        ReadyPromise = json['ReadyPromise'];
        WindowText = json['WindowText'];
        IsAsap = json['IsAsap'];
        Times = JsonConverters.toStringMap(json['Times']);
        StopPosition = json['StopPosition'];
        StopCount = json['StopCount'];
        DeliveryWindowText = json['DeliveryWindowText'];
        Driver = JsonConverters.fromJson(json['Driver'],'CourierTrackDriver',context!);
        Proof = JsonConverters.fromJson(json['Proof'],'CourierTrackProof',context!);
        HandoffCode = json['HandoffCode'];
        Rating = JsonConverters.fromJson(json['Rating'],'CourierTrackRating',context!);
        TipAllowed = json['TipAllowed'];
        TipsPct = JsonConverters.toDouble(json['TipsPct']);
        Missed = JsonConverters.fromJson(json['Missed'],'CourierTrackMissed',context!);
        CancelFee = JsonConverters.toDouble(json['CancelFee']);
        CancelFeeCharged = JsonConverters.toDouble(json['CancelFeeCharged']);
        CancelledBy = json['CancelledBy'];
        BookUrl = json['BookUrl'];
        Can = JsonConverters.fromJson(json['Can'],'CourierTrackCan',context!);
        DeliverySlots = JsonConverters.fromJson(json['DeliverySlots'],'List<CourierTrackSlot>',context!);
        Messages = JsonConverters.fromJson(json['Messages'],'List<CourierTrackMessage>',context!);
        MessagesOpen = json['MessagesOpen'];
        CaseCode = json['CaseCode'];
        CaseStatus = json['CaseStatus'];
        CaseReply = json['CaseReply'];
        ThreadHrs = json['ThreadHrs'];
        ExpiresUtc = JsonConverters.fromJson(json['ExpiresUtc'],'DateTime',context!);
        LiveEta = json['LiveEta'];
        Live = json['Live'];
        ServerUtc = JsonConverters.fromJson(json['ServerUtc'],'DateTime',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'State': State,
        'Code': Code,
        'RunCode': RunCode,
        'Shape': Shape,
        'Template': Template,
        'CourierStep': CourierStep,
        'UnitOne': UnitOne,
        'UnitMany': UnitMany,
        'UnitOneEs': UnitOneEs,
        'UnitManyEs': UnitManyEs,
        'FacilityNoun': FacilityNoun,
        'FacilityNounEs': FacilityNounEs,
        'Units': Units,
        'UnitsCounted': UnitsCounted,
        'Address': Address,
        'DropoffAddress': DropoffAddress,
        'DropoffName': DropoffName,
        'Instructions': Instructions,
        'GateCode': GateCode,
        'Handoff': Handoff,
        'LevelName': LevelName,
        'ReadyPromise': ReadyPromise,
        'WindowText': WindowText,
        'IsAsap': IsAsap,
        'Times': Times,
        'StopPosition': StopPosition,
        'StopCount': StopCount,
        'DeliveryWindowText': DeliveryWindowText,
        'Driver': JsonConverters.toJson(Driver,'CourierTrackDriver',context!),
        'Proof': JsonConverters.toJson(Proof,'CourierTrackProof',context!),
        'HandoffCode': HandoffCode,
        'Rating': JsonConverters.toJson(Rating,'CourierTrackRating',context!),
        'TipAllowed': TipAllowed,
        'TipsPct': TipsPct,
        'Missed': JsonConverters.toJson(Missed,'CourierTrackMissed',context!),
        'CancelFee': CancelFee,
        'CancelFeeCharged': CancelFeeCharged,
        'CancelledBy': CancelledBy,
        'BookUrl': BookUrl,
        'Can': JsonConverters.toJson(Can,'CourierTrackCan',context!),
        'DeliverySlots': JsonConverters.toJson(DeliverySlots,'List<CourierTrackSlot>',context!),
        'Messages': JsonConverters.toJson(Messages,'List<CourierTrackMessage>',context!),
        'MessagesOpen': MessagesOpen,
        'CaseCode': CaseCode,
        'CaseStatus': CaseStatus,
        'CaseReply': CaseReply,
        'ThreadHrs': ThreadHrs,
        'ExpiresUtc': JsonConverters.toJson(ExpiresUtc,'DateTime',context!),
        'LiveEta': LiveEta,
        'Live': Live,
        'ServerUtc': JsonConverters.toJson(ServerUtc,'DateTime',context!)
    };

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

class DispatchTrackResponse implements IConvertible
{
    String? Kind;
    String? Code;
    String? What;
    String? FromLoc;
    String? ToLoc;
    int? Bags;
    double? Fare;
    String? PayMode;
    String? CardLast4;
    bool? Charged;
    String? Stage;
    String? Headline;
    String? Sub;
    bool? IsClosed;
    String? Eta;
    String? DriverName;
    String? CustomerName;
    List<DispatchTrackStepView>? Steps = [];
    bool? Expired;
    bool? Invalid;
    CourierTrackBusiness? Business;
    CourierTrackView? Courier;
    String? Notice;
    ResponseStatus? ResponseStatus;

    DispatchTrackResponse({this.Kind,this.Code,this.What,this.FromLoc,this.ToLoc,this.Bags,this.Fare,this.PayMode,this.CardLast4,this.Charged,this.Stage,this.Headline,this.Sub,this.IsClosed,this.Eta,this.DriverName,this.CustomerName,this.Steps,this.Expired,this.Invalid,this.Business,this.Courier,this.Notice,this.ResponseStatus});
    DispatchTrackResponse.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Kind = json['Kind'];
        Code = json['Code'];
        What = json['What'];
        FromLoc = json['FromLoc'];
        ToLoc = json['ToLoc'];
        Bags = json['Bags'];
        Fare = JsonConverters.toDouble(json['Fare']);
        PayMode = json['PayMode'];
        CardLast4 = json['CardLast4'];
        Charged = json['Charged'];
        Stage = json['Stage'];
        Headline = json['Headline'];
        Sub = json['Sub'];
        IsClosed = json['IsClosed'];
        Eta = json['Eta'];
        DriverName = json['DriverName'];
        CustomerName = json['CustomerName'];
        Steps = JsonConverters.fromJson(json['Steps'],'List<DispatchTrackStepView>',context!);
        Expired = json['Expired'];
        Invalid = json['Invalid'];
        Business = JsonConverters.fromJson(json['Business'],'CourierTrackBusiness',context!);
        Courier = JsonConverters.fromJson(json['Courier'],'CourierTrackView',context!);
        Notice = json['Notice'];
        ResponseStatus = JsonConverters.fromJson(json['ResponseStatus'],'ResponseStatus',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Kind': Kind,
        'Code': Code,
        'What': What,
        'FromLoc': FromLoc,
        'ToLoc': ToLoc,
        'Bags': Bags,
        'Fare': Fare,
        'PayMode': PayMode,
        'CardLast4': CardLast4,
        'Charged': Charged,
        'Stage': Stage,
        'Headline': Headline,
        'Sub': Sub,
        'IsClosed': IsClosed,
        'Eta': Eta,
        'DriverName': DriverName,
        'CustomerName': CustomerName,
        'Steps': JsonConverters.toJson(Steps,'List<DispatchTrackStepView>',context!),
        'Expired': Expired,
        'Invalid': Invalid,
        'Business': JsonConverters.toJson(Business,'CourierTrackBusiness',context!),
        'Courier': JsonConverters.toJson(Courier,'CourierTrackView',context!),
        'Notice': Notice,
        'ResponseStatus': JsonConverters.toJson(ResponseStatus,'ResponseStatus',context!)
    };

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

class CourierTrackMessageRequest extends CourierTrackActRequest implements IConvertible
{
    String? Text;

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

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        Text = json['Text'];
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'Text': Text
    });

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

TypeContext _ctx = TypeContext(library: 'api.dev.dynamics.trendsic.com', types: <String, TypeInfo> {
    'CourierTrackActRequest': TypeInfo(TypeOf.AbstractClass),
    'DispatchTrackStepView': TypeInfo(TypeOf.Class, create:() => DispatchTrackStepView()),
    'CourierTrackBusiness': TypeInfo(TypeOf.Class, create:() => CourierTrackBusiness()),
    'CourierTrackDriver': TypeInfo(TypeOf.Class, create:() => CourierTrackDriver()),
    'CourierTrackProof': TypeInfo(TypeOf.Class, create:() => CourierTrackProof()),
    'CourierTrackRating': TypeInfo(TypeOf.Class, create:() => CourierTrackRating()),
    'CourierTrackSlot': TypeInfo(TypeOf.Class, create:() => CourierTrackSlot()),
    'CourierTrackMissed': TypeInfo(TypeOf.Class, create:() => CourierTrackMissed()),
    'List<CourierTrackSlot>': TypeInfo(TypeOf.Class, create:() => <CourierTrackSlot>[]),
    'CourierTrackCan': TypeInfo(TypeOf.Class, create:() => CourierTrackCan()),
    'CourierTrackMessage': TypeInfo(TypeOf.Class, create:() => CourierTrackMessage()),
    'CourierTrackView': TypeInfo(TypeOf.Class, create:() => CourierTrackView()),
    'List<CourierTrackMessage>': TypeInfo(TypeOf.Class, create:() => <CourierTrackMessage>[]),
    'DispatchTrackResponse': TypeInfo(TypeOf.Class, create:() => DispatchTrackResponse()),
    'List<DispatchTrackStepView>': TypeInfo(TypeOf.Class, create:() => <DispatchTrackStepView>[]),
    'CourierTrackMessageRequest': TypeInfo(TypeOf.Class, create:() => CourierTrackMessageRequest()),
});

Dart CourierTrackMessageRequest DTOs

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

HTTP + CSV

The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.

POST /v1/dispatch/track/{Token}/messages HTTP/1.1 
Host: api.dev.dynamics.trendsic.com 
Accept: text/csv
Content-Type: text/csv
Content-Length: length

{"Text":"String","Token":"String","ActToken":"String"}
HTTP/1.1 200 OK
Content-Type: text/csv
Content-Length: length

{"Kind":"String","Code":"String","What":"String","FromLoc":"String","ToLoc":"String","Bags":0,"Fare":0,"PayMode":"String","CardLast4":"String","Charged":false,"Stage":"String","Headline":"String","Sub":"String","IsClosed":false,"Eta":"String","DriverName":"String","CustomerName":"String","Steps":[{"Name":"String","At":"0001-01-01T00:00:00.0000000","Done":false,"Current":false}],"Expired":false,"Invalid":false,"Business":{"Name":"String","Phone":"String"},"Courier":{"State":"String","Code":"String","RunCode":"String","Shape":"String","Template":"String","CourierStep":"String","UnitOne":"String","UnitMany":"String","UnitOneEs":"String","UnitManyEs":"String","FacilityNoun":"String","FacilityNounEs":"String","Units":0,"UnitsCounted":false,"Address":"String","DropoffAddress":"String","DropoffName":"String","Instructions":"String","GateCode":"String","Handoff":"String","LevelName":"String","ReadyPromise":"String","WindowText":"String","IsAsap":false,"Times":{"String":"String"},"StopPosition":0,"StopCount":0,"DeliveryWindowText":"String","Driver":{"FirstName":"String","Initial":"String","Vehicle":"String","Plate":"String","EtaMin":0,"EtaPct":0},"Proof":{"Kind":"String","PhotoUrl":"String","AtText":"String","GpsOk":false,"Units":0,"DamageNote":"String","DeliveredTo":"String","WaitedMin":0,"Attempts":0,"ContactedText":"String","EachTagged":false,"EachScanned":false},"HandoffCode":"String","Rating":{"Stars":0,"Tags":"String","Tip":0,"TipStatus":"String"},"TipAllowed":false,"TipsPct":0,"Missed":{"Code":"String","Fee":0,"WaitedMin":0,"AutoRebook":false,"RebookWindowText":"String","Slots":[{"Id":"String","Day":"String","DayEs":"String","Win":"String"}]},"CancelFee":0,"CancelFeeCharged":0,"CancelledBy":"String","BookUrl":"String","Can":{"EditInstructions":false,"ChangeUnits":false,"Cancel":false,"RescheduleDelivery":false,"Rebook":false,"Rate":false,"Message":false,"Report":false,"MaxUnits":0},"DeliverySlots":[{"Id":"String","Day":"String","DayEs":"String","Win":"String"}],"Messages":[{"Who":"String","Mine":false,"Office":false,"AtText":"String","Body":"String"}],"MessagesOpen":false,"CaseCode":"String","CaseStatus":"String","CaseReply":"String","ThreadHrs":0,"ExpiresUtc":"0001-01-01T00:00:00.0000000","LiveEta":false,"Live":false,"ServerUtc":"0001-01-01T00:00:00.0000000"},"Notice":"String","ResponseStatus":{"ErrorCode":"String","Message":"String","StackTrace":"String","Errors":[{"ErrorCode":"String","FieldName":"String","Message":"String","Meta":{"String":"String"}}],"Meta":{"String":"String"}}}