Unfortunately, this feature is not supported on mobile devices. For the best experience, please use a computer.

project44 REST API (4.0.0)

Version 4.0.0 of project44's API

Download OpenAPI description
Languages
Servers
Mock server
https://developers.project44.com/_mock/api-reference/api-docs/
API endpoint for project44 tenants created in NA region
https://na12.api.project44.com/
API endpoint for project44 tenants created in EU region
https://eu12.api.project44.com/
API endpoint for project44 tenants created in the Sandbox environment
https://na12.api.sandbox.p-44.com/

OAuth 2.0: Client Applications

API used for registering and managing OAuth 2.0 client applications. See the "Authentication" section above for more information. To authorize API requests to project44 for an API integration, first your client application must be registered with project44, which will issue your application a client id and secret. These credentials can then be used to generate bearer tokens, which can be included on all other API requests to authorize your client application. The client application is authorized through the project44 user management UI as a machine user with username "app-{client_id}@client-applications.project44.com".

An admin user (with VOC user role "Customer Admin") must use HTTP Basic Authentication with this API to manage client applications. Basic Authentication is deprecated for all other APIs, besides token generation, in favor of passing the access token generated via OAuth 2.0.

Operations

OAuth 2.0: Token Generation

API for OAuth 2.0 token generation. See the "Authentication" section above for more information. Once your client application is registered, you can use the token generation endpoint to authenticate with your application's client id and secret in exchange for a bearer token to be included on all other API requests to authenticate as that client application. The client application is authorized through the project44 user management UI as a machine user with username "app-{client_id}@client-applications.project44.com".

To generate an access token, you may authenticate your client application by providing its client id and secret either in the body of the request or in the form of HTTP Basic Authentication (but you may not use both ways in the same request).

Operations

LTL: Quotes

Quote LTL rates and retrieve transit times.

Operations

VLTL: Quotes

API used for quoting volume LTL rates.

Operations

VLTL: Dispatch

API used for scheduling volume LTL shipments.

Operations

LTL: Dispatch

API used for scheduling LTL shipments.

Operations

LTL: Tracking

API used for the retrieval of shipment status.

Operations

LTL: Image Retrieval

Access shipment images.

Operations

TL: Tracking

project44's Truckload Tracking endpoints give you or your customers visibility into your truckload shipments, including such features as predictive ETAs and temperature tracking. Use these endpoints to initialize (POST), track (GET), update (PUT), cancel (POST) or delete(DELETE) truckload shipments. You can return shipment information by either unique system ID or by identifier.

Operations

Get list of assets for a given carrier

Request

This endpoint will return all assets for the carrier that are known to project44.

Required Fields

  • capacityProviderIdentifierValue
  • capacityProviderIdentifierType
Query
capacityProviderIdentifierTypestring

The type of identifier provided.

Enum"SCAC""DOT_NUMBER""MC_NUMBER""P44_EU""SYSTEM""P44_GLOBAL""VAT"
capacityProviderIdentifierValuestring

The identifier of the capacity provider for which assets are requested

pageinteger(int32)

Determines the range of results that are returned. Minimum: 1, Maximum: 1000, Default: 1

Default 1
sizeinteger(int32)

The page size, or maximum number of results which may be returned at once. Minimum: 1, Maximum: 1000, Default: 100

Default 100
curl -i -X GET \
  'https://developers.project44.com/_mock/api-reference/api-docs/api/v4/tl/assets?capacityProviderIdentifierType=SCAC&capacityProviderIdentifierValue=string&page=1&size=100' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>'

Responses

OK

Bodyapplication/json
infoMessagesArray of objects(Message)

List of messages associated with the results

paginationInfoobject(PaginationInfo)

Pagination information about a collection of resources.

resultsArray of objects(TruckloadEquipmentIdentifier)

List of resources contained on this page.

Response
application/json
{ "infoMessages": [ {} ], "paginationInfo": { "total": 0, "pageSize": 0, "pageNumber": 0 }, "results": [ {} ] }

Validate equipment identifiers

Request

Use this endpoint to test an equipment identifier to see if it is a valid equipment identifier for the given carrier that may be used for tracking. If the carrier's tracking vendor does not support validating equipment identifiers without initiating tracking, then the endpoint will always report that the identifier is valid.

Equipment ID TypevalidexistsNotes
EMERSON_DEVICE_ID, SENSITECH_DEVICE_ID, TIVE_DEVICE_ID, VEHICLE_ID

True, if the equipment exists and is considered as active equipment by project44.

This equipment is owned by the capacity provider and sent in the query params.

Validity depends on the type of vendor.

True, if the equipment exists in the project44 system

This equipment is owned by the capacity provider and passed as an argument to the endpoint (see capacityProviderIdentifier.value).

The capacity provider identifier passed as an argument to the endpoint must be the owner of the equipment.
LICENSE_PLATETrue, if the asset can be used for tracking the shipment by the requester.True, if the license plate exists in the project44 system.capacity provider identifier should be set to one of identifiers of requesting organisation
MOBILE_PHONE_NUMBER

True, if there is a driver who signed up with the given phone number OR if there is no driver who signed up with the given phone number but the phone number can be used to create a shipment. (see exists field).

True, if the mobile phone was used in the past to create a shipment.

False, if there is no driver with such phone number in project44 network.

Query
capacityProviderIdentifier.typestring

Capacity provider identifier type.

Enum"SCAC""DOT_NUMBER""MC_NUMBER""P44_EU""SYSTEM""P44_GLOBAL""VAT"
capacityProviderIdentifier.valuestring

Capacity provider identifier value.

equipmentIdentifier.shouldDeleteboolean

Optional field indicating whether equipment identifier should be deleted.

equipmentIdentifier.typestring

The type of the equipment identifier.

Enum"MOBILE_PHONE_NUMBER""VEHICLE_ID""LICENSE_PLATE""SENSITECH_DEVICE_ID""EMERSON_DEVICE_ID""TIVE_DEVICE_ID""CONTAINER_ID"
equipmentIdentifier.valuestring

The value of the equipment identifier. Cell phone numbers will be obfuscated in project44 responses for privacy reasons.

curl -i -X GET \
  'https://developers.project44.com/_mock/api-reference/api-docs/api/v4/tl/equipment/validate?capacityProviderIdentifier.type=SCAC&capacityProviderIdentifier.value=string&equipmentIdentifier.shouldDelete=true&equipmentIdentifier.type=MOBILE_PHONE_NUMBER&equipmentIdentifier.value=string' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>'

Responses

OK

Body
existsboolean

True if asset exists in project44 platform. If equipment type is not MOBILE_PHONE_NUMBER and LICENSE_PLATE, capacity provider must be the owner of the equipment, otherwise false.

ownershipStatusstring

${TruckloadEquipmentValidation.apiModel.ownershipStatus.value}

Enum"CONNECTED""NOT_CONNECTED""INDETERMINATE""UNKNOWN"
validboolean

True if the identifier may be used to initiate tracking, otherwise false.

Response
{ "exists": true, "ownershipStatus": "CONNECTED", "valid": true }

Delete truckload shipment by shipment identifier

Request

Use this endpoint to delete an existing truckload shipment with a given shipment identifier.

Required Fields

  • carrierIdentifier.type
  • carrierIdentifier.value
  • shipmentIdentifier.type
  • shipmentIdentifier.value
Query
carrierIdentifier.typestring

Capacity provider identifier type.

Enum"SCAC""DOT_NUMBER""MC_NUMBER""P44_EU""SYSTEM""P44_GLOBAL""VAT"
carrierIdentifier.valuestring

Capacity provider identifier value.

shipmentIdentifier.typestring

The type of the shipment identifier.

Enum"BILL_OF_LADING""ORDER"
shipmentIdentifier.valuestring

The value of the shipment identifier.

