<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
  xmlns:tns="http://feed.elasticstats.com/schema/nfl/schedule-v1.0.xsd" 
  targetNamespace="http://feed.elasticstats.com/schema/nfl/schedule-v1.0.xsd"
           elementFormDefault="qualified">

  <xs:element name="games" type="tns:weekType" />
  
  <xs:element name="season">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="week" type="tns:weekType" minOccurs="0" maxOccurs="unbounded" />  
      </xs:sequence>
      <xs:attribute name="season" use="required" type="xs:integer" />
      <xs:attribute name="type" use="optional" type="xs:string" />
    </xs:complexType>
  </xs:element>
  
  <xs:complexType name="weekType">
    <xs:sequence>
      <xs:element name="game" type="tns:gameType" maxOccurs="unbounded" minOccurs="0"/>
      <xs:element name="bye_week" type="tns:byeweekType" minOccurs="0" maxOccurs="1" />
    </xs:sequence>
    <xs:attribute name="season" use="optional" type="xs:integer"/>
    <xs:attribute name="type" use="optional" type="xs:string" />
    <xs:attribute name="week" use="required" type="xs:integer"/>
  </xs:complexType>
  
  <xs:complexType name="byeweekType">
      <xs:sequence>
        <xs:element name="team" minOccurs="0" maxOccurs="unbounded">
          <xs:complexType>
            <xs:attribute name="id" use="required" type="xs:string" />
          </xs:complexType>
        </xs:element>
      </xs:sequence>
  </xs:complexType>
  
  <xs:complexType name="gameType">
    <xs:sequence>
      <xs:element name="venue" type="tns:venueType" minOccurs="0" maxOccurs="1"/>
      <xs:element name="weather" type="tns:weatherType" minOccurs="0" maxOccurs="1"/>
      <xs:element name="broadcast" type="tns:broadcastType" minOccurs="0" maxOccurs="1" />
      <xs:element name="links" minOccurs="0" maxOccurs="1">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="link" type="tns:linkType" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="away" use="required" type="xs:string"/>
    <xs:attribute name="home" use="required" type="xs:string"/>
    <xs:attribute name="id" use="required" type="xs:string"/>
    <xs:attribute name="scheduled" use="required" type="xs:dateTime"/>
    <xs:attribute name="home_rotation" use="optional" type="xs:string" />
    <xs:attribute name="away_rotation" use="optional" type="xs:string" />
    <xs:attribute name="status" use="optional">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="scheduled" />
          <xs:enumeration value="created" />
          <xs:enumeration value="inprogress" />
          <xs:enumeration value="complete" />
          <xs:enumeration value="closed" />
          <xs:enumeration value="delayed" />
          <xs:enumeration value="reopened" />
          <xs:enumeration value="flex-schedule" />
          <xs:enumeration value="time-tbd" />
          
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>    
  </xs:complexType>

  <xs:complexType name="venueType">
    <xs:attribute name="id" use="required" type="xs:string"/>
    <xs:attribute name="name" use="required" type="xs:string"/>
    <xs:attribute name="surface" use="optional" type="xs:string"/>
    <xs:attribute name="type" use="optional" type="xs:string"/>
    <xs:attribute name="capacity" use="optional" type="xs:integer"/>
    <xs:attribute name="address" use="optional" type="xs:string"/>
    <xs:attribute name="city" use="optional" type="xs:string"/>
    <xs:attribute name="country" use="optional" type="xs:string"/>
    <xs:attribute name="state" use="optional" type="xs:string"/>
    <xs:attribute name="zip" use="optional" type="xs:string"/>
  </xs:complexType>
  
  <xs:complexType name="weatherType">
    <xs:sequence>
      <xs:element name="wind">
        <xs:complexType>
          <xs:attribute name="direction" use="optional" type="xs:string"/>
          <xs:attribute name="speed" use="optional" type="xs:string"/>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="condition" use="optional" type="xs:string"/>
    <xs:attribute name="humidity" use="optional" type="xs:string"/>
    <xs:attribute name="temperature" use="optional" type="xs:string"/>
  </xs:complexType>
  
  <xs:complexType name="broadcastType">
    <xs:attribute name="network" type="xs:string" use="optional"/>
    <xs:attribute name="cable" type="xs:string" use="optional"/>
    <xs:attribute name="satellite" type="xs:string" use="optional"/>
    <xs:attribute name="internet" type="xs:string" use="optional"/>
  </xs:complexType>
  
  <xs:complexType name="linkType">
    <xs:attribute name="href" use="required" type="xs:anyURI"/>
    <xs:attribute name="rel" use="optional" type="xs:string"/>
    <xs:attribute name="type" use="optional" type="xs:string"/>
  </xs:complexType>

</xs:schema>
