Trendsic Platform Service

<back to all web services

DispatchSettlementGenerateRequest

Requires Authentication
The following routes are available for this service:
POST,OPTIONS/v1/dispatch/settlements/generate
<?php namespace dtos;

use DateTime;
use Exception;
use DateInterval;
use JsonSerializable;
use ServiceStack\{IReturn,IReturnVoid,IGet,IPost,IPut,IDelete,IPatch,IMeta,IHasSessionId,IHasBearerToken,IHasVersion};
use ServiceStack\{ICrud,ICreateDb,IUpdateDb,IPatchDb,IDeleteDb,ISaveDb,AuditBase,QueryDb,QueryDb2,QueryData,QueryData2,QueryResponse};
use ServiceStack\{ResponseStatus,ResponseError,EmptyResponse,IdResponse,ArrayList,KeyValuePair2,StringResponse,StringsResponse,Tuple2,Tuple3,ByteArray};
use ServiceStack\{JsonConverters,Returns,TypeContext};


class DispatchSettlementDeductionView implements JsonSerializable
{
    public function __construct(
        /** @var int */
        public int $DeductionId=0,
        /** @var string|null */
        public ?string $Kind=null,
        /** @var string|null */
        public ?string $Label=null,
        /** @var float */
        public float $Amount=0.0,
        /** @var string|null */
        public ?string $Note=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['DeductionId'])) $this->DeductionId = $o['DeductionId'];
        if (isset($o['Kind'])) $this->Kind = $o['Kind'];
        if (isset($o['Label'])) $this->Label = $o['Label'];
        if (isset($o['Amount'])) $this->Amount = $o['Amount'];
        if (isset($o['Note'])) $this->Note = $o['Note'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->DeductionId)) $o['DeductionId'] = $this->DeductionId;
        if (isset($this->Kind)) $o['Kind'] = $this->Kind;
        if (isset($this->Label)) $o['Label'] = $this->Label;
        if (isset($this->Amount)) $o['Amount'] = $this->Amount;
        if (isset($this->Note)) $o['Note'] = $this->Note;
        return empty($o) ? new class(){} : $o;
    }
}

class DispatchLoadStageView implements JsonSerializable
{
    public function __construct(
        /** @var string|null */
        public ?string $Stage=null,
        /** @var DateTime */
        public DateTime $AtUtc=new DateTime(),
        /** @var string|null */
        public ?string $Note=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['Stage'])) $this->Stage = $o['Stage'];
        if (isset($o['AtUtc'])) $this->AtUtc = JsonConverters::from('DateTime', $o['AtUtc']);
        if (isset($o['Note'])) $this->Note = $o['Note'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->Stage)) $o['Stage'] = $this->Stage;
        if (isset($this->AtUtc)) $o['AtUtc'] = JsonConverters::to('DateTime', $this->AtUtc);
        if (isset($this->Note)) $o['Note'] = $this->Note;
        return empty($o) ? new class(){} : $o;
    }
}

