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/guides/shippers/visibility/ltl/api/
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/

Manage Client Applications

Operations

Generate Tokens

Operations

Unified Shipment Tracking

Operations

Deprecated LTL Modal Tracking

Operations

Cancel a dispatched shipment by id.

Request

Required Fields

  • id
  • capacityProviderAccountGroup:
    • accounts:
      • code
  • originAddress:
    • postalCode
Path
idinteger(int64)required

The project44-generated id of the dispatched LTL shipment to be cancelled.

Bodyrequired

shipmentCancellation

apiConfigurationobject(LtlShipmentCancellationApiConfiguration)

Contains fields used to configure the LTL shipment API.

capacityProviderAccountGroupobject(CapacityProviderAccountGroup)

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

originAddressobject(Address)

A postal address.

shipmentIdentifiersArray of objects(LtlShipmentIdentifier)

A list of identifiers of the dispatched LTL shipment to be cancelled. Currently only one can be provided. This may not be provided when cancelling a shipment by the project44-generated id.

curl -i -X POST \
  'https://developers.project44.com/_mock/guides/shippers/visibility/ltl/api/api/v4/ltl/shipments/{id}/cancellations' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json' \
  -d '{
    "apiConfiguration": {
      "fallBackToDefaultAccountGroup": true
    },
    "capacityProviderAccountGroup": {
      "code": "string",
      "accounts": [
        {
          "code": "string"
        }
      ]
    },
    "originAddress": {
      "postalCode": "string",
      "addressLines": [
        "str"
      ],
      "city": "string",
      "state": "string",
      "country": "US"
    },
    "shipmentIdentifiers": [
      {
        "type": "PRO",
        "value": "string",
        "primaryForType": true,
        "source": "CUSTOMER"
      }
    ]
  }'

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.

shipmentIdentifiersArray of objects(LtlShipmentIdentifier)

A list of identifiers for the cancelled shipment. Shipment identifiers provided by the customer may show up here, as well.

Response
{ "infoMessages": [ {} ], "shipmentIdentifiers": [ {} ] }

Cancel a dispatched shipment by shipment identifier.

Request

Required Fields

  • capacityProviderAccountGroup:
    • accounts:
      • code
  • originAddress:
    • postalCode
  • shipmentIdentifiers:
    • type
    • value
Bodyrequired

shipmentCancellation

apiConfigurationobject(LtlShipmentCancellationApiConfiguration)

Contains fields used to configure the LTL shipment API.

capacityProviderAccountGroupobject(CapacityProviderAccountGroup)

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

originAddressobject(Address)

A postal address.

shipmentIdentifiersArray of objects(LtlShipmentIdentifier)

A list of identifiers of the dispatched LTL shipment to be cancelled. Currently only one can be provided. This may not be provided when cancelling a shipment by the project44-generated id.

curl -i -X POST \
  https://developers.project44.com/_mock/guides/shippers/visibility/ltl/api/api/v4/ltl/shipments/cancellations \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json' \
  -d '{
    "apiConfiguration": {
      "fallBackToDefaultAccountGroup": true
    },
    "capacityProviderAccountGroup": {
      "code": "string",
      "accounts": [
        {
          "code": "string"
        }
      ]
    },
    "originAddress": {
      "postalCode": "string",
      "addressLines": [
        "str"
      ],
      "city": "string",
      "state": "string",
      "country": "US"
    },
    "shipmentIdentifiers": [
      {
        "type": "PRO",
        "value": "string",
        "primaryForType": true,
        "source": "CUSTOMER"
      }
    ]
  }'

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.

shipmentIdentifiersArray of objects(LtlShipmentIdentifier)

A list of identifiers for the cancelled shipment. Shipment identifiers provided by the customer may show up here, as well.

Response
{ "infoMessages": [ {} ], "shipmentIdentifiers": [ {} ] }

Start tracking an LTL shipment

Request

Use this POST call to start a tracking job, initializing LTL tracking. The tracking job will run for a given duration (designated with the startDateTime and endDateTime parameters), gathering updates from the carrier and reference numbers detailed in the API call. Once a tracking update has been pulled from the carrier into the project44 tracking job, you can access the information via the GET requests below this endpoint. Note that if your dispatch was done through project44, you do not need to initialize tracking. project44 will implicitly start tracking based on the data provided in the dispatch.

