Trendsic Platform Service

<back to all web services

CourierOrderRequest

Requires Authentication
The following routes are available for this service:
GET,OPTIONS/v1/dispatch/courier/orders/{Code}
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 CourierOrderRuleView:
    ping_secs: int = 0
    missed_wait_min: int = 0
    missed_fee: Decimal = decimal.Decimal(0)
    cancel_fee: Decimal = decimal.Decimal(0)
    missed_auto_rebook: bool = False
    missed_require_contact: bool = False
    missed_require_photo: bool = False
    pay_timing: Optional[str] = None
    final_price_after_count: bool = False
    pay_plan_name: 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)
    accepted_utc: Optional[datetime.datetime] = None
    proof: Dict[str, str] = field(default_factory=dict)


@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 CourierScanView:
    tag_code: Optional[str] = None
    stage: Optional[str] = None
    result: Optional[str] = None
    at_utc: datetime.datetime = datetime.datetime(1, 1, 1)


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CourierProofResultView:
    stage: Optional[str] = None
    step_key: Optional[str] = None
    value: Optional[str] = None
    at_utc: datetime.datetime = datetime.datetime(1, 1, 1)


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CourierEventView:
    kind: Optional[str] = None
    party: Optional[str] = None
    body: Optional[str] = None
    at_utc: datetime.datetime = datetime.datetime(1, 1, 1)


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CourierPhotoView:
    photo_id: int = 0
    kind: Optional[str] = None
    file_name: Optional[str] = None
    url: Optional[str] = None
    taken_utc: Optional[datetime.datetime] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CourierPayLineView:
    dispatch_load_i_d: int = 0
    kind: Optional[str] = None
    label: Optional[str] = None
    qty: Optional[Decimal] = None
    rate: Optional[Decimal] = None
    amount: Decimal = decimal.Decimal(0)


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CourierOrderView:
    dispatch_od_request_i_d: int = 0
    code: Optional[str] = None
    courier_profile_id: int = 0
    profile_name: Optional[str] = None
    route_shape: Optional[str] = None
    unit_one: Optional[str] = None
    unit_many: Optional[str] = None
    courier_facility_id: Optional[int] = None
    facility_name: Optional[str] = None
    service_level_code: Optional[str] = None
    level_name: Optional[str] = None
    source: Optional[str] = None
    address: Optional[str] = None
    unit: Optional[str] = None
    city: Optional[str] = None
    zip: Optional[str] = None
    zone: Optional[str] = None
    pickup_contact_name: Optional[str] = None
    dropoff_address: Optional[str] = None
    dropoff_unit: Optional[str] = None
    dropoff_city: Optional[str] = None
    dropoff_zip: Optional[str] = None
    dropoff_contact_name: Optional[str] = None
    miles: Optional[Decimal] = None
    units: int = 0
    units_found: Optional[int] = None
    stage: Optional[str] = None
    courier_step: Optional[str] = None
    step_label: Optional[str] = None
    driver_code: Optional[str] = None
    driver_name: Optional[str] = None
    driver_contact_id: Optional[int] = None
    courier_run_id: Optional[int] = None
    run_code: Optional[str] = None
    stop_sequence: Optional[int] = None
    queue_sequence: Optional[int] = None
    is_asap: bool = False
    window_start_utc: Optional[datetime.datetime] = None
    window_end_utc: Optional[datetime.datetime] = None
    window_text: Optional[str] = None
    due_utc: Optional[datetime.datetime] = None
    due_text: Optional[str] = None
    ping_after_utc: Optional[datetime.datetime] = None
    ping_expires_utc: Optional[datetime.datetime] = None
    candidate_code: Optional[str] = None
    held_reason: Optional[str] = None
    held_utc: Optional[datetime.datetime] = None
    customer_name: Optional[str] = None
    customer_phone: Optional[str] = None
    handoff: Optional[str] = None
    gate_code: Optional[str] = None
    instructions: Optional[str] = None
    damage_note: Optional[str] = None
    delivered_to_name: Optional[str] = None
    pay_mode: Optional[str] = None
    fare: Optional[Decimal] = None
    final_price: Optional[Decimal] = None
    tip_amount: Optional[Decimal] = None
    cancelled_by: Optional[str] = None
    cancel_reason: Optional[str] = None
    cancel_fee_applied: Optional[Decimal] = None
    missed_fee_applied: Optional[Decimal] = None
    capture_mode: Optional[str] = None
    authorized_amount: Optional[Decimal] = None
    captured_amount: Optional[Decimal] = None
    refunded_amount: Decimal = decimal.Decimal(0)
    charge_error: Optional[str] = None
    created_at: Optional[datetime.datetime] = None
    arrived_utc: Optional[datetime.datetime] = None
    picked_up_utc: Optional[datetime.datetime] = None
    intake_utc: Optional[datetime.datetime] = None
    ready_utc: Optional[datetime.datetime] = None
    out_for_delivery_utc: Optional[datetime.datetime] = None
    delivered_utc: Optional[datetime.datetime] = None
    missed_utc: Optional[datetime.datetime] = None
    cancelled_utc: Optional[datetime.datetime] = None
    is_closed: bool = False
    rebook_of_id: Optional[int] = None
    recurrence_id: Optional[int] = None
    pickup_load_id: Optional[int] = None
    rule: Optional[CourierOrderRuleView] = None
    items: List[CourierItemView] = field(default_factory=list)
    scans: List[CourierScanView] = field(default_factory=list)
    proof: List[CourierProofResultView] = field(default_factory=list)
    events: List[CourierEventView] = field(default_factory=list)
    photos: List[CourierPhotoView] = field(default_factory=list)
    pay_lines: List[CourierPayLineView] = field(default_factory=list)


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CourierOrderResponse:
    orders: List[CourierOrderView] = field(default_factory=list)
    order: Optional[CourierOrderView] = None
    message: Optional[str] = None
    response_status: Optional[ResponseStatus] = None


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

