6 Appendix A: Full WSDL

For ease of implementation, the full WSDL and schema are provided in this appendix.

 <?xml version="1.0"?>
 <wsdl:definitions
   xmlns:s0="urn:Microsoft.Search"
   xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
   xmlns:tns="http://microsoft.com/webservices/OfficeServer/QueryService"
   xmlns:s="http://www.w3.org/2001/XMLSchema"
   xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"
   xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
   xmlns:t="urn:Microsoft.Search.Types"
   xmlns:rrq="urn:Microsoft.Search.Registration.Request"
   xmlns:rrs="urn:Microsoft.Search.Registration.Response"
   xmlns:q="urn:Microsoft.Search.Query"
   xmlns:d="urn:Microsoft.Search.Response.Document"
   xmlns:r="urn:Microsoft.Search.Response"
   xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1"
   targetNamespace="http://microsoft.com/webservices/OfficeServer/QueryService">
   <wsdl:types>
     <s:schema targetNamespace="urn:schemas-microsoft-com:xml-diffgram-v1"
       attributeFormDefault="qualified"
       elementFormDefault="qualified">
       <s:attribute name="id" type="s:string"/>
       <s:element name="diffgr">
         <s:complexType>
           <s:sequence minOccurs="0" maxOccurs="1">
             <s:any namespace="##other" processContents="lax" minOccurs="0"/>
           </s:sequence>
         </s:complexType>
       </s:element>
     </s:schema>
     <s:schema elementFormDefault="qualified" targetNamespace="urn:Microsoft.Search.Types">
       <s:simpleType name="SimilarToType">
         <s:restriction base="s:string">
           <s:pattern value="(\[([\w ])+,(([0-9]+)?\.)?[0-9]+\])+"/>
         </s:restriction>
       </s:simpleType>
       <s:simpleType name="String255">
         <s:restriction base="s:string">
           <s:minLength value="0"/>
           <s:maxLength value="255"/>
         </s:restriction>
       </s:simpleType>
       <s:simpleType name="String2048">
         <s:restriction base="s:string">
           <s:minLength value="0"/>
           <s:maxLength value="2048"/>
         </s:restriction>
       </s:simpleType>
       <s:simpleType name="GUIDType">
         <s:restriction base="s:string">
           <s:pattern value="\{[A-Fa-f0-9]{8}-([A-Fa-f0-9]{4}-){3}[A-Fa-f0-9]{12}\}"/>
           <s:pattern value="[A-Fa-f0-9]{8}-([A-Fa-f0-9]{4}-){3}[A-Fa-f0-9]{12}"/>
         </s:restriction>
       </s:simpleType>
       <s:simpleType name="StartAtType">
         <s:restriction base="s:unsignedInt">
           <s:minInclusive value="1"/>
         </s:restriction>
       </s:simpleType>
       <s:simpleType name="CategoryType">
         <s:restriction base="s:string">
           <s:enumeration value="INTRANET_GENERAL"/>
         </s:restriction>
       </s:simpleType>
     </s:schema>
     <s:schema elementFormDefault="qualified" targetNamespace="urn:Microsoft.Search.Registration.Request">
       <s:element name="RegistrationRequest">
         <s:complexType>
           <s:sequence>
             <s:any minOccurs="0" maxOccurs="unbounded" processContents="skip"/>
           </s:sequence>
           <s:anyAttribute processContents="skip"/>
         </s:complexType>
       </s:element>
     </s:schema>
     <s:schema elementFormDefault="qualified" targetNamespace="urn:Microsoft.Search.Registration.Response">
       <s:import namespace="urn:Microsoft.Search.Types"/>
       <s:import namespace="urn:Microsoft.Search.Response"/>
       <s:element name="ProviderUpdate">
         <s:complexType>
           <s:sequence>
             <s:element name="Status" type="r:StatusType"/>
             <s:element name="DebugErrorMessage" type="s:string" minOccurs="0"/>
             <s:element name="Providers" minOccurs="0">
               <s:complexType>
                 <s:sequence>
                   <s:element name="Provider">
                     <s:complexType>
                       <s:sequence>
                         <s:element name="Id" type="t:GUIDType"/>
                         <s:element name="Name" type="t:String255"/>
                         <s:element name="QueryPath" type="s:anyURI"/>
                         <s:element name="Type" type="rrs:ProviderType"/>
                         <s:element name="Services" minOccurs="0">
                           <s:complexType>
                             <s:sequence>
                               <s:element name="Service">
                                 <s:complexType>
                                   <s:sequence>
                                     <s:element name="Id" type="t:GUIDType"/>
                                     <s:element name="Name" type="t:String255"/>
                                     <s:element name="Category" type="t:CategoryType"/>
                                     <s:element name="Description" type="t:String2048" minOccurs="0"/>
                                     <s:element name="Copyright" type="t:String2048" minOccurs="0"/>
                                     <s:element name="Display" type="rrs:DisplayType" minOccurs="0"/>
                                   </s:sequence>
                                 </s:complexType>
                               </s:element>
                             </s:sequence>
                           </s:complexType>
                         </s:element>
                       </s:sequence>
                     </s:complexType>
                   </s:element>
                 </s:sequence>
               </s:complexType>
             </s:element>
           </s:sequence>
         </s:complexType>
       </s:element>
       <s:simpleType name="ProviderType">
         <s:restriction base="s:string">
           <s:enumeration value="SOAP"/>
         </s:restriction>
       </s:simpleType>
       <s:simpleType name="DisplayType">
         <s:restriction base="s:string">
           <s:enumeration value="On"/>
         </s:restriction>
       </s:simpleType>
     </s:schema>
     <s:schema elementFormDefault="qualified" targetNamespace="urn:Microsoft.Search.Response.Document">
       <s:element name="Document">
         <s:complexType>
           <s:sequence>
             <s:element name="Title" type="s:string" minOccurs="0"/>
             <s:element name="Action">
               <s:complexType>
                 <s:sequence>
                   <s:element name="LinkUrl">
                     <s:complexType>
                       <s:simpleContent>
                         <s:extension base="s:string">
                           <s:attribute name="size" type="s:unsignedInt" use="optional"/>
                           <s:attribute name="fileExt" type="s:string" use="optional"/>
                         </s:extension>
                       </s:simpleContent>
                     </s:complexType>
                   </s:element>
                 </s:sequence>
               </s:complexType>
             </s:element>
             <s:choice>
               <s:sequence>
                 <s:element name="Description" type="s:string"/>
                 <s:element name="Date" type="s:dateTime"/>
               </s:sequence>
               <s:element name="Properties">
                 <s:complexType>
                   <s:sequence>
                     <s:element name="Property" minOccurs="0" maxOccurs="unbounded">
                       <s:complexType>
                         <s:sequence>
                           <s:element name="Name" type="s:string"/>
                           <s:element name="Type" type="d:PropertyType"/>
                           <s:element name="Value" type="s:string"/>
                         </s:sequence>
                       </s:complexType>
                     </s:element>
                   </s:sequence>
                 </s:complexType>
               </s:element>
             </s:choice>
           </s:sequence>
           <s:attribute name="relevance" type="s:double"/>
         </s:complexType>
       </s:element>
       <s:simpleType name="PropertyType">
         <s:restriction base="s:string">
           <s:enumeration value="Boolean"/>
           <s:enumeration value="Byte"/>
           <s:enumeration value="Char"/>
           <s:enumeration value="DateTime"/>
           <s:enumeration value="Double"/>
           <s:enumeration value="Int16"/>
           <s:enumeration value="Int32"/>
           <s:enumeration value="Int64"/>
           <s:enumeration value="Single"/>
           <s:enumeration value="String"/>
           <s:enumeration value="UInt16"/>
           <s:enumeration value="UInt32"/>
           <s:enumeration value="UInt64"/>
         </s:restriction>
       </s:simpleType>
     </s:schema>
     <s:schema elementFormDefault="qualified" targetNamespace="urn:Microsoft.Search.Query">
       <s:import namespace="urn:Microsoft.Search.Types"/>
       <s:element name="QueryPacket">
         <s:complexType>
           <s:all>
             <s:element name="Query">
               <s:complexType>
                 <s:all>
                   <s:element name="QueryId" type="t:GUIDType" minOccurs="0"/>
                   <s:element name="OriginatorId" type="t:GUIDType" minOccurs="0"/>
                   <s:element name="SupportedFormats">
                     <s:complexType>
                       <s:sequence>
                         <s:any processContents="skip" minOccurs="0" maxOccurs="unbounded"/>
                       </s:sequence>
                     </s:complexType>
                   </s:element>
                   <s:element name="Context">
                     <s:complexType>
                       <s:sequence>
                         <s:element name="QueryText">
                           <s:complexType>
                             <s:simpleContent>
                               <s:extension base="s:string">
                                 <s:attribute name="language" type="s:language" use="optional"/>
                                 <s:attribute name="type" type="q:QueryType" use="optional" default="STRING"/>
                               </s:extension>
                             </s:simpleContent>
                           </s:complexType>
                         </s:element>
                         <s:element name="LanguagePreference" type="s:language" minOccurs="0"/>
                         <s:element name="Requery" minOccurs="0">
                           <s:complexType>
                             <s:sequence>
                               <s:any processContents="skip" minOccurs="0" maxOccurs="unbounded"/>
                             </s:sequence>
                           </s:complexType>
                         </s:element>
                         <s:element name="OriginatorContext" minOccurs="0">
                           <s:complexType>
                             <s:sequence>
                               <s:any processContents="skip" minOccurs="0" maxOccurs="unbounded"/>
                             </s:sequence>
                           </s:complexType>
                         </s:element>
                       </s:sequence>
                     </s:complexType>
                   </s:element>
                   <s:element name="Range" minOccurs="0">
                     <s:complexType>
                       <s:sequence>
                         <s:element name="StartAt" type="t:StartAtType" default="1" minOccurs="0"/>
                         <s:element name="Count" type="s:unsignedInt" minOccurs="0"/>
                       </s:sequence>
                       <s:attribute name="id" type="s:string" use="optional"/>
                     </s:complexType>
                   </s:element>
                   <s:element name="Keywords" minOccurs="0">
                     <s:complexType>
                       <s:sequence>
                         <s:any minOccurs="0" maxOccurs="unbounded" processContents="skip"/>
                       </s:sequence>
                       <s:anyAttribute processContents="skip"/>
                     </s:complexType>
                   </s:element>
                   <s:element name="OfficeContext" minOccurs="0">
                     <s:complexType>
                       <s:sequence>
                         <s:any minOccurs="0" maxOccurs="unbounded" processContents="skip"/>
                       </s:sequence>
                       <s:anyAttribute processContents="skip"/>
                     </s:complexType>
                   </s:element>
                   <s:element name="Properties" minOccurs="0">
                     <s:complexType>
                       <s:sequence>
                         <s:element name="Property" minOccurs="0" maxOccurs="unbounded">
                           <s:complexType>
                             <s:attribute name="name" type="s:string"/>
                           </s:complexType>
                         </s:element>
                       </s:sequence>
                     </s:complexType>
                   </s:element>
                   <s:element name="SortByProperties" minOccurs="0">
                     <s:complexType>
                       <s:sequence>
                         <s:element name="SortByProperty" minOccurs="0" maxOccurs="unbounded">
                           <s:complexType>
                             <s:attribute name="name" type="s:string"/>
                             <s:attribute name="direction" type="q:DirectionType" use="optional"/>
                           </s:complexType>
                         </s:element>
                       </s:sequence>
                     </s:complexType>
                   </s:element>
                   <s:element name="ImplicitAndBehavior" type="s:boolean" minOccurs="0"/>
                   <s:element name="RelevanceModel" type="t:GUIDType" minOccurs="0"/>
                   <s:element name="EnableStemming" type="s:boolean" minOccurs="0"/>
                   <s:element name="EnableNicknames" type="s:boolean" minOccurs="0"/>
                   <s:element name="EnablePhonetic" type="s:boolean" minOccurs="0"/>
                   <s:element name="TrimDuplicates" minOccurs="0">
                     <s:complexType>
                       <s:simpleContent>
                         <s:extension base="s:boolean">
                           <s:attribute name="onproperty" type="s:string"/>
                           <s:attribute name="keepcount" type="s:unsignedInt"/>
                           <s:attribute name="includeid" type="s:unsignedInt"/>
                         </s:extension>
                       </s:simpleContent>
                     </s:complexType>
                   </s:element>
                   <s:element name="IncludeSpecialTermResults" type="s:boolean" minOccurs="0"/>
                   <s:element name="PreQuerySuggestions" type="s:boolean" minOccurs="0"/>
                   <s:element name="HighlightQuerySuggestions" type="s:boolean" minOccurs="0"/>
                   <s:element name="CapitalizeFirstLetters" type="s:boolean" minOccurs="0"/>
                   <s:element name="ResultProvider" type="s:string" minOccurs="0" />
                   <s:element name="ResubmitFlags" minOccurs="0">
                     <s:complexType>
                       <s:sequence>
                         <s:element name="ResubmitFlag" minOccurs="0" maxOccurs="unbounded">
                           <s:complexType>
                             <s:attribute name="value" type="s:string"/>
                           </s:complexType>
                         </s:element>
                       </s:sequence>
                     </s:complexType>
                   </s:element>
                   <s:element name="EnableSpellcheck" type="s:string" minOccurs="0" />
                   <s:element name="UserContext" minOccurs="0">
                     <s:complexType>
                       <s:attribute name="includeuserprofile" type="s:boolean" use="optional"/>
                       <s:sequence>
                         <s:element name="UserContextData" type="s:string" minOccurs="0" />
                       </s:sequence>
                     </s:complexType>
                   </s:element>
                   <s:element name="FindSimilar" minOccurs="0">
                     <s:complexType>
                       <s:sequence>
                         <s:element name="SimilarType" type="s:string" minOccurs="0"/>
                         <s:element name="SimilarTo" type="t:SimilarToType" minOccurs="0"/>
                         <s:element name="SortSimilar" type="s:boolean" minOccurs="0"/>
                       </s:sequence>
                     </s:complexType>
                   </s:element>
                   <s:element name="IncludeRefinementResults" minOccurs="0">
                     <s:complexType>
                       <s:sequence>
                         <s:element name="Refiners" minOccurs="0">
                           <s:complexType>
                             <s:sequence>
                               <s:element name="Refiner" type="s:string" minOccurs="0" />
                             </s:sequence>
                           </s:complexType>
                         </s:element>
                         <s:element name="MaxShallowRefinementHits" type="s:int" minOccurs="0"/>
                       </s:sequence>
                     </s:complexType>
                   </s:element>
                   <s:element name="RefinementFilters" minOccurs="0">
                     <s:complexType>
                       <s:sequence>
                         <s:element name="RefinementFilter" type="s:string" minOccurs="0" maxOccurs="unbounded">
                         </s:element>
                       </s:sequence>
                     </s:complexType>
                   </s:element>
                   <s:element name="IgnoreAllNoiseQuery" type="s:boolean" minOccurs="0"/>
                   <s:element name="IncludeRelevantResults" type="s:boolean" minOccurs="0"/>
                   <s:element name="IncludeHighConfidenceResults" type="s:boolean" minOccurs="0"/>
                 </s:all>
                 <s:attribute name="domain" type="t:String255" use="optional"/>
               </s:complexType>
             </s:element>
           </s:all>
           <s:attribute name="revision" type="s:unsignedInt" use="optional"/>
           <s:attribute name="build" type="t:String255" use="optional"/>
         </s:complexType>
       </s:element>
       <s:simpleType name="QueryType">
         <s:restriction base="s:string">
           <s:enumeration value="MSSQLFT"/>
           <s:enumeration value="STRING"/>
         </s:restriction>
       </s:simpleType>
       <s:simpleType name="DirectionType">
         <s:restriction base="s:string">
           <s:enumeration value="Ascending"/>
           <s:enumeration value="Descending"/>
         </s:restriction>
       </s:simpleType>
     </s:schema>
     <s:schema elementFormDefault="qualified" targetNamespace="urn:Microsoft.Search.Response">
       <s:import namespace="urn:Microsoft.Search.Types"/>
       <s:import namespace="urn:Microsoft.Search.Response.Document"/>
       <s:element name="ResponsePacket">
         <s:complexType>
           <s:sequence>
             <s:element name="Response">
               <s:complexType>
                 <s:sequence>
                   <s:element name="QueryId" type="t:GUIDType" minOccurs="0"/>
                   <s:element name="Range" minOccurs="0">
                     <s:complexType>
                       <s:sequence>
                         <s:element name="StartAt" type="t:StartAtType"/>
                         <s:element name="Count" type="s:unsignedInt"/>
                         <s:element name="TotalAvailable" type="s:unsignedInt"/>
                         <s:element name="Results" minOccurs="0">
                           <s:complexType>
                             <s:sequence>
                               <s:element ref="d:Document" maxOccurs="unbounded"/>
                             </s:sequence>
                           </s:complexType>
                         </s:element>
                       </s:sequence>
                     </s:complexType>
                   </s:element>
                   <s:element name="Status" type="r:StatusType"/>
                   <s:element name="DebugErrorMessage" type="t:String2048" minOccurs="0"/>
                 </s:sequence>
                 <s:attribute name="domain" type="t:String255" use="optional"/>
               </s:complexType>
             </s:element>
           </s:sequence>
         </s:complexType>
       </s:element>
       <s:simpleType name="StatusType">
         <s:restriction base="s:string">
           <s:enumeration value="SUCCESS"/>
           <s:enumeration value="ERROR_ALL_NOISE"/>
           <s:enumeration value="ERROR_NO_RESPONSE"/>
           <s:enumeration value="ERROR_BAD_QUERY"/>
           <s:enumeration value="ERROR_BAD_PROPERTY"/>
           <s:enumeration value="ERROR_BAD_SCOPE"/>
           <s:enumeration value="ERROR_BAD_REQUEST"/>
           <s:enumeration value="ERROR_NO_RESULTS_FOUND"/>
           <s:enumeration value="ERROR_NO_QUERY"/>
           <s:enumeration value="ERROR_NO_AUTHORIZATION"/>
           <s:enumeration value="ERROR_SERVER"/>
         </s:restriction>
       </s:simpleType>
     </s:schema>
     <s:schema elementFormDefault="qualified" targetNamespace="urn:Microsoft.Search">
       <s:element name="Query">
         <s:complexType>
           <s:sequence>
             <s:element name="queryXml" type="s:string"/>
           </s:sequence>
         </s:complexType>
       </s:element>
       <s:element name="QueryResponse">
         <s:complexType>
           <s:sequence>
             <s:element name="QueryResult" type="s:string"/>
           </s:sequence>
         </s:complexType>
       </s:element>
       <s:element name="Registration">
         <s:complexType>
           <s:sequence>
             <s:element name="registrationXml" type="s:string"/>
           </s:sequence>
         </s:complexType>
       </s:element>
       <s:element name="RegistrationResponse">
         <s:complexType>
           <s:sequence>
             <s:element name="RegistrationResult" type="s:string"/>
           </s:sequence>
         </s:complexType>
       </s:element>
       <s:element name="Status">
         <s:complexType/>
       </s:element>
       <s:element name="StatusResponse">
         <s:complexType>
           <s:sequence>
             <s:element minOccurs="0" maxOccurs="1" name="StatusResult" type="s:string"/>
           </s:sequence>
         </s:complexType>
       </s:element>
       <s:element name="RecordClick">
         <s:complexType>
           <s:sequence>
             <s:element name="clickInfoXml" type="s:string"/>
           </s:sequence>
         </s:complexType>
       </s:element>
       <s:element name="RecordClickResponse">
         <s:complexType/>
       </s:element>
     </s:schema>
     <s:schema elementFormDefault="qualified" targetNamespace="http://microsoft.com/webservices/OfficeServer/QueryService">
       <s:import namespace="urn:Microsoft.Search.Types"/>
       <s:import namespace="urn:schemas-microsoft-com:xml-diffgram-v1"/>
       <s:element name="QueryEx">
         <s:complexType>
           <s:sequence>
             <s:element name="queryXml" type="s:string"/>
           </s:sequence>
         </s:complexType>
       </s:element>
       <s:element name="QueryExResponse">
         <s:complexType>
           <s:sequence>
             <s:element name="QueryExResult" minOccurs="0">
               <s:complexType>
                 <s:sequence>
                   <s:element ref="s:schema"/>
                   <s:any/>
                 </s:sequence>
               </s:complexType>
             </s:element>
           </s:sequence>
         </s:complexType>
       </s:element>
       <s:element name="GetPortalSearchInfo">
         <s:complexType/>
       </s:element>
       <s:element name="GetPortalSearchInfoResponse">
         <s:complexType>
           <s:sequence>
             <s:element name="GetPortalSearchInfoResult" type="s:string" minOccurs="0"/>
           </s:sequence>
         </s:complexType>
       </s:element>
       <s:element name="GetQuerySuggestions">
         <s:complexType>
           <s:sequence>
             <s:element name="queryXml" type="s:string" />
           </s:sequence>
         </s:complexType>
       </s:element>
       <s:element name="GetQuerySuggestionsResponse">
         <s:complexType>
           <s:sequence>
             <s:element minOccurs="0" maxOccurs="1" name="GetQuerySuggestionsResult" type="tns:ArrayOfString" />
           </s:sequence>
         </s:complexType>
       </s:element>
       <s:complexType name="ArrayOfString">
         <s:sequence>
           <s:element minOccurs="0" maxOccurs="unbounded" name="string" nillable="true" type="s:string" />
         </s:sequence>
       </s:complexType>
       <s:element name="GetSearchMetadata">
         <s:complexType/>
       </s:element>
       <s:element name="GetSearchMetadataResponse">
         <s:complexType>
           <s:sequence>
             <s:element name="GetSearchMetadataResult">
               <s:complexType>
                 <s:sequence>
                   <s:element ref="s:schema"/>
                   <s:any/>
                 </s:sequence>
               </s:complexType>
             </s:element>
           </s:sequence>
         </s:complexType>
       </s:element>
       <s:element name="SiteConfigInfo">
         <s:complexType>
           <s:sequence>
             <s:element name="Name" type="s:string"/>
             <s:element name="Id" type="t:GUIDType"/>
             <s:element name="Scopes">
               <s:complexType>
                 <s:sequence>
                   <s:element name="Scope" minOccurs="0" maxOccurs="unbounded">
                     <s:complexType>
                       <s:sequence>
                         <s:element name="Name" type="s:string"/>
                       </s:sequence>
                     </s:complexType>
                   </s:element>
                 </s:sequence>
               </s:complexType>
             </s:element>
           </s:sequence>
         </s:complexType>
       </s:element>
     </s:schema>
   </wsdl:types>
   <wsdl:message name="QuerySoapIn">
     <wsdl:part name="parameters" element="s0:Query"/>
   </wsdl:message>
   <wsdl:message name="QuerySoapOut">
     <wsdl:part name="parameters" element="s0:QueryResponse"/>
   </wsdl:message>
   <wsdl:message name="QueryExSoapIn">
     <wsdl:part name="parameters" element="tns:QueryEx"/>
   </wsdl:message>
   <wsdl:message name="QueryExSoapOut">
     <wsdl:part name="parameters" element="tns:QueryExResponse"/>
   </wsdl:message>
   <wsdl:message name="RegistrationSoapIn">
     <wsdl:part name="parameters" element="s0:Registration"/>
   </wsdl:message>
   <wsdl:message name="RegistrationSoapOut">
     <wsdl:part name="parameters" element="s0:RegistrationResponse"/>
   </wsdl:message>
   <wsdl:message name="StatusSoapIn">
     <wsdl:part name="parameters" element="s0:Status"/>
   </wsdl:message>
   <wsdl:message name="StatusSoapOut">
     <wsdl:part name="parameters" element="s0:StatusResponse"/>
   </wsdl:message>
   <wsdl:message name="GetPortalSearchInfoSoapIn">
     <wsdl:part name="parameters" element="tns:GetPortalSearchInfo"/>
   </wsdl:message>
   <wsdl:message name="GetPortalSearchInfoSoapOut">
     <wsdl:part name="parameters" element="tns:GetPortalSearchInfoResponse"/>
   </wsdl:message>
   <wsdl:message name="GetQuerySuggestionsSoapIn">
     <wsdl:part name="parameters" element="tns:GetQuerySuggestions" />
   </wsdl:message>
   <wsdl:message name="GetQuerySuggestionsSoapOut">
     <wsdl:part name="parameters" element="tns:GetQuerySuggestionsResponse" />
   </wsdl:message>
   <wsdl:message name="GetSearchMetadataSoapIn">
     <wsdl:part name="parameters" element="tns:GetSearchMetadata"/>
   </wsdl:message>
   <wsdl:message name="GetSearchMetadataSoapOut">
     <wsdl:part name="parameters" element="tns:GetSearchMetadataResponse"/>
   </wsdl:message>
   <wsdl:message name="RecordClickSoapIn">
     <wsdl:part name="parameters" element="s0:RecordClick"/>
   </wsdl:message>
   <wsdl:message name="RecordClickSoapOut">
     <wsdl:part name="parameters" element="s0:RecordClickResponse"/>
   </wsdl:message>
   <wsdl:portType name="QueryServiceSoap">
     <wsdl:operation name="Query">
       <wsdl:input message="tns:QuerySoapIn"/>
       <wsdl:output message="tns:QuerySoapOut"/>
     </wsdl:operation>
     <wsdl:operation name="QueryEx">
       <wsdl:input message="tns:QueryExSoapIn"/>
       <wsdl:output message="tns:QueryExSoapOut"/>
     </wsdl:operation>
     <wsdl:operation name="Registration">
       <wsdl:input message="tns:RegistrationSoapIn"/>
       <wsdl:output message="tns:RegistrationSoapOut"/>
     </wsdl:operation>
     <wsdl:operation name="Status">
       <wsdl:input message="tns:StatusSoapIn"/>
       <wsdl:output message="tns:StatusSoapOut"/>
     </wsdl:operation>
     <wsdl:operation name="GetPortalSearchInfo">
       <wsdl:input message="tns:GetPortalSearchInfoSoapIn"/>
       <wsdl:output message="tns:GetPortalSearchInfoSoapOut"/>
     </wsdl:operation>
     <wsdl:operation name="GetQuerySuggestions">
       <wsdl:input message="tns:GetQuerySuggestionsSoapIn" />
       <wsdl:output message="tns:GetQuerySuggestionsSoapOut" />
     </wsdl:operation>
     <wsdl:operation name="GetSearchMetadata">
       <wsdl:input message="tns:GetSearchMetadataSoapIn"/>
       <wsdl:output message="tns:GetSearchMetadataSoapOut"/>
     </wsdl:operation>
     <wsdl:operation name="RecordClick">
       <wsdl:input message="tns:RecordClickSoapIn"/>
       <wsdl:output message="tns:RecordClickSoapOut"/>
     </wsdl:operation>
   </wsdl:portType>
   <wsdl:binding name="QueryServiceSoap" type="tns:QueryServiceSoap">
     <soap:binding transport="http://schemas.xmlsoap.org/soap/http"/>
     <wsdl:operation name="Query">
       <soap:operation soapAction="urn:Microsoft.Search/Query" style="document"/>
       <wsdl:input>
         <soap:body use="literal"/>
       </wsdl:input>
       <wsdl:output>
         <soap:body use="literal"/>
       </wsdl:output>
     </wsdl:operation>
     <wsdl:operation name="QueryEx">
       <soap:operation soapAction="http://microsoft.com/webservices/OfficeServer/QueryService/QueryEx" style="document"/>
       <wsdl:input>
         <soap:body use="literal"/>
       </wsdl:input>
       <wsdl:output>
         <soap:body use="literal"/>
       </wsdl:output>
     </wsdl:operation>
     <wsdl:operation name="Registration">
       <soap:operation soapAction="urn:Microsoft.Search/Registration" style="document"/>
       <wsdl:input>
         <soap:body use="literal"/>
       </wsdl:input>
       <wsdl:output>
         <soap:body use="literal"/>
       </wsdl:output>
     </wsdl:operation>
     <wsdl:operation name="Status">
       <soap:operation soapAction="urn:Microsoft.Search/Status" style="document"/>
       <wsdl:input>
         <soap:body use="literal"/>
       </wsdl:input>
       <wsdl:output>
         <soap:body use="literal"/>
       </wsdl:output>
     </wsdl:operation>
     <wsdl:operation name="GetPortalSearchInfo">
       <soap:operation soapAction="http://microsoft.com/webservices/OfficeServer/QueryService/GetPortalSearchInfo" style="document"/>
       <wsdl:input>
         <soap:body use="literal"/>
       </wsdl:input>
       <wsdl:output>
         <soap:body use="literal"/>
       </wsdl:output>
     </wsdl:operation><wsdl:operation name="GetQuerySuggestions">
       <soap:operation soapAction="http://microsoft.com/webservices/OfficeServer/QueryService/GetQuerySuggestions" style="document"/>
       <wsdl:input>
         <soap:body use="literal"/>
       </wsdl:input>
       <wsdl:output>
         <soap:body use="literal"/>
       </wsdl:output>
     </wsdl:operation>
  
