TON Weight Unit Support
Added support for TON weight unit across all endpoints that handle products, line items, and shipments, enabling better support for heavy freight and bulk shipments.
What's New:
TON- New weight unit enum value for measuring weight in tons
Enhanced Endpoints (103 changes):
Products:
GET /products/(response)POST /products/(request & response)GET /products/{productId}/(response)PUT /products/{productId}/(request & response)
Purchase Orders:
GET /purchase-orders/(response)POST /purchase-orders/(request & response)GET /purchase-orders/{purchaseOrderId}/(response)PUT /purchase-orders/{purchaseOrderId}/(request & response)GET /purchase-orders/{purchaseOrderId}/line-items/(response)POST /purchase-orders/{purchaseOrderId}/line-items/(request & response)GET /purchase-orders/{purchaseOrderId}/line-items/{purchaseOrderLineItemId}/(response)PUT /purchase-orders/{purchaseOrderId}/line-items/{purchaseOrderLineItemId}/(request & response)POST /purchase-orders/build-shipment/(response)PUT /purchase-orders/update-built-shipment/(response)
Shipments:
GET /shipments/(response)POST /shipments/(request & response)GET /shipments/external/(response)GET /shipments/external/{shipmentId}/(response)POST /shipments/linear-feet/(request & response)GET /shipments/pickups/(response)POST /shipments/pickups/(response)GET /shipments/pickups/{shipmentPickupId}/(response)PUT /shipments/pickups/{shipmentPickupId}/(request & response)POST /shipments/pickups/{shipmentPickupId}/cancel/(response)GET /shipments/templates/(response)POST /shipments/templates/(request & response)GET /shipments/templates/{shipmentTemplateId}/(response)PUT /shipments/templates/{shipmentTemplateId}/(request & response)GET /shipments/{shipmentId}/(response)PUT /shipments/{shipmentId}/(request & response)PUT /shipments/{shipmentId}/add-orders/(response)POST /shipments/{shipmentId}/auto-book/(response)POST /shipments/{shipmentId}/award-quote/(response)POST /shipments/{shipmentId}/cancel/(response)POST /shipments/{shipmentId}/initiate-check-call/(response)PUT /shipments/{shipmentId}/remove-orders/{orderId}/(response)
Quoting:
GET /quoting/loadboard/(response)GET /quoting/loadboard/{loadBoardShipmentId}/(response)GET /quoting/spotnegotiations/spot-negotiations/(response)GET /quoting/spotnegotiations/spot-negotiations/{spotNegotiationId}/(response)PUT /quoting/spotnegotiations/spot-negotiations/{spotNegotiationId}/(request & response)
Carriers:
GET /carriers/{carrierId}/power-units/{powerUnitId}/shipments/(response)
Contracts:
POST /contracts/applicable-contracts/(request)POST /contracts/{contractId}/calculate-charge-items/(request)
Benefits:
Support for heavy freight and bulk shipments
Standardized weight measurement for large loads
Better alignment with industry practices for tonnage
Improved pricing and rating calculations for heavy loads
ETA Timezone Support
Added timezone information to both carrier-specified and predictive model ETAs across all shipment stops, enabling accurate time zone-aware ETA tracking and display.
What's New:
eta_timezone- Timezone identifier for ETA values, available in bothcarrier_specified_etaandpredictive_model_etaobjects
Enhanced Endpoints (110 changes):
Shipments:
GET /shipments/(response)POST /shipments/(request & response)GET /shipments/external/(response)GET /shipments/external/{shipmentId}/(response)GET /shipments/pickups/(response)POST /shipments/pickups/(response)GET /shipments/pickups/{shipmentPickupId}/(response)PUT /shipments/pickups/{shipmentPickupId}/(request & response)POST /shipments/pickups/{shipmentPickupId}/cancel/(response)GET /shipments/{shipmentId}/(response)PUT /shipments/{shipmentId}/(request & response)PUT /shipments/{shipmentId}/add-orders/(response)POST /shipments/{shipmentId}/auto-book/(response)POST /shipments/{shipmentId}/award-quote/(response)POST /shipments/{shipmentId}/cancel/(response)POST /shipments/{shipmentId}/initiate-check-call/(response)PUT /shipments/{shipmentId}/remove-orders/{orderId}/(response)
Stops:
GET /shipments/{shipmentId}/stops/(response)POST /shipments/{shipmentId}/stops/(request & response)GET /shipments/{shipmentId}/stops/{stopId}/(response)PUT /shipments/{shipmentId}/stops/{stopId}/(request & response)
Quoting:
GET /quoting/loadboard/(response)GET /quoting/loadboard/{loadBoardShipmentId}/(response)GET /quoting/spotnegotiations/spot-negotiations/(response)GET /quoting/spotnegotiations/spot-negotiations/{spotNegotiationId}/(response)PUT /quoting/spotnegotiations/spot-negotiations/{spotNegotiationId}/(request & response)
Carriers:
GET /carriers/{carrierId}/power-units/{powerUnitId}/shipments/(response)
Purchase Orders:
POST /purchase-orders/build-shipment/(response)PUT /purchase-orders/update-built-shipment/(response)
Benefits:
Accurate time zone-aware ETA display
Proper handling of cross-timezone shipments
Reduced confusion around ETA timing
Better customer communication with local time ETAs
Improved tracking accuracy across regions
Next Stop Metadata Tracking
Added comprehensive next_stop metadata to shipment responses, providing enhanced visibility into upcoming stops and their details.
What's New:
next_stop- Complete information about the next stop in the shipment route, including location, timing, and appointment details
Enhanced Endpoints (27 changes):
Shipments:
GET /shipments/(response)POST /shipments/(request & response)GET /shipments/external/(response)GET /shipments/external/{shipmentId}/(response)GET /shipments/{shipmentId}/(response)PUT /shipments/{shipmentId}/(request & response)PUT /shipments/{shipmentId}/add-orders/(response)POST /shipments/{shipmentId}/auto-book/(response)POST /shipments/{shipmentId}/award-quote/(response)POST /shipments/{shipmentId}/cancel/(response)POST /shipments/{shipmentId}/initiate-check-call/(response)PUT /shipments/{shipmentId}/remove-orders/{orderId}/(response)
Shipment Pickups:
GET /shipments/pickups/(response)POST /shipments/pickups/(response)GET /shipments/pickups/{shipmentPickupId}/(response)PUT /shipments/pickups/{shipmentPickupId}/(request & response)POST /shipments/pickups/{shipmentPickupId}/cancel/(response)
Quoting - Spot Negotiations:
GET /quoting/spotnegotiations/spot-negotiations/(response)GET /quoting/spotnegotiations/spot-negotiations/{spotNegotiationId}/(response)PUT /quoting/spotnegotiations/spot-negotiations/{spotNegotiationId}/(request & response)
Carriers:
GET /carriers/{carrierId}/power-units/{powerUnitId}/shipments/(response)
Purchase Orders:
POST /purchase-orders/build-shipment/(response)PUT /purchase-orders/update-built-shipment/(response)
Benefits:
Complete visibility into next stop information
Enhanced shipment tracking and monitoring
Better appointment and delivery management
Improved customer communication and exception handling
Shipper Relationship Financial Tracking
Added support for credit currency and outstanding balance tracking in shipper relationships, enabling better financial management and credit monitoring.
What's New:
credit_currency- The currency used for credit terms with the shipperoutstanding_balance- Current outstanding balance for the shipper relationship
Enhanced Endpoints (12 changes):
GET /brokerages/{brokerageId}/shipper-relationships/(response)POST /brokerages/{brokerageId}/shipper-relationships/(request & response)GET /brokerages/{brokerageId}/shipper-relationships/{shipperRelationshipId}/(response)PUT /brokerages/{brokerageId}/shipper-relationships/{shipperRelationshipId}/(request & response)
Benefits:
Track credit exposure across shipper relationships
Support multi-currency credit arrangements
Monitor outstanding balances in real-time
Improve financial reporting and credit management
Credit Limit Override Support
Added support for credit limit overrides on shipment relationships and carrier assignments, enabling per-shipment credit management that overrides default relationship limits.
What's New:
credit_limit_override- Override the default credit limit for specific shipments or carrier assignmentsAvailable in both customer relationships (
relationship_to_customer) and vendor relationships (relationship_to_vendor)
Enhanced Endpoints (77 changes):
Shipments:
GET /shipments/(response)POST /shipments/(request & response)GET /shipments/external/(response)GET /shipments/external/{shipmentId}/(response)GET /shipments/{shipmentId}/(response)PUT /shipments/{shipmentId}/(request & response)PUT /shipments/{shipmentId}/add-orders/(response)POST /shipments/{shipmentId}/auto-book/(response)POST /shipments/{shipmentId}/award-quote/(request & response with new 400 status)POST /shipments/{shipmentId}/cancel/(response)POST /shipments/{shipmentId}/initiate-check-call/(response)PUT /shipments/{shipmentId}/remove-orders/{orderId}/(response)
Carrier Assignments:
GET /shipments/{shipmentId}/carrier-assignments/(response)POST /shipments/{shipmentId}/carrier-assignments/(request & response with new 400 status)GET /shipments/{shipmentId}/carrier-assignments/{carrierAssignmentId}/(response)PUT /shipments/{shipmentId}/carrier-assignments/{carrierAssignmentId}/(request & response)
Shipment Pickups:
GET /shipments/pickups/(response)POST /shipments/pickups/(response)GET /shipments/pickups/{shipmentPickupId}/(response)PUT /shipments/pickups/{shipmentPickupId}/(request & response)POST /shipments/pickups/{shipmentPickupId}/cancel/(response)
Quoting - Spot Negotiations:
GET /quoting/spotnegotiations/spot-negotiations/(response)GET /quoting/spotnegotiations/spot-negotiations/{spotNegotiationId}/(response)PUT /quoting/spotnegotiations/spot-negotiations/{spotNegotiationId}/(request & response)
Carriers:
GET /carriers/{carrierId}/power-units/{powerUnitId}/shipments/(response)
Purchase Orders:
POST /purchase-orders/build-shipment/(response)PUT /purchase-orders/update-built-shipment/(response)
Benefits:
Override default credit limits for high-value or special circumstances shipments
Granular credit management at the shipment level
Flexible credit controls for carrier assignments
Better risk management and credit exposure control
Improvements
Enhanced Query Filtering
Expanded query parameter support for location-based filters to accept both single values and arrays, enabling more flexible and powerful search capabilities.
What's Enhanced: Query parameters now accept both string and array types for:
delivery_stops__containsdelivery_stops_company_name__containspickup_stops__containspickup_stops_company_name__contains
Enhanced Endpoints (16 changes):
GET /quoting/loadboard/(all 4 parameters)GET /shipments/(all 4 parameters)
Benefits:
Search for multiple locations in a single query
Reduce API calls when filtering by multiple criteria
More efficient batch operations and reporting
Improved developer experience with flexible query options
Schema Cleanup
Removed deprecated schemas that are no longer used:
NextStopAppointmentStatusRebidSelectedCarrierRebidSelectedCarriersResponseRebidSelectionUpdateRequestSendRebidNotificationsRequest
Usage Examples
Product Weight Unit with TON Support
Creating a product with TON weight unit:
POST /products/ { "name": "Steel Coils", "weight": 25.5, "weight_unit": "TON", "description": "Industrial steel coils" }
Response:
{ "id": "product_123", "name": "Steel Coils", "weight": 25.5, "weight_unit": "TON", "description": "Industrial steel coils", "created_at": "2025-01-28T10:00:00Z" }
ETA Timezone Information
Shipment stop with timezone-aware ETAs:
GET /shipments/{shipmentId}/ { "id": "shipment_789", "stops": [ { "id": "stop_123", "location": "Chicago, IL", "carrier_specified_eta": { "estimated_arrival": "2025-01-30T14:00:00Z", "eta_timezone": "America/Chicago" }, "predictive_model_eta": { "estimated_arrival": "2025-01-30T15:30:00Z", "eta_timezone": "America/Chicago" } } ] }
Creating a stop with ETA timezone:
POST /shipments/{shipmentId}/stops/ { "location_id": "location_456", "carrier_specified_eta": { "estimated_arrival": "2025-02-01T09:00:00Z", "eta_timezone": "America/Los_Angeles" } }
Shipper Relationship with Financial Tracking
Creating a shipper relationship with credit tracking:
POST /brokerages/{brokerageId}/shipper-relationships/ { "shipper_id": "shipper_123", "credit_currency": "USD", "outstanding_balance": 5000.00, "credit_limit": 50000.00 }
Response:
{ "id": "relationship_456", "shipper_id": "shipper_123", "credit_currency": "USD", "outstanding_balance": 5000.00, "credit_limit": 50000.00, "created_at": "2025-01-07T12:00:00Z" }
Next Stop Metadata
Shipment response with next stop information:
GET /shipments/{shipmentId}/ { "id": "shipment_789", "status": "in_transit", "metadata": { "next_stop": { "stop_id": "stop_123", "appointment_status": "confirmed", "location": "Chicago, IL", "scheduled_date": "2025-01-10" } }, "stops": [...] }
Credit Limit Override
Awarding a quote with credit limit override:
POST /shipments/{shipmentId}/award-quote/ { "quote_id": "quote_456", "credit_limit_override": 75000.00 }
Creating a carrier assignment with credit limit override:
POST /shipments/{shipmentId}/carrier-assignments/ { "carrier_id": "carrier_789", "credit_limit_override": 100000.00, "assignment_type": "primary" }
Response includes the override in relationship data:
{ "id": "assignment_123", "carrier_id": "carrier_789", "credit_limit_override": 100000.00, "shipment": { "id": "shipment_789", "relationship_to_vendor": { "credit_limit_override": 100000.00 } } }
Enhanced Array-Based Query Filtering
Single value (existing functionality):
GET /shipments/?pickup_stops__contains=Chicago
Multiple values (new functionality):
GET /shipments/?pickup_stops__contains=Chicago&pickup_stops__contains=Detroit&pickup_stops__contains=Milwaukee
Or using array notation:
GET /shipments/?pickup_stops__contains[]=Chicago&pickup_stops__contains[]=Detroit
Migration Guide
Optional Enhancements
Adopt TON Weight Unit for Heavy Freight (Optional)
Use
TONfor shipments and products involving tonnageUpdate pricing and rating logic to handle ton-based weights
Integrate TON support into your product catalog for bulk items
Use ETA Timezone Information (Optional)
Read
eta_timezonefrom ETA objects in stop responsesDisplay ETAs in local timezone for better customer communication
Include
eta_timezonewhen creating or updating stops with ETAsImplement timezone-aware ETA calculations and displays
Use Next Stop Metadata (Optional)
Read
next_stopfrom shipment metadata responsesIntegrate next stop information into your tracking and monitoring systems
Enhance customer communication with detailed next stop information
Adopt Shipper Relationship Financial Tracking (Optional)
If you manage credit terms and balances for shippers:
Add
credit_currencywhen creating/updating shipper relationshipsInclude
outstanding_balanceto track current balancesUpdate your financial tracking to consume these fields from API responses
Use Credit Limit Override for Granular Credit Control (Optional)
If you manage credit limits for shipments and carriers:
Include
credit_limit_overridewhen awarding quotes or creating carrier assignments for special circumstancesRead
credit_limit_overridefrom relationship data in shipment responsesIntegrate override values into your credit management and risk assessment systems
Leverage Enhanced Query Filtering (Optional)
Update location-based searches to use array parameters for multi-location queries
Optimize batch operations with combined filters
Reduce API call volume for multi-criteria searches
Backward Compatibility
Backward Compatible Changes:
New
TONweight unit enum value is additive for most endpointsNew
eta_timezoneproperty is optionalNew
next_stopmetadata property is optionalNew
credit_currencyandoutstanding_balancefields are optionalNew
credit_limit_overridefield is optionalNew custom field types (DATE, FLOAT, INTEGER, TIME) are additive enum values
Enhanced query parameters maintain existing single-value functionality
Removed schemas were already deprecated
Potential Client Impact:
Weight unit enum expansion: Clients with strict enum validation for shipments/line items may need updates to accept
TONNew 400 error responses:
POST /shipments/{shipmentId}/award-quote/andPOST /shipments/{shipmentId}/carrier-assignments/now include 400 status responses for validation errors
Testing Recommendations:
Test product creation and updates with all supported weight units
Test shipment creation with TON weight unit if applicable
Verify ETA timezone parsing in stop responses
Verify credit limit override functionality if you plan to implement it
Consider adopting optional enhancements based on your business needs
Analytics Model Updates
Data Share:
dim_contract - Consolidated contract dimension supporting both legacy and lane-based contract patterns.
dim_contract_key: Primary key (surrogate key from contract_id, lane_id, rate_table_id, rate_band_id, and location fields)
contract_id: The internal contract ID
contract_name: The human-readable name of the contract
status: The current status of the contract (e.g., active, inactive, expired)
origin_city: The city where the shipment originates
origin_state_province: State or province of the origin location
origin_postal_code: Postal code of the origin location
destination_city: The city where the shipment is delivered
destination_state_province: State or province of the destination location
destination_postal_code: Postal code of the destination location
modes: The transportation modes covered by this contract (e.g., FTL, LTL)
equipment_types: The equipment types allowed under this contract
minimum_rate: The minimum rate for this contract
band_calculation_measurement: The measurement type used for rate band calculations (new contracts only)
start_datetime: When the contract becomes effective
end_datetime: When the contract expires
contract_rate: The rate defined directly on the contract
rate_table_rate: The rate from the rate table (new lane-based contracts only)
contract_rate_type: The rate type for the contract rate (e.g., FLAT, RATE_TABLE, PER_MILE)
rate_table_rate_type: The rate type for the rate table rate (new contracts only)
rate_application_type: How the rate is applied (from rate bands in new contracts)
distance_miles: The distance in miles covered by this contract
carrier_relationship_id: Foreign key to the freight authority vendor relationship
carrier_name: The name of the carrier under this contract
company_id: The ID of the company (freight authority) that owns this contract
company_name: The name of the company (freight authority) that owns this contract
fuel_included: Whether fuel surcharges are included in the contract rate
additional_stop_charge_flat_fee: Flat fee charged for additional stops
created_at: When the contract was created
updated_at: When the contract was last updated
lane_id: The lane ID for new lane-based contracts (null for legacy contracts)
rate_table_id: The rate table ID for new contracts (null for legacy contracts)
rate_band_id: The rate band ID for new contracts (null for legacy contracts)
_loaded_datetime: The timestamp when the record was loaded into the warehouse
fact_shipment_group - each row represents a shipment-to-group association at the shipment metadata level.
fact_shipment_group_key: Primary key
dim_shipment_detail_key: Foreign key to dim_shipment_detail
group_id: The internal group ID
group_external_id: The external identifier for the group
group_name: The human-readable name of the group
group_description: A description of the group's purpose or contents
parent_group_id: The ID of the parent group if this is a nested group
group_status: The current status of the group
created_at: When the shipment-group association was created
group_updated_at: The latest update time between shipment metadata and group
_loaded_datetime: Timestamp when the record was loaded into the data warehouse
fact_shipment_group_summary - Each row represents a shipment with its associated groups aggregated into summary fields. This is a rollup of fact_shipment_group, providing comma-separated lists of group names and IDs per shipment.
dim_shipment_detail_key: Primary key and foreign key to dim_shipment_detail
group_names: Comma-separated list of all group names associated with this shipment
group_external_ids: Comma-separated list of all external group IDs associated with this shipment
group_count: The total number of distinct groups associated with this shipment
group_updated_at: The most recent update time across all groups for this shipment
_loaded_datetime: Timestamp when the record was loaded into the data warehouse
fact_shipment_order_group - Each row represents a shipment-to-group association via purchase orders.
fact_shipment_order_group_key: Primary key
dim_shipment_detail_key: Foreign key to dim_shipment_detail
shipment_id: The shipment ID
product_order_id: The product order ID that links the shipment to the group
product_order_number: The human-readable product order number
group_id: The internal group ID from product_order_group
group_external_id: The external identifier for the group
group_name: The human-readable name of the group
group_description: A description of the group's purpose or contents
parent_group_id: The ID of the parent group if this is a nested group
tenant_id: The tenant ID that owns this group
group_updated_at: The latest update time among shipment, product order, and group
_loaded_datetime: Timestamp when the record was loaded into the data warehouse
dim_shipment_detail - new field added to this table
trailer_number: Unique identifier for the trailer used in this shipment
contract_id: Unique identifier for the contract used to book this shipment (if applicable)
contract_name: Human-readable name of the contract used to book this shipment (if applicable)
contract_status: Current status of the contract associated with this shipment
contract_applied_at: Timestamp when the contract was applied to this shipment
stage_id: The internal stage ID
multi_stage_shipment_id: UUID for the multi-stage shipment
multi_stage_reference_id: 6-character reference id for multi-stage shipments
Other Minor Enhancements and Bug Fixes
Squad | Jira # | Bug or Enhancement | Severity | Description | Customer |
Squad | Jira # | Bug or Enhancement | Severity | Description | Customer |
Bug | Sev 2 | LTL loads marked as Delivered when still in transit | Barkman Honey | ||
Bug | Sev 3 | UPS shipments are not coming back with writeback files | The Peggs Company, Inc. | ||
Bug | Sev 2 | Auto Quote and Tender routing guide failure | Ecore International | ||
Bug | Sev 2 | Unable to select carrier from the bid | CG Roxane | ||
Bug | Sev 2 | Automatic Tender Acceptance | Dexter | ||
Bug | Sev 2 | ABFS not requesting Pre Pro on dispatch | Point Blank | ||
Bug | Sev 3 | CHR direct rates not displaying Service Level | Point Blank | ||
Bug | Sev 3 | Missing Product Field Data in Shipments - V3 Upgrade | Midea America Corp. | ||
Bug | Sev 3 | Unable to view pop-out quick views in orders dashboard | Whole Foods Market, Inc. | ||
Bug | Sev 3 | NetSuite to Shipwell Date Mapping Issue - Dates Off by One Day & Custom Field Not Populating | CHOMPS | ||
Bug | - | Corrogo duplicate key value violates unique constraint ix_product_order_group_group | - | ||
Bug | - | Add machine_code for equipment type serializer | - | ||
Bug | - | Error in processing bill.line_item.updated message | - | ||
Bug | - | Missing new references data on the order release route | - | ||
Bug | - | Shipment Stops Missing Company Name and Location Name When Order Has No Address Book Reference | - | ||
Bug | - | NetSuite SuiteApp can't find vendor | - | ||
Bug | - | Filtering not working at the State level and some state are being duplicated when selected | VH Greenhouse | ||
Bug | - | Next Stop Appointment Status filter is not working in PROD | - | ||
Task | - | NetSuite testing OneWorld | - | ||
Bug | - | NetSuite Credentials Refresh resetting settings | - | ||
Bug | - | Create shipment from order isn't setting the groups field automatically from the group on the order | - | ||
Bug | Sev 3 | V3 Orders - Missing Product Field Data in Shipments Using Bulk Create Shipment option | Midea America Corp. | ||
Bug | Sev 3 | Customs Information not populating | Hanes Companies, Inc | ||
Story | - | Add Tons (TON) as a weight unit | HF Sinclair | ||
Story | - | Enforce Customer Credit Limit when Assigning Carriers | Primo | ||
Bug | Sev 3 | WFM-when a PO with CO2 cooler is combined with another PO shipping from BAF cooler, BAF script is not running and charges are still $0.00. | Whole Foods Market, Inc. | ||
Bug | - | [iOS][5.7.6] Text Entry Bubble blocked by Keyboard | Graceland Management | ||
Bug | Sev 3 | FE - Unable see events | - | ||
Story | - | EDI214 - Fix shipment_state event | - |