""" Options: Date: 2026-08-20 13:01:10 Version: 8.80 Tip: To override a DTO option, remove "#" prefix before updating BaseUrl: https://api.dev.dynamics.trendsic.com #GlobalNamespace: #AddServiceStackTypes: True #AddResponseStatus: False #AddImplicitVersion: #AddDescriptionAsComments: True IncludeTypes: DispatchTicketRequest.* #ExcludeTypes: #DefaultImports: datetime,decimal,marshmallow.fields:*,servicestack:*,typing:*,dataclasses:dataclass/field,dataclasses_json:dataclass_json/LetterCase/Undefined/config,enum:Enum/IntEnum #DataClass: #DataClassJson: """ 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 # @Route("/v1/dispatch/haul/tickets", "POST,OPTIONS") @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class DispatchTicketRequest(IReturn[DispatchActionResponse]): truck_code: Optional[str] = None net_qty: Optional[Decimal] = None at_min: int = 0