Third Party Applications Menu (Web API Communications)

 

We allow a simple interface with third party vendors to allow MoversSuite users to pass the current order they are working on to the third party’s web api using the following setup information in MoversSuite.  This document will explain how MoversSuite uses the following information to pass the current MoversSuite order data into the third party’s web api.

 

Graphical user interface, table

Description automatically generated

Figure 13: Third Party Application Setup

 

For more information about the above screen, please use this link to our online documentation: Third Party Applications Menu Setup.

 

Authentication

 

When the user clicks the specified web menu item in our MoversSuite Third Party Applications Menu, we first make a call to the third-party vendor’s Authorization URL.  This will be POST method call and the payload Content-Type will be in “application/x-www-form-urlencoded” and will look like this:

grant_type=client_credentials&client_id=CLIENT_ID&client_secret=CLIENT_SECRET

where the CLIENT_ID and CLIENT_SECRET are some fixed values that will grant us an OAUTH token that will give us access for the next request.  We expect a response to be a C# (.NET) System.IdentityModel.Tokens.Jwt.JwtSecurityToken which should be a 'JSON Web Token' (JWT) in JWS or JWE Compact Serialization Format.

 

Calling Your API Service

 

Once we have an OAUTH token, well then make a POST call to your application’s URL.  We will supply the OAUTH token via the Authorization header as a Bearer token (meaning that the value of the Authorization header will be the word “Bearer”, followed by a space followed by the OAUTH token.  The payload will be the complete order information, as it exists at this moment in time, in JSON format.  An example is located at the end of this document, in the section titled “MoversSuite JSON Order Payload that is sent to your API Web Service URL”.

 

When we call your web service, we do not expect, nor do we process, any response from you.  See the next section if you need to send us data back to update our order.

 

Is it possible to update the order on the MoversSuite Side?

 

We do offer a feature we call VendorConnect, that permits third party vendors to connect with one or more MoversSuite systems via a web API endpoint that we expose.  With this endpoint, we give you one set of client id/client secret credentials, and you can use them to access any MoverSuite system that has agreed to permit you to access their data.  Each MoversSuite system in turn will give you what we call a CONNECTION IDENTIFIER that identifies their branch(es) and you then use your credentials and the appropriate CONNECTION IDENTIFIER and we’ll know which MoverSuite system to send your message to for processing your changes to the MoversSuite order.  Note that MoversSuite systems would give you one CONNECTION IDENTIFIER for each one of their branches. EWS ensures that all CONNECTION IDENTIFIERs are unique across all MoversSuite systems. The information on this feature can be found in our online help here: VendorConnect and VendorConnect Developer Information.

The payload you could send to us would look like the payload we send to you when we pass an order into your API service (see below).  And you only need to send to us the OrderNumber object (so we know what order to update) and just those fields you need to change.

 

 

MoversSuite JSON Order Payload that is sent to your API Web Service URL

 

You can refer to our online documentation for this object at this url if you need explanations about this object: Pass Thru Connector Upload Format.

 

Here is a sample order with raw JSON:


{

  "Addresses": [

    {

      "Address1": "123 Main St.",

      "City": "Las Vegas",

      "Country": "USA",

      "CountryName": "United States of America",

      "Postal": "89179",

      "State": "NV",

      "StateName": "Nevada",

      "Address2": "Apt 123",

      "Address3": "Bldg 4",

      "Type": "ORIG"

    },

    {

      "Address1": "857 Center St.",

      "City": "Atlanta",

      "Country": "USA",

      "CountryName": "United States of America",

      "Postal": "30313",

      "State": "GA",

      "StateName": "Georgia",

      "Type": "DEST"

    }

  ],

  "Agents": [

    {

      "AgentID": "0207",

      "AgentName": "Test 0207",

      "ContactName": "Larry Smith",

      "IsSisterAgent": true,

      "Type": "BOOK",

      "VanLineID": "A",

      "VanLineName": "Atlas Van Lines"

    },

    {

      "AgentID": "0207",

      "AgentName": "Test 0207",

      "ContactName": "Glen Smith",

      "IsSisterAgent": true,

      "Type": "ORIG",

      "VanLineID": "A",

      "VanLineName": "Atlas Van Lines"

    },

    {

      "AgentID": "0218",

      "AgentName": "Test 0218",

      "ContactName": "Stan Smith",

      "IsSisterAgent": true,

      "Type": "DEST",

      "VanLineID": "A",

      "VanLineName": "Atlas Van Lines"

    },

    {

      "AgentID": "0207",

      "AgentName": "Test 0207",

      "IsSisterAgent": true,

      "Type": "BRAN",

      "VanLineID": "A",

      "VanLineName": "Atlas Van Lines"

    }

  ],

  "Automobile": {

    "WithShipment": false

  },

  "ChargeEstimate": "16253.15",

  "CodCollectionAmount": "750.25",

  "Commodity": "RSG",

  "Consigns": [

    {

      "Description": "Dest Consignee",

      "Name": "Rob Smith",

      "Phone": {

        "Area": "302",

        "Country": "USA",

        "Ext": "89",

        "Local": "555-8822",

        "PhoneCountryCode": 1

      },

      "Type": "DEST"

    },

    {

      "Description": "Orig Consignor",

      "Name": "Carol Smith",

      "Phone": {

        "Area": "702",

        "Country": "USA",

        "Ext": "23",

        "Local": "555-7711",

        "PhoneCountryCode": 1

      },

      "Type": "ORIG"

    }

  ],

  "CreditAuth": "Auth#01234567890000000",

  "CustomerAgreementNumber": "1000",

  "CustomerSubAgreementNbr": "TR",

  "DateQueued": "2024-01-12T15:38:15.442Z",

  "DelvEarly": "2024-01-29",

  "DelvEarlyTime": "10:00:00",

  "DelvLate": "2024-02-01",

  "DelvLateTime": "17:00:00",

  "DelvPref": "2024-01-30",

  "EMail": "jdraper@fake.com",

  "EstimatedWeight": 12000,

  "ExtraStops": [

    {

      "Address1": "123 Industrial Blvd",

      "City": "Henderson",

      "Country": "USA",

      "CountryName": "United States of America",

      "County": "CLARK",

      "Postal": "89011",

      "State": "NV",

      "Company": "Smith's Mini-Storage",

      "Contact": "Larry Smith Jr",

      "EndDate": "2024-01-22",

      "EndTime": "15:45:00",

      "Phones": [

        {

          "Area": "702",

          "Country": "USA",

          "Local": "555-3441",

          "PhoneCountryCode": 1,

          "Type": "CONTACT"

        },

        {

          "Area": "702",

          "Country": "USA",

          "Local": "555-3301",

          "PhoneCountryCode": 1,

          "Type": "HOME"

        },

        {

          "Area": "702",

          "Country": "USA",

          "Ext": "61",

          "Local": "555-3540",

          "PhoneCountryCode": 1,

          "Type": "WORK"

        }

      ],

      "StartDate": "2024-01-22",

      "StartTime": "08:00:00",

      "StopNumber": 1,

      "Type": "PICK"

    },

    {

      "Address1": "123 Circle Drive",

      "City": "Mobile",

      "Country": "USA",

      "CountryName": "United States of America",

      "County": "MASON",

      "Postal": "36606",

      "State": "AL",

      "Company": null,

      "Contact": "Mary Smith",

      "EndDate": "2024-01-31",

      "EndTime": "15:45:00",

      "Phones": [

        {

          "Area": "302",

          "Country": "USA",

          "Local": "555-8491",

          "PhoneCountryCode": 1,

          "Type": "CONTACT"

        },

        {

          "Area": "302",

          "Country": "USA",

          "Local": "555-5501",

          "PhoneCountryCode": 1,

          "Type": "HOME"

        },

        {

          "Area": "302",

          "Country": "USA",

          "Ext": "25",

          "Local": "555-5685",

          "PhoneCountryCode": 1,

          "Type": "WORK"

        }

      ],

      "StartDate": "2024-01-31",

      "StartTime": "08:00:00",

      "StopNumber": 1,

      "Type": "DEL"

    }

  ],

  "FirstName": "Bob",

  "InvoiceRequirementType": "Required",

  "IsFullOrderDownload": true,

  "IsFullOrderDownloadSupported": true,

  "LastName": "Smith",

  "Linehaul": 8500.0,

  "LoadEarly": "2024-01-20",

  "LoadEarlyTime": "08:00:00",

  "LoadLate": "2024-01-23",

  "LoadLateTime": "15:00:00",

  "LoadPref": "2024-01-21",

  "Miles": "2380",

  "NationalAccount": {

    "AccountAddress1": "1 TRADE CENTER DRIVE",

    "AccountCity": "Los Angeles",

    "AccountContact": "Mr. Joe Smith",

    "AccountCountryCode": "USA",

    "AccountName": "ACME INC.",

    "AccountPostal": "90001",

    "AccountState": "CA"

  },

  "NationalAccountNumber": "0262800001",

  "OrderNumber": {

    "MssOrderID": 181237,

    "OrderSeg": "ABC123",

    "VanLineID": "A",

    "XmlSystemDataTypeMapName": "MoversSpecialtyServices"

  },

  "OrderStatus": "Booked",

  "PackEarly": "2024-01-17",

  "PackEarlyTime": "09:00:00",

  "PackLate": "2024-01-19",

  "PackLateTime": "11:00:00",

  "PackPref": "2024-01-18",

  "PayType": "A",

  "PayTypeDescription": "Account",

  "PaymentTypeName": "A",

  "PeakSeasonIndicator": "0",

  "Phones": [

    {

      "Area": "702",

      "Country": "USA",

      "Local": "555-1111",

      "PhoneCountryCode": 1,

      "Ranking": 2,

      "Type": "ORIGHOME"

    },

    {

      "Area": "702",

      "Country": "USA",

      "Ext": "11",

      "Local": "555-2222",

      "PhoneCountryCode": 1,

      "Ranking": 1,

      "Type": "ORIGWORK"

    },

    {

      "Area": "302",

      "Country": "USA",

      "Local": "555-8888",

      "PhoneCountryCode": 1,

      "Ranking": 4,

      "Type": "DESTHOME"

    },

    {

      "Area": "302",

      "Country": "USA",

      "Ext": "99",

      "Local": "555-9999",

      "PhoneCountryCode": 1,

      "Ranking": 3,

      "Type": "DESTWORK"

    }

  ],

  "PoNumber": "PO#012345678900AAA",

  "ShipmentType": "N",

  "ShipperEmailAddresses": [

    {

      "EmailAddress": "bsmith@fake.com",

      "EmailLabel": "Primary",

      "EmailType": "Primary",

      "Ranking": 1

    }

  ],

  "SitInfos": [

    {

      "AgentId": "218",

      "Authorization": "AUTH#01234",

      "DateIntoSitEstimated": "2024-01-27",

      "DateOutSitEstimated": "2024-03-27",

      "Days": 60,

      "Type": "DEST"

    }

  ],

  "Source": "MMS",

  "UtcOffset": -480,

  "Valuation": {

    "Amount": 57500.0,

    "PerPoundAmount": 5.0,

    "ValuationName": "Option C - 500 Deductible VPERLB",

    "VanLineCode": "3:VPERLB"

  },

  "Weight": 11500

}