curl -i -X DELETE \
  'https://developers.project44.com/_mock/api-reference/api-docs/api/v4/tl/shipments?carrierIdentifier.type=SCAC&carrierIdentifier.value=string&shipmentIdentifier.type=BILL_OF_LADING&shipmentIdentifier.value=string' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>'

Responses

No Content

Body
Response
{ "httpStatusCode": 0, "httpMessage": "string", "errorMessage": "string", "errors": [ {} ], "supportReferenceId": "string" }

start tracking a truckload shipment

Request

Use this POST call to start a tracking job, initializing Truckload Tracking. Note that If the shipment is initialized by using GeoCoordinates instead of an address, it may be possible that a street address will not be returned in the response.


Required Fields

  • carrierIdentifier:
    • type
    • value
  • shipmentIdentifiers:
    • type
    • value
  • shipmentStops: (at least two)
    • stopNumber
    • appointmentWindow:
      • startDateTime
      • endDateTime
    • location:
      • address: (if no geoCoordinates provided)
        • postalCode
        • addressLines
        • city
        • state (for USA, Mexico, and Canada)
      • contact:
        • companyName
    • geoCoordinates: (if no address provided)
      • latitude
      • longitude
  • capacityProviderAccountGroup: (by a few capacity providers)
    • accounts:
      • code
  • equipmentIdentifiers: (by most capacity providers)
    • type
    • value
Bodyrequired

shipment

apiConfigurationobject(TruckloadShipmentApiConfiguration)

Contains fields used to configure the truckload shipment API.

attributesArray of objects(ShipmentAttribute)

A list of up to 5 attributes (name/value pairs) to associate with this shipment. These values will be returned unchanged with each status response for the shipment and can also be used to group together related shipments in reporting scenarios, e.g. all shipments tracked for "division":"Central". The attribute names have to be unique within the list. These attributes may optionally be predefined by your organization's admin

capacityProviderAccountGroupobject(CapacityProviderAccountGroup)

The requested capacity provider account group containing the account used for authentication with the capacity provider's API.

carrierIdentifierobject(CapacityProviderIdentifier)

A capacity provider identifier object.

equipmentIdentifierChangesArray of objects(TruckloadEquipmentIdentifierChange)

A list of equipment identifier changes that should be applied to the shipment

equipmentIdentifiersArray of objects(TruckloadEquipmentIdentifier)

A user-defined list of equipment identifiers identifying truckload equipment that can be tracked, such as cell phones and electronic logging devices (ELDs). These need not be unique to this shipment.

idinteger(int64)

The project44-generated id for the shipment. This may not be provided when creating a shipment, but will always be returned in the shipment confirmation. This id may be used in subsequent API calls to reference a shipment.

idleDurationinteger(int64)

Computed value representing how long (in minutes) shipment is being Idle. This value is available while whole status history is being requested.

masterShipmentIdstring(uuid)

The project44-generated id for tracking an intermodal shipment. This id may be used in subsequent API calls to reference a shipment.

pointsOfInterestArray of objects(TruckloadShipmentPointOfInterest)

A user-defined list of all the point of interest for the shipment.

sensorsArray of objects(TruckloadShipmentSensor)

A list of sensors to track.

shipmentDetailsobject(TruckloadTrackingShipmentDetails)

Contains fields which pertain to the shipment contents.

shipmentIdentifiersArray of objects(TruckloadShipmentIdentifier)

A user-defined list of shipment identifiers that are unique to this shipment and carrier identifier. These may be used in subsequent API calls along with the carrier identifier to reference a shipment. They may also be used by project44 to track the shipment. Only one shipment identifier of each type may be provided.

shipmentLegIdstring(uuid)

The project44-generated id for the truckload shipment. This id may be used in subsequent API calls to reference a shipment.

shipmentStopsArray of objects(TruckloadShipmentStop)

A user-defined list of all the shipment stops for the shipment, including stop locations and appointment windows. This list must contain the shipment's origin and destination and any stops of interest in between (other pickup or delivery locations).

shippingDetailsobject(TruckloadShippingDetails)

Contains fields which influence the way project44 calculates arrival estimates for stops.

trackingDetailsArray of objects(TruckloadTrackingMethodDetails)

Contains information about how we obtain tracking data for the shipment. Currently, this list always includes either zero or one active tracking method. Future versions will be able to combine data from more than one tracking method. In that case, the primary tracking method will be listed first.

curl -i -X POST \
  https://developers.project44.com/_mock/api-reference/api-docs/api/v4/tl/shipments \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json' \
  -d '{
    "apiConfiguration": {
      "fallBackToDefaultAccountGroup": true,
      "webhookEndpointConfigName": "string",
      "enableIntelligentMatching": true
    },
    "attributes": [
      {
        "name": "string",
        "predefined": true,
        "value": "string",
        "values": [
          "string"
        ]
      }
    ],
    "capacityProviderAccountGroup": {
      "code": "string",
      "accounts": [
        {
          "code": "string"
        }
      ]
    },
    "carrierIdentifier": {
      "type": "SCAC",
      "value": "string"
    },
    "equipmentIdentifierChanges": [
      {
        "timestamp": "string",
        "type": "MOBILE_PHONE_NUMBER",
        "value": "string"
      }
    ],
    "equipmentIdentifiers": [
      {
        "shouldDelete": true,
        "type": "MOBILE_PHONE_NUMBER",
        "value": "string"
      }
    ],
    "id": 0,
    "idleDuration": 0,
    "masterShipmentId": "2e04ec4a-749a-4ef4-a452-b7dc8cca16aa",
    "pointsOfInterest": [
      {
        "geoCoordinates": {
          "latitude": -90,
          "longitude": -180
        },
        "location": {
          "address": {
            "postalCode": "string",
            "addressLines": [
              "str"
            ],
            "city": "string",
            "state": "string",
            "country": "US"
          },
          "contact": {
            "companyName": "string",
            "contactName": "string",
            "phoneNumber": "string",
            "phoneNumberCountryCode": "string",
            "phoneNumber2": "string",
            "phoneNumber2CountryCode": "string",
            "email": "string",
            "faxNumber": "string",
            "faxNumberCountryCode": "string"
          }
        },
        "locationIdentifiers": [
          {
            "type": "EXTERNAL",
            "value": "string"
          }
        ],
        "pointOfInterestDescription": "string",
        "pointOfInterestId": "string",
        "pointOfInterestName": "string",
        "pointOfInterestType": "GENERAL",
        "shouldDelete": true
      }
    ],
    "sensors": [
      {
        "identifier": {
          "type": "TEMPERATURE",
          "value": "string"
        },
        "max": 0.1,
        "min": 0.1,
        "target": 0.1
      }
    ],
    "shipmentDetails": {
      "lineItems": [
        {
          "commodityCode": "string",
          "contact": {
            "companyName": "string",
            "contactName": "string",
            "phoneNumber": "string",
            "phoneNumberCountryCode": "string",
            "phoneNumber2": "string",
            "phoneNumber2CountryCode": "string",
            "email": "string",
            "faxNumber": "string",
            "faxNumberCountryCode": "string"
          },
          "deliveryStopNumber": 0,
          "description": "string",
          "freightClass": "50",
          "handlingUnitPackageType": "PLT",
          "handlingUnitQuantity": 0,
          "involvedParties": [
            {
              "partyIdentifiers": [
                {}
              ]
            }
          ],
          "itemIdentifiers": [
            {
              "type": "PURCHASE_ORDER",
              "value": "string"
            }
          ],
          "itemPackageType": "BAG",
          "itemQuantity": 0,
          "monetaryValue": {
            "currency": "USD",
            "amount": 0
          },
          "pickupStopNumber": 0,
          "subLineItems": [
            {
              "commodityCode": "string",
              "contact": {
                "companyName": "string",
                "contactName": "string",
                "phoneNumber": "string",
                "phoneNumberCountryCode": "string",
                "phoneNumber2": "string",
                "phoneNumber2CountryCode": "string",
                "email": "string",
                "faxNumber": "string",
                "faxNumberCountryCode": "string"
              },
              "description": "string",
              "freightClass": "50",
              "involvedParties": [
                {
                  "partyIdentifiers": []
                }
              ],
              "itemIdentifiers": [
                {}
              ],
              "itemPackageType": "BAG",
              "itemQuantity": 0,
              "monetaryValue": {
                "currency": "USD",
                "amount": 0
              },
              "totalWeight": {
                "weight": 0,
                "weightUnit": "LB"
              }
            }
          ],
          "totalWeight": {
            "weight": 0,
            "weightUnit": "LB"
          }
        }
      ]
    },
    "shipmentIdentifiers": [
      {
        "type": "BILL_OF_LADING",
        "value": "string"
      }
    ],
    "shipmentLegId": "6798b072-0783-4009-baaf-2b9780277fbd",
    "shipmentStops": [
      {
        "stopNumber": 1,
        "appointmentWindow": {
          "startDateTime": "2019-08-24T14:15:22Z",
          "endDateTime": "2019-08-24T14:15:22Z",
          "localTimeZoneIdentifier": "string"
        },
        "additionalAppointmentWindows": [
          {
            "type": "STRATEGIC",
            "appointmentWindow": {
              "startDateTime": "2019-08-24T14:15:22Z",
              "endDateTime": "2019-08-24T14:15:22Z",
              "localTimeZoneIdentifier": "string"
            },
            "appointmentStatus": "PENDING",
            "identifiers": [
              {
                "type": "DOCK",
                "value": "string"
              }
            ]
          }
        ],
        "location": {
          "address": {
            "postalCode": "string",
            "addressLines": [
              "str"
            ],
            "city": "string",
            "state": "string",
            "country": "US"
          },
          "contact": {
            "companyName": "string",
            "contactName": "string",
            "phoneNumber": "string",
            "phoneNumberCountryCode": "string",
            "phoneNumber2": "string",
            "phoneNumber2CountryCode": "string",
            "email": "string",
            "faxNumber": "string",
            "faxNumberCountryCode": "string"
          }
        },
        "locationIdentifiers": [
          {
            "type": "EXTERNAL",
            "value": "string"
          }
        ],
        "stopName": "string",
        "geoCoordinates": {
          "latitude": -90,
          "longitude": -180
        },
        "stopType": "PICKUP",
        "stopDescription": "string",
        "involvedParties": [
          {
            "partyIdentifiers": [
              {
                "type": "ACCOUNT",
                "value": "string"
              }
            ]
          }
        ],
        "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
        "externalArrivalEstimate": {
          "source": "SHIPPER",
          "dateTime": "2019-08-24T14:15:22Z"
        }
      }
    ],
    "shippingDetails": {
      "multipleDrivers": true,
      "truckDetails": {
        "truckDimensions": {
          "length": 0,
          "width": 0,
          "height": 0,
          "unitOfMeasure": "IN"
        },
        "weight": 0,
        "weightUnitOfMeasure": "LB",
        "truckType": "AUTO_CARRIER"
      },
      "hazmatDetails": {
        "hazardClasses": [
          "string"
        ]
      }
    },
    "trackingDetails": [
      {
        "equipmentIdentifier": {
          "shouldDelete": true,
          "type": "MOBILE_PHONE_NUMBER",
          "value": "string"
        },
        "equipmentIdentifierSource": "CUSTOMER",
        "trackingType": "MOBILE_PHONE"
      }
    ]
  }'