Required Fields

  • capacityProviderAccountGroup:
    • accounts:
      • code
  • shipmentIdentifiers:
    • type
    • value
    • primaryForType (if more than one shipment identifier of the same type)
  • shipmentStops: (two stops of types ORIGIN and DESTINATION)
    • stopType
    • location:
      • address:
        • postalCode
        • addressLines
        • city
        • state
      • contact:
        • companyName
    • appointmentWindow:
      • startDateTime
      • endDateTime
NOTE: The appointmentWindow object in shipmentStops does not support a localTimeZoneIdentifier due to an automated project44 process that detects time zone based on the stop's location. Please make sure to provide startDateTime and endDateTime in local time.
Bodyrequired

shipment

apiConfigurationobject(LtlTrackedShipmentApiConfiguration)
capacityProviderAccountGroupobject(CapacityProviderAccountGroup)

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

idinteger(int64)

The project44-generated id of the LTL shipment. This may be provided when creating a tracked shipment only if a tracked shipment does not exist with this id but a shipment record does exist in project44's system with this id. This enables linking a dispatched shipment that initially failed to track to its tracking information by passing the id from dispatch. This id will always be returned in the shipment confirmation and may be used in subsequent API calls to reference a shipment.

ltlLegIdstring(uuid)

The project44-generated id that is the UUID equivalent of id. The same rules apply to this value as applies to the id.

masterShipmentIdstring(uuid)

The project44-generated id that connects multi-leg shipments agnostic of mode.

shipmentAttributesArray of objects(Attribute)

The list of attributes to associate with the shipment.

shipmentIdentifiersArray of objects(LtlShipmentIdentifier)

A user-defined list of shipment identifiers that, with the exception of the EXTERNAL type, can be used to track the shipment with the capacity provider.

shipmentStopsArray of objects(LtlTrackedShipmentStop)

A list of the shipment stops for the shipment. Two and only two stops must be provided -- one of type 'ORIGIN' and one of type 'DESTINATION'. Stops of type 'TERMINAL' may be added as the shipment is tracked and they are discovered via capacity provider information. Note that 'TERMINAL' will be ignored if provided as part of a PUT.

curl -i -X POST \
  https://developers.project44.com/_mock/guides/shippers/visibility/ltl/api/api/v4/ltl/trackedshipments \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json' \
  -d '{
    "apiConfiguration": {
      "fallBackToDefaultAccountGroup": true
    },
    "capacityProviderAccountGroup": {
      "code": "string",
      "accounts": [
        {
          "code": "string"
        }
      ]
    },
    "id": 0,
    "ltlLegId": "005b127f-bb88-444f-8788-e084b7eeceb3",
    "masterShipmentId": "2e04ec4a-749a-4ef4-a452-b7dc8cca16aa",
    "shipmentAttributes": [
      {
        "name": "string",
        "values": [
          "string"
        ]
      }
    ],
    "shipmentIdentifiers": [
      {
        "type": "PRO",
        "value": "string",
        "primaryForType": true,
        "source": "CUSTOMER"
      }
    ],
    "shipmentStops": [
      {
        "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"
              }
            ]
          }
        ],
        "appointmentWindow": {
          "startDateTime": "2019-08-24T14:15:22Z",
          "endDateTime": "2019-08-24T14:15:22Z",
          "localTimeZoneIdentifier": "string"
        },
        "geoCoordinates": {
          "latitude": -90,
          "longitude": -180
        },
        "id": 0,
        "involvedParties": [
          {
            "partyIdentifiers": [
              {
                "type": "ACCOUNT",
                "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"
          }
        ],
        "stopDescription": "string",
        "stopName": "string",
        "stopNumber": 0,
        "stopType": "ORIGIN",
        "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f"
      }
    ]
  }'

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(LtlTrackedShipment)
Response
{ "infoMessages": [ {} ], "shipment": { "apiConfiguration": {}, "capacityProviderAccountGroup": {}, "id": 0, "ltlLegId": "005b127f-bb88-444f-8788-e084b7eeceb3", "masterShipmentId": "2e04ec4a-749a-4ef4-a452-b7dc8cca16aa", "shipmentAttributes": [], "shipmentIdentifiers": [], "shipmentStops": [] } }

Updates an LTL shipment

Request

