Unfortunately, this feature is not supported on mobile devices. For the best experience, please use a computer.

project44 REST API (4.0.0)

Version 4.0.0 of project44's API

Download OpenAPI description
Languages
Servers
Mock server
https://developers.project44.com/_mock/api-reference/api-docs/
API endpoint for project44 tenants created in NA region
https://na12.api.project44.com/
API endpoint for project44 tenants created in EU region
https://eu12.api.project44.com/
API endpoint for project44 tenants created in the Sandbox environment
https://na12.api.sandbox.p-44.com/

OAuth 2.0: Client Applications

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.

Operations

OAuth 2.0: Token Generation

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).

Operations

LTL: Quotes

Quote LTL rates and retrieve transit times.

Operations

VLTL: Quotes

API used for quoting volume LTL rates.

Operations

VLTL: Dispatch

API used for scheduling volume LTL shipments.

Operations

LTL: Dispatch

API used for scheduling LTL shipments.

Operations

LTL: Tracking

API used for the retrieval of shipment status.

Operations

LTL: Image Retrieval

Access shipment images.

Operations

TL: Tracking

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.

Operations

TL: Available Vehicles

API used for fetching vehicles within a specific radius and time window. Can only be used if opted into a project44 Co-Op.

Operations

TL: Connected Capacity

API for finding new connected carrier partners in the project44 network based on tracking performance

Operations

Rail: Tracking

API used for accessing rail shipment tracking.

Operations

Capacity Provider Account Group Management

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.

Operations

Capacity Provider Account Management

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.

Operations

Capacity Provider Contact Management

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.

Operations

Order Visibility

API used for orders and inventory items

Operations

Shipment: Tracking

API used for Shipment Tracking.

Operations

Shipment: Loads

API used for tracking Loads.

Operations

Multi-Modal: Image Retrieval

Access shipment images.

Operations

Shipment Attributes

Create and fetch predefined custom attributes for shipments. You must be a organization admin to perform this operation.

Operations

Capacity Provider Metadata

Retrieve capacity provider information needed to set up capacity provider accounts.

Operations

LTL: Push Tracking

As a capacity provider, push project44 shipments and status updates.

Operations

LTL: Push Imaging

As a capacity provider, push project44 images related to shipments.

Operations

TL: Capacity Provider Push

As a capacity provider, push project44 shipment-related info and quotes.

Operations

Asset Tracking

Track the location of an enrolled asset.

Operations

Webhook

Register client webhooks.

Operations

Parcel: Tracking

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.

Operations

Parcel: Webhook

Receive updates for a tracked parcel by defining a parcel-tracking-webhook.

Operations

Carrier: Document

API for managing carrier documents.

Analytics: Port Intelligence

API for Port Intelligence.

Operations

Filter Suggestions

Operations

Multi-modal: Booking

API used for multi-modal Booking.

LTL: Electronic BOL

API used for creating Electronic BOL

Operations

Webhook Data

Operations to describe the payload expected from project44 when integrated with a webhook.

Operations

Postal Address Validation

Operations

Parcel: Push Tracking

Operations

location-controller

Operations

Ocean: Tracking

Operations

Stop Location Management

Operations

TL: Webhook

Operations

Push Updates

Operations

Multi-Modal: Booking

Operations

Get Shipments

Request

As a shipper, fetch a shipment created for booking.

Query
identifier.typestring

The type of the custom shipment identifier to search against.

Enum"AIR_WAYBILL""BILL_OF_LADING""HOUSE_BILL_OF_LADING""BOOKING_NUMBER""CARRIER_IATA""CARRIER_ICAO""CARRIER_NAME""CARRIER_SCAC""FFW_SCAC""CONTAINER_ID""CUSTOMER_REFERENCE""DELIVERY_NUMBER""EXTERNAL""FLIGHT_NUMBER""ORDER"
identifier.valuestring

The value of the custom shipment identifier to search for; this filter is non-partial.

attribute.namestring

The name of the custom shipment attribute to search against.

attribute.valuesArray of strings

The values of the custom shipment attribute to search for; this filter is non-partial.

pageNumberinteger
Default 1
pageSizeinteger<= 100
Default 10
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>'

Responses

Successful Response

Bodyapplication/json
paginationInfoobjectrequired

Pagination information about a collection of resources.

paginationInfo.​totalinteger(int64)

Total number of resource items matching the supplied criteria.

paginationInfo.​pageSizeinteger(int32)

Page size matching the PaginationParameters.

paginationInfo.​pageNumberinteger(int32)

Matching page number given the supplied PaginationParameters.

resultsArray of objects(BookedShipment)

List of resources contained on this page.

Response
application/json
{ "paginationInfo": { "total": 0, "pageSize": 0, "pageNumber": 0 }, "results": [ {} ] }

Get Shipment

Request

As a shipper, fetch a shipment created for booking.

Path
shipmentIdstring(uuid)required

The project44-generated shipment identifier

curl -i -X GET \
  'https://developers.project44.com/_mock/api-reference/api-docs/services/booking/v1/shipments/{shipmentId}' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>'

Responses

Successful Response

Bodyapplication/json
identifiersArray of objects(LogisticsIdentifier)<= 20 items
routeInfoobject(RouteInfo)required

The stops and route for the shipment.

routeInfo.​stopsArray of objects(Stop)>= 2 itemsrequired

All stops associated with this shipment.

routeInfo.​stops[].​idstring(uuid)required

The id of this stop. Will always be populated on response.

routeInfo.​stops[].​typestringrequired

An enumeration.

Enum"PICKUP""DELIVERY""PICKUP_DELIVERY""PORT_OF_LOADING""PORT_OF_DISCHARGE""TRANSSHIPMENT_PORT"
routeInfo.​stops[].​arrivalDatestring(date)

The date at which the carrier is scheduled to arrive at the stop.

routeInfo.​stops[].​arrivalAppointmentWindowobject

A time range.

routeInfo.​stops[].​contactsArray of objects(multi_modal_booking_service_public__contact__Contact)

Shipper-supplied individuals who may be contacted for correspondence related to shipment handling at the stop.

routeInfo.​stops[].​accessorialsArray of RefrigeratedAccessorial (object) or LiftgateAccessorial (object) or TarpsAccessorial (object) or StrapsAccessorial (object) or ChainsAccessorial (object) or DeckHeightAccessorial (object) or CraneAccessorial (object) or CallBeforeArrivalAccessorial (object) or DockRequiredAccessorial (object) or LockedGateAccessorial (object) or FirstComeFirstServedAccessorial (object) or AppointmentRequiredAccessorial (object) or WhiteGloveAccessorial (object) or HazmatAccessorial (object)

Optional list of descriptors which detail any add-ons or declarations applicable which may be noteworthy to the carrier.

routeInfo.​stops[].​locationobjectrequired

The location of the stop.

routeInfo.​stops[].​location.​idstring(uuid)

The id of the location.

routeInfo.​stops[].​location.​namestring

The name of the location.

routeInfo.​stops[].​location.​identifiersArray of objects(LocationIdentifier)

A list of global identifiers for the location.

routeInfo.​stops[].​location.​addressobject

A postal address.

routeInfo.​stops[].​location.​geoCoordinatesobject

A coordinate pair.

routeInfo.​routeSegmentsArray of objects(RouteSegment)non-emptyrequired

Contains information about how the shipment moves from each stop to the next.

routeInfo.​routeSegments[].​idstring(uuid)

The id of this route segment. Will always be populated on response if not provided.

routeInfo.​routeSegments[].​fromStopIdstring(uuid)required

The starting stop of this route segment.

routeInfo.​routeSegments[].​toStopIdstring(uuid)required

The ending stop of this route segment.

attributesArray of objects(CustomAttribute)<= 5 items

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.

namestring

The descriptive name or otherwise human-readable description of the shipment created; this is not visible to the carrier.

notesstring<= 300 characters

An optional, shipper-provided free-text space for notes on the shipment.

bookingsArray of objects(Booking)

A list of all bookings related to the shipment.

idstring(uuid)required

The project44-generated shipment identifier

createdDateTimestring(date-time)required

The datetime when the shipment was created.

lastModifiedDateTimestring(date-time)required

The datetime when the shipment was last updated.