class DispatchLoadView implements JsonSerializable
{
    public function __construct(
        /** @var int */
        public int $LoadId=0,
        /** @var string|null */
        public ?string $Code=null,
        /** @var string|null */
        public ?string $Module=null,
        /** @var string|null */
        public ?string $TruckLabel=null,
        /** @var string|null */
        public ?string $DriverLabel=null,
        /** @var string|null */
        public ?string $CarrierLabel=null,
        /** @var string|null */
        public ?string $SourceLabel=null,
        /** @var string|null */
        public ?string $DestinationLabel=null,
        /** @var float|null */
        public ?float $Qty=null,
        /** @var string|null */
        public ?string $Unit=null,
        /** @var string|null */
        public ?string $QtyText=null,
        /** @var string|null */
        public ?string $TicketCode=null,
        /** @var float|null */
        public ?float $RateApplied=null,
        /** @var string|null */
        public ?string $RateBasis=null,
        /** @var float|null */
        public ?float $Revenue=null,
        /** @var string|null */
        public ?string $PayPlanLabel=null,
        /** @var float|null */
        public ?float $Pay=null,
        /** @var string|null */
        public ?string $Status=null,
        /** @var DateTime */
        public DateTime $OpenedUtc=new DateTime(),
        /** @var DateTime|null */
        public ?DateTime $ClosedUtc=null,
        /** @var int */
        public int $Photos=0,
        /** @var array<DispatchLoadStageView>|null */
        public ?array $Stages=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['LoadId'])) $this->LoadId = $o['LoadId'];
        if (isset($o['Code'])) $this->Code = $o['Code'];
        if (isset($o['Module'])) $this->Module = $o['Module'];
        if (isset($o['TruckLabel'])) $this->TruckLabel = $o['TruckLabel'];
        if (isset($o['DriverLabel'])) $this->DriverLabel = $o['DriverLabel'];
        if (isset($o['CarrierLabel'])) $this->CarrierLabel = $o['CarrierLabel'];
        if (isset($o['SourceLabel'])) $this->SourceLabel = $o['SourceLabel'];
        if (isset($o['DestinationLabel'])) $this->DestinationLabel = $o['DestinationLabel'];
        if (isset($o['Qty'])) $this->Qty = $o['Qty'];
        if (isset($o['Unit'])) $this->Unit = $o['Unit'];
        if (isset($o['QtyText'])) $this->QtyText = $o['QtyText'];
        if (isset($o['TicketCode'])) $this->TicketCode = $o['TicketCode'];
        if (isset($o['RateApplied'])) $this->RateApplied = $o['RateApplied'];
        if (isset($o['RateBasis'])) $this->RateBasis = $o['RateBasis'];
        if (isset($o['Revenue'])) $this->Revenue = $o['Revenue'];
        if (isset($o['PayPlanLabel'])) $this->PayPlanLabel = $o['PayPlanLabel'];
        if (isset($o['Pay'])) $this->Pay = $o['Pay'];
        if (isset($o['Status'])) $this->Status = $o['Status'];
        if (isset($o['OpenedUtc'])) $this->OpenedUtc = JsonConverters::from('DateTime', $o['OpenedUtc']);
        if (isset($o['ClosedUtc'])) $this->ClosedUtc = JsonConverters::from('DateTime', $o['ClosedUtc']);
        if (isset($o['Photos'])) $this->Photos = $o['Photos'];
        if (isset($o['Stages'])) $this->Stages = JsonConverters::fromArray('DispatchLoadStageView', $o['Stages']);
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->LoadId)) $o['LoadId'] = $this->LoadId;
        if (isset($this->Code)) $o['Code'] = $this->Code;
        if (isset($this->Module)) $o['Module'] = $this->Module;
        if (isset($this->TruckLabel)) $o['TruckLabel'] = $this->TruckLabel;
        if (isset($this->DriverLabel)) $o['DriverLabel'] = $this->DriverLabel;
        if (isset($this->CarrierLabel)) $o['CarrierLabel'] = $this->CarrierLabel;
        if (isset($this->SourceLabel)) $o['SourceLabel'] = $this->SourceLabel;
        if (isset($this->DestinationLabel)) $o['DestinationLabel'] = $this->DestinationLabel;
        if (isset($this->Qty)) $o['Qty'] = $this->Qty;
        if (isset($this->Unit)) $o['Unit'] = $this->Unit;
        if (isset($this->QtyText)) $o['QtyText'] = $this->QtyText;
        if (isset($this->TicketCode)) $o['TicketCode'] = $this->TicketCode;
        if (isset($this->RateApplied)) $o['RateApplied'] = $this->RateApplied;
        if (isset($this->RateBasis)) $o['RateBasis'] = $this->RateBasis;
        if (isset($this->Revenue)) $o['Revenue'] = $this->Revenue;
        if (isset($this->PayPlanLabel)) $o['PayPlanLabel'] = $this->PayPlanLabel;
        if (isset($this->Pay)) $o['Pay'] = $this->Pay;
        if (isset($this->Status)) $o['Status'] = $this->Status;
        if (isset($this->OpenedUtc)) $o['OpenedUtc'] = JsonConverters::to('DateTime', $this->OpenedUtc);
        if (isset($this->ClosedUtc)) $o['ClosedUtc'] = JsonConverters::to('DateTime', $this->ClosedUtc);
        if (isset($this->Photos)) $o['Photos'] = $this->Photos;
        if (isset($this->Stages)) $o['Stages'] = JsonConverters::toArray('DispatchLoadStageView', $this->Stages);
        return empty($o) ? new class(){} : $o;
    }
}