Python CourierOrderRequest DTOs

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

HTTP + JSV

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

GET /v1/dispatch/courier/orders/{Code} HTTP/1.1 
Host: api.dev.dynamics.trendsic.com 
Accept: text/jsv
HTTP/1.1 200 OK
Content-Type: text/jsv
Content-Length: length

{
	Orders: 
	[
		{
			DispatchOdRequestID: 0,
			Code: String,
			CourierProfileId: 0,
			ProfileName: String,
			RouteShape: String,
			UnitOne: String,
			UnitMany: String,
			CourierFacilityId: 0,
			FacilityName: String,
			ServiceLevelCode: String,
			LevelName: String,
			Source: String,
			Address: String,
			Unit: String,
			City: String,
			Zip: String,
			Zone: String,
			PickupContactName: String,
			DropoffAddress: String,
			DropoffUnit: String,
			DropoffCity: String,
			DropoffZip: String,
			DropoffContactName: String,
			Miles: 0,
			Units: 0,
			UnitsFound: 0,
			Stage: String,
			CourierStep: String,
			StepLabel: String,
			DriverCode: String,
			DriverName: String,
			DriverContactId: 0,
			CourierRunId: 0,
			RunCode: String,
			StopSequence: 0,
			QueueSequence: 0,
			IsAsap: False,
			WindowStartUtc: 0001-01-01,
			WindowEndUtc: 0001-01-01,
			WindowText: String,
			DueUtc: 0001-01-01,
			DueText: String,
			PingAfterUtc: 0001-01-01,
			PingExpiresUtc: 0001-01-01,
			CandidateCode: String,
			HeldReason: String,
			HeldUtc: 0001-01-01,
			CustomerName: String,
			CustomerPhone: String,
			Handoff: String,
			GateCode: String,
			Instructions: String,
			DamageNote: String,
			DeliveredToName: String,
			PayMode: String,
			Fare: 0,
			FinalPrice: 0,
			TipAmount: 0,
			CancelledBy: String,
			CancelReason: String,
			CancelFeeApplied: 0,
			MissedFeeApplied: 0,
			CaptureMode: String,
			AuthorizedAmount: 0,
			CapturedAmount: 0,
			RefundedAmount: 0,
			ChargeError: String,
			CreatedAt: 0001-01-01,
			ArrivedUtc: 0001-01-01,
			PickedUpUtc: 0001-01-01,
			IntakeUtc: 0001-01-01,
			ReadyUtc: 0001-01-01,
			OutForDeliveryUtc: 0001-01-01,
			DeliveredUtc: 0001-01-01,
			MissedUtc: 0001-01-01,
			CancelledUtc: 0001-01-01,
			IsClosed: False,
			RebookOfId: 0,
			RecurrenceId: 0,
			PickupLoadId: 0,
			Rule: 
			{
				PingSecs: 0,
				MissedWaitMin: 0,
				MissedFee: 0,
				CancelFee: 0,
				MissedAutoRebook: False,
				MissedRequireContact: False,
				MissedRequirePhoto: False,
				PayTiming: String,
				FinalPriceAfterCount: False,
				PayPlanName: String,
				PerPickup: 0,
				PerStop: 0,
				PerMissed: 0,
				PerCancel: 0,
				AcceptedUtc: 0001-01-01,
				Proof: 
				{
					String: String
				}
			},
			Items: 
			[
				{
					CourierItemID: 0,
					DispatchOdRequestID: 0,
					Seq: 0,
					TagCode: String,
					Custody: String,
					IsOpen: False,
					IsMissing: False,
					MissingReason: String,
					IsManual: False,
					ReTagFlag: False,
					Scanned: False
				}
			],
			Scans: 
			[
				{
					TagCode: String,
					Stage: String,
					Result: String,
					AtUtc: 0001-01-01
				}
			],
			Proof: 
			[
				{
					Stage: String,
					StepKey: String,
					Value: String,
					AtUtc: 0001-01-01
				}
			],
			Events: 
			[
				{
					Kind: String,
					Party: String,
					Body: String,
					AtUtc: 0001-01-01
				}
			],
			Photos: 
			[
				{
					PhotoId: 0,
					Kind: String,
					FileName: String,
					Url: String,
					TakenUtc: 0001-01-01
				}
			],
			PayLines: 
			[
				{
					DispatchLoadID: 0,
					Kind: String,
					Label: String,
					Qty: 0,
					Rate: 0,
					Amount: 0
				}
			]
		}
	],
	Order: 
	{
		DispatchOdRequestID: 0,
		Code: String,
		CourierProfileId: 0,
		ProfileName: String,
		RouteShape: String,
		UnitOne: String,
		UnitMany: String,
		CourierFacilityId: 0,
		FacilityName: String,
		ServiceLevelCode: String,
		LevelName: String,
		Source: String,
		Address: String,
		Unit: String,
		City: String,
		Zip: String,
		Zone: String,
		PickupContactName: String,
		DropoffAddress: String,
		DropoffUnit: String,
		DropoffCity: String,
		DropoffZip: String,
		DropoffContactName: String,
		Miles: 0,
		Units: 0,
		UnitsFound: 0,
		Stage: String,
		CourierStep: String,
		StepLabel: String,
		DriverCode: String,
		DriverName: String,
		DriverContactId: 0,
		CourierRunId: 0,
		RunCode: String,
		StopSequence: 0,
		QueueSequence: 0,
		IsAsap: False,
		WindowStartUtc: 0001-01-01,
		WindowEndUtc: 0001-01-01,
		WindowText: String,
		DueUtc: 0001-01-01,
		DueText: String,
		PingAfterUtc: 0001-01-01,
		PingExpiresUtc: 0001-01-01,
		CandidateCode: String,
		HeldReason: String,
		HeldUtc: 0001-01-01,
		CustomerName: String,
		CustomerPhone: String,
		Handoff: String,
		GateCode: String,
		Instructions: String,
		DamageNote: String,
		DeliveredToName: String,
		PayMode: String,
		Fare: 0,
		FinalPrice: 0,
		TipAmount: 0,
		CancelledBy: String,
		CancelReason: String,
		CancelFeeApplied: 0,
		MissedFeeApplied: 0,
		CaptureMode: String,
		AuthorizedAmount: 0,
		CapturedAmount: 0,
		RefundedAmount: 0,
		ChargeError: String,
		CreatedAt: 0001-01-01,
		ArrivedUtc: 0001-01-01,
		PickedUpUtc: 0001-01-01,
		IntakeUtc: 0001-01-01,
		ReadyUtc: 0001-01-01,
		OutForDeliveryUtc: 0001-01-01,
		DeliveredUtc: 0001-01-01,
		MissedUtc: 0001-01-01,
		CancelledUtc: 0001-01-01,
		IsClosed: False,
		RebookOfId: 0,
		RecurrenceId: 0,
		PickupLoadId: 0,
		Rule: 
		{
			PingSecs: 0,
			MissedWaitMin: 0,
			MissedFee: 0,
			CancelFee: 0,
			MissedAutoRebook: False,
			MissedRequireContact: False,
			MissedRequirePhoto: False,
			PayTiming: String,
			FinalPriceAfterCount: False,
			PayPlanName: String,
			PerPickup: 0,
			PerStop: 0,
			PerMissed: 0,
			PerCancel: 0,
			AcceptedUtc: 0001-01-01,
			Proof: 
			{
				String: String
			}
		},
		Items: 
		[
			{
				CourierItemID: 0,
				DispatchOdRequestID: 0,
				Seq: 0,
				TagCode: String,
				Custody: String,
				IsOpen: False,
				IsMissing: False,
				MissingReason: String,
				IsManual: False,
				ReTagFlag: False,
				Scanned: False
			}
		],
		Scans: 
		[
			{
				TagCode: String,
				Stage: String,
				Result: String,
				AtUtc: 0001-01-01
			}
		],
		Proof: 
		[
			{
				Stage: String,
				StepKey: String,
				Value: String,
				AtUtc: 0001-01-01
			}
		],
		Events: 
		[
			{
				Kind: String,
				Party: String,
				Body: String,
				AtUtc: 0001-01-01
			}
		],
		Photos: 
		[
			{
				PhotoId: 0,
				Kind: String,
				FileName: String,
				Url: String,
				TakenUtc: 0001-01-01
			}
		],
		PayLines: 
		[
			{
				DispatchLoadID: 0,
				Kind: String,
				Label: String,
				Qty: 0,
				Rate: 0,
				Amount: 0
			}
		]
	},
	Message: String,
	ResponseStatus: 
	{
		ErrorCode: String,
		Message: String,
		StackTrace: String,
		Errors: 
		[
			{
				ErrorCode: String,
				FieldName: String,
				Message: String,
				Meta: 
				{
					String: String
				}
			}
		],
		Meta: 
		{
			String: String
		}
	}
}