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).
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.
This operation describes the payload that our service will send to your webhook endpoint.
Note: The actual webhook URL is defined by you and is not part of our API domain. Please provide your endpoint URL when registering your webhook, along with supported Authentication Methods as described in Webhook Guide.
Ensure that your endpoint is properly configured to handle the payloads and respond with the appropriate HTTP status codes.Your webhook path specified when creating your webhook configuration in the "url" field: e.g., url = "https://{webhook_base_url}/{webhook_endpoint_path}" (Create or update a push configuration.).
JSON payload that will be sent to your webhook endpoint
All costs incurred for this shipment and the assets contained within.
All events that occurred for this shipment. Will always be in ascending order by the date the event occurred.
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.
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.
curl -i -X POST \ 'https://developers.project44.com/_mock/api-reference/api-docs/{webhook_endpoint_path}' \ -H 'Content-Type: application/json' \ -d '{ "costs": [ { "type": "UNKNOWN", "identifiers": [ { "type": "AIR_WAYBILL", "value": "string" } ], "totalCost": { "currency": "USD", "amount": 0 }, "tier": "UNKNOWN" } ], "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" } ], "exceptions": [ { "category": { "enumValue": "UNKNOWN" }, "definitionId": "058563fe-6949-46e9-9fb3-06a0e3a11f6a", "namespace": { "enumValue": "UNKNOWN" }, "reason": { "enumValue": "UNKNOWN" }, "status": { "enumValue": "UNKNOWN" }, "timeline": [ { "description": "string", "endDateTime": "string", "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "startDateTime": "string" } ], "transportationMode": { "enumValue": "AIR" } } ], "positions": [ { "dateTime": "2019-08-24T14:15:22Z", "receivedDateTime": "2019-08-24T14:15:22Z", "routeSegmentId": "a5aad6c5-e2d6-4a7a-8912-ea0254639352", "latitude": -90, "longitude": -180 } ], "sharingContext": { "dataOriginators": [ { "tenantUuid": "e46705ba-31a8-4f12-b6d3-f41ec1d77a9a", "tenantName": "string", "tenantId": 0 } ], "recipients": [ { "tenantUuid": "e46705ba-31a8-4f12-b6d3-f41ec1d77a9a", "tenantName": "string", "tenantId": 0 } ] }, "shipment": { "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" } ] }, "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": {}, "type": "string" } }, "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": [ {} ], "address": { "postalCode": "string", "addressLines": [ null ], "city": "string", "state": "string", "country": "US" }, "coordinates": { "latitude": -90, "longitude": -180 }, "timeZone": "string" } } ] }, "shipmentShareLink": "string" }, "states": [ { "endDateTime": "string", "routeSegmentId": "a5aad6c5-e2d6-4a7a-8912-ea0254639352", "startDateTime": "string", "stopId": "dd775241-8a00-4193-b07c-f3e4740fdc43", "type": "UNKNOWN" } ] }'
This operation describes the payload that our service will send to your webhook endpoint.
Warning: It is recommended to not use this way of ingesting data, the main payload should be preferred.
Note: The actual webhook URL is defined by you and is not part of our API domain. Please provide your endpoint URL when registering your webhook, along with supported Authentication Methods as described in Webhook Guide.
Ensure that your endpoint is properly configured to handle the payloads and respond with the appropriate HTTP status codes.Your webhook path specified when creating your webhook configuration in the "url" field: e.g., url = "https://{webhook_base_url}/{webhook_endpoint_path}" (Create or update a push configuration.).
JSON payload that will be sent to your webhook endpoint
System messages and messages from the capacity provider with severity 'INFO' or 'WARNING'. No messages with severity 'ERROR' will be returned here.
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'.
Contains fields describing properties of rule that triggered a push notification
A list of status and their identifiers related to the point of interest.
If requested, all available shipment sensor histories.
curl -i -X POST \ 'https://developers.project44.com/_mock/api-reference/api-docs/{webhook_endpoint_path_legacy_FTL}' \ -H 'Content-Type: application/json' \ -d '{ "infoMessages": [ { "severity": "ERROR", "message": "string", "diagnostic": "string", "source": "SYSTEM" } ], "latestStatusUpdate": { "address": { "postalCode": "string", "addressLines": [ "str" ], "city": "string", "state": "string", "country": "US" }, "geoCoordinates": { "latitude": -90, "longitude": -180 }, "statusCode": "DISPATCHED", "statusReason": { "code": "PENDING_TRACKING_METHOD", "description": "string" }, "stopNumber": 0, "timestamp": "string" }, "latestStopStatuses": [ { "additionalAppointmentWindowStatuses": [ { "scanDateTime": "2019-08-24T14:15:22Z", "windowType": "STRATEGIC", "statusCode": "EARLY" } ], "arrivalCode": "UNKNOWN", "arrivalDateTime": "string", "arrivalEstimate": { "estimatedArrivalWindow": { "startDateTime": "2019-08-24T14:15:22Z", "endDateTime": "2019-08-24T14:15:22Z" }, "lastCalculatedDateTime": "string" }, "departureDateTime": "string", "statusCode": "UNKNOWN", "stopNumber": 0 } ], "mapUrl": "string", "notificationRule": { "ruleInfo": {}, "ruleType": "DEPRECATED_SHIPMENT_LATE" }, "pointOfInterestStatus": [ { "pointOfInterestId": "string", "recordedEntries": [ { "entryDateTime": "string", "exitDateTime": "string" } ], "totalDwellTime": 0 } ], "sensorHistories": [ { "readings": [ { "utcTimestamp": "2019-08-24T14:15:22Z", "value": 0.1 } ], "sensor": { "identifier": { "type": "TEMPERATURE", "value": "string" }, "max": 0.1, "min": 0.1, "target": 0.1 } } ], "shipment": { "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": [ null ] } ], "itemIdentifiers": [ { "type": "PURCHASE_ORDER", "value": "string" } ], "itemPackageType": "BAG", "itemQuantity": 0, "monetaryValue": { "currency": "USD", "amount": 0 }, "pickupStopNumber": 0, "subLineItems": [ { "commodityCode": "string", "contact": {}, "description": "string", "freightClass": "50", "involvedParties": [ null ], "itemIdentifiers": [ null ], "itemPackageType": "BAG", "itemQuantity": 0, "monetaryValue": {}, "totalWeight": {} } ], "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": [ {} ] } ], "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": [ {} ] } ], "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" } ] }, "statusUpdates": [ { "address": { "postalCode": "string", "addressLines": [ "str" ], "city": "string", "state": "string", "country": "US" }, "geoCoordinates": { "latitude": -90, "longitude": -180 }, "statusCode": "DISPATCHED", "statusReason": { "code": "PENDING_TRACKING_METHOD", "description": "string" }, "stopNumber": 0, "timestamp": "string" } ] }'