Trendsic Platform Service

<back to all web services

CourierTrackUnitsRequest

The following routes are available for this service:
POST,OPTIONS/v1/dispatch/track/{Token}/units
import Foundation
import ServiceStack

public class CourierTrackUnitsRequest : CourierTrackActRequest
{
    public var count:Int

    required public init(){ super.init() }

    private enum CodingKeys : String, CodingKey {
        case count
    }

    required public init(from decoder: Decoder) throws {
        try super.init(from: decoder)
        let container = try decoder.container(keyedBy: CodingKeys.self)
        count = try container.decodeIfPresent(Int.self, forKey: .count)
    }

    public override func encode(to encoder: Encoder) throws {
        try super.encode(to: encoder)
        var container = encoder.container(keyedBy: CodingKeys.self)
        if count != nil { try container.encode(count, forKey: .count) }
    }
}

public class CourierTrackActRequest : Codable
{
    public var token:String
    public var actToken:String

    required public init(){}
}

public class DispatchTrackResponse : Codable
{
    public var kind:String
    public var code:String
    public var what:String
    public var fromLoc:String
    public var toLoc:String
    public var bags:Int?
    public var fare:Double?
    public var payMode:String
    public var cardLast4:String
    public var charged:Bool
    public var stage:String
    public var headline:String
    public var sub:String
    public var isClosed:Bool
    public var eta:String
    public var driverName:String
    public var customerName:String
    public var steps:[DispatchTrackStepView] = []
    public var expired:Bool
    public var invalid:Bool
    public var business:CourierTrackBusiness
    public var courier:CourierTrackView
    public var notice:String
    public var responseStatus:ResponseStatus

    required public init(){}
}

public class DispatchTrackStepView : Codable
{
    public var name:String
    public var at:Date?
    public var done:Bool
    public var current:Bool

    required public init(){}
}

public class CourierTrackBusiness : Codable
{
    public var name:String
    public var phone:String

    required public init(){}
}

public class CourierTrackView : Codable
{
    public var state:String
    public var code:String
    public var runCode:String
    public var shape:String
    public var template:String
    public var courierStep:String
    public var unitOne:String
    public var unitMany:String
    public var unitOneEs:String
    public var unitManyEs:String
    public var facilityNoun:String
    public var facilityNounEs:String
    public var units:Int
    public var unitsCounted:Bool
    public var address:String
    public var dropoffAddress:String
    public var dropoffName:String
    public var instructions:String
    public var gateCode:String
    public var handoff:String
    public var levelName:String
    public var readyPromise:String
    public var windowText:String
    public var isAsap:Bool
    public var times:[String:String] = [:]
    public var stopPosition:Int?
    public var stopCount:Int?
    public var deliveryWindowText:String
    public var driver:CourierTrackDriver
    public var proof:CourierTrackProof
    public var handoffCode:String
    public var rating:CourierTrackRating
    public var tipAllowed:Bool
    public var tipsPct:Double
    public var missed:CourierTrackMissed
    public var cancelFee:Double
    public var cancelFeeCharged:Double
    public var cancelledBy:String
    public var bookUrl:String
    public var can:CourierTrackCan
    public var deliverySlots:[CourierTrackSlot] = []
    public var messages:[CourierTrackMessage] = []
    public var messagesOpen:Bool
    public var caseCode:String
    public var caseStatus:String
    public var caseReply:String
    public var threadHrs:Int
    public var expiresUtc:Date?
    public var liveEta:Bool
    public var live:Bool
    public var serverUtc:Date

    required public init(){}
}

public class CourierTrackDriver : Codable
{
    public var firstName:String
    public var initial:String
    public var vehicle:String
    public var plate:String
    public var etaMin:Int?
    public var etaPct:Int?

    required public init(){}
}

public class CourierTrackProof : Codable
{
    public var kind:String
    public var photoUrl:String
    public var atText:String
    public var gpsOk:Bool
    public var units:Int
    public var damageNote:String
    public var deliveredTo:String
    public var waitedMin:Int
    public var attempts:Int
    public var contactedText:String
    public var eachTagged:Bool
    public var eachScanned:Bool

    required public init(){}
}

public class CourierTrackRating : Codable
{
    public var stars:Int
    public var tags:String
    public var tip:Double
    public var tipStatus:String

    required public init(){}
}

public class CourierTrackMissed : Codable
{
    public var code:String
    public var fee:Double
    public var waitedMin:Int
    public var autoRebook:Bool
    public var rebookWindowText:String
    public var slots:[CourierTrackSlot] = []

    required public init(){}
}

public class CourierTrackSlot : Codable
{
    public var id:String
    public var day:String
    public var dayEs:String
    public var win:String

    required public init(){}
}

public class CourierTrackCan : Codable
{
    public var editInstructions:Bool
    public var changeUnits:Bool
    public var cancel:Bool
    public var rescheduleDelivery:Bool
    public var rebook:Bool
    public var rate:Bool
    public var message:Bool
    public var report:Bool
    public var maxUnits:Int

    required public init(){}
}

public class CourierTrackMessage : Codable
{
    public var who:String
    public var mine:Bool
    public var office:Bool
    public var atText:String
    public var body:String

    required public init(){}
}


Swift CourierTrackUnitsRequest 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}/units HTTP/1.1 
Host: api.dev.dynamics.trendsic.com 
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length

{
	Count: 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
		}
	}
}