Winter '25 Revenova TMS Web Services Guide

Prev Next

Overview

Revenova TMS can act as a back-end TMS for a front-end customer portal or other TMS.  Any web service-capable UI client software can connect to the Revenova TMS.

This guide is intended for developers who want to integrate their front-end portal or TMS to the Revenova TMS.

API-based LTL Loads can be created, quoted, tendered, and tracked and using the following JSON-based, RESTful web services.

Web Service Setup – Revenova TMS Administrator

  1. The Salesforce user accounts that invoke the API should be associated with API-only, Partner Community profiles with API Enabled.

  2. Make sure all Sharing Settings are appropriate for each API user/profile.

  3. Set the Login IP Ranges for each API profile to prevent unauthorized endpoints from accessing the API.

  4. Each web service request from a client UI is counted against the org limits for inbound API calls.

  5. Change the password for all API users on a periodic basis, proactively informing API users ahead of time.

Revenova Web Service User Setup

Perform the following steps to set up customer-specific API users for the Revenova Web Service.

  1. Clone the Partner Community security profile and name the new security profile. For example, “Company Community API User.”

  2. Add the cloned security profile to the Member profiles for the current partner community.

  3. All Administrative and General User permissions checkboxes should be Unchecked except for the following fields.

    1. Apex REST Services

    2. API Enabled

    3. Api Only User

  4. For each API User complete the following.

    1. Temporarily Uncheck the API Only User checkbox on the security profile.

    2. Create/Community Enable the Account, Contact, and User records using the profile above, setting the email to yourself.

    3. Respond to the portal welcome email and change/note the password.

    4. Re-Check the API Only User checkbox on the security profile.

    5. Add a TMS license to the new user.

    6. Update any sharing rules, validations, role assignments, etc. needed to establish the user’s access rights.  

      1. These values are usually identical to the settings for the Partner Community non-API users.

    7. Obtain and add the IP address ranges of the calling process to the security profile IP whitelist.

    8. Send the developer invoking the API the credentials and key org information. An example is provided below.

  • ID:  xxxx@email.com

  • PW:  xxxxx11223344

  • ORG ID:  00D1I000000ndNs

  • Login URL:   https://login.salesforce.com/services/Soap/c/42.0

  • Services URL:  https://na73.salesforce.com/

Web Service Notes -- Client TMS/UI

  1. Authentication is performed via a SOAP-based login service.  

  2. Do not hard code the credentials or URLs provided for access to the service as they may change.

  3. All subsequent calls are REST/JSON-based with a session token returned from the login service.

  4. If a load is updated, all related quotes are deleted, and the load will need to be requoted.

  5. Tendered loads cannot be updated (via the API).

  6. Tendered loads cannot be re-tendered (via the API).

  7. Loads cannot be deleted (via the API).

  8. The primary key data type for all TMS objects is an 18-character alphanumeric string field.  For example, the “loadId” element.

  9. Customer-specific credit limits are enforced and can prevent load tendering.

  10. Please provide the Revenova TMS administrator with the IP address (range) of the web service client.

The TMSRateIQService must be accessed by an internal user ID with credentials for the load boards used in the RateIQ calculation definition.

Additionally, Read access for Rate Calculation and Rate Calculation Rules must be provided for all TMSRateIQService users.

Rate Calculations

Rate Calculation Rules

Prerequisites

The following information is provided by a Revenova TMS administrator:

  • 15-character Org Id

  • Salesforce domain URL for the Org

  • Login username

  • Login password

Authentication

Access to any of the REST web services first requires authentication. Authentication provides a session token that must be passed as an HTTP header parameter with all subsequent web services calls.

Although data is accessed via RESTful JSON-based web services, authentication requires a login API call via a SOAP/XML authentication service.

Example Request

HTTP Type: POST

The URL for the login service is:

  • Test: https://test.salesforce.com/services/Soap/c/42.0

  • Production: https://login.salesforce.com/services/Soap/c/42.0

Required headers:

The raw body of the POST:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
                  xmlns:urn="urn:enterprise.soap.sforce.com">
   <soapenv:Header>
       <urn:LoginScopeHeader>
           <urn:organizationId>[15-character org ID]</urn:organizationId>
       </urn:LoginScopeHeader>
   </soapenv:Header>
   <soapenv:Body>
      <urn:login>
         <urn:username>[user login name]</urn:username>
         <urn:password>[user password]</urn:password>
      </urn:login>
   </soapenv:Body>
</soapenv:Envelope>

Example Response

Parse out the <sessionId> element and use this value in the header of all subsequent transactions:

  • “Authorization” “Bearer [session Id]

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns="urn:enterprise.soap.sforce.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <soapenv:Body>
      <loginResponse>
         <result>
            <metadataServerUrl>https://cs95.salesforce.com/services/Soap/m/42.0/00D0x0000000OgX</metadataServerUrl>
            <passwordExpired>false</passwordExpired>
            <sandbox>true</sandbox>
            <serverUrl>https://cs95.salesforce.com/services/Soap/c/42.0/00D0x0000000OgX</serverUrl>
            <sessionId>00D0x0000000OgX!ARUAahsbu6NwZXuNPCCRLXVuPagWqOneIt1gI4pz_Pnuxh5PNuER0c3y835CfFqVOUwzcxrPRvl7aC6sZdNXsscBUg.8Sc4Iz</sessionId>
            <userId>00541000002ap4jAAA</userId>
            <userInfo>
               <accessibilityMode>false</accessibilityMode>
               <chatterExternal>false</chatterExternal>
               <currencySymbol xsi:nil="true"/>
               <orgAttachmentFileSizeLimit>5242880</orgAttachmentFileSizeLimit>
               <orgDefaultCurrencyIsoCode xsi:nil="true"/>
               <orgDefaultCurrencyLocale xsi:nil="true"/>
               <orgDisallowHtmlAttachments>false</orgDisallowHtmlAttachments>
               <orgHasPersonAccounts>false</orgHasPersonAccounts>
               <organizationId>00D0x0dd0000OgXEAU</organizationId>
               <organizationMultiCurrency>true</organizationMultiCurrency>
               <organizationName>MC1</organizationName>
               <profileId>00e4100ds00wJ3UAAU</profileId>
               <roleId>00E410000dde1dBEAQ</roleId>
               <sessionSecondsValid>7200</sessionSecondsValid>
               <userDefaultCurrencyIsoCode>CAD</userDefaultCurrencyIsoCode>
               <userEmail>dtralio7@revenova.com</userEmail>
               <userFullName>Dave Revenova</userFullName>
               <userId>005410048402ap4jAAA</userId>
               <userLanguage>en_US</userLanguage>
               <userLocale>en_US</userLocale>
               <userName>mc1portal@revenova.com.partial1</userName>
               <userTimeZone>America/Chicago</userTimeZone>
               <userType>PowerPartner</userType>
               <userUiSkin>Theme3</userUiSkin>
            </userInfo>
         </result>
      </loginResponse>
   </soapenv:Body>
</soapenv:Envelope>

Subsequent web service call example showing headers set properly (note we are now using REST/JSON):

Note that if the session token expires or is invalid, an error message is received:

[
    {
        "message": "Session expired or invalid",
        "errorCode": "INVALID_SESSION_ID"
    }
]

TMSLoadService

This service allows users to:

  • Get the details of an existing load.

  • Create a new load.

  • Update an existing load.

The response body to a “get load” call is largely identical to the request body of a “create load” or “update load” call.  This greatly simplifies testing, cloning, etc.

Get a Load

Example Request

HTTP Type: GET

URL: [salesforce domain]/services/apexrest/rtms/tmsloadservice/[18-character load Id] 

Example URL: https://cs95.salesforce.com/services/apexrest/rtms/tmsloadservice/a0i0x000080BUgeAAG

Example Response

