export type LoadStatus = 'DRAFT' | 'CUSTOMER_CONFIRMED' | 'COVERED' | 'DISPATCHED' | 'AT_PICKUP' | 'IN_TRANSIT' | 'AT_DELIVERY' | 'DELIVERED' | 'POD_COLLECTED' | 'PAID' | 'CANCELED' | 'ERROR' | 'ARCHIVED'; export type LoadReferenceNumberName = 'BILLED_DATE' | 'BOOKING_NUMBER' | 'BOL_NUMBER' | 'CONSIGNEE_NUMBER' | 'CONSIGNEE_REF_NUMBER' | 'CONTAINER_NUMBER' | 'CONTROL_NUMBER' | 'CUSTOMER_REF_NUMBER' | 'DAT_POSTING_ID' | 'PICKUP_NUMBER' | 'PO_NUMBER' | 'POSTING_GROUP_ID' | 'PRO_NUMBER' | 'RELEASED_DATE' | 'REQUIRED_DOCS' | 'SHIPMENT_NUMBER' | 'SHIPPER_NUMBER' | 'TMS_LOAD_STATUS' | 'TMS_SHIPMENT_STATUS' | 'TRAILER_NUMBER' | 'TRUCK_NUMBER' | 'OTHER'; export type AccessorialsEnum = string; export type StopCustomData = {[key: string]: unknown} | null; export type LoadRouteStop = {sequence: number, externalId?: string | undefined, facilityCode?: (string | null) | undefined, stopActivity: 'PICKUP' | 'DELIVERY', address: {company?: string | undefined, locationName?: string | undefined, street1: string, street2?: string | undefined, city: string, stateOrProvince: string, postalCode: string, country: string}, notes?: string | undefined, expectedArrivalWindowStart?: string | undefined, expectedArrivalWindowEnd?: string | undefined, actualArrivalTime?: string | undefined, actualCompletionTime?: string | undefined, expectedDropWindowStart?: string | undefined, expectedDropWindowEnd?: string | undefined, mustArriveByDate?: string | undefined, isLocalTime?: boolean | undefined, schedulingType?: ('APPT' | 'FCFS') | undefined, handlingType?: ('DT' | 'L') | undefined, customData?: StopCustomData | undefined}; export type PackageType = 'PALLET' | 'PIECE' | 'CARTON' | 'TOTE' | 'SKID' | 'CRATE' | 'BOX' | 'DRUM' | 'CASE' | 'BUNDLE' | 'OTHER' | 'FLOOR_LOADED' | 'ROLL' | 'SHEET'; export type LoadItemUnit = {unitType: PackageType, quantity: number}; export type LoadItem = {quantity: number, packagingUnit?: LoadItemUnit | undefined, handlingUnit?: LoadItemUnit | undefined, description?: string | undefined, totalWeightLbs: number, lengthInches?: number | undefined, widthInches?: number | undefined, heightInches?: number | undefined, freightClass?: ('50' | '55' | '60' | '65' | '70' | '77.5' | '85' | '92.5' | '100' | '110' | '125' | '150' | '175' | '200' | '250' | '300' | '400' | '500') | undefined, nmfc?: string | undefined, density?: number | undefined, pickupSequence?: number | undefined, deliverySequence?: number | undefined}; export type ExternalTrackingStatusCode = 'READY' | 'WAITING' | 'FAILED' | 'COMPLETED'; export type ExternalTrackingStatus = {source: 'MACROPOINT' | 'P44' | 'OTHER', message: string, code: ExternalTrackingStatusCode, updatedAt: string}; export type LoadService = 'HOTSHOT' | 'PARTIAL' | 'STANDARD' | 'TIME_CRITICAL' | 'VOLUME'; export type InputDateTimeUtc = string; export type LoadNote = {timestamp: InputDateTimeUtc, text: string, author: string}; export type LoadCustomData = {[key: string]: unknown} | null; export type Load = {loadNumber: string, brokerageLoadInternalId?: string | undefined, mode: 'DRAYAGE' | 'EXPEDITE' | 'FTL' | 'LTL' | 'PARTIAL', rateType?: ('CONTRACT' | 'DEDICATED' | 'PROJECT' | 'SPOT') | undefined, status: LoadStatus, referenceNumbers?: Array<{name: LoadReferenceNumberName, value: string}> | undefined, equipment?: ({equipmentType: 'AUTO_CARRIER' | 'AUTO_TRANSPORT' | 'B_TRAIN' | 'BOX_TRUCK' | 'CHASSIS' | 'CONESTOGA' | 'CONTAINER' | 'CONTAINER_INSULATED' | 'CONTAINER_OR_CHASSIS' | 'CONTAINER_REFRIGERATED' | 'CONTAINERS' | 'CONVEYOR' | 'DECKS_SPECIALIZED' | 'DECKS_STANDARD' | 'DOUBLE_DROP' | 'DROP_DECK_LANDOLL' | 'DRY_BULK' | 'DRY_VAN' | 'DUMP_END' | 'DUMP_SIDE' | 'DUMP_TRAILER' | 'FLATBED' | 'FLATBED_AIR_RIDE' | 'FLATBED_CONESTOGA' | 'FLATBED_DOUBLE' | 'FLATBED_HAZMAT' | 'FLATBED_HOTSHOT' | 'FLATBED_MAXI' | 'FLATBED_OR_STEP_DECK' | 'FLATBED_OVERDIMENSION' | 'FLATBED_STRETCH' | 'FLATBED_VAN_REEFER' | 'FLATBED_WITH_CHAINS' | 'FLATBED_WITH_SIDES' | 'FLATBED_WITH_TARPS' | 'FLATBED_WITH_TEAM' | 'FLATBEDS' | 'HAZARDOUS_MATERIALS' | 'HOPPER_BOTTOM' | 'HOTSHOT' | 'HOTSHOT_FLATBED' | 'INSULATED_VAN_OR_REEFER' | 'LOWBOY' | 'LOWBOY_OR_REM_GOOSENECK_RGN' | 'LOWBOY_OVERDIMENSION' | 'MOVING_VAN' | 'PLATE_TRAILER' | 'PNEUMATIC' | 'POWER_ONLY' | 'POWER_ONLY_LOAD_OUT' | 'POWER_ONLY_TOW_AWAY' | 'REEFER' | 'REEFER_AIR_RIDE' | 'REEFER_DEEP_FROZEN' | 'REEFER_DOUBLE' | 'REEFER_HAZMAT' | 'REEFER_INTERMODAL' | 'REEFER_LOGISTICS' | 'REEFER_OR_POWER_ONLY' | 'REEFER_OR_VENTED_VAN' | 'REEFER_PALLET_EXCHANGE' | 'REEFER_QUADAXLE' | 'REEFER_TRIAXLE' | 'REEFER_WITH_TEAM' | 'REEFERS' | 'REMOVABLE_GOOSE_NECK' | 'REMOVABLE_GOOSENECK' | 'SPRINTER_VAN' | 'SPRINTER_VAN_HAZMAT' | 'SPRINTER_VAN_TEMP_CONTROLLED' | 'SPRINTER_VAN_WITH_TEAM' | 'STEP_DECK' | 'STEP_DECK_OR_REM_GOOSENECK_RGN' | 'STEPDECK_CONESTOGA' | 'STRAIGHT_BOX_TRUCK' | 'STRAIGHT_BOX_TRUCK_HAZMAT' | 'STRAIGHT_BOX_TRUCK_REEFER' | 'STRAIGHT_TRUCK' | 'STRETCH_TRAILER' | 'TANKER' | 'TANKER_ALUMINUM' | 'TANKER_INTERMODAL' | 'TANKER_STEEL' | 'TANKERS' | 'TRUCK_AND_TRAILER' | 'V2G' | 'VAH' | 'VAN' | 'VAN_AIR_RIDE' | 'VAN_BLANKET_WRAP' | 'VAN_CONESTOGA' | 'VAN_CURTAIN' | 'VAN_DOUBLE' | 'VAN_HAZMAT' | 'VAN_HIGH_CUBE' | 'VAN_HIGH_CUBE_4_AXLE' | 'VAN_HOTSHOT' | 'VAN_INSULATED' | 'VAN_INTERMODAL' | 'VAN_LIFT_GATE' | 'VAN_LOGISTICS' | 'VAN_OPEN_TOP' | 'VAN_OR_FLATBED' | 'VAN_OR_FLATBED_WITH_TARPS' | 'VAN_OR_POWER_ONLY' | 'VAN_OR_REEFER' | 'VAN_PALLET_EXCHANGE' | 'VAN_ROLLER_BED' | 'VAN_SPRINTER' | 'VAN_TRIPLE' | 'VAN_VENTED' | 'VAN_WITH_CURTAINS' | 'VAN_WITH_TEAM' | 'VANS_SPECIALIZED' | 'VANS_STANDARD' | 'VENTED_VAN_OR_POWER_ONLY' | 'WALKING_FLOOR' | 'OTHER', description?: string | undefined, dimensions?: ({length?: number | undefined, width?: number | undefined, height?: number | undefined, unit: 'IN' | 'CM' | 'FT' | 'M' | 'YD'}) | undefined}) | undefined, accessorials?: Array | undefined, route: Array, items?: Array | undefined, externalTrackingStatus?: ExternalTrackingStatus | undefined, isPostedToDAT?: boolean | undefined, weight?: number | undefined, totalMiles?: number | undefined, maxRate?: number | undefined, targetRate?: number | undefined, highValueAmount?: number | undefined, dimensions?: {heightInches: number, lengthInches: number, widthInches: number} | undefined, minimumTemperature?: number | undefined, maximumTemperature?: number | undefined, service?: LoadService | undefined, bidExpiration?: string | undefined, notes?: Array | undefined, bookedRate?: number | undefined, shipperRate?: number | undefined, tarpSize?: string | undefined, minimumBulkHeadTemperature?: number | undefined, maximumBulkHeadTemperature?: number | undefined, groupExternalId?: (string | null) | undefined, customData?: LoadCustomData | undefined}; export type TrackingEventContact = {id?: string | undefined, name?: string | undefined, phone?: string | undefined, phoneExtension?: string | undefined, email?: string | undefined}; export type TrackingEvent = {nextSequence?: number | undefined, nextEtaUtc?: string | undefined, eventType: 'DELAYED' | 'INFO' | 'PICKED_UP' | 'PING' | 'COVERED' | 'DISPATCHED', eventSource: '4KITES' | 'CARRIER_API' | 'HIGHWAY' | 'MACROPOINT' | 'P44' | 'PHONE_EMAIL' | 'SMC3' | 'TEXT' | 'TMS' | 'TRUCKER_TOOLS' | 'OTHER', eventUtc: string, isLocalTime?: boolean | undefined, city?: string | undefined, country?: string | undefined, stateOrProvince?: string | undefined, postalCode?: string | undefined, latitude?: number | undefined, longitude?: number | undefined, temperatureF?: number | undefined, notes?: string | undefined, dispatcher?: TrackingEventContact | undefined, driver?: TrackingEventContact | undefined}; export type CarrierAddress = {company?: string | undefined, locationName?: string | undefined, street1: string, street2?: string | undefined, city: string, stateOrProvince: string, postalCode: string, country: string}; export type CarrierContact = {id?: string | undefined, name?: string | undefined, phone?: string | undefined, phoneExtension?: string | undefined, email?: string | undefined, role: 'AP_REP' | 'DISPATCHER' | 'AFTER_HOURS_DISPATCHER' | 'WEEKEND_DISPATCHER' | 'BOOKING' | 'TRACKING'}; export type Carrier = {carrierId?: string | undefined, name: string, mcNumber?: number | undefined, dotNumber: number, scac?: string | undefined, address?: CarrierAddress | undefined, contacts?: Array | undefined, drivers?: (Array<{id?: string | undefined, name?: string | undefined, phone: string, phoneExtension?: string | undefined}>) | undefined}; export type Brokerage = {contacts?: (Array<{id?: string | undefined, name: string, phone?: string | undefined, phoneExtension?: string | undefined, email?: string | undefined, role: Array<'ACCOUNT_MANAGER' | 'OPERATIONS_REP' | 'OPERATIONS_MANAGER' | 'CARRIER_REP' | 'CARRIER_TEAM' | 'CUSTOMER_TEAM' | 'BOOKED_BY' | 'CUSTOMER_REP' | 'AP_REP' | 'AFTER_HOURS_REP'>}>) | undefined}; export type Customer = {customerId?: string | undefined, name: string}; export type CarrierPaymentStatus = {carrierId: string, status: 'PAID' | 'SCHEDULED' | 'OTHER', scheduledPaymentDate?: string | undefined, actualPaymentDate?: string | undefined, paymentMethod?: ('ACH' | 'CHECK') | undefined, paymentReferenceNumbers?: Array | undefined}; export type LoadRequest = {load: Load, trackingEvents?: Array | undefined, carrier?: (Carrier | null) | undefined, brokerage: Brokerage, customer?: Customer | undefined, carrierPaymentStatuses?: Array | undefined}; export type CreateApiV2LoadsArgs = {body: LoadRequest}; export type CreateApiV2LoadsOptions = {baseUrl?: string | undefined, httpBasic?: {username: string, password: string} | undefined, fetch?: typeof fetch | undefined}; /** * Create or update load * * POST /v2/loads */ export const createApiV2Loads = async (args: CreateApiV2LoadsArgs, options?: CreateApiV2LoadsOptions) => { const {baseUrl = "https://api.prod.goaugment.com", fetch: fetchFn = fetch, httpBasic} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('content-type', "application/json") if (httpBasic !== undefined) headers.set('authorization', `Basic ${btoa(`${httpBasic.username}:${httpBasic.password}`)}`) const url = `${baseUrl.replace(/\/+$/, '')}/v2/loads${query.size > 0 ? `?${query}` : ''}` const res = await fetchFn(url, {method: "POST", headers, body: JSON.stringify(args.body)}) if (!res.ok) throw new Error(`Request failed with status ${res.status}`, {cause: {status: res.status, body: await res.text()}}) return undefined };