Version 4.0.0 of project44's API. If you're not familiar with project44, we recommend checking out our guides first: https://developers.project44.com/guides/shippers and https://developers.project44.com/guides/carriers.
Version 4.0.0 of project44's API. If you're not familiar with project44, we recommend checking out our guides first: https://developers.project44.com/guides/shippers and https://developers.project44.com/guides/carriers.
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 Movement 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).
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
${TruckloadShipmentStatus.apiModel.statusUpdates.value}
${TruckloadShipmentStatus.apiModel.latestStopStatuses.value}
Contains fields describing properties of rule that triggered a push notification
${TruckloadShipmentStatus.apiModel.pointOfInterestStatus.value}
${TruckloadShipmentStatus.apiModel.statusUpdates.value}
curl -i -X POST \ 'https://{webhook_base_url}/{webhook_endpoint_path_legacy_FTL}' \ -H 'Content-Type: application/json' \ -d '{ "infoMessages": [ { "diagnostic": "string", "message": "string", "severity": "ERROR", "source": "SYSTEM" } ], "latestStatusUpdate": { "address": { "addressLines": [ "string" ], "city": "string", "country": "US", "postalCode": "string", "state": "string" }, "geoCoordinates": { "latitude": -90, "longitude": -180 }, "statusCode": "DISPATCHED", "statusReason": { "code": "PENDING_TRACKING_METHOD", "description": "string" }, "stopNumber": 0, "timestamp": "2019-08-24T14:15:22Z" }, "latestStopStatuses": [ { "arrivalEstimate": { "estimatedArrivalWindow": { "endDateTime": "2019-08-24T14:15:22Z", "startDateTime": "2019-08-24T14:15:22Z" }, "lastCalculatedDateTime": "2019-08-24T14:15:22Z" }, "arrivalCode": "UNKNOWN", "arrivalDateTime": "2019-08-24T14:15:22Z", "additionalAppointmentWindowStatuses": [ { "scanDateTime": "2019-08-24T14:15:22Z", "statusCode": "EARLY", "windowType": "STRATEGIC" } ], "departureDateTime": "2019-08-24T14:15:22Z", "stopNumber": 0, "statusCode": "UNKNOWN" } ], "mapUrl": "string", "notificationRule": { "${TruckloadShipmentNotificationRule.apiModel.ruleType.value}": "DEPRECATED_SHIPMENT_LATE", "${TruckloadShipmentNotificationRule.apiModel.ruleType.ruleInfo}": { "property1": {}, "property2": {} } }, "pointOfInterestStatus": [ { "pointOfInterestId": "string", "recordedEntries": [ { "entryDateTime": "2019-08-24T14:15:22Z", "exitDateTime": "2019-08-24T14:15:22Z" } ], "totalDwellTime": 0 } ], "shipment": { "apiConfiguration": { "enableIntelligentMatching": true, "fallBackToDefaultAccountGroup": true, "webhookEndpointConfigName": "string" }, "attributes": [ { "name": "string", "value": "string", "values": [ "string" ] } ], "carrierIdentifier": { "type": "SCAC", "value": "string" }, "capacityProviderAccountGroup": { "accounts": [ { "code": "string" } ], "code": "string" }, "contents": [ { "minTemperatureThreshold": 0.1, "maxTemperatureThreshold": 0.1, "temperatureSetPoint": 0.1 } ], "equipmentIdentifiers": [ { "shouldDelete": true, "type": "MOBILE_PHONE_NUMBER", "value": "string" } ], "equipmentIdentifierChanges": [ { "type": "MOBILE_PHONE_NUMBER", "timestamp": "2019-08-24T14:15:22Z", "value": "string" } ], "id": 0, "idleDuration": 0, "masterShipmentId": "2e04ec4a-749a-4ef4-a452-b7dc8cca16aa", "pointsOfInterest": [ { "geoCoordinates": { "latitude": -90, "longitude": -180 }, "location": { "address": { "addressLines": [ "string" ], "city": "string", "country": "US", "postalCode": "string", "state": "string" }, "contact": { "companyName": "string", "contactName": "string", "email": "string", "faxNumber": "string", "faxNumberCountryCode": "string", "phoneNumber": "string", "phoneNumberCountryCode": "string", "phoneNumber2": "string", "phoneNumber2CountryCode": "string" } }, "locationIdentifiers": [ { "type": "EXTERNAL", "value": "string" } ], "pointOfInterestName": "string", "pointOfInterestType": "GENERAL", "pointOfInterestDescription": "string", "pointOfInterestId": "string", "shouldDelete": true } ], "route": { "plannedRouteId": "string" }, "shipmentIdentifiers": [ { "type": "BILL_OF_LADING", "value": "string" } ], "shipmentStops": [ { "appointmentWindow": { "endDateTime": "2019-08-24T14:15:22Z", "localTimeZoneIdentifier": "string", "startDateTime": "2019-08-24T14:15:22Z" }, "additionalAppointmentWindows": [ { "appointmentWindow": { "endDateTime": "2019-08-24T14:15:22Z", "localTimeZoneIdentifier": "string", "startDateTime": "2019-08-24T14:15:22Z" }, "appointmentStatus": "PENDING", "identifiers": [ {} ], "type": "STRATEGIC" } ], "externalArrivalEstimate": { "dateTime": "2019-08-24T14:15:22Z", "source": "SHIPPER" }, "geoCoordinates": { "latitude": -90, "longitude": -180 }, "involvedParties": [ { "addressInfo": { "addressLines": [ null ], "addressLabel": "string", "city": "string", "country": "US", "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "postalCode": "string", "state": "string" }, "contactInfo": { "companyName": "string", "email": "user@example.com", "familyName": "string", "givenName": "string", "mobilePhoneNumber": "string", "phoneNumber": "string" }, "identifyingCodes": { "codeListProvider": "WAVE", "codeListName": "DID", "partyCode": "string" }, "locationIdentifiers": [ {} ], "partyType": "SHIPPER", "vatNumber": "string" } ], "location": { "address": { "addressLines": [ "string" ], "city": "string", "country": "US", "postalCode": "string", "state": "string" }, "contact": { "companyName": "string", "contactName": "string", "email": "string", "faxNumber": "string", "faxNumberCountryCode": "string", "phoneNumber": "string", "phoneNumberCountryCode": "string", "phoneNumber2": "string", "phoneNumber2CountryCode": "string" } }, "locationIdentifiers": [ { "type": "EXTERNAL", "value": "string" } ], "stopNumber": 1, "stopName": "string", "stopDescription": "string", "stopType": "PICKUP", "stopReferenceId": "string", "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f" }, { "appointmentWindow": { "endDateTime": "2019-08-24T14:15:22Z", "localTimeZoneIdentifier": "string", "startDateTime": "2019-08-24T14:15:22Z" }, "additionalAppointmentWindows": [ { "appointmentWindow": { "endDateTime": "2019-08-24T14:15:22Z", "localTimeZoneIdentifier": "string", "startDateTime": "2019-08-24T14:15:22Z" }, "appointmentStatus": "PENDING", "identifiers": [ {} ], "type": "STRATEGIC" } ], "externalArrivalEstimate": { "dateTime": "2019-08-24T14:15:22Z", "source": "SHIPPER" }, "geoCoordinates": { "latitude": -90, "longitude": -180 }, "involvedParties": [ { "addressInfo": { "addressLines": [ null ], "addressLabel": "string", "city": "string", "country": "US", "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "postalCode": "string", "state": "string" }, "contactInfo": { "companyName": "string", "email": "user@example.com", "familyName": "string", "givenName": "string", "mobilePhoneNumber": "string", "phoneNumber": "string" }, "identifyingCodes": { "codeListProvider": "WAVE", "codeListName": "DID", "partyCode": "string" }, "locationIdentifiers": [ {} ], "partyType": "SHIPPER", "vatNumber": "string" } ], "location": { "address": { "addressLines": [ "string" ], "city": "string", "country": "US", "postalCode": "string", "state": "string" }, "contact": { "companyName": "string", "contactName": "string", "email": "string", "faxNumber": "string", "faxNumberCountryCode": "string", "phoneNumber": "string", "phoneNumberCountryCode": "string", "phoneNumber2": "string", "phoneNumber2CountryCode": "string" } }, "locationIdentifiers": [ { "type": "EXTERNAL", "value": "string" } ], "stopNumber": 1, "stopName": "string", "stopDescription": "string", "stopType": "PICKUP", "stopReferenceId": "string", "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f" } ], "sensors": [ { "identifier": { "type": "TEMPERATURE", "value": "string" }, "min": 0.1, "max": 0.1, "target": 0.1 } ], "shippingDetails": { "hazmatDetails": { "hazardClasses": [ "string" ] }, "multipleDrivers": true, "truckDetails": { "truckDimensions": { "height": 0, "length": 0, "unitOfMeasure": "IN", "width": 0 }, "truckType": "AUTO_CARRIER", "weight": 0, "weightUnitOfMeasure": "LB" } }, "shipmentDetails": { "lineItems": [ { "commodityCode": "string", "contact": { "companyName": "string", "contactName": "string", "email": "string", "faxNumber": "string", "faxNumberCountryCode": "string", "phoneNumber": "string", "phoneNumberCountryCode": "string", "phoneNumber2": "string", "phoneNumber2CountryCode": "string" }, "description": "string", "deliveryStopNumber": 0, "freightClass": "50,55,60,65,70,77.5,85,92.5,100,110,125,150,175,200,250,300,400,500", "handlingUnitQuantity": 0, "handlingUnitPackageType": "PLT", "itemIdentifiers": [ { "type": "PURCHASE_ORDER", "value": "string" } ], "itemQuantity": 0, "itemPackageType": "BAG", "involvedParties": [ { "addressInfo": { "addressLines": [] }, "contactInfo": {}, "identifyingCodes": {}, "locationIdentifiers": [ null ], "partyType": "SHIPPER", "vatNumber": "string" } ], "monetaryValue": { "amount": 0, "currency": "USD" }, "pickupStopNumber": 0, "subLineItems": [ { "commodityCode": "string", "contact": {}, "description": "string", "freightClass": "50,55,60,65,70,77.5,85,92.5,100,110,125,150,175,200,250,300,400,500", "itemIdentifiers": [ null ], "itemQuantity": 0, "itemPackageType": "BAG", "involvedParties": [ null ], "monetaryValue": {}, "totalWeight": {} } ], "totalWeight": { "weight": 0, "weightUnit": "LB" } } ] }, "shipmentLegId": "6798b072-0783-4009-baaf-2b9780277fbd", "scope": [ "RISK_MANAGEMENT" ], "trackingDetails": [ { "equipmentIdentifier": { "shouldDelete": true, "type": "MOBILE_PHONE_NUMBER", "value": "string" }, "equipmentIdentifierSource": "CUSTOMER", "trackingType": "MOBILE_PHONE" } ] }, "statusUpdates": [ { "address": { "addressLines": [ "string" ], "city": "string", "country": "US", "postalCode": "string", "state": "string" }, "geoCoordinates": { "latitude": -90, "longitude": -180 }, "statusCode": "DISPATCHED", "statusReason": { "code": "PENDING_TRACKING_METHOD", "description": "string" }, "stopNumber": 0, "timestamp": "2019-08-24T14:15:22Z" } ], "sensorHistories": [ { "readings": [ { "utcTimestamp": "2019-08-24T14:15:22Z", "value": 0.1 } ], "sensor": { "identifier": { "type": "TEMPERATURE", "value": "string" }, "min": 0.1, "max": 0.1, "target": 0.1 } } ] }'
This operation describes the payload for shipment 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.
Contents of the shipment, including product categories and set points for temperature sensitive shipments.
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.
All states that the shipment was or currently is in. Order is not guaranteed.
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://{webhook_base_url}/{webhook_endpoint_path}' \ -H 'Content-Type: application/json' \ -d '{ "costs": [ { "identifiers": [ { "type": "AIR_WAYBILL", "value": "string" } ], "type": "UNKNOWN", "totalCost": { "amount": 0, "currency": "USD" }, "tier": "UNKNOWN" } ], "contents": [ { "minTemperatureThreshold": 0.1, "maxTemperatureThreshold": 0.1, "productCategory": "UNKNOWN", "shipperTemperatureSetPoint": 0.1, "truckloadZones": [ "UNKNOWN" ], "thresholdDurationMinutes": 0 } ], "events": [ { "dateTime": "2019-08-24T14:15:22Z", "description": "string", "dateTimes": [ { "dateTime": "2019-08-24T14:15:22Z", "endDateTime": "2019-08-24T14:15:22Z", "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "lastModifiedDateTime": "2019-08-24T14:15:22Z", "source": "UNKNOWN", "sourceIdentifiers": [ { "type": "AIR_WAYBILL", "value": "string" } ], "selected": true, "sequence": 0, "type": "UNKNOWN" } ], "details": { "documentDetails": { "documentType": "UNKNOWN", "fileFormat": "UNKNOWN", "scope": "UNKNOWN", "url": "string", "version": 0 }, "mobileTracking": { "code": "UNKNOWN" }, "ocean": { "code": "UNKNOWN" }, "qualityControl": { "code": "UNKNOWN" }, "rolloverDetails": {} }, "estimateDateTime": "2019-08-24T14:15:22Z", "estimateLastCalculatedDateTime": "2019-08-24T14:15:22Z", "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "plannedDateTime": "2019-08-24T14:15:22Z", "plannedEndDateTime": "2019-08-24T14:15:22Z", "receivedDateTime": "2019-08-24T14:15:22Z", "routeSegmentId": "a5aad6c5-e2d6-4a7a-8912-ea0254639352", "stopId": "dd775241-8a00-4193-b07c-f3e4740fdc43", "type": "UNKNOWN" } ], "exceptions": [ { "category": "UNKNOWN", "definitionId": "058563fe-6949-46e9-9fb3-06a0e3a11f6a", "namespace": "UNKNOWN", "reason": "UNKNOWN", "status": "string", "transportationMode": "AIR", "timeline": [ { "description": "string", "detail": { "airFlightDetails": { "flightDetails": [ null ] }, "oceanBookingUpdateDetails": { "numberOfPreviousOceanBookings": 0, "previousOceanBookings": [ null ] }, "temperatureSensorDetails": { "productCategoryBreachDetails": [ null ] } }, "endDateTime": "2019-08-24T14:15:22Z", "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "startDateTime": "2019-08-24T14:15:22Z" } ] } ], "positions": [ { "dateTime": "2019-08-24T14:15:22Z", "latitude": -90, "longitude": -180, "receivedDateTime": "2019-08-24T14:15:22Z", "routeSegmentId": "a5aad6c5-e2d6-4a7a-8912-ea0254639352" } ], "shipment": { "attributes": [ { "name": "string", "value": "string", "values": [ "string" ] } ], "accessGroups": [ { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08" } ], "createdDateTime": "2019-08-24T14:15:22Z", "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "identifiers": [ { "type": "AIR_WAYBILL", "value": "string" } ], "lastModifiedDateTime": "2019-08-24T14:15:22Z", "plan": { "expectedTransportationModes": [ "AIR" ], "exclusions": [ {} ], "vesselTracking": { "enabled": true, "plannedVesselRouteSegments": [ { "fromStopId": "257296aa-4e11-4168-b6a7-981b8b94815b", "toStopId": "5f1765b9-dde0-424e-963b-bb3b4e1d1d56", "transportationMode": "AIR", "vesselName": "string", "vesselImo": "string", "vesselMmsi": "string" } ] } }, "routeInfo": { "routeSegments": [ { "emissions": { "co2EmissionIntensity": { "unit": "KG_PER_KM", "value": 0 }, "cargoWeight": { "unit": "LB", "value": 0 }, "distance": { "unit": "FT", "value": 0 }, "loadFactor": 0.1, "totalCO2Emissions": { "unit": "LB", "value": 0 }, "vehicleInfo": { "type": "string", "weight": {} } }, "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", "location": { "address": { "addressLines": [ null ], "city": "string", "country": "US", "postalCode": "string", "state": "string" }, "coordinates": { "latitude": -90, "longitude": -180 }, "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "identifiers": [ {} ], "masterLocationId": "0cd3d3f1-9c58-4e0d-aa5e-52a1f3317a89", "name": "string", "timeZone": "string" }, "type": "UNKNOWN" } ] }, "relatedShipments": [ { "attributes": [ { "name": "string", "value": "string", "values": [ "string" ] } ], "accessGroups": [ { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08" } ], "createdDateTime": "2019-08-24T14:15:22Z", "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "identifiers": [ { "type": "AIR_WAYBILL", "value": "string" } ], "lastModifiedDateTime": "2019-08-24T14:15:22Z", "plan": { "expectedTransportationModes": [ "AIR" ], "exclusions": [ {} ], "vesselTracking": { "enabled": true, "plannedVesselRouteSegments": [ {} ] } }, "shipmentShareLink": "string" } ], "shipmentShareLink": "string" }, "states": [ { "endDateTime": "2019-08-24T14:15:22Z", "routeSegmentId": "a5aad6c5-e2d6-4a7a-8912-ea0254639352", "startDateTime": "2019-08-24T14:15:22Z", "stopId": "dd775241-8a00-4193-b07c-f3e4740fdc43", "type": "UNKNOWN" } ], "sharingContext": { "dataOriginators": [ { "tenantUuid": "e46705ba-31a8-4f12-b6d3-f41ec1d77a9a", "tenantName": "string", "tenantId": 0, "tenantRegion": "NA12" } ], "recipients": [ { "tenantUuid": "e46705ba-31a8-4f12-b6d3-f41ec1d77a9a", "tenantName": "string", "tenantId": 0, "tenantRegion": "NA12" } ] }, "sensorContext": { "availableSensorTypesWithUnits": [ { "sensorReadingType": "UNKNOWN", "unit": "UNKNOWN" } ] } }'