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.
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.
curl -i -X GET \ 'https://developers.project44.com/_mock/api-reference/api-docs/services/booking/v1/bookings?attribute.name=string&attribute.values=string&pageNumber=1&pageSize=10&statuses=PROCESSING' \ -H 'Authorization: Bearer <YOUR_TOKEN_HERE>'
{ "paginationInfo": { "pageNumber": 0, "pageSize": 0, "total": 0 }, "results": [ { … } ] }
A shipper-provided list of custom key-value list pairs relevant to the booking which are shared with the carrier.
A Capacity Provider identifier object used to identify a carrier or a broker responsible for transporting a shipment, containing two key-value pairs: type and value.
Individuals representing the carrier to whom the booking should be sent. These contacts are not notify parties nor any individuals working with or on behalf of the shipper.
The datetime of expiration for this request from the shipper to the carrier. A timezone offset is required.
An optional, shipper-provided free-text space for notes on the shipment.
A list of at least one identifier as reference to the original source of the rate applicable to the booking. Typically a spot quote or a contract ID.
The project44-generated identifier for the shipment which parents the booking. Optional when created with a Shipment in one request. Required when creating a booking separately.
Descriptive information about the load to be transported; if the load does not change between route segments, this body is expected to be the same across each route-segment body.
curl -i -X POST \ https://developers.project44.com/_mock/api-reference/api-docs/services/booking/v1/bookings \ -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \ -H 'Content-Type: application/json' \ -d '{ "attributes": [ { "name": "attribute name", "values": [ "string value 1", "string value 2" ] } ], "capacityProviderIdentifier": { "type": "CARRIER_SCAC", "value": "CODE" }, "carrierContacts": [ { "companyName": "Carrier Company Name", "givenName": "John", "familyName": "Hudson", "email": "j.hudson@carrier-company.project44.com" } ], "totalRate": { "currency": "USD", "amount": 3500 }, "rateIdentifiers": [ { "source": "EXTERNAL", "type": "CONTRACT", "value": "contract-1234" } ], "expirationDateTime": "2092-12-01T08:30:00+00:00", "routeSegmentIds": [ "3101428c-705c-4ec0-967b-7975bd1d3edc" ], "shipmentDetails": [ { "pickupStopId": "1f7c4d02-919e-4d75-a2cf-7641ee271d58", "deliveryStopId": "5e5eed3f-ab19-4e59-931d-3768c0d2d9b8", "handlingUnits": [ { "monetaryValue": { "currency": "USD", "amount": 1200 }, "quantity": 10, "handlingUnitType": "PALLET", "stackable": true, "dimensions": { "length": 48, "width": 40, "height": 40, "unit": "IN" }, "weight": { "value": 2750, "unit": "LB" } } ], "description": "Temperature-Sensitive Goods", "identifiers": [ { "type": "PURCHASE_ORDER", "value": "1234" } ], "accessorials": [ { "code": "REFRIGERATED", "details": { "min": 32, "max": 40, "unit": "FAHRENHEIT" } } ] } ], "apiConfiguration": { "bookingWebhookName": "Shipper WebhookName" }, "shipperContactInfo": { "companyName": "Shipper Company Name", "givenName": "Jennifer", "familyName": "Smith", "email": "j.smith@shipper-company.project44.com" }, "shippingDetails": { "parties": [ { "partyType": "SHIPPER", "contactInfo": { "companyName": "Shipper Company Name", "givenName": "Jennifer", "familyName": "Smith", "email": "j.smith@shipper-company.project44.com" }, "addressInfo": { "addressLines": [ "400 Montgomery St", "2nd Floor" ], "postalCode": "94104", "city": "San Francisco", "state": "CA", "country": "US" } }, { "partyType": "NOTIFY_PARTY", "contactInfo": { "companyName": "Notify Party Company Name", "givenName": "Henry", "familyName": "Jacobsen", "email": "h.jacobsen@notify-company.project44.com" }, "addressInfo": { "addressLines": [ "222 W. Merchandise Mart Plaza", "Suite 1744" ], "postalCode": "60654", "city": "Chicago", "state": "IL", "country": "US" } } ], "serviceType": "DOOR_TO_DOOR", "bookingType": "FULL_CONTAINER_LOAD", "incoterm": "DAP", "containerCount": { "reeferCount": { "fortyFootContainerCount": 1 } }, "accessorials": [ { "code": "REFRIGERATED", "details": { "min": 32, "max": 40, "unit": "FAHRENHEIT" } } ] } }'
Successful Response
A shipper-provided list of custom key-value list pairs relevant to the booking which are shared with the carrier.
An enumeration.
Method by which a shipper initiates a request for a booking.
A Capacity Provider identifier object used to identify a carrier or a broker responsible for transporting a shipment, containing two key-value pairs: type and value.
Individuals representing the carrier to whom the booking should be sent. These contacts are not notify parties nor any individuals working with or on behalf of the shipper.
Method by which a carrier responds to bookings.
A free-text space for the carrier to provide extra information as to why they may reject the booking request.
Carrier-supplied identifiers for the shipment to be transported. Fully mutable.
The datetime of expiration for this request from the shipper to the carrier. A timezone offset is required.
Once BOOKED
, the booking initiates a tracked shipment within project44. With this identifier, the shipper may seek the trackable shipment through the rest of the project44 platform.
An optional, shipper-provided free-text space for notes on the shipment.
A list of at least one identifier as reference to the original source of the rate applicable to the booking. Typically a spot quote or a contract ID.
A list of locations from/to which the shipment load is expected to be transported, organized as pairs.
The reason a carrier may opt not to accept a booking from a shipper.
The project44-generated identifier for the shipment which parents the booking. Optional when created with a Shipment in one request. Required when creating a booking separately.
Descriptive information about the load to be transported; if the load does not change between route segments, this body is expected to be the same across each route-segment body.
Information about how a load should be handled in transportation, specific to mode; When carrier respond to booking, this field also contains specific carrier's response information.
Information about how a load should be handled in transportation, specific to mode; When carrier respond to booking, this field also contains specific carrier's response information.
A descriptive state for a booking. Bookings start out in a PROCESSING
state, only to be BOOKED
or REJECTED
by a carrier. A booking may enter the UNDER_REVIEW
state after PROCESSING
if the response must be polled after request. The state may shift to CANCELLED
due to actions caused by either party in any state. A booking is EXPIRED
if it sits in the PROCESSING
or UNDER_REVIEW
status upon the time which it is set to expire.
Shipper-supplied identifiers for the shipment to be transported. Passed through from the parenting shipment and shared with the carrier.
{ "attributes": [ { … } ], "apiConfiguration": { "bookingWebhookName": "string" }, "automatedFailureReason": "ERROR_CREDENTIALS", "bookingSourceMethod": "API", "capacityProviderIdentifier": { "type": "FFW_SCAC", "value": "string" }, "carrierContacts": [ { … } ], "carrierResponseMethod": "EMAIL", "carrierRejectionNotes": "string", "carrierProvidedIdentifiers": [ { … } ], "createdDateTime": "2019-08-24T14:15:22Z", "expirationDateTime": "2019-08-24T14:15:22Z", "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "lastModifiedDateTime": "2019-08-24T14:15:22Z", "masterShipmentId": "2e04ec4a-749a-4ef4-a452-b7dc8cca16aa", "notes": "string", "rateIdentifiers": [ { … } ], "routeSegmentIds": [ "497f6eca-6276-4993-bfeb-53cbbbba6f08" ], "routeSegments": [ { … } ], "rejectionReason": "COST_NOT_AGREED", "shipmentId": "47efd5a2-af91-4417-950a-7f546cd1b5cf", "shipmentDetails": [ { … } ], "shipperContactInfo": { "companyName": "string", "email": "user@example.com", "familyName": "string", "givenName": "string", "mobilePhoneNumber": "string", "phoneNumber": "string" }, "shippingDetails": { "accessorials": [ … ], "flatbedType": "CONESTOGA", "loadPreference": "FULL", "trailerType": "FLATBED", "trailerLength": { … }, "trailerVolume": { … } }, "status": "PROCESSING", "shipmentIdentifiers": [ { … } ], "totalRate": { "amount": 0, "currency": "USD" }, "transportationMode": "OCEAN" }
curl -i -X GET \ 'https://developers.project44.com/_mock/api-reference/api-docs/services/booking/v1/bookings/{bookingId}' \ -H 'Authorization: Bearer <YOUR_TOKEN_HERE>'
Successful Response
A shipper-provided list of custom key-value list pairs relevant to the booking which are shared with the carrier.
An enumeration.
Method by which a shipper initiates a request for a booking.
A Capacity Provider identifier object used to identify a carrier or a broker responsible for transporting a shipment, containing two key-value pairs: type and value.
Individuals representing the carrier to whom the booking should be sent. These contacts are not notify parties nor any individuals working with or on behalf of the shipper.
Method by which a carrier responds to bookings.
A free-text space for the carrier to provide extra information as to why they may reject the booking request.
Carrier-supplied identifiers for the shipment to be transported. Fully mutable.
The datetime of expiration for this request from the shipper to the carrier. A timezone offset is required.
Once BOOKED
, the booking initiates a tracked shipment within project44. With this identifier, the shipper may seek the trackable shipment through the rest of the project44 platform.
An optional, shipper-provided free-text space for notes on the shipment.
A list of at least one identifier as reference to the original source of the rate applicable to the booking. Typically a spot quote or a contract ID.
A list of locations from/to which the shipment load is expected to be transported, organized as pairs.
The reason a carrier may opt not to accept a booking from a shipper.
The project44-generated identifier for the shipment which parents the booking. Optional when created with a Shipment in one request. Required when creating a booking separately.
Descriptive information about the load to be transported; if the load does not change between route segments, this body is expected to be the same across each route-segment body.
Information about how a load should be handled in transportation, specific to mode; When carrier respond to booking, this field also contains specific carrier's response information.
Information about how a load should be handled in transportation, specific to mode; When carrier respond to booking, this field also contains specific carrier's response information.
A descriptive state for a booking. Bookings start out in a PROCESSING
state, only to be BOOKED
or REJECTED
by a carrier. A booking may enter the UNDER_REVIEW
state after PROCESSING
if the response must be polled after request. The state may shift to CANCELLED
due to actions caused by either party in any state. A booking is EXPIRED
if it sits in the PROCESSING
or UNDER_REVIEW
status upon the time which it is set to expire.
Shipper-supplied identifiers for the shipment to be transported. Passed through from the parenting shipment and shared with the carrier.
{ "attributes": [ { … } ], "apiConfiguration": { "bookingWebhookName": "string" }, "automatedFailureReason": "ERROR_CREDENTIALS", "bookingSourceMethod": "API", "capacityProviderIdentifier": { "type": "FFW_SCAC", "value": "string" }, "carrierContacts": [ { … } ], "carrierResponseMethod": "EMAIL", "carrierRejectionNotes": "string", "carrierProvidedIdentifiers": [ { … } ], "createdDateTime": "2019-08-24T14:15:22Z", "expirationDateTime": "2019-08-24T14:15:22Z", "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "lastModifiedDateTime": "2019-08-24T14:15:22Z", "masterShipmentId": "2e04ec4a-749a-4ef4-a452-b7dc8cca16aa", "notes": "string", "rateIdentifiers": [ { … } ], "routeSegmentIds": [ "497f6eca-6276-4993-bfeb-53cbbbba6f08" ], "routeSegments": [ { … } ], "rejectionReason": "COST_NOT_AGREED", "shipmentId": "47efd5a2-af91-4417-950a-7f546cd1b5cf", "shipmentDetails": [ { … } ], "shipperContactInfo": { "companyName": "string", "email": "user@example.com", "familyName": "string", "givenName": "string", "mobilePhoneNumber": "string", "phoneNumber": "string" }, "shippingDetails": { "accessorials": [ … ], "flatbedType": "CONESTOGA", "loadPreference": "FULL", "trailerType": "FLATBED", "trailerLength": { … }, "trailerVolume": { … } }, "status": "PROCESSING", "shipmentIdentifiers": [ { … } ], "totalRate": { "amount": 0, "currency": "USD" }, "transportationMode": "OCEAN" }
A shipper-provided list of custom key-value list pairs relevant to the booking which are shared with the carrier.
A Capacity Provider identifier object used to identify a carrier or a broker responsible for transporting a shipment, containing two key-value pairs: type and value.
Individuals representing the carrier to whom the booking should be sent. These contacts are not notify parties nor any individuals working with or on behalf of the shipper.
The datetime of expiration for this request from the shipper to the carrier. A timezone offset is required.
An optional, shipper-provided free-text space for notes on the shipment.
A list of at least one identifier as reference to the original source of the rate applicable to the booking. Typically a spot quote or a contract ID.
The project44-generated identifier for the shipment which parents the booking. Optional when created with a Shipment in one request. Required when creating a booking separately.
Descriptive information about the load to be transported; if the load does not change between route segments, this body is expected to be the same across each route-segment body.
curl -i -X PUT \ 'https://developers.project44.com/_mock/api-reference/api-docs/services/booking/v1/bookings/{bookingId}' \ -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \ -H 'Content-Type: application/json' \ -d '{ "attributes": [ { "name": "attribute name", "values": [ "string value 1", "string value 2" ] } ], "capacityProviderIdentifier": { "type": "CARRIER_SCAC", "value": "CODE" }, "carrierContacts": [ { "companyName": "Carrier Company Name", "givenName": "John", "familyName": "Hudson", "email": "j.hudson@carrier-company.project44.com" } ], "totalRate": { "currency": "USD", "amount": 3500 }, "rateIdentifiers": [ { "source": "EXTERNAL", "type": "CONTRACT", "value": "contract-1234" } ], "expirationDateTime": "2092-12-01T08:30:00+00:00", "routeSegmentIds": [ "3101428c-705c-4ec0-967b-7975bd1d3edc" ], "shipmentDetails": [ { "pickupStopId": "1f7c4d02-919e-4d75-a2cf-7641ee271d58", "deliveryStopId": "5e5eed3f-ab19-4e59-931d-3768c0d2d9b8", "handlingUnits": [ { "monetaryValue": { "currency": "USD", "amount": 1200 }, "quantity": 10, "handlingUnitType": "PALLET", "stackable": true, "dimensions": { "length": 48, "width": 40, "height": 40, "unit": "IN" }, "weight": { "value": 2750, "unit": "LB" } } ], "description": "Temperature-Sensitive Goods", "identifiers": [ { "type": "PURCHASE_ORDER", "value": "1234" } ], "accessorials": [ { "code": "REFRIGERATED", "details": { "min": 32, "max": 40, "unit": "FAHRENHEIT" } } ] } ], "apiConfiguration": { "bookingWebhookName": "Shipper WebhookName" }, "shipperContactInfo": { "companyName": "Shipper Company Name", "givenName": "Jennifer", "familyName": "Smith", "email": "j.smith@shipper-company.project44.com" }, "shippingDetails": { "parties": [ { "partyType": "SHIPPER", "contactInfo": { "companyName": "Shipper Company Name", "givenName": "Jennifer", "familyName": "Smith", "email": "j.smith@shipper-company.project44.com" }, "addressInfo": { "addressLines": [ "400 Montgomery St", "2nd Floor" ], "postalCode": "94104", "city": "San Francisco", "state": "CA", "country": "US" } }, { "partyType": "NOTIFY_PARTY", "contactInfo": { "companyName": "Notify Party Company Name", "givenName": "Henry", "familyName": "Jacobsen", "email": "h.jacobsen@notify-company.project44.com" }, "addressInfo": { "addressLines": [ "222 W. Merchandise Mart Plaza", "Suite 1744" ], "postalCode": "60654", "city": "Chicago", "state": "IL", "country": "US" } } ], "serviceType": "DOOR_TO_DOOR", "bookingType": "FULL_CONTAINER_LOAD", "incoterm": "DAP", "containerCount": { "reeferCount": { "fortyFootContainerCount": 1 } }, "accessorials": [ { "code": "REFRIGERATED", "details": { "min": 32, "max": 40, "unit": "FAHRENHEIT" } } ] } }'
Successful Response
A shipper-provided list of custom key-value list pairs relevant to the booking which are shared with the carrier.
An enumeration.
Method by which a shipper initiates a request for a booking.
A Capacity Provider identifier object used to identify a carrier or a broker responsible for transporting a shipment, containing two key-value pairs: type and value.
Individuals representing the carrier to whom the booking should be sent. These contacts are not notify parties nor any individuals working with or on behalf of the shipper.
Method by which a carrier responds to bookings.
A free-text space for the carrier to provide extra information as to why they may reject the booking request.
Carrier-supplied identifiers for the shipment to be transported. Fully mutable.
The datetime of expiration for this request from the shipper to the carrier. A timezone offset is required.
Once BOOKED
, the booking initiates a tracked shipment within project44. With this identifier, the shipper may seek the trackable shipment through the rest of the project44 platform.
An optional, shipper-provided free-text space for notes on the shipment.
A list of at least one identifier as reference to the original source of the rate applicable to the booking. Typically a spot quote or a contract ID.
A list of locations from/to which the shipment load is expected to be transported, organized as pairs.
The reason a carrier may opt not to accept a booking from a shipper.
The project44-generated identifier for the shipment which parents the booking. Optional when created with a Shipment in one request. Required when creating a booking separately.
Descriptive information about the load to be transported; if the load does not change between route segments, this body is expected to be the same across each route-segment body.
Information about how a load should be handled in transportation, specific to mode; When carrier respond to booking, this field also contains specific carrier's response information.
Information about how a load should be handled in transportation, specific to mode; When carrier respond to booking, this field also contains specific carrier's response information.
A descriptive state for a booking. Bookings start out in a PROCESSING
state, only to be BOOKED
or REJECTED
by a carrier. A booking may enter the UNDER_REVIEW
state after PROCESSING
if the response must be polled after request. The state may shift to CANCELLED
due to actions caused by either party in any state. A booking is EXPIRED
if it sits in the PROCESSING
or UNDER_REVIEW
status upon the time which it is set to expire.
Shipper-supplied identifiers for the shipment to be transported. Passed through from the parenting shipment and shared with the carrier.
{ "attributes": [ { … } ], "apiConfiguration": { "bookingWebhookName": "string" }, "automatedFailureReason": "ERROR_CREDENTIALS", "bookingSourceMethod": "API", "capacityProviderIdentifier": { "type": "FFW_SCAC", "value": "string" }, "carrierContacts": [ { … } ], "carrierResponseMethod": "EMAIL", "carrierRejectionNotes": "string", "carrierProvidedIdentifiers": [ { … } ], "createdDateTime": "2019-08-24T14:15:22Z", "expirationDateTime": "2019-08-24T14:15:22Z", "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "lastModifiedDateTime": "2019-08-24T14:15:22Z", "masterShipmentId": "2e04ec4a-749a-4ef4-a452-b7dc8cca16aa", "notes": "string", "rateIdentifiers": [ { … } ], "routeSegmentIds": [ "497f6eca-6276-4993-bfeb-53cbbbba6f08" ], "routeSegments": [ { … } ], "rejectionReason": "COST_NOT_AGREED", "shipmentId": "47efd5a2-af91-4417-950a-7f546cd1b5cf", "shipmentDetails": [ { … } ], "shipperContactInfo": { "companyName": "string", "email": "user@example.com", "familyName": "string", "givenName": "string", "mobilePhoneNumber": "string", "phoneNumber": "string" }, "shippingDetails": { "accessorials": [ … ], "flatbedType": "CONESTOGA", "loadPreference": "FULL", "trailerType": "FLATBED", "trailerLength": { … }, "trailerVolume": { … } }, "status": "PROCESSING", "shipmentIdentifiers": [ { … } ], "totalRate": { "amount": 0, "currency": "USD" }, "transportationMode": "OCEAN" }
curl -i -X POST \ 'https://developers.project44.com/_mock/api-reference/api-docs/services/booking/v1/bookings/{bookingId}/cancellations' \ -H 'Authorization: Bearer <YOUR_TOKEN_HERE>'
Successful Response
A shipper-provided list of custom key-value list pairs relevant to the booking which are shared with the carrier.
An enumeration.
Method by which a shipper initiates a request for a booking.
A Capacity Provider identifier object used to identify a carrier or a broker responsible for transporting a shipment, containing two key-value pairs: type and value.
Individuals representing the carrier to whom the booking should be sent. These contacts are not notify parties nor any individuals working with or on behalf of the shipper.
Method by which a carrier responds to bookings.
A free-text space for the carrier to provide extra information as to why they may reject the booking request.
Carrier-supplied identifiers for the shipment to be transported. Fully mutable.
The datetime of expiration for this request from the shipper to the carrier. A timezone offset is required.
Once BOOKED
, the booking initiates a tracked shipment within project44. With this identifier, the shipper may seek the trackable shipment through the rest of the project44 platform.
An optional, shipper-provided free-text space for notes on the shipment.
A list of at least one identifier as reference to the original source of the rate applicable to the booking. Typically a spot quote or a contract ID.
A list of locations from/to which the shipment load is expected to be transported, organized as pairs.
The reason a carrier may opt not to accept a booking from a shipper.
The project44-generated identifier for the shipment which parents the booking. Optional when created with a Shipment in one request. Required when creating a booking separately.
Descriptive information about the load to be transported; if the load does not change between route segments, this body is expected to be the same across each route-segment body.
Information about how a load should be handled in transportation, specific to mode; When carrier respond to booking, this field also contains specific carrier's response information.
Information about how a load should be handled in transportation, specific to mode; When carrier respond to booking, this field also contains specific carrier's response information.
A descriptive state for a booking. Bookings start out in a PROCESSING
state, only to be BOOKED
or REJECTED
by a carrier. A booking may enter the UNDER_REVIEW
state after PROCESSING
if the response must be polled after request. The state may shift to CANCELLED
due to actions caused by either party in any state. A booking is EXPIRED
if it sits in the PROCESSING
or UNDER_REVIEW
status upon the time which it is set to expire.
Shipper-supplied identifiers for the shipment to be transported. Passed through from the parenting shipment and shared with the carrier.
{ "attributes": [ { … } ], "apiConfiguration": { "bookingWebhookName": "string" }, "automatedFailureReason": "ERROR_CREDENTIALS", "bookingSourceMethod": "API", "capacityProviderIdentifier": { "type": "FFW_SCAC", "value": "string" }, "carrierContacts": [ { … } ], "carrierResponseMethod": "EMAIL", "carrierRejectionNotes": "string", "carrierProvidedIdentifiers": [ { … } ], "createdDateTime": "2019-08-24T14:15:22Z", "expirationDateTime": "2019-08-24T14:15:22Z", "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "lastModifiedDateTime": "2019-08-24T14:15:22Z", "masterShipmentId": "2e04ec4a-749a-4ef4-a452-b7dc8cca16aa", "notes": "string", "rateIdentifiers": [ { … } ], "routeSegmentIds": [ "497f6eca-6276-4993-bfeb-53cbbbba6f08" ], "routeSegments": [ { … } ], "rejectionReason": "COST_NOT_AGREED", "shipmentId": "47efd5a2-af91-4417-950a-7f546cd1b5cf", "shipmentDetails": [ { … } ], "shipperContactInfo": { "companyName": "string", "email": "user@example.com", "familyName": "string", "givenName": "string", "mobilePhoneNumber": "string", "phoneNumber": "string" }, "shippingDetails": { "accessorials": [ … ], "flatbedType": "CONESTOGA", "loadPreference": "FULL", "trailerType": "FLATBED", "trailerLength": { … }, "trailerVolume": { … } }, "status": "PROCESSING", "shipmentIdentifiers": [ { … } ], "totalRate": { "amount": 0, "currency": "USD" }, "transportationMode": "OCEAN" }
curl -i -X POST \ 'https://developers.project44.com/_mock/api-reference/api-docs/services/booking/v1/bookings/{bookingId}/carrier-notices' \ -H 'Authorization: Bearer <YOUR_TOKEN_HERE>'
Successful Response
A shipper-provided list of custom key-value list pairs relevant to the booking which are shared with the carrier.
An enumeration.
Method by which a shipper initiates a request for a booking.
A Capacity Provider identifier object used to identify a carrier or a broker responsible for transporting a shipment, containing two key-value pairs: type and value.
Individuals representing the carrier to whom the booking should be sent. These contacts are not notify parties nor any individuals working with or on behalf of the shipper.
Method by which a carrier responds to bookings.
A free-text space for the carrier to provide extra information as to why they may reject the booking request.
Carrier-supplied identifiers for the shipment to be transported. Fully mutable.
The datetime of expiration for this request from the shipper to the carrier. A timezone offset is required.
Once BOOKED
, the booking initiates a tracked shipment within project44. With this identifier, the shipper may seek the trackable shipment through the rest of the project44 platform.
An optional, shipper-provided free-text space for notes on the shipment.
A list of at least one identifier as reference to the original source of the rate applicable to the booking. Typically a spot quote or a contract ID.
A list of locations from/to which the shipment load is expected to be transported, organized as pairs.
The reason a carrier may opt not to accept a booking from a shipper.
The project44-generated identifier for the shipment which parents the booking. Optional when created with a Shipment in one request. Required when creating a booking separately.
Descriptive information about the load to be transported; if the load does not change between route segments, this body is expected to be the same across each route-segment body.
Information about how a load should be handled in transportation, specific to mode; When carrier respond to booking, this field also contains specific carrier's response information.
Information about how a load should be handled in transportation, specific to mode; When carrier respond to booking, this field also contains specific carrier's response information.
A descriptive state for a booking. Bookings start out in a PROCESSING
state, only to be BOOKED
or REJECTED
by a carrier. A booking may enter the UNDER_REVIEW
state after PROCESSING
if the response must be polled after request. The state may shift to CANCELLED
due to actions caused by either party in any state. A booking is EXPIRED
if it sits in the PROCESSING
or UNDER_REVIEW
status upon the time which it is set to expire.
Shipper-supplied identifiers for the shipment to be transported. Passed through from the parenting shipment and shared with the carrier.
{ "attributes": [ { … } ], "apiConfiguration": { "bookingWebhookName": "string" }, "automatedFailureReason": "ERROR_CREDENTIALS", "bookingSourceMethod": "API", "capacityProviderIdentifier": { "type": "FFW_SCAC", "value": "string" }, "carrierContacts": [ { … } ], "carrierResponseMethod": "EMAIL", "carrierRejectionNotes": "string", "carrierProvidedIdentifiers": [ { … } ], "createdDateTime": "2019-08-24T14:15:22Z", "expirationDateTime": "2019-08-24T14:15:22Z", "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "lastModifiedDateTime": "2019-08-24T14:15:22Z", "masterShipmentId": "2e04ec4a-749a-4ef4-a452-b7dc8cca16aa", "notes": "string", "rateIdentifiers": [ { … } ], "routeSegmentIds": [ "497f6eca-6276-4993-bfeb-53cbbbba6f08" ], "routeSegments": [ { … } ], "rejectionReason": "COST_NOT_AGREED", "shipmentId": "47efd5a2-af91-4417-950a-7f546cd1b5cf", "shipmentDetails": [ { … } ], "shipperContactInfo": { "companyName": "string", "email": "user@example.com", "familyName": "string", "givenName": "string", "mobilePhoneNumber": "string", "phoneNumber": "string" }, "shippingDetails": { "accessorials": [ … ], "flatbedType": "CONESTOGA", "loadPreference": "FULL", "trailerType": "FLATBED", "trailerLength": { … }, "trailerVolume": { … } }, "status": "PROCESSING", "shipmentIdentifiers": [ { … } ], "totalRate": { "amount": 0, "currency": "USD" }, "transportationMode": "OCEAN" }
As a Carrier, respond to a booking request, or update an existing response.
ACCEPT a booking by providing any identifiers applicable to the Shipment across applicable route-segments in the form of a BookingResponse
. All route-segments must be present in the response, even to specify there are no identifiers known at the time of acceptance. A Carrier may update identifiers with this call if they have already accepted a booking.
REJECT a booking by selecting a reason for rejection in the form of a BookingRejection
.
A Carrier may not PUT a Rejection to a booking after they have already accepted it.
Carrier response in the form of an Acceptance with identification information or a Rejection with a reason.
Further response details applicable to the booking.
Further response details applicable to the booking.
List of the accepted dates to travel the route-segments requested by the shipper. All of the route-segments requested by the shipper in the booking must be included.
curl -i -X PUT \ 'https://developers.project44.com/_mock/api-reference/api-docs/services/booking/v1/bookings/{bookingId}/responses' \ -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \ -H 'Content-Type: application/json' \ -d '{ "shipmentIdentifiers": [ { "type": "BOOKING_NUMBER", "value": "123456789" }, { "type": "BILL_OF_LADING", "value": "987654321" }, { "type": "CARRIER_NAME", "value": "Ocean Carrier Name" }, { "type": "CARRIER_SCAC", "value": "CLTD" }, { "type": "VESSEL_NAME", "value": "Vessel Name" }, { "type": "VOYAGE_NUMBER", "value": "1234" } ], "routeSegments": [ { "routeSegmentId": "5a0498bb-fb7d-4805-90c9-da6acd246a73", "fromDate": "2092-12-10", "toDate": "2092-12-12" } ], "details": { "portsDetails": [ { "portType": "PORT_OF_DISCHARGE", "estimatedDatetime": "2092-12-10T00:00:00+00:00" }, { "portType": "PORT_OF_LOADING", "estimatedDatetime": "2092-12-10T00:00:00+00:00" } ], "estimatedFinalDestinationDatetime": "2092-12-10T00:00:00+00:00", "cutOffDetails": { "cutOffDatetime": "2092-12-01T08:30:00+00:00", "vesselCutOffDatetime": "2092-12-01T08:30:00+00:00", "documentationCutOffDatetime": "2092-12-01T08:30:00+00:00" } } }'
Successful Response
A shipper-provided list of custom key-value list pairs relevant to the booking which are shared with the carrier.
An enumeration.
Method by which a shipper initiates a request for a booking.
A Capacity Provider identifier object used to identify a carrier or a broker responsible for transporting a shipment, containing two key-value pairs: type and value.
Individuals representing the carrier to whom the booking should be sent. These contacts are not notify parties nor any individuals working with or on behalf of the shipper.
Method by which a carrier responds to bookings.
A free-text space for the carrier to provide extra information as to why they may reject the booking request.
Carrier-supplied identifiers for the shipment to be transported. Fully mutable.
The datetime of expiration for this request from the shipper to the carrier. A timezone offset is required.
Once BOOKED
, the booking initiates a tracked shipment within project44. With this identifier, the shipper may seek the trackable shipment through the rest of the project44 platform.
An optional, shipper-provided free-text space for notes on the shipment.
A list of at least one identifier as reference to the original source of the rate applicable to the booking. Typically a spot quote or a contract ID.
A list of locations from/to which the shipment load is expected to be transported, organized as pairs.
The reason a carrier may opt not to accept a booking from a shipper.
The project44-generated identifier for the shipment which parents the booking. Optional when created with a Shipment in one request. Required when creating a booking separately.
Descriptive information about the load to be transported; if the load does not change between route segments, this body is expected to be the same across each route-segment body.
Information about how a load should be handled in transportation, specific to mode; When carrier respond to booking, this field also contains specific carrier's response information.
Information about how a load should be handled in transportation, specific to mode; When carrier respond to booking, this field also contains specific carrier's response information.
A descriptive state for a booking. Bookings start out in a PROCESSING
state, only to be BOOKED
or REJECTED
by a carrier. A booking may enter the UNDER_REVIEW
state after PROCESSING
if the response must be polled after request. The state may shift to CANCELLED
due to actions caused by either party in any state. A booking is EXPIRED
if it sits in the PROCESSING
or UNDER_REVIEW
status upon the time which it is set to expire.
Shipper-supplied identifiers for the shipment to be transported. Passed through from the parenting shipment and shared with the carrier.
{ "attributes": [ { … } ], "apiConfiguration": { "bookingWebhookName": "string" }, "automatedFailureReason": "ERROR_CREDENTIALS", "bookingSourceMethod": "API", "capacityProviderIdentifier": { "type": "FFW_SCAC", "value": "string" }, "carrierContacts": [ { … } ], "carrierResponseMethod": "EMAIL", "carrierRejectionNotes": "string", "carrierProvidedIdentifiers": [ { … } ], "createdDateTime": "2019-08-24T14:15:22Z", "expirationDateTime": "2019-08-24T14:15:22Z", "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "lastModifiedDateTime": "2019-08-24T14:15:22Z", "masterShipmentId": "2e04ec4a-749a-4ef4-a452-b7dc8cca16aa", "notes": "string", "rateIdentifiers": [ { … } ], "routeSegmentIds": [ "497f6eca-6276-4993-bfeb-53cbbbba6f08" ], "routeSegments": [ { … } ], "rejectionReason": "COST_NOT_AGREED", "shipmentId": "47efd5a2-af91-4417-950a-7f546cd1b5cf", "shipmentDetails": [ { … } ], "shipperContactInfo": { "companyName": "string", "email": "user@example.com", "familyName": "string", "givenName": "string", "mobilePhoneNumber": "string", "phoneNumber": "string" }, "shippingDetails": { "accessorials": [ … ], "flatbedType": "CONESTOGA", "loadPreference": "FULL", "trailerType": "FLATBED", "trailerLength": { … }, "trailerVolume": { … } }, "status": "PROCESSING", "shipmentIdentifiers": [ { … } ], "totalRate": { "amount": 0, "currency": "USD" }, "transportationMode": "OCEAN" }
The type of the custom shipment identifier to search against.
The value of the custom shipment identifier to search for; this filter is non-partial.
The values of the custom shipment attribute to search for; this filter is non-partial.
curl -i -X GET \ 'https://developers.project44.com/_mock/api-reference/api-docs/services/booking/v1/shipments?attribute.name=string&attribute.values=string&identifier.type=AIR_WAYBILL&identifier.value=string&pageNumber=1&pageSize=10' \ -H 'Authorization: Bearer <YOUR_TOKEN_HERE>'
{ "paginationInfo": { "pageNumber": 0, "pageSize": 0, "total": 0 }, "results": [ { … } ] }
An optional user-defined set of custom attributes to associate with this shipment. These are descriptors and identifiers which apply to the entire shipment and they are not shared with any carriers.
A list of bookings related to the shipment to create at the same time.
The descriptive name or otherwise human-readable description of the shipment created; this is not visible to the carrier.
An optional, shipper-provided free-text space for notes on the shipment.
curl -i -X POST \ https://developers.project44.com/_mock/api-reference/api-docs/services/booking/v1/shipments \ -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \ -H 'Content-Type: application/json' \ -d '{ "identifiers": [ { "type": "CUSTOMER_REFERENCE", "value": "SHIPMENT-12345" } ], "routeInfo": { "stops": [ { "id": "e379cef8-5af6-47e3-9c8f-052faa2c5061", "type": "PICKUP", "arrivalDate": "2092-12-10", "location": { "address": { "addressLines": [ "222 W. Merchandise Mart Plaza", "Suite 1744" ], "postalCode": "60654", "city": "Chicago", "state": "IL", "country": "US" } } }, { "id": "b996b45d-94cb-42ac-aa6f-cd8c7cfe7a5b", "type": "DELIVERY", "arrivalDate": "2092-12-12", "location": { "address": { "addressLines": [ "3800 N Lamar Blvd", "Suite 210" ], "postalCode": "78756", "city": "Austin", "state": "TX", "country": "US" } } } ], "routeSegments": [ { "fromStopId": "e379cef8-5af6-47e3-9c8f-052faa2c5061", "toStopId": "e379cef8-5af6-47e3-9c8f-052faa2c5061" } ] }, "attributes": [ { "name": "attribute name", "values": [ "string value 1", "string value 2" ] } ] }'
Success
An optional user-defined set of custom attributes to associate with this shipment. These are descriptors and identifiers which apply to the entire shipment and they are not shared with any carriers.
The descriptive name or otherwise human-readable description of the shipment created; this is not visible to the carrier.
An optional, shipper-provided free-text space for notes on the shipment.
{ "identifiers": [ { … } ], "routeInfo": { "stops": [ … ], "routeSegments": [ … ] }, "attributes": [ { … } ], "name": "shipmentName", "notes": "shipmentNotes", "bookings": [ { … } ], "id": "d1b4c593-7b6a-49d2-8c8e-12c914c20016", "createdDateTime": "2024-03-25T10:39:05", "lastModifiedDateTime": "2024-03-25T10:39:05" }
curl -i -X GET \ 'https://developers.project44.com/_mock/api-reference/api-docs/services/booking/v1/shipments/{shipmentId}' \ -H 'Authorization: Bearer <YOUR_TOKEN_HERE>'
Successful Response
An optional user-defined set of custom attributes to associate with this shipment. These are descriptors and identifiers which apply to the entire shipment and they are not shared with any carriers.
The descriptive name or otherwise human-readable description of the shipment created; this is not visible to the carrier.
An optional, shipper-provided free-text space for notes on the shipment.
{ "attributes": [ { … } ], "bookings": [ { … } ], "createdDateTime": "2019-08-24T14:15:22Z", "identifiers": [ { … } ], "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "lastModifiedDateTime": "2019-08-24T14:15:22Z", "name": "string", "notes": "string", "routeInfo": { "routeSegments": [ … ], "stops": [ … ] } }
An optional user-defined set of custom attributes to associate with this shipment. These are descriptors and identifiers which apply to the entire shipment and they are not shared with any carriers.
The descriptive name or otherwise human-readable description of the shipment created; this is not visible to the carrier.
An optional, shipper-provided free-text space for notes on the shipment.
curl -i -X PUT \ 'https://developers.project44.com/_mock/api-reference/api-docs/services/booking/v1/shipments/{shipmentId}' \ -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \ -H 'Content-Type: application/json' \ -d '{ "identifiers": [ { "type": "CUSTOMER_REFERENCE", "value": "SHIPMENT-12345" } ], "routeInfo": { "stops": [ { "id": "e379cef8-5af6-47e3-9c8f-052faa2c5061", "type": "PICKUP", "arrivalDate": "2092-12-10", "contacts": [], "accessorials": [], "location": { "identifiers": [], "address": { "addressLines": [ "222 W. Merchandise Mart Plaza", "Suite 1744" ], "postalCode": "60654", "city": "Chicago", "state": "IL", "country": "US" } } }, { "id": "b996b45d-94cb-42ac-aa6f-cd8c7cfe7a5b", "type": "DELIVERY", "arrivalDate": "2092-12-12", "contacts": [], "accessorials": [], "location": { "identifiers": [], "address": { "addressLines": [ "3800 N Lamar Blvd", "Suite 210" ], "postalCode": "78756", "city": "Austin", "state": "TX", "country": "US" } } } ], "routeSegments": [ { "fromStopId": "e379cef8-5af6-47e3-9c8f-052faa2c5061", "toStopId": "e379cef8-5af6-47e3-9c8f-052faa2c5061" } ] }, "attributes": [ { "name": "attribute name", "values": [ "string value 1", "string value 2" ] } ], "bookings": [] }'
Success
An optional user-defined set of custom attributes to associate with this shipment. These are descriptors and identifiers which apply to the entire shipment and they are not shared with any carriers.
The descriptive name or otherwise human-readable description of the shipment created; this is not visible to the carrier.
An optional, shipper-provided free-text space for notes on the shipment.
{ "identifiers": [ { … } ], "routeInfo": { "stops": [ … ], "routeSegments": [ … ] }, "attributes": [ { … } ], "name": "shipmentName", "notes": "shipmentNotes", "bookings": [ { … } ], "id": "d1b4c593-7b6a-49d2-8c8e-12c914c20016", "createdDateTime": "2024-03-25T10:39:05", "lastModifiedDateTime": "2024-03-25T10:39:05" }
curl -i -X POST \ 'https://developers.project44.com/_mock/api-reference/api-docs/services/booking/v1/shipments/{shipmentId}/bookings/cancellations' \ -H 'Authorization: Bearer <YOUR_TOKEN_HERE>'
Successful Response
An optional user-defined set of custom attributes to associate with this shipment. These are descriptors and identifiers which apply to the entire shipment and they are not shared with any carriers.
The descriptive name or otherwise human-readable description of the shipment created; this is not visible to the carrier.
An optional, shipper-provided free-text space for notes on the shipment.
{ "attributes": [ { … } ], "bookings": [ { … } ], "createdDateTime": "2019-08-24T14:15:22Z", "identifiers": [ { … } ], "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "lastModifiedDateTime": "2019-08-24T14:15:22Z", "name": "string", "notes": "string", "routeInfo": { "routeSegments": [ … ], "stops": [ … ] } }
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.
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 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.