| POST,OPTIONS | /v1/dispatch/track/{Token}/units |
|---|
import datetime
import decimal
from marshmallow.fields import *
from servicestack import *
from typing import *
from dataclasses import dataclass, field
from dataclasses_json import dataclass_json, LetterCase, Undefined, config
from enum import Enum, IntEnum
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CourierTrackActRequest(IReturn[DispatchTrackResponse]):
token: Optional[str] = None
act_token: Optional[str] = None
@staticmethod
def response_type(): return DispatchTrackResponse
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class DispatchTrackStepView:
name: Optional[str] = None
at: Optional[datetime.datetime] = None
done: bool = False
current: bool = False
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CourierTrackBusiness:
name: Optional[str] = None
phone: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CourierTrackDriver:
first_name: Optional[str] = None
initial: Optional[str] = None
vehicle: Optional[str] = None
plate: Optional[str] = None
eta_min: Optional[int] = None
eta_pct: Optional[int] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CourierTrackProof:
kind: Optional[str] = None
photo_url: Optional[str] = None
at_text: Optional[str] = None
gps_ok: bool = False
units: int = 0
damage_note: Optional[str] = None
delivered_to: Optional[str] = None
waited_min: int = 0
attempts: int = 0
contacted_text: Optional[str] = None
each_tagged: bool = False
each_scanned: bool = False
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CourierTrackRating:
stars: int = 0
tags: Optional[str] = None
tip: Decimal = decimal.Decimal(0)
tip_status: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CourierTrackSlot:
id: Optional[str] = None
day: Optional[str] = None
day_es: Optional[str] = None
win: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CourierTrackMissed:
code: Optional[str] = None
fee: Decimal = decimal.Decimal(0)
waited_min: int = 0
auto_rebook: bool = False
rebook_window_text: Optional[str] = None
slots: List[CourierTrackSlot] = field(default_factory=list)
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CourierTrackCan:
edit_instructions: bool = False
change_units: bool = False
cancel: bool = False
reschedule_delivery: bool = False
rebook: bool = False
rate: bool = False
message: bool = False
report: bool = False
max_units: int = 0
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CourierTrackMessage:
who: Optional[str] = None
mine: bool = False
office: bool = False
at_text: Optional[str] = None
body: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CourierTrackView:
state: Optional[str] = None
code: Optional[str] = None
run_code: Optional[str] = None
shape: Optional[str] = None
template: Optional[str] = None
courier_step: Optional[str] = None
unit_one: Optional[str] = None
unit_many: Optional[str] = None
unit_one_es: Optional[str] = None
unit_many_es: Optional[str] = None
facility_noun: Optional[str] = None
facility_noun_es: Optional[str] = None
units: int = 0
units_counted: bool = False
address: Optional[str] = None
dropoff_address: Optional[str] = None
dropoff_name: Optional[str] = None
instructions: Optional[str] = None
gate_code: Optional[str] = None
handoff: Optional[str] = None
level_name: Optional[str] = None
ready_promise: Optional[str] = None
window_text: Optional[str] = None
is_asap: bool = False
times: Dict[str, str] = field(default_factory=dict)
stop_position: Optional[int] = None
stop_count: Optional[int] = None
delivery_window_text: Optional[str] = None
driver: Optional[CourierTrackDriver] = None
proof: Optional[CourierTrackProof] = None
handoff_code: Optional[str] = None
rating: Optional[CourierTrackRating] = None
tip_allowed: bool = False
tips_pct: Decimal = decimal.Decimal(0)
missed: Optional[CourierTrackMissed] = None
cancel_fee: Decimal = decimal.Decimal(0)
cancel_fee_charged: Decimal = decimal.Decimal(0)
cancelled_by: Optional[str] = None
book_url: Optional[str] = None
can: Optional[CourierTrackCan] = None
delivery_slots: List[CourierTrackSlot] = field(default_factory=list)
messages: List[CourierTrackMessage] = field(default_factory=list)
messages_open: bool = False
case_code: Optional[str] = None
case_status: Optional[str] = None
case_reply: Optional[str] = None
thread_hrs: int = 0
expires_utc: Optional[datetime.datetime] = None
live_eta: bool = False
live: bool = False
server_utc: datetime.datetime = datetime.datetime(1, 1, 1)
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class DispatchTrackResponse:
kind: Optional[str] = None
code: Optional[str] = None
what: Optional[str] = None
from_loc: Optional[str] = None
to_loc: Optional[str] = None
bags: Optional[int] = None
fare: Optional[Decimal] = None
pay_mode: Optional[str] = None
card_last4: Optional[str] = None
charged: bool = False
stage: Optional[str] = None
headline: Optional[str] = None
sub: Optional[str] = None
is_closed: bool = False
eta: Optional[str] = None
driver_name: Optional[str] = None
customer_name: Optional[str] = None
steps: List[DispatchTrackStepView] = field(default_factory=list)
expired: bool = False
invalid: bool = False
business: Optional[CourierTrackBusiness] = None
courier: Optional[CourierTrackView] = None
notice: Optional[str] = None
response_status: Optional[ResponseStatus] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CourierTrackUnitsRequest(CourierTrackActRequest):
count: int = 0
Python 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
}
}
}