Responses

Created

Body
infoMessagesArray of objects(Message)

System messages and messages from the capacity provider with severity 'INFO' or 'WARNING'. No messages with severity 'ERROR' will be returned here.

shipmentobject(TruckloadShipment)
Response
{ "infoMessages": [ {} ], "shipment": { "apiConfiguration": {}, "attributes": [], "capacityProviderAccountGroup": {}, "carrierIdentifier": {}, "equipmentIdentifierChanges": [], "equipmentIdentifiers": [], "id": 0, "idleDuration": 0, "masterShipmentId": "2e04ec4a-749a-4ef4-a452-b7dc8cca16aa", "pointsOfInterest": [], "sensors": [], "shipmentDetails": {}, "shipmentIdentifiers": [], "shipmentLegId": "6798b072-0783-4009-baaf-2b9780277fbd", "shipmentStops": [], "shippingDetails": {}, "trackingDetails": [] } }

Update a truckload shipment by shipment identifier

Request

Use this endpoint to update a truckload shipment with a given shipment identifier.

Example: You can update location fields or appointment windows to reflect changes with this endpoint.

Note that tracking information updates are currently not supported. This includes shipmentIdentifiers, capacityProviderAccountGroup, and apiConfiguration changes.* It is suggested to first get the current shipment object from the GET shipment endpoint, make the desired modifications, and then PUT the modified shipment to this endpoint. After the modified shipment is successfully submitted, the updated stops, attributes, shipping details etc. will be applied and used in tracking from then on. If a shipment PUT request comes in with only GeoCoordinates, it is possible that a street address will not be returned in the response.


Required Fields

  • carrierIdentifier:
    • type
    • value
  • shipmentIdentifiers:
    • type
    • value
  • shipmentStops: (at least two)
    • stopNumber
    • appointmentWindow:
      • startDateTime
      • endDateTime
    • location:
      • address: (if no geoCoordinates provided)
        • postalCode
        • addressLines
        • city
        • state (for USA, Mexico, and Canada)
      • contact:
        • companyName
    • geoCoordinates: (if no address provided)
      • latitude
      • longitude
  • capacityProviderAccountGroup: (by a few capacity providers)
    • accounts:
      • code
  • equipmentIdentifiers: (by most capacity providers)
    • type
    • value
Bodyrequired

shipment

apiConfigurationobject(TruckloadShipmentApiConfiguration)

Contains fields used to configure the truckload shipment API.

attributesArray of objects(ShipmentAttribute)

A list of up to 5 attributes (name/value pairs) to associate with this shipment. These values will be returned unchanged with each status response for the shipment and can also be used to group together related shipments in reporting scenarios, e.g. all shipments tracked for "division":"Central". The attribute names have to be unique within the list. These attributes may optionally be predefined by your organization's admin

capacityProviderAccountGroupobject(CapacityProviderAccountGroup)

The requested capacity provider account group containing the account used for authentication with the capacity provider's API.

carrierIdentifierobject(CapacityProviderIdentifier)

A capacity provider identifier object.

equipmentIdentifierChangesArray of objects(TruckloadEquipmentIdentifierChange)

A list of equipment identifier changes that should be applied to the shipment

equipmentIdentifiersArray of objects(TruckloadEquipmentIdentifier)

A user-defined list of equipment identifiers identifying truckload equipment that can be tracked, such as cell phones and electronic logging devices (ELDs). These need not be unique to this shipment.

idinteger(int64)

The project44-generated id for the shipment. This may not be provided when creating a shipment, but will always be returned in the shipment confirmation. This id may be used in subsequent API calls to reference a shipment.

idleDurationinteger(int64)

Computed value representing how long (in minutes) shipment is being Idle. This value is available while whole status history is being requested.

masterShipmentIdstring(uuid)

The project44-generated id for tracking an intermodal shipment. This id may be used in subsequent API calls to reference a shipment.

pointsOfInterestArray of objects(TruckloadShipmentPointOfInterest)

A user-defined list of all the point of interest for the shipment.

sensorsArray of objects(TruckloadShipmentSensor)

A list of sensors to track.

shipmentDetailsobject(TruckloadTrackingShipmentDetails)

Contains fields which pertain to the shipment contents.

shipmentIdentifiersArray of objects(TruckloadShipmentIdentifier)

A user-defined list of shipment identifiers that are unique to this shipment and carrier identifier. These may be used in subsequent API calls along with the carrier identifier to reference a shipment. They may also be used by project44 to track the shipment. Only one shipment identifier of each type may be provided.

shipmentLegIdstring(uuid)

