The Moving Portal API documentationThe Moving Portal API documentation
Key concepts
API concepts
Services
Key concepts
API concepts
Services
  • Key concepts
  • API concepts
  • GDPR
  • Development
  • Releases
  • Services
  • Authentication
  • Instruction
  • Instruction search
  • Notes
  • Data
  • Referral
  • Quote
  • Quotes search
  • Supplier operations
  • Notifications
  • Testing
  • Email integration
  • Objects
  • Examples
    • Introducer
      • Authentication
      • Data
      • Quote
      • Quotes search
      • Referral
      • Instruction
      • Instructions search
      • Instruction notification
      • Notes
    • Supplier
      • Authentication
      • Data
      • Instruction
      • Instructions search
      • Instruction notification
      • Notes
      • Supplier operations

Quote service

Introducer
  • Get quote
  • Get quote using introducer reference
  • Create quote
    • Quote validation
  • Refer quote
  • Update property details
  • Email quote
  • Change fee
  • Update Introducer References
  • Remove quote
  • Update Owner
  • Example quote object

This service contains the following methods:

GET /quote/{tmpReference} Introducer
GET /quote/introducer/{reference} Introducer
POST /quote Introducer
PUT /quote/{tmpReference}/refer Introducer
PATCH /quote/{tmpReference}/property Introducer
PUT /quote/{tmpReference}/email Introducer
PATCH /quote/{tmpReference}/fees Introducer
PUT /quote/{tmpReference}/introducerreferences Introducer
DELETE /quote/{tmpReference} Introducer

Modifying customers

It is not possible to modify the customers listed on the quote. If you do need to change a customer or add/remove a customer you should create a new quote.

Get quote

GET /quote/{tmpReference}

This method will use the TMP reference to retrieve a quote.

Object: Quote

A Quote is made up of the following properties

PropertyDescription
TMPReferenceOur reference for the quote.
DescriptionA description of the quote.
CreatedTimestampWhen the quote was created.
ResultsA list of results for the quote.
IsVisibleToCustomersWhether the quote is visible to the customer(s).
PrimaryCustomerWho the primary customer is. See Key concepts.
CustomersWho the customers are.
PropertyDetails of the property.
OtherInformationFurther information about the case.
AllowedOperationsA list of operations that are allowed to happen by the current user on the Quote.
ConfigurationConfiguration to take account of when using this Instruction. See Key concepts.
Other information

The following information may be available

NameDescription
INTRODUCERCUSTOMERREFERENCEThe code presented to the customer by the introducer. See Key concepts
INTRODUCERINTEGRATIONREFERENCEThe code used for integration by the introducer. See Key concepts
REFERRERCOMPANYThe company name of the referrer. See Introducer referrer
REFERRERCONTACTThe contact name of the referrer. See Introducer referrer
OWNERFor Introducers - the name of the owner of the quote (if there is one). See Introducer owner
OWNEREMAILADDRESSFor Introducers - the email address name of the owner of the quote (if there is one). See Introducer owner
OWNERISINTEGRATIONSERVICEACCOUNTFor Introducers - if the owner is the integration service account. See Introducer owner

Allowed operations

The following codes may be returned.

  • EDITPROPERTY - Allows the property to be changed.
  • REMOVEALLRESULTS - Marks all the results as removed.

Object: Quote result

When a quote is generated it will return a set of results.

PropertyDescription
SequenceIndex starting for 1 of the results.
QuoteResultStatusCodeStatus of the quote - set to REQUESTED, SAVED, REFERRED, REMOVED, EXPIRED.
ProductCodeThe product for this result.
IsPriceOnApplicationWhen a quote cannot be generated (e.g. a specialist report) you can request a quote.
FeeA dictionary containing fee information with entries for TOTALFEEINCLVAT and YOURFEEINCLVAT.
AllowedOperationsA list of operations that are allowed to happen by the current user on this result.
ExpiryTimestampWhen the quote will expire.

One result currently returned

We plan to return multiple results. The first result should be the primary result for what is requested. Other results could be for the same product but with other conditions. Alternatively, we may return results for other products, e.g. if you ask for a Level 2 Survey, we might return the result for Level 2 Survey & Valuation as well.