Response
application/json
{ "identifiers": [ {} ], "routeInfo": { "stops": [], "routeSegments": [] }, "attributes": [ {} ], "name": "string", "notes": "string", "bookings": [ {} ], "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "createdDateTime": "2019-08-24T14:15:22Z", "lastModifiedDateTime": "2019-08-24T14:15:22Z" }

Cancel All Bookings For Shipment

Request

As a shipper, change the status of all related and eligible bookings to CANCELLED.

Path
shipmentIdstring(uuid)required

The project44-generated shipment identifier

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>'

Responses

Successful Response

Bodyapplication/json
identifiersArray of objects(LogisticsIdentifier)<= 20 items
routeInfoobject(RouteInfo)required

The stops and route for the shipment.

routeInfo.​stopsArray of objects(Stop)>= 2 itemsrequired

All stops associated with this shipment.

routeInfo.​stops[].​idstring(uuid)required

The id of this stop. Will always be populated on response.

routeInfo.​stops[].​typestringrequired

An enumeration.

Enum"PICKUP""DELIVERY""PICKUP_DELIVERY""PORT_OF_LOADING""PORT_OF_DISCHARGE""TRANSSHIPMENT_PORT"
routeInfo.​stops[].​arrivalDatestring(date)

The date at which the carrier is scheduled to arrive at the stop.

routeInfo.​stops[].​arrivalAppointmentWindowobject

A time range.

routeInfo.​stops[].​contactsArray of objects(multi_modal_booking_service_public__contact__Contact)

Shipper-supplied individuals who may be contacted for correspondence related to shipment handling at the stop.

routeInfo.​stops[].​accessorialsArray of RefrigeratedAccessorial (object) or LiftgateAccessorial (object) or TarpsAccessorial (object) or StrapsAccessorial (object) or ChainsAccessorial (object) or DeckHeightAccessorial (object) or CraneAccessorial (object) or CallBeforeArrivalAccessorial (object) or DockRequiredAccessorial (object) or LockedGateAccessorial (object) or FirstComeFirstServedAccessorial (object) or AppointmentRequiredAccessorial (object) or WhiteGloveAccessorial (object) or HazmatAccessorial (object)

Optional list of descriptors which detail any add-ons or declarations applicable which may be noteworthy to the carrier.

routeInfo.​stops[].​locationobjectrequired

The location of the stop.

routeInfo.​stops[].​location.​idstring(uuid)

The id of the location.

routeInfo.​stops[].​location.​namestring

The name of the location.

routeInfo.​stops[].​location.​identifiersArray of objects(LocationIdentifier)

A list of global identifiers for the location.

routeInfo.​stops[].​location.​addressobject

A postal address.

routeInfo.​stops[].​location.​geoCoordinatesobject

A coordinate pair.

routeInfo.​routeSegmentsArray of objects(RouteSegment)non-emptyrequired

Contains information about how the shipment moves from each stop to the next.

routeInfo.​routeSegments[].​idstring(uuid)

The id of this route segment. Will always be populated on response if not provided.

routeInfo.​routeSegments[].​fromStopIdstring(uuid)required

The starting stop of this route segment.

routeInfo.​routeSegments[].​toStopIdstring(uuid)required

The ending stop of this route segment.

attributesArray of objects(CustomAttribute)<= 5 items

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.

namestring

The descriptive name or otherwise human-readable description of the shipment created; this is not visible to the carrier.

notesstring<= 300 characters

An optional, shipper-provided free-text space for notes on the shipment.

bookingsArray of objects(Booking)

A list of all bookings related to the shipment.

idstring(uuid)required

The project44-generated shipment identifier

createdDateTimestring(date-time)required

The datetime when the shipment was created.

lastModifiedDateTimestring(date-time)required

The datetime when the shipment was last updated.

Response
application/json
{ "identifiers": [ {} ], "routeInfo": { "stops": [], "routeSegments": [] }, "attributes": [ {} ], "name": "string", "notes": "string", "bookings": [ {} ], "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "createdDateTime": "2019-08-24T14:15:22Z", "lastModifiedDateTime": "2019-08-24T14:15:22Z" }

Get Bookings

Request

As either a carrier or a shipper, fetch a paginated batch selection of filtered bookings.

Query
attribute.namestring

The name of the custom booking attribute to search against.

attribute.valuesArray of strings

The values of the custom booking attribute to search for; this filter is non-partial.

statusesArray of strings(BookingStatus)

List of booking statuses to filter against.

Items Enum"PROCESSING""UNDER_REVIEW""BOOKED""REJECTED""CANCELLED""EXPIRED"
pageNumberinteger
Default 1
pageSizeinteger<= 100
Default 10
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>'

Responses

Successful Response

Bodyapplication/json
paginationInfoobjectrequired

Pagination information about a collection of resources.

paginationInfo.​totalinteger(int64)

Total number of resource items matching the supplied criteria.

paginationInfo.​pageSizeinteger(int32)

Page size matching the PaginationParameters.

paginationInfo.​pageNumberinteger(int32)

Matching page number given the supplied PaginationParameters.

resultsArray of objects(Booking)

List of resources contained on this page.

Response
application/json
{ "paginationInfo": { "total": 0, "pageSize": 0, "pageNumber": 0 }, "results": [ {} ] }

Create Booking

Request

As a shipper, create a booking request for an existing shipment to send to a Carrier.

Bodyapplication/json
shipmentIdstring(uuid)

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.

attributesArray of objects(CustomAttribute)

A shipper-provided list of custom key-value list pairs relevant to the booking which are shared with the carrier.

capacityProviderIdentifierobjectrequired

A capacity provider identifier object.

capacityProviderIdentifier.​typestring(enum)(CapacityProviderIdentifierType)required

Carrier Identifiers that are used to find companies within project44.

Enum"SCAC""DOT_NUMBER""MC_NUMBER""P44_EU""SYSTEM""P44_GLOBAL""VAT"
capacityProviderIdentifier.​valuestringrequired

Capacity provider identifier value.

carrierContactsArray of objects(multi_modal_booking_service_public__contact__Contact)

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.

totalRateobject

A monetary value expressing amount and currency type.

rateIdentifiersArray of objects(RateIdentifier)non-emptyrequired

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.

rateIdentifiers[].​sourcestring(RateIdentifierSource)required

The type of reference to the original source of the rate which applies to a booking. A SYSTEM identifier is internal to p44; an EXTERNAL identifier is known by a non-p44 system.

Enum"SYSTEM""EXTERNAL""UNKNOWN"
rateIdentifiers[].​typestring(RateIdentifierType)required

The type of rate identifier

Enum"SPOT_QUOTE""CONTRACT"
rateIdentifiers[].​valuestring

The ID of the rate source.

expirationDateTimestring(date-time)required

The datetime of expiration for this request from the shipper to the carrier. A timezone offset is required.

routeSegmentIdsArray of strings(uuid)non-emptyrequired

List of route-segment ids which apply to the booking.

notesstring<= 300 characters

An optional, shipper-provided free-text space for notes on the shipment.

shipmentDetailsArray of objects(ShipmentDetails)

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.

apiConfigurationobject

Field for configuring the behavior of this API.

shipperContactInfoobjectrequired

Contact method to reach the shipper making the booking request.

shipperContactInfo.​companyNamestringrequired

Name of the Company with whom the Contact is associated.

shipperContactInfo.​givenNamestring

The Contact's first or given name.

shipperContactInfo.​familyNamestring

The Contact's last or family name.

shipperContactInfo.​phoneNumberstring

The Contact's work or other primary phone number.

shipperContactInfo.​mobilePhoneNumberstring

The Contact's mobile phone number.

shipperContactInfo.​emailstring(email)

The Contact's email address.

shippingDetailsCreateUpdateTruckloadShippingDetails (object) or CreateUpdateOceanShippingDetails (object)required

Information about how a load should be handled in transportation, specific to mode.

Any of:

Information about how a load should be handled in transportation, specific to mode.

shippingDetails.​loadPreferencestring

An enumeration.

Enum"FULL""PARTIAL"
shippingDetails.​trailerTypestringrequired

An enumeration.

Enum"FLATBED""REFRIGERATED""DRY_VAN"
shippingDetails.​trailerLengthobject

Total requested trailer length in feet or meters; must not exceed 53 Feet or 17 meters.

shippingDetails.​trailerVolumeobject

Total requested Trailer volume

shippingDetails.​flatbedTypestring

An enumeration.

Enum"CONESTOGA""DOUBLE_DROP"
shippingDetails.​accessorialsArray of RefrigeratedAccessorial (object) or LiftgateAccessorial (object) or TarpsAccessorial (object) or StrapsAccessorial (object) or ChainsAccessorial (object) or DeckHeightAccessorial (object) or CraneAccessorial (object) or CallBeforeArrivalAccessorial (object) or DockRequiredAccessorial (object) or LockedGateAccessorial (object) or FirstComeFirstServedAccessorial (object) or AppointmentRequiredAccessorial (object) or WhiteGloveAccessorial (object) or HazmatAccessorial (object)

Optional list of descriptors which detail any add-ons or declarations applicable which may be noteworthy to the carrier.

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": {
          "details": [
            {
              "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"
          }
        }
      ]
    }
  }'