class DispatchSettlementView implements JsonSerializable
{
    public function __construct(
        /** @var int */
        public int $SettlementId=0,
        /** @var string|null */
        public ?string $Code=null,
        /** @var int */
        public int $VendorID=0,
        /** @var string|null */
        public ?string $VendorName=null,
        /** @var DateTime */
        public DateTime $PeriodStart=new DateTime(),
        /** @var DateTime */
        public DateTime $PeriodEnd=new DateTime(),
        /** @var int */
        public int $LoadCount=0,
        /** @var float */
        public float $GrossRevenue=0.0,
        /** @var float */
        public float $SplitPct=0.0,
        /** @var float */
        public float $CarrierShare=0.0,
        /** @var float */
        public float $DeductionsTotal=0.0,
        /** @var float */
        public float $Net=0.0,
        /** @var string|null */
        public ?string $Status=null,
        /** @var string|null */
        public ?string $Notes=null,
        /** @var DateTime */
        public DateTime $GeneratedUtc=new DateTime(),
        /** @var DateTime|null */
        public ?DateTime $SentUtc=null,
        /** @var DateTime|null */
        public ?DateTime $ApprovedUtc=null,
        /** @var string|null */
        public ?string $ApprovedBy=null,
        /** @var DateTime|null */
        public ?DateTime $PaidUtc=null,
        /** @var string|null */
        public ?string $PaidRef=null,
        /** @var int */
        public int $ContactCount=0,
        /** @var array<DispatchSettlementDeductionView>|null */
        public ?array $Deductions=null,
        /** @var array<DispatchLoadView>|null */
        public ?array $Loads=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['SettlementId'])) $this->SettlementId = $o['SettlementId'];
        if (isset($o['Code'])) $this->Code = $o['Code'];
        if (isset($o['VendorID'])) $this->VendorID = $o['VendorID'];
        if (isset($o['VendorName'])) $this->VendorName = $o['VendorName'];
        if (isset($o['PeriodStart'])) $this->PeriodStart = JsonConverters::from('DateTime', $o['PeriodStart']);
        if (isset($o['PeriodEnd'])) $this->PeriodEnd = JsonConverters::from('DateTime', $o['PeriodEnd']);
        if (isset($o['LoadCount'])) $this->LoadCount = $o['LoadCount'];
        if (isset($o['GrossRevenue'])) $this->GrossRevenue = $o['GrossRevenue'];
        if (isset($o['SplitPct'])) $this->SplitPct = $o['SplitPct'];
        if (isset($o['CarrierShare'])) $this->CarrierShare = $o['CarrierShare'];
        if (isset($o['DeductionsTotal'])) $this->DeductionsTotal = $o['DeductionsTotal'];
        if (isset($o['Net'])) $this->Net = $o['Net'];
        if (isset($o['Status'])) $this->Status = $o['Status'];
        if (isset($o['Notes'])) $this->Notes = $o['Notes'];
        if (isset($o['GeneratedUtc'])) $this->GeneratedUtc = JsonConverters::from('DateTime', $o['GeneratedUtc']);
        if (isset($o['SentUtc'])) $this->SentUtc = JsonConverters::from('DateTime', $o['SentUtc']);
        if (isset($o['ApprovedUtc'])) $this->ApprovedUtc = JsonConverters::from('DateTime', $o['ApprovedUtc']);
        if (isset($o['ApprovedBy'])) $this->ApprovedBy = $o['ApprovedBy'];
        if (isset($o['PaidUtc'])) $this->PaidUtc = JsonConverters::from('DateTime', $o['PaidUtc']);
        if (isset($o['PaidRef'])) $this->PaidRef = $o['PaidRef'];
        if (isset($o['ContactCount'])) $this->ContactCount = $o['ContactCount'];
        if (isset($o['Deductions'])) $this->Deductions = JsonConverters::fromArray('DispatchSettlementDeductionView', $o['Deductions']);
        if (isset($o['Loads'])) $this->Loads = JsonConverters::fromArray('DispatchLoadView', $o['Loads']);
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->SettlementId)) $o['SettlementId'] = $this->SettlementId;
        if (isset($this->Code)) $o['Code'] = $this->Code;
        if (isset($this->VendorID)) $o['VendorID'] = $this->VendorID;
        if (isset($this->VendorName)) $o['VendorName'] = $this->VendorName;
        if (isset($this->PeriodStart)) $o['PeriodStart'] = JsonConverters::to('DateTime', $this->PeriodStart);
        if (isset($this->PeriodEnd)) $o['PeriodEnd'] = JsonConverters::to('DateTime', $this->PeriodEnd);
        if (isset($this->LoadCount)) $o['LoadCount'] = $this->LoadCount;
        if (isset($this->GrossRevenue)) $o['GrossRevenue'] = $this->GrossRevenue;
        if (isset($this->SplitPct)) $o['SplitPct'] = $this->SplitPct;
        if (isset($this->CarrierShare)) $o['CarrierShare'] = $this->CarrierShare;
        if (isset($this->DeductionsTotal)) $o['DeductionsTotal'] = $this->DeductionsTotal;
        if (isset($this->Net)) $o['Net'] = $this->Net;
        if (isset($this->Status)) $o['Status'] = $this->Status;
        if (isset($this->Notes)) $o['Notes'] = $this->Notes;
        if (isset($this->GeneratedUtc)) $o['GeneratedUtc'] = JsonConverters::to('DateTime', $this->GeneratedUtc);
        if (isset($this->SentUtc)) $o['SentUtc'] = JsonConverters::to('DateTime', $this->SentUtc);
        if (isset($this->ApprovedUtc)) $o['ApprovedUtc'] = JsonConverters::to('DateTime', $this->ApprovedUtc);
        if (isset($this->ApprovedBy)) $o['ApprovedBy'] = $this->ApprovedBy;
        if (isset($this->PaidUtc)) $o['PaidUtc'] = JsonConverters::to('DateTime', $this->PaidUtc);
        if (isset($this->PaidRef)) $o['PaidRef'] = $this->PaidRef;
        if (isset($this->ContactCount)) $o['ContactCount'] = $this->ContactCount;
        if (isset($this->Deductions)) $o['Deductions'] = JsonConverters::toArray('DispatchSettlementDeductionView', $this->Deductions);
        if (isset($this->Loads)) $o['Loads'] = JsonConverters::toArray('DispatchLoadView', $this->Loads);
        return empty($o) ? new class(){} : $o;
    }
}