The project44-generated id for the truckload shipment. This id may be used in subsequent API calls to reference a shipment.

shipmentStopsArray of objects(TruckloadShipmentStop)

A user-defined list of all the shipment stops for the shipment, including stop locations and appointment windows. This list must contain the shipment's origin and destination and any stops of interest in between (other pickup or delivery locations).

shippingDetailsobject(TruckloadShippingDetails)

Contains fields which influence the way project44 calculates arrival estimates for stops.

trackingDetailsArray of objects(TruckloadTrackingMethodDetails)

Contains information about how we obtain tracking data for the shipment. Currently, this list always includes either zero or one active tracking method. Future versions will be able to combine data from more than one tracking method. In that case, the primary tracking method will be listed first.

curl -i -X PUT \
  https://developers.project44.com/_mock/api-reference/api-docs/api/v4/tl/shipments \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json' \
  -d '{
    "apiConfiguration": {
      "fallBackToDefaultAccountGroup": true,
      "webhookEndpointConfigName": "string",
      "enableIntelligentMatching": true
    },
    "attributes": [
      {
        "name": "string",
        "predefined": true,
        "value": "string",
        "values": [
          "string"
        ]
      }
    ],
    "capacityProviderAccountGroup": {
      "code": "string",
      "accounts": [
        {
          "code": "string"
        }
      ]
    },
    "carrierIdentifier": {
      "type": "SCAC",
      "value": "string"
    },
    "equipmentIdentifierChanges": [
      {
        "timestamp": "string",
        "type": "MOBILE_PHONE_NUMBER",
        "value": "string"
      }
    ],
    "equipmentIdentifiers": [
      {
        "shouldDelete": true,
        "type": "MOBILE_PHONE_NUMBER",
        "value": "string"
      }
    ],
    "id": 0,
    "idleDuration": 0,
    "masterShipmentId": "2e04ec4a-749a-4ef4-a452-b7dc8cca16aa",
    "pointsOfInterest": [
      {
        "geoCoordinates": {
          "latitude": -90,
          "longitude": -180
        },
        "location": {
          "address": {
            "postalCode": "string",
            "addressLines": [
              "str"
            ],
            "city": "string",
            "state": "string",
            "country": "US"
          },
          "contact": {
            "companyName": "string",
            "contactName": "string",
            "phoneNumber": "string",
            "phoneNumberCountryCode": "string",
            "phoneNumber2": "string",
            "phoneNumber2CountryCode": "string",
            "email": "string",
            "faxNumber": "string",
            "faxNumberCountryCode": "string"
          }
        },
        "locationIdentifiers": [
          {
            "type": "EXTERNAL",
            "value": "string"
          }
        ],
        "pointOfInterestDescription": "string",
        "pointOfInterestId": "string",
        "pointOfInterestName": "string",
        "pointOfInterestType": "GENERAL",
        "shouldDelete": true
      }
    ],
    "sensors": [
      {
        "identifier": {
          "type": "TEMPERATURE",
          "value": "string"
        },
        "max": 0.1,
        "min": 0.1,
        "target": 0.1
      }
    ],
    "shipmentDetails": {
      "lineItems": [
        {
          "commodityCode": "string",
          "contact": {
            "companyName": "string",
            "contactName": "string",
            "phoneNumber": "string",
            "phoneNumberCountryCode": "string",
            "phoneNumber2": "string",
            "phoneNumber2CountryCode": "string",
            "email": "string",
            "faxNumber": "string",
            "faxNumberCountryCode": "string"
          },
          "deliveryStopNumber": 0,
          "description": "string",
          "freightClass": "50",
          "handlingUnitPackageType": "PLT",
          "handlingUnitQuantity": 0,
          "involvedParties": [
            {
              "partyIdentifiers": [
                {}
              ]
            }
          ],
          "itemIdentifiers": [
            {
              "type": "PURCHASE_ORDER",
              "value": "string"
            }
          ],
          "itemPackageType": "BAG",
          "itemQuantity": 0,
          "monetaryValue": {
            "currency": "USD",
            "amount": 0
          },
          "pickupStopNumber": 0,
          "subLineItems": [
            {
              "commodityCode": "string",
              "contact": {
                "companyName": "string",
                "contactName": "string",
                "phoneNumber": "string",
                "phoneNumberCountryCode": "string",
                "phoneNumber2": "string",
                "phoneNumber2CountryCode": "string",
                "email": "string",
                "faxNumber": "string",
                "faxNumberCountryCode": "string"
              },
              "description": "string",
              "freightClass": "50",
              "involvedParties": [
                {
                  "partyIdentifiers": []
                }
              ],
              "itemIdentifiers": [
                {}
              ],
              "itemPackageType": "BAG",
              "itemQuantity": 0,
              "monetaryValue": {
                "currency": "USD",
                "amount": 0
              },
              "totalWeight": {
                "weight": 0,
                "weightUnit": "LB"
              }
            }
          ],
          "totalWeight": {
            "weight": 0,
            "weightUnit": "LB"
          }
        }
      ]
    },
    "shipmentIdentifiers": [
      {
        "type": "BILL_OF_LADING",
        "value": "string"
      }
    ],
    "shipmentLegId": "6798b072-0783-4009-baaf-2b9780277fbd",
    "shipmentStops": [
      {
        "stopNumber": 1,
        "appointmentWindow": {
          "startDateTime": "2019-08-24T14:15:22Z",
          "endDateTime": "2019-08-24T14:15:22Z",
          "localTimeZoneIdentifier": "string"
        },
        "additionalAppointmentWindows": [
          {
            "type": "STRATEGIC",
            "appointmentWindow": {
              "startDateTime": "2019-08-24T14:15:22Z",
              "endDateTime": "2019-08-24T14:15:22Z",
              "localTimeZoneIdentifier": "string"
            },
            "appointmentStatus": "PENDING",
            "identifiers": [
              {
                "type": "DOCK",
                "value": "string"
              }
            ]
          }
        ],
        "location": {
          "address": {
            "postalCode": "string",
            "addressLines": [
              "str"
            ],
            "city": "string",
            "state": "string",
            "country": "US"
          },
          "contact": {
            "companyName": "string",
            "contactName": "string",
            "phoneNumber": "string",
            "phoneNumberCountryCode": "string",
            "phoneNumber2": "string",
            "phoneNumber2CountryCode": "string",
            "email": "string",
            "faxNumber": "string",
            "faxNumberCountryCode": "string"
          }
        },
        "locationIdentifiers": [
          {
            "type": "EXTERNAL",
            "value": "string"
          }
        ],
        "stopName": "string",
        "geoCoordinates": {
          "latitude": -90,
          "longitude": -180
        },
        "stopType": "PICKUP",
        "stopDescription": "string",
        "involvedParties": [
          {
            "partyIdentifiers": [
              {
                "type": "ACCOUNT",
                "value": "string"
              }
            ]
          }
        ],
        "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
        "externalArrivalEstimate": {
          "source": "SHIPPER",
          "dateTime": "2019-08-24T14:15:22Z"
        }
      }
    ],
    "shippingDetails": {
      "multipleDrivers": true,
      "truckDetails": {
        "truckDimensions": {
          "length": 0,
          "width": 0,
          "height": 0,
          "unitOfMeasure": "IN"
        },
        "weight": 0,
        "weightUnitOfMeasure": "LB",
        "truckType": "AUTO_CARRIER"
      },
      "hazmatDetails": {
        "hazardClasses": [
          "string"
        ]
      }
    },
    "trackingDetails": [
      {
        "equipmentIdentifier": {
          "shouldDelete": true,
          "type": "MOBILE_PHONE_NUMBER",
          "value": "string"
        },
        "equipmentIdentifierSource": "CUSTOMER",
        "trackingType": "MOBILE_PHONE"
      }
    ]
  }'

Responses

OK

Body
infoMessagesArray of objects(Message)

