Skip to main content

Online Owner Verification Service Interface specification


1. Background

This document provides the interface requirements for the Online Owner Verification V1_0 Business Gateway service.

2. Purpose

The purpose of this document is to specify the interface between HM Land Registry and a Business Gateway Customer, indicating the message layouts and XML schemas that must be adhered to in order to communicate with HMLR, so that data may be exchanged between the organisations to effect Business Gateway. The XML schemas associated with this interface represent the authoritative definition of the interface and takes precedence over any information in this document. The schemas will be issued with this document, along with sample requests and responses. See Annex for samples.

3. Scope

The scope of this document encompasses the Online Owner Verification V1_0 interface and XML message format.

4. Definitions, Acronyms and Abbreviations

Any specific terms and abbreviations are further explained in the Glossary.

5. Interface Specification

This section covers general information about the configuration and use of the interface.

6. XML Requirements

The XML schema attached as part of this document is compliant with ‘XML Schema W3C Recommendation’, 04 Feb 2004 and e-GIF standards. The XML version is 1.0 and encoding is UTF-8. In an XML message, use of the characters &, <, “ and ‘ is constrained. The characters & and < are permitted to represent themselves only in Comments, Processing Instructions and CDATA sections. The characters “ and ‘ cannot appear in an attribute if they are being used to demarcate the value. Escape sequences are used to represent these characters when required. These escape sequences are:

Character Escape sequence
& “&amp;”
< “&lt;”
> “&gt;”
”&quot;“
”&apos;“

Within CDATA blocks the above characters are permitted and escape sequences must not be used. CDATA blocks are used for attachments to messages.

7. Business Gateway

Business Gateway Process Diagram

Both the RequestOnlineOwnershipVerificationV1_0 and the Poll Request messages are acknowledged with a ResponseOnlineOwnershipVerificationV1_0 message.

8. Online Owner Verification V1_0 Specific Messages

  • Schema:
    • RequestOnlineOwnershipVerificationV1_0
    • ResponseOnlineOwnershipVerificationV1_0
  • Description:
    • Online Owner Verification request identifies any titles associated with the supplied address and then checks if the supplied name matches any of the proprietors for those titles. If a title is supplied this will be used.
    • The response indicates either:
      • A success response includes the result of the search in XML.
      • A system error
      • A rejection response with details of why the search was rejected

9. XML Schemas

Current list of XML Schemas

Name Version
RequestOnlineOwnershipVerificationV1_0 1.0
ResponseOnlineOwnershipVerificationV1_0 1.0
PollRequest 1.0

See Annex for details of the individual Schemas relating to the Online Owner Verification service.

10. Online Owner Verification Request (V1_0)

Message Description
RequestOnlineOwnershipVerificationV1_0 This message wallows Customers to submit Online Owner Verification Requests to HMLR.

10.1 Request message structure

The request message comprises generic header information which is common with requests for other services, plus information specific to the RequestOnlineOwnershipVerificationV1_0. This is illustrated below:

10.2 Request specific elements

The request message breakdown is illustrated below:

Element Value Rules for Use
MessageId A unique reference associated with the application in the Case Management System Mandatory
Reference Reference associated with a case in Case Management System Mandatory
SubjectProperty Either the property title number OR the property address on which a search is being requested. See SubjectPropertyType for more details. Mandatory
FirstForename Forename of the proprietor to be searched Mandatory
MiddleName Middle name of the proprietor to be searched Optional
Surname Surname of the proprietor to be searched Mandatory
Indicators Search Indicators to enable/disable specific checks. See IndicatorType for more details Mandatory

10.2.1 SubjectPropertyType (Request)

The SubjectPropertyType contains the details of the property to be searched against. It may contain either a Title number or a property address.

TitleNumber Value
TitleNumber The title number on which the search is to be performed

OR