Responses

Successful Response

Bodyapplication/json
shipmentIdstring(uuid)

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.

attributesArray of objects(CustomAttribute)

A shipper-provided list of custom key-value list pairs relevant to the booking which are shared with the carrier.

capacityProviderIdentifierobjectrequired

A capacity provider identifier object.

capacityProviderIdentifier.​typestring(enum)(CapacityProviderIdentifierType)required

Carrier Identifiers that are used to find companies within project44.

Enum"SCAC""DOT_NUMBER""MC_NUMBER""P44_EU""SYSTEM""P44_GLOBAL""VAT"
capacityProviderIdentifier.​valuestringrequired

Capacity provider identifier value.

carrierContactsArray of objects(multi_modal_booking_service_public__contact__Contact)

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.

totalRateobject

A monetary value expressing amount and currency type.

rateIdentifiersArray of objects(RateIdentifier)non-emptyrequired

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.

rateIdentifiers[].​sourcestring(RateIdentifierSource)required

The type of reference to the original source of the rate which applies to a booking. A SYSTEM identifier is internal to p44; an EXTERNAL identifier is known by a non-p44 system.

Enum"SYSTEM""EXTERNAL""UNKNOWN"
rateIdentifiers[].​typestring(RateIdentifierType)required

The type of rate identifier

Enum"SPOT_QUOTE""CONTRACT"
rateIdentifiers[].​valuestring

The ID of the rate source.

expirationDateTimestring(date-time)required

The datetime of expiration for this request from the shipper to the carrier. A timezone offset is required.

routeSegmentIdsArray of strings(uuid)non-emptyrequired

List of route-segment ids which apply to the booking.

notesstring<= 300 characters

An optional, shipper-provided free-text space for notes on the shipment.

shipmentDetailsArray of objects(ShipmentDetails)

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.

apiConfigurationobject

Field for configuring the behavior of this API.

shipperContactInfoobjectrequired

Contact method to reach the shipper making the booking request.

shipperContactInfo.​companyNamestringrequired

Name of the Company with whom the Contact is associated.

shipperContactInfo.​givenNamestring

The Contact's first or given name.

shipperContactInfo.​familyNamestring

The Contact's last or family name.

shipperContactInfo.​phoneNumberstring

The Contact's work or other primary phone number.

shipperContactInfo.​mobilePhoneNumberstring

The Contact's mobile phone number.

shipperContactInfo.​emailstring(email)

The Contact's email address.

shippingDetailsTruckloadShippingDetails (object) or OceanShippingDetails (object)required

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.

Any of:

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.

shippingDetails.​multipleDriversboolean

If set to 'true', indicates that the shipment is using a team of drivers and is therefore not constrained by the "11 hours of service" limit for an individual driver. This allows project44 to change its estimations around when a shipment can, and cannot be delivered.

shippingDetails.​truckDetailsobject(TruckloadShipmentTruckDetails)

Contains fields describing properties of the truck.

shippingDetails.​hazmatDetailsobject(TruckloadShipmentHazmatDetails)

Contains fields that describe what hazardous materials the shipment contains, if any.

idstring(uuid)

The project44-generated identifier for the booking.

statusstring

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.

Default "PROCESSING"
Enum"PROCESSING""UNDER_REVIEW""BOOKED""REJECTED""CANCELLED""EXPIRED"
shipmentIdentifiersArray of objects(LogisticsIdentifier)

Shipper-supplied identifiers for the shipment to be transported. Passed through from the parenting shipment and shared with the carrier.

routeSegmentsArray of objects(RouteSegmentWithStops)

A list of locations from/to which the shipment load is expected to be transported, organized as pairs.

rejectionReasonstring

The reason a carrier may opt not to accept a booking from a shipper.

Enum"COST_NOT_AGREED""SHORT_ON_STAFF""NOT_WITHIN_SCOPE""TRANSIT_TIME_TOO_SHORT""REQUESTED_EQUIPMENT_NOT_AVAILABLE""OTHER"
carrierResponseMethodstring

Method by which a carrier responds to bookings.

Default "EMAIL"
Enum"API""EDI""EMAIL"
automatedFailureReasonstring

An enumeration.

Enum"ERROR_CREDENTIALS""NO_RESPONSE_CARRIER""INTERNAL_ERROR_CARRIER""UNKNOWN_ERROR_CARRIER""INTERNAL_ERROR_VCS""UNKNOWN_ERROR_VCS""UNSUPPORTED_EQUIPMENT_TYPE""UNSUPPORTED_MODE""UNSUPPORTED_COUNTRY""UNSUPPORTED_STOP_TYPE""MISSING_DATA""INVALID_DATA"
bookingSourceMethodstring

Method by which a shipper initiates a request for a booking.

Default "API"
Enum"API""WEBAPP"
carrierRejectionNotesstring<= 300 characters

A free-text space for the carrier to provide extra information as to why they may reject the booking request.

transportationModeobject(TransportationMode)required

The mode of transportation used to move the freight.

transportationMode.​enumValuestring
Enum"AIR""OCEAN""RAIL""UNKNOWN""TRUCKLOAD""PARCEL""LTL""BARGE"
masterShipmentIdstring(uuid)

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.

carrierProvidedIdentifiersArray of objects(LogisticsIdentifier)<= 20 items

Carrier-supplied identifiers for the shipment to be transported. Fully mutable.

createdDateTimestring(date-time)required

The datetime when the booking was created.

lastModifiedDateTimestring(date-time)required

The datetime when the shipment was last updated.

