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/
NA - Endpoint for project44 tenants created in the NA region
https://na12.api.project44.com/
EU - Endpoint for project44 tenants created in the EU region
https://eu12.api.project44.com/
Sandbox - 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

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

Initialize a shipment for tracking, or append data to an existing shipment.

Request

If the shipment does not exist, this will create a new shipment.

If the shipment is already being tracked (and the corresponding id field is provided), this operation is add only for the provided fields.

Note: This operation only modifies data that the user has provided.

Important Notes:

  • Only the following identifier types are accepted when creating or updating a shipment:
    • Air
      • AIR_WAYBILL
      • HOUSE_AIR_WAYBILL - an additional, valid CARRIER_SCAC identifier is mandatory for HOUSE_AIR_WAYBILL tracking
      • CARRIER_SCAC
    • European Rail
      • WAGON_ID
      • TRAIN_NUMBER
    • North American Rail
      • CONTAINER_ID
      • TRAILER_ID
      • RAIL_CAR_ID
      • BILL_OF_LADING
      • WAYBILL
    • Ocean
      • BILL_OF_LADING
      • BOOKING_NUMBER
      • CARRIER_SCAC
      • CONTAINER_ID
    • Parcel
      • CAPACITY_PROVIDER_ACCOUNT_GROUP
      • CAPACITY_PROVIDER_ACCOUNT_CODE
      • TRACKING_NUMBER
      • CARRIER_SCAC
      • REFERENCE_NUMBER
    • LTL
      • CAPACITY_PROVIDER_ACCOUNT_GROUP
      • CAPACITY_PROVIDER_ACCOUNT_CODE
      • PRO
      • BILL_OF_LADING
      • PICKUP
      • PURCHASE_ORDER
    • Ocean Door-to-Door
      • HOUSE_BILL_OF_LADING
      • FFW_SCAC
      • BOOKING_NUMBER
      • TRACKING_NUMBER

Required Fields

  • identifiers: (at least one)
    • type
    • value
Bodyapplication/jsonrequired

shipment

accessGroupsArray of objects(AccessGroup)

This set is populated when a shipment is entitled to specific access groups, it denotes which group(s) are entitled visibility.

attributesArray of objects(CustomAttribute)

An optional user-defined set of custom attributes to associate with this shipment.

costsArray of objects(TrackedShipmentCost)

All costs incurred for this shipment and the assets contained within.

createdDateTimestring

The date and time when this shipment was created. This value is read only and will be ignored during shipment creation.

eventsArray of objects(TrackedShipmentEvent)

All events that occurred for this shipment.

idstring(uuid)

Master shipment id of the shipment. Will always be populated on the response.

identifiersArray of objects(LogisticsIdentifier)

Used to identify a shipment.

Only the following identifier types are accepted when creating or updating a shipment:

  • Air
    • AIR_WAYBILL
    • HOUSE_AIR_WAYBILL
  • European Rail
    • WAGON_ID
    • TRAIN_NUMBER
  • North American Rail
    • CONTAINER_ID
    • TRAILER_ID
    • RAIL_CAR_ID
    • BILL_OF_LADING
    • WAYBILL
  • Ocean
    • BILL_OF_LADING
    • BOOKING_NUMBER
    • CARRIER_SCAC
    • CONTAINER_ID
  • Parcel
    • CAPACITY_PROVIDER_ACCOUNT_GROUP
    • CAPACITY_PROVIDER_ACCOUNT_CODE
    • TRACKING_NUMBER
    • CARRIER_SCAC
    • REFERENCE_NUMBER
  • LTL
    • CAPACITY_PROVIDER_ACCOUNT_GROUP
    • CAPACITY_PROVIDER_ACCOUNT_CODE
    • PRO
    • BILL_OF_LADING
    • PICKUP
    • PURCHASE_ORDER
  • Ocean Door-to-Door
    • HOUSE_BILL_OF_LADING
    • FFW_SCAC
    • BOOKING_NUMBER
    • TRACKING_NUMBER

lastModifiedDateTimestring

The date and time when this shipment was last modified. This value is read only and will be ignored during shipment creation or modification.

planobject(ShipmentPlan)

Rules with expected behaviour of the shipment.

relatedShipmentsArray of objects(SimpleTrackedShipment)

List of related shipments of the parent shipment. This is optional.

routeInfoobject(ShipmentRouteInfo)

Route info model that contains the stops and route for the shipment.

shipmentShareLinkstring

Public link to view the shipment in the VOC.