{
    "weightUnits": "lbs",
    "volumeUnits": null,
    "trackingProvider": null,
    "trackingProviderCustomer": null,
    "trackingNumber": null,
    "trackingNumberCustomer": null,
    "totalWeight": 1000,
    "totalVolume": null,
    "tenderAcceptedDate": "2018-04-19T14:00:58.000Z",
    "Stops": [
        {
            "stopStatus": "En Route",
            "stopNumber": 1,
            "shippingReceivingHours": "10:00-20:00",
            "shippingContact": {
                "phone": "(312) 555-1919",
                "lastName": "Catheter R",
                "firstName": "Dave",
                "email": "dtralio7@revenova.com"
            },
            "references": "Carrier Pickup Number: 1524146458446",
            "pickupDeliveryNumber": "1234567",
            "milesAway": 173.227,
            "location": {
                "shippingStateProvince": "IN",
                "shippingPostalCode": "46278",
                "shippingCountry": "US",
                "shippingCity": "Indianapolis",
                "shippingAddress": "6102 Victory Way",
                "companyName": "Catheter Research, Inc. (CRI)"
            },
            "kilometersAway": 278.781919336435076628938267154405,
            "isPickup": true,
            "isGeolocation": false,
            "isDropOff": false,
            "instructions": null,
            "expectedDate": "2018-04-19",
            "departureTime": null,
            "departureDate": null,
            "cumulativeMiles": 0,
            "carrierStatusComments": null,
            "carrierStatusAsOf": "2018-04-19T14:01:06.000Z",
            "carrierStatus": "No Issues",
            "carrierEtaTime": "04:15",
            "carrierEtaDate": "2018-04-19",
            "arrivalTime": null,
            "arrivalStatus": "On Schedule 173mi / 279km away",
            "arrivalDate": null,
            "appointmentTime": "10:00",
            "appointmentRequired": true,
            "address": "6102 Victory Way, Indianapolis, Indiana 46278"
        },
        {
            "stopStatus": null,
            "stopNumber": 2,
            "shippingReceivingHours": "10:00-20:00",
            "shippingContact": {
                "phone": "(312) 555-1919",
                "lastName": "Cardinal H",
                "firstName": "Dave",
                "email": "dtralio7@revenova.com"
            },
            "references": null,
            "pickupDeliveryNumber": null,
            "milesAway": 360.46,
            "location": {
                "shippingStateProvince": "OH",
                "shippingPostalCode": "43017",
                "shippingCountry": "US",
                "shippingCity": "Dublin",
                "shippingAddress": "7000 Cardinal Place",
                "companyName": "Cardinal Health"
            },
            "kilometersAway": 580.104317710353395958292227992616,
            "isPickup": false,
            "isGeolocation": false,
            "isDropOff": true,
            "instructions": null,
            "expectedDate": null,
            "departureTime": null,
            "departureDate": null,
            "cumulativeMiles": 187.232,
            "carrierStatusComments": null,
            "carrierStatusAsOf": null,
            "carrierStatus": null,
            "carrierEtaTime": null,
            "carrierEtaDate": null,
            "arrivalTime": null,
            "arrivalStatus": "On Schedule 360mi / 580km away",
            "arrivalDate": null,
            "appointmentTime": "22:00",
            "appointmentRequired": false,
            "address": "7000 Cardinal Place, Dublin, Ohio 43017"
        }
    ],
    "stateLane": "IN:OH",
    "shipToAddress": "7000 Cardinal Place, Dublin, Ohio 43017",
    "shipStatus": "On Schedule 173mi / 279km away",
    "shipFromAddress": "6102 Victory Way, Indianapolis, Indiana 46278",
    "scheduleStatus": "On Schedule",
    "proNumber": null,
    "poNumber": null,
    "podReceived": false,
    "otherInstructions": null,
    "origin": "Indianapolis, Indiana",
    "orderNumber": null,
    "orderDate": "2018-04-19",
    "modeName": "LTL",
    "loadStatusComments": null,
    "loadStatus": "Dispatched",
    "loadPostingDescription": "Hello",
    "loadNumber": "Load-101699",
    "loadId": "a0i0x0000014APkAAM",
    "LineItems": [
        {
            "weightUnits": "lbs",
            "weight": 1000,
            "volumeUnits": null,
            "volume": null,
            "turnable": false,
            "stackable": false,
            "scheduleBCode": "1910.10.2000",
            "pickupStopNumber": 1,
            "packagingUnits": "Cartons",
            "packagingUnitCount": 20,
            "nmfcNumber": "21652-10",
            "nmfcClass": "55",
            "linearFeet": 10,
            "itemNumber": "Item",
            "itemDescription": "Fooda",
            "htsCode": "1910.10.2000",
            "hsCode": "1910.10",
            "hazMatPackingGroup": null,
            "hazMatNumber": null,
            "hazMatContact": null,
            "hazMatClassDivision": null,
            "hazardousMaterials": false,
            "handlingUnitWidth": 44,
            "handlingUnits": "Pallets",
            "handlingUnitLength": 44,
            "handlingUnitHeight": 44,
            "handlingUnitCount": 2,
            "dimensionUnits": "in",
            "deliveryStopNumber": 2
        }
    ],
    "linearFeet": 10,
    "lastReportedState": "IL",
    "lastReportedLongitude": -87.65139,
    "lastReportedLatitude": 41.874372,
    "lastReportedCountry": "US",
    "lastReportedCity": "Chicago",
    "lastModifiedDate": "2018-04-19T14:01:22.000Z",
    "hazardousMaterials": false,
    "expectedShipDate": "2018-04-19",
    "expectedDeliveryDate": null,
    "distanceMiles": 187,
    "distanceKilometers": 301,
    "destination": "Dublin, Ohio",
    "deliveryStatus": "On Schedule 360mi / 580km away",
    "currencyCode": "USD",
    "createdDate": "2018-04-19T13:17:14.000Z",
    "containerTrailerNumber": "MAEU1234567",
    "cityLane": "Indianapolis, IN:Dublin, OH",
    "carrierUploads": null,
    "carrier": "Estes Express",
    "cargoValue": 20000,
    "bookingNumber": null,
    "billOfLadingNumber": "1459695004",
    "apiLoadId": null,
    "Accessorials": [
        {
            "stopNumber": 1,
            "accessorialName": "Lift Gate Pick Up",
            "accessorialId": "a01410000069DXmAAM"
        },
        {
            "stopNumber": 2,
            "accessorialName": "Lift Gate Delivery",
            "accessorialId": "a01410000069DXlAAM"
        }
    ]
}

Create a Load

Example Request

HTTP Type: POST

URL: [salesforce domain]/services/apexrest/rtms/tmsloadservice

Example URL: https://cs95.salesforce.com/services/apexrest/rtms/tmsloadservice

The request body is largely identical to both the GET response and the response body (except no loadId element should be passed in this request). Optional parameters do not need to be passed. Make sure that only one of IsPickup and isDropoff is true for a stop. Accessorials are optional, of course.

Here is a “minimal” new load creation request body with two accessorials. Make sure to pass “Temp Load Name” for the loadNumber.  

{ "wsl" :
  {
    "weightUnits": "lbs",
    "totalWeight": 1000,
    "temperatureControlled" : false,
    "Stops": [
        {
            "stopNumber": 1,
            "shippingReceivingHours": "09:00-22:00",
            "shippingContact": {
                "phone": "(312) 555-1919",
                "lastName": "Ardmore Po",
                "firstName": "Dave",
                "email": "dtralio7@revenova.com"
            },
            "location": {
                "shippingStateProvince": "OH",
                "shippingPostalCode": "44145",
                "shippingCountry": "US",
                "shippingCity": "Westlake",
                "shippingAddress": "24610 Detroit Road Suite 1200",
                "companyName": "Ardmore Power Logistics, LLC"
            },
            "isPickup": true,
            "isDropOff": false,
            "isGeolocation": false,
            "expectedDate": "2018-04-18",
            "appointmentTime": null,
            "appointmentRequired": false
        },
        {
            "stopNumber": 2,
            "shippingReceivingHours": "09:00-22:00",
            "shippingContact": {
                "phone": "(312) 555-1919",
                "lastName": "Awardco Fr",
                "firstName": "Dave",
                "email": "dtralio7@revenova.com"
            },
            "location": {
                "shippingStateProvince": "TX",
                "shippingPostalCode": "77379",
                "shippingCountry": "US",
                "shippingCity": "Spring",
                "shippingAddress": "18118 Strack Drive",
                "companyName": "Awardco Freight Management Group, Inc."
            },
            "isPickup": false,
            "isDropOff": true,
            "isGeolocation": false,
            "expectedDate": null,
            "appointmentTime": null,
            "appointmentRequired": false
        }
    ],
    "proNumber": null,
    "poNumber": null,
    "orderDate": "2018-04-18",
    "modeName": "LTL",
    "loadPostingDescription": "Hello",
    "loadNumber": "Temp Load Name",
    "LineItems": [
        {
            "weightUnits": "lbs",
            "weight": 1000,
            "stackable": false,
            "turnable": false,
            "scheduleBCode": null,
            "pickupStopNumber": 1,
            "packagingUnits": null,
            "packagingUnitCount": null,
            "nmfcNumber": null,
            "nmfcClass": "50",
            "linearFeet": null,
            "itemNumber": "Item",
            "itemDescription": "Fooda",
            "htsCode": null,
            "hsCode": null,
            "hazMatPackingGroup": null,
            "hazMatNumber": null,
            "hazMatContact": null,
            "hazMatClassDivision": null,
            "hazardousMaterials": false,
            "handlingUnitWidth": 44,
            "handlingUnits": "Pallets",
            "handlingUnitLength": 44,
            "handlingUnitHeight": 44,
            "handlingUnitCount": 2,
            "dimensionUnits": "in",
            "deliveryStopNumber": 2
        }
    ],
    "linearFeet": null,
    "hazardousMaterials": false,
    "distanceMiles": 1291,
    "distanceKilometers": 2078,
    "cargoValue": 20000,
    "containerTrailerNumber": "MAEU1234567",
    "billOfLadingNumber": null,
    "Accessorials": [
        {
            "stopNumber": 1,
            "accessorialName": "Lift Gate Pick Up",
            "accessorialId": "a014100000634tfAAA"
        },
        {
            "stopNumber": 2,
            "accessorialName": "Lift Gate Delivery",
            "accessorialId": "a014100000634teAAA"
        }
    ]
  }
}