You should work out how you might want to show the results - or whether just to show the primary result. If you subsequently email the results to the customer they will be able to see all the results, unless you remove the other results.

When this functionality is implemented this object is likely to be extended.

Allowed operations

The following codes may be returned to allow an operation on this result:

  • REQUEST - if the quote comes back as Price on Application.
  • REFER - this will send the quote as a referral to us. Once done you cannot modify the details (e.g. fees or property).
  • REMOVERESULT - the result will be removed. It can still be searched for.
  • ADJUSTFEE - you can modify your fee, which will change the total fee.
  • EMAIL - this will email the quote to the customer with the selected result, however, all results will be available to the customer. If you only wish to email this result you need to remove the other results first.

Email not always available

The ability to EMAIL will be dependant on configuration, i.e. whether the customers are able to logon to the TMP portals and view quotes and instructions.

Adjust fee should always be available via web service

When using the interactive portal, we can configure your account to disallow the ability to modify your fee (ADJUSTFEE operation). However, using these web services it is possible to modify the fee (and specify the fee when creating the quote). It is up to the integrator to create their own controls on this.

Object: Customer

These are the customers for the Instruction. Please review details about the Primary customer when the customers listed in this object are the clients of the primary customer. This is typically when the Primary customer is a lender who has instructed a survey for their customers.

PropertyDescription
EmailAddressThe email address of the customer. This will not always be populated.
TitleThe title of the customer, e.g. Mr, Mrs, Miss etc
FirstNameThe first name of the customer
LastNameThe last name of the customer
TelephoneNumberThe telephone number of the customer
ReceiveSMSWhether the customer may receive SMS notifications.
Note that even if this is set, the customer may not receive SMS messages

At least one customer should have an email address.

Object: QuoteProperty

The QuoteProperty object returned here contains both the codes used when creating a quote/referral (by Introducers) and their descriptions. It also contains the elements of addresses and access details as well their descriptions. This allows them to be displayed without you needing to write code.

PropertyDescription
PropertyValueOrPurchasePriceThe property value or purchase price.
PropertyValueTierCodeThe code used for the property value tier, e.g. 650KTO700K
PropertyValueTierDescriptionA description of the property value tier, e.g. to £700,000
PropertyTypeCodeThe code used for the type of property, e.g. FLAT
PropertyTypeDescriptionThe description for the type of property, e.g. Flat
PropertyAgeCodeA code used for the age of the property, e.g. TENTOFIFTYYEARS
PropertyAgeDescriptionThe description for the type of property, e.g. 10 to 50 years
PropertyAddressDescriptionA description of the property address
PropertyAddressThe property address in it's elements
CorrespondenceAddressDescriptionA description of the correspondence address
CorrespondenceAddressThe correspondence address in it's elements
AccessDetailsDescriptionA description of the Access Details
AccessDetailsThe access details in it's elements

Get quote using introducer reference

GET /quote/introducer/{reference}

This method will use the Introducer references to retrieve the Quote. Some instructions may not have an Introducer reference. However, if they have either a IntroducerIntegrationReference or IntroducerCustomerReference this can be specified here.

See Key concepts for more information.

Be aware that the introducer references are removed from quote once it has been instructed.

Create quote

POST /quote

There are a few ways of getting a referral to us. It is possible to create a direct referral using the Referral service. This requires generating your own fees - which should match the official price structure.

The alternative is to generate a quote and subsequently refer it to us. The quote will be priced using the official price lists and the quote will contain one or more results. (e.g. the quote could also contain results for other products).

A typical payload for a new quote is