System messages and messages from the capacity provider with severity 'INFO' or 'WARNING'. No messages with severity 'ERROR' will be returned here.

shipmentobject(TruckloadShipment)
Response
{ "infoMessages": [ {} ], "shipment": { "apiConfiguration": {}, "attributes": [], "capacityProviderAccountGroup": {}, "carrierIdentifier": {}, "equipmentIdentifierChanges": [], "equipmentIdentifiers": [], "id": 0, "idleDuration": 0, "masterShipmentId": "2e04ec4a-749a-4ef4-a452-b7dc8cca16aa", "pointsOfInterest": [], "sensors": [], "shipmentDetails": {}, "shipmentIdentifiers": [], "shipmentLegId": "6798b072-0783-4009-baaf-2b9780277fbd", "shipmentStops": [], "shippingDetails": {}, "trackingDetails": [] } }

Get status of a truckload shipment by shipment identifier

Request

Use this endpoint to return a truckload shipment with a given shipment identifier.

Required Fields

  • carrierIdentifier.type
  • carrierIdentifier.value
  • shipmentIdentifier.type
  • shipmentIdentifier.value
Query
carrierIdentifier.typestring

Capacity provider identifier type.

Enum"SCAC""DOT_NUMBER""MC_NUMBER""P44_EU""SYSTEM""P44_GLOBAL""VAT"
carrierIdentifier.valuestring

Capacity provider identifier value.

includeMapUrlboolean

Whether a publicly accessible URL to the shipment details page should be included in the response.

Default false
includeSensorHistoryboolean

Whether shipment sensor history ('sensorHistory') should be included in the response.

Default false
includeStatusHistoryboolean

Whether shipment status history ('statusUpdates') should be included in the response.

Default false
shipmentIdentifier.typestring

The type of the shipment identifier.

Enum"BILL_OF_LADING""ORDER"
shipmentIdentifier.valuestring

The value of the shipment identifier.

curl -i -X GET \
  'https://developers.project44.com/_mock/api-reference/api-docs/api/v4/tl/shipments/statuses?carrierIdentifier.type=SCAC&carrierIdentifier.value=string&includeMapUrl=false&includeSensorHistory=false&includeStatusHistory=false&shipmentIdentifier.type=BILL_OF_LADING&shipmentIdentifier.value=string' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>'

Responses

OK

Body
infoMessagesArray of objects(Message)

System messages and messages from the capacity provider with severity 'INFO' or 'WARNING'. No messages with severity 'ERROR' will be returned here.

latestStatusUpdateobject(TruckloadShipmentStatusUpdate)
latestStopStatusesArray of objects(TruckloadShipmentStopStatus)

The most up-to-date statuses of the vehicle in relation to each stop. One and only one status will always be returned for each stop. If the shipment does not have status 'COMPLETED' or 'DISPATCHED', this list will always contain one and only one stop status with a code of either 'EN_ROUTE' or 'ARRIVED'.

mapUrlstring

Publicly accessible URL to the shipment details page.

notificationRuleobject(TruckloadShipmentNotificationRule)

Contains fields describing properties of rule that triggered a push notification

pointOfInterestStatusArray of objects(TruckloadShipmentPointOfInterestStatus)

A list of status and their identifiers related to the point of interest.

sensorHistoriesArray of objects(TruckloadShipmentSensorHistory)

If requested, all available shipment sensor histories.

shipmentobject(TruckloadShipment)
statusUpdatesArray of objects(TruckloadShipmentStatusUpdate)

If requested, all available shipment status updates.

Response
{ "infoMessages": [ {} ], "latestStatusUpdate": { "address": {}, "geoCoordinates": {}, "statusCode": "DISPATCHED", "statusReason": {}, "stopNumber": 0, "timestamp": "string" }, "latestStopStatuses": [ {} ], "mapUrl": "string", "notificationRule": { "ruleInfo": {}, "ruleType": "DEPRECATED_SHIPMENT_LATE" }, "pointOfInterestStatus": [ {} ], "sensorHistories": [ {} ], "shipment": { "apiConfiguration": {}, "attributes": [], "capacityProviderAccountGroup": {}, "carrierIdentifier": {}, "equipmentIdentifierChanges": [], "equipmentIdentifiers": [], "id": 0, "idleDuration": 0, "masterShipmentId": "2e04ec4a-749a-4ef4-a452-b7dc8cca16aa", "pointsOfInterest": [], "sensors": [], "shipmentDetails": {}, "shipmentIdentifiers": [], "shipmentLegId": "6798b072-0783-4009-baaf-2b9780277fbd", "shipmentStops": [], "shippingDetails": {}, "trackingDetails": [] }, "statusUpdates": [ {} ] }

Get available shipment tracking methods for a carrier

Request

Use this endpoint to return available shipment tracking methods for a given carrier.

Required Fields

  • carrierIdentifier.type
  • carrierIdentifier.value
Query
carrierIdentifier.typestring

Capacity provider identifier type.

Enum"SCAC""DOT_NUMBER""MC_NUMBER""P44_EU""SYSTEM""P44_GLOBAL""VAT"
carrierIdentifier.valuestring

Capacity provider identifier value.

curl -i -X GET \
  'https://developers.project44.com/_mock/api-reference/api-docs/api/v4/tl/shipments/trackingmethods?carrierIdentifier.type=SCAC&carrierIdentifier.value=string' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>'

Responses

OK

Body
trackingMethodsArray of objects(TruckloadShipmentTrackingMethod)

An ordered list of tracking methods that can be used to track a shipment, with the most robust method available listed first. When creating a shipment, provide as many shipment identifiers and equipment identifiers as possible that match the ones in the tracking methods in this list, preferring ones first in the list over others. Each tracking method will contain either a shipment identifier or an equipment identifier, or both.

Response
{ "trackingMethods": [ {} ] }

Delete truckload shipment by unique system id

Request

Use this endpoint to delete an existing truckload shipment with a given unique system id.

Required Fields

  • id
Path
idinteger(int64)required

The project44-generated id of the shipment being deleted.

curl -i -X DELETE \
  'https://developers.project44.com/_mock/api-reference/api-docs/api/v4/tl/shipments/{id}' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>'

Responses

No Content

Body
Response
{ "httpStatusCode": 0, "httpMessage": "string", "errorMessage": "string", "errors": [ {} ], "supportReferenceId": "string" }

Get Truckload shipment by unique system id

Request

Use this endpoint to return a truckload shipment with a given unique system id.

Required Fields

  • id
Path
idinteger(int64)required

The project44-generated id of the shipment being queried.

curl -i -X GET \
  'https://developers.project44.com/_mock/api-reference/api-docs/api/v4/tl/shipments/{id}' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>'

Responses

OK

Body
apiConfigurationobject(TruckloadShipmentApiConfiguration)

Contains fields used to configure the truckload shipment API.

attributesArray of objects(ShipmentAttribute)

A list of up to 5 attributes (name/value pairs) to associate with this shipment. These values will be returned unchanged with each status response for the shipment and can also be used to group together related shipments in reporting scenarios, e.g. all shipments tracked for "division":"Central". The attribute names have to be unique within the list. These attributes may optionally be predefined by your organization's admin

capacityProviderAccountGroupobject(CapacityProviderAccountGroup)

The requested capacity provider account group containing the account used for authentication with the capacity provider's API.

carrierIdentifierobject(CapacityProviderIdentifier)

A capacity provider identifier object.

equipmentIdentifierChangesArray of objects(TruckloadEquipmentIdentifierChange)

A list of equipment identifier changes that should be applied to the shipment

equipmentIdentifiersArray of objects(TruckloadEquipmentIdentifier)

A user-defined list of equipment identifiers identifying truckload equipment that can be tracked, such as cell phones and electronic logging devices (ELDs). These need not be unique to this shipment.

idinteger(int64)

The project44-generated id for the shipment. This may not be provided when creating a shipment, but will always be returned in the shipment confirmation. This id may be used in subsequent API calls to reference a shipment.