Here is a list of the required fields to create and tender a “minimal” new load with two accessorials.

Field

Required to Create Load

Required to Tender Load

weightUnits

Yes

--

totalWeight

Yes

--

temperatureControlled

Yes

--

Stops (array)

Yes

--

stopNumber

Yes (Stop 1, Stop 2, Accessorials)

--

shippingReceivingHours

--

Yes (Stop 1 & Stop 2)

shippingContact

--

Yes (Stop 1 & Stop 2)

phone

--

Yes (Stop 1 & Stop 2)

lastName

--

Yes (Stop 1 & Stop 2)

firstName

--

Yes (Stop 1 & Stop 2)

Email

--

Yes (Stop 1 & Stop 2)

shippingStateProvince

Yes (Stop 1 & Stop 2)

--

shippingPostalCode

Yes (Stop 1 & Stop 2)

--

shippingCountry

Yes (Stop 1 & Stop 2)

--

shippingCity

Yes (Stop 1 & Stop 2)

--

shippingAddress

--

Yes (Stop 1 & Stop 2)

companyName

--

Yes (Stop 1 & Stop 2)

isPickup

Yes (Stop 1 & Stop 2)

--

isDropOff

Yes (Stop 1 & Stop 2)

--

isGeolocation

No

No

expectedDate

Yes (Stop 1)

--

appointmentTime

No

No

appointmentRequired

No

No

proNumber

No

No

poNumber

No

No

orderDate

No

No

modeName

Yes

--

loadPostingDescription

No

No

loadNumber

Yes

--

LineItems (array)

Yes

--

weightUnits

Yes

--

weight

Yes

--

stackable

Yes

--

turnable

Yes

--

scheduleBCode

No

No

pickupStopNumber

Yes

--

packagingUnits

No

No

packagingUnitCount

No

No

nmfcNumber

No

No

nmfcClass

Yes

--

linearFeet

No

No

itemNumber

Yes

--

itemDescription

Yes

--

htsCode

No

No

hsCode

No

No

hazMatPackagingGroup

No

No

hazMatNumber

No

No

hazMatContact

No

No

hazMatClassDivision

No

No

hazardousMaterials

No

No

handlingUnitWidth

Yes

--

handlingUnits

Yes

--

handlingUnitLength

Yes

--

handlingUnitHeight

Yes

--

handlingUnitCount

Yes

--

dimensionalUnits

Yes

--

deliveryStopNumber

Yes

--

distanceMiles

No

No

distanceKilometers

No

No

cargoValue

No

No

containerTrailerNumber

No

No

billofLadingNumber

No

No

Accessorials (array)

No

No

accessorialName

Yes (Stop 1 & Stop 2)

--

accessorialID

Yes (Stop 1 & Stop 2)

--

Example Response

The response body is largely identical to the request body, with the addition of optional and read-only parameters, the loadId parameter, and the final setting of the loadNumber parameter:

{
    "weightUnits": "lbs",
    "volumeUnits": null,
    "trackingProvider": null,
    "trackingProviderCustomer": null,
    "trackingNumber": null,
    "trackingNumberCustomer": null,
    "totalWeight": 1000,
    "totalVolume": null,
    "tenderAcceptedDate": "2018-04-19T14:00:58.000Z",
    "Stops": [	
        {
            "stopStatus": "En Route",
            "stopNumber": 1,
            "shippingReceivingHours": "10:00-20:00",
            "shippingContact": {
                "phone": "(312) 339-1984",
                "lastName": "Catheter R",
                "firstName": "Dan",
                "email": "dctest@revenova.com"
            },
            "references": "Carrier Pickup Number: 1524146458446",
            "pickupDeliveryNumber": "1234567",
            "milesAway": 173.227,
            "location": {
                "shippingStateProvince": "IN",
                "shippingPostalCode": "46278",
                "shippingCountry": "US",
                "shippingCity": "Indianapolis",
                "shippingAddress": "6102 Victory Way",
                "companyName": "Catheter Research, Inc. (CRI)"
            },
            "kilometersAway": 278.781919336435076628938267154405,
            "isPickup": true,
            "isDropOff": false,
            "isGeolocation": false,
            "instructions": null,
            "expectedDate": "2018-04-19",
            "departureTime": null,
            "departureDate": null,
            "cumulativeMiles": 0,
            "carrierStatusComments": null,
            "carrierStatusAsOf": "2018-04-19T14:01:06.000Z",
            "carrierStatus": "No Issues",
            "carrierEtaTime": "04:15",
            "carrierEtaDate": "2018-04-19",
            "arrivalTime": null,
            "arrivalStatus": "On Schedule 173mi / 279km away",
            "arrivalDate": null,
            "appointmentTime": "10:00",
            "appointmentRequired": true,
            "address": "6102 Victory Way, Indianapolis, Indiana 46278"
        },
        {
            "stopStatus": null,
            "stopNumber": 2,
            "shippingReceivingHours": "10:00-20:00",
            "shippingContact": {
                "phone": "(312) 999-1984",
                "lastName": "Cardinal H",
                "firstName": "Dennis",
                "email": "dc2test@revenova.com"
            },
            "references": null,
            "pickupDeliveryNumber": null,
            "milesAway": 360.46,
            "location": {
                "shippingStateProvince": "OH",
                "shippingPostalCode": "43017",
                "shippingCountry": "US",
                "shippingCity": "Dublin",
                "shippingAddress": "7000 Cardinal Place",
                "companyName": "Cardinal Health"
            },
            "kilometersAway": 580.104317710353395958292227992616,
            "isPickup": false,
            "isDropOff": true,
            "isGeolocation": false,
            "instructions": null,
            "expectedDate": null,
            "departureTime": null,
            "departureDate": null,
            "cumulativeMiles": 187.232,
            "carrierStatusComments": null,
            "carrierStatusAsOf": null,
            "carrierStatus": null,
            "carrierEtaTime": null,
            "carrierEtaDate": null,
            "arrivalTime": null,
            "arrivalStatus": "On Schedule 360mi / 580km away",
            "arrivalDate": null,
            "appointmentTime": "22:00",
            "appointmentRequired": false,
            "address": "7000 Cardinal Place, Dublin, Ohio 43017"
        }
    ],
    "stateLane": "IN:OH",
    "shipToAddress": "7000 Cardinal Place, Dublin, Ohio 43017",
    "shipStatus": "On Schedule 173mi / 279km away",
    "shipFromAddress": "6102 Victory Way, Indianapolis, Indiana 46278",
    "scheduleStatus": "On Schedule",
    "proNumber": null,
    "poNumber": null,
    "podReceived": false,
    "otherInstructions": null,
    "origin": "Indianapolis, Indiana",
    "orderNumber": null,
    "orderDate": "2018-04-19",
    "modeName": "LTL",
    "loadStatusComments": null,
    "loadStatus": "Dispatched",
    "loadPostingDescription": "Hello",
    "loadNumber": "Load-101699",
    "loadId": "a0i0x0000014APkAAM",
    "LineItems": [
        {
            "weightUnits": "lbs",
            "weight": 1000,
            "volumeUnits": null,
            "volume": null,
            "turnable": false,
            "stackable": false,
            "scheduleBCode": "1910.10.2000",
            "pickupStopNumber": 1,
            "packagingUnits": "Cartons",
            "packagingUnitCount": 20,
            "nmfcNumber": "21652-10",
            "nmfcClass": "55",
            "linearFeet": 10,
            "itemNumber": "Item",
            "itemDescription": "Fooda",
            "htsCode": "1910.10.2000",
            "hsCode": "1910.10",
            "hazMatPackingGroup": null,
            "hazMatNumber": null,
            "hazMatContact": null,
            "hazMatClassDivision": null,
            "hazardousMaterials": false,
            "handlingUnitWidth": 44,
            "handlingUnits": "Pallets",
            "handlingUnitLength": 44,
            "handlingUnitHeight": 44,
            "handlingUnitCount": 2,
            "dimensionUnits": "in",
            "deliveryStopNumber": 2
        }
    ],
    "linearFeet": 10,
    "lastReportedState": "IL",
    "lastReportedLongitude": -87.65139,
    "lastReportedLatitude": 41.874372,
    "lastReportedCountry": "US",
    "lastReportedCity": "Chicago",
    "lastModifiedDate": "2018-04-19T14:01:22.000Z",
    "hazardousMaterials": false,
    "expectedShipDate": "2018-04-19",
    "expectedDeliveryDate": null,
    "distanceMiles": 187,
    "distanceKilometers": 301,
    "destination": "Dublin, Ohio",
    "deliveryStatus": "On Schedule 360mi / 580km away",
    "currencyCode": "USD",
    "createdDate": "2018-04-19T13:17:14.000Z",
    "containerTrailerNumber": "MAEU1234567",
    "cityLane": "Indianapolis, IN:Dublin, OH",
    "carrierUploads": null,
    "carrier": "Estes Express",
    "cargoValue": 20000,
    "bookingNumber": null,
    "billOfLadingNumber": "1459695004",
    "apiLoadId": null,
    "Accessorials": [
        {
            "stopNumber": 1,
            "accessorialName": "Lift Gate Pick Up",
            "accessorialId": "a01410000069DXmAAM"
        },
        {
            "stopNumber": 2,
            "accessorialName": "Lift Gate Delivery",
            "accessorialId": "a01410000069DXlAAM"
        }
    ]
}

