Respond to a Booking Request
As a Carrier, respond to a tender/booking request, or update an existing response or identifiers.
Accept a Tender/Booking Request
ACCEPT a tender/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.
PUT
a Rejection to a booking after you have already accepted it. Requirements
At a minimum, have the following information
- Shipment ID
- If the Shipper has provided any of the following identifiers, include them in your response: BILL_OF_LADING, CUSTOMER_REFERENCE, PURCHASE_ORDER, SALES_ORDER
- If the Shipper has not provided any shipment identifiers, respond with the BILL_OF_LADING
Workflow
Complete these steps:
- Prepare a
PUT
request to /services/booking/v1/bookings/{bookingId}/responses. Please, connect with your project44 Technical Contact for the Booking API Reference Documentation. - Add the required informtion to the request schema. For example,
{ "shipmentIdentifiers": [ { "type": "LICENSE_PLATE", "value": "1234567" }, { "type": "BILL_OF_LADING", "value": "987654321" } ], "routeSegments": [ { "routeSegmentId": "bffd54a8-a30f-44da-80ba-5c2bd632cfe0", "fromDate": "2092-12-10", "toDate": "2092-12-12" } ], "details": {} }
- Send the request.
Expected System Responses
The request is successfully submitted and confirmed when a 200
response is received.
{ "shipmentId": "47efd5a2-af91-4417-950a-7f546cd1b5cf", "attributes": [ { "name": "string", "values": [ "string" ] } ], "capacityProviderIdentifier": { "type": "SCAC", "value": "string" }, "carrierContacts": [ { "companyName": "string", "givenName": "string", "familyName": "string", "phoneNumber": "string", "mobilePhoneNumber": "string", "email": "user@example.com" } ], "totalRate": { "currency": "USD", "amount": 0 }, "rateIdentifiers": [ { "source": "SYSTEM", "type": "SPOT_QUOTE", "value": "string" } ], "expirationDateTime": "2019-08-24T14:15:22Z", "routeSegmentIds": [ "497f6eca-6276-4993-bfeb-53cbbbba6f08" ], "notes": "string", "shipmentDetails": [ { "pickupStopId": "eff50f2a-8964-41f9-b45d-0a4f6f94e159", "deliveryStopId": "2ca57692-0523-4424-a638-167e5e26f7d3", "handlingUnits": { "details": [ { "monetaryValue": { "currency": "USD", "amount": 0 }, "quantity": 0, "handlingUnitType": "BAG", "stackable": false, "dimensions": { "length": 0, "width": 0, "height": 0, "unit": "FT" }, "weight": { "value": 0, "unit": "LB" } } ] }, "items": [ { "description": "string", "identifiers": [ { "type": "CONTAINER_NUMBER", "value": "string" } ], "unitQuantity": 0, "unitType": "BAG" } ], "description": "string", "identifiers": [ { "type": "AIR_WAYBILL", "value": "string" } ], "accessorials": [ { "code": "REFRIGERATED", "details": { "min": 0, "max": 0, "unit": "CELSIUS" } } ], "loadId": "9fa4c9ea-0db7-4bb2-8f50-086d18a90403" } ], "apiConfiguration": { "bookingWebhookName": "string" }, "shipperContactInfo": { "companyName": "string", "givenName": "string", "familyName": "string", "phoneNumber": "string", "mobilePhoneNumber": "string", "email": "user@example.com" }, "shippingDetails": { "loadPreference": "FULL", "trailerType": "FLATBED", "trailerLength": { "value": 0, "unit": "FT" }, "trailerVolume": { "value": 0, "unit": "CUBIC_FT" }, "flatbedType": "CONESTOGA", "accessorials": [ { "code": "REFRIGERATED", "details": { "min": 0, "max": 0, "unit": "CELSIUS" } } ] }, "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "status": "BOOKED", "shipmentIdentifiers": [ { "type": "AIR_WAYBILL", "value": "string" } ], "routeSegments": [ { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "fromStop": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "type": "PICKUP", "arrivalDate": "2019-08-24", "arrivalAppointmentWindow": { "startTime": "14:15:22Z", "endTime": "14:15:22Z" }, "contacts": [ { "companyName": "string", "givenName": "string", "familyName": "string", "phoneNumber": "string", "mobilePhoneNumber": "string", "email": "user@example.com" } ], "accessorials": [ { "code": "REFRIGERATED", "details": { "min": 0, "max": 0, "unit": "CELSIUS" } } ], "location": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "name": "string", "identifiers": [ { "type": "AIRPORT_IATA", "value": "string" } ], "address": { "addressLines": [ "string" ], "postalCode": "string", "city": "string", "state": "string", "country": "US" }, "geoCoordinates": { "latitude": -90, "longitude": -180 } } }, "toStop": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "type": "PICKUP", "arrivalDate": "2019-08-24", "arrivalAppointmentWindow": { "startTime": "14:15:22Z", "endTime": "14:15:22Z" }, "contacts": [ { "companyName": "string", "givenName": "string", "familyName": "string", "phoneNumber": "string", "mobilePhoneNumber": "string", "email": "user@example.com" } ], "accessorials": [ { "code": "REFRIGERATED", "details": { "min": 0, "max": 0, "unit": "CELSIUS" } } ], "location": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "name": "string", "identifiers": [ { "type": "AIRPORT_IATA", "value": "string" } ], "address": { "addressLines": [ "string" ], "postalCode": "string", "city": "string", "state": "string", "country": "US" }, "geoCoordinates": { "latitude": -90, "longitude": -180 } } } } ], "rejectionReason": "COST_NOT_AGREED", "carrierResponseMethod": "EMAIL", "automatedFailureReason": "ERROR_CREDENTIALS", "bookingSourceMethod": "API", "carrierRejectionNotes": "string", "transportationMode": "OCEAN", "masterShipmentId": "2e04ec4a-749a-4ef4-a452-b7dc8cca16aa", "carrierProvidedIdentifiers": [ { "type": "AIR_WAYBILL", "value": "string" } ] }
Errors
If there was a problem with your request, you will receive one of the following error codes:
400 Bad Request
401 Unauthorized
404 Not Found
See Error Response Codes in the Appendix for more information on the meaning of these error codes.
Fields and Objects
The table below describes only the minimum relevant fields of the API Request to accept a tender/booking and the 200 Successful Response
. For more information on all fields, please, connect with your project44 Technical Contact for the Booking API Reference Documentation.
Field | Description |
---|---|
bookingId | The project44-generated tender/booking idenetifier. |
shipment.identifiers | The identifier used to distinguish the shipment. Include the type and value . At least one body with the name BOOKING_NUMBER is required. |
status | Returned in the 200 Successful Response . The value will be BOOKED for accepted bookings. |
routeSegments.routeSegmenId | The ID of the route-segment. |
routeSegments.fromDate | The date you, the Carrier, commit to depart from the route-segment origin. |
routeSegments.toDate | The date you, the Carrier, commit to arrive at the route-segment destination. |
Reject a Tender/Booking Request
REJECT a tender/booking by selecting a reason for rejection in the form of a BookingRejection
.
PUT
a Rejection to a booking after you have already accepted it. Requirements
At a minimum, have the following information
- Booking ID
- Reason for rejection
Workflow
Complete these steps:
- Prepare a
PUT
request to /services/booking/v1/bookings/{bookingId}/responses. Please, connect with your project44 Technical Contact for the Booking API Reference Documentation. - Add the reason for the rejection. For example,
{ "reason": "SHORT_ON_STAFF", "notes": "We are not able to find a driver!" }
- Send the request.
Expected System Responses
The request is successfully submitted and confirmed when a 200
response is received.
{ "shipmentId": "47efd5a2-af91-4417-950a-7f546cd1b5cf", "attributes": [ { "name": "string", "values": [ "string" ] } ], "capacityProviderIdentifier": { "type": "SCAC", "value": "string" }, "carrierContacts": [ { "companyName": "string", "givenName": "string", "familyName": "string", "phoneNumber": "string", "mobilePhoneNumber": "string", "email": "user@example.com" } ], "totalRate": { "currency": "USD", "amount": 0 }, "rateIdentifiers": [ { "source": "SYSTEM", "type": "SPOT_QUOTE", "value": "string" } ], "expirationDateTime": "2019-08-24T14:15:22Z", "routeSegmentIds": [ "497f6eca-6276-4993-bfeb-53cbbbba6f08" ], "notes": "string", "shipmentDetails": [ { "pickupStopId": "eff50f2a-8964-41f9-b45d-0a4f6f94e159", "deliveryStopId": "2ca57692-0523-4424-a638-167e5e26f7d3", "handlingUnits": { "details": [ { "monetaryValue": { "currency": "USD", "amount": 0 }, "quantity": 0, "handlingUnitType": "BAG", "stackable": false, "dimensions": { "length": 0, "width": 0, "height": 0, "unit": "FT" }, "weight": { "value": 0, "unit": "LB" } } ] }, "items": [ { "description": "string", "identifiers": [ { "type": "CONTAINER_NUMBER", "value": "string" } ], "unitQuantity": 0, "unitType": "BAG" } ], "description": "string", "identifiers": [ { "type": "AIR_WAYBILL", "value": "string" } ], "accessorials": [ { "code": "REFRIGERATED", "details": { "min": 0, "max": 0, "unit": "CELSIUS" } } ], "loadId": "9fa4c9ea-0db7-4bb2-8f50-086d18a90403" } ], "apiConfiguration": { "bookingWebhookName": "string" }, "shipperContactInfo": { "companyName": "string", "givenName": "string", "familyName": "string", "phoneNumber": "string", "mobilePhoneNumber": "string", "email": "user@example.com" }, "shippingDetails": { "loadPreference": "FULL", "trailerType": "FLATBED", "trailerLength": { "value": 0, "unit": "FT" }, "trailerVolume": { "value": 0, "unit": "CUBIC_FT" }, "flatbedType": "CONESTOGA", "accessorials": [ { "code": "REFRIGERATED", "details": { "min": 0, "max": 0, "unit": "CELSIUS" } } ] }, "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "status": "REJECTED", "shipmentIdentifiers": [ { "type": "AIR_WAYBILL", "value": "string" } ], "routeSegments": [ { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "fromStop": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "type": "PICKUP", "arrivalDate": "2019-08-24", "arrivalAppointmentWindow": { "startTime": "14:15:22Z", "endTime": "14:15:22Z" }, "contacts": [ { "companyName": "string", "givenName": "string", "familyName": "string", "phoneNumber": "string", "mobilePhoneNumber": "string", "email": "user@example.com" } ], "accessorials": [ { "code": "REFRIGERATED", "details": { "min": 0, "max": 0, "unit": "CELSIUS" } } ], "location": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "name": "string", "identifiers": [ { "type": "AIRPORT_IATA", "value": "string" } ], "address": { "addressLines": [ "string" ], "postalCode": "string", "city": "string", "state": "string", "country": "US" }, "geoCoordinates": { "latitude": -90, "longitude": -180 } } }, "toStop": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "type": "PICKUP", "arrivalDate": "2019-08-24", "arrivalAppointmentWindow": { "startTime": "14:15:22Z", "endTime": "14:15:22Z" }, "contacts": [ { "companyName": "string", "givenName": "string", "familyName": "string", "phoneNumber": "string", "mobilePhoneNumber": "string", "email": "user@example.com" } ], "accessorials": [ { "code": "REFRIGERATED", "details": { "min": 0, "max": 0, "unit": "CELSIUS" } } ], "location": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "name": "string", "identifiers": [ { "type": "AIRPORT_IATA", "value": "string" } ], "address": { "addressLines": [ "string" ], "postalCode": "string", "city": "string", "state": "string", "country": "US" }, "geoCoordinates": { "latitude": -90, "longitude": -180 } } } } ], "rejectionReason": "COST_NOT_AGREED", "carrierResponseMethod": "EMAIL", "automatedFailureReason": "ERROR_CREDENTIALS", "bookingSourceMethod": "API", "carrierRejectionNotes": "string", "transportationMode": "OCEAN", "masterShipmentId": "2e04ec4a-749a-4ef4-a452-b7dc8cca16aa", "carrierProvidedIdentifiers": [ { "type": "AIR_WAYBILL", "value": "string" } ] }
Errors
If there was a problem with your request, you will receive one of the following error codes:
400 Bad Request
401 Unauthorized
404 Not Found
See Error Response Codes in the Appendix for more information on the meaning of these error codes.
Fields and Objects
The table below describes only the minimum relevant fields of the API Request to reject a tender/booking and the 200 Successful Response
. For more information on all fields, please, connect with your project44 Technical Contact for the Booking API Reference Documentation.
Field | Description |
---|---|
bookingId | The project44-generated tender/booking idenetifier. |
reason | The codified reason why a carrier would reject a booking from a carrier. Valid values include COST_NOT_AGREED , SHORT_ON_STAFF , NOT_WITHIN_SCOPE , TRANSIT_TIME_TOO_SHORT , and REQUESTED_EQUIPMENT_NOT_AVAILABLE . |
status | Returned in the 200 Successful Response . The value will be REJECTED for rejected bookings. |
Update Shipment Identifiers
Update shipment identifiers after you have accepted a tender/booking request.
Requirements
At a minimum, have the following information
- Booking ID
- The updated shipment identifier
- Accepted Route Segment Dates and IDs of those route segments
Workflow
Complete these steps:
- Prepare a
PUT
request to /services/booking/v1/bookings/{bookingId}/responses. Please, connect with your project44 Technical Contact for the Booking API Reference Documentation. - Update the shipment identifier information in the request schema. For example, add the
CUSTOMER_REFERENCE
identifier information for the shipment:
{ "shipmentIdentifiers": [ { "type": "BOOKING_NUMBER", "value": "123456789" }, { "type": "BILL_OF_LADING", "value": "987654321" }, { "type": "LICENSE_PLATE", "value": "1234567" } ], "routeSegments": [ { "routeSegmentId": "bffd54a8-a30f-44da-80ba-5c2bd632cfe0", "fromDate": "2092-12-10", "toDate": "2092-12-12" } ], "estimatedFinalDestinationDatetime": "2092-12-10T00:00:00+00:00", "cutOffDetails": { "cutOffDatetime": "2092-12-01T08:30:00+00:00", "documentationCutOffDatetime": "2092-12-01T08:30:00+00:00" } } }
Expected System Responses
The request is successfully submitted and confirmed when a 200
response is received.
{ "shipmentId": "47efd5a2-af91-4417-950a-7f546cd1b5cf", "attributes": [ { "name": "string", "values": [ "string" ] } ], "capacityProviderIdentifier": { "type": "SCAC", "value": "string" }, "carrierContacts": [ { "companyName": "string", "givenName": "string", "familyName": "string", "phoneNumber": "string", "mobilePhoneNumber": "string", "email": "user@example.com" } ], "totalRate": { "currency": "USD", "amount": 0 }, "rateIdentifiers": [ { "source": "SYSTEM", "type": "SPOT_QUOTE", "value": "string" } ], "expirationDateTime": "2019-08-24T14:15:22Z", "routeSegmentIds": [ "497f6eca-6276-4993-bfeb-53cbbbba6f08" ], "notes": "string", "shipmentDetails": [ { "pickupStopId": "eff50f2a-8964-41f9-b45d-0a4f6f94e159", "deliveryStopId": "2ca57692-0523-4424-a638-167e5e26f7d3", "handlingUnits": { "details": [ { "monetaryValue": { "currency": "USD", "amount": 0 }, "quantity": 0, "handlingUnitType": "BAG", "stackable": false, "dimensions": { "length": 0, "width": 0, "height": 0, "unit": "FT" }, "weight": { "value": 0, "unit": "LB" } } ] }, "items": [ { "description": "string", "identifiers": [ { "type": "CONTAINER_NUMBER", "value": "string" } ], "unitQuantity": 0, "unitType": "BAG" } ], "description": "string", "identifiers": [ { "type": "AIR_WAYBILL", "value": "string" } ], "accessorials": [ { "code": "REFRIGERATED", "details": { "min": 0, "max": 0, "unit": "CELSIUS" } } ], "loadId": "9fa4c9ea-0db7-4bb2-8f50-086d18a90403" } ], "apiConfiguration": { "bookingWebhookName": "string" }, "shipperContactInfo": { "companyName": "string", "givenName": "string", "familyName": "string", "phoneNumber": "string", "mobilePhoneNumber": "string", "email": "user@example.com" }, "shippingDetails": { "loadPreference": "FULL", "trailerType": "FLATBED", "trailerLength": { "value": 0, "unit": "FT" }, "trailerVolume": { "value": 0, "unit": "CUBIC_FT" }, "flatbedType": "CONESTOGA", "accessorials": [ { "code": "REFRIGERATED", "details": { "min": 0, "max": 0, "unit": "CELSIUS" } } ] }, "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "status": "BOOKED", "shipmentIdentifiers": [ { "type": "AIR_WAYBILL", "value": "string" } ], "routeSegments": [ { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "fromStop": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "type": "PICKUP", "arrivalDate": "2019-08-24", "arrivalAppointmentWindow": { "startTime": "14:15:22Z", "endTime": "14:15:22Z" }, "contacts": [ { "companyName": "string", "givenName": "string", "familyName": "string", "phoneNumber": "string", "mobilePhoneNumber": "string", "email": "user@example.com" } ], "accessorials": [ { "code": "REFRIGERATED", "details": { "min": 0, "max": 0, "unit": "CELSIUS" } } ], "location": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "name": "string", "identifiers": [ { "type": "AIRPORT_IATA", "value": "string" } ], "address": { "addressLines": [ "string" ], "postalCode": "string", "city": "string", "state": "string", "country": "US" }, "geoCoordinates": { "latitude": -90, "longitude": -180 } } }, "toStop": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "type": "PICKUP", "arrivalDate": "2019-08-24", "arrivalAppointmentWindow": { "startTime": "14:15:22Z", "endTime": "14:15:22Z" }, "contacts": [ { "companyName": "string", "givenName": "string", "familyName": "string", "phoneNumber": "string", "mobilePhoneNumber": "string", "email": "user@example.com" } ], "accessorials": [ { "code": "REFRIGERATED", "details": { "min": 0, "max": 0, "unit": "CELSIUS" } } ], "location": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "name": "string", "identifiers": [ { "type": "AIRPORT_IATA", "value": "string" } ], "address": { "addressLines": [ "string" ], "postalCode": "string", "city": "string", "state": "string", "country": "US" }, "geoCoordinates": { "latitude": -90, "longitude": -180 } } } } ], "carrierResponseMethod": "EMAIL", "bookingSourceMethod": "API", "carrierRejectionNotes": "string", "transportationMode": "TRUCKLOAD", "masterShipmentId": "2e04ec4a-749a-4ef4-a452-b7dc8cca16aa", "carrierProvidedIdentifiers": [ { "type": "AIR_WAYBILL", "value": "string" } ] }
Errors
If there was a problem with your request, you will receive one of the following error codes:
400 Bad Request
401 Unauthorized
404 Not Found
See Error Response Codes in the Appendix for more information on the meaning of these error codes.
Fields and Objects
The table below describes only the minimum relevant fields of the API Request to update identifiers for a shipment after accepting the tender/booking request and the 200 Successful Response
. For more information on all fields, please, connect with your project44 Technical Contact for the Booking API Reference Documentation.
Field | Description |
---|---|
bookingId | The project44-generated booking idenetifier. |
shipment.identifiers | The identifier used to distinguish the shipment. Include the type and value . At least one body with the name BOOKING_NUMBER is required. |
status | Returned in the 200 Successful Response . The value will be BOOKED because you can only update shipment identifiers after you have accepted the booking request. |
routeSegments.routeSegmenId | The ID of the route-segment. |
routeSegments.fromDate | The date you, the Carrier, commit to depart from the route-segment origin. |
routeSegments.toDate | The date you, the Carrier, commit to arrive at the route-segment destination. |