Response
application/json
{ "shipmentId": "47efd5a2-af91-4417-950a-7f546cd1b5cf", "attributes": [ {} ], "capacityProviderIdentifier": { "type": "SCAC", "value": "string" }, "carrierContacts": [ {} ], "totalRate": { "currency": "USD", "amount": 0 }, "rateIdentifiers": [ {} ], "expirationDateTime": "2019-08-24T14:15:22Z", "routeSegmentIds": [ "497f6eca-6276-4993-bfeb-53cbbbba6f08" ], "notes": "string", "shipmentDetails": [ {} ], "apiConfiguration": { "bookingWebhookName": "string" }, "shipperContactInfo": { "companyName": "string", "givenName": "string", "familyName": "string", "phoneNumber": "string", "mobilePhoneNumber": "string", "email": "user@example.com" }, "shippingDetails": { "multipleDrivers": true, "truckDetails": {}, "hazmatDetails": {} }, "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "status": "PROCESSING", "shipmentIdentifiers": [ {} ], "routeSegments": [ {} ], "rejectionReason": "COST_NOT_AGREED", "carrierResponseMethod": "EMAIL", "automatedFailureReason": "ERROR_CREDENTIALS", "bookingSourceMethod": "API", "carrierRejectionNotes": "string", "transportationMode": { "enumValue": "AIR" }, "masterShipmentId": "2e04ec4a-749a-4ef4-a452-b7dc8cca16aa", "carrierProvidedIdentifiers": [ {} ], "createdDateTime": "2019-08-24T14:15:22Z", "lastModifiedDateTime": "2019-08-24T14:15:22Z" }

Get Booking

Request

As either a carrier or a shipper, fetch a single booking.

Path
bookingIdstring(uuid)required

The project44-generated booking identifier

curl -i -X GET \
  'https://developers.project44.com/_mock/api-reference/api-docs/services/booking/v1/bookings/{bookingId}' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>'

Responses

Successful Response

Bodyapplication/json
shipmentIdstring(uuid)

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.

attributesArray of objects(CustomAttribute)

A shipper-provided list of custom key-value list pairs relevant to the booking which are shared with the carrier.

capacityProviderIdentifierobjectrequired

A capacity provider identifier object.

capacityProviderIdentifier.​typestring(enum)(CapacityProviderIdentifierType)required

Carrier Identifiers that are used to find companies within project44.

Enum"SCAC""DOT_NUMBER""MC_NUMBER""P44_EU""SYSTEM""P44_GLOBAL""VAT"
capacityProviderIdentifier.​valuestringrequired

Capacity provider identifier value.

carrierContactsArray of objects(multi_modal_booking_service_public__contact__Contact)

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.

totalRateobject

A monetary value expressing amount and currency type.

rateIdentifiersArray of objects(RateIdentifier)non-emptyrequired

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.

rateIdentifiers[].​sourcestring(RateIdentifierSource)required

The type of reference to the original source of the rate which applies to a booking. A SYSTEM identifier is internal to p44; an EXTERNAL identifier is known by a non-p44 system.

Enum"SYSTEM""EXTERNAL""UNKNOWN"
rateIdentifiers[].​typestring(RateIdentifierType)required

The type of rate identifier

Enum"SPOT_QUOTE""CONTRACT"
rateIdentifiers[].​valuestring

The ID of the rate source.

expirationDateTimestring(date-time)required

The datetime of expiration for this request from the shipper to the carrier. A timezone offset is required.

routeSegmentIdsArray of strings(uuid)non-emptyrequired

List of route-segment ids which apply to the booking.

notesstring<= 300 characters

An optional, shipper-provided free-text space for notes on the shipment.

shipmentDetailsArray of objects(ShipmentDetails)

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.

apiConfigurationobject

Field for configuring the behavior of this API.

shipperContactInfoobjectrequired

Contact method to reach the shipper making the booking request.

shipperContactInfo.​companyNamestringrequired

Name of the Company with whom the Contact is associated.

shipperContactInfo.​givenNamestring

The Contact's first or given name.

shipperContactInfo.​familyNamestring

The Contact's last or family name.

shipperContactInfo.​phoneNumberstring

The Contact's work or other primary phone number.

shipperContactInfo.​mobilePhoneNumberstring

The Contact's mobile phone number.

shipperContactInfo.​emailstring(email)

The Contact's email address.

shippingDetailsTruckloadShippingDetails (object) or OceanShippingDetails (object)required

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.

Any of:

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.

shippingDetails.​multipleDriversboolean

If set to 'true', indicates that the shipment is using a team of drivers and is therefore not constrained by the "11 hours of service" limit for an individual driver. This allows project44 to change its estimations around when a shipment can, and cannot be delivered.

shippingDetails.​truckDetailsobject(TruckloadShipmentTruckDetails)

Contains fields describing properties of the truck.

shippingDetails.​hazmatDetailsobject(TruckloadShipmentHazmatDetails)

Contains fields that describe what hazardous materials the shipment contains, if any.

idstring(uuid)

The project44-generated identifier for the booking.

statusstring

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.

Default "PROCESSING"
Enum"PROCESSING""UNDER_REVIEW""BOOKED""REJECTED""CANCELLED""EXPIRED"
shipmentIdentifiersArray of objects(LogisticsIdentifier)

Shipper-supplied identifiers for the shipment to be transported. Passed through from the parenting shipment and shared with the carrier.

routeSegmentsArray of objects(RouteSegmentWithStops)

A list of locations from/to which the shipment load is expected to be transported, organized as pairs.

rejectionReasonstring

The reason a carrier may opt not to accept a booking from a shipper.

Enum"COST_NOT_AGREED""SHORT_ON_STAFF""NOT_WITHIN_SCOPE""TRANSIT_TIME_TOO_SHORT""REQUESTED_EQUIPMENT_NOT_AVAILABLE""OTHER"
carrierResponseMethodstring

Method by which a carrier responds to bookings.

Default "EMAIL"
Enum"API""EDI""EMAIL"
automatedFailureReasonstring

An enumeration.

Enum"ERROR_CREDENTIALS""NO_RESPONSE_CARRIER""INTERNAL_ERROR_CARRIER""UNKNOWN_ERROR_CARRIER""INTERNAL_ERROR_VCS""UNKNOWN_ERROR_VCS""UNSUPPORTED_EQUIPMENT_TYPE""UNSUPPORTED_MODE""UNSUPPORTED_COUNTRY""UNSUPPORTED_STOP_TYPE""MISSING_DATA""INVALID_DATA"
bookingSourceMethodstring

Method by which a shipper initiates a request for a booking.

Default "API"
Enum"API""WEBAPP"
carrierRejectionNotesstring<= 300 characters

A free-text space for the carrier to provide extra information as to why they may reject the booking request.

transportationModeobject(TransportationMode)required

The mode of transportation used to move the freight.

transportationMode.​enumValuestring
Enum"AIR""OCEAN""RAIL""UNKNOWN""TRUCKLOAD""PARCEL""LTL""BARGE"
masterShipmentIdstring(uuid)

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.

carrierProvidedIdentifiersArray of objects(LogisticsIdentifier)<= 20 items

Carrier-supplied identifiers for the shipment to be transported. Fully mutable.

createdDateTimestring(date-time)required

The datetime when the booking was created.

lastModifiedDateTimestring(date-time)required

The datetime when the shipment was last updated.

Response
application/json
{ "shipmentId": "47efd5a2-af91-4417-950a-7f546cd1b5cf", "attributes": [ {} ], "capacityProviderIdentifier": { "type": "SCAC", "value": "string" }, "carrierContacts": [ {} ], "totalRate": { "currency": "USD", "amount": 0 }, "rateIdentifiers": [ {} ], "expirationDateTime": "2019-08-24T14:15:22Z", "routeSegmentIds": [ "497f6eca-6276-4993-bfeb-53cbbbba6f08" ], "notes": "string", "shipmentDetails": [ {} ], "apiConfiguration": { "bookingWebhookName": "string" }, "shipperContactInfo": { "companyName": "string", "givenName": "string", "familyName": "string", "phoneNumber": "string", "mobilePhoneNumber": "string", "email": "user@example.com" }, "shippingDetails": { "multipleDrivers": true, "truckDetails": {}, "hazmatDetails": {} }, "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "status": "PROCESSING", "shipmentIdentifiers": [ {} ], "routeSegments": [ {} ], "rejectionReason": "COST_NOT_AGREED", "carrierResponseMethod": "EMAIL", "automatedFailureReason": "ERROR_CREDENTIALS", "bookingSourceMethod": "API", "carrierRejectionNotes": "string", "transportationMode": { "enumValue": "AIR" }, "masterShipmentId": "2e04ec4a-749a-4ef4-a452-b7dc8cca16aa", "carrierProvidedIdentifiers": [ {} ], "createdDateTime": "2019-08-24T14:15:22Z", "lastModifiedDateTime": "2019-08-24T14:15:22Z" }

Update Booking

Request

As a shipper, update a booking request for an existing shipment to send to a Carrier.

Path
bookingIdstring(uuid)required

The project44-generated booking identifier

Bodyapplication/json
shipmentIdstring(uuid)

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.

attributesArray of objects(CustomAttribute)

A shipper-provided list of custom key-value list pairs relevant to the booking which are shared with the carrier.

capacityProviderIdentifierobjectrequired

A capacity provider identifier object.

capacityProviderIdentifier.​typestring(enum)(CapacityProviderIdentifierType)required

Carrier Identifiers that are used to find companies within project44.

Enum"SCAC""DOT_NUMBER""MC_NUMBER""P44_EU""SYSTEM""P44_GLOBAL""VAT"
capacityProviderIdentifier.​valuestringrequired

Capacity provider identifier value.

carrierContactsArray of objects(multi_modal_booking_service_public__contact__Contact)

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.

totalRateobject

A monetary value expressing amount and currency type.

rateIdentifiersArray of objects(RateIdentifier)non-emptyrequired

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.

rateIdentifiers[].​sourcestring(RateIdentifierSource)required

The type of reference to the original source of the rate which applies to a booking. A SYSTEM identifier is internal to p44; an EXTERNAL identifier is known by a non-p44 system.

Enum"SYSTEM""EXTERNAL""UNKNOWN"
rateIdentifiers[].​typestring(RateIdentifierType)required

The type of rate identifier

Enum"SPOT_QUOTE""CONTRACT"
rateIdentifiers[].​valuestring

The ID of the rate source.

expirationDateTimestring(date-time)required

The datetime of expiration for this request from the shipper to the carrier. A timezone offset is required.

routeSegmentIdsArray of strings(uuid)non-emptyrequired

List of route-segment ids which apply to the booking.

notesstring<= 300 characters

An optional, shipper-provided free-text space for notes on the shipment.

shipmentDetailsArray of objects(ShipmentDetails)

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.

apiConfigurationobject

Field for configuring the behavior of this API.

shipperContactInfoobjectrequired

Contact method to reach the shipper making the booking request.

shipperContactInfo.​companyNamestringrequired

Name of the Company with whom the Contact is associated.

shipperContactInfo.​givenNamestring

The Contact's first or given name.

shipperContactInfo.​familyNamestring

The Contact's last or family name.

shipperContactInfo.​phoneNumberstring

The Contact's work or other primary phone number.

shipperContactInfo.​mobilePhoneNumberstring

The Contact's mobile phone number.

shipperContactInfo.​emailstring(email)

The Contact's email address.

shippingDetailsCreateUpdateTruckloadShippingDetails (object) or CreateUpdateOceanShippingDetails (object)required

Information about how a load should be handled in transportation, specific to mode.

Any of:

Information about how a load should be handled in transportation, specific to mode.

shippingDetails.​loadPreferencestring

An enumeration.

Enum"FULL""PARTIAL"
shippingDetails.​trailerTypestringrequired

An enumeration.

Enum"FLATBED""REFRIGERATED""DRY_VAN"
shippingDetails.​trailerLengthobject

Total requested trailer length in feet or meters; must not exceed 53 Feet or 17 meters.

shippingDetails.​trailerVolumeobject

Total requested Trailer volume

shippingDetails.​flatbedTypestring

An enumeration.

Enum"CONESTOGA""DOUBLE_DROP"
shippingDetails.​accessorialsArray of RefrigeratedAccessorial (object) or LiftgateAccessorial (object) or TarpsAccessorial (object) or StrapsAccessorial (object) or ChainsAccessorial (object) or DeckHeightAccessorial (object) or CraneAccessorial (object) or CallBeforeArrivalAccessorial (object) or DockRequiredAccessorial (object) or LockedGateAccessorial (object) or FirstComeFirstServedAccessorial (object) or AppointmentRequiredAccessorial (object) or WhiteGloveAccessorial (object) or HazmatAccessorial (object)

Optional list of descriptors which detail any add-ons or declarations applicable which may be noteworthy to the carrier.

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": {
          "details": [
            {
              "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"
          }
        }
      ]
    }
  }'