Update a Load

Example Request

HTTP Type: PATCH

URL: [salesforce domain]/services/apexrest/rtms/tmsloadservice

Example URL: https://cs95.salesforce.com/services/apexrest/rtms/tmsloadservice

The request format is identical to the POST transaction request format with the addition of the correct loadId and loadName parameters.

Example Response

The response format is identical to the POST transaction response format.

TMSQuoteService

This service allows users to:

  • Get one or more LTL API-based quotes for a load.

Example Request

HTTP Type: GET

URL: [salesforce domain]/services/apexrest/rtms/tmsquoteservice/[18-character load Id]

Example URL: https://cs95.salesforce.com/services/apexrest/rtms/tmsquoteservice/a0i0x000000BUgeAAG

Example Response

[
    {
        "usedLiability": 1000,
        "transitTime": 4,
        "serviceClass": "Standard Rate",
        "rating": "B",
        "quoteNumber": "Carrier Quote 123",
        "quoteId": "a0D0U000000LLkYUAW",
        "price": 395.66,
        "newliability": 2000,
        "modeName": "LTL",
        "loadNumber": "Load-123",
        "estimatedDelivery": null,
        "directInterline": "Interline",
        "currencyCode": "$",
        "carrier": "AAA Cooper Transportation - P44"
    },
    {
        "usedLiability": 1000,
        "transitTime": 3,
        "serviceClass": "Standard Rate",
        "rating": null,
        "quoteNumber": "Carrier Quote 124",
        "quoteId": "a0D0U000000LLkZUAW",
        "price": 583.2,
        "newliability": 2000,
        "modeName": "LTL",
        "loadNumber": "Load-123",
        "estimatedDelivery": "2018-04-23",
        "directInterline": "Direct",
        "currencyCode": "$",
        "carrier": "YRC - P44"
    },
    {
        "usedLiability": 1000,
        "transitTime": 3,
        "serviceClass": "ACCELERATED SERVICE",
        "rating": null,
        "quoteNumber": "Carrier Quote 125",
        "quoteId": "a0D0U000000LLkaUAG",
        "price": 629.43,
        "newliability": 2000,
        "modeName": "LTL",
        "loadNumber": "Load-123",
        "estimatedDelivery": "2018-04-23",
        "directInterline": "Direct",
        "currencyCode": "$",
        "carrier": "YRC - P44"
    },
    {
        "usedLiability": 1000,
        "transitTime": 3,
        "serviceClass": "GUARANTEED STANDARD BY 5 P.M.",
        "rating": null,
        "quoteNumber": "Carrier Quote 126",
        "quoteId": "a0D0U000000LLkbUAG",
        "price": 644.84,
        "newliability": 2000,
        "modeName": "LTL",
        "loadNumber": "Load-123",
        "estimatedDelivery": "2018-04-23",
        "directInterline": "Direct",
        "currencyCode": "$",
        "carrier": "YRC - P44"
    },
    {
        "usedLiability": null,
        "transitTime": 2,
        "serviceClass": "Standard Rate",
        "rating": null,
        "quoteNumber": "Carrier Quote 127",
        "quoteId": "a0D0U000000LLkcUAG",
        "price": 1759.46,
        "newliability": null,
        "modeName": "LTL",
        "loadNumber": "Load-123",
        "estimatedDelivery": "2018-04-20",
        "directInterline": "Unspecified",
        "currencyCode": "$",
        "carrier": "Con-way Freight - P44"
    }
]

TMSTenderService

This service allows users to:

  • Tender a load based on a Carrier quote returned from the service above.

Example Request

HTTP Type: POST

URL: [salesforce domain]/services/apexrest/rtms/tmstenderservice

Example URL: https://cs95.salesforce.com/services/apexrest/rtms/tmstenderservice

{
"txn" : {
        "loadId" : "a0i0x000000BV0NAAW",
        "quoteId" : "a0D0x000000P1BzEAK"
    }
}

Example Response

{
    "tenderSuccessful": true,
    "errorMessage": null,
    "carrierBillToState": "IL",
    "carrierBillToPostalCode": "60603",
    "carrierBillToName": "Revenova, LLC",
    "carrierBillToCountry": "US",
    "carrierBillToCity": "Chicago",
    "carrierBillToAddress": "79 W. Monroe Street Suite 900"
}

Example Error Response

{
    "tenderSuccessful": false,
    "errorMessage": "System.DmlException--Upsert failed. First exception on row 0; first error: CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY, rtms.CustomerQuoteUpsert: execution of AfterInsert\n\ncaused by: rtms.ValidationException: You cannot have more than one accepted Customer Quote for a given Load.\n\n(rtms): []--(rtms)\n\n"
}

TMSLoadStatusService

This service allows users to:

  • Return load- and stop-level status for one or more loads.

  • Return POD documents for one load.

Example Request

HTTP Type: GET

URL: [salesforce domain]/services/apexrest/rtms/tmsloadstatusservice/[18-character load Id]

Example URL: https://cs95.salesforce.com/services/apexrest/rtms/tmsloadstatusservice/a0i0x000000BV0NAAW

A comma-delimited list of loads Ids may be passed to receive the status for more than one load.

The POD contents are Base 64 encoded.

Example Response

