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