Responses

Successful Response

Bodyapplication/json
shipmentIdstring(uuid)

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.

attributesArray of objects(CustomAttribute)

A shipper-provided list of custom key-value list pairs relevant to the booking which are shared with the carrier.

capacityProviderIdentifierobjectrequired

A capacity provider identifier object.

capacityProviderIdentifier.​typestring(enum)(CapacityProviderIdentifierType)required

Carrier Identifiers that are used to find companies within project44.

Enum"SCAC""DOT_NUMBER""MC_NUMBER""P44_EU""SYSTEM""P44_GLOBAL""VAT"
capacityProviderIdentifier.​valuestringrequired

Capacity provider identifier value.

carrierContactsArray of objects(multi_modal_booking_service_public__contact__Contact)

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.

totalRateobject

A monetary value expressing amount and currency type.

rateIdentifiersArray of objects(RateIdentifier)non-emptyrequired

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.

rateIdentifiers[].​sourcestring(RateIdentifierSource)required

The type of reference to the original source of the rate which applies to a booking. A SYSTEM identifier is internal to p44; an EXTERNAL identifier is known by a non-p44 system.

Enum"SYSTEM""EXTERNAL""UNKNOWN"
rateIdentifiers[].​typestring(RateIdentifierType)required

The type of rate identifier

Enum"SPOT_QUOTE""CONTRACT"
rateIdentifiers[].​valuestring

The ID of the rate source.

expirationDateTimestring(date-time)required

The datetime of expiration for this request from the shipper to the carrier. A timezone offset is required.

routeSegmentIdsArray of strings(uuid)non-emptyrequired

List of route-segment ids which apply to the booking.

notesstring<= 300 characters

An optional, shipper-provided free-text space for notes on the shipment.

shipmentDetailsArray of objects(ShipmentDetails)

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.

apiConfigurationobject

Field for configuring the behavior of this API.

shipperContactInfoobjectrequired

Contact method to reach the shipper making the booking request.

shipperContactInfo.​companyNamestringrequired

Name of the Company with whom the Contact is associated.

shipperContactInfo.​givenNamestring

The Contact's first or given name.

shipperContactInfo.​familyNamestring

The Contact's last or family name.

shipperContactInfo.​phoneNumberstring

The Contact's work or other primary phone number.

shipperContactInfo.​mobilePhoneNumberstring

The Contact's mobile phone number.

shipperContactInfo.​emailstring(email)

The Contact's email address.

shippingDetailsTruckloadShippingDetails (object) or OceanShippingDetails (object)required

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.

Any of:

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.

shippingDetails.​multipleDriversboolean

If set to 'true', indicates that the shipment is using a team of drivers and is therefore not constrained by the "11 hours of service" limit for an individual driver. This allows project44 to change its estimations around when a shipment can, and cannot be delivered.

shippingDetails.​truckDetailsobject(TruckloadShipmentTruckDetails)

Contains fields describing properties of the truck.

shippingDetails.​hazmatDetailsobject(TruckloadShipmentHazmatDetails)

Contains fields that describe what hazardous materials the shipment contains, if any.

idstring(uuid)

The project44-generated identifier for the booking.

statusstring

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.

Default "PROCESSING"
Enum"PROCESSING""UNDER_REVIEW""BOOKED""REJECTED""CANCELLED""EXPIRED"
shipmentIdentifiersArray of objects(LogisticsIdentifier)

Shipper-supplied identifiers for the shipment to be transported. Passed through from the parenting shipment and shared with the carrier.

routeSegmentsArray of objects(RouteSegmentWithStops)

A list of locations from/to which the shipment load is expected to be transported, organized as pairs.

rejectionReasonstring

The reason a carrier may opt not to accept a booking from a shipper.

Enum"COST_NOT_AGREED""SHORT_ON_STAFF""NOT_WITHIN_SCOPE""TRANSIT_TIME_TOO_SHORT""REQUESTED_EQUIPMENT_NOT_AVAILABLE""OTHER"
carrierResponseMethodstring

Method by which a carrier responds to bookings.

Default "EMAIL"
Enum"API""EDI""EMAIL"
automatedFailureReasonstring

An enumeration.

Enum"ERROR_CREDENTIALS""NO_RESPONSE_CARRIER""INTERNAL_ERROR_CARRIER""UNKNOWN_ERROR_CARRIER""INTERNAL_ERROR_VCS""UNKNOWN_ERROR_VCS""UNSUPPORTED_EQUIPMENT_TYPE""UNSUPPORTED_MODE""UNSUPPORTED_COUNTRY""UNSUPPORTED_STOP_TYPE""MISSING_DATA""INVALID_DATA"
bookingSourceMethodstring

Method by which a shipper initiates a request for a booking.

Default "API"
Enum"API""WEBAPP"
carrierRejectionNotesstring<= 300 characters

A free-text space for the carrier to provide extra information as to why they may reject the booking request.

transportationModeobject(TransportationMode)required

The mode of transportation used to move the freight.

transportationMode.​enumValuestring
Enum"AIR""OCEAN""RAIL""UNKNOWN""TRUCKLOAD""PARCEL""LTL""BARGE"
masterShipmentIdstring(uuid)

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.