[
    {
        "stopList": [
            {
                "stopStatus": "Departed",
                "stopNumber": 1,
                "stopName": "Stop 1",
                "milesAway": null,
                "departureTime": "02:30",
                "departureDate": "2018-04-19",
                "carrierStatus": "Loaded Clean",
                "carrierETATime": null,
                "carrierETADate": null,
                "arrivalTime": "02:00",
                "arrivalDate": "2018-04-19",
                "appointmentTime": "10:00",
                "appointmentRequired": true
            },
            {
                "stopStatus": "En Route",
                "stopNumber": 2,
                "stopName": "Stop 2",
                "milesAway": 177.969,
                "departureTime": null,
                "departureDate": null,
                "carrierStatus": "No Issues",
                "carrierETATime": "03:45",
                "carrierETADate": "2018-04-19",
                "arrivalTime": null,
                "arrivalDate": null,
                "appointmentTime": "22:00",
                "appointmentRequired": false
            }
        ],
        "podList": [],
        "loadStatusComments": null,
        "loadStatus": "In Transit",
        "loadName": "Load-101702",
        "loadId": "a0i0x0000014AQEAA2",
        "lastReportedState": "IN",
        "lastReportedLongitude": -86.158064,
        "lastReportedLocation": "Indianapolis, IN",
        "lastReportedLatitude": 39.768365,
        "lastReportedCountry": "US",
        "lastReportedCity": "Indianapolis"
    }
]

Example Response with Inline POD document

[
    {
        "stopList": [
            {
                "stopStatus": "Departed",
                "stopNumber": 1,
                "stopName": "Stop 1",
                "milesAway": null,
                "departureTime": "02:30",
                "departureDate": "2018-04-19",
                "carrierStatus": "Loaded Clean",
                "carrierETATime": null,
                "carrierETADate": null,
                "arrivalTime": "02:00",
                "arrivalDate": "2018-04-19",
                "appointmentTime": "10:00",
                "appointmentRequired": true
            },
            {
                "stopStatus": "En Route",
                "stopNumber": 2,
                "stopName": "Stop 2",
                "milesAway": 177.969,
                "departureTime": null,
                "departureDate": null,
                "carrierStatus": "No Issues",
                "carrierETATime": "03:45",
                "carrierETADate": "2018-04-19",
                "arrivalTime": null,
                "arrivalDate": null,
                "appointmentTime": "22:00",
                "appointmentRequired": false
            }
        ],
        "podList": [
            {
                "fileType": "png",
                "fileName": "Proof of Delivery",
                "contents": "iVBORw0KGgoAAAANSUhEUgAAAAwAAAANCAYAAACdKY9CAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAAHdElNRQfeCBYUJDBt/E7bAAAAB3RFWHRBdXRob3IAqa7MSAAAAAx0RVh0RGVzY3JpcHRpb24AEwkhIwAAAAp0RVh0Q29weXJpZ2h0AKwPzDoAAAAOdEVYdENyZWF0aW9uIHRpbWUANfcPCQAAAAl0RVh0U29mdHdhcmUAXXD/OgAAAAt0RVh0RGlzY2xhaW1lcgC3wLSPAAAACHRFWHRXYXJuaW5nAMAb5ocAAAAHdEVYdFNvdXJjZQD1/4PrAAAACHRFWHRDb21tZW50APbMlr8AAAAGdEVYdFRpdGxlAKju0icAAAAbSURBVChTY/wPBAwkACYoTTQY1UAMGIEaGBgAA4IEFgXnMO8AAAAASUVORK5CYII="
            }
        ],"loadStatusComments": null,
        "loadStatus": "In Transit",
        "loadName": "Load-101702",
        "loadId": "a0i0x0000014AQEAA2",
        "lastReportedState": "IN",
        "lastReportedLongitude": -86.158064,
        "lastReportedLocation": "Indianapolis, IN",
        "lastReportedLatitude": 39.768365,
        "lastReportedCountry": "US",
        "lastReportedCity": "Indianapolis"
    }
]

TMSReferenceDataService

This service allows users to:

  • Get valid values for enumeration fields used to create Loads.

These enumeration fields must be used for this service include:

  • Mode Name

  • Accessorial Name and Id

  • Packaging Units

  • Handling Units

  • Dimension Units

  • Weight Units

  • Volume Units

  • NMFC Class

  • HazMat Class

  • HazMat Packing Group

Example Request

HTTP Type: GET

URL: [salesforce domain]/services/apexrest/rtms/tmsreferencedataservice

Example URL: https://cs95.salesforce.com/services/apexrest/rtms/tmsreferencedataservice

Example Response