<wsdl:operation name="GetSearchMetadata">
 <soap:operation soapAction="http://microsoft.com/webservices/OfficeServer/QueryService/GetSearchMetadata" style="document"/>
       <wsdl:input>
         <soap:body use="literal"/>
       </wsdl:input>
       <wsdl:output>
         <soap:body use="literal"/>
       </wsdl:output>
     </wsdl:operation>
     <wsdl:operation name="RecordClick">
       <soap:operation soapAction="urn:Microsoft.Search/RecordClick" style="document"/>
       <wsdl:input>
         <soap:body use="literal"/>
       </wsdl:input>
       <wsdl:output>
         <soap:body use="literal"/>
       </wsdl:output>
     </wsdl:operation>
   </wsdl:binding>
   <wsdl:binding name="QueryServiceSoap12" type="tns:QueryServiceSoap">
     <soap12:binding transport="http://schemas.xmlsoap.org/soap/http"/>
     <wsdl:operation name="Query">
       <soap12:operation soapAction="urn:Microsoft.Search/Query" style="document"/>
       <wsdl:input>
         <soap12:body use="literal"/>
       </wsdl:input>
       <wsdl:output>
         <soap12:body use="literal"/>
       </wsdl:output>
     </wsdl:operation>
     <wsdl:operation name="QueryEx">
       <soap12:operation soapAction="http://microsoft.com/webservices/OfficeServer/QueryService/QueryEx" style="document"/>
       <wsdl:input>
         <soap12:body use="literal"/>
       </wsdl:input>
       <wsdl:output>
         <soap12:body use="literal"/>
       </wsdl:output>
     </wsdl:operation>
     <wsdl:operation name="Registration">
       <soap12:operation soapAction="urn:Microsoft.Search/Registration" style="document"/>
       <wsdl:input>
         <soap12:body use="literal"/>
       </wsdl:input>
       <wsdl:output>
         <soap12:body use="literal"/>
       </wsdl:output>
     </wsdl:operation>
     <wsdl:operation name="Status">
       <soap12:operation soapAction="urn:Microsoft.Search/Status" style="document"/>
       <wsdl:input>
         <soap12:body use="literal"/>
       </wsdl:input>
       <wsdl:output>
         <soap12:body use="literal"/>
       </wsdl:output>
     </wsdl:operation>
     <wsdl:operation name="GetPortalSearchInfo">
       <soap12:operation soapAction="http://microsoft.com/webservices/OfficeServer/QueryService/GetPortalSearchInfo" style="document"/>
       <wsdl:input>
         <soap12:body use="literal"/>
       </wsdl:input>
       <wsdl:output>
         <soap12:body use="literal"/>
       </wsdl:output>
     </wsdl:operation>
     
     <wsdl:operation name="GetSearchMetadata">
       <soap12:operation soapAction="http://microsoft.com/webservices/OfficeServer/QueryService/GetSearchMetadata" style="document"/>
       <wsdl:input>
         <soap12:body use="literal"/>
       </wsdl:input>
       <wsdl:output>
         <soap12:body use="literal"/>
       </wsdl:output>
     </wsdl:operation>
     <wsdl:operation name="RecordClick">
       <soap12:operation soapAction="urn:Microsoft.Search/RecordClick" style="document"/>
       <wsdl:input>
         <soap12:body use="literal"/>
       </wsdl:input>
       <wsdl:output>
         <soap12:body use="literal"/>
       </wsdl:output>
     </wsdl:operation>
   </wsdl:binding>
 </wsdl:definitions>