carrierProvidedIdentifiersArray of objects(LogisticsIdentifier)<= 20 items

Carrier-supplied identifiers for the shipment to be transported. Fully mutable.

createdDateTimestring(date-time)required

The datetime when the booking was created.

lastModifiedDateTimestring(date-time)required

The datetime when the shipment was last updated.

Response
application/json
{ "shipmentId": "47efd5a2-af91-4417-950a-7f546cd1b5cf", "attributes": [ {} ], "capacityProviderIdentifier": { "type": "SCAC", "value": "string" }, "carrierContacts": [ {} ], "totalRate": { "currency": "USD", "amount": 0 }, "rateIdentifiers": [ {} ], "expirationDateTime": "2019-08-24T14:15:22Z", "routeSegmentIds": [ "497f6eca-6276-4993-bfeb-53cbbbba6f08" ], "notes": "string", "shipmentDetails": [ {} ], "apiConfiguration": { "bookingWebhookName": "string" }, "shipperContactInfo": { "companyName": "string", "givenName": "string", "familyName": "string", "phoneNumber": "string", "mobilePhoneNumber": "string", "email": "user@example.com" }, "shippingDetails": { "multipleDrivers": true, "truckDetails": {}, "hazmatDetails": {} }, "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "status": "PROCESSING", "shipmentIdentifiers": [ {} ], "routeSegments": [ {} ], "rejectionReason": "COST_NOT_AGREED", "carrierResponseMethod": "EMAIL", "automatedFailureReason": "ERROR_CREDENTIALS", "bookingSourceMethod": "API", "carrierRejectionNotes": "string", "transportationMode": { "enumValue": "AIR" }, "masterShipmentId": "2e04ec4a-749a-4ef4-a452-b7dc8cca16aa", "carrierProvidedIdentifiers": [ {} ], "createdDateTime": "2019-08-24T14:15:22Z", "lastModifiedDateTime": "2019-08-24T14:15:22Z" }

Cancel Booking

Request

As a shipper, change a booking's status to CANCELLED. A shipper may cancel a booking at any time.

Path
bookingIdstring(uuid)required

The project44-generated booking identifier

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>'

Responses

Successful Response

Bodyapplication/json
shipmentIdstring(uuid)

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.

attributesArray of objects(CustomAttribute)

A shipper-provided list of custom key-value list pairs relevant to the booking which are shared with the carrier.

capacityProviderIdentifierobjectrequired

A capacity provider identifier object.

capacityProviderIdentifier.​typestring(enum)(CapacityProviderIdentifierType)required

Carrier Identifiers that are used to find companies within project44.

Enum"SCAC""DOT_NUMBER""MC_NUMBER""P44_EU""SYSTEM""P44_GLOBAL""VAT"
capacityProviderIdentifier.​valuestringrequired

Capacity provider identifier value.

carrierContactsArray of objects(multi_modal_booking_service_public__contact__Contact)

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.

totalRateobject

A monetary value expressing amount and currency type.

rateIdentifiersArray of objects(RateIdentifier)non-emptyrequired

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.

rateIdentifiers[].​sourcestring(RateIdentifierSource)required

The type of reference to the original source of the rate which applies to a booking. A SYSTEM identifier is internal to p44; an EXTERNAL identifier is known by a non-p44 system.

Enum"SYSTEM""EXTERNAL""UNKNOWN"
rateIdentifiers[].​typestring(RateIdentifierType)required

The type of rate identifier

Enum"SPOT_QUOTE""CONTRACT"
rateIdentifiers[].​valuestring

The ID of the rate source.

expirationDateTimestring(date-time)required

The datetime of expiration for this request from the shipper to the carrier. A timezone offset is required.

routeSegmentIdsArray of strings(uuid)non-emptyrequired

List of route-segment ids which apply to the booking.

notesstring<= 300 characters

An optional, shipper-provided free-text space for notes on the shipment.

shipmentDetailsArray of objects(ShipmentDetails)

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.

apiConfigurationobject

Field for configuring the behavior of this API.

shipperContactInfoobjectrequired

Contact method to reach the shipper making the booking request.

shipperContactInfo.​companyNamestringrequired

Name of the Company with whom the Contact is associated.

shipperContactInfo.​givenNamestring

The Contact's first or given name.

shipperContactInfo.​familyNamestring

The Contact's last or family name.

shipperContactInfo.​phoneNumberstring

The Contact's work or other primary phone number.

shipperContactInfo.​mobilePhoneNumberstring

The Contact's mobile phone number.

shipperContactInfo.​emailstring(email)

The Contact's email address.

shippingDetailsTruckloadShippingDetails (object) or OceanShippingDetails (object)required

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.

Any of:

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.

shippingDetails.​multipleDriversboolean

If set to 'true', indicates that the shipment is using a team of drivers and is therefore not constrained by the "11 hours of service" limit for an individual driver. This allows project44 to change its estimations around when a shipment can, and cannot be delivered.

shippingDetails.​truckDetailsobject(TruckloadShipmentTruckDetails)

Contains fields describing properties of the truck.

shippingDetails.​hazmatDetailsobject(TruckloadShipmentHazmatDetails)

Contains fields that describe what hazardous materials the shipment contains, if any.

idstring(uuid)

The project44-generated identifier for the booking.

statusstring

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.

Default "PROCESSING"
Enum"PROCESSING""UNDER_REVIEW""BOOKED""REJECTED""CANCELLED""EXPIRED"
shipmentIdentifiersArray of objects(LogisticsIdentifier)

Shipper-supplied identifiers for the shipment to be transported. Passed through from the parenting shipment and shared with the carrier.

routeSegmentsArray of objects(RouteSegmentWithStops)

A list of locations from/to which the shipment load is expected to be transported, organized as pairs.

rejectionReasonstring

The reason a carrier may opt not to accept a booking from a shipper.

Enum"COST_NOT_AGREED""SHORT_ON_STAFF""NOT_WITHIN_SCOPE""TRANSIT_TIME_TOO_SHORT""REQUESTED_EQUIPMENT_NOT_AVAILABLE""OTHER"
carrierResponseMethodstring

Method by which a carrier responds to bookings.

Default "EMAIL"
Enum"API""EDI""EMAIL"
automatedFailureReasonstring

An enumeration.

Enum"ERROR_CREDENTIALS""NO_RESPONSE_CARRIER""INTERNAL_ERROR_CARRIER""UNKNOWN_ERROR_CARRIER""INTERNAL_ERROR_VCS""UNKNOWN_ERROR_VCS""UNSUPPORTED_EQUIPMENT_TYPE""UNSUPPORTED_MODE""UNSUPPORTED_COUNTRY""UNSUPPORTED_STOP_TYPE""MISSING_DATA""INVALID_DATA"
bookingSourceMethodstring

Method by which a shipper initiates a request for a booking.

Default "API"
Enum"API""WEBAPP"
carrierRejectionNotesstring<= 300 characters

A free-text space for the carrier to provide extra information as to why they may reject the booking request.

transportationModeobject(TransportationMode)required

The mode of transportation used to move the freight.

transportationMode.​enumValuestring
Enum"AIR""OCEAN""RAIL""UNKNOWN""TRUCKLOAD""PARCEL""LTL""BARGE"
masterShipmentIdstring(uuid)

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.

carrierProvidedIdentifiersArray of objects(LogisticsIdentifier)<= 20 items

Carrier-supplied identifiers for the shipment to be transported. Fully mutable.

createdDateTimestring(date-time)required

The datetime when the booking was created.

lastModifiedDateTimestring(date-time)required

The datetime when the shipment was last updated.

Response
application/json
{ "shipmentId": "47efd5a2-af91-4417-950a-7f546cd1b5cf", "attributes": [ {} ], "capacityProviderIdentifier": { "type": "SCAC", "value": "string" }, "carrierContacts": [ {} ], "totalRate": { "currency": "USD", "amount": 0 }, "rateIdentifiers": [ {} ], "expirationDateTime": "2019-08-24T14:15:22Z", "routeSegmentIds": [ "497f6eca-6276-4993-bfeb-53cbbbba6f08" ], "notes": "string", "shipmentDetails": [ {} ], "apiConfiguration": { "bookingWebhookName": "string" }, "shipperContactInfo": { "companyName": "string", "givenName": "string", "familyName": "string", "phoneNumber": "string", "mobilePhoneNumber": "string", "email": "user@example.com" }, "shippingDetails": { "multipleDrivers": true, "truckDetails": {}, "hazmatDetails": {} }, "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "status": "PROCESSING", "shipmentIdentifiers": [ {} ], "routeSegments": [ {} ], "rejectionReason": "COST_NOT_AGREED", "carrierResponseMethod": "EMAIL", "automatedFailureReason": "ERROR_CREDENTIALS", "bookingSourceMethod": "API", "carrierRejectionNotes": "string", "transportationMode": { "enumValue": "AIR" }, "masterShipmentId": "2e04ec4a-749a-4ef4-a452-b7dc8cca16aa", "carrierProvidedIdentifiers": [ {} ], "createdDateTime": "2019-08-24T14:15:22Z", "lastModifiedDateTime": "2019-08-24T14:15:22Z" }

Flag Booking As Under Review

Request

As a Carrier, change a booking's status from PROCESSING to UNDER_REVIEW.

This endpoint is provided as a service to the shipper to inform them their request is under consideration, yet the Carrier is not yet ready to provide a full response.

The shipper will be notified of this activity.

Path
bookingIdstring(uuid)required

The project44-generated booking identifier

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>'

Responses

Successful Response

Bodyapplication/json
shipmentIdstring(uuid)

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.

attributesArray of objects(CustomAttribute)

A shipper-provided list of custom key-value list pairs relevant to the booking which are shared with the carrier.

capacityProviderIdentifierobjectrequired

A capacity provider identifier object.

capacityProviderIdentifier.​typestring(enum)(CapacityProviderIdentifierType)required

Carrier Identifiers that are used to find companies within project44.

Enum"SCAC""DOT_NUMBER""MC_NUMBER""P44_EU""SYSTEM""P44_GLOBAL""VAT"
capacityProviderIdentifier.​valuestringrequired

Capacity provider identifier value.

carrierContactsArray of objects(multi_modal_booking_service_public__contact__Contact)

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.

totalRateobject

A monetary value expressing amount and currency type.

rateIdentifiersArray of objects(RateIdentifier)non-emptyrequired

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.

rateIdentifiers[].​sourcestring(RateIdentifierSource)required

The type of reference to the original source of the rate which applies to a booking. A SYSTEM identifier is internal to p44; an EXTERNAL identifier is known by a non-p44 system.

Enum"SYSTEM""EXTERNAL""UNKNOWN"
rateIdentifiers[].​typestring(RateIdentifierType)required

The type of rate identifier

Enum"SPOT_QUOTE""CONTRACT"
rateIdentifiers[].​valuestring

The ID of the rate source.

expirationDateTimestring(date-time)required

The datetime of expiration for this request from the shipper to the carrier. A timezone offset is required.

routeSegmentIdsArray of strings(uuid)non-emptyrequired

List of route-segment ids which apply to the booking.

notesstring<= 300 characters

An optional, shipper-provided free-text space for notes on the shipment.

shipmentDetailsArray of objects(ShipmentDetails)

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.

apiConfigurationobject

Field for configuring the behavior of this API.

shipperContactInfoobjectrequired

Contact method to reach the shipper making the booking request.

shipperContactInfo.​companyNamestringrequired

Name of the Company with whom the Contact is associated.

shipperContactInfo.​givenNamestring

The Contact's first or given name.

shipperContactInfo.​familyNamestring

The Contact's last or family name.

shipperContactInfo.​phoneNumberstring

The Contact's work or other primary phone number.

shipperContactInfo.​mobilePhoneNumberstring

The Contact's mobile phone number.

shipperContactInfo.​emailstring(email)

The Contact's email address.

shippingDetailsTruckloadShippingDetails (object) or OceanShippingDetails (object)required

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.

Any of:

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.

shippingDetails.​multipleDriversboolean

If set to 'true', indicates that the shipment is using a team of drivers and is therefore not constrained by the "11 hours of service" limit for an individual driver. This allows project44 to change its estimations around when a shipment can, and cannot be delivered.

shippingDetails.​truckDetailsobject(TruckloadShipmentTruckDetails)

Contains fields describing properties of the truck.

shippingDetails.​hazmatDetailsobject(TruckloadShipmentHazmatDetails)

Contains fields that describe what hazardous materials the shipment contains, if any.

idstring(uuid)

The project44-generated identifier for the booking.

statusstring

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.

Default "PROCESSING"
Enum"PROCESSING""UNDER_REVIEW""BOOKED""REJECTED""CANCELLED""EXPIRED"
shipmentIdentifiersArray of objects(LogisticsIdentifier)

Shipper-supplied identifiers for the shipment to be transported. Passed through from the parenting shipment and shared with the carrier.

routeSegmentsArray of objects(RouteSegmentWithStops)

A list of locations from/to which the shipment load is expected to be transported, organized as pairs.

rejectionReasonstring

The reason a carrier may opt not to accept a booking from a shipper.

Enum"COST_NOT_AGREED""SHORT_ON_STAFF""NOT_WITHIN_SCOPE""TRANSIT_TIME_TOO_SHORT""REQUESTED_EQUIPMENT_NOT_AVAILABLE""OTHER"
carrierResponseMethodstring

Method by which a carrier responds to bookings.

Default "EMAIL"
Enum"API""EDI""EMAIL"
automatedFailureReasonstring

An enumeration.

Enum"ERROR_CREDENTIALS""NO_RESPONSE_CARRIER""INTERNAL_ERROR_CARRIER""UNKNOWN_ERROR_CARRIER""INTERNAL_ERROR_VCS""UNKNOWN_ERROR_VCS""UNSUPPORTED_EQUIPMENT_TYPE""UNSUPPORTED_MODE""UNSUPPORTED_COUNTRY""UNSUPPORTED_STOP_TYPE""MISSING_DATA""INVALID_DATA"
bookingSourceMethodstring

Method by which a shipper initiates a request for a booking.

Default "API"
Enum"API""WEBAPP"
carrierRejectionNotesstring<= 300 characters

A free-text space for the carrier to provide extra information as to why they may reject the booking request.

transportationModeobject(TransportationMode)required

The mode of transportation used to move the freight.

transportationMode.​enumValuestring
Enum"AIR""OCEAN""RAIL""UNKNOWN""TRUCKLOAD""PARCEL""LTL""BARGE"
masterShipmentIdstring(uuid)

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.

carrierProvidedIdentifiersArray of objects(LogisticsIdentifier)<= 20 items

Carrier-supplied identifiers for the shipment to be transported. Fully mutable.

createdDateTimestring(date-time)required

The datetime when the booking was created.

lastModifiedDateTimestring(date-time)required

The datetime when the shipment was last updated.

Response
application/json
{ "shipmentId": "47efd5a2-af91-4417-950a-7f546cd1b5cf", "attributes": [ {} ], "capacityProviderIdentifier": { "type": "SCAC", "value": "string" }, "carrierContacts": [ {} ], "totalRate": { "currency": "USD", "amount": 0 }, "rateIdentifiers": [ {} ], "expirationDateTime": "2019-08-24T14:15:22Z", "routeSegmentIds": [ "497f6eca-6276-4993-bfeb-53cbbbba6f08" ], "notes": "string", "shipmentDetails": [ {} ], "apiConfiguration": { "bookingWebhookName": "string" }, "shipperContactInfo": { "companyName": "string", "givenName": "string", "familyName": "string", "phoneNumber": "string", "mobilePhoneNumber": "string", "email": "user@example.com" }, "shippingDetails": { "multipleDrivers": true, "truckDetails": {}, "hazmatDetails": {} }, "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "status": "PROCESSING", "shipmentIdentifiers": [ {} ], "routeSegments": [ {} ], "rejectionReason": "COST_NOT_AGREED", "carrierResponseMethod": "EMAIL", "automatedFailureReason": "ERROR_CREDENTIALS", "bookingSourceMethod": "API", "carrierRejectionNotes": "string", "transportationMode": { "enumValue": "AIR" }, "masterShipmentId": "2e04ec4a-749a-4ef4-a452-b7dc8cca16aa", "carrierProvidedIdentifiers": [ {} ], "createdDateTime": "2019-08-24T14:15:22Z", "lastModifiedDateTime": "2019-08-24T14:15:22Z" }

Respond To Booking

Request

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.

Path
bookingIdstring(uuid)required

The project44-generated booking identifier

Bodyapplication/jsonrequired
Any of:

Carrier response in the form of an Acceptance with identification information or a Rejection with a reason.

shipmentIdentifiersArray of objects(LogisticsIdentifier)

Methods for identifying the shipment; usually a BOOKING_NUMBER or BOL.

routeSegmentsArray of objects(RouteSegmentResponse)non-emptyrequired

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.

routeSegments[].​routeSegmentIdstring(uuid)required

The ID of the route-segment.

routeSegments[].​fromDatestring(date)required

The date which the carrier commits to depart from the route-segment origin.

routeSegments[].​toDatestring(date)required

The date which the carrier commits to arrive at the route-segment destination.

detailsOceanBookingResponseDetails (object) or TruckloadBookingResponseDetails (object)

Further response details applicable to the booking.

Any of:

Further response details applicable to the booking.

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"
      }
    }
  }'