curl -i -X POST \
  https://developers.project44.com/_mock/api-reference/api-docs/api/v4/shipments/tracking \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json' \
  -d '{
    "accessGroups": [
      {
        "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08"
      }
    ],
    "attributes": [
      {
        "name": "string",
        "value": "string",
        "values": [
          "string"
        ]
      }
    ],
    "costs": [
      {
        "type": "UNKNOWN",
        "identifiers": [
          {
            "type": "AIR_WAYBILL",
            "value": "string"
          }
        ],
        "totalCost": {
          "currency": "USD",
          "amount": 0
        },
        "tier": "UNKNOWN"
      }
    ],
    "createdDateTime": "string",
    "events": [
      {
        "dateTime": "string",
        "dateTimes": [
          {
            "type": "UNKNOWN",
            "dateTime": "2019-08-24T14:15:22Z",
            "endDateTime": "2019-08-24T14:15:22Z",
            "lastModifiedDateTime": "2019-08-24T14:15:22Z",
            "source": "UNKNOWN",
            "sourceIdentifiers": [
              {
                "type": "AIR_WAYBILL",
                "value": "string"
              }
            ],
            "selected": true,
            "sequence": 0
          }
        ],
        "description": "string",
        "details": {
          "mobileTracking": {
            "code": "UNKNOWN"
          },
          "ocean": {
            "code": "UNKNOWN"
          },
          "qualityControl": {
            "code": "UNKNOWN"
          }
        },
        "estimateDateTime": "string",
        "estimateLastCalculatedDateTime": "string",
        "plannedDateTime": "string",
        "plannedEndDateTime": "string",
        "receivedDateTime": "string",
        "routeSegmentId": "a5aad6c5-e2d6-4a7a-8912-ea0254639352",
        "stopId": "dd775241-8a00-4193-b07c-f3e4740fdc43",
        "type": "UNKNOWN"
      }
    ],
    "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
    "identifiers": [
      {
        "type": "AIR_WAYBILL",
        "value": "string"
      }
    ],
    "lastModifiedDateTime": "string",
    "plan": {
      "expectedTransportationModes": [
        {
          "enumValue": "AIR"
        }
      ]
    },
    "relatedShipments": [
      {
        "accessGroups": [
          {
            "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08"
          }
        ],
        "attributes": [
          {
            "name": "string",
            "value": "string",
            "values": [
              "string"
            ]
          }
        ],
        "createdDateTime": "string",
        "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
        "identifiers": [
          {
            "type": "AIR_WAYBILL",
            "value": "string"
          }
        ],
        "lastModifiedDateTime": "string",
        "plan": {
          "expectedTransportationModes": [
            {
              "enumValue": "AIR"
            }
          ]
        },
        "shipmentShareLink": "string"
      }
    ],
    "routeInfo": {
      "routeSegments": [
        {
          "emissions": {
            "distance": {
              "value": 0,
              "unit": "FT"
            },
            "co2EmissionIntensity": {
              "value": 0,
              "unit": "KG_PER_KM"
            },
            "totalCO2Emissions": {
              "value": 0,
              "unit": "LB"
            },
            "vehicleInfo": {
              "weight": {
                "value": 0,
                "unit": "LB"
              },
              "type": "string"
            },
            "cargoWeight": {
              "value": 0,
              "unit": "LB"
            },
            "loadFactor": 0.1
          },
          "fromStopId": "257296aa-4e11-4168-b6a7-981b8b94815b",
          "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
          "identifiers": [
            {
              "type": "AIR_WAYBILL",
              "value": "string"
            }
          ],
          "toStopId": "5f1765b9-dde0-424e-963b-bb3b4e1d1d56",
          "transportationMode": "AIR"
        }
      ],
      "stops": [
        {
          "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
          "type": "UNKNOWN",
          "location": {
            "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
            "name": "string",
            "identifiers": [
              {
                "type": "AIRPORT_IATA",
                "value": "string"
              }
            ],
            "address": {
              "postalCode": "string",
              "addressLines": [
                "str"
              ],
              "city": "string",
              "state": "string",
              "country": "US"
            },
            "coordinates": {
              "latitude": -90,
              "longitude": -180
            },
            "timeZone": "string"
          }
        }
      ]
    },
    "shipmentShareLink": "string"
  }'

Responses

OK

Body
accessGroupsArray of objects(AccessGroup)

This set is populated when a shipment is entitled to specific access groups, it denotes which group(s) are entitled visibility.

attributesArray of objects(CustomAttribute)

An optional user-defined set of custom attributes to associate with this shipment.

costsArray of objects(TrackedShipmentCost)

All costs incurred for this shipment and the assets contained within.

createdDateTimestring

The date and time when this shipment was created. This value is read only and will be ignored during shipment creation.

eventsArray of objects(TrackedShipmentEvent)

All events that occurred for this shipment.

idstring(uuid)

Master shipment id of the shipment. Will always be populated on the response.

identifiersArray of objects(LogisticsIdentifier)

Used to identify a shipment.

