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
- The Salesforce user accounts that invoke the API should be associated with API-only, Partner Community profiles with API Enabled.
- Make sure all Sharing Settings are appropriate for each API user/profile.
- Set the Login IP Ranges for each API profile to prevent unauthorized endpoints from accessing the API.
- Each web service request from a client UI is counted against your org limits for inbound API calls.
- Change the password for all API users on a periodic basis, proactively informing API users ahead of time.
Web Service Notes -- Client TMS/UI
- Authentication is performed via a SOAP-based login service.
- Do not hard code the credentials or URLs provided to you for access to the service as they can change.
- All subsequent calls are REST/JSON-based with a session token returned from the login service.
- If a load is updated, all related quotes are deleted, and the load will need to be requoted.
- You cannot update a load that has been tendered (via the API).
- You cannot re-tender a tendered load (via the API).
- You cannot delete a load (via the API).
- The primary key data type for all TMS tables is an 18-character alphanumeric string field. For example, the “loadId” element.
- Customer-specific credit limits (on you) are enforced and can prevent load tendering.
- Please provide the Revenova TMS administrator with the IP address (range) of your web service client.
Note that the TMSRateIQService must be accessed by an internal user ID who has credentials for the load boards used in the RateIQ calculation definition.
Prerequisites
You will need the following information from the Revenova TMS administrator:
- 15-character Org Id
- Salesforce domain URL for the Org
- Login username
- Login password
Authentication
You must authenticate before using any of the REST web services. 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, you will receive an error message like this:
[
{
"message": "Session expired or invalid",
"errorCode": "INVALID_SESSION_ID"
}
]TMSLoadService
This service allows you to:
- Get the details of an existing load.
- Create a new LTL load.
- Update an existing LTL load.
Note that 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
Note that 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) |
-- | 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": "Dave",
"email": "dcraigmile@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) 339-1984",
"lastName": "Cardinal H",
"firstName": "Dave",
"email": "dcraigmile@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 you 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 you to:
- Tender an LTL load based on a carrier quote returned from the API 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 you 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
You may pass a comma-delimited list of load Ids if you want 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 you to:
- Get valid values for enumeration fields used to create loads.
The enumeration fields you must use this service for 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 you 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
}]}TMSTruckPostingService
This service allows you 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”
]
}