Responses

Successful Response

Bodyapplication/json
shipmentIdstring(uuid)

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.

attributesArray of objects(CustomAttribute)

A shipper-provided list of custom key-value list pairs relevant to the booking which are shared with the carrier.

capacityProviderIdentifierobjectrequired

A capacity provider identifier object.

capacityProviderIdentifier.​typestring(enum)(CapacityProviderIdentifierType)required

Carrier Identifiers that are used to find companies within project44.

Enum"SCAC""DOT_NUMBER""MC_NUMBER""P44_EU""SYSTEM""P44_GLOBAL""VAT"
capacityProviderIdentifier.​valuestringrequired

Capacity provider identifier value.

carrierContactsArray of objects(multi_modal_booking_service_public__contact__Contact)

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.

totalRateobject

A monetary value expressing amount and currency type.

rateIdentifiersArray of objects(RateIdentifier)non-emptyrequired

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.

rateIdentifiers[].​sourcestring(RateIdentifierSource)required

The type of reference to the original source of the rate which applies to a booking. A SYSTEM identifier is internal to p44; an EXTERNAL identifier is known by a non-p44 system.

Enum"SYSTEM""EXTERNAL""UNKNOWN"
rateIdentifiers[].​typestring(RateIdentifierType)required

The type of rate identifier

