<xsd:schema 
	xmlns:xsd="http://www.w3.org/2001/XMLSchema"
	xmlns="http://entp.hud.gov/mic"
        targetNamespace="http://entp.hud.gov/mic"
        elementFormDefault="qualified">

<!-- elements -->

<xsd:element name="process" type="inputType"/>
<xsd:element name="results" type="outputType"/>

<!-- complex elements -->

<xsd:complexType name="inputType">
	<xsd:sequence>
		<xsd:element name="MORTGAGEDATA" type="mortgageDataInputType"/>
	</xsd:sequence>
</xsd:complexType>

<xsd:complexType name="outputType">
	<xsd:sequence>
		<xsd:element name="MORTGAGEDATA" type="mortgageDataOutputType"/>
	</xsd:sequence>
</xsd:complexType>

<xsd:complexType name="mortgageDataInputType">
	<xsd:sequence>
		<xsd:element name="PROCESSSTATUS" type="ProcessStatusInputType"/>
		<xsd:element name="APPLICATION" type="applicationType"/>
	</xsd:sequence>
	<xsd:attribute name="MISMOVersionID" type="xsd:string"/>
</xsd:complexType>

<xsd:complexType name="mortgageDataOutputType">
	<xsd:sequence>
		<xsd:element name="PROCESSSTATUS" type="ProcessStatusOutputType"/>
		<xsd:element name="APPLICATION" type="applicationType"/>
		<xsd:element name="PARTY" type="partyType"/>
	</xsd:sequence>
	<xsd:attribute name="MISMOVersionID" type="xsd:string"/>
</xsd:complexType>

<xsd:complexType name="ProcessStatusInputType">
	<xsd:sequence>
		<xsd:element name="ProcessStatusCode" type="ProcessStatusCodeInputType"/>
		<xsd:element name="ProcessStatusRequestor" type="xsd:string"/>
	</xsd:sequence>
</xsd:complexType>

<xsd:complexType name="ProcessStatusOutputType">
	<xsd:sequence>
		<xsd:element name="ProcessStatusCode" type="ProcessStatusCodeOutputType"/>
		<xsd:element name="ProcessStatusMessage" type="mType"/>
	</xsd:sequence>
</xsd:complexType>

<xsd:complexType name="mType">
        <xsd:simpleContent>
            <xsd:extension base="xsd:string">
                <xsd:attribute name="sCode" type="xsd:integer"/>
            </xsd:extension>
        </xsd:simpleContent>
</xsd:complexType>

<xsd:complexType name="applicationType">
	<xsd:sequence>
		<xsd:element name="AgencyCaseIdentifier" type="xsd:string"/>
		<xsd:element name="UNDERWRITINGCASE" type="uwcType"/>
	</xsd:sequence>
</xsd:complexType>

<xsd:complexType name="uwcType">
	<xsd:sequence>
		<xsd:element name="LOAN_ORIGINATOR" type="loType"/>
		<xsd:element name="FHAVA" type="fhavaType"/>
	</xsd:sequence>
</xsd:complexType>

<xsd:complexType name="loType">
	<xsd:attribute name="_EmployerIdentificationNumber" type="xsd:string" />
</xsd:complexType>

<xsd:complexType name="fhavaType">
	<xsd:sequence>
		<xsd:element name="FHAVAOriginatorIdentifier" type="xsd:string"/>
		<xsd:element name="FHAVASponsorIdentifier" type="xsd:string"/>
		<xsd:element name="FHAVAAssignmentLetterDate" type="xsd:integer"/><!-- yyyymmdd -->
	</xsd:sequence>
</xsd:complexType>

<xsd:complexType name="partyType">
	<xsd:sequence>
		<xsd:element name="PartyName" type="xsd:string"/>
		<xsd:element name="Address1" type="xsd:string"/>
		<xsd:element name="City" type="xsd:string"/>
		<xsd:element name="State" type="stateType"/>
		<xsd:element name="PostalCode" type="xsd:string"/>
	</xsd:sequence>
	<xsd:attribute name="PARTYID" type="xsd:string"/>
	<xsd:attribute name="PartyType" type="ptypType"/>
