| 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 .other suffix or ?format=other
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/jsonl
Content-Type: text/jsonl
Content-Length: length
{"Count":0,"Token":"String","ActToken":"String"}
HTTP/1.1 200 OK
Content-Type: text/jsonl
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"}}}