[
    {
        "value": "LTL",
        "label": "LTL",
        "category": "MODE"
    },
    {
        "value": "a01410000069DXIAA2",
        "label": "After Hours Delivery",
        "category": "ACCESSORIAL"
    },
    {
        "value": "a01410000069DXJAA2",
        "label": "After Hours Pick Up",
        "category": "ACCESSORIAL"
    },
    {
        "value": "a01410000069DXKAA2",
        "label": "Airport/Gov/Mines/Gas & Oil Fields Delivery",
        "category": "ACCESSORIAL"
    },
    {
        "value": "a01410000069DXLAA2",
        "label": "Airport/Gov/Mines/Gas & Oil Fields Pick Up",
        "category": "ACCESSORIAL"
    },
    {
        "value": "a01410000069DXMAA2",
        "label": "Blind Shipments",
        "category": "ACCESSORIAL"
    },
    {
        "value": "a01410000069DXNAA2",
        "label": "Construction/Utility Delivery",
        "category": "ACCESSORIAL"
    },
    {
        "value": "a01410000069DXOAA2",
        "label": "Construction/Utility Pick Up",
        "category": "ACCESSORIAL"
    },
    {
        "value": "a01410000069DXQAA2",
        "label": "Customs",
        "category": "ACCESSORIAL"
    },
    {
        "value": "a01410000069DXYAA2",
        "label": "Excess Length - Over 120\"",
        "category": "ACCESSORIAL"
    },
    {
        "value": "a01410000069DXXAA2",
        "label": "Excess Length - Up to 120\"",
        "category": "ACCESSORIAL"
    },
    {
        "value": "a01410000069DXWAA2",
        "label": "Excess Value",
        "category": "ACCESSORIAL"
    },
    {
        "value": "a01410000069DXZAA2",
        "label": "Exhibition/Trade Show Delivery",
        "category": "ACCESSORIAL"
    },
    {
        "value": "a01410000069DXaAAM",
        "label": "Exhibition/Trade Show Pick Up",
        "category": "ACCESSORIAL"
    },
    {
        "value": "a01410000069DXbAAM",
        "label": "Expedited",
        "category": "ACCESSORIAL"
    },
    {
        "value": "a01410000069DXcAAM",
        "label": "Extra Labor Delivery",
        "category": "ACCESSORIAL"
    },
    {
        "value": "a01410000069DXdAAM",
        "label": "Extra Labor Pick Up",
        "category": "ACCESSORIAL"
    },
    {
        "value": "a01410000069DXeAAM",
        "label": "Guaranteed",
        "category": "ACCESSORIAL"
    },
    {
        "value": "a01410000069DXfAAM",
        "label": "Hazardous Material Handling",
        "category": "ACCESSORIAL"
    },
    {
        "value": "a01410000069DXgAAM",
        "label": "High Cost Delivery Surcharge",
        "category": "ACCESSORIAL"
    },
    {
        "value": "a01410000069DXhAAM",
        "label": "Holiday Delivery",
        "category": "ACCESSORIAL"
    },
    {
        "value": "a01410000069DXiAAM",
        "label": "Holiday Pick Up",
        "category": "ACCESSORIAL"
    },
    {
        "value": "a01410000069DXjAAM",
        "label": "Inside Delivery",
        "category": "ACCESSORIAL"
    },
    {
        "value": "a01410000069DXkAAM",
        "label": "Inside Pick Up",
        "category": "ACCESSORIAL"
    },
    {
        "value": "a01410000069DXlAAM",
        "label": "Lift Gate Delivery",
        "category": "ACCESSORIAL"
    },
    {
        "value": "a01410000069DXmAAM",
        "label": "Lift Gate Pick Up",
        "category": "ACCESSORIAL"
    },
    {
        "value": "a01410000069DXnAAM",
        "label": "Limited Access Delivery",
        "category": "ACCESSORIAL"
    },
    {
        "value": "a01410000069DXoAAM",
        "label": "Limited Access Pick Up",
        "category": "ACCESSORIAL"
    },
    {
        "value": "a01410000069DXpAAM",
        "label": "Lumper Delivery",
        "category": "ACCESSORIAL"
    },
    {
        "value": "a01410000069DXqAAM",
        "label": "Lumper Pick Up",
        "category": "ACCESSORIAL"
    },
    {
        "value": "a01410000069DXrAAM",
        "label": "Notify Prior to Delivery",
        "category": "ACCESSORIAL"
    },
    {
        "value": "a01410000069DY9AAM",
        "label": "Other",
        "category": "ACCESSORIAL"
    },
    {
        "value": "a01410000069DXsAAM",
        "label": "Piers/Wharves Delivery",
        "category": "ACCESSORIAL"
    },
    {
        "value": "a01410000069DXtAAM",
        "label": "Piers/Wharves Pick Up",
        "category": "ACCESSORIAL"
    },
    {
        "value": "a01410000069DXuAAM",
        "label": "Protect From Freezing",
        "category": "ACCESSORIAL"
    },
    {
        "value": "a01410000069DXwAAM",
        "label": "Residential Delivery",
        "category": "ACCESSORIAL"
    },
    {
        "value": "a01410000069DXxAAM",
        "label": "Residential Pick Up",
        "category": "ACCESSORIAL"
    },
    {
        "value": "a01410000069DY4AAM",
        "label": "Saturday Delivery",
        "category": "ACCESSORIAL"
    },
    {
        "value": "a01410000069DY5AAM",
        "label": "Saturday Pick Up",
        "category": "ACCESSORIAL"
    },
    {
        "value": "a01410000069DXyAAM",
        "label": "Single Shipment Fee",
        "category": "ACCESSORIAL"
    },
    {
        "value": "a01410000069DXzAAM",
        "label": "Sort/Segregate Delivery",
        "category": "ACCESSORIAL"
    },
    {
        "value": "a01410000069DY0AAM",
        "label": "Sort/Segregate Pick Up",
        "category": "ACCESSORIAL"
    },
    {
        "value": "a01410000069DY2AAM",
        "label": "Storage Destination",
        "category": "ACCESSORIAL"
    },
    {
        "value": "a01410000069DY3AAM",
        "label": "Storage Origin",
        "category": "ACCESSORIAL"
    },
    {
        "value": "a01410000069DY6AAM",
        "label": "Sunday Delivery",
        "category": "ACCESSORIAL"
    },
    {
        "value": "a01410000069DY7AAM",
        "label": "Sunday Pick Up",
        "category": "ACCESSORIAL"
    },
    {
        "value": "a014100000K1vwTAAR",
        "label": "Terminal Charge",
        "category": "ACCESSORIAL"
    },
    {
        "value": "a014100000K1vwJAAR",
        "label": "War Risk Surcharge - Destination",
        "category": "ACCESSORIAL"
    },
    {
        "value": "a014100000K1vwEAAR",
        "label": "War Risk Surcharge - Origin",
        "category": "ACCESSORIAL"
    },
    {
        "value": "Bags",
        "label": "Bags",
        "category": "HANDLING UNIT"
    },
    {
        "value": "Bales",
        "label": "Bales",
        "category": "HANDLING UNIT"
    },
    {
        "value": "Barrels",
        "label": "Barrels",
        "category": "HANDLING UNIT"
    },
    {
        "value": "Baskets",
        "label": "Baskets",
        "category": "HANDLING UNIT"
    },
    {
        "value": "Bins",
        "label": "Bins",
        "category": "HANDLING UNIT"
    },
    {
        "value": "Bottles",
        "label": "Bottles",
        "category": "HANDLING UNIT"
    },
    {
        "value": "Boxes",
        "label": "Boxes",
        "category": "HANDLING UNIT"
    },
    {
        "value": "Bundles",
        "label": "Bundles",
        "category": "HANDLING UNIT"
    },
    {
        "value": "Canisters",
        "label": "Canisters",
        "category": "HANDLING UNIT"
    },
    {
        "value": "Carboys",
        "label": "Carboys",
        "category": "HANDLING UNIT"
    },
    {
        "value": "Cartons",
        "label": "Cartons",
        "category": "HANDLING UNIT"
    },
    {
        "value": "Cases",
        "label": "Cases",
        "category": "HANDLING UNIT"
    },
    {
        "value": "Coils",
        "label": "Coils",
        "category": "HANDLING UNIT"
    },
    {
        "value": "Containers",
        "label": "Containers",
        "category": "HANDLING UNIT"
    },
    {
        "value": "Crates",
        "label": "Crates",
        "category": "HANDLING UNIT"
    },
    {
        "value": "Cylinders",
        "label": "Cylinders",
        "category": "HANDLING UNIT"
    },
    {
        "value": "Drums",
        "label": "Drums",
        "category": "HANDLING UNIT"
    },
    {
        "value": "Kegs",
        "label": "Kegs",
        "category": "HANDLING UNIT"
    },
    {
        "value": "Other",
        "label": "Other",
        "category": "HANDLING UNIT"
    },
    {
        "value": "Packages",
        "label": "Packages",
        "category": "HANDLING UNIT"
    },
    {
        "value": "Pallets",
        "label": "Pallets",
        "category": "HANDLING UNIT"
    },
    {
        "value": "Pieces",
        "label": "Pieces",
        "category": "HANDLING UNIT"
    },
    {
        "value": "Reels",
        "label": "Reels",
        "category": "HANDLING UNIT"
    },
    {
        "value": "Rolls",
        "label": "Rolls",
        "category": "HANDLING UNIT"
    },
    {
        "value": "Skids",
        "label": "Skids",
        "category": "HANDLING UNIT"
    },
    {
        "value": "Spools",
        "label": "Spools",
        "category": "HANDLING UNIT"
    },
    {
        "value": "Tanks",
        "label": "Tanks",
        "category": "HANDLING UNIT"
    },
    {
        "value": "Trays",
        "label": "Trays",
        "category": "HANDLING UNIT"
    },
    {
        "value": "Truckloads",
        "label": "Truckloads",
        "category": "HANDLING UNIT"
    },
    {
        "value": "Tubes",
        "label": "Tubes",
        "category": "HANDLING UNIT"
    },
    {
        "value": "Units",
        "label": "Units",
        "category": "HANDLING UNIT"
    },
    {
        "value": "Vats",
        "label": "Vats",
        "category": "HANDLING UNIT"
    },
    {
        "value": "Bags",
        "label": "Bags",
        "category": "PACKAGING UNIT"
    },
    {
        "value": "Bales",
        "label": "Bales",
        "category": "PACKAGING UNIT"
    },
    {
        "value": "Barrels",
        "label": "Barrels",
        "category": "PACKAGING UNIT"
    },
    {
        "value": "Baskets",
        "label": "Baskets",
        "category": "PACKAGING UNIT"
    },
    {
        "value": "Bins",
        "label": "Bins",
        "category": "PACKAGING UNIT"
    },
    {
        "value": "Bottles",
        "label": "Bottles",
        "category": "PACKAGING UNIT"
    },
    {
        "value": "Boxes",
        "label": "Boxes",
        "category": "PACKAGING UNIT"
    },
    {
        "value": "Bundles",
        "label": "Bundles",
        "category": "PACKAGING UNIT"
    },
    {
        "value": "Canisters",
        "label": "Canisters",
        "category": "PACKAGING UNIT"
    },
    {
        "value": "Carboys",
        "label": "Carboys",
        "category": "PACKAGING UNIT"
    },
    {
        "value": "Cartons",
        "label": "Cartons",
        "category": "PACKAGING UNIT"
    },
    {
        "value": "Cases",
        "label": "Cases",
        "category": "PACKAGING UNIT"
    },
    {
        "value": "Coils",
        "label": "Coils",
        "category": "PACKAGING UNIT"
    },
    {
        "value": "Containers",
        "label": "Containers",
        "category": "PACKAGING UNIT"
    },
    {
        "value": "Crates",
        "label": "Crates",
        "category": "PACKAGING UNIT"
    },
    {
        "value": "Cylinders",
        "label": "Cylinders",
        "category": "PACKAGING UNIT"
    },
    {
        "value": "Drums",
        "label": "Drums",
        "category": "PACKAGING UNIT"
    },
    {
        "value": "Kegs",
        "label": "Kegs",
        "category": "PACKAGING UNIT"
    },
    {
        "value": "Other",
        "label": "Other",
        "category": "PACKAGING UNIT"
    },
    {
        "value": "Packages",
        "label": "Packages",
        "category": "PACKAGING UNIT"
    },
    {
        "value": "Pallets",
        "label": "Pallets",
        "category": "PACKAGING UNIT"
    },
    {
        "value": "Pieces",
        "label": "Pieces",
        "category": "PACKAGING UNIT"
    },
    {
        "value": "Reels",
        "label": "Reels",
        "category": "PACKAGING UNIT"
    },
    {
        "value": "Rolls",
        "label": "Rolls",
        "category": "PACKAGING UNIT"
    },
    {
        "value": "Skids",
        "label": "Skids",
        "category": "PACKAGING UNIT"
    },
    {
        "value": "Spools",
        "label": "Spools",
        "category": "PACKAGING UNIT"
    },
    {
        "value": "Tanks",
        "label": "Tanks",
        "category": "PACKAGING UNIT"
    },
    {
        "value": "Trays",
        "label": "Trays",
        "category": "PACKAGING UNIT"
    },
    {
        "value": "Truckloads",
        "label": "Truckloads",
        "category": "PACKAGING UNIT"
    },
    {
        "value": "Tubes",
        "label": "Tubes",
        "category": "PACKAGING UNIT"
    },
    {
        "value": "Units",
        "label": "Units",
        "category": "PACKAGING UNIT"
    },
    {
        "value": "Vats",
        "label": "Vats",
        "category": "PACKAGING UNIT"
    },
    {
        "value": "lbs",
        "label": "lbs",
        "category": "WEIGHT UNIT"
    },
    {
        "value": "kg",
        "label": "kg",
        "category": "WEIGHT UNIT"
    },
    {
        "value": "Cubic Feet",
        "label": "Cubic Feet",
        "category": "VOLUME UNIT"
    },
    {
        "value": "Cubic Inches",
        "label": "Cubic Inches",
        "category": "VOLUME UNIT"
    },
    {
        "value": "Cubic Meters",
        "label": "Cubic Meters",
        "category": "VOLUME UNIT"
    },
    {
        "value": "Gallons",
        "label": "Gallons",
        "category": "VOLUME UNIT"
    },
    {
        "value": "Liters",
        "label": "Liters",
        "category": "VOLUME UNIT"
    },
    {
        "value": "in",
        "label": "in",
        "category": "DIMENSION UNIT"
    },
    {
        "value": "cm",
        "label": "cm",
        "category": "DIMENSION UNIT"
    },
    {
        "value": "ft",
        "label": "ft",
        "category": "DIMENSION UNIT"
    },
    {
        "value": "m",
        "label": "m",
        "category": "DIMENSION UNIT"
    },
    {
        "value": "50",
        "label": "50",
        "category": "NMFC CLASS"
    },
    {
        "value": "55",
        "label": "55",
        "category": "NMFC CLASS"
    },
    {
        "value": "60",
        "label": "60",
        "category": "NMFC CLASS"
    },
    {
        "value": "65",
        "label": "65",
        "category": "NMFC CLASS"
    },
    {
        "value": "70",
        "label": "70",
        "category": "NMFC CLASS"
    },
    {
        "value": "77.5",
        "label": "77.5",
        "category": "NMFC CLASS"
    },
    {
        "value": "85",
        "label": "85",
        "category": "NMFC CLASS"
    },
    {
        "value": "92.5",
        "label": "92.5",
        "category": "NMFC CLASS"
    },
    {
        "value": "100",
        "label": "100",
        "category": "NMFC CLASS"
    },
    {
        "value": "110",
        "label": "110",
        "category": "NMFC CLASS"
    },
    {
        "value": "125",
        "label": "125",
        "category": "NMFC CLASS"
    },
    {
        "value": "150",
        "label": "150",
        "category": "NMFC CLASS"
    },
    {
        "value": "175",
        "label": "175",
        "category": "NMFC CLASS"
    },
    {
        "value": "200",
        "label": "200",
        "category": "NMFC CLASS"
    },
    {
        "value": "250",
        "label": "250",
        "category": "NMFC CLASS"
    },
    {
        "value": "300",
        "label": "300",
        "category": "NMFC CLASS"
    },
    {
        "value": "400",
        "label": "400",
        "category": "NMFC CLASS"
    },
    {
        "value": "500",
        "label": "500",
        "category": "NMFC CLASS"
    },
    {
        "value": "1.1",
        "label": "1.1",
        "category": "HAZMAT CLASS"
    },
    {
        "value": "1.2",
        "label": "1.2",
        "category": "HAZMAT CLASS"
    },
    {
        "value": "1.3",
        "label": "1.3",
        "category": "HAZMAT CLASS"
    },
    {
        "value": "1.4",
        "label": "1.4",
        "category": "HAZMAT CLASS"
    },
    {
        "value": "1.5",
        "label": "1.5",
        "category": "HAZMAT CLASS"
    },
    {
        "value": "1.6",
        "label": "1.6",
        "category": "HAZMAT CLASS"
    },
    {
        "value": "2.1",
        "label": "2.1",
        "category": "HAZMAT CLASS"
    },
    {
        "value": "2.2",
        "label": "2.2",
        "category": "HAZMAT CLASS"
    },
    {
        "value": "2.3",
        "label": "2.3",
        "category": "HAZMAT CLASS"
    },
    {
        "value": "3",
        "label": "3",
        "category": "HAZMAT CLASS"
    },
    {
        "value": "4.1",
        "label": "4.1",
        "category": "HAZMAT CLASS"
    },
    {
        "value": "4.2",
        "label": "4.2",
        "category": "HAZMAT CLASS"
    },
    {
        "value": "4.3",
        "label": "4.3",
        "category": "HAZMAT CLASS"
    },
    {
        "value": "5.1",
        "label": "5.1",
        "category": "HAZMAT CLASS"
    },
    {
        "value": "5.2",
        "label": "5.2",
        "category": "HAZMAT CLASS"
    },
    {
        "value": "6.1",
        "label": "6.1",
        "category": "HAZMAT CLASS"
    },
    {
        "value": "6.2",
        "label": "6.2",
        "category": "HAZMAT CLASS"
    },
    {
        "value": "7",
        "label": "7",
        "category": "HAZMAT CLASS"
    },
    {
        "value": "8",
        "label": "8",
        "category": "HAZMAT CLASS"
    },
    {
        "value": "9",
        "label": "9",
        "category": "HAZMAT CLASS"
    },
    {
        "value": "I",
        "label": "I",
        "category": "HAZMAT PACKING GROUP"
    },
    {
        "value": "II",
        "label": "II",
        "category": "HAZMAT PACKING GROUP"
    },
    {
        "value": "III",
        "label": "III",
        "category": "HAZMAT PACKING GROUP"
    }
]