PropertyAddressType Value
BuildingName Building Name of the property to be searched
BuildingNumber Building Number of the property to be searched
StreetName Street Name of the property to be searched
CityName City or Town of the property to be searched
PostcodeZone Postcode of the property to be searched
SpecificTenure Tenure of the property to be searched i.e. freehold, leasehold or rentcharge. This is an optional element and if no specific tenure has been supplied, the system will search against all tenures

Note: For best results, minimise the information given. For example, provide building number or building name and postcode and leave all the other items blank. If the property to be searched is a flat then provide flat number in the building number. There can be confusion over the precise numbering of flats. The address we hold may be a simple number, or it may be prefixed by 'Flat’, ‘Suite’ and so on. If a search that includes a flat number fails, try providing the address without the flat number.

10.2.2 IndicatorType (Request)

The ‘Indicators’ element may contain 0 or many IndicatorType elements. The value of these elements must be set to true or false in lowercase. If any of the IndicatorTypes are excluded from the Request message they will be set to the default values shown below.

Indicator type Element Value Description Default
ContinueIfOutOfHours true Request will be lodged and processed when back in hours
ContinueIfOutOfHours false Reject request if out of hours x
SkipPartialMatching true Do not perform partial match checks for this request x
SkipPartialMatching false Perform partial match checks on the supplied names if full match not achieved
SkipHistoricalMatching true Do not perform historical search for this request x
SkipHistoricalMatching false Perform historical search if no match is found on the current proprietor(s)

11. Online Owner Verification Response (V1_0)

ResponseOnlineOwnershipVerificationV1_0 message uses the namespace http://www.landregistry.gov.uk/OOV/ResponseOnlineOwnershipVerificationV1_0 and must be valid with respect to the XML Schema published by HM Land Registry for that namespace.

Message Description
ResponseOnlineOwnershipVerificationV1_0 This message allows HM Land Registry to send the Online Owner Verification Responses to the Customer.

11.1 Response message structure

The response message comprises generic information common with responses to other services, plus information specific to the ResponseOnlineOwnershipVerificationV1_0 response. This is illustrated below:

11.2 Response specific elements

Element Description Rules for Use
TypeCode
  • Used to identify the type of response that has been issued.
  • Acknowledgement = 10
  • Rejection = 20
  • Result = 30
Mandatory
Acknowledgement This is the Business Gateway confirmation of receipt response Optional
Rejection This is the Business Gateway rejection response Optional
Result This is the Business Gateway confirmation of success response Optional

Note: Either an acknowledgement, rejection or result message will be issued.

11.3 Acknowledgement response structure

The Acknowledgement message will be returned if the service is out of hours and the original request message had the indictor ContinueIfOutOfHours set to true.

If for any reason a valid acknowledgement, rejection or response is not received by the originator (i.e. through network error, corruption or incorrectly prepared XML) there is no way for the server to know if it was successfully received or not. If this occurs the request can be sent again with the same MessageId and the original result will be returned. If HMLR did not receive the original request the system will process the request as a new one.

Note: Any requests submitted with a duplicate MessageId will receive the last response for that MessageId regardless of the other criteria in the request.

The acknowledgement response structure is illustrated below:

11.4 Acknowledgement specific elements

Element Description Rules for Use
UniqueID A unique identifier used by the end user to get the status update of their request Mandatory
ExpectedResponseDateTime This element will hold the expected date and time when Business Gateway will try to process the queued request. This element will contain date and time data in a GMT format. Mandatory
MessageDescription This will be a String type element and will be used to return a message to the end user. See Annex for acknowledgement message text Mandatory

11.5 Rejection response structure

The purpose of the Rejection message is to inform the originator of the Request message that it has been rejected due to known circumstances.

11.6 Rejection specific elements

Element Description Rules for Use
Reason A description of the reason for rejection. See Annex for full list of rejection reasons Mandatory
Code A code signifying the reason for rejection. See Annex for full list of rejection codes. Mandatory
OtherDescription A free format text field to convey any further information about the rejection. Optional
ValidationErrors Validation errors Optional
Reference Reference associated with a case in Case Management System Mandatory

11.7 Result response structure

11.8 Result key elements