{
  "cases": [
    {
      "productCode": "RICSL2SURVEY",
      "yourFeeInclVAT": 0
    }
  ],
  "propertyValueOrPurchasePrice": 280000,
  "propertyValueTierCode": "250KTO300K",
  "propertyTypeCode": "TERRACED",
  "propertyAgeCode": "LESSTHANTENYEARS",
  "yearBuilt": null,
  "propertyAddress": {
    "addressFormatCode": "DEFAULT",
    "addressLine1": "82 Fir Tree Avenue",
    "addressLine2": "",
    "addressLine3": "Wallingford",
    "addressLine4": "",
    "postcode": "OX10 0PL",
    "countryCode": "GB"
  },
  "correspondenceAddress": {
    "addressFormatCode": "DEFAULT",
    "addressLine1": "86 Fir Tree Avenue",
    "addressLine2": "",
    "addressLine3": "Wallingford",
    "addressLine4": "",
    "postcode": "OX10 0PL",
    "countryCode": "GB"
  },
  "accessDetails": {
    "accessTypeCode": "VENDOR",
    "firmName": "",
    "emailAddress": "vendor@vendor.co.uk",
    "contactName": "John Vendor",
    "telephoneNumber": "01234 121212"
  },
  "customers": [
    {
      "emailAddress": "joekennilworth@themovingportal.dev",
      "title": "",
      "firstName": "Joe",
      "lastName": "Kennilworth",
      "telephoneNumber": "01245 399999",
      "receiveSMS": false
    }
  ],
  "uniqueIntegrationReference": "EXA192884",
  "uniqueCustomerReference": "EXA192884"
}

A successful response from the service will return the Quote object (as per the Get quote method).

The payload for a new quote is very similar to that for a new referral. The only differences are in the cases object for the quote:

  • You do not specify the totalFeeInclVAT. You can optionally specify yourFeeInclVAT which will be applied, otherwise it will use the value specified in the official price list.
  • There is no support in quotes for your own references - these are only used for instructions/referrals. (Support will be added at a later date)

The properties of this payload are:

PropertyDescription
CasesDetails of each case to quote.
PropertyValueOrPurchasePriceOptional. The value of the property or purchase price.
PropertyValueTierCodeThe tier code of the property value.
See Key concepts. If PropertyValueOrPurchasePrice is provided then this is not required.
PropertyTypeCodeThe type of property, e.g. Detached, Terraced etc. If not known must be set to UNKNOWN.
See Key concepts.
PropertyAgeCodeShould not be provided if YearBuilt is set. The age of the property (in bands).
See Key concepts.
YearBuiltOptional. Should not be provded if PropertyAgeCode is set. The year the property is built.
PropertyAddressRequired. The address of the property. See Addresses
CorrespondenceAddressOptional. See Addresses
AccessDetailsOptional. How to gain access to the property.
CustomersRequired. At least one customer must be provided with contact details.
ReferrerOptional. Details of your referrer.
UniqueCustomerReferenceOptional. If provided, must be unique over all cases for the introducer. Represents the reference from the introducer to display to the customer. See Key concepts.
UniqueIntegrationReferenceOptional. If provided, must be unique over all cases for the introducer. Represents the reference from the introducer for integration. See Key concepts.

Cases

The payload for this object is:

"cases": [
  {
    "productCode": "RICSL2SURVEY",
    "yourFeeInclVAT": 750.00
  }
]

Only one case can be supplied at this time.

The properties of this object are:

PropertyDescription
ProductCodeRequired. A product code.
YourFeeInclVATOptional. Your fee to add to the calculated base fee. If not specifed, the value of yourFeeInclVAT will be taken from the price list.
Product

The ProductCode is a code for the product. You can get a list of your products from the Data service.

Validation
  • The code provided must be valid and an active product for your firm.
Fees

There is only a single property for the fee:

  • YourFeeInclVAT: This is the referral fee to be paid to the Introducer. It is optional. If it is not provided (i.e. set to null) then the fee will be set to the value on the official price list.
Validation

If YourFeeInclVAT is provided:

  • this value must be greater than or equal to zero.

Property information

These are information describing the property

"propertyValueOrPurchasePrice": 325000.00,
"propertyValueTierCode": "300KTO350K",
"propertyTypeCode": "DETACHED",
"propertyAgeCode": "TENTOFIFTYYEARS",
"yearBuilt": null

When creating a direct referral there is some information that is required.

To calculate the fees, we need to be able to know PropertyValueOrPurchasePrice or PropertyValueTierCode.

We do not need to know at this point the other property attributes (PropertyTypeCode, PropertyAgeCode or YearBuilt). We can determine these when we contact the customer. However, the more information we have at this point the easier it is to convert the referral into an order.