idleDurationinteger(int64)

Computed value representing how long (in minutes) shipment is being Idle. This value is available while whole status history is being requested.

masterShipmentIdstring(uuid)

The project44-generated id for tracking an intermodal shipment. This id may be used in subsequent API calls to reference a shipment.

pointsOfInterestArray of objects(TruckloadShipmentPointOfInterest)

A user-defined list of all the point of interest for the shipment.

sensorsArray of objects(TruckloadShipmentSensor)

A list of sensors to track.

shipmentDetailsobject(TruckloadTrackingShipmentDetails)

Contains fields which pertain to the shipment contents.

shipmentIdentifiersArray of objects(TruckloadShipmentIdentifier)

A user-defined list of shipment identifiers that are unique to this shipment and carrier identifier. These may be used in subsequent API calls along with the carrier identifier to reference a shipment. They may also be used by project44 to track the shipment. Only one shipment identifier of each type may be provided.

shipmentLegIdstring(uuid)

The project44-generated id for the truckload shipment. This id may be used in subsequent API calls to reference a shipment.

shipmentStopsArray of objects(TruckloadShipmentStop)

A user-defined list of all the shipment stops for the shipment, including stop locations and appointment windows. This list must contain the shipment's origin and destination and any stops of interest in between (other pickup or delivery locations).

shippingDetailsobject(TruckloadShippingDetails)

Contains fields which influence the way project44 calculates arrival estimates for stops.

trackingDetailsArray of objects(TruckloadTrackingMethodDetails)

Contains information about how we obtain tracking data for the shipment. Currently, this list always includes either zero or one active tracking method. Future versions will be able to combine data from more than one tracking method. In that case, the primary tracking method will be listed first.

Response
{ "apiConfiguration": { "fallBackToDefaultAccountGroup": true, "webhookEndpointConfigName": "string", "enableIntelligentMatching": true }, "attributes": [ {} ], "capacityProviderAccountGroup": { "code": "string", "accounts": [] }, "carrierIdentifier": { "type": "SCAC", "value": "string" }, "equipmentIdentifierChanges": [ {} ], "equipmentIdentifiers": [ {} ], "id": 0, "idleDuration": 0, "masterShipmentId": "2e04ec4a-749a-4ef4-a452-b7dc8cca16aa", "pointsOfInterest": [ {} ], "sensors": [ {} ], "shipmentDetails": { "lineItems": [] }, "shipmentIdentifiers": [ {} ], "shipmentLegId": "6798b072-0783-4009-baaf-2b9780277fbd", "shipmentStops": [ {} ], "shippingDetails": { "multipleDrivers": true, "truckDetails": {}, "hazmatDetails": {} }, "trackingDetails": [ {} ] }

Update a truckload shipment

Request

Use this endpoint to update a truckload shipment.

Example: You can update location fields or appointment windows to reflect changes with this endpoint.

Note that tracking information updates are currently not supported. This includes shipmentIdentifiers, capacityProviderAccountGroup, and apiConfiguration changes.* It is suggested to first get the current shipment object from the GET shipment endpoint, make the desired modifications, and then PUT the modified shipment to this endpoint. After the modified shipment is successfully submitted, the updated stops, attributes, shipping details etc. will be applied and used in tracking from then on. If a shipment PUT request comes in with only GeoCoordinates, it is possible that a street address will not be returned in the response.


Required Fields

  • carrierIdentifier:
    • type
    • value
  • shipmentIdentifiers:
    • type
    • value
  • shipmentStops: (at least two)
    • stopNumber
    • appointmentWindow:
      • startDateTime
      • endDateTime
    • location:
      • address: (if no geoCoordinates provided)
        • postalCode
        • addressLines
        • city
        • state (for USA, Mexico, and Canada)
      • contact:
        • companyName
    • geoCoordinates: (if no address provided)
      • latitude
      • longitude
  • capacityProviderAccountGroup: (by a few capacity providers)
    • accounts:
      • code
  • equipmentIdentifiers: (by most capacity providers)
    • type
    • value
Path
idinteger(int64)required

The project44-generated id of the shipment being updated.

Bodyrequired

shipment

apiConfigurationobject(TruckloadShipmentApiConfiguration)

Contains fields used to configure the truckload shipment API.

attributesArray of objects(ShipmentAttribute)

A list of up to 5 attributes (name/value pairs) to associate with this shipment. These values will be returned unchanged with each status response for the shipment and can also be used to group together related shipments in reporting scenarios, e.g. all shipments tracked for "division":"Central". The attribute names have to be unique within the list. These attributes may optionally be predefined by your organization's admin

capacityProviderAccountGroupobject(CapacityProviderAccountGroup)

The requested capacity provider account group containing the account used for authentication with the capacity provider's API.

carrierIdentifierobject(CapacityProviderIdentifier)

A capacity provider identifier object.

equipmentIdentifierChangesArray of objects(TruckloadEquipmentIdentifierChange)

A list of equipment identifier changes that should be applied to the shipment

equipmentIdentifiersArray of objects(TruckloadEquipmentIdentifier)

A user-defined list of equipment identifiers identifying truckload equipment that can be tracked, such as cell phones and electronic logging devices (ELDs). These need not be unique to this shipment.

idinteger(int64)

The project44-generated id for the shipment. This may not be provided when creating a shipment, but will always be returned in the shipment confirmation. This id may be used in subsequent API calls to reference a shipment.

idleDurationinteger(int64)

Computed value representing how long (in minutes) shipment is being Idle. This value is available while whole status history is being requested.

masterShipmentIdstring(uuid)

The project44-generated id for tracking an intermodal shipment. This id may be used in subsequent API calls to reference a shipment.

pointsOfInterestArray of objects(TruckloadShipmentPointOfInterest)

A user-defined list of all the point of interest for the shipment.

sensorsArray of objects(TruckloadShipmentSensor)

A list of sensors to track.

shipmentDetailsobject(TruckloadTrackingShipmentDetails)

Contains fields which pertain to the shipment contents.

shipmentIdentifiersArray of objects(TruckloadShipmentIdentifier)

A user-defined list of shipment identifiers that are unique to this shipment and carrier identifier. These may be used in subsequent API calls along with the carrier identifier to reference a shipment. They may also be used by project44 to track the shipment. Only one shipment identifier of each type may be provided.

shipmentLegIdstring(uuid)

The project44-generated id for the truckload shipment. This id may be used in subsequent API calls to reference a shipment.

shipmentStopsArray of objects(TruckloadShipmentStop)

A user-defined list of all the shipment stops for the shipment, including stop locations and appointment windows. This list must contain the shipment's origin and destination and any stops of interest in between (other pickup or delivery locations).

shippingDetailsobject(TruckloadShippingDetails)

Contains fields which influence the way project44 calculates arrival estimates for stops.

trackingDetailsArray of objects(TruckloadTrackingMethodDetails)

Contains information about how we obtain tracking data for the shipment. Currently, this list always includes either zero or one active tracking method. Future versions will be able to combine data from more than one tracking method. In that case, the primary tracking method will be listed first.

