﻿<ws:definitions xmlns:ws="http://schemas.xmlsoap.org/wsdl/" 
                xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 
                xmlns:wsoap12="http://schemas.xmlsoap.org/wsdl/soap12/" 
                xmlns:xs="http://www.w3.org/2001/XMLSchema" 
                xmlns="urn:msdn-com:public-content-syndication"   
                xmlns:this="urn:msdn-com:public-content-syndication" 
                targetNamespace="urn:msdn-com:public-content-syndication" 
                xmlns:k="urn:mtpg-com:mtps/2004/1/key" 
                xmlns:p="urn:mtpg-com:mtps/2004/1/primary" 
                xmlns:i="urn:mtpg-com:mtps/2004/1/image" 
                xmlns:c="urn:mtpg-com:mtps/2004/1/common"
                xmlns:f="urn:mtpg-com:mtps/2004/1/feature" 
                xmlns:docinfoCat="urn:microsoft-public-syndication/docinfo/category"  
                xmlns:metaCat="urn:microsoft-public-syndication/metacontent/category" 
                xmlns:mainCat="urn:microsoft-public-syndication/maincontent/category" 
                xmlns:binaryCat="urn:microsoft-public-syndication/binarycontent/category" 
                xmlns:relationshipCat="urn:microsoft-public-syndication/relationshipcontent/category" 
                xmlns:extendedcontent="urn:microsoft-public-syndication/extendedcontent"
                xmlns:primaryCat="urn:mtpg-com:mtps/2004/1/primary/category"
                xmlns:imageCat="urn:mtpg-com:mtps/2004/1/image/category"
                xmlns:featureCat="urn:mtpg-com:mtps/2004/1/feature/category"
								xmlns:sc="urn:msdn-com:public-content-syndication/2006/09/common">
  <ws:types>
    <xs:schema targetNamespace="urn:msdn-com:public-content-syndication" elementFormDefault="qualified">

			<!-- Imports -->
			
			<xs:import namespace="urn:mtpg-com:mtps/2004/1/key" schemaLocation="schemas/urn_mtpg_com_mtps_2004_1_key_atoms.xsd" />
      <xs:import namespace="urn:mtpg-com:mtps/2004/1/common" schemaLocation="schemas/urn_mtpg_com_mtps_2004_1_common_default.xsd" />
      <xs:import namespace="urn:mtpg-com:mtps/2004/1/primary" schemaLocation="schemas/urn_mtpg_com_mtps_2004_1_primary_default.xsd" />
      <xs:import namespace="urn:mtpg-com:mtps/2004/1/image" schemaLocation="schemas/urn_mtpg_com_mtps_2004_1_image_default.xsd" />
      <xs:import namespace="urn:mtpg-com:mtps/2004/1/feature" schemaLocation="schemas/urn_mtpg_com_mtps_2004_1_feature_default.xsd" />
			<xs:import namespace="urn:msdn-com:public-content-syndication/2006/09/common"
                 schemaLocation="schemas/urn_msdn_com_public_content_syndication_2006_09_common.xsd" />

			<!-- Simple types -->
			
      <xs:simpleType name="documentTypes">
        <xs:restriction base="xs:string">
          <xs:enumeration value="primary" />
          <xs:enumeration value="common" />
          <xs:enumeration value="image" />
          <xs:enumeration value="feature" />
        </xs:restriction>
      </xs:simpleType>

			<!-- Complex types -->

      <xs:complexType name="availableVersionsAndLocales">
        <xs:sequence>
          <xs:element name="availableVersionAndLocale" 
                      type="availableVersionAndLocale" 
                      minOccurs="0" 
                      maxOccurs="unbounded">
          </xs:element>
        </xs:sequence>
      </xs:complexType>

      <xs:complexType name="availableVersionAndLocale">
        <xs:sequence>
          <xs:element ref="k:locale" minOccurs="1" maxOccurs="1" />
          <xs:element ref="k:version" minOccurs="1" maxOccurs="1" />
        </xs:sequence>
      </xs:complexType>

      <xs:complexType name="navigationKey">
        <xs:sequence>
          <xs:element ref="k:contentId"  minOccurs="1" maxOccurs="1"/>
          <xs:element ref="k:locale"     minOccurs="1" maxOccurs="1" />
          <xs:element ref="k:version"    minOccurs="1" maxOccurs="1" />
        </xs:sequence>
      </xs:complexType>

      <xs:complexType name="navigationPath">
        <xs:sequence>
          <xs:element minOccurs="0" maxOccurs="1" name="navigationPathNodes" type="navigationPathNodes" />
        </xs:sequence>
      </xs:complexType>

      <xs:complexType name="navigationPaths">
        <xs:sequence>
          <xs:element minOccurs="0" maxOccurs="unbounded" name="navigationPath" type="navigationPath" />
        </xs:sequence>
      </xs:complexType>

      <xs:complexType name="navigationPathNode">
        <xs:sequence>
          <xs:element minOccurs="1" maxOccurs="1" name="title" type="xs:string" />
          <xs:element minOccurs="0" maxOccurs="1" name="isPhantom" type="xs:boolean" />
          <xs:element minOccurs="1" maxOccurs="1" name="navigationNodeKey" type="navigationKey" />
          <xs:element minOccurs="1" maxOccurs="1" name="contentNodeKey" type="navigationKey" />
        </xs:sequence>
      </xs:complexType>

      <xs:complexType name="navigationPathNodes">
        <xs:sequence>
          <xs:element minOccurs="0" maxOccurs="unbounded" name="navigationPathNode" type="navigationPathNode" />
        </xs:sequence>
      </xs:complexType>

      <xs:complexType name="requestedDocument">
        <xs:attribute type="xs:string" name="selector" use="required"/>
        <xs:attribute type="documentTypes" name="type" use="required" />
      </xs:complexType>

			<!-- Elements -->

      <xs:element name="getContentRequest">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="contentIdentifier" type="xs:string" />
            <xs:element ref="k:locale" minOccurs="0" maxOccurs="1" />
            <xs:element ref="k:version" minOccurs="0" maxOccurs="1" />
            <xs:element name="requestedDocuments">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="requestedDocument" 
                              type="requestedDocument" 
                              minOccurs="0" 
                              maxOccurs="unbounded" />
                </xs:sequence>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>

      <xs:element name="getContentResponse">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="k:contentId" minOccurs="1" maxOccurs="1" />
            <xs:element ref="k:contentGuid" minOccurs="1" maxOccurs="1" />
            <xs:element ref="k:contentAlias" minOccurs="0" maxOccurs="1" />
            <xs:element ref="k:locale" minOccurs="0" maxOccurs="1" />
            <xs:element ref="k:version" minOccurs="0" maxOccurs="1" />
            <xs:element name="availableVersionsAndLocales" type="availableVersionsAndLocales">
            </xs:element>
            <xs:element name="primaryDocuments" >
              <xs:complexType>
                <xs:sequence>
                  <xs:element ref="p:primary" minOccurs="0" maxOccurs="unbounded" />
                </xs:sequence>
              </xs:complexType>
            </xs:element>
            <xs:element name="imageDocuments" >
              <xs:complexType>
                <xs:sequence>
                  <xs:element ref="i:image" minOccurs="0" maxOccurs="unbounded" />
                </xs:sequence>
              </xs:complexType>
            </xs:element>
            <xs:element name="commonDocuments" >
              <xs:complexType>
                <xs:sequence>
                  <xs:element ref="c:common" minOccurs="0" maxOccurs="unbounded" />
                </xs:sequence>
              </xs:complexType>
            </xs:element>
            <xs:element name="featureDocuments" >
              <xs:complexType>
                <xs:sequence>
                  <xs:element ref="f:feature" minOccurs="0" maxOccurs="unbounded" />
                </xs:sequence>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>

      <xs:element name="getNavigationPathsRequest">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="root" type="navigationKey" />
            <xs:element name="target" type="navigationKey" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>

      <xs:element name="getNavigationPathsResponse">
        <xs:complexType>
          <xs:sequence>
            <xs:element minOccurs="0" maxOccurs="1" name="navigationPaths" type="navigationPaths" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>

      <xs:element name="mtpsFaultDetail" type="sc:mtpsFaultDetailType" />

    </xs:schema>
  </ws:types>

	<ws:message name="AppID">
		<ws:part name="AppID" element="sc:appId" />
	</ws:message>
	
  <ws:message name="MtpsFaultDetail">
    <ws:part name="data" element="this:mtpsFaultDetail" />
  </ws:message>

  <ws:message name="GetContentRequest">
    <ws:part name="data" element="this:getContentRequest"/>
  </ws:message>

  <ws:message name="GetContentResponse">
    <ws:part name="data" element="this:getContentResponse"/>
  </ws:message>

  <ws:message name="GetNavigationPathsRequest">
    <ws:part name="data" element="this:getNavigationPathsRequest" />
  </ws:message>

  <ws:message name="GetNavigationPathsResponse">
    <ws:part name="data" element="this:getNavigationPathsResponse" />
  </ws:message>

  <ws:portType name="ContentServicePortType">
    <ws:operation name="GetContent">
      <ws:input message="GetContentRequest"/>
      <ws:output message="GetContentResponse"/>
      <ws:fault name="error" message="MtpsFaultDetail" />
    </ws:operation>
    <ws:operation name="GetNavigationPaths">
      <ws:input message="GetNavigationPathsRequest"/>
      <ws:output message="GetNavigationPathsResponse"/>
      <ws:fault name="error" message="MtpsFaultDetail" />
    </ws:operation>
  </ws:portType>

  <ws:binding name="ContentServiceBinding" type="this:ContentServicePortType">
    <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
    <ws:operation name="GetContent">
      <soap:operation soapAction="urn:msdn-com:public-content-syndication/GetContent" 
                      style="document"
                      ws:required="true" />
      <ws:input>
        <soap:body use="literal"/>
				<soap:header message="this:AppID" part="AppID" use="literal" />
      </ws:input>
      <ws:output>
        <soap:body use="literal"/>
      </ws:output>
      <ws:fault name="error">
        <soap:fault name="error" use="literal" />
      </ws:fault>
    </ws:operation>
    <ws:operation name="GetNavigationPaths">
      <soap:operation soapAction="urn:msdn-com:public-content-syndication/GetNavigationPaths" 
                      style="document"
                      ws:required="true"/>
      <ws:input>
        <soap:body use="literal"/>
        <soap:header message="this:AppID" part="AppID" use="literal" />
      </ws:input>
      <ws:output>
        <soap:body use="literal"/>
      </ws:output>
      <ws:fault name="error">
        <soap:fault name="error" use="literal" />
      </ws:fault>
    </ws:operation>
  </ws:binding>

  <ws:binding name="ContentServiceBinding12" type="ContentServicePortType">
    <wsoap12:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
    <ws:operation name="GetContent">
      <wsoap12:operation soapAction="urn:msdn-com:public-content-syndication/GetContent" 
                         style="document"
                         soapActionRequired="true"/>
      <ws:input>
        <wsoap12:body use="literal"/>
				<wsoap12:header messsage="this:AppID" part="AppID" user="literal" />
      </ws:input>
      <ws:output>
        <wsoap12:body use="literal"/>
      </ws:output>
      <ws:fault name="error">
        <wsoap12:fault name="error" use="literal" />
      </ws:fault>
    </ws:operation>
    <ws:operation name="GetNavigationPaths">
      <wsoap12:operation soapAction="urn:msdn-com:public-content-syndication/GetNavigationPaths" 
                         style="document"
                         soapActionRequired="true" />
      <ws:input>
        <wsoap12:body use="literal"/>
				<wsoap12:header messsage="this:AppID" part="AppID" user="literal" />
      </ws:input>
      <ws:output>
        <wsoap12:body use="literal"/>
      </ws:output>
      <ws:fault name="error">
        <wsoap12:fault name="error" use="literal" />
      </ws:fault>
    </ws:operation>
  </ws:binding>

  <ws:service name="ContentService">

    <ws:port name="ContentService" binding="ContentServiceBinding">
      <soap:address location="http://services.msdn.microsoft.com/ContentServices/ContentService.asmx"/>
    </ws:port>

    <ws:port name="ContentService12" binding="ContentServiceBinding12">
      <wsoap12:address location="http://services.msdn.microsoft.com/ContentServices/ContentService.asmx"/>
    </ws:port>

  </ws:service>

</ws:definitions>