Validation
  • PropertyValueOrPurchasePrice or PropertyValueTierCode is required.
  • PropertyValueTierCode must be valid. See Key concepts.
  • If PropertyTypeCode is provided it must be valid. If not known must be set to UNKNOWN. See Key concepts.
  • If PropertyAgeCode is provided it must be valid. If not known must be set to UNKNOWN. See Key concepts.
  • If PropertyAgeCode is UNKNOWN and YearBuilt is set then it will be used to determine the property age band.

Property address

The address of the property is required in order to refer a case to us.

"propertyAddress": {
  "addressFormatCode": "DEFAULT",
  "addressLine1": "12 Spring Terrace",
  "addressLine2": "",
  "addressLine3": "Springfield",
  "addressLine4": "Springshire",
  "postcode": "SP5 1NG",
  "countryCode": "GB"
}
Validation

The minimum requirements for an address is the AddressLine1 and Postcode.

See Key concepts for full validation for addresses.

Correspondence address

The correspondence address is not mandatory. We can determine this when we contact the customer. However, the more information we have at this point the easier it is to convert the referral into an order.

"correspondenceAddress": {
  "addressFormatCode": "DEFAULT",
  "addressLine1": "15 Summer Lane",
  "addressLine2": "",
  "addressLine3": "Summertown",
  "addressLine4": "Summerland",
  "postcode": "SU8 8ER",
  "countryCode": "GB"
}
Validation

If you do not have the address you can either set correspondenceAddress to null or set addressFormatCode to NONE.

If provided, the minimum requirements for an address is to provide AddressLine1 and Postcode.

See Key concepts for full validation for addresses.

Access details

The access details is not a mandatory requirements. We can determine these when we contact the customer. However, the more information we have at this point the easier it is to convert the referral into an order.

The payload for this object is:

"accessDetails": {
  "accessTypeCode": "VENDOR",
  "firmName": "Spring and Summer properties",
  "emailAddress": "joe@springandsummer.co.uk",
  "contactName": "Joe Autumn",
  "telephoneNumber": "01234 121212"
}
Validation

If access details are provided:

  • AccessTypeCode can be set to VENDOR or AGENT.
  • FirmName is required when access type is VENDOR and has a maximum length of 150 characters.
  • EmailAddress has a maximum length of 100 characters and must be a valid email address.
  • ContactName is required and has a maximum length of 150 characters.
  • TelephoneNumber is required and has a maximum length of 150 characters.

Customers

At least one customer is required. This customer must have

  • Person name (first name and last name).
  • Email address.
  • Telephone number.
{
  "emailAddress": "fredjones@themovingportal.dev",
  "title": "",
  "firstName": "Fred",
  "lastName": "Jones",
  "telephoneNumber": "01234 882299",
  "receiveSMS": true
}

It is then possible to provide named customers, which only require their name. This allows for the surveyor to add that customer name to the final report, but without needing their full details.

Validation
  • Up to four customers can be specified.
  • The first customer must have all their details:
    • EmailAddress is required and has a maximum length of 100 characters and must be a valid email address.
    • TelephoneNumber is required, has a maximum length of 20 characters and must be a valid telephone number - using regular expression ^((\+|00)(\d){1,3})?((\s|\d|\(|\))?){8,15}$.
    • Title has a maximum length of 20 characters.
    • FirstName is required and has a maximum length of 50 characters.
    • LastName is required and has a maximum length of 50 characters.
  • Subsequent customers can be specified with just FirstName and LastName.

Referrer

This is your referrer. It is where the introducer will refer cases on behalf of another party (i.e. another company). We use this as a point of contact if there is a problem with the referral (e.g. wrong product). Providing the referrer is optional.