Use this endpoint to update a shipment. To achieve this, this endpoint deletes the current shipment and creates a new shipment on which it will begin tracking. This updates how we track the shipment but will not affect the dispatch with the carrier. Note that you must pass the entire details for the shipment, just as you would on a POST. Note that you only need to update a shipment when the carrier, time, or date has changed.


Required Fields

  • id
  • capacityProviderAccountGroup:
    • accounts:
      • code
  • shipmentIdentifiers:
    • type
    • value
    • primaryForType (if more than one shipment identifier of the same type)
  • shipmentStops: (two stops of types ORIGIN and DESTINATION)
    • stopType
    • location:
      • address:
        • postalCode
        • addressLines
        • city
        • state
      • contact:
        • companyName
    • appointmentWindow:
      • startDateTime
      • endDateTime
Path
idinteger(int64)required

The project44-generated id of the LTL tracked shipment you wish to update.

Bodyapplication/jsonrequired

shipment

apiConfigurationobject(LtlTrackedShipmentApiConfiguration)
capacityProviderAccountGroupobject(CapacityProviderAccountGroup)

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

idinteger(int64)

The project44-generated id of the LTL shipment. This may be provided when creating a tracked shipment only if a tracked shipment does not exist with this id but a shipment record does exist in project44's system with this id. This enables linking a dispatched shipment that initially failed to track to its tracking information by passing the id from dispatch. This id will always be returned in the shipment confirmation and may be used in subsequent API calls to reference a shipment.

ltlLegIdstring(uuid)

The project44-generated id that is the UUID equivalent of id. The same rules apply to this value as applies to the id.

masterShipmentIdstring(uuid)

The project44-generated id that connects multi-leg shipments agnostic of mode.

shipmentAttributesArray of objects(Attribute)

The list of attributes to associate with the shipment.

shipmentIdentifiersArray of objects(LtlShipmentIdentifier)

A user-defined list of shipment identifiers that, with the exception of the EXTERNAL type, can be used to track the shipment with the capacity provider.

shipmentStopsArray of objects(LtlTrackedShipmentStop)

A list of the shipment stops for the shipment. Two and only two stops must be provided -- one of type 'ORIGIN' and one of type 'DESTINATION'. Stops of type 'TERMINAL' may be added as the shipment is tracked and they are discovered via capacity provider information. Note that 'TERMINAL' will be ignored if provided as part of a PUT.

curl -i -X PUT \
  'https://developers.project44.com/_mock/guides/shippers/visibility/ltl/api/api/v4/ltl/trackedshipments/{id}' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json' \
  -d '{
    "apiConfiguration": {
      "fallBackToDefaultAccountGroup": true
    },
    "capacityProviderAccountGroup": {
      "code": "string",
      "accounts": [
        {
          "code": "string"
        }
      ]
    },
    "id": 0,
    "ltlLegId": "005b127f-bb88-444f-8788-e084b7eeceb3",
    "masterShipmentId": "2e04ec4a-749a-4ef4-a452-b7dc8cca16aa",
    "shipmentAttributes": [
      {
        "name": "string",
        "values": [
          "string"
        ]
      }
    ],
    "shipmentIdentifiers": [
      {
        "type": "PRO",
        "value": "string",
        "primaryForType": true,
        "source": "CUSTOMER"
      }
    ],
    "shipmentStops": [
      {
        "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"
              }
            ]
          }
        ],
        "appointmentWindow": {
          "startDateTime": "2019-08-24T14:15:22Z",
          "endDateTime": "2019-08-24T14:15:22Z",
          "localTimeZoneIdentifier": "string"
        },
        "geoCoordinates": {
          "latitude": -90,
          "longitude": -180
        },
        "id": 0,
        "involvedParties": [
          {
            "partyIdentifiers": [
              {
                "type": "ACCOUNT",
                "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"
          }
        ],
        "stopDescription": "string",
        "stopName": "string",
        "stopNumber": 0,
        "stopType": "ORIGIN",
        "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f"
      }
    ]
  }'

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(LtlTrackedShipment)
Response
{ "infoMessages": [ {} ], "shipment": { "apiConfiguration": {}, "capacityProviderAccountGroup": {}, "id": 0, "ltlLegId": "005b127f-bb88-444f-8788-e084b7eeceb3", "masterShipmentId": "2e04ec4a-749a-4ef4-a452-b7dc8cca16aa", "shipmentAttributes": [], "shipmentIdentifiers": [], "shipmentStops": [] } }

Delete shipment by ID.

Request

