Trendsic Platform Service

<back to all web services

CourierStartNextRequest

Requires Authentication
The following routes are available for this service:
POST,OPTIONS/v1/worker/dispatch/od/queue/start-next
POST,OPTIONS/v1/worker/dispatch/od/{Code}/start
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 CourierVanView:
    state: Optional[str] = None
    leave_by_utc: Optional[datetime.datetime] = None
    leave_by_text: Optional[str] = None
    slack_min: Optional[int] = None
    in_van: int = 0
    committed: int = 0
    cap: Optional[Decimal] = None
    cap_unit: Optional[str] = None
    vehicle_unit: Optional[str] = None
    critical_code: Optional[str] = None
    drive_min: int = 0
    facility_name: Optional[str] = None
    send_note: Optional[str] = None


@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 CourierDriverOrder:
    code: Optional[str] = None
    courier_step: Optional[str] = None
    route_shape: Optional[str] = None
    profile_name: Optional[str] = None
    unit_one: Optional[str] = None
    unit_many: Optional[str] = None
    facility_noun: Optional[str] = None
    facility_name: Optional[str] = None
    level_name: Optional[str] = None
    due_utc: Optional[datetime.datetime] = None
    due_text: Optional[str] = None
    units: int = 0
    units_found: Optional[int] = None
    area: Optional[str] = None
    minutes: Optional[int] = None
    address: Optional[str] = None
    unit: Optional[str] = None
    city: 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
    dropoff_address: Optional[str] = None
    dropoff_contact_name: Optional[str] = None
    drop_lat: Optional[Decimal] = None
    drop_lng: Optional[Decimal] = None
    arrived_utc: Optional[datetime.datetime] = None
    tags: List[CourierItemView] = field(default_factory=list)
    proof: Dict[str, str] = field(default_factory=dict)
    photos: Dict[str, int] = field(default_factory=dict)
    needs: List[str] = field(default_factory=list)
    missed_wait_min: int = 0
    missed_require_contact: bool = False
    missed_require_photo: bool = False
    missed_fee: Decimal = decimal.Decimal(0)


@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 CourierDriverView:
    driver_code: Optional[str] = None
    name: Optional[str] = None
    online: bool = False
    on_roster: bool = False
    van: Optional[CourierVanView] = None
    current: Optional[CourierDriverOrder] = None
    queue: List[CourierDriverOrder] = field(default_factory=list)
    aboard: List[CourierDriverOrder] = field(default_factory=list)
    runs: List[CourierRunView] = field(default_factory=list)
    up_next: Optional[CourierDriverOrder] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CourierDriverResponse:
    courier: Optional[CourierDriverView] = None
    result: Optional[str] = None
    detail: Optional[str] = None
    message: Optional[str] = None
    response_status: Optional[ResponseStatus] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CourierStartNextRequest:
    code: Optional[str] = None

Python CourierStartNextRequest DTOs

To override the Content-type in your clients, use the HTTP Accept Header, append the .csv suffix or ?format=csv

HTTP + CSV

The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.

POST /v1/worker/dispatch/od/queue/start-next HTTP/1.1 
Host: api.dev.dynamics.trendsic.com 
Accept: text/csv
Content-Type: text/csv
Content-Length: length

{"Code":"String"}
HTTP/1.1 200 OK
Content-Type: text/csv
Content-Length: length

