| POST,OPTIONS | /v1/dispatch/courier/runs |
|---|
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 CourierItemView:
courier_item_i_d: int = 0
dispatch_od_request_i_d: int = 0
seq: int = 0
tag_code: Optional[str] = None
custody: Optional[str] = None
is_open: bool = False
is_missing: bool = False
missing_reason: Optional[str] = None
is_manual: bool = False
re_tag_flag: bool = False
scanned: bool = False
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CourierStopView:
sequence: int = 0
status: Optional[str] = None
dispatch_od_request_i_d: int = 0
code: Optional[str] = None
courier_step: Optional[str] = None
address: Optional[str] = None
unit: Optional[str] = None
city: Optional[str] = None
zip: Optional[str] = None
lat: Optional[Decimal] = None
lng: Optional[Decimal] = None
customer_name: Optional[str] = None
customer_phone: Optional[str] = None
handoff: Optional[str] = None
gate_code: Optional[str] = None
instructions: Optional[str] = None
units: int = 0
due_text: Optional[str] = None
note: Optional[str] = None
needs: List[str] = field(default_factory=list)
items: List[CourierItemView] = field(default_factory=list)
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CourierRunView:
courier_run_i_d: int = 0
code: Optional[str] = None
status: Optional[str] = None
courier_profile_id: int = 0
profile_name: Optional[str] = None
courier_facility_id: int = 0
facility_name: Optional[str] = None
facility_address: Optional[str] = None
driver_contact_id: Optional[int] = None
driver_name: Optional[str] = None
equipment_i_d: Optional[int] = None
vehicle_unit: Optional[str] = None
unit_one: Optional[str] = None
unit_many: Optional[str] = None
units: int = 0
stop_count: int = 0
stops_done: int = 0
pay: Optional[Decimal] = None
built_utc: Optional[datetime.datetime] = None
started_utc: Optional[datetime.datetime] = None
completed_utc: Optional[datetime.datetime] = None
to_load: int = 0
to_return: int = 0
stops: List[CourierStopView] = field(default_factory=list)
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CourierRunResponse:
runs: List[CourierRunView] = field(default_factory=list)
run: Optional[CourierRunView] = None
message: Optional[str] = None
response_status: Optional[ResponseStatus] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CourierRunBuildRequest:
profile_id: int = 0
facility_code: Optional[str] = None
codes: List[str] = field(default_factory=list)
driver_contact_id: Optional[int] = None
equipment_i_d: Optional[int] = None
Python CourierRunBuildRequest 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/courier/runs HTTP/1.1
Host: api.dev.dynamics.trendsic.com
Accept: text/jsonl
Content-Type: text/jsonl
Content-Length: length
{"ProfileId":0,"FacilityCode":"String","Codes":["String"],"DriverContactId":0,"EquipmentID":0}
HTTP/1.1 200 OK
Content-Type: text/jsonl
Content-Length: length
{"Runs":[{"CourierRunID":0,"Code":"String","Status":"String","CourierProfileId":0,"ProfileName":"String","CourierFacilityId":0,"FacilityName":"String","FacilityAddress":"String","DriverContactId":0,"DriverName":"String","EquipmentID":0,"VehicleUnit":"String","UnitOne":"String","UnitMany":"String","Units":0,"StopCount":0,"StopsDone":0,"Pay":0,"BuiltUtc":"0001-01-01T00:00:00.0000000","StartedUtc":"0001-01-01T00:00:00.0000000","CompletedUtc":"0001-01-01T00:00:00.0000000","ToLoad":0,"ToReturn":0,"Stops":[{"Sequence":0,"Status":"String","DispatchOdRequestID":0,"Code":"String","CourierStep":"String","Address":"String","Unit":"String","City":"String","Zip":"String","Lat":0,"Lng":0,"CustomerName":"String","CustomerPhone":"String","Handoff":"String","GateCode":"String","Instructions":"String","Units":0,"DueText":"String","Note":"String","Needs":["String"],"Items":[{"CourierItemID":0,"DispatchOdRequestID":0,"Seq":0,"TagCode":"String","Custody":"String","IsOpen":false,"IsMissing":false,"MissingReason":"String","IsManual":false,"ReTagFlag":false,"Scanned":false}]}]}],"Run":{"CourierRunID":0,"Code":"String","Status":"String","CourierProfileId":0,"ProfileName":"String","CourierFacilityId":0,"FacilityName":"String","FacilityAddress":"String","DriverContactId":0,"DriverName":"String","EquipmentID":0,"VehicleUnit":"String","UnitOne":"String","UnitMany":"String","Units":0,"StopCount":0,"StopsDone":0,"Pay":0,"BuiltUtc":"0001-01-01T00:00:00.0000000","StartedUtc":"0001-01-01T00:00:00.0000000","CompletedUtc":"0001-01-01T00:00:00.0000000","ToLoad":0,"ToReturn":0,"Stops":[{"Sequence":0,"Status":"String","DispatchOdRequestID":0,"Code":"String","CourierStep":"String","Address":"String","Unit":"String","City":"String","Zip":"String","Lat":0,"Lng":0,"CustomerName":"String","CustomerPhone":"String","Handoff":"String","GateCode":"String","Instructions":"String","Units":0,"DueText":"String","Note":"String","Needs":["String"],"Items":[{"CourierItemID":0,"DispatchOdRequestID":0,"Seq":0,"TagCode":"String","Custody":"String","IsOpen":false,"IsMissing":false,"MissingReason":"String","IsManual":false,"ReTagFlag":false,"Scanned":false}]}]},"Message":"String","ResponseStatus":{"ErrorCode":"String","Message":"String","StackTrace":"String","Errors":[{"ErrorCode":"String","FieldName":"String","Message":"String","Meta":{"String":"String"}}],"Meta":{"String":"String"}}}