class DispatchSettlementSuggestView implements JsonSerializable
{
    public function __construct(
        /** @var int */
        public int $VendorID=0,
        /** @var string|null */
        public ?string $VendorName=null,
        /** @var float */
        public float $SplitPct=0.0,
        /** @var string|null */
        public ?string $Terms=null,
        /** @var bool|null */
        public ?bool $W9OnFile=null,
        /** @var DateTime|null */
        public ?DateTime $CoiExpires=null,
        /** @var DateTime */
        public DateTime $PeriodStart=new DateTime(),
        /** @var DateTime */
        public DateTime $PeriodEnd=new DateTime(),
        /** @var int */
        public int $UnsettledLoads=0,
        /** @var int */
        public int $UnpricedLoads=0,
        /** @var float */
        public float $UnsettledPay=0.0
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['VendorID'])) $this->VendorID = $o['VendorID'];
        if (isset($o['VendorName'])) $this->VendorName = $o['VendorName'];
        if (isset($o['SplitPct'])) $this->SplitPct = $o['SplitPct'];
        if (isset($o['Terms'])) $this->Terms = $o['Terms'];
        if (isset($o['W9OnFile'])) $this->W9OnFile = $o['W9OnFile'];
        if (isset($o['CoiExpires'])) $this->CoiExpires = JsonConverters::from('DateTime', $o['CoiExpires']);
        if (isset($o['PeriodStart'])) $this->PeriodStart = JsonConverters::from('DateTime', $o['PeriodStart']);
        if (isset($o['PeriodEnd'])) $this->PeriodEnd = JsonConverters::from('DateTime', $o['PeriodEnd']);
        if (isset($o['UnsettledLoads'])) $this->UnsettledLoads = $o['UnsettledLoads'];
        if (isset($o['UnpricedLoads'])) $this->UnpricedLoads = $o['UnpricedLoads'];
        if (isset($o['UnsettledPay'])) $this->UnsettledPay = $o['UnsettledPay'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->VendorID)) $o['VendorID'] = $this->VendorID;
        if (isset($this->VendorName)) $o['VendorName'] = $this->VendorName;
        if (isset($this->SplitPct)) $o['SplitPct'] = $this->SplitPct;
        if (isset($this->Terms)) $o['Terms'] = $this->Terms;
        if (isset($this->W9OnFile)) $o['W9OnFile'] = $this->W9OnFile;
        if (isset($this->CoiExpires)) $o['CoiExpires'] = JsonConverters::to('DateTime', $this->CoiExpires);
        if (isset($this->PeriodStart)) $o['PeriodStart'] = JsonConverters::to('DateTime', $this->PeriodStart);
        if (isset($this->PeriodEnd)) $o['PeriodEnd'] = JsonConverters::to('DateTime', $this->PeriodEnd);
        if (isset($this->UnsettledLoads)) $o['UnsettledLoads'] = $this->UnsettledLoads;
        if (isset($this->UnpricedLoads)) $o['UnpricedLoads'] = $this->UnpricedLoads;
        if (isset($this->UnsettledPay)) $o['UnsettledPay'] = $this->UnsettledPay;
        return empty($o) ? new class(){} : $o;
    }
}

