<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
	xmlns="urn:cablelabs:iptvservices:esni:xsd:1"
	targetNamespace="urn:cablelabs:iptvservices:esni:xsd:1" elementFormDefault="qualified"
	version="1.0">
	<xsd:element name="event">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element name="txId" type="xsd:token" minOccurs="1"/>
				<xsd:element name="eventType" type="EventType" minOccurs="1"/>
				<xsd:element name="eventId" type="xsd:token"/>
				<xsd:element name="alternateContent" type="AlternateContent" minOccurs="1"
					maxOccurs="unbounded"/>
			</xsd:sequence>
		</xsd:complexType>
	</xsd:element>
	<xsd:simpleType name="EventType">
		<xsd:restriction base="xsd:token">
			<xsd:pattern value="ALT_CONTENT|private:.+"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:complexType name="AlternateContent">
		<xsd:sequence>
			<xsd:element name="action" type="AlternateAction" minOccurs="0"/>
			<xsd:element name="altContentType" type="AlternateContentType" minOccurs="1"/>
			<xsd:element name="blacklist" type="xsd:boolean" minOccurs="1"/>
			<xsd:element name="providerId" type="xsd:token" minOccurs="1"/>
			<xsd:element name="locations" type="Locations" minOccurs="1" maxOccurs="1"/>
			<xsd:element name="primarySrc" type="Source" minOccurs="1"/>
			<xsd:element name="utcStartTime" type="xsd:dateTime" minOccurs="1"/>
			<xsd:element name="utcStopTime" type="xsd:dateTime" minOccurs="1"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="Locations">
		<xsd:sequence>
			<xsd:element name="location" type="Location" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="Location">
		<xsd:sequence>
			<xsd:element name="altSource" type="Source" minOccurs="0"><xsd:annotation><xsd:documentation>locationId = "0" represents a wildcard for all 
				locations</xsd:documentation></xsd:annotation></xsd:element>
			<xsd:element name="locationId" type="LocationID" minOccurs="1"/>
			<xsd:element name="description" type="xsd:string" minOccurs="0"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="LocationID">
		<xsd:simpleContent>
			<xsd:extension base="xsd:token">
				<xsd:attribute name="type" type="LocationIDType" use="required"/>
			</xsd:extension>
		</xsd:simpleContent>
	</xsd:complexType>
	<xsd:simpleType name="LocationIDType">
		<xsd:restriction base="xsd:token">
			<xsd:pattern value="VIRD|ZIP|ZIP4|MILEAGE|LATLONG|private:.+"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="AlternateAction">
		<xsd:restriction base="xsd:token">
			<xsd:enumeration value="CREATE"/>
			<xsd:enumeration value="GET"/>
			<xsd:enumeration value="UPDATE"/>
			<xsd:enumeration value="DELETE"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="AlternateContentType"><xsd:annotation>
		<xsd:documentation>FORCE_ALTERNATE = Force player to tune to alternate source; 
		FORCE_DESCRIPTION = Force player to display location.description field, 
		but stay on main source; USER_CHOICE = Allow player to choose from the list of alternate 
		sources in locations</xsd:documentation></xsd:annotation>
		<xsd:restriction base="xsd:token">
			<xsd:enumeration value="FORCE_ALTERNATE"/>
			<xsd:enumeration value="FORCE_DESCRIPTION"/>
			<xsd:enumeration value="USER_CHOICE"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:complexType name="Source">
		<xsd:simpleContent>
			<xsd:extension base="xsd:string">
				<xsd:attribute name="type" type="SourceType" use="required"/>
			</xsd:extension>
		</xsd:simpleContent>
	</xsd:complexType>
	<xsd:simpleType name="SourceType">
		<xsd:restriction base="xsd:token">
			<xsd:pattern value="TMS|EIDR|ROVI|private:.+"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:complexType name="VIRD">
		<xsd:sequence>
			<xsd:element name="locationId" type="LocationID" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:element name="vIRDs">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element name="vIRD" type="VIRD" maxOccurs="unbounded"/>
			</xsd:sequence>
		</xsd:complexType>
	</xsd:element>
</xsd:schema>