{"Courier":{"DriverCode":"String","Name":"String","Online":false,"OnRoster":false,"Van":{"State":"String","LeaveByUtc":"0001-01-01T00:00:00.0000000","LeaveByText":"String","SlackMin":0,"InVan":0,"Committed":0,"Cap":0,"CapUnit":"String","VehicleUnit":"String","CriticalCode":"String","DriveMin":0,"FacilityName":"String","SendNote":"String"},"Current":{"Code":"String","CourierStep":"String","RouteShape":"String","ProfileName":"String","UnitOne":"String","UnitMany":"String","FacilityNoun":"String","FacilityName":"String","LevelName":"String","DueUtc":"0001-01-01T00:00:00.0000000","DueText":"String","Units":0,"UnitsFound":0,"Area":"String","Minutes":0,"Address":"String","Unit":"String","City":"String","Lat":0,"Lng":0,"CustomerName":"String","CustomerPhone":"String","Handoff":"String","GateCode":"String","Instructions":"String","DropoffAddress":"String","DropoffContactName":"String","DropLat":0,"DropLng":0,"ArrivedUtc":"0001-01-01T00:00:00.0000000","Tags":[{"CourierItemID":0,"DispatchOdRequestID":0,"Seq":0,"TagCode":"String","Custody":"String","IsOpen":false,"IsMissing":false,"MissingReason":"String","IsManual":false,"ReTagFlag":false,"Scanned":false}],"Proof":{"String":"String"},"Photos":{"String":0},"Needs":["String"],"MissedWaitMin":0,"MissedRequireContact":false,"MissedRequirePhoto":false,"MissedFee":0},"Queue":[{"Code":"String","CourierStep":"String","RouteShape":"String","ProfileName":"String","UnitOne":"String","UnitMany":"String","FacilityNoun":"String","FacilityName":"String","LevelName":"String","DueUtc":"0001-01-01T00:00:00.0000000","DueText":"String","Units":0,"UnitsFound":0,"Area":"String","Minutes":0,"Address":"String","Unit":"String","City":"String","Lat":0,"Lng":0,"CustomerName":"String","CustomerPhone":"String","Handoff":"String","GateCode":"String","Instructions":"String","DropoffAddress":"String","DropoffContactName":"String","DropLat":0,"DropLng":0,"ArrivedUtc":"0001-01-01T00:00:00.0000000","Tags":[{"CourierItemID":0,"DispatchOdRequestID":0,"Seq":0,"TagCode":"String","Custody":"String","IsOpen":false,"IsMissing":false,"MissingReason":"String","IsManual":false,"ReTagFlag":false,"Scanned":false}],"Proof":{"String":"String"},"Photos":{"String":0},"Needs":["String"],"MissedWaitMin":0,"MissedRequireContact":false,"MissedRequirePhoto":false,"MissedFee":0}],"Aboard":[{"Code":"String","CourierStep":"String","RouteShape":"String","ProfileName":"String","UnitOne":"String","UnitMany":"String","FacilityNoun":"String","FacilityName":"String","LevelName":"String","DueUtc":"0001-01-01T00:00:00.0000000","DueText":"String","Units":0,"UnitsFound":0,"Area":"String","Minutes":0,"Address":"String","Unit":"String","City":"String","Lat":0,"Lng":0,"CustomerName":"String","CustomerPhone":"String","Handoff":"String","GateCode":"String","Instructions":"String","DropoffAddress":"String","DropoffContactName":"String","DropLat":0,"DropLng":0,"ArrivedUtc":"0001-01-01T00:00:00.0000000","Tags":[{"CourierItemID":0,"DispatchOdRequestID":0,"Seq":0,"TagCode":"String","Custody":"String","IsOpen":false,"IsMissing":false,"MissingReason":"String","IsManual":false,"ReTagFlag":false,"Scanned":false}],"Proof":{"String":"String"},"Photos":{"String":0},"Needs":["String"],"MissedWaitMin":0,"MissedRequireContact":false,"MissedRequirePhoto":false,"MissedFee":0}],"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}]}]}],"UpNext":{"Code":"String","CourierStep":"String","RouteShape":"String","ProfileName":"String","UnitOne":"String","UnitMany":"String","FacilityNoun":"String","FacilityName":"String","LevelName":"String","DueUtc":"0001-01-01T00:00:00.0000000","DueText":"String","Units":0,"UnitsFound":0,"Area":"String","Minutes":0,"Address":"String","Unit":"String","City":"String","Lat":0,"Lng":0,"CustomerName":"String","CustomerPhone":"String","Handoff":"String","GateCode":"String","Instructions":"String","DropoffAddress":"String","DropoffContactName":"String","DropLat":0,"DropLng":0,"ArrivedUtc":"0001-01-01T00:00:00.0000000","Tags":[{"CourierItemID":0,"DispatchOdRequestID":0,"Seq":0,"TagCode":"String","Custody":"String","IsOpen":false,"IsMissing":false,"MissingReason":"String","IsManual":false,"ReTagFlag":false,"Scanned":false}],"Proof":{"String":"String"},"Photos":{"String":0},"Needs":["String"],"MissedWaitMin":0,"MissedRequireContact":false,"MissedRequirePhoto":false,"MissedFee":0}},"Result":"String","Detail":"String","Message":"String","ResponseStatus":{"ErrorCode":"String","Message":"String","StackTrace":"String","Errors":[{"ErrorCode":"String","FieldName":"String","Message":"String","Meta":{"String":"String"}}],"Meta":{"String":"String"}}}