If you provide it, then it will be displayed to the customer in our portal when they look at the Quote. Your firms details will not be displayed. (Your company details will only be displayed if the customer edit's their details).

You should review GDPR for more details about the impact of this.

Validation

See Referral Service for details of validation.

Quote validation

Minimum requirements for creating a quote

The rules for creation of a quote and referring that quote via the API is different from creating a quote interactively via the Portal and referring it.

When a quote is created via the portal we only require the product, property value (tier) and a single customer. When that quote is subsequently referred via the portal we then collect all the information about the property (correpondence address and access details, plus property age and type).

However, if you use the Referral service to create a direct referral then it will allow you to submit a referral with the minimum amount of detail (product, property value, single customer and property address).

The rules for creating a quote via the API will follow the same rules as creating a direct referral (via the Referral service). This will allow you to create and refer a quote without all the information.

The minimum information required to create and refer a quote is:

  • productCode is required.
  • One of propertyValueOrPurchasePrice or propertyValueTierCode is required.
  • propertyTypeCode and propertyAgeCode set to UNKNOWN if not known.
  • propertyAddress is required.
  • correspondenceAddress, accessDetails are not required and can be set to null.
  • customers should have at least one customer.

The more information we have for a referral will assist in converting the referral into an order.

{
  "cases": [
    {
      "productCode": "RICSL2SURVEY",
      "yourFeeInclVAT": null
    }
  ],
  "propertyValueOrPurchasePrice": 280000,
  "propertyTypeCode": "UNKNOWN",
  "propertyAgeCode": "UNKNOWN",
  "propertyAddress": {
    "addressFormatCode": "DEFAULT",
    "addressLine1": "82 Fir Tree Avenue",
    "addressLine2": "",
    "addressLine3": "Wallingford",
    "addressLine4": "",
    "postcode": "OX10 0PL",
    "countryCode": "GB"
  },
  "customers": [
    {
      "emailAddress": "joekennilworth@themovingportal.dev",
      "title": "",
      "firstName": "Joe",
      "lastName": "Kennilworth",
      "telephoneNumber": "01245 399999",
      "receiveSMS": false
    }
  ]
}

Refer quote

PUT /quote/{tmpReference}/refer

Once you have created a quote you can use some of the other methods in this service to update the property details or your fee. However, once you call this method you can no longer do this.

When you are ready to refer the quote to TMP you will use this method. It has a very simple payload - just requiring the resultSequence to refer:

{
  "ResultSequence": 1
}

The result sequence must be provided and is valid. The quote cannot be referred if it is awaiting a price (REQUESTED), already referred/instructed (INSTRUCTED), Expired (EXPIRED) or Removed (REMOVED).

The references placed on a quote will be removed once the quote has been instructed.

Update property details

PATCH /quote/{tmpReference}/property

Before the quote is referred you are able to update the property details or your fee. The payload to this method to update the property details is

{
  "propertyTypeCode": "TERRACED",
  "propertyAgeCode": "LESSTHANTENYEARS",
  "yearBuilt": null,
  "propertyAddress": {
    "addressFormatCode": "DEFAULT",
    "addressLine1": "82 Fir Tree Avenue",
    "addressLine2": "",
    "addressLine3": "Wallingford",
    "addressLine4": "",
    "postcode": "OX10 0PL",
    "countryCode": "GB"
  },
  "correspondenceAddress": {
    "addressFormatCode": "DEFAULT",
    "addressLine1": "86 Fir Tree Avenue",
    "addressLine2": "",
    "addressLine3": "Wallingford",
    "addressLine4": "",
    "postcode": "OX10 0PL",
    "countryCode": "GB"
  },
  "accessDetails": {
    "accessTypeCode": "VENDOR",
    "firmName": "",
    "emailAddress": "vendor@vendor.co.uk",
    "contactName": "John Vendor",
    "telephoneNumber": "01234 121212"
  }
}

You cannot update the property details if the quote has been referred/instructed (INSTRUCTED), Expired (EXPIRED) or Removed (REMOVED).

Validation is as per creating a quote.

Email quote

PUT /quote/{tmpReference}/email

When a quote is created it will not be visible to the customer. This allows the introducer to review it first and possibly amend the fees. This method will send and email to the customer(s) with the quote.

The payload for this method is

{
  "ResultSequences": [1]
}

The result sequences must be provided with at least once valid sequence number. The quote cannot be emailed if it is awaiting a price (REQUESTED), already referred/instructed (INSTRUCTED), Expired (EXPIRED) or Removed (REMOVED).

Change fee

PATCH /quote/{tmpReference}/fees

Before the quote is referred you are able to update the porperty details and fee.

The payload to this method is

{
  "resultSequence": 1,
  "yourFeeInclVAT": 0
}

You cannot update the fee if the quote has been referred/instructed (INSTRUCTED), Expired (EXPIRED) or Removed (REMOVED).

The resultSequence must exist and yourFeeInclVAT is not optional and must be greater than or equal to 0.

The return from this method is the quote so that you can retrieve the updated totals.

Update Introducer References

PUT /quote/{tmpReference}/introducerreferences

This method will allow an Introducer to specify the references used for a quote. It can only be accessed using the TMP reference for the instruction.

The payload for this method is:

{
  "uniqueCustomerReference": "C-299AJJ",
  "uniqueIntegrationReference": "INT-28828"
}

It is not possible to update references for a read only quote (i.e. instructed, expired or removed).

The references placed on a quote will be removed once the quote has been instructed.

Remove quote

DELETE /quote/{tmpReference}

When this method the result sequences specified in the payload will be removed.

The payload for this method is

{
  "ResultSequences": [1]
}

The result sequences must be provided with at least once valid sequence number. The quote cannot be removed if it is already referred/instructed (INSTRUCTED) or Removed (REMOVED).

Update Owner

PUT /instruction/{tmpReference}/assign Introducer

This method will allow an Introducer to assign a different owner to the instruction.

The owner is specified using a query string parameter

PUT https://api.themovingportal.dev/quote/TMP123456/assign?owner=joebloggs@myintroducer.com

The following values are valid for the owner

  • None - Remove any owner
  • IntegrationServiceAccount - Set the owner to the Integration Service Account - if one has been setup
  • Owner - Email address - a valid email address of an active user at your firm. See Data service with code MYUSERS to get a list of users.

See Introducer owner for more information.

Example quote object

An example of a returned quote is below:

{
  "tmpReference": "TMP103243",
  "description": "RICS Home Survey - Level 3 (Building Survey) for Connie Booth",
  "createdTimestamp": "2024-06-21T13:03:34.0106172Z",
  "results": [
    {
      "sequence": 1,
      "quoteResultStatusCode": "SAVED",
      "productCode": "L3BUILDINGSURVEY",
      "fee": {
        "TOTALFEEINCLVAT": 735.00,
        "YOURFEEINCLVAT": 90.00
      },
      "allowedOperations": [
        "REFER",
        "REMOVERESULT",
        "ADJUSTFEE",
        "EMAIL"
      ],
      "expiryTimestamp": "2024-07-11T00:00:00Z"
    }
  ],
  "isVisibleToCustomers": false,
  "customers": [
    {
      "emailAddress": "conniebooth@themovingportal.dev",
      "title": "",
      "firstName": "Connie",
      "lastName": "Booth",
      "telephoneNumber": "07710 229 546",
      "receiveSMS": false
    }
  ],
  "property": {
    "propertyValueOrPurchasePrice": null,
    "propertyValueTierCode": "200KTO250K",
    "propertyValueTierDescription": "to £250,000",
    "propertyTypeCode": "TERRACED",
    "propertyTypeDescription": "Terraced",
    "propertyAgeCode": "FIFTYTOONEHUNDREDYEARS",
    "propertyAgeDescription": "50 to 100 years",
    "propertyAddressDescription": "No address",
    "propertyAddress": {
      "addressFormatCode": "NONE",
      "addressLine1": null,
      "addressLine2": null,
      "addressLine3": null,
      "addressLine4": null,
      "postcode": null,
      "countryCode": null
    },
    "correspondenceAddressDescription": "No address",
    "correspondenceAddress": {
      "addressFormatCode": "NONE",
      "addressLine1": null,
      "addressLine2": null,
      "addressLine3": null,
      "addressLine4": null,
      "postcode": null,
      "countryCode": null
    },
    "accessDetailsDescription": "No information",
    "accessDetails": {
      "accessTypeCode": "",
      "firmName": "",
      "emailAddress": "",
      "contactName": "",
      "telephoneNumber": ""
    }
  },
  "otherInformation": {},
  "allowedOperations": [
    "EDITPROPERTY",
    "REMOVEALLRESULTS"
  ],
  "configuration": {}
}
Last Updated: 7/3/26, 10:05 AM
Prev
Referral
Next
Quotes search