Use this endpoint to delete a tracked shipment with the given id. For example, you could delete a shipment that has been canceled or was never picked up.

Path
idinteger(int64)required

The project44-generated id of the LTL tracked shipment you wish to be deleted.

curl -i -X DELETE \
  'https://developers.project44.com/_mock/guides/shippers/visibility/ltl/api/api/v4/ltl/trackedshipments/{id}' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>'

Responses

No Content

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

Returns the status of an LTL shipment by unique system ID

Request

Use this endpoint to return the status of an LTL shipment according to a given unique system ID, provided in the parameters of the call.

Path
idinteger(int64)required

The project44-generated id of the tracked or dispatched LTL shipment you wish to query.

Query
includeMapUrlboolean

Set to "TRUE" if you wish to receive a publicly accessible URL to the shipment details in the response.

Default false
includeStatusHistoryboolean

Set to "TRUE" if you wish to receive the shipment status history ('statusUpdates') in the response.

Default false
curl -i -X GET \
  'https://developers.project44.com/_mock/guides/shippers/visibility/ltl/api/api/v4/ltl/trackedshipments/{id}/statuses?includeMapUrl=false&includeStatusHistory=false' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>'

Responses

OK

Body
imageReferencesArray of objects(LtlTrackedShipmentImageReference)

A list of references to images of documents related to the shipment.

infoMessagesArray of objects(Message)

System messages and messages from the capacity provider with severity "INFO" or "WARNING". Note that no messages with severity "ERROR" will be returned here.

latestStatusUpdateobject(LtlShipmentStatusUpdate)
latestStopStatusesArray of objects(LtlShipmentStopStatus)

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", 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.

shipmentobject(LtlTrackedShipment)
statusUpdatesArray of objects(LtlShipmentStatusUpdate)

If requested, all available shipment status updates.

Response
{ "imageReferences": [ {} ], "infoMessages": [ {} ], "latestStatusUpdate": { "address": {}, "exceptionDetailCode": "APPOINTMENT_SET", "exceptionSummaryCode": "APPOINTMENT_ISSUE", "retrievalDateTime": "string", "statusCode": "IN_TRANSIT", "statusReason": {}, "stopId": 0, "stopNumber": 0, "stopType": "ORIGIN", "timestamp": {} }, "latestStopStatuses": [ {} ], "mapUrl": "string", "shipment": { "apiConfiguration": {}, "capacityProviderAccountGroup": {}, "id": 0, "ltlLegId": "005b127f-bb88-444f-8788-e084b7eeceb3", "masterShipmentId": "2e04ec4a-749a-4ef4-a452-b7dc8cca16aa", "shipmentAttributes": [], "shipmentIdentifiers": [], "shipmentStops": [] }, "statusUpdates": [ {} ] }

Returns the status of an LTL shipment by identifier.

Request

Use this endpoint to return the status of an LTL shipment according to a given identifier value. Note that this endpoint may return multiple shipments if the identifier is used for multiple shipments such as with a pickup number.


Required Fields

  • shipmentIdentifier.type
  • shipmentIdentifier.value
Query
includeStatusHistoryboolean

Set to "TRUE" if you wish to receive the shipment status history ('statusUpdates') in the response.

Default false
shipmentIdentifier.sourcestring

The source system that created the identifier.

Enum"CUSTOMER""CAPACITY_PROVIDER"
shipmentIdentifier.typestring

The type of identifier for which to search.

Enum"PRO""BILL_OF_LADING""CUSTOMER_REFERENCE""PICKUP""PURCHASE_ORDER""EXTERNAL"
shipmentIdentifier.valuestring

The identifier value for which to search.

curl -i -X GET \
  'https://developers.project44.com/_mock/guides/shippers/visibility/ltl/api/api/v4/ltl/trackedshipments/statuses?includeStatusHistory=false&shipmentIdentifier.source=CUSTOMER&shipmentIdentifier.type=PRO&shipmentIdentifier.value=string' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>'

Responses

OK

Body
infoMessagesArray of objects(Message)

Any system messages that occurred processing this request. Severity will be "INFO" or "WARNING". No messages with severity "ERROR" will be returned here.

shipmentStatusesArray of objects(LtlShipmentStatus)

A list of shipment statuses that match the query.

Response
{ "infoMessages": [ {} ], "shipmentStatuses": [ {} ] }

Shipment Attributes

Operations

Webhook

Operations