Only the following identifier types are accepted when creating or updating a shipment:

  • Air
    • AIR_WAYBILL
    • HOUSE_AIR_WAYBILL
  • European Rail
    • WAGON_ID
    • TRAIN_NUMBER
  • North American Rail
    • CONTAINER_ID
    • TRAILER_ID
    • RAIL_CAR_ID
    • BILL_OF_LADING
    • WAYBILL
  • Ocean
    • BILL_OF_LADING
    • BOOKING_NUMBER
    • CARRIER_SCAC
    • CONTAINER_ID
  • Parcel
    • CAPACITY_PROVIDER_ACCOUNT_GROUP
    • CAPACITY_PROVIDER_ACCOUNT_CODE
    • TRACKING_NUMBER
    • CARRIER_SCAC
    • REFERENCE_NUMBER
  • LTL
    • CAPACITY_PROVIDER_ACCOUNT_GROUP
    • CAPACITY_PROVIDER_ACCOUNT_CODE
    • PRO
    • BILL_OF_LADING
    • PICKUP
    • PURCHASE_ORDER
  • Ocean Door-to-Door
    • HOUSE_BILL_OF_LADING
    • FFW_SCAC
    • BOOKING_NUMBER
    • TRACKING_NUMBER

lastModifiedDateTimestring

The date and time when this shipment was last modified. This value is read only and will be ignored during shipment creation or modification.

planobject(ShipmentPlan)

Rules with expected behaviour of the shipment.

relatedShipmentsArray of objects(SimpleTrackedShipment)

List of related shipments of the parent shipment. This is optional.

routeInfoobject(ShipmentRouteInfo)

Route info model that contains the stops and route for the shipment.

shipmentShareLinkstring

Public link to view the shipment in the VOC.

Response
{ "accessGroups": [ { … } ], "attributes": [ { … } ], "costs": [ { … } ], "createdDateTime": "string", "events": [ { … } ], "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "identifiers": [ { … } ], "lastModifiedDateTime": "string", "plan": { "expectedTransportationModes": [ … ] }, "relatedShipments": [ { … } ], "routeInfo": { "routeSegments": [ … ], "stops": [ … ] }, "shipmentShareLink": "string" }

Fetch the tenant shipment attributes for a shipment.

Request

Required Fields

  • shipmentId
Path
shipmentIdstring(uuid)required

shipmentId

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

Responses

OK

BodyArray [
attributeNamestring
attributeValuesArray of strings
]
Response
[ { "attributeName": "string", "attributeValues": [ … ] } ]

Fetch the event history for a shipment.

Request

Required Fields

  • shipmentId
Path
shipmentIdstring(uuid)required

shipmentId

Query
includeRouteInfoboolean

includeRouteInfo

Default false
curl -i -X GET \
  'https://developers.project44.com/_mock/api-reference/api-docs/api/v4/shipments/{shipmentId}/eventhistory?includeRouteInfo=false' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>'

Responses

OK

Body
costsArray of objects(TrackedShipmentCost)

All costs incurred for this shipment and the assets contained within.

eventsArray of objects(TrackedShipmentEvent)

All events that occurred for this shipment. Will always be in ascending order by the date the event occurred.

exceptionsArray of objects(ShipmentException)

${ShipmentEventHistory.apiModel.exceptions.value}

sharingContextobject(SharingContext)

This model is populated when the data is shared across tenants, it conditionally describes which tenant(s) are involved with the shared data using tenant name and tenant UUID.

shipmentobject(TrackedShipment)

Shipment tracking model used to initiate a shipment.

statesArray of objects(TrackedShipmentState)

All states that the shipment was or currently is in. Order is not guaranteed.

Response
{ "costs": [ { … } ], "events": [ { … } ], "exceptions": [ { … } ], "sharingContext": { "dataOriginators": [ … ], "recipients": [ … ] }, "shipment": { "accessGroups": [ … ], "attributes": [ … ], "createdDateTime": "string", "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "identifiers": [ … ], "lastModifiedDateTime": "string", "plan": { … }, "relatedShipments": [ … ], "routeInfo": { … }, "shipmentShareLink": "string" }, "states": [ { … } ] }

Fetch the position history for a shipment.

Request

Required Fields

  • shipmentId
Path
shipmentIdstring(uuid)required

shipmentId

Query
includeRouteInfoboolean

includeRouteInfo

Default false
curl -i -X GET \
  'https://developers.project44.com/_mock/api-reference/api-docs/api/v4/shipments/{shipmentId}/positionhistory?includeRouteInfo=false' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>'

Responses

OK

Body
positionsArray of objects(TrackedShipmentPosition)

Locations where this shipment has been recorded. Data may be down-sampled. Will always be in ascending order by the date that the shipment was at that position.

shipmentobject(TrackedShipment)

Shipment tracking model used to initiate a shipment.

Response
{ "positions": [ { … } ], "shipment": { "accessGroups": [ … ], "attributes": [ … ], "createdDateTime": "string", "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "identifiers": [ … ], "lastModifiedDateTime": "string", "plan": { … }, "relatedShipments": [ … ], "routeInfo": { … }, "shipmentShareLink": "string" } }

Delete shipment route from project44 to stop tracking.

Request

Stop the shipment from tracking in project44 and delete record in the UI
Note: attempting to delete shipments that have been shared to you will result in a 404.

Path
shipmentIdstring(uuid)required

shipmentId

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

Responses

OK

Body
Response