Element Description Rules for Use
Message A free format text field to convey any further information about the response. Optional
Reference Reference associated with a case in Case Management System Mandatory
MatchResult Value will be either NO_MATCHES, SINGLE_MATCH, MULTIPLE_MATCHES Mandatory
Match Contains details of each Match. See Match Details. Optional (0..*)

11.8.1 Match elements

Element Description Rules for Use
SubjectProperty Contains the title number and address details for the property matched. See SubjectProperty Mandatory
SurnameMatch Indicates whether the Surname was matched and details of how it matched. See MatchType. Mandatory
ForenameMatchDetails Indicates whether the Forename was matched and details of how it matched. See MatchType. Mandatory
MiddleNameMatchDetails Indicates whether the Middle name was matched and details of how it matched. See MatchType. Optional
StringMatchDetails Indicates if a match is found against the string concatenation of forename, middle name(s) and surname Optional
MatchInformation Contains additional details of the match. See Match Information. Optional (0..*)

Notes: Forename and Middle name matches will only be returned if there has been a full match or partial match on Surname. A string match will only be returned when there is no match on surname. For example the name to be searched in the request is Maria (FirstForename) Santos (MiddleName) Bueno (Surname) and the register of title holds Maria (forename), no middle name and Santos Bueno (surname).

11.8.2 SubjectProperty

SubjectProperty Description Rules for Use
TitleNumber The title number for the property matched Mandatory
PropertyAddress Contains the address details for the property matched Mandatory

11.8.3 PropertyAddress

PropertyAddress Description Rules for Use
BuildingName Building name of the property matched Optional
SubBuildingName Sub building name of the property matched Optional
BuildingNumber Building number of the property matched Optional
StreetName Street name of the property matched Optional
CityName City name of the property matched Optional
PostcodeZone Postcode of the property matched Optional
Tenure Tenure of the property matched Mandatory

11.8.4 MatchType

The MatchType element indicates the type of match and any additional match details

Element Value Rules for Use
TypeOfMatch Indicates if an exact, partial or no match. Typical values MATCH, NO_MATCH, PARTIAL_MATCH or SKIPPED Mandatory
MatchDetails Contains additional details of the match. See Match Details. Mandatory

This could return a full match, an exact letter for letter match or a partial match, where the name matches in some way, i.e. minor spelling mistake, sounds like or first letter match. The type of match for forename and middle name will be set to a value of ‘SKIPPED’ when there is NO match on surname. The type of match for surname will be set to a value of ‘SKIPPED’ where there is no Private Individual proprietorship name found for a title number or where LR have no proprietorship details available for a title number.

12. Glossary or Terms and Abbreviations

Acronym Description
OOV Online Owner Verification Service
HTTP HyperText Transfer Protocol
XML eXtensible Markup Language
Registered on date

13. Annex

13.1.1 Acknowledgement Message

Message
Service is not currently available. System has queued your request, please poll at specified time.

13.1.2 Match information

Acronym Description
OOV Online Owner Verification Service
HTTP HyperText Transfer Protocol
XML eXtensible Markup Language
Registered on date
  • Only provided for Historical matches

13.1.3 Match Details

Name Value
FORENAME_DISTANCE true or false
FORENAME_SOUND true or false
FORENAME_INITIAL true or false
FORENAME_MIDDLE true or false
FORENAME_ALIAS true or false
MIDNAME_DISTANCE true or false
MIDNAME_SOUND true or false
MIDNAME_INITIAL true or false
SURNAME_DISTANCE true or false
SURNAME_SOUND true or false

*Indicates whether the forename supplied matches a middle name of the registered proprietor. e.g. Search name is Susan Brown and Proprietor name is Edith Susan Brown would return Forename Middle is ‘true’ Distance matching uses Levenshtein. The distance is the number of changes needed to change one String into another, where each change is a single character modification (deletion, insertion or substitution). The returning integer is then checked and if <= (surname length/4) will return ‘true’ otherwise ‘false’. Sound uses Double Metaphone, which looks through variant spellings by reducing surnames to phonetic codes. The "double” in the title stems from the fact that returning up to two codes for a single surname allows the algorithm to deal with common-case Anglo-Saxon and foreign-pronunciation variants simultaneously. A match on either will return ‘true’ otherwise ‘false’.