curl -i -X PUT \
  'https://developers.project44.com/_mock/api-reference/api-docs/api/v4/tl/shipments/{id}' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json' \
  -d '{
    "apiConfiguration": {
      "fallBackToDefaultAccountGroup": true,
      "webhookEndpointConfigName": "string",
      "enableIntelligentMatching": true
    },
    "attributes": [
      {
        "name": "string",
        "predefined": true,
        "value": "string",
        "values": [
          "string"
        ]
      }
    ],
    "capacityProviderAccountGroup": {
      "code": "string",
      "accounts": [
        {
          "code": "string"
        }
      ]
    },
    "carrierIdentifier": {
      "type": "SCAC",
      "value": "string"
    },
    "equipmentIdentifierChanges": [
      {
        "timestamp": "string",
        "type": "MOBILE_PHONE_NUMBER",
        "value": "string"
      }
    ],
    "equipmentIdentifiers": [
      {
        "shouldDelete": true,
        "type": "MOBILE_PHONE_NUMBER",
        "value": "string"
      }
    ],
    "id": 0,
    "idleDuration": 0,
    "masterShipmentId": "2e04ec4a-749a-4ef4-a452-b7dc8cca16aa",
    "pointsOfInterest": [
      {
        "geoCoordinates": {
          "latitude": -90,
          "longitude": -180
        },
        "location": {
          "address": {
            "postalCode": "string",
            "addressLines": [
              "str"
            ],
            "city": "string",
            "state": "string",
            "country": "US"
          },
          "contact": {
            "companyName": "string",
            "contactName": "string",
            "phoneNumber": "string",
            "phoneNumberCountryCode": "string",
            "phoneNumber2": "string",
            "phoneNumber2CountryCode": "string",
            "email": "string",
            "faxNumber": "string",
            "faxNumberCountryCode": "string"
          }
        },
        "locationIdentifiers": [
          {
            "type": "EXTERNAL",
            "value": "string"
          }
        ],
        "pointOfInterestDescription": "string",
        "pointOfInterestId": "string",
        "pointOfInterestName": "string",
        "pointOfInterestType": "GENERAL",
        "shouldDelete": true
      }
    ],
    "sensors": [
      {
        "identifier": {
          "type": "TEMPERATURE",
          "value": "string"
        },
        "max": 0.1,
        "min": 0.1,
        "target": 0.1
      }
    ],
    "shipmentDetails": {
      "lineItems": [
        {
          "commodityCode": "string",
          "contact": {
            "companyName": "string",
            "contactName": "string",
            "phoneNumber": "string",
            "phoneNumberCountryCode": "string",
            "phoneNumber2": "string",
            "phoneNumber2CountryCode": "string",
            "email": "string",
            "faxNumber": "string",
            "faxNumberCountryCode": "string"
          },
          "deliveryStopNumber": 0,
          "description": "string",
          "freightClass": "50",
          "handlingUnitPackageType": "PLT",
          "handlingUnitQuantity": 0,
          "involvedParties": [
            {
              "partyIdentifiers": [
                {}
              ]
            }
          ],
          "itemIdentifiers": [
            {
              "type": "PURCHASE_ORDER",
              "value": "string"
            }
          ],
          "itemPackageType": "BAG",
          "itemQuantity": 0,
          "monetaryValue": {
            "currency": "USD",
            "amount": 0
          },
          "pickupStopNumber": 0,
          "subLineItems": [
            {
              "commodityCode": "string",
              "contact": {
                "companyName": "string",
                "contactName": "string",
                "phoneNumber": "string",
                "phoneNumberCountryCode": "string",
                "phoneNumber2": "string",
                "phoneNumber2CountryCode": "string",
                "email": "string",
                "faxNumber": "string",
                "faxNumberCountryCode": "string"
              },
              "description": "string",
              "freightClass": "50",
              "involvedParties": [
                {
                  "partyIdentifiers": []
                }
              ],
              "itemIdentifiers": [
                {}
              ],
              "itemPackageType": "BAG",
              "itemQuantity": 0,
              "monetaryValue": {
                "currency": "USD",
                "amount": 0
              },
              "totalWeight": {
                "weight": 0,
                "weightUnit": "LB"
              }
            }
          ],
          "totalWeight": {
            "weight": 0,
            "weightUnit": "LB"
          }
        }
      ]
    },
    "shipmentIdentifiers": [
      {
        "type": "BILL_OF_LADING",
        "value": "string"
      }
    ],
    "shipmentLegId": "6798b072-0783-4009-baaf-2b9780277fbd",
    "shipmentStops": [
      {
        "stopNumber": 1,
        "appointmentWindow": {
          "startDateTime": "2019-08-24T14:15:22Z",
          "endDateTime": "2019-08-24T14:15:22Z",
          "localTimeZoneIdentifier": "string"
        },
        "additionalAppointmentWindows": [
          {
            "type": "STRATEGIC",
            "appointmentWindow": {
              "startDateTime": "2019-08-24T14:15:22Z",
              "endDateTime": "2019-08-24T14:15:22Z",
              "localTimeZoneIdentifier": "string"
            },
            "appointmentStatus": "PENDING",
            "identifiers": [
              {
                "type": "DOCK",
                "value": "string"
              }
            ]
          }
        ],
        "location": {
          "address": {
            "postalCode": "string",
            "addressLines": [
              "str"
            ],
            "city": "string",
            "state": "string",
            "country": "US"
          },
          "contact": {
            "companyName": "string",
            "contactName": "string",
            "phoneNumber": "string",
            "phoneNumberCountryCode": "string",
            "phoneNumber2": "string",
            "phoneNumber2CountryCode": "string",
            "email": "string",
            "faxNumber": "string",
            "faxNumberCountryCode": "string"
          }
        },
        "locationIdentifiers": [
          {
            "type": "EXTERNAL",
            "value": "string"
          }
        ],
        "stopName": "string",
        "geoCoordinates": {
          "latitude": -90,
          "longitude": -180
        },
        "stopType": "PICKUP",
        "stopDescription": "string",
        "involvedParties": [
          {
            "partyIdentifiers": [
              {
                "type": "ACCOUNT",
                "value": "string"
              }
            ]
          }
        ],
        "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
        "externalArrivalEstimate": {
          "source": "SHIPPER",
          "dateTime": "2019-08-24T14:15:22Z"
        }
      }
    ],
    "shippingDetails": {
      "multipleDrivers": true,
      "truckDetails": {
        "truckDimensions": {
          "length": 0,
          "width": 0,
          "height": 0,
          "unitOfMeasure": "IN"
        },
        "weight": 0,
        "weightUnitOfMeasure": "LB",
        "truckType": "AUTO_CARRIER"
      },
      "hazmatDetails": {
        "hazardClasses": [
          "string"
        ]
      }
    },
    "trackingDetails": [
      {
        "equipmentIdentifier": {
          "shouldDelete": true,
          "type": "MOBILE_PHONE_NUMBER",
          "value": "string"
        },
        "equipmentIdentifierSource": "CUSTOMER",
        "trackingType": "MOBILE_PHONE"
      }
    ]
  }'

Responses

OK

Body
infoMessagesArray of objects(Message)

System messages and messages from the capacity provider with severity 'INFO' or 'WARNING'. No messages with severity 'ERROR' will be returned here.

shipmentobject(TruckloadShipment)
Response
{ "infoMessages": [ {} ], "shipment": { "apiConfiguration": {}, "attributes": [], "capacityProviderAccountGroup": {}, "carrierIdentifier": {}, "equipmentIdentifierChanges": [], "equipmentIdentifiers": [], "id": 0, "idleDuration": 0, "masterShipmentId": "2e04ec4a-749a-4ef4-a452-b7dc8cca16aa", "pointsOfInterest": [], "sensors": [], "shipmentDetails": {}, "shipmentIdentifiers": [], "shipmentLegId": "6798b072-0783-4009-baaf-2b9780277fbd", "shipmentStops": [], "shippingDetails": {}, "trackingDetails": [] } }

Create action for existing truckload shipment by unique system id

Request

Use this endpoint to create an action for an existing truckload shipment identified by a given unique system id.

Required Fields

  • id
  • code
Path
idinteger(int64)required

The project44-generated id of the shipment to which this action applies.

Bodyrequired

shipmentAction

codestring

The code for the action to be taken on the shipment.

Value"CANCEL"
curl -i -X POST \
  'https://developers.project44.com/_mock/api-reference/api-docs/api/v4/tl/shipments/{id}/actions' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json' \
  -d '{
    "code": "CANCEL"
  }'

Responses

Created

Body
infoMessagesArray of objects(Message)

System messages and messages from the capacity provider with severity 'INFO' or 'WARNING'. No messages with severity 'ERROR' will be returned here.

