<?xml version="1.0" encoding="utf-8" ?> 
<xs:schema id="DataLinx1_1" 
	xmlns="http://www.rentlinx.com"
	targetNamespace="http://www.rentlinx.com"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
	elementFormDefault="qualified">
	<xs:element name="RentLinx">
		<xs:complexType>
			<xs:all>
				<xs:element name="Users" minOccurs="0" maxOccurs="1">
					<xs:complexType>
						<xs:sequence>
							<xs:element name="User" minOccurs="0" maxOccurs="unbounded">
								<xs:complexType>
									<xs:attribute name="IsAdmin" type="xs:boolean" use="required" />
									<xs:attribute name="RentLinxID" type="xs:string" use="required" />
									<xs:attribute name="Email" type="xs:string" use="required" />
									<xs:attribute name="FirstName" type="xs:string" use="required" />
									<xs:attribute name="LastName" type="xs:string" use="required" />
									<xs:attribute name="PropertyIDs" type="xs:string" />
								</xs:complexType>
							</xs:element>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
				<xs:element name="Properties" minOccurs="0" maxOccurs="1">
					<xs:complexType>
						<xs:sequence>
							<xs:element name="Property" minOccurs="0" maxOccurs="unbounded">
								<xs:complexType>
									<xs:sequence>
										<xs:element name="Description" type="xs:string" minOccurs="0" maxOccurs="1" />
										<xs:element name="MarketingName" type="xs:string" minOccurs="0" maxOccurs="1"/>
										<xs:element name="Address" type="xs:string" minOccurs="0" maxOccurs="1"/>
										<xs:element name="City" type="xs:string" minOccurs="0" maxOccurs="1"/>
										<xs:element name="State" type="xs:string" minOccurs="0" maxOccurs="1"/>
										<xs:element name="Zip" type="xs:string" minOccurs="0" maxOccurs="1"/>
										<xs:element name="Zip4" type="xs:string" minOccurs="0" maxOccurs="1"/>
										<xs:element name="YearBuilt" type="xs:integer" minOccurs="0" maxOccurs="1"/>
										<xs:element name="NumberUnits" type="xs:string" minOccurs="0" maxOccurs="1"/>
										<xs:element name="Latitude" type="xs:decimal" minOccurs="0" maxOccurs="1"/>
										<xs:element name="Longitude" type="xs:decimal" minOccurs="0" maxOccurs="1"/>
										<xs:element name="AcceptsHcv" type="xs:boolean" minOccurs="0" maxOccurs="1"/>
										<xs:element name="WaitList" type="xs:integer" minOccurs="0" maxOccurs="1"/>
										<xs:element name="WaitListDetails" type="xs:string" minOccurs="0" maxOccurs="1"/>
										<xs:element name="PhoneNumber" type="xs:string" minOccurs="0" maxOccurs="1"/>
										<xs:element name="FaxNumber" type="xs:string" minOccurs="0" maxOccurs="1"/>
										<xs:element name="EmailAddress" type="xs:string" minOccurs="0" maxOccurs="1"/>
										<xs:element name="Website" type="xs:string" minOccurs="0" maxOccurs="1"/>
										<xs:element name="OfficeHours" type="xs:string" minOccurs="0" maxOccurs="1"/>

										<xs:element name="Amenity" minOccurs="0" maxOccurs="unbounded">
											<xs:complexType>
												<xs:simpleContent>
													<xs:extension base="xs:string">
														<xs:attribute name="AmenityID" type="xs:integer" use="required" />
													</xs:extension>
												</xs:simpleContent>
											</xs:complexType>
										</xs:element>

										<xs:element name="PropertyType" minOccurs="0" maxOccurs="unbounded">
											<xs:complexType>
												<xs:simpleContent>
													<xs:extension base="PropertyTypes">
														<xs:attribute name="Primary" type="xs:boolean" />
													</xs:extension>
												</xs:simpleContent>
											</xs:complexType>
										</xs:element>

										<xs:element name="PropertyPhoto" minOccurs="0" maxOccurs="unbounded">
											<xs:complexType>
												<xs:simpleContent>
													<xs:extension base="xs:string">
														<xs:attribute name="ImageUrl" type="xs:string" use="required" />
														<xs:attribute name="ModificationDate" type="xs:dateTime" />
														<xs:attribute name="Primary" type="xs:boolean" />
													</xs:extension>
												</xs:simpleContent>
											</xs:complexType>
										</xs:element>
										<xs:element name="Unit" minOccurs="0" maxOccurs="unbounded">
											<xs:complexType>
												<xs:sequence>
													<xs:element name="Name" type="xs:string" minOccurs="0" maxOccurs="1"/>
													<xs:element name="Description" type="xs:string" minOccurs="0" maxOccurs="1"/>
													<xs:element name="IsOpenToLease" type="xs:boolean" minOccurs="0" maxOccurs="1"/>
													<xs:element name="DateAvailable" type="xs:date" minOccurs="0" maxOccurs="1"/>
													<xs:element name="DateLeasedThrough" type="xs:date" minOccurs="0" maxOccurs="1"/>
													<xs:element name="RentIsBasedOnIncome" type="xs:boolean" minOccurs="0" maxOccurs="1"/>
													<xs:element name="Rent" type="xs:string" minOccurs="0" maxOccurs="1"/>
													<xs:element name="Deposit" type="xs:string" minOccurs="0" maxOccurs="1"/>
													<xs:element name="Bedrooms" type="xs:integer" minOccurs="0" maxOccurs="1"/>
													<xs:element name="FullBaths" type="xs:integer" minOccurs="0" maxOccurs="1"/>
													<xs:element name="HalfBaths" type="xs:integer" minOccurs="0" maxOccurs="1"/>
													<xs:element name="SquareFeet" type="IntegerBlankOK" minOccurs="0" maxOccurs="1"  />
													<xs:element name="IsMobilityAccessible" type="xs:boolean" minOccurs="0" maxOccurs="1"/>
													<xs:element name="IsVisionAccessible" type="xs:boolean" minOccurs="0" maxOccurs="1"/>
													<xs:element name="IsHearingAccessible" type="xs:boolean" minOccurs="0" maxOccurs="1"/>
													<xs:element name="UnitPhoto" minOccurs="0" maxOccurs="unbounded">
														<xs:complexType>
															<xs:simpleContent>
																<xs:extension base="xs:string">
																	<xs:attribute name="ImageUrl" type="xs:string" use="required" />
																	<xs:attribute name="ModificationDate" type="xs:dateTime" />
																	<xs:attribute name="Primary" type="xs:boolean" />
																</xs:extension>
															</xs:simpleContent>
														</xs:complexType>
													</xs:element>
													<xs:element name="Amenity" minOccurs="0" maxOccurs="unbounded">
														<xs:complexType>
															<xs:simpleContent>
																<xs:extension base="xs:string">
																	<xs:attribute name="AmenityID" type="xs:integer" use="required" />
																</xs:extension>
															</xs:simpleContent>
														</xs:complexType>
													</xs:element>
												</xs:sequence>
												<xs:attribute name="LocalUnitID" type="xs:string" use="required" />
												<xs:attribute name="UnitID" type="xs:string" use="optional" />
											</xs:complexType>
										</xs:element>
									</xs:sequence>
									<xs:attribute name="LocalPropertyID" type="xs:string" use="required" />
									<xs:attribute name="PropertyID" type="xs:string" use="optional" />
									<xs:attribute name="HasLeasingOffice" type="xs:boolean" />
								</xs:complexType>
							</xs:element>							
						</xs:sequence>						
					</xs:complexType>
				</xs:element>
				<xs:element name="Extras" minOccurs="0" maxOccurs="1">
					<xs:complexType>
						<xs:sequence>
							<xs:element name="Attachment" minOccurs="0" maxOccurs="unbounded">
								<xs:complexType>
									<xs:simpleContent>
										<xs:extension base="xs:string">
											<xs:attribute name="AttachmentUrl" type="xs:string" use="required" />
											<xs:attribute name="ModificationDate" type="xs:dateTime" use="optional" />
											<xs:attribute name="PropertyIDs" type="xs:string" use="required" />
										</xs:extension>
									</xs:simpleContent>
								</xs:complexType>
							</xs:element>
							<xs:element name="Link" minOccurs="0" maxOccurs="unbounded">
								<xs:complexType>
									<xs:simpleContent>
										<xs:extension base="xs:string">
											<xs:attribute name="LinkUrl" type="xs:string" use="required" />
											<xs:attribute name="PropertyIDs" type="xs:string" use="required" />
										</xs:extension>
									</xs:simpleContent>
								</xs:complexType>
							</xs:element>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
			</xs:all>
			<xs:attribute name="RentLinxID" type="xs:string" use="optional" />
			<xs:attribute name="Password" type="xs:string" use="optional" />
			<xs:attribute name="HashedPassword" type="xs:string" use="optional" />
			<xs:attribute name="RentLinxCompanyID" type="xs:integer" use="required" />
			<xs:attribute name="DataLinxVersion" type="xs:string" />
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="PropertyTypes">
		<xs:restriction base="xs:string">
			<xs:enumeration value="Apartments" />
			<xs:enumeration value="House" />
			<xs:enumeration value="Condo" />
			<xs:enumeration value="Duplex" />
			<xs:enumeration value="Triplex" />
			<xs:enumeration value="4plex" />
			<xs:enumeration value="Senior" />
			<xs:enumeration value="AssistedLiving" />
			<xs:enumeration value="Subsidized" />
			<xs:enumeration value="GardenStyle" />
			<xs:enumeration value="MidRise" />
			<xs:enumeration value="Townhouse" />
			<xs:enumeration value="Flat" />
			<xs:enumeration value="Cooperative" />
			<xs:enumeration value="HighRise" />
			<xs:enumeration value="CorporateSuite" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IntegerBlankOK">
		<xs:union memberTypes="xs:integer empty" />
	</xs:simpleType>
	<xs:simpleType name="empty">
		<xs:restriction base="xs:string">
			<xs:enumeration value="" />
		</xs:restriction>
	</xs:simpleType>
</xs:schema>
