DSDC LTL eBOL API
The Digital LTL Council's electronic bill of lading standard, version 2.1.0 — the council's first and most adopted contract. This is the standard's own specification, not any carrier's implementation.
The Digital LTL Council's electronic bill of lading standard, version 2.1.0 — the council's first and most adopted contract. This is the standard's own specification, not any carrier's implementation.
openapi: 3.0.0
info:
description: 'This document provides an electronic Bill of Lading (eBOL). The eBOL is a legal document that provides a contract between the shipper, carrier and consignee stating what goods are being shipped, where the shipment is coming from and where it’s headed to. “Pro” number is the unique identifier for the document for update and delete functions.'
version: "2.1.0"
title: Electronic Bill Of Lading Service
paths:
/bol/v1/app/:
post:
summary: Create an Electronic Bill of Lading
tags:
- Carrier API Standards
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/BOL_Request'
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/BOL_Response'
'400':
description: Error response
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Result_Status_Codes'
/bol/v1/app/{pro}:
put:
summary: Update an Electronic Bill of Lading
tags:
- Carrier API Standards
description: This operation updates an existing Electronic Bill of Lading.
parameters:
- in: path
name: pro
schema:
type: string
required: true
description: PRO Number of eBOL to update.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/BOL_Request'
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/BOL_Response'
'400':
description: Error response
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Result_Status_Codes'
'404':
description: eBOL not found.
delete:
summary: Delete an Electronic Bill of Lading
description: This operation deletes an existing Electronic Bill of Lading.
parameters:
- in: path
name: pro
schema:
type: string
required: true
description: PRO Number of eBOL to delete.
operationId: ''
tags:
- Carrier API Standards
responses:
'200':
description: Successful response.
'404':
description: eBOL not found.
'400':
description: Error response
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Result_Status_Codes'
components:
schemas:
BOL_Request:
title: LTL BOL Request
description: >-
Objects and/or attributes that are required are indicated by a _**red
asterisk**_*. For those that are conditionally required, it will be
indicated within their description, including the condition in which
they are required.
type: object
required:
- bol
- version
- commodities
- payment
- origin
- destination
- billTo
properties:
bol:
type: object
required:
- function
- requestedPickupDate
- isTest
- requestorRole
properties:
requestedPickupDate:
type: string
example: '2022-11-20T00:00:00.000'
description: |
The intended Ship Date. NOTE this does not serve as a Pickup Request
Valid Formats:
* YYYY-MM-DDTHH:mm:ss.sss (ISO 8601)
function:
type: string
example: Create
description: |
The intent for the submitted request.
Valid Values:
* Create - Used for initial creation
isTest:
type: boolean
example: true
description: >-
Indicates whether or not the submitted request is intended to be
a test or not.
requestorRole:
type: string
example: Third Party
description: |
Identifies the party making the request.
Valid Values: See Requestor_Roles schema at the bottom of this page.
specialInstructions:
type: string
example: Gate code 123 to enter complex
description: >-
Special delivery instructions that need to be followed for the
shipment's delivery.
version:
type: string
example: "2.1.0"
description: |
Indicates which minor version of the Digital LTL Council Bill of Lading spec you are consuming
Valid values: 2.0.0, 2.0.1, 2.1.0
images:
type: object
properties:
includeBol:
type: boolean
description: >
Indicates whether or not you want an image of the populated BOL
returned in the response.
Default is false.
example: true
includeShippingLabels:
type: boolean
description: >
Indicates whether or not you want image(s) of the shipping
labels returned in the response.
Default is false.
example: true
shippingLabels:
type: object
properties:
format:
type: string
description: >
Specifies the printer format type for the labels.
Required when images.includeShippingLabels is true.
Valid Values: See the Shipping_Label_Formats schema at the
bottom of this page.
example: Avery
quantity:
type: integer
description: |
Specifies the quantity of pages desired.
Required when images.includeShippingLabels is true.
example: 5
position:
type: integer
description: |
Specifies the starting position for the shipping labels.
Required when images.shippingLabel is Avery.
Valid Values:
* 1 - 6
example: 2
email:
type: object
properties:
includeBol:
type: boolean
description: >
Used to request the bill of lading PDF to be sent to one or
more email addresses
example: true
includeLabels:
type: boolean
description: >
Used to request the shipping labels PDF to be sent to one or
more email addresses
example: true
addresses:
type: array
description: >
Provide one or more email addresses to receive the bol
and/or shipping labels PDF
items:
type: string
example:
- dispatch@shipper.com
notifications:
type: array
description: >-
include if you want notifications of shipment movements by text
message or email
items:
type: object
properties:
phoneNumber:
type: string
description: Phone number of contact for updates about shipment movements
example: '8881234567'
email:
type: string
description: Email address of contact for updates about shipment movements
example: dispatch@consignee.com
referenceNumbers:
type: object
properties:
pro:
type: string
description: >-
Shipper's pre-assigned PRO number for the requested carrier. If one was not provided in the request, one will be auto assigned by the carrier. The PRO number value should include the check digit when applicable.
example: 123456-7
quoteId:
type: string
description: >-
Quote (estimate) number provided by the carrier after submitting
a rate quote request.
example: E556724
shipmentId:
type: string
description: Shipment Id (SID) number for the shipment.
example: SID9743985
masterBol:
type: string
description: Master Bill of Lading number for the shipment.
example: MBL98472587
trailerId:
type: string
description: >-
When passed, indicates that the shipment is associated to a specific, spotted trailer.
manifestId:
type: string
description: >-
When passed, indicates that the shipment is associated to a manifest that includes multiple shipments, possibly across multiple spotted trailers.
bol:
type: array
items:
type: string
example:
- BL19498432
- BL99744565
po:
type: array
items:
type: object
properties:
number:
type: string
example: '554238'
description: The Purchase Order number.
pieces:
type: integer
example: 5
description: Total pieces associated with the Purchase Order
weight:
type: integer
example: 150
description: Total weight associated with the Purchase Order
weightUnit:
type: string
example: Pounds
description: |
The unit of measurement for weight. Defaults to Pounds (Imperial) if not passed.
Valid Values: Pounds or Kilograms
palletized:
type: boolean
example: true
description: >-
Indicates whether or not the pieces associated with the
purchase order are on a pallet/slip/skid or not.
additionalShipperInfo:
type: string
example: Freight must always stay upright
description: Additional information from shipper per line item
additionalReferences:
type: array
items:
type: object
properties:
name:
type: string
example: Customer Reference Id
description: |
Indicates the name of the reference number being provided.
value:
type: string
example: CRID3452-01
description: >-
Additional reference number that correlates to the
additional reference name.
payment:
type: object
required:
- terms
properties:
terms:
type: string
example: Prepaid
description: |
Freight Billing Terms for the shipment
Valid Values: See the Payment_Terms schema at the bottom of this
page.
commodities:
type: object
required:
- lineItemLayout
- handlingUnits
- lineItems
properties:
lineItemLayout:
type: string
example: Nested
description: |
Valid values: Nested or Stacked
Nested: Indicates if the Handling Unit/Line Item relationship is
known. If this value is used, each Line Item associated to a
Handling Unit is conditionally required to be passed within that
Handling Unit's object.
Stacked: Indicates if the Handling Unit/Line Item relationship
is not known. If this value is used, Line Items may passed
within any Handling Unit object.
handlingUnits:
type: array
items:
type: object
required:
- count
- type
- weight
properties:
count:
type: integer
example: 2
description: Number of handling units being described
type:
type: string
example: SKD
description: |
Type of the handling units being described
Valid Values: See the Handling_Unit_Types schema at the
bottom of this page
tareWeight:
type: integer
example: 5
description: Weight of the skids/pallets/slips used in the shipment.
weight:
type: integer
description: Total weight for the specified handling units.
example: 1500
weightUnit:
type: string
example: Pounds
description: |
The unit of measurement for weight. Defaults to Pounds (Imperial) if not passed.
Valid Values: Pounds or Kilograms
length:
type: integer
example: 48
description: The length of the handling units being described.
width:
type: integer
example: 48
description: The width of the handling units being described.
height:
type: integer
example: 48
description: The height of the handling units being described.
dimensionsUnit:
type: string
example: Inches
description: |
The unit of measurement for dimensions. Defaults to Inches (Imperial) if not passed.
Valid Values: Inches or Centimeters
stackable:
type: boolean
example: false
description: |
Identifies whether or not the freight being described can be stacked on one another.
Default is false.
lineItems:
type: array
items:
type: object
required:
- weight
- classification
- description
- hazardous
- stackable
- pieces
- packagingType
properties:
description:
type: string
example: Small frameless mirrors
description: Description of the freight being described.
weight:
type: integer
example: 1500
description: Total weight for the specified lineItem.
weightUnit:
type: string
example: Pounds
description: |
The unit of measurement for weight. Defaults to Pounds (Imperial) if not passed.
Valid Values: Pounds or Kilograms
pieces:
type: integer
example: 3
description: >-
Number of individual pieces for the line item being
described.
packagingType:
type: string
example: BOX
description: |
Packaging type for the individual pieces of the line item being described.
Valid Values: See the Packaging_Types schema at the
bottom of this page
classification:
type: string
example: '55'
description: |
Classification of the line item being described.
Valid Values: See the Classification_Codes schema at
the bottom of this page.
nmfc:
type: string
description: NMFC code of the freight being described.
example: '86900'
nmfcSub:
type: string
description: >-
The Sub value for the NMFC of the freight being
described.
example: '3'
hazardous:
type: boolean
example: true
description: >-
Identifies whether or not the freight being
described contains hazardous materials.
hazardousDescription:
type: string
example: UN 1090, Acetone, 3, PG II
description: >-
Conditionally required when 'hazardous' is 'true'.
Provides a detailed description of the hazardous
item.
hazardousDetails:
type: object
properties:
weight:
type: integer
example: 45
description: >-
Total weight of hazardous material coveraged by
one description.
weightUnit:
type: string
example: Pounds
description: |
The unit of measurement for weight. Defaults to Pounds (Imperial) if not passed.
Valid Values: Pounds or Kilograms
class:
type: string
example: '3'
description: >-
Class that the hazardous material is catogorized
by.
unnaNumber:
type: string
example: UN1234
description: >-
Proper Identification Number (UN or NA)
corresponding to the Proper Shipping Name
propername:
type: string
example: Anhydrous ammonia
description: |
Proper shipping name for the hazardous material.
From DOT regulations 172.101
technicalName:
type: string
example: NH3
description: >
Technical name for the hazardous material. Not
all hazardous items will have a technical name.
From DOT regulations 172.101
packingGroup:
type: string
example: '2'
description: >-
Hazmat Packing Group number. Not all hazmat
items have a packing group
contractNumber:
type: string
example: '54321'
description: >-
The contract number with the hazardous materials
contact
shipmentTotals:
type: object
properties:
grossWeight:
type: integer
example: 2000
description: >-
Total weight of the entire shipment, including handling units
(tare weight).
netWeight:
type: integer
example: 1993
description: >-
Total weight of the entire shipment, not including handling
units (tare weight).
weightUnit:
type: string
example: Pounds
description: |
The unit of measurement for weight. Defaults to Pounds (Imperial) if not passed.
Valid Values: Pounds or Kilograms
handlingUnits:
type: integer
example: 2
description: Handling unit count for the entire shipment
linearLength:
type: integer
description: Linear length for the entire shipment
example: 96
dimensionsUnit:
type: string
example: Inches
description: |
The unit of measurement for dimensions. Defaults to Inches (Imperial) if not passed.
Valid Values: Inches or Centimeters
cube:
type: integer
example: 128
description: >-
Cubic volume of the entire shipment (total length X total width
X total height).
cubeDimensionsUnit:
type: string
example: Feet
description: |
The unit of measurement for cubic dimensions. Defaults to Feet (Imperial) if not passed.
Valid Values: Feet or Meters
declaredValue:
type: integer
example: 7
description: >-
Total monetary value of the shipment in USD (sometimes needed
for cross-border moves).
currency:
type: string
example: USD
description: |
Optional attribute to indicate currency of declaredValue.
Defaults to USD.
Valid values: See the Currencies schema at the bottom of this
page.
accessorials:
type: object
properties:
codes:
type: array
description: |
An array to hold the list of services requested for the shipment
Valid Values: See the Accessorial_Codes schema at the bottom of
this page.
items:
type: string
example:
- IDL
- LFTP
hazardousDetails:
type: object
description: >
Required if accessorial codes list contains HAZ and/or if any
commodity line item's hazardous flag is set to true.
properties:
emergencyContact:
type: object
properties:
name:
type: string
example: Manny Delgato
description: >-
Full name of who should be contacted in the case of a
hazardous materials-related issue.
phone:
type: string
example: '7775558899'
description: |
Phone number of who should be contacted in the case of a hazardous materials-related issue.
Valid Formats:
* ########## (10 digits - Area code + phone)
cod:
type: object
description: >
Required when accessorial code COD is present in the
accessorial.codes list.
properties:
amount:
type: string
example: '56.71'
description: |
Amount to be received for the COD.
Valid Formats:
* ##.## (2 decimal places only)
currency:
type: string
example: USD
description: |
Optional attribute to indicate currency of COD. Defaults to USD.
Valid values: See the Currencies schema at the bottom of this page.
terms:
type: string
example: Collect
description: |
Payment terms associated with the COD.
Valid Values:
* Prepaid
* Collect
customerCheckAcceptable:
type: boolean
example: true
description: >-
Indicates whether or not a customer check or cash is
acceptable.
remitTo:
type: object
description: >
Required when accessorial code COD is present in the
accessorial.codes list.
properties:
name:
type: string
description: Name of the remit to company.
example: Dog Beds by Stella
address1:
type: string
description: Primary Address line of the remit to company.
example: 121 S. Cliffwood Ave.
address2:
type: string
description: Secondary Address of the remit to company.
example: Suite 55
city:
type: string
example: Los Angeles
description: City Name of the remit to company.
stateProvince:
type: string
description: |
Two letter state/province code of the remit to company.
Valid Values: See the State_Province_Codes schema at the bottom of this page.
example: CA
postalCode:
type: string
example: '90001'
description: >
The 5-digit + 4 or 5-digit for the United States, 5-digit for Mexico, or 6-character for Canada, postal code for the remit to company location.
Valid formats:
* 12345-1234 (5 digits + 4 - USA)
* 12345 (5 digits - USA/MEX)
* A1A1A1 (6 characters - CAN)
* A1A1A (5 characters - CAN)
country:
type: string
example: USA
description: |
Three letter country code of the remit to company.
Valid Values: See the Country_Codes schema at the bottom of this page.
sortAndSegregateDetails:
type: object
description: >
Required when accessorial code SRT is present in the
accessorial.codes list.
properties:
pieces:
type: integer
description: Number of pieces in a shipment to be sorted/segregated
example: 25
fullValueCoverageDetails:
type: object
description: >
Required when accessorial code FVC is present in the
accessorial.codes list.
properties:
monetaryValue:
type: string
description: |
Value of the cargo.
Valid Formats:
* ##.## (2 decimal places only)
example: '100.00'
currency:
type: string
example: USD
description: |
Optional attribute to indicate currency of monetaryValue.
Defaults to USD.
Valid values: See the Currencies schema at the bottom of this page.
markDetails:
type: object
description: >
Required when accessorial code MARK is present in the
accessorial.codes list.
properties:
pieces:
type: integer
description: Number of pieces in a shipment requiring marking or tagging
example: 25
limitedAccessType:
type: object
description: >
Optional attribute to indicate the limited access type when
accessorial code LTDAP or LTDAD is present in the
accessorial.codes list.
properties:
origin:
type: string
description: >
Optional attribute to indicate the limited access type when
accessorial code LTDAP is present in the accessorial.codes
list.
Valid Values: See the Limited_Access_Types schema at the
bottom of this page.
example: Church
destination:
type: string
description: >
Optional attribute to indicate the limited access type when
accessorial code LTDAD is present in the accessorial.codes
list.
Valid Values: See the Limited_Access_Types schema at the
bottom of this page.
example: Secure
timeCriticalDetails:
type: object
properties:
type:
type: string
example: Delivery Window
description: >
Type of delivery required for the requested Time Critical
Service.
Required when accessorials.code list include TCS.
Valid Values: See the Time_Critical_Types schema at the
bottom of this page.
date:
type: object
properties:
start:
type: string
example: '2021-05-20T00:00:00.000'
description: >
The date (with or without time) the shipment is
re
# --- truncated at 32 KB (64 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/nmfta/refs/heads/main/openapi/nmfta-dsdc-ltl-ebol-2.1.0-openapi.yml