Enum"SPOT_QUOTE""CONTRACT"
rateIdentifiers[].​valuestring

The ID of the rate source.

expirationDateTimestring(date-time)required

The datetime of expiration for this request from the shipper to the carrier. A timezone offset is required.

routeSegmentIdsArray of strings(uuid)non-emptyrequired

List of route-segment ids which apply to the booking.

notesstring<= 300 characters

An optional, shipper-provided free-text space for notes on the shipment.

shipmentDetailsArray of objects(ShipmentDetails)

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.

apiConfigurationobject

Field for configuring the behavior of this API.

shipperContactInfoobjectrequired

Contact method to reach the shipper making the booking request.

shipperContactInfo.​companyNamestringrequired

Name of the Company with whom the Contact is associated.

shipperContactInfo.​givenNamestring

The Contact's first or given name.

shipperContactInfo.​familyNamestring

The Contact's last or family name.

shipperContactInfo.​phoneNumberstring

The Contact's work or other primary phone number.

shipperContactInfo.​mobilePhoneNumberstring

The Contact's mobile phone number.

shipperContactInfo.​emailstring(email)

The Contact's email address.

shippingDetailsTruckloadShippingDetails (object) or OceanShippingDetails (object)required

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.

Any of:

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.

shippingDetails.​multipleDriversboolean

If set to 'true', indicates that the shipment is using a team of drivers and is therefore not constrained by the "11 hours of service" limit for an individual driver. This allows project44 to change its estimations around when a shipment can, and cannot be delivered.

shippingDetails.​truckDetailsobject(TruckloadShipmentTruckDetails)

Contains fields describing properties of the truck.

shippingDetails.​hazmatDetailsobject(TruckloadShipmentHazmatDetails)

Contains fields that describe what hazardous materials the shipment contains, if any.

idstring(uuid)

The project44-generated identifier for the booking.

statusstring

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.

Default "PROCESSING"
Enum"PROCESSING""UNDER_REVIEW""BOOKED""REJECTED""CANCELLED""EXPIRED"
shipmentIdentifiersArray of objects(LogisticsIdentifier)

Shipper-supplied identifiers for the shipment to be transported. Passed through from the parenting shipment and shared with the carrier.

routeSegmentsArray of objects(RouteSegmentWithStops)

A list of locations from/to which the shipment load is expected to be transported, organized as pairs.

rejectionReasonstring

The reason a carrier may opt not to accept a booking from a shipper.

Enum"COST_NOT_AGREED""SHORT_ON_STAFF""NOT_WITHIN_SCOPE""TRANSIT_TIME_TOO_SHORT""REQUESTED_EQUIPMENT_NOT_AVAILABLE""OTHER"
carrierResponseMethodstring

Method by which a carrier responds to bookings.

Default "EMAIL"
Enum"API""EDI""EMAIL"
automatedFailureReasonstring

An enumeration.

Enum"ERROR_CREDENTIALS""NO_RESPONSE_CARRIER""INTERNAL_ERROR_CARRIER""UNKNOWN_ERROR_CARRIER""INTERNAL_ERROR_VCS""UNKNOWN_ERROR_VCS""UNSUPPORTED_EQUIPMENT_TYPE""UNSUPPORTED_MODE""UNSUPPORTED_COUNTRY""UNSUPPORTED_STOP_TYPE""MISSING_DATA""INVALID_DATA"
bookingSourceMethodstring

Method by which a shipper initiates a request for a booking.

Default "API"
Enum"API""WEBAPP"
carrierRejectionNotesstring<= 300 characters

A free-text space for the carrier to provide extra information as to why they may reject the booking request.

transportationModeobject(TransportationMode)required

The mode of transportation used to move the freight.

transportationMode.​enumValuestring
Enum"AIR""OCEAN""RAIL""UNKNOWN""TRUCKLOAD""PARCEL""LTL""BARGE"
masterShipmentIdstring(uuid)

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.

carrierProvidedIdentifiersArray of objects(LogisticsIdentifier)<= 20 items

Carrier-supplied identifiers for the shipment to be transported. Fully mutable.

createdDateTimestring(date-time)required

The datetime when the booking was created.

lastModifiedDateTimestring(date-time)required

The datetime when the shipment was last updated.

Response
application/json
{ "shipmentId": "47efd5a2-af91-4417-950a-7f546cd1b5cf", "attributes": [ {} ], "capacityProviderIdentifier": { "type": "SCAC", "value": "string" }, "carrierContacts": [ {} ], "totalRate": { "currency": "USD", "amount": 0 }, "rateIdentifiers": [ {} ], "expirationDateTime": "2019-08-24T14:15:22Z", "routeSegmentIds": [ "497f6eca-6276-4993-bfeb-53cbbbba6f08" ], "notes": "string", "shipmentDetails": [ {} ], "apiConfiguration": { "bookingWebhookName": "string" }, "shipperContactInfo": { "companyName": "string", "givenName": "string", "familyName": "string", "phoneNumber": "string", "mobilePhoneNumber": "string", "email": "user@example.com" }, "shippingDetails": { "multipleDrivers": true, "truckDetails": {}, "hazmatDetails": {} }, "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "status": "PROCESSING", "shipmentIdentifiers": [ {} ], "routeSegments": [ {} ], "rejectionReason": "COST_NOT_AGREED", "carrierResponseMethod": "EMAIL", "automatedFailureReason": "ERROR_CREDENTIALS", "bookingSourceMethod": "API", "carrierRejectionNotes": "string", "transportationMode": { "enumValue": "AIR" }, "masterShipmentId": "2e04ec4a-749a-4ef4-a452-b7dc8cca16aa", "carrierProvidedIdentifiers": [ {} ], "createdDateTime": "2019-08-24T14:15:22Z", "lastModifiedDateTime": "2019-08-24T14:15:22Z" }

APIs

Operations

Invitations

Operations

Multi-Modal: Document

Operations