Response
{ "infoMessages": [ {} ] }

Request ad hoc equipment approval from the tracking provider

Request

Use this endpoint to request an ad hoc equipment approval from a given tracking provider.Note that this is only supported for the app-less tracking method once every 24h.


Required Fields

  • id
Path
idinteger(int64)required

The project44-generated id for the shipment.

curl -i -X POST \
  'https://developers.project44.com/_mock/api-reference/api-docs/api/v4/tl/shipments/{id}/equipmentapprovals/requests' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>'

Responses

No Content

Body
Response
{ "httpStatusCode": 0, "httpMessage": "string", "errorMessage": "string", "errors": [ {} ], "supportReferenceId": "string" }

Get status of truckload shipment by unique system id

Request

Use this endpoint to return the status of a truckload shipment with a given unique system id.

Required Fields

  • id
Path
idinteger(int64)required

The project44-generated id of the shipment being queried.

Query
includeMapUrlboolean

Whether a publicly accessible URL to the shipment details page should be included in the response.

Default false
includeSensorHistoryboolean

Whether shipment sensor history ('sensorHistory') should be included in the response.

Default false
includeStatusHistoryboolean

Whether shipment status history ('statusUpdates') should be included in the response.

Default false
curl -i -X GET \
  'https://developers.project44.com/_mock/api-reference/api-docs/api/v4/tl/shipments/{id}/statuses?includeMapUrl=false&includeSensorHistory=false&includeStatusHistory=false' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>'

Responses

OK

Body
infoMessagesArray of objects(Message)

System messages and messages from the capacity provider with severity 'INFO' or 'WARNING'. No messages with severity 'ERROR' will be returned here.

latestStatusUpdateobject(TruckloadShipmentStatusUpdate)
latestStopStatusesArray of objects(TruckloadShipmentStopStatus)

The most up-to-date statuses of the vehicle in relation to each stop. One and only one status will always be returned for each stop. If the shipment does not have status 'COMPLETED' or 'DISPATCHED', this list will always contain one and only one stop status with a code of either 'EN_ROUTE' or 'ARRIVED'.

mapUrlstring

Publicly accessible URL to the shipment details page.

notificationRuleobject(TruckloadShipmentNotificationRule)

Contains fields describing properties of rule that triggered a push notification

pointOfInterestStatusArray of objects(TruckloadShipmentPointOfInterestStatus)

A list of status and their identifiers related to the point of interest.

sensorHistoriesArray of objects(TruckloadShipmentSensorHistory)

If requested, all available shipment sensor histories.

shipmentobject(TruckloadShipment)
statusUpdatesArray of objects(TruckloadShipmentStatusUpdate)

If requested, all available shipment status updates.

Response
{ "infoMessages": [ {} ], "latestStatusUpdate": { "address": {}, "geoCoordinates": {}, "statusCode": "DISPATCHED", "statusReason": {}, "stopNumber": 0, "timestamp": "string" }, "latestStopStatuses": [ {} ], "mapUrl": "string", "notificationRule": { "ruleInfo": {}, "ruleType": "DEPRECATED_SHIPMENT_LATE" }, "pointOfInterestStatus": [ {} ], "sensorHistories": [ {} ], "shipment": { "apiConfiguration": {}, "attributes": [], "capacityProviderAccountGroup": {}, "carrierIdentifier": {}, "equipmentIdentifierChanges": [], "equipmentIdentifiers": [], "id": 0, "idleDuration": 0, "masterShipmentId": "2e04ec4a-749a-4ef4-a452-b7dc8cca16aa", "pointsOfInterest": [], "sensors": [], "shipmentDetails": {}, "shipmentIdentifiers": [], "shipmentLegId": "6798b072-0783-4009-baaf-2b9780277fbd", "shipmentStops": [], "shippingDetails": {}, "trackingDetails": [] }, "statusUpdates": [ {} ] }

TL: Available Vehicles

API used for fetching vehicles within a specific radius and time window. Can only be used if opted into a project44 Co-Op.

Operations

TL: Connected Capacity

API for finding new connected carrier partners in the project44 network based on tracking performance

Operations

Rail: Tracking

API used for accessing rail shipment tracking.

Operations

Capacity Provider Account Group Management

Manage capacity provider account groups. Groups are used to sort capacity provider accounts on a per customer or location basis.

For example, you can add multiple capacity providers to a group if they all share lanes to the same origin/destination location.

Another example, if certain customers receive different rates for a capacity provider, it may be reasonable to use separate groups for each customer's capacity provider accounts.

Use these APIs to create (POST), retrieve (GET) or delete (DELETE) capacity provider account groups.

Operations

Capacity Provider Account Management

Manage capacity provider accounts where a capacity provider is typically used to represent a carrier.

Capacity providers have capacity provider account definitions also known as capacity provider account types. Capacity provider accounts are arranged in sets where each set contains one or more accounts for the same capacity provider. Each capacity provider's service is compatible with one and only one of these capacity provider accounts. Because most capacity providers have only one capacity provider account definition, most sets will contain only one capacity provider account. For capacity providers with more then one account definition, the set of accounts may consist of one account per account definition.

For example, FedEx has a standard account to be used with LTL rating, LTL and Volume LTL dispatch, tracking, and imaging and a separate account for Volume LTL rating. A set of FedEx capacity provider accounts may have a single standard account, a single volume LTL rating account, or both. Providing the capacity provider account set code in the request resolves which capacity provider account to use.

Capacity provider specific credential information is available in the portal.

Use these APIs to create (POST), retrieve (GET), update (POST) or delete (DELETE) capacity provider accounts.

Operations

Capacity Provider Contact Management

Manage locations. Locations combine physical addresses with contact details and are used in configuring Capacity Provider Accounts and Stop Locations, for example to identify the Bill To party.

Use these APIs to create (POST), update (PUT) or retrieve (GET) locations.

These operations are also all available under the /locations endpoint for backward compatibility.

Operations

Order Visibility

API used for orders and inventory items

Operations

Shipment: Tracking

API used for Shipment Tracking.

Operations

Shipment: Loads

API used for tracking Loads.

Operations

Multi-Modal: Image Retrieval

Access shipment images.

Operations

Shipment Attributes

Create and fetch predefined custom attributes for shipments. You must be a organization admin to perform this operation.

Operations

Capacity Provider Metadata

Retrieve capacity provider information needed to set up capacity provider accounts.

Operations

LTL: Push Tracking

As a capacity provider, push project44 shipments and status updates.

Operations

LTL: Push Imaging

As a capacity provider, push project44 images related to shipments.

Operations

TL: Capacity Provider Push

As a capacity provider, push project44 shipment-related info and quotes.

Operations

Asset Tracking

Track the location of an enrolled asset.

Operations

Webhook

Register client webhooks.

Operations

Parcel: Tracking

Track parcel shipments. Before parcel shipments can be tracked, they must first be initialized with a shipment identifier. Shipments cannot be modified once initialized and tracking has begun. To stop tracking a shipment, delete it.

Use these APIs to initialize (POST), track (GET), or delete (DELETE) parcel shipments.

Operations

Parcel: Webhook

Receive updates for a tracked parcel by defining a parcel-tracking-webhook.

Operations

Carrier: Document

API for managing carrier documents.

Analytics: Port Intelligence

API for Port Intelligence.

Operations

Filter Suggestions

Operations

Multi-modal: Booking

API used for multi-modal Booking.

LTL: Electronic BOL

API used for creating Electronic BOL

Operations

Webhook Data

Operations to describe the payload expected from project44 when integrated with a webhook.

Operations

Postal Address Validation

Operations

Parcel: Push Tracking

Operations

location-controller

Operations

Ocean: Tracking

Operations

Stop Location Management

Operations

TL: Webhook

Operations

Push Updates

Operations

Multi-Modal: Booking

Operations

APIs

Operations

Invitations

Operations

Multi-Modal: Document

Operations