| POST,OPTIONS | /v1/dispatch/haul/log |
|---|
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 DispatchPackConfigView:
pack_id: Optional[str] = None
has_quotas: bool = False
is_inverted: bool = False
load_limit_mins: int = 0
ticket_source: Optional[str] = None
pay_basis: Optional[str] = None
day_boundary: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class DispatchHaulConfigView:
queue_max: int = 0
dump_bays: int = 0
slot_cap: int = 0
paused: bool = False
feed_rate: int = 0
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class DispatchOfflineWindowView:
offline_window_id: int = 0
from_hour: Optional[str] = None
to_hour: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class DispatchSiteView:
site_id: int = 0
supplier_id: int = 0
supplier_code: Optional[str] = None
name: Optional[str] = None
acres: int = 0
standing_volume: Decimal = decimal.Decimal(0)
sort_order: int = 0
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class DispatchSupplierView:
supplier_id: int = 0
code: Optional[str] = None
name: Optional[str] = None
region: Optional[str] = None
own_hauler: bool = False
season_allotment: Decimal = decimal.Decimal(0)
delivered: Decimal = decimal.Decimal(0)
week_cap: Decimal = decimal.Decimal(0)
week_delivered: Decimal = decimal.Decimal(0)
sort_order: int = 0
sites: List[DispatchSiteView] = field(default_factory=list)
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class DispatchTruckView:
truck_id: int = 0
code: Optional[str] = None
driver_name: Optional[str] = None
phone: Optional[str] = None
employer_code: Optional[str] = None
supplier_code: Optional[str] = None
site_name: Optional[str] = None
est_load: Decimal = decimal.Decimal(0)
stage: Optional[str] = None
stage_since: int = 0
cycle_start: Optional[int] = None
stage_mins_ago: int = 0
cycle_mins_ago: Optional[int] = None
slot: Optional[str] = None
loads_today: int = 0
net_today: Decimal = decimal.Decimal(0)
last_ping_mins: int = 0
cycle_mins: Optional[str] = None
is_interactive: bool = False
next_supplier_code: Optional[str] = None
next_site_name: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class DispatchSlotView:
slot_id: int = 0
hour: Optional[str] = None
base_booked: int = 0
sort_order: int = 0
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class DispatchTicketView:
ticket_id: int = 0
code: Optional[str] = None
truck_code: Optional[str] = None
supplier_code: Optional[str] = None
net_qty: Decimal = decimal.Decimal(0)
ticketed_at: datetime.datetime = datetime.datetime(1, 1, 1)
ticketed_min: int = 0
source: Optional[str] = None
mins_ago: int = 0
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class DispatchLogView:
log_id: int = 0
logged_at: datetime.datetime = datetime.datetime(1, 1, 1)
logged_min: int = 0
log_text: Optional[str] = None
kind: Optional[str] = None
mins_ago: int = 0
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class DispatchAutopilotView:
is_on: bool = False
rule_slot: bool = False
rule_route: bool = False
rule_release: bool = False
rule_tract: bool = False
rule_throttle: bool = False
rule_offline: bool = False
th_staged: int = 0
th_wait: int = 0
th_band: int = 0
th_stall: int = 0
th_feed: int = 0
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class DispatchExceptionView:
code: Optional[str] = None
kind: Optional[str] = None
severity: Optional[str] = None
truck_code: Optional[str] = None
supplier_code: Optional[str] = None
raised_at: datetime.datetime = datetime.datetime(1, 1, 1)
raised_label: Optional[str] = None
mins_ago: int = 0
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class DispatchFeedView:
feed_id: int = 0
entry_at: datetime.datetime = datetime.datetime(1, 1, 1)
entry_label: Optional[str] = None
channel: Optional[str] = None
kind: Optional[str] = None
truck_code: Optional[str] = None
supplier_code: Optional[str] = None
override_text: Optional[str] = None
mins_ago: int = 0
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class DispatchRigView:
rig_id: int = 0
code: Optional[str] = None
name: Optional[str] = None
driver_name: Optional[str] = None
phone: Optional[str] = None
rig_type: Optional[str] = None
is_free: bool = False
match_rank: int = 0
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class DispatchJobView:
job_id: int = 0
code: Optional[str] = None
cargo: Optional[str] = None
customer: Optional[str] = None
customer_phone: Optional[str] = None
hold_contact: Optional[str] = None
hold_phone: Optional[str] = None
from_loc: Optional[str] = None
to_loc: Optional[str] = None
miles: int = 0
window_text: Optional[str] = None
stage: Optional[str] = None
rate: Optional[Decimal] = None
required_rig: Optional[str] = None
driver_label: Optional[str] = None
eta_text: Optional[str] = None
offer_rig_ids: Optional[str] = None
offer_expires_min: Optional[int] = None
offer_expired: bool = False
declined: bool = False
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class DispatchOdDriverView:
driver_id: int = 0
code: Optional[str] = None
name: Optional[str] = None
zone: Optional[str] = None
phone: Optional[str] = None
status: Optional[str] = None
tier: Optional[str] = None
distance_mi: Decimal = decimal.Decimal(0)
capabilities: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class DispatchOdRequestView:
request_id: int = 0
code: Optional[str] = None
address: Optional[str] = None
zone: Optional[str] = None
bags: int = 0
stage: Optional[str] = None
driver_code: Optional[str] = None
needs: Optional[str] = None
note: Optional[str] = None
ping_expires_min: Optional[int] = None
tried_codes: Optional[str] = None
candidate_codes: Optional[str] = None
eta_text: Optional[str] = None
no_driver: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class DispatchPackView:
pack_id: Optional[str] = None
has_quotas: bool = False
is_inverted: bool = False
load_limit_mins: int = 0
day_boundary: Optional[str] = None
ticket_source: Optional[str] = None
pay_basis: Optional[str] = None
sort_order: int = 0
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class DispatchPackTermView:
pack_id: Optional[str] = None
lang: Optional[str] = None
mode_name: Optional[str] = None
facility: Optional[str] = None
facility_short: Optional[str] = None
source_site: Optional[str] = None
supplier: Optional[str] = None
supplier_plural: Optional[str] = None
unload_verb: Optional[str] = None
ticket_noun: Optional[str] = None
day_noun: Optional[str] = None
fleet_label: Optional[str] = None
page_subtitle: Optional[str] = None
season_chip: Optional[str] = None
campaign_noun: Optional[str] = None
bay_noun: Optional[str] = None
assign_target: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class DispatchPackUnitView:
pack_id: Optional[str] = None
unit: Optional[str] = None
load_qty: Decimal = decimal.Decimal(0)
volume_low: int = 0
volume_high: int = 0
season_multiple: Decimal = decimal.Decimal(0)
weekly_fraction: Decimal = decimal.Decimal(0)
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class DispatchBoardView:
pack: Optional[DispatchPackConfigView] = None
config: Optional[DispatchHaulConfigView] = None
offline_windows: List[DispatchOfflineWindowView] = field(default_factory=list)
suppliers: List[DispatchSupplierView] = field(default_factory=list)
trucks: List[DispatchTruckView] = field(default_factory=list)
slots: List[DispatchSlotView] = field(default_factory=list)
tickets: List[DispatchTicketView] = field(default_factory=list)
log: List[DispatchLogView] = field(default_factory=list)
autopilot: Optional[DispatchAutopilotView] = None
exceptions: List[DispatchExceptionView] = field(default_factory=list)
feed: List[DispatchFeedView] = field(default_factory=list)
rigs: List[DispatchRigView] = field(default_factory=list)
jobs: List[DispatchJobView] = field(default_factory=list)
od_drivers: List[DispatchOdDriverView] = field(default_factory=list)
od_requests: List[DispatchOdRequestView] = field(default_factory=list)
packs: List[DispatchPackView] = field(default_factory=list)
pack_terms: List[DispatchPackTermView] = field(default_factory=list)
pack_units: List[DispatchPackUnitView] = field(default_factory=list)
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class DispatchActionResponse:
board: Optional[DispatchBoardView] = None
message: Optional[str] = None
sent: int = 0
failed: int = 0
ticket_code: Optional[str] = None
ticket_net: Decimal = decimal.Decimal(0)
response_status: Optional[ResponseStatus] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class DispatchLogRequest:
log_text: Optional[str] = None
kind: Optional[str] = None
at_min: int = 0
Python DispatchLogRequest 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/haul/log HTTP/1.1
Host: api.dev.dynamics.trendsic.com
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length
{
LogText: String,
Kind: String,
AtMin: 0
}
HTTP/1.1 200 OK
Content-Type: text/jsv
Content-Length: length
{
Board:
{
Pack:
{
PackId: String,
HasQuotas: False,
IsInverted: False,
LoadLimitMins: 0,
TicketSource: String,
PayBasis: String,
DayBoundary: String
},
Config:
{
QueueMax: 0,
DumpBays: 0,
SlotCap: 0,
Paused: False,
FeedRate: 0
},
OfflineWindows:
[
{
OfflineWindowId: 0,
FromHour: String,
ToHour: String
}
],
Suppliers:
[
{
SupplierId: 0,
Code: String,
Name: String,
Region: String,
OwnHauler: False,
SeasonAllotment: 0,
Delivered: 0,
WeekCap: 0,
WeekDelivered: 0,
SortOrder: 0,
Sites:
[
{
SiteId: 0,
SupplierId: 0,
SupplierCode: String,
Name: String,
Acres: 0,
StandingVolume: 0,
SortOrder: 0
}
]
}
],
Trucks:
[
{
TruckId: 0,
Code: String,
DriverName: String,
Phone: String,
EmployerCode: String,
SupplierCode: String,
SiteName: String,
EstLoad: 0,
Stage: String,
StageSince: 0,
CycleStart: 0,
StageMinsAgo: 0,
CycleMinsAgo: 0,
Slot: String,
LoadsToday: 0,
NetToday: 0,
LastPingMins: 0,
CycleMins: String,
IsInteractive: False,
NextSupplierCode: String,
NextSiteName: String
}
],
Slots:
[
{
SlotId: 0,
Hour: String,
BaseBooked: 0,
SortOrder: 0
}
],
Tickets:
[
{
TicketId: 0,
Code: String,
TruckCode: String,
SupplierCode: String,
NetQty: 0,
TicketedAt: 0001-01-01,
TicketedMin: 0,
Source: String,
MinsAgo: 0
}
],
Log:
[
{
LogId: 0,
LoggedAt: 0001-01-01,
LoggedMin: 0,
LogText: String,
Kind: String,
MinsAgo: 0
}
],
Autopilot:
{
IsOn: False,
RuleSlot: False,
RuleRoute: False,
RuleRelease: False,
RuleTract: False,
RuleThrottle: False,
RuleOffline: False,
ThStaged: 0,
ThWait: 0,
ThBand: 0,
ThStall: 0,
ThFeed: 0
},
Exceptions:
[
{
Code: String,
Kind: String,
Severity: String,
TruckCode: String,
SupplierCode: String,
RaisedAt: 0001-01-01,
RaisedLabel: String,
MinsAgo: 0
}
],
Feed:
[
{
FeedId: 0,
EntryAt: 0001-01-01,
EntryLabel: String,
Channel: String,
Kind: String,
TruckCode: String,
SupplierCode: String,
OverrideText: String,
MinsAgo: 0
}
],
Rigs:
[
{
RigId: 0,
Code: String,
Name: String,
DriverName: String,
Phone: String,
RigType: String,
IsFree: False,
MatchRank: 0
}
],
Jobs:
[
{
JobId: 0,
Code: String,
Cargo: String,
Customer: String,
CustomerPhone: String,
HoldContact: String,
HoldPhone: String,
FromLoc: String,
ToLoc: String,
Miles: 0,
WindowText: String,
Stage: String,
Rate: 0,
RequiredRig: String,
DriverLabel: String,
EtaText: String,
OfferRigIds: String,
OfferExpiresMin: 0,
OfferExpired: False,
Declined: False
}
],
OdDrivers:
[
{
DriverId: 0,
Code: String,
Name: String,
Zone: String,
Phone: String,
Status: String,
Tier: String,
DistanceMi: 0,
Capabilities: String
}
],
OdRequests:
[
{
RequestId: 0,
Code: String,
Address: String,
Zone: String,
Bags: 0,
Stage: String,
DriverCode: String,
Needs: String,
Note: String,
PingExpiresMin: 0,
TriedCodes: String,
CandidateCodes: String,
EtaText: String,
NoDriver: String
}
],
Packs:
[
{
PackId: String,
HasQuotas: False,
IsInverted: False,
LoadLimitMins: 0,
DayBoundary: String,
TicketSource: String,
PayBasis: String,
SortOrder: 0
}
],
PackTerms:
[
{
PackId: String,
Lang: String,
ModeName: String,
Facility: String,
FacilityShort: String,
SourceSite: String,
Supplier: String,
SupplierPlural: String,
UnloadVerb: String,
TicketNoun: String,
DayNoun: String,
FleetLabel: String,
PageSubtitle: String,
SeasonChip: String,
CampaignNoun: String,
BayNoun: String,
AssignTarget: String
}
],
PackUnits:
[
{
PackId: String,
Unit: String,
LoadQty: 0,
VolumeLow: 0,
VolumeHigh: 0,
SeasonMultiple: 0,
WeeklyFraction: 0
}
]
},
Message: String,
Sent: 0,
Failed: 0,
TicketCode: String,
TicketNet: 0,
ResponseStatus:
{
ErrorCode: String,
Message: String,
StackTrace: String,
Errors:
[
{
ErrorCode: String,
FieldName: String,
Message: String,
Meta:
{
String: String
}
}
],
Meta:
{
String: String
}
}
}