class DispatchSettlementsResponse implements JsonSerializable
{
    public function __construct(
        /** @var array<DispatchSettlementView>|null */
        public ?array $Settlements=null,
        /** @var DispatchSettlementView|null */
        public ?DispatchSettlementView $Settlement=null,
        /** @var array<DispatchSettlementSuggestView>|null */
        public ?array $Suggestions=null,
        /** @var ResponseStatus|null */
        public ?ResponseStatus $ResponseStatus=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['Settlements'])) $this->Settlements = JsonConverters::fromArray('DispatchSettlementView', $o['Settlements']);
        if (isset($o['Settlement'])) $this->Settlement = JsonConverters::from('DispatchSettlementView', $o['Settlement']);
        if (isset($o['Suggestions'])) $this->Suggestions = JsonConverters::fromArray('DispatchSettlementSuggestView', $o['Suggestions']);
        if (isset($o['ResponseStatus'])) $this->ResponseStatus = JsonConverters::from('ResponseStatus', $o['ResponseStatus']);
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->Settlements)) $o['Settlements'] = JsonConverters::toArray('DispatchSettlementView', $this->Settlements);
        if (isset($this->Settlement)) $o['Settlement'] = JsonConverters::to('DispatchSettlementView', $this->Settlement);
        if (isset($this->Suggestions)) $o['Suggestions'] = JsonConverters::toArray('DispatchSettlementSuggestView', $this->Suggestions);
        if (isset($this->ResponseStatus)) $o['ResponseStatus'] = JsonConverters::to('ResponseStatus', $this->ResponseStatus);
        return empty($o) ? new class(){} : $o;
    }
}

class DispatchSettlementGenerateRequest implements JsonSerializable
{
    public function __construct(
        /** @var int */
        public int $VendorID=0,
        /** @var DateTime */
        public DateTime $PeriodStart=new DateTime(),
        /** @var DateTime */
        public DateTime $PeriodEnd=new DateTime()
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['VendorID'])) $this->VendorID = $o['VendorID'];
        if (isset($o['PeriodStart'])) $this->PeriodStart = JsonConverters::from('DateTime', $o['PeriodStart']);
        if (isset($o['PeriodEnd'])) $this->PeriodEnd = JsonConverters::from('DateTime', $o['PeriodEnd']);
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->VendorID)) $o['VendorID'] = $this->VendorID;
        if (isset($this->PeriodStart)) $o['PeriodStart'] = JsonConverters::to('DateTime', $this->PeriodStart);
        if (isset($this->PeriodEnd)) $o['PeriodEnd'] = JsonConverters::to('DateTime', $this->PeriodEnd);
        return empty($o) ? new class(){} : $o;
    }
}

PHP DispatchSettlementGenerateRequest 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.