Sound and Distance Examples

Search Name Proprietor Name Sound Value Distance Value
Steven Stephen Pass Fail
Lin Lynne Pass Fail
Smith Smythe Pass Fail
Smith Smyth Pass Pass
Smith Schmidt Pass Fail
Goodbourn Woodburn Fail Pass
Wooldridge Aldridge Pass Fail

13.1.4 Rejection Codes

Code Reason
bg.auth.fails Login details are invalid.
bg.user.account.status.locked.password Your account is locked. Please reset your password using Portal.
bg.outofhours.stop Service is not currently available and your request will not be processed.
bg.properties.nopropertyfound No title number has been identified from the data supplied. This does not necessarily mean that a register of a title does not exist but only that insufficient data has matched.
bg.properties.novalidtitlefound No valid title number has been identified from the data supplied for this service.
bg.address.invalidaddresscriteria Insufficient address details. Please provide house name or number and postcode OR house name or number, street and city.
bg.postcode.invalid Please provide valid postcode
bg.title.invalid Title number is invalid
bg.properties.toomanyproperties The property address you entered has matched with a large number of properties on our database. Please request again with refined address details.

13.1.5 Sample Messages


<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<RequestOOV xmlns="http://www.landregistry.gov.uk/OOV/RequestOnlineOwnershipVerificationV1_0">
    <MessageId>OnlineOwnershipVerification-20131217-094743</MessageId>
    <Reference>ABC</Reference>
    <SubjectProperty>
        <PropertyAddress>
            <BuildingNumber>101A</BuildingNumber>
            <PostcodeZone>PL1 1QQ</PostcodeZone>
        </PropertyAddress>
    </SubjectProperty>
    <FirstForename>Jon</FirstForename>
    <MiddleName>Tomas</MiddleName>
    <Surname>Tankerman</Surname>
    <Indicators>
        <Indicator>
            <IndicatorType>ContinuIfOutOfHours</IndicatorType>
            <IndicatorValue>true</IndicatorValue>
        </Indicator>
    </Indicators>
</RequestOOV>

Sample response message


<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<ResponseOOV xmlns="http://www.landregistry.gov.uk/OOV/ResponseOnlineOwnershipVerificationV1_0">
    <TypeCode>30</TypeCode>
    <Result>
        <Reference>ABC</Reference>
        <MatchResult>SINGLE_MATCH</MatchResult>
        <Match>
            <SubjectProperty>
                <TitleNumber>NT100</TitleNumber>
                <PropertyAddress>
                    <BuildingNumber>101A</BuildingNumber>
                    <StreetName>APPLE ROAD</StreetName>
                    <CityName>NOTTINGHAM</CityName>
                    <PostcodeZone>PL1 1QQ</PostcodeZone>
                    <Tenure>freehold</Tenure>
                </PropertyAddress>
            </SubjectProperty>
            <SurnameMatch>
                <TypeOfMatch>NO_MATCH</TypeOfMatch>
            </SurnameMatch>
            <StringMatchDetails>
                <TypeOfMatch>NO_MATCH</TypeOfMatch>
            </StringMatchDetails>
        </Match>
        <Match>
            <SubjectProperty>
                <TitleNumber>NT275842</TitleNumber>
                <PropertyAddress>
                    <BuildingNumber>101A</BuildingNumber>
                    <StreetName>APPLE ROAD</StreetName>
                    <CityName>NOTTINGHAM</CityName>
                    <PostcodeZone>PL1 1QQ</PostcodeZone>
                    <Tenure>leasehold</Tenure>
                </PropertyAddress>
            </SubjectProperty>
            <SurnameMatch>
                <TypeOfMatch>MATCH</TypeOfMatch>
            </SurnameMatch>
            <ForenameMatchDetails>
                <TypeOfMatch>MATCH</TypeOfMatch>
            </ForenameMatchDetails>
            <MiddleNameMatchDetails>
                <TypeOfMatch>MATCH</TypeOfMatch>
            </MiddleNameMatchDetails>
            <MatchInformation>
                <Name>HistoricalMatch</Name>
                <Value>true</Value>
            </MatchInformation>
            <MatchInformation>
                <Name>Ownership</Name>
                <Value>Joint</Value>
            </MatchInformation>
            <MatchInformation>
                <Name>ProprietorFrom</Name>
                <Value>26 Feb 2009</Value>
            </MatchInformation>
            <MatchInformation>
                <Name>ProprietorTo</Name>
                <Value>31 Dec 2012</Value>
            </MatchInformation>
        </Match>
    </Result>
