Trendsic Platform Service

<back to all web services

CourierTrackRatingRequest

The following routes are available for this service:
POST,OPTIONS/v1/dispatch/track/{Token}/rating
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 CourierTrackRatingRequest extends CourierTrackActRequest implements IConvertible
{
    int? Stars;
    List<String>? Tags = [];
    double? Tip;

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

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

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'Stars': Stars,
        'Tags': JsonConverters.toJson(Tags,'List<String>',context!),
        'Tip': Tip
    });

    getTypeName() => "CourierTrackRatingRequest";
    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>[]),
    'CourierTrackRatingRequest': TypeInfo(TypeOf.Class, create:() => CourierTrackRatingRequest()),
});

Dart CourierTrackRatingRequest 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 /v1/dispatch/track/{Token}/rating HTTP/1.1 
Host: api.dev.dynamics.trendsic.com 
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length

{
	Stars: 0,
	Tags: 
	[
		String
	],
	Tip: 0,
	Token: String,
	ActToken: String
}
HTTP/1.1 200 OK
Content-Type: text/jsv
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-01,
			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-01,
		LiveEta: False,
		Live: False,
		ServerUtc: 0001-01-01
	},
	Notice: String,
	ResponseStatus: 
	{
		ErrorCode: String,
		Message: String,
		StackTrace: String,
		Errors: 
		[
			{
				ErrorCode: String,
				FieldName: String,
				Message: String,
				Meta: 
				{
					String: String
				}
			}
		],
		Meta: 
		{
			String: String
		}
	}
}