</xsd:complexType>

<!-- simple elements -->

<xsd:simpleType name="ptypType">
	<xsd:restriction base="xsd:string">
		<xsd:enumeration value="Lender"/>
		<xsd:enumeration value="RequestingParty"/>
	</xsd:restriction>
</xsd:simpleType>

<xsd:simpleType name="ProcessStatusCodeInputType">
	<xsd:restriction base="xsd:string">
		<xsd:enumeration value="Query"/>
		<xsd:enumeration value="Update"/>
	</xsd:restriction>
</xsd:simpleType>

<xsd:simpleType name="ProcessStatusCodeOutputType">
	<xsd:restriction base="xsd:string">
		<xsd:enumeration value="Success"/>
		<xsd:enumeration value="Error"/>
		<xsd:enumeration value="UNAVAILABLE"/>
	</xsd:restriction>
</xsd:simpleType>

<xsd:simpleType name="stateType">
	<xsd:restriction base="xsd:string">
		<xsd:enumeration value="AL"/>
		<xsd:enumeration value="AK"/>
		<xsd:enumeration value="AS"/>
		<xsd:enumeration value="AZ"/>
		<xsd:enumeration value="AR"/>
		<xsd:enumeration value="CA"/>
		<xsd:enumeration value="CO"/>
		<xsd:enumeration value="CT"/>
		<xsd:enumeration value="DE"/>
		<xsd:enumeration value="DC"/>
		<xsd:enumeration value="FL"/>
		<xsd:enumeration value="GA"/>
		<xsd:enumeration value="GU"/>
		<xsd:enumeration value="HI"/>
		<xsd:enumeration value="ID"/>
		<xsd:enumeration value="IL"/>
		<xsd:enumeration value="IN"/>
		<xsd:enumeration value="IA"/>
		<xsd:enumeration value="KS"/>
		<xsd:enumeration value="KY"/>
		<xsd:enumeration value="LA"/>
		<xsd:enumeration value="ME"/>
		<xsd:enumeration value="MD"/>
		<xsd:enumeration value="MA"/>
		<xsd:enumeration value="MI"/>
		<xsd:enumeration value="MN"/>
		<xsd:enumeration value="MP"/>
		<xsd:enumeration value="MS"/>
		<xsd:enumeration value="MO"/>
		<xsd:enumeration value="MP"/>
		<xsd:enumeration value="MT"/>
		<xsd:enumeration value="NE"/>
		<xsd:enumeration value="NV"/>
		<xsd:enumeration value="NH"/>
		<xsd:enumeration value="NJ"/>
		<xsd:enumeration value="NM"/>
		<xsd:enumeration value="NY"/>
		<xsd:enumeration value="NC"/>
		<xsd:enumeration value="ND"/>
		<xsd:enumeration value="OH"/>
		<xsd:enumeration value="OK"/>
		<xsd:enumeration value="OR"/>
		<xsd:enumeration value="PA"/>
		<xsd:enumeration value="PR"/>
		<xsd:enumeration value="RI"/>
		<xsd:enumeration value="SC"/>
		<xsd:enumeration value="SD"/>
		<xsd:enumeration value="TN"/>
		<xsd:enumeration value="TX"/>
		<xsd:enumeration value="UT"/>
		<xsd:enumeration value="VT"/>
		<xsd:enumeration value="VI"/>
		<xsd:enumeration value="VA"/>
		<xsd:enumeration value="WA"/>
		<xsd:enumeration value="WV"/>
		<xsd:enumeration value="WI"/>
		<xsd:enumeration value="WY"/>
	</xsd:restriction>
</xsd:simpleType>

</xsd:schema>