Respond to a Booking Request
As a Carrier, respond to a booking request, or update an existing response.
Accept a Booking Request
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.
PUT
a Rejection to a booking after you have already accepted it. Requirements
At a minimum, have the following information
- Booking ID (Plus any additional Shipment Idenitifer information you have.)
- Accepted Route Segment Dates and IDs of those route segments
- (OPTIONAL) Port Details, including Port Type, Location, and Estimate Date/Time of departure or arrival.
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": "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": "bffd54a8-a30f-44da-80ba-5c2bd632cfe0", "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" } } }
- 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 } } } } ], "carrierResponseMethod": "EMAIL", "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 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 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. |
details.portDetails.portType | The type of port. Valid values are PORT_OF_LOADING , PORT_OF_DISCHARGE ,and TRANSSHIPMENT_PORT . |
details.portDetails.location | Include the location identifiers and either the geocoordinates or address lines of the port location. |
details.portDetails.estimatedDateTime | The date and time connected to the port. For example, when the port type is PORT_OF_LOADING , this refers to the estimated departure date and time from origin port. When the port type is PORT_OF_DISCHARGE , this refers to the estimated arrival date and time at destination port. |
Reject a Booking Request
REJECT a 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 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 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 booking.
Requirements
At a minimum, have the following information
- Booking ID
- The updated shipment identifier
- Accepted Route Segment Dates and IDs of those route segments
- Port Details, including Port Type, Location, and Estimate Date/Time of departure or arrival.
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:
{ "identifiers": [ { "type": "BOOKING_NUMBER", "value": "string" }, { "type": "CUSTOMER_REFERENCE", "value": "SHIPMENT-12345" } ], "routeInfo": { "stops": [ { "id": "5ce9d243-8f99-44c4-850f-b26e74e12d05", "type": "PICKUP", "arrivalDate": "2092-12-10", "accessorials": [], "location": { "identifiers": [], "address": { "addressLines": [ "222 W. Merchandise Mart Plaza", "Suite 1744" ], "postalCode": "60654", "city": "Chicago", "state": "IL", "country": "US" } } }, { "id": "4afd54a3-fe4d-42bf-8331-adefc9a412a7", "type": "DELIVERY", "arrivalDate": "2092-12-12", "location": { "identifiers": [], "address": { "addressLines": [ "3800 N Lamar Blvd", "Suite 210" ], "postalCode": "78756", "city": "Austin", "state": "TX", "country": "US" } } } ], "routeSegments": [ { "fromStopId": "5ce9d243-8f99-44c4-850f-b26e74e12d05", "toStopId": "4afd54a3-fe4d-42bf-8331-adefc9a412a7" } ] }, "attributes": [ { "name": "attribute name", "values": [ "string value 1", "string value 2" ] } ] }
- 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 update identifiers for a shipment after accepting the 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. |
details.portDetails.portType | The type of port. Valid values are PORT_OF_LOADING , PORT_OF_DISCHARGE ,and TRANSSHIPMENT_PORT . |
details.portDetails.location | Include the location identifiers and either the geocoordinates or address lines of the port location. |
details.portDetails.estimatedDateTime | The date and time connected to the port. For example, when the port type is PORT_OF_LOADING , this refers to the estimated departure date and time from origin port. When the port type is PORT_OF_DISCHARGE , this refers to the estimated arrival date and time at destination port. |