</ResponseOOV>

13.1.6 Schemas

XML Schemas are compliant with e-GIF (Electronic Government Interoperability Framework) standards. Schema files are named according to the standard -vm-n.xsd where v is the letter ‘v’, m is the major version number and n is the minor version number.

13.1.7 RequestOnlineOwnershipVerificationV1_0.xsd


<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.landregistry.gov.uk/OOV/RequestOnlineOwnershipVerificationV1_0"
xmlns="http://www.landregistry.gov.uk/OOV/RequestOnlineOwnershipVerificationV1_0"
elementFormDefault="qualified">
    <xs:element name="RequestOOV" type="RequestOnlineOwnershipVerificationType"></xs:element>
    <xs:complexType name="RequestOnlineOwnershipVerificationType">
        <xs:sequence>
            <xs:element name="MessageId" type="MessageIdTextContentType" minOccurs="1" maxOccurs="1"></xs:element>
            <xs:element name="Reference" type="ReferenceTextContentType" minOccurs="1" maxOccurs="1"></xs:element>
            <xs:element name="SubjectProperty" type="SubjectPropertyType" minOccurs="1" maxOccurs="1"></xs:element>
            <xs:element name="FirstForename" type="FirstForenameContentType" minOccurs="1" maxOccurs="1"></xs:element>
            <xs:element name="MiddleName" type="NameContentType" minOccurs="0" maxOccurs="1"></xs:element>
            <xs:element name="Surname" type="NameContentType" minOccurs="1" maxOccurs="1"></xs:element>
            <xs:element name="Indicators" type="IndicatorsType" minOccurs="1" maxOccurs="1"></xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:simpleType name="FirstForenameContentType">
        <xs:restriction base="xs:string">
            <xs:minLength value="1"></xs:minLength>
            <xs:pattern value="[a-zA-Z0-9\-']+"></xs:pattern>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="NameContentType">
        <xs:restriction base="xs:string">
            <xs:minLength value="1"></xs:minLength>
            <xs:pattern value="[a-zA-Z0-9\-\s']+"></xs:pattern>
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="SubjectPropertyType">
        <xs:choice minOccurs="1" maxOccurs="1" >
            <xs:element name="TitleNumber">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:maxLength value="9"></xs:maxLength>
                        <xs:minLength value="1"></xs:minLength>
                        <xs:pattern value="[a-yA-Y]{0,3}\d{1,6}|Z\d{1,6}Z"></xs:pattern>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="PropertyAddress" type="PropertyAddressType" />
        </xs:choice>
    </xs:complexType>
    <xs:complexType name="PropertyAddressType">
        <xs:sequence>
            <xs:element name="BuildingName" type="BuildingNameTextContentType" minOccurs="0" maxOccurs="1">
                <xs:annotation>
                    <xs:documentation>The name of the building or house on a street of this address</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="BuildingNumber" type="BuildingNumberTextContentType" minOccurs="0" maxOccurs="1">
                <xs:annotation>
                    <xs:documentation>The number of a building or house on a street of this address. Where the building or house occupies a range
                     of numbers on the street, e.g. '1-9 Main St', this will be the lower number of the range.</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="StreetName" type="StreetNameTextContentType" minOccurs="0" maxOccurs="1">
                <xs:annotation>
                    <xs:documentation>Name of a street or thoroughfare</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="CityName" type="CityTextContentType" minOccurs="0" maxOccurs="1">
                <xs:annotation>
                    <xs:documentation>The name of the city, town or village of this address.</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="PostcodeZone" type="PostcodeTextContentType" minOccurs="0" maxOccurs="1">
                <xs:annotation>
                    <xs:documentation>The identifier for one or more properties according to the UK postal service; a group of letters and numbers
                    added to the postal address to assist in the sorting of mail, as defined by the Royal Mail.</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="SpecificTenure" type="xs:string" minOccurs="0" maxOccurs="1"></xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:simpleType name="PostcodeTextContentType">
        <xs:restriction base="xs:string">
            <xs:minLength value="1" />
            <xs:maxLength value="8" />
            <xs:pattern value="[a-zA-Z]{1,2}[0-9R][0-9A-Za-z]? [0-9][A-Za-z-[CIKMOVcikmov]]{2}" />
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="CityTextContentType">
        <xs:restriction base="xs:string">
            <xs:minLength value="1" />
            <xs:maxLength value="35" />
            <xs:pattern value=".*\S.*" />
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="StreetNameTextContentType">
        <xs:restriction base="xs:string">
            <xs:minLength value="1" />
            <xs:maxLength value="80" />
            <xs:pattern value=".*\S.*" />
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="BuildingNameTextContentType">
        <xs:restriction base="xs:string">
            <xs:minLength value="1" />
            <xs:maxLength value="50" />
            <xs:pattern value=".*\S.*" />
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="BuildingNumberTextContentType">
        <xs:restriction base="xs:string">
            <xs:minLength value="1" />
            <xs:maxLength value="5" />
            <xs:pattern value=".*\S.*" />
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="ReferenceTextContentType">
        <xs:restriction base="xs:string">
            <xs:minLength value="1" />
            <xs:maxLength value="25" />
            <xs:pattern value="[A-Za-z0-9\s~!"@#$%'\(\)\*\+,\-\./:;=>\?\[\\\]_\{\}\^£&]*" />
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="MessageIdTextContentType">
        <xs:restriction base="xs:string">
            <xs:minLength value="5" />
            <xs:maxLength value="50" />
            <xs:pattern value="[a-zA-Z0-9][a-zA-Z0-9\-]*" />
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="MiddleNameType">
        <xs:sequence>
            <xs:element name="MiddleName" type="NameContentType" minOccurs="1" maxOccurs="1"></xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="IndicatorsType">
        <xs:sequence>
            <xs:element name="Indicator" type="IndicatorType" minOccurs="0" maxOccurs="unbounded"></xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="IndicatorType">
        <xs:sequence>
            <xs:annotation>
                <xs:documentation>
                    The indicators are generic so that new options can be added in the future without schema changes.
                    Expected indicators are:
                    ContinueIfOutOfHours
                    SkipPartialMatching
                    SkipHistoricalMatching
                </xs:documentation>
            </xs:annotation>
            <xs:element name="IndicatorType" minOccurs="1" maxOccurs="1">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:minLength value="1"></xs:minLength>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="IndicatorValue" type="xs:boolean" minOccurs="1" maxOccurs="1"></xs:element>
        </xs:sequence>
    </xs:complexType>
