Version 4.0.0 of project44's API
Version 4.0.0 of project44's API
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.
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).
shipment
List of accessorial services to be requested for this shipment. Some capacity providers support accessorial services without providing a way of requesting them through their API. To handle this, project44 sends these accessorial services through the capacity provider's pickup note API field, according to the shipment note configuration.
The requested capacity provider account group containing the account used for authentication with the capacity provider's API.
The quote number for this shipment assigned by the capacity provider. Only a few LTL capacity providers accept a quote number when placing a shipment for pickup. Most volume LTL capacity providers, however, require a quote number.
SCAC of the carrier that is to pick up this shipment. Required only for capacity providers that support multiple SCACs.
Line items monetary value currency, contains optional currency code (ex. 'USD'). This functionality is typically used with cross-border shipments.
Note that applies to the delivery of this shipment. Currently, since nearly all capacity provider APIs have only a pickup note field and not a delivery note field, this delivery note will be inserted into the capacity provider's pickup note API field, according to the shipment note configuration.
A date and time range, local to the applicable location, representing a window of availability.
A list of parties and their identifiers related to the destination location. These are typically your customers receiving freight at the destination.
An override of direction for the capacity provider account used by this request, if it has 'Enable API override of direction' set as 'true' in the project44 Self-Service Portal.This functionality is typically used in situations where both inbound and outbound shipments are common for a given capacity provider and account number.
A more granular representation of a line item. Required if no lineItems. Allows for order level tracking, more accurate rates, and more detailed BOLs. Currently not supported by all vendors. An enhancedHandlingUnit consists of one or more handling units, e.g. a pallet or a drum, one or more packages (the container on the handling unit e.g. a box), and package contents. NMFC codes and freight classes can be assigned at the handling unit and package level, while package contents can be associated with a DELIVERY_NUMBER, SKU_NUMBER, or PURCHASE_ORDER_NUMBER. Passing in both this field and lineItems is accepted, but at least one is required.
A list of the quantity of certain handling unit types. If there are multiple types of handling units e.g. pallet, drum, box, the quantity of each handling unit type should be specified.
Length measurement unit for all length values in this shipment request. (default: 'IN')
The line items to be shipped.A line item consists of one or more packages, all of the same package type and with the same dimensions, freight class, and NMFC code. Each package, however, may have a different number of pieces and a different weight. Note that each capacity provider has a different maximum number of line items that they can accept. NOTE: This field is similar to, but not the same as, the enhancedHandlingUnits field. The enhancedHandlingUnits fields can contain more detailed information for use by both the carrier and the shipper.
A list of parties and their identifiers related to the origin location. These are typically your suppliers providing freight at the origin.
An override of payment terms for the capacity provider account used by this request, if it has 'Enable API override of payment terms' set as 'true' in the project44 Self-Service Portal. This functionality is typically used in situations where both inbound and outbound shipments are common for a given capacity provider and account number.
Note that applies to the pickup of this shipment. The shipment note configuration determines the final pickup note that is sent through the capacity provider's API and whether or not part of it may be cut off.
A date and time range, local to the applicable location, representing a window of availability.
A list of identifiers or reference numbers for this shipment. Most capacity providers accept only identifiers of types 'BILL_OF_LADING', 'PURCHASE_ORDER', and 'CUSTOMER_REFERENCE'. Only one identifier of each type may be provided. An identifier of type 'SYSTEM_GENERATED' may not be provided. An identifier of type 'EXTERNAL' may be provided and subsequently tracked with through project44 -- this identifier will not be communicated to the capacity provider.
Total numbers of packaged units that are expected to be shipped. This should match the number of units a driver should be loading onto the truck.
The total linear feet that the shipment being quoted will take up in a trailer. Only for volume LTL shipments.
curl -i -X POST \ https://developers.project44.com/_mock/api-reference/api-docs/api/v4/ltl/dispatchedshipments \ -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \ -H 'Content-Type: application/json' \ -d '{ "accessorialServices": [ { "code": "string" } ], "apiConfiguration": { "allowUnsupportedAccessorials": true, "enableUnitConversion": true, "fallBackToDefaultAccountGroup": true, "noteConfiguration": { "enableTruncation": true, "noteSections": [ { "name": "PICKUP_NOTE" } ] }, "pickupOnly": true, "preScheduledPickup": true }, "capacityProviderAccountGroup": { "accounts": [ { "code": "string" } ], "code": "string" }, "capacityProviderQuoteNumber": "string", "carrierCode": "string", "currencyCode": "USD", "customsInfo": { "customsBrokerLocation": { "address": { "postalCode": "string", "addressLines": [ "str" ], "city": "string", "state": "string", "country": "US" }, "contact": { "companyName": "string", "contactName": "string", "email": "string", "faxNumber": "string", "faxNumberCountryCode": "string", "phoneNumber": "string", "phoneNumber2": "string", "phoneNumber2CountryCode": "string", "phoneNumberCountryCode": "string" } } }, "deliveryNote": "string", "deliveryWindow": { "date": "2019-08-24", "endTime": "17:00", "startTime": "15:00" }, "destinationInvolvedParties": [ { "partyIdentifiers": [ { "type": "ACCOUNT", "value": "string" } ] } ], "destinationLocation": { "address": { "postalCode": "string", "addressLines": [ "str" ], "city": "string", "state": "string", "country": "US" }, "contact": { "companyName": "string", "contactName": "string", "email": "string", "faxNumber": "string", "faxNumberCountryCode": "string", "phoneNumber": "string", "phoneNumber2": "string", "phoneNumber2CountryCode": "string", "phoneNumberCountryCode": "string" } }, "directionOverride": "SHIPPER", "emergencyContact": { "companyName": "string", "contactName": "string", "email": "string", "faxNumber": "string", "faxNumberCountryCode": "string", "phoneNumber": "string", "phoneNumber2": "string", "phoneNumber2CountryCode": "string", "phoneNumberCountryCode": "string" }, "enhancedHandlingUnits": [ { "commodityType": "string", "contact": { "companyName": "string", "contactName": "string", "email": "string", "faxNumber": "string", "faxNumberCountryCode": "string", "phoneNumber": "string", "phoneNumber2": "string", "phoneNumber2CountryCode": "string", "phoneNumberCountryCode": "string" }, "deliveryStopNumber": 0, "description": "string", "freightClasses": [ "50" ], "handlingUnitDimensions": { "height": 0, "length": 0, "width": 0 }, "handlingUnitQuantity": 0, "handlingUnitType": "BAG", "harmonizedCode": "string", "nmfcCodes": [ { "code": "string" } ], "packages": [ { "contact": { "companyName": "string", "contactName": "string", "email": "string", "faxNumber": "string", "faxNumberCountryCode": "string", "phoneNumber": "string", "phoneNumber2": "string", "phoneNumber2CountryCode": "string", "phoneNumberCountryCode": "string" }, "description": "string", "freightClass": "50", "involvedParties": [ { "partyIdentifiers": [ null ] } ], "nmfcCodes": [ { "code": "string" } ], "packageContainerType": "BAG", "packageContents": [ { "countryOfManufacture": "US", "description": "string", "hazmatDetails": [ null ], "packageContentIdentifiers": [ null ], "packageContentQuantity": 0 } ], "packageDimensions": { "height": 0, "length": 0, "width": 0 }, "packageQuantity": 0, "weightPerPackage": 0 } ], "pickupStopNumber": 0, "stackable": true, "totalValue": { "currency": "USD", "amount": 0 }, "weightPerHandlingUnit": 0 } ], "handlingUnitTypeQuantities": [ { "handlingUnitType": "BAG", "quantity": 0 } ], "lengthUnit": "IN", "lineItems": [ { "commodityType": "string", "countryOfManufacture": "US", "description": "string", "freightClass": "50", "harmonizedCode": "string", "hazmatDetail": { "hazardClass": "string", "identificationNumber": "string", "packingGroup": "I", "properShippingName": "string" }, "id": 0, "nmfcItemCode": "string", "nmfcSubCode": "string", "packageDimensions": { "height": 0, "length": 0, "width": 0 }, "packageType": "BAG", "stackable": true, "totalPackages": 0, "totalPieces": 0, "totalValue": 0, "totalWeight": 0 } ], "originInvolvedParties": [ { "partyIdentifiers": [ { "type": "ACCOUNT", "value": "string" } ] } ], "originLocation": { "address": { "postalCode": "string", "addressLines": [ "str" ], "city": "string", "state": "string", "country": "US" }, "contact": { "companyName": "string", "contactName": "string", "email": "string", "faxNumber": "string", "faxNumberCountryCode": "string", "phoneNumber": "string", "phoneNumber2": "string", "phoneNumber2CountryCode": "string", "phoneNumberCountryCode": "string" } }, "paymentTermsOverride": "PREPAID", "pickupNote": "string", "pickupWindow": { "date": "2019-08-24", "endTime": "17:00", "startTime": "15:00" }, "requesterLocation": { "address": { "postalCode": "string", "addressLines": [ "str" ], "city": "string", "state": "string", "country": "US" }, "contact": { "companyName": "string", "contactName": "string", "email": "string", "faxNumber": "string", "faxNumberCountryCode": "string", "phoneNumber": "string", "phoneNumber2": "string", "phoneNumber2CountryCode": "string", "phoneNumberCountryCode": "string" } }, "shipmentIdentifiers": [ { "primaryForType": true, "source": "CUSTOMER", "type": "PRO", "value": "string" } ], "totalHandlingUnits": 0, "totalLinearFeet": 0, "weightUnit": "LB" }'
Created
URL pointing to a PDF document of the capacity provider's Bill of Lading, if available.
System messages and messages from the capacity provider with severity 'INFO' or 'WARNING'. No messages with severity 'ERROR' will be returned here.
Customers who have enabled our Volume Visualizer product will find a URL to a PDF document illustrating the optimized item arrangement, for the shipment's total linear footage value. (Example: https://na12.api.project44.com/unauthenticated/linear-feet/pdf/{linearFeetVisualizationId})
The pickup date and time as provided by the capacity provider in the timezone of origin location of the shipment. (format: yyyy-MM-dd'T'HH:mm:ss)
The final note that was sent through the capacity provider's pickup note API field, as constructed by project44 according to the requested shipment note configuration.
A list of identifiers for the confirmed shipment. Nearly all capacity providers provide a pickup confirmation number, which will appear in this list with type 'PICKUP'. A few capacity providers also provide a PRO number when a shipment is confirmed. Shipment identifiers provided by the customer will show up here, as well.
{ "capacityProviderBolUrl": "string", "id": 0, "infoMessages": [ { … } ], "packingVisualizationUrl": "string", "pickupDateTime": "2019-08-24T14:15:22Z", "pickupNote": "string", "shipmentIdentifiers": [ { … } ] }
shipmentCancellation
Contains fields used to configure the LTL shipment API.
The requested capacity provider account group containing the account used for authentication with the capacity provider's API.
curl -i -X POST \ https://developers.project44.com/_mock/api-reference/api-docs/api/v4/ltl/shipments/cancellations \ -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \ -H 'Content-Type: application/json' \ -d '{ "apiConfiguration": { "fallBackToDefaultAccountGroup": true }, "capacityProviderAccountGroup": { "accounts": [ { "code": "string" } ], "code": "string" }, "originAddress": { "postalCode": "string", "addressLines": [ "str" ], "city": "string", "state": "string", "country": "US" }, "shipmentIdentifiers": [ { "primaryForType": true, "source": "CUSTOMER", "type": "PRO", "value": "string" } ] }'
{ "infoMessages": [ { … } ], "shipmentIdentifiers": [ { … } ] }
shipmentCancellation
Contains fields used to configure the LTL shipment API.
The requested capacity provider account group containing the account used for authentication with the capacity provider's API.
curl -i -X POST \ 'https://developers.project44.com/_mock/api-reference/api-docs/api/v4/ltl/shipments/{id}/cancellations' \ -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \ -H 'Content-Type: application/json' \ -d '{ "apiConfiguration": { "fallBackToDefaultAccountGroup": true }, "capacityProviderAccountGroup": { "accounts": [ { "code": "string" } ], "code": "string" }, "originAddress": { "postalCode": "string", "addressLines": [ "str" ], "city": "string", "state": "string", "country": "US" }, "shipmentIdentifiers": [ { "primaryForType": true, "source": "CUSTOMER", "type": "PRO", "value": "string" } ] }'
{ "infoMessages": [ { … } ], "shipmentIdentifiers": [ { … } ] }
curl -i -X GET \ https://developers.project44.com/_mock/api-reference/api-docs/api/v4/shipments/pronumbers/query \ -H 'Authorization: Bearer <YOUR_TOKEN_HERE>'
[ { "blockEnd": 0, "blockStart": 0, "currentProNumber": 0, "remainingProsInBlock": 0, "vendorId": "string" } ]
proNumberQuery
Contains fields used to configure the PrePro Query API.
The requested capacity provider account group containing the account used for authentication with the capacity provider's API.
curl -i -X POST \ https://developers.project44.com/_mock/api-reference/api-docs/api/v4/shipments/pronumbers/query \ -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \ -H 'Content-Type: application/json' \ -d '{ "apiConfiguration": { "fallBackToDefaultAccountGroup": true }, "capacityProviderAccountGroup": { "accounts": [ { "code": "string" } ], "code": "string" }, "originLocation": { "postalCode": "string", "addressLines": [ "str" ], "city": "string", "state": "string", "country": "US" } }'
{ "proNumber": "string", "vendorId": "string" }
curl -i -X PUT \ https://developers.project44.com/_mock/api-reference/api-docs/api/v4/shipments/pronumbers/query \ -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \ -H 'Content-Type: application/json' \ -d '{ "blockEnd": 0, "blockStart": 0, "checkDigit": 0, "vendorId": "string" }'
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.
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.
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.
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.
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.