Last updated

Receive Booking Requests by Webhook

You can integrate with project44 to receive bookings/tenders directly into your system by registering a webhook with project44. A webhook is an endpoint hosted by you that you have registered to receive booking requests. When you have a webhook configured, booking requests will be sent (pushed) to your hosted endpoint via an HTTP request. To receive booking requests through your webhook,

  1. Map your endpoint to the project44 booking request payload
  2. Set up your webhook
  3. Start responding to booking requests

Map Your Endpoint to the project44 Booking Request Payload

Below is the payload project44 will push to your endpoint. Map your system to the following payload:

{
  "shipmentId": "string",
  "attributes": [
    {
      "name": "string",
      "values": [
        "string"
      ]
    }
  ],
  "capacityProviderIdentifier": {
    "type": "string",
    "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:22",
  "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": "PROCESSING",
  "shipmentIdentifiers": [
    {
      "type": "string",
      "value": "string"
    }
  ],
  "routeSegments": [
    {
      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
      "fromStop": {
        "id": "eff50f2a-8964-41f9-b45d-0a4f6f94e159",
        "type": "PICKUP",
        "arrivalDate": "2019-08-24",
        "arrivalAppointmentWindow": {
          "startTime": "14:15:22",
          "endTime": "14:15:22"
        },
        "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": "eff50f2a-8964-41f9-b45d-0a4f6f94e159",
          "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": "2ca57692-0523-4424-a638-167e5e26f7d3",
        "type": "DELIVERY",
        "arrivalDate": "2019-08-24",
        "arrivalAppointmentWindow": {
          "startTime": "14:15:22",
          "endTime": "14:15:22"
        },
        "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": "2ca57692-0523-4424-a638-167e5e26f7d3",
          "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": "TRUCKLOAD",
  "masterShipmentId": "2e04ec4a-749a-4ef4-a452-b7dc8cca16aa",
  "carrierProvidedIdentifiers": [
    {
      "type": "string",
      "value": "string"
    }
  ]
}

Set Up Your Webhook

This is a one-time activity to set up a webhook. Once a webhook is created, please contact your project44 Technical Contact to complete the Webhook set-up process.

Workflow

  1. Prepare a PUT request to /api/v4/webhooks.
{
  "authParams": {},
  "authType": "API_KEY",
  "authenticationMethods": [
    {
      "parameters": {},
      "type": "API_KEY"
    }
  ],
  "configName": "string",
  "id": 0,
  "method": "GET",
  "methodParams": {},
  "payloadFormat": "JSON",
  "url": "string",
  "version": 0
}
  1. Send the request.

Fields and Objects

ElementDescriptionTypeNotes
authenticationMethods.parametersThe webhook authentication method parameters.objectThe fields of the parameters object vary for each authentication method. See the API Reference Documentation for this endpoint for more information.
authenticationMethods.typeThe webhook authentication method type.stringValid values are BASIC, API_KEY, and OAUTH2.
configNameThe unique name used to identify the push configuration.string
methodThe HTTP method associated with the webhook endpoint.stringDefault is POST. Valid values are GET, HEAD, POST, PUT, PATCH, DELETE, OPTIONS, and TRACE.
methodParamsA map of the optional method parameters.object
payloadFormatThe format of the payload to send to the webhook.stringThe only valid value is JSON.
urlThe URL of the webhook endpoint.string
versionThe optional version of the push configuration.integer <int64>

Expected System Response

You have successfully submitted the request when you receive a 200 OK response with the following response schema:

{
  "authParams": {},
  "authType": "API_KEY",
  "authenticationMethods": [
    {
      "parameters": {},
      "type": "API_KEY"
    }
  ],
  "configName": "string",
  "id": 0,
  "method": "GET",
  "methodParams": {},
  "payloadFormat": "JSON",
  "url": "string",
  "version": 0
}

Respond to a Booking Request

Respond to a booking request using project44's endpoint. Follow the steps here.