</xs:schema>

13.1.8 ResponseOnlineOwnershipVerificationV1_0.xsd


<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.landregistry.gov.uk/OOV/ResponseOnlineOwnershipVerificationV1_0"
xmlns="http://www.landregistry.gov.uk/OOV/ResponseOnlineOwnershipVerificationV1_0"
elementFormDefault="qualified">
    <xs:element name="ResponseOOV" type="ResponseOnlineOwnershipVerificationType"></xs:element>
    <xs:complexType name="ResponseOnlineOwnershipVerificationType">
        <xs:sequence>
            <xs:element name="TypeCode" type="TypeCodes" maxOccurs="1" minOccurs="1"></xs:element>
            <xs:element name="Acknowledgement" type="AcknowledgementType" maxOccurs="1" minOccurs="0"></xs:element>
            <xs:element name="Rejection" type="RejectionType" maxOccurs="1" minOccurs="0"></xs:element>
            <xs:element name="Result" type="ResultType" maxOccurs="1" minOccurs="0"></xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="ResponseType">
        <xs:sequence>
            <xs:element name="Code" type="xs:string"></xs:element>
            <xs:element name="Text" type="xs:string"></xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:simpleType name="TypeCodes">
        <xs:restriction base="xs:string">
            <xs:enumeration value="10">
                <xs:annotation>
                    <xs:documentation>Acknowledgement</xs:documentation>
                </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="20">
                <xs:annotation>
                    <xs:documentation>Rejections</xs:documentation>
                </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="30">
                <xs:annotation>
                    <xs:documentation>Result</xs:documentation>
                </xs:annotation>
            </xs:enumeration>
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="AcknowledgementType">
        <xs:sequence>
            <xs:element name="UniqueID" type="xs:string" minOccurs="1" maxOccurs="1">
                <xs:annotation>
                    <xs:documentation>Unique identifier used by end user to get the status update of their request.</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="ExpectedResponseDateTime" type="xs:dateTime" minOccurs="1" maxOccurs="1">
                <xs:annotation>
                    <xs:documentation>This element will hold expected time when Business Gateway will try to process the queued request. This
                    element will contain date and time data as GMT format. This element should be marked as mandatory</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="MessageDescription" type="xs:string" minOccurs="1" maxOccurs="1">
                <xs:annotation>
                    <xs:documentation>This will be a String type element and will be use to display a message to end user. This element should be marked as mandatory</xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="RejectionType">
        <xs:annotation>
            <xs:documentation>Provides details of the reasons for the rejection.</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="Reason" type="xs:string" minOccurs="1" maxOccurs="1">
                <xs:annotation>
                    <xs:documentation>A description of the reason for rejection.</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="Code" type="xs:string" minOccurs="1" maxOccurs="1">
                <xs:annotation>
                    <xs:documentation>A code signifying the reason for rejection</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="OtherDescription" type="xs:string" minOccurs="0" maxOccurs="1">
                <xs:annotation>
                    <xs:documentation>Freeform text field to convey any further information about the rejection.</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="ValidationErrors" type="ValidationErrorsType" minOccurs="0" maxOccurs="unbounded" />
            <xs:element name="Reference" type="xs:string" maxOccurs="1" minOccurs="1"></xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="ValidationErrorsType">
        <xs:sequence>
            <xs:element name="Code" type="xs:string" minOccurs="1" maxOccurs="1">
                <xs:annotation>
                    <xs:documentation>A character string (i.e. a finite set of characters) generally in the form of words of a language.</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="Description" type="xs:string" minOccurs="1" maxOccurs="1">
                <xs:annotation>
                    <xs:documentation>A character string (i.e. a finite set of characters) generally in the form of words of a language.</xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="ResultType">
        <xs:sequence>
            <xs:element name="Message" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
            <xs:element name="Reference" type="xs:string" maxOccurs="1" minOccurs="1"></xs:element>
            <xs:element name="MatchResult" type="MatchResultType" maxOccurs="1" minOccurs="1"></xs:element>
            <xs:element name="Match" type="NameMatchType" maxOccurs="unbounded" minOccurs="0"></xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:simpleType name="MatchResultType">
        <xs:restriction base="xs:string">
            <xs:enumeration value="NO_MATCHES"></xs:enumeration>
            <xs:enumeration value="SINGLE_MATCH"></xs:enumeration>
            <xs:enumeration value="MULTIPLE_MATCHES"></xs:enumeration>
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="PropertyAddressType">
        <xs:sequence>
            <xs:element name="BuildingName" type="xs:string" minOccurs="0" maxOccurs="1">
                <xs:annotation>
                    <xs:documentation>The name of the building or house on a street of this address</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="SubBuildingName" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
            <xs:element name="BuildingNumber" type="xs:string" minOccurs="0" maxOccurs="1">
                <xs:annotation>
                    <xs:documentation>The number of a building or house on a street of this address. Where the building or house
                    occupies a range of numbers on the street, e.g. '1-9 Main St', this will be the lower number of the range.</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="StreetName" type="xs:string" minOccurs="0" maxOccurs="1">
                <xs:annotation>
                    <xs:documentation> Name of a street or thoroughfare</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="CityName" type="xs:string" minOccurs="0"maxOccurs="1">
                <xs:annotation>
                    <xs:documentation>The name of the city, town or village of this address.</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="PostcodeZone" type="xs:string" minOccurs="0" maxOccurs="1">
                <xs:annotation>
                    <xs:documentation>The identifier for one or more properties according to the UK postal service;
                    a group of letters and numbers added to the postal address to assist in the sorting of mail,
                    as defined by the Royal Mail.</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="Tenure" type="xs:string" maxOccurs="1" minOccurs="1"></xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="NameMatchType">
        <xs:sequence>
            <xs:element name="SubjectProperty" type="SubjectPropertyType" maxOccurs="1" minOccurs="1">#</xs:element>
            <xs:element name="SurnameMatch" type="MatchType"maxOccurs="1" minOccurs="1"></xs:element>
            <xs:element name="ForenameMatchDetails" type="MatchType" maxOccurs="1" minOccurs="1"></xs:element>
            <xs:element name="MiddleNameMatchDetails" type="MatchType"maxOccurs="1" minOccurs="0"></xs:element>
            <xs:element name="StringMatchDetails" type="MatchType"maxOccurs="1" minOccurs="0"></xs:element>
            <xs:element name="MatchInformation" type="MatchDetailsType" maxOccurs="unbounded" minOccurs="0"></xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="MatchType">
        <xs:sequence>
            <xs:element name="TypeOfMatch">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:enumeration value="MATCH"></xs:enumeration>
                        <xs:enumeration value="NO_MATCH"></xs:enumeration>
                        <xs:enumeration value="PARTIAL_MATCH"></xs:enumeration>
                        <xs:enumeration value="SKIPPED"></xs:enumeration>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="MatchDetails" type="MatchDetailsType" maxOccurs="unbounded" minOccurs="0"></xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="MatchDetailsType">
        <xs:sequence>
            <xs:annotation>
                <xs:documentation>Flexible name/value pair element to include various values.

                Possible options are:
                Name              Values (string)
                HistoricalMatch   true or false
                ProprietorFrom    date or unknown
                ProprietorTo      date or unknown
                Ownership         Sole or Joint
                FORENAME_DISTANCE true or false
                FORENAME_SOUND    true or false
                FORENAME_INITIAL  true or false
                FORENAME_MIDDLE   true or false
                FORENAME_ALIAS    true or false
                MIDNAME_DISTANCE  true or false
                MIDNAME_SOUND     true or false
                MIDNAME_INITIAL   true or false
                SURNAME_DISTANCE  true or false
                SURNAME_SOUND     true or false
                Note: _DISTANCE is Levenshtein distance and _SOUND is sounds like (DoubleMetaphone) </xs:documentation>
            </xs:annotation>
            <xs:element name="Name" type="xs:string" maxOccurs="1" minOccurs="1"></xs:element>
            <xs:element name="Value" type="xs:string" maxOccurs="1" minOccurs="1"></xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="SubjectPropertyType">
        <xs:sequence>
            <xs:element name="TitleNumber" maxOccurs="1" minOccurs="1">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:minLength value="1"></xs:minLength>
                        <xs:maxLength value="9"></xs:maxLength>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="PropertyAddress" type="PropertyAddressType" maxOccurs="1" minOccurs="1"></xs:element>
        </xs:sequence>
    </xs:complexType>
</xs:schema>