TMSRateIQService

This service allows users to:

  • Get RateIQ data for a given lane and mode. A summary rate row is always first in the list, followed by the weighted contributions for each matching row from the Rate Calculation.

  • Data sources include internal data, DAT, Truckstop, and FreightWaves.

Example Request

HTTP Type: POST

URL: [salesforce domain]/services/apexrest/rtms/tmsrateiqservice

Example URL: https://partial1-revemc1.cs44.force.com/services/apexrest/rtms/tmsrateiqservice

{ "input" :
	{
		"FromAddress" : "8216 Miller Road",
		"FromCity" : "Houston",
		"FromState" : "TX",
		"FromPostalCode" : "77049",
		"FromCountry" : "US",
		"FromLatitude" : 29.7604,
		"FromLongitude" : -95.3698,
		"ToAddress" : "6880 Parkway Drive",
		"ToCity" : "Brookfield",
		"ToState" : "OH",
		"ToPostalCode" : "44403",
		"ToCountry" : "US",
		"ToLatitude" : 41.2341,
		"ToLongitude" : -80.5661,
		"CurrencyCode" : "USD",
		"PerMileRates" : true,
		"ModeId" : "a0j41000001JunjAAC"
	}
}

Example Response

{
    "ResultsReturned": true,
    "ResultsCount": 3,
    "Results": [
        {
            "TotalRate": 1.680,
            "TotalAmount": 2229.400,
            "Rule": null,
            "m_imageMap": {
                "Truckstop": "InternetTruckstop_Logo",
                "DAT": "DAT_Logo",
                "TMS": "Revenova_Logo"
            },
            "Lane": null,
            "IsSummary": true,
            "Image": null,
            "FuelRate": null,
            "FuelAmount": null,
            "FreightRate": null,
            "FreightAmount": null,
            "DistanceUnits": "Miles",
            "CurrencyCode": "USD",
            "Count": 295,
            "CompanyCount": null,
            "AverageMiles": 1327.0
        },
        {
            "TotalRate": 1.83,
            "TotalAmount": 2451.11,
            "Rule": {
                "attributes": {
                    "type": "rtms__RateCalculationRule__c",
                    "url": "/services/data/v48.0/sobjects/rtms__RateCalculationRule__c/a1P2M000003DlDzUAK"
                },
                "Id": "a1P2M000003DlDzUAK",
                "Name": "Rule-2",
                "rtms__Data_Source__c": "Truckstop",
                "rtms__Distance_Units__c": "Miles",
                "rtms__Equipment_Category__c": "Van",
                "rtms__Lookback_Days__c": "30",
                "rtms__Paid_Posted__c": "Paid",
                "rtms__Rate_Calculation__c": "a1Q2M000005jsC8UAI",
                "rtms__Rate_Type__c": "Spot",
                "rtms__Search_Radius__c": "100",
                "rtms__Threshold__c": 1,
                "rtms__Weight__c": 25.00
            },
            "m_imageMap": {
                "Truckstop": "InternetTruckstop_Logo",
                "DAT": "DAT_Logo",
                "TMS": "Revenova_Logo"
            },
            "Lane": "",
            "IsSummary": false,
            "Image": "InternetTruckstop_Logo",
            "FuelRate": null,
            "FuelAmount": null,
            "FreightRate": null,
            "FreightAmount": null,
            "DistanceUnits": "Miles",
            "CurrencyCode": "USD",
            "Count": 36,
            "CompanyCount": null,
            "AverageMiles": 1339
        },
        {
            "TotalRate": 1.53,
            "TotalAmount": 2007.69,
            "Rule": {
                "attributes": {
                    "type": "rtms__RateCalculationRule__c",
                    "url": "/services/data/v48.0/sobjects/rtms__RateCalculationRule__c/a1P2M000003DlE0UAK"
                },
                "Id": "a1P2M000003DlE0UAK",
                "Name": "Rule-3",
                "rtms__Data_Source__c": "Truckstop",
                "rtms__Distance_Units__c": "Miles",
                "rtms__Equipment_Category__c": "Van",
                "rtms__Lookback_Days__c": "30",
                "rtms__Paid_Posted__c": "Posted",
                "rtms__Rate_Calculation__c": "a1Q2M000005jsC8UAI",
                "rtms__Rate_Type__c": "Spot",
                "rtms__Search_Radius__c": "100",
                "rtms__Threshold__c": 1,
                "rtms__Weight__c": 25.00
            },
            "m_imageMap": {
                "Truckstop": "InternetTruckstop_Logo",
                "DAT": "DAT_Logo",
                "TMS": "Revenova_Logo"
            },
            "Lane": "",
            "IsSummary": false,
            "Image": "InternetTruckstop_Logo",
            "FuelRate": null,
            "FuelAmount": null,
            "FreightRate": null,
            "FreightAmount": null,
            "DistanceUnits": "Miles",
            "CurrencyCode": "USD",
            "Count": 259,
            "CompanyCount": null,
            "AverageMiles": 1315
        }]}