POST /v1/dispatch/settlements/generate HTTP/1.1 
Host: api.dev.dynamics.trendsic.com 
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length

{
	VendorID: 0,
	PeriodStart: 0001-01-01,
	PeriodEnd: 0001-01-01
}
HTTP/1.1 200 OK
Content-Type: text/jsv
Content-Length: length

{
	Settlements: 
	[
		{
			SettlementId: 0,
			Code: String,
			VendorID: 0,
			VendorName: String,
			PeriodStart: 0001-01-01,
			PeriodEnd: 0001-01-01,
			LoadCount: 0,
			GrossRevenue: 0,
			SplitPct: 0,
			CarrierShare: 0,
			DeductionsTotal: 0,
			Net: 0,
			Status: String,
			Notes: String,
			GeneratedUtc: 0001-01-01,
			SentUtc: 0001-01-01,
			ApprovedUtc: 0001-01-01,
			ApprovedBy: String,
			PaidUtc: 0001-01-01,
			PaidRef: String,
			ContactCount: 0,
			Deductions: 
			[
				{
					DeductionId: 0,
					Kind: String,
					Label: String,
					Amount: 0,
					Note: String
				}
			],
			Loads: 
			[
				{
					LoadId: 0,
					Code: String,
					Module: String,
					TruckLabel: String,
					DriverLabel: String,
					CarrierLabel: String,
					SourceLabel: String,
					DestinationLabel: String,
					Qty: 0,
					Unit: String,
					QtyText: String,
					TicketCode: String,
					RateApplied: 0,
					RateBasis: String,
					Revenue: 0,
					PayPlanLabel: String,
					Pay: 0,
					Status: String,
					OpenedUtc: 0001-01-01,
					ClosedUtc: 0001-01-01,
					Photos: 0,
					Stages: 
					[
						{
							Stage: String,
							AtUtc: 0001-01-01,
							Note: String
						}
					]
				}
			]
		}
	],
	Settlement: 
	{
		SettlementId: 0,
		Code: String,
		VendorID: 0,
		VendorName: String,
		PeriodStart: 0001-01-01,
		PeriodEnd: 0001-01-01,
		LoadCount: 0,
		GrossRevenue: 0,
		SplitPct: 0,
		CarrierShare: 0,
		DeductionsTotal: 0,
		Net: 0,
		Status: String,
		Notes: String,
		GeneratedUtc: 0001-01-01,
		SentUtc: 0001-01-01,
		ApprovedUtc: 0001-01-01,
		ApprovedBy: String,
		PaidUtc: 0001-01-01,
		PaidRef: String,
		ContactCount: 0,
		Deductions: 
		[
			{
				DeductionId: 0,
				Kind: String,
				Label: String,
				Amount: 0,
				Note: String
			}
		],
		Loads: 
		[
			{
				LoadId: 0,
				Code: String,
				Module: String,
				TruckLabel: String,
				DriverLabel: String,
				CarrierLabel: String,
				SourceLabel: String,
				DestinationLabel: String,
				Qty: 0,
				Unit: String,
				QtyText: String,
				TicketCode: String,
				RateApplied: 0,
				RateBasis: String,
				Revenue: 0,
				PayPlanLabel: String,
				Pay: 0,
				Status: String,
				OpenedUtc: 0001-01-01,
				ClosedUtc: 0001-01-01,
				Photos: 0,
				Stages: 
				[
					{
						Stage: String,
						AtUtc: 0001-01-01,
						Note: String
					}
				]
			}
		]
	},
	Suggestions: 
	[
		{
			VendorID: 0,
			VendorName: String,
			SplitPct: 0,
			Terms: String,
			W9OnFile: False,
			CoiExpires: 0001-01-01,
			PeriodStart: 0001-01-01,
			PeriodEnd: 0001-01-01,
			UnsettledLoads: 0,
			UnpricedLoads: 0,
			UnsettledPay: 0
		}
	],
	ResponseStatus: 
	{
		ErrorCode: String,
		Message: String,
		StackTrace: String,
		Errors: 
		[
			{
				ErrorCode: String,
				FieldName: String,
				Message: String,
				Meta: 
				{
					String: String
				}
			}
		],
		Meta: 
		{
			String: String
		}
	}
}