| GET,OPTIONS | /v1/dispatch/courier/profiles/{Id}/fleet |
|---|
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 CourierProfileSummary:
courier_profile_i_d: int = 0
code: Optional[str] = None
name: Optional[str] = None
business_name: Optional[str] = None
route_shape: Optional[str] = None
enabled: bool = False
template_from: Optional[str] = None
drivers: int = 0
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CourierTemplateOption:
key: Optional[str] = None
label: Optional[str] = None
detail: Optional[str] = None
route_shape: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CourierPay:
worker_class: Optional[str] = None
per_pickup: Decimal = decimal.Decimal(0)
per_stop: Decimal = decimal.Decimal(0)
per_missed: Decimal = decimal.Decimal(0)
per_cancel: Decimal = decimal.Decimal(0)
wait_after_min: int = 0
wait_per_min: Decimal = decimal.Decimal(0)
mileage_on: bool = False
per_mile: Decimal = decimal.Decimal(0)
min_per_job: Decimal = decimal.Decimal(0)
tips_pct: Decimal = decimal.Decimal(0)
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CourierDispatch:
ping_secs: int = 0
radius_mi: Decimal = decimal.Decimal(0)
decline_penalty: bool = False
next_rule: Optional[str] = None
go_min: int = 0
last_min: int = 0
near_full: int = 0
margin_min: int = 0
traffic_source: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CourierMissed:
wait_min: int = 0
fee: Decimal = decimal.Decimal(0)
cancel_fee: Decimal = decimal.Decimal(0)
auto_rebook: bool = False
require_contact: bool = False
require_photo: bool = False
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CourierPrivacy:
thread_hrs: int = 0
photo_days: int = 0
lock_names: Optional[str] = None
hide_addr: bool = False
live_eta: bool = False
tipping: bool = False
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CourierPricing:
base: Decimal = decimal.Decimal(0)
per_unit: Decimal = decimal.Decimal(0)
per_mile: Decimal = decimal.Decimal(0)
min_order: Decimal = decimal.Decimal(0)
tax_pct: Decimal = decimal.Decimal(0)
final_after_count: bool = False
service_area: List[str] = field(default_factory=list)
window_min: int = 0
surcharges: Dict[str, Decimal] = field(default_factory=dict)
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CourierBooking:
on: bool = False
slug: Optional[str] = None
asap: bool = False
min_lead_min: int = 0
open: Optional[str] = None
close: Optional[str] = None
drive_buffer_min: int = 0
zips: List[str] = field(default_factory=list)
recurring: bool = False
pay_timing: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CourierLevelView:
code: Optional[str] = None
name: Optional[str] = None
in_by: Optional[str] = None
within_min: int = 0
ready: Optional[str] = None
days: List[int] = field(default_factory=list)
is_on: bool = False
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CourierFacilityView:
code: Optional[str] = None
name: Optional[str] = None
address: Optional[str] = None
intake_min: int = 0
levels: List[CourierLevelView] = field(default_factory=list)
holidays: List[str] = field(default_factory=list)
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CourierVehicleView:
equipment_i_d: int = 0
unit_number: Optional[str] = None
name: Optional[str] = None
unit: Optional[str] = None
cap: Decimal = decimal.Decimal(0)
cold: bool = False
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CourierProfileContext:
drivers: int = 0
profile_count: int = 0
pay_plan_id: Optional[int] = None
zone_mode: Optional[str] = None
zone_name: Optional[str] = None
zone_count: int = 0
has_booking_page: bool = False
has_rate_config: bool = False
vehicle_facts: Dict[str, str] = field(default_factory=dict)
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CourierProfileView:
courier_profile_i_d: int = 0
code: Optional[str] = None
name: Optional[str] = None
business_name: Optional[str] = None
route_shape: Optional[str] = None
enabled: bool = False
template_from: Optional[str] = None
unit_one: Optional[str] = None
unit_many: Optional[str] = None
facility_noun: Optional[str] = None
unit_one_es: Optional[str] = None
unit_many_es: Optional[str] = None
facility_noun_es: Optional[str] = None
tag_mode: Optional[str] = None
tag_formats: List[str] = field(default_factory=list)
pay: Optional[CourierPay] = None
dispatch: Optional[CourierDispatch] = None
missed: Optional[CourierMissed] = None
privacy: Optional[CourierPrivacy] = None
pricing: Optional[CourierPricing] = None
booking: Optional[CourierBooking] = None
facilities: List[CourierFacilityView] = field(default_factory=list)
vehicles: List[CourierVehicleView] = field(default_factory=list)
proof: Dict[str, Dict[str, str]] = field(default_factory=dict)
context: Optional[CourierProfileContext] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CourierIssue:
key: Optional[str] = None
section: Optional[str] = None
message: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CourierChange:
key: Optional[str] = None
section: Optional[str] = None
label: Optional[str] = None
from_: Optional[str] = field(metadata=config(field_name='from'), default=None)
to: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CourierPreviewLine:
k: Optional[str] = None
v: Optional[str] = None
dot: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CourierPreview:
deadline_title: Optional[str] = None
deadline_lead: Optional[str] = None
room_w: Optional[str] = None
last_w: Optional[str] = None
go_w: Optional[str] = None
zones: List[CourierPreviewLine] = field(default_factory=list)
pay_sub: Optional[str] = None
pay_rows: List[CourierPreviewLine] = field(default_factory=list)
pay_total: Optional[str] = None
proof_rows: List[CourierPreviewLine] = field(default_factory=list)
ping: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CourierFleetVehicle:
equipment_i_d: int = 0
unit_number: Optional[str] = None
name: Optional[str] = None
vehicle_type: Optional[str] = None
unit: Optional[str] = None
cap: Optional[Decimal] = None
cold: bool = False
status: Optional[str] = None
assigned: bool = False
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CourierResponse:
profiles: List[CourierProfileSummary] = field(default_factory=list)
templates: List[CourierTemplateOption] = field(default_factory=list)
profile: Optional[CourierProfileView] = None
issues: List[CourierIssue] = field(default_factory=list)
changes: List[CourierChange] = field(default_factory=list)
preview: Optional[CourierPreview] = None
fleet: List[CourierFleetVehicle] = field(default_factory=list)
response_status: Optional[ResponseStatus] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CourierFleetRequest:
id: int = 0
Python CourierFleetRequest 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.
GET /v1/dispatch/courier/profiles/{Id}/fleet HTTP/1.1
Host: api.dev.dynamics.trendsic.com
Accept: text/jsv
HTTP/1.1 200 OK
Content-Type: text/jsv
Content-Length: length
{
Profiles:
[
{
CourierProfileID: 0,
Code: String,
Name: String,
BusinessName: String,
RouteShape: String,
Enabled: False,
TemplateFrom: String,
Drivers: 0
}
],
Templates:
[
{
Key: String,
Label: String,
Detail: String,
RouteShape: String
}
],
Profile:
{
CourierProfileID: 0,
Code: String,
Name: String,
BusinessName: String,
RouteShape: String,
Enabled: False,
TemplateFrom: String,
UnitOne: String,
UnitMany: String,
FacilityNoun: String,
UnitOneEs: String,
UnitManyEs: String,
FacilityNounEs: String,
TagMode: String,
TagFormats:
[
String
],
Pay:
{
WorkerClass: String,
PerPickup: 0,
PerStop: 0,
PerMissed: 0,
PerCancel: 0,
WaitAfterMin: 0,
WaitPerMin: 0,
MileageOn: False,
PerMile: 0,
MinPerJob: 0,
TipsPct: 0
},
Dispatch:
{
PingSecs: 0,
RadiusMi: 0,
DeclinePenalty: False,
NextRule: String,
GoMin: 0,
LastMin: 0,
NearFull: 0,
MarginMin: 0,
TrafficSource: String
},
Missed:
{
WaitMin: 0,
Fee: 0,
CancelFee: 0,
AutoRebook: False,
RequireContact: False,
RequirePhoto: False
},
Privacy:
{
ThreadHrs: 0,
PhotoDays: 0,
LockNames: String,
HideAddr: False,
LiveEta: False,
Tipping: False
},
Pricing:
{
Base: 0,
PerUnit: 0,
PerMile: 0,
MinOrder: 0,
TaxPct: 0,
FinalAfterCount: False,
ServiceArea:
[
String
],
WindowMin: 0,
Surcharges:
{
String: 0
}
},
Booking:
{
On: False,
Slug: String,
Asap: False,
MinLeadMin: 0,
Open: String,
Close: String,
DriveBufferMin: 0,
Zips:
[
String
],
Recurring: False,
PayTiming: String
},
Facilities:
[
{
Code: String,
Name: String,
Address: String,
IntakeMin: 0,
Levels:
[
{
Code: String,
Name: String,
InBy: String,
WithinMin: 0,
Ready: String,
Days:
[
0
],
IsOn: False
}
],
Holidays:
[
String
]
}
],
Vehicles:
[
{
EquipmentID: 0,
UnitNumber: String,
Name: String,
Unit: String,
Cap: 0,
Cold: False
}
],
Proof:
{
String:
{
String: String
}
},
Context:
{
Drivers: 0,
ProfileCount: 0,
PayPlanId: 0,
ZoneMode: String,
ZoneName: String,
ZoneCount: 0,
HasBookingPage: False,
HasRateConfig: False,
VehicleFacts:
{
String: String
}
}
},
Issues:
[
{
Key: String,
Section: String,
Message: String
}
],
Changes:
[
{
Key: String,
Section: String,
Label: String,
From: String,
To: String
}
],
Preview:
{
DeadlineTitle: String,
DeadlineLead: String,
RoomW: String,
LastW: String,
GoW: String,
Zones:
[
{
K: String,
V: String,
Dot: String
}
],
PaySub: String,
PayRows:
[
{
K: String,
V: String,
Dot: String
}
],
PayTotal: String,
ProofRows:
[
{
K: String,
V: String,
Dot: String
}
],
Ping: String
},
Fleet:
[
{
EquipmentID: 0,
UnitNumber: String,
Name: String,
VehicleType: String,
Unit: String,
Cap: 0,
Cold: False,
Status: String,
Assigned: False
}
],
ResponseStatus:
{
ErrorCode: String,
Message: String,
StackTrace: String,
Errors:
[
{
ErrorCode: String,
FieldName: String,
Message: String,
Meta:
{
String: String
}
}
],
Meta:
{
String: String
}
}
}