TMSRateIQRateSourceService

The TMSRateIQRateSourceService service:

  • Bulk imports RateIQ data from one or more external sources.

  • Bulk deletes this data.

Data delete requests reference the ship date of the record. (YYYY-MM-DD)

Example Data Import Request

HTTP Type: POST

URL: [salesforce domain]/services/apexrest/rtms/tmsrateiqratesourceservice

Example URL: https://partial1-revemc1.cs44.force.com/services/apexrest/rtms/tmsrateiqratesourceservice

{
    "inputData" : 
    [
        {
            "dataSource" : "Custom Source",		// Must be valid picklist value
            "mode" : "Truckload",			// Must be valid mode name
            "shipDate" : "2023-03-15",		// YYYY-MM-DD
            "equipmentCategory" : "Van",		// Van, Flatbed, Reefer, Specialized, Ocean/Intermodal
            "originCity" : "Chicago",
            "originState" : "IL",
            "originPostalCode" : "60603",
            "originCountry" : "US",
            "destinationCity" : "Boston",
            "destinationState" : "MA",
            "destinationPostalCode" : "02215",
            "destinationCountry" : "US",
            "freightCharge" : 1000,
            "fuelSurcharge" : 100,
            "freightPlusFuel" : 1100,
            "currencyCode" : "USD",
            "distance" : 1000,
            "distanceUnits" : "Miles"			// Miles or Kilometers
        },
        {
            "dataSource" : "Custom Source",
            "mode" : "Truckload",
            "shipDate" : "2023-03-16",
            "equipmentCategory" : "Van",
            "originCity" : "Chicago",
            "originState" : "IL",
            "originPostalCode" : "60603",
            "originCountry" : "US",
            "destinationCity" : "Boston",
            "destinationState" : "MA",
            "destinationPostalCode" : "02215",
            "destinationCountry" : "US",
            "freightCharge" : 1100,
            "fuelSurcharge" : 100,
            "freightPlusFuel" : 1200,
            "currencyCode" : "USD",
            "distance" : 1100,
            "distanceUnits" : "Miles"
        },
        {
            "dataSource" : "Custom Source",
            "mode" : "Truckload",
            "shipDate" : "2023-03-17",
            "equipmentCategory" : "Van",
            "originCity" : "Chicago",
            "originState" : "IL",
            "originPostalCode" : "60603",
            "originCountry" : "US",
            "destinationCity" : "Boston",
            "destinationState" : "MA",
            "destinationPostalCode" : "02215",
            "destinationCountry" : "US",
            "freightCharge" : 1100,
            "fuelSurcharge" : 100,
            "freightPlusFuel" : 1200,
            "currencyCode" : "USD",
            "distance" : 1100,
            "distanceUnits" : "Miles"
        }
    ]
}

Example Data Import Response

{
    "isOK" : true
	"errorMessage" : null
}

Example Data Deletion Request

HTTP Type: DELETE

URL: [salesforce domain]/services/apexrest/rtms/tmsrateiqratesourceservice?dataSource=Custom%20Source&fromDate=2023-01-04&toDate=2023-04-04

Example URL: https://partial1-revemc1.cs44.force.com/services/apexrest/rtms/tmsrateiqratesourceservice?dataSource=Custom%20Source&fromDate=2023-01-04&toDate=2023-04-04

Example Data Deletion Response

{
    "isOK" : true
	"errorMessage" : null
}

TMSTruckPostingService

This service allows users to:

  • Insert and update one or more truck postings into the TMS.

Example Request

HTTP Type: POST

URL: [salesforce domain]/services/apexrest/rtms/tmstruckpostingservice

Example URL: https://partial1-revemc1.cs44.force.com/services/apexrest/rtms/tmstruckpostingservice

{ "pList" : [{
"carrierCountryCode" : "US",
"carrierName" : "Test Carrier",
"carrierStateProvinceCode" : "IL",
"comments" : "Hello Newman!",
"contactEmail" : "support@revenova.com",
"contactName" : "Dave Test",
"contactPhone" : "312-333-8888",
"dataSource" : "Tobor",
"dateAvailable" : "2018-04-19",
"dayOfWeekAvailable" : 1,
"datetimeCreated" : "2018-04-19T14:00:58.000Z",
"deliveryRangeInMiles" : 100,
"destinationCity" : "Chicago",
"destinationCountryCode" : "US",
"destinationLatitude" : 42.00000,
"destinationLongitude" : -87.0000,
"destinationStateProvinceCode" : "IL",
"dotNumber" : "1234567",
"equipmentDescription" : "53 Foot Dry Van",
"equipmentOptions" : "Tarps",
"fullTruckload" : true,
"mcNumber" : "MC92929",
"minimumMiles" : 100,
"numberAvailable" : 2,
"originCity" : "San Jose",
"originCountryCode" : "US",
"originLatitude" : 41.0000,
"originLongitude" : -88.000000,
"originStateProvinceCode" : "CA",
"pickupRangeInMiles" : 100,
"truckPostingId" : null 
}]}

Example Response

{
	[
	"a1Q2M000005jsC8UAI",
    "a1Q2M000005jsC8UAM"
]
}