Chaine Standard Fields
A list of the standard fields required for a load in Chaine to use the Copilot functionality. The best way to integrate is to just provide an export of the entire load object in your TMS's format to our webhook anytime there is a change to the load object in your TMS. We will then do a mapping of the fields to our standard fields during the implementation.
Please note that you don't have to follow the eact structure below. You can have your own structure and just hit our exports api endpoint to export the load to Chaine. We will do a mapping of the fields to our standard fields during the implementation.
Load
type LoadType = {
/**
* The carrier information for the load.
*/
carrier: {
/**
* The carrier's dot number
*/
dotNumber: string
/**
* If a carrier is not to be used in the future, this is the reason why
*/
doNotUse: boolean | null
/**
* If a carrier is not to be used in the future, this is the reason why
*/
doNotUseReason: string | null
/**
* The name of the carrier. Not needed as we pull this from the FMSCSA.
*/
companyName: string | null
/**
* The external ID of your carrier in your TMS
*/
id: string | null
/**
* The MC number of the carrier
*/
mcNumber: string
/**
* The SCAC code of the carrier
*/
scacCode: string | null
} | null
/**
* The carrier sales rep on the load
*/
carrierSalesRep: UserType | null
/**
* The intent of the load information: i.e. create, update, delete
*/
commodity: string | null
/**
* The timestamp representing when the load was created, in ISO 8601 format
*/
createdOn: string | null
/**
* The customer on the load
*/
customer: {
/**
* The name of the customer
*/
name: string | null
/**
* The unique ID of the customer in your TMS
*/
id: string | null
/***
* The contact at the customer
*/
contact: UserType | null
}
/**
* The details of the customer sales rep
*/
customerSalesRep: UserType | null
/**
* The user details of the user that created the load
*/
createdBy: UserType | null
/**
* The dispatchers on the load. (Email is required for dispatchers)
*/
dispatchers: UserType[] | []
/**
* The distance of the overall shipment
*/
distance: {
/**
* The distance in miles
*/
value: number
/**
* The unit of measurement
*/
unit: string
}
/**
* The drivers on the shipment. (Phone number is required for drivers)
*/
drivers: UserType[] | []
/**
* Indicates if the load should not be posted. This can be the case, for example, if the shipper doesn't have the product ready and doesn't know what day they want to ship it out.
*/
doNotPost: boolean | null
/**
* The equipment type needed for the shipment
*/
equipment: TruckType | null
/**
* This contains the financial details of the shipment such as what was actually invoiced to the customer (and by the carrier) and what was paid by the customer (and to the carrier)
*/
financials: FinancialsType | null
/**
* Does the shipment contain hazardous materials?
*/
hazmatIndicator: boolean
/**
* Is the shipment a hot load
*/
hotLoadIndicator: boolean
/**
* The user facing load number
*/
loadNumber: string
/**
* The load status
*/
loadStatus: string
/**
* The mode of the shipment (FTL, LTL, Intermodal)
*/
mode: 'FTL' | 'LTL' | 'Intermodal'
/**
* The unique ID of the organization in your TMS
*/
organizationID: string
/**
* Whether or not the shipment POD has been received
*/
proofOfDeliveryReceived: boolean
/**
* The shipment number associated with the shipment (e.g. 123456)
*/
referenceNumbers: ReferenceNumbersType
/**
* Shipment level special instructions
*/
specialInstructions: string | null
/**
* An array of all the stops on the load
*/
stops: StopType[] | []
/**
* Whether or not the shipment requires team drivers
*/
teamRequired: boolean
/**
* Whether or not the shipment requires temperature control
*/
temperatureControlled: boolean
/**
* If the load is temperature controlled, this is the max and min temperature
*/
temperatureRange: {
/**
* For temp controlled, the temperature can be run in different ways like continuous, or at night, etc..
* i.e. 'Continuous', 'Start/Stop', 'Night
*/
runType: string | null
/**
* Minimum temperature the reefer needs to run at
*/
min: number | null
/**
* Maximum temperature the reefer needs to run at
*/
max: number | null
/**
* The unit of measurement for the temperature. 'F' or 'C'
*/
unit: string | null
}
/**
* The url of the load in the TMS if you have one. This is used to provide a link to the users for easy access back to your TMS for a particular load
*/
tmsURL?: string
/**
* The assigned trailer's number.
* Note, this can be prefixed with the carrier's SCAC code which is used the tracking domain
*/
trailerNumber: string | null
/**
* The assigned truck's number.
* Note, this can be prefixed with the carrier's SCAC code which is used the tracking domain
*/
truckNumber: string | null
/**
* The unique ID of the load in your TMS
*/
uniqueID: string
/**
* The UUID of the user who updated the shipment on this request
*/
updatedBy: UserType | null
/**
* The timestamp representing when the shipment was updated, in ISO 8601 format
*/
updatedAt: string | null
/**
* The weight of the shipment
*/
weight: {
/**
* The value of the weight (e.g. 40000)
*/
value: number
/**
* The unit of the weight (e.g. lbs)
*/
unit: 'lb' | 'kg'
}
Stop
type StopType = {
/**
* The appointment information for the stop
*/
appointment: AppointmentType | null
/**
* The date and time of the stop's arrival
*/
arrivalDateTime: DateTime | null
/**
* The date and time of the stop's departure
*/
departureDateTime: DateTime | null
/**
* The date and time of the stop's ETA
*/
eta: DateTime | null
/**
* The unique ID of the stop in your TMS
*/
id: string | null
/**
* the special instructions for the stop
*/
instructions: string | null
/** The pickup or delivery number required for the stop when the driver checks in at the warehouse */
pickupDeliveryNumber: string |
/** Any additional reference numbers related to the stop. This can sometimes also be a pickup/delivery number */
referenceNumber: string | null
/**
* The sequence of the stop in the load
*/
sequence: number
/**
* The stop type. i.e. 'Pick' or 'Drop'
*/
type: 'Pick' | 'Drop'
/**
* The address of the stop
*/
warehouse: {
/**
* The unique ID for the warehouse associated with the stop
*/
id: string
/**
* The address of the warehouse
*/
address: AddressType | null
/**
* The name of the warehouse location
*/
name: string | null
/**
* The warehouse hours entered as a string. i.e. '12:00-17:00'
*/
warehouseHours: string | null
/** Warehouse contact person */
contact: UserType
}
}
Appointment and Date
type AppointmentType = {
/**
* The expected start date of the origin or destination
*/
start: DateTime
/**
* The expected end date of the origin or destination
*/
end: DateTime | null
/**
* This indicated if the end date time is present or not
*/
isFirstComeFirstServe: boolean
}
type DateTime = {
/**
* Date in the format of '2023-03-01'
*/
date: string
/**
* Time in the format of '15:00'
*/
time: string
/**
* Timezone for the date and time fields
*/
timezone?: string
}
Address
type AddressType = {
/**
* A label for the address which is a string form of the full address. i.e '123 Main St, New York, NY 10001'
*/
addressLabel: string | null
/**
* The city name.
*/
city: string
/**
* The address longitude and latitude coordinates.
*/
coordinates: CoordinatesType | null
/**
* The two letter country code.
*/
countryCode: string | null
/**
* The postal code.
*/
postalCode: string
/**
* The two letter state code.
*/
stateCode: string
/**
* The street name.
*/
street: string
/**
* The street number.
*/
streetNumber: string
/**
* The suite or unit number of the address.
*/
suiteNumber: string
/**
* The timezone of the address.
*/
timezone: string | null
}
type CoordinatesType = {
/** The latitude of the place's GPS coordinates */
latitude: number
/** The longitude of the place's GPS coordinates */
longitude: number
}
User
type UserType = {
/**
* The external ID of the user in your TMS
*/
id: string | null
/**
* The email of the user
*/
email: string | null
/**
* The name of the user
*/
name: string | null
/**
* The phone number of the user
*/
phone: string | null
} | null
Truck
/**
* The standard Chaine type for a load's equipment
*/
enum TruckType {
Van = 'Van',
Flatbed = 'Flatbed',
Reefer = 'Reefer',
StepDeck = 'Step deck',
BoxTruck = 'Box truck',
PowerOnly = 'Power only'
}
Financials
/**
* This contains the financial details of the shipment such as what was actually invoiced to the customer (and by the carrier) and what was paid by the customer (and to the carrier)
*/
type FinancialsType = {
/**
* The rate that the carrier has invoiced for this shipment
*/
carrierInvoiceTotal: number | null
/**
* The rate that the carrier was paid for this shipment
*/
carrierPaymentTotal: number | null
/**
* The rate that the customer was invoiced for this shipment
*/
customerInvoiceTotal: number | null
/**
* The rate that the customer was quoted for this shipment
*/
customerQuoteTotal: number | null
}
Reference Numbers
type ReferenceNumbersType = {
/**
* The bill of lading number if there is one
*/
billOfLading: string | null
/**
* The billing reference number if there is one
*/
billingReferenceNumber: string | null
/**
* The customer's reference number if there is one
*/
orderNumber: string | null
/**
* Often times there is a pickup number on the shipment level. This is sometimes the customer's reference number as well.
*/
pickupNumber: string | null
/**
* Also called the PO Number
* A PO number is a unique identifier assigned to a purchase order, which is a document issued by a buyer to a seller, indicating the types, quantities, and agreed-upon prices for products or services. The purchase order acts as a legally binding contract between the buyer and the seller. The PO number is used to track and manage the order throughout the entire purchasing process, from order placement to payment and receipt of goods.
*/
purchaseOrderNumber: string | null
/**
* A Progressive Rotating Order(PRO) Number. Commonly known as a PRO Number.
* A PRO number is a unique identifier assigned by a carrier (typically a freight or trucking company) to a specific shipment. The PRO number is used to track the shipment's progress through the carrier's system, providing visibility for both the shipper and the receiver. It helps to keep track of the shipment's location, status, and estimated delivery date, and can be used to file claims in case of any issues with the shipment.
*/
progressiveRotatingOrderNumber: string | null
}