<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://iperity.com/compass"
	xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
	xmlns="http://iperity.com/compass"
	xmlns:jxb="http://java.sun.com/xml/ns/jaxb" jxb:version="1.0">
	
	<xs:include schemaLocation="data.xsd" />

	<xs:complexType name="notification">
		<xs:attribute name="type" type="xs:string" use="required" />
		<xs:attribute name="timestamp" type="xs:long" use="required" />
	</xs:complexType>
	
	<xs:element name="notification" type="notification" />

	<xs:complexType name="userNotification">
		<xs:complexContent>
			<xs:extension base="notification">
				<xs:sequence>
					<xs:element name="userId" type="xs:string" />
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	
	<xs:complexType name="userCreateNotification">
		<xs:complexContent>
			<xs:extension base="userNotification">
				<xs:sequence>
					<xs:element name="user" type="user" minOccurs="0" />
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	
	<xs:complexType name="userUpdateNotification">
		<xs:complexContent>
			<xs:extension base="userNotification">
				<xs:sequence maxOccurs="unbounded">
					<xs:element name="propertyChange" type="propertyChange" />
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>

	<xs:complexType name="userStatusNotification">
		<xs:complexContent>
			<xs:extension base="userNotification">
				<xs:sequence>
					<xs:element name="receiveCalls" type="receiveCalls" />
					<xs:element name="displayStatus" type="xs:string" minOccurs="0" />
					<xs:element name="wrapupState" type="wrapupState" minOccurs="0" />
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>

	<xs:complexType name="queueNotification">
		<xs:complexContent>
			<xs:extension base="notification">
				<xs:sequence>
					<xs:element name="queueId" type="xs:string" />
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>

	<xs:complexType name="queueCallNotification">
		<xs:complexContent>
			<xs:extension base="queueNotification">
				<xs:sequence>
					<xs:element name="queueCall" type="queueCall" />
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>

	<xs:complexType name="queueCallEnterNotification">
		<xs:complexContent>
			<xs:extension base="queueCallNotification">
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>

	<xs:complexType name="queueCallLeaveNotification">
		<xs:complexContent>
			<xs:extension base="queueCallNotification">
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	
	<xs:complexType name="queueCreateNotification">
		<xs:complexContent>
			<xs:extension base="queueNotification">
				<xs:sequence>
					<xs:element name="queue" type="queue" />
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>

	<xs:complexType name="queueUpdateNotification">
		<xs:complexContent>
			<xs:extension base="queueNotification">
				<xs:sequence maxOccurs="unbounded">
					<xs:element name="propertyChange" type="propertyChange" />
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>

	<xs:complexType name="recordingNotification">
		<xs:complexContent>
			<xs:extension base="notification">
				<xs:sequence>
					<xs:element name="recordingId" type="xs:string" />
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>

	<xs:complexType name="recordingCreateNotification">
		<xs:complexContent>
			<xs:extension base="recordingNotification">
				<xs:sequence>
					<xs:element name="recording" type="recording" />
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>

	<xs:complexType name="queueMemberNotification">
		<xs:complexContent>
			<xs:extension base="notification">
				<xs:sequence>
					<xs:element name="member" type="queueMember" />
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>

	<xs:complexType name="queueMemberLeaveNotification">
		<xs:complexContent>
			<xs:extension base="queueMemberNotification">
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>

	<xs:complexType name="queueMemberEnterNotification">
		<xs:complexContent>
			<xs:extension base="queueMemberNotification">
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	
	<xs:complexType name="queueMemberUpdateNotification">
		<xs:complexContent>
			<xs:extension base="queueMemberNotification">
				<xs:sequence>
					<xs:element name="propertyChange" type="propertyChange" />
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	
	<xs:complexType name="callNotification">
		<xs:complexContent>
			<xs:extension base="notification">
				<xs:sequence>
					<xs:element name="callId" type="xs:string" />
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>

	<xs:complexType name="callStartNotification">
		<xs:complexContent>
			<xs:extension base="callNotification">
				<xs:sequence>
					<xs:element name="call" type="call" />
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>

	<xs:complexType name="callEndNotification">
		<xs:complexContent>
			<xs:extension base="callNotification">
				<xs:sequence>
					<xs:element name="endReason" type="callEndReason" />
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>

	<xs:complexType name="callUpdateNotification">
		<xs:complexContent>
			<xs:extension base="notification">
				<xs:sequence>
					<xs:element name="call" type="call" />
					<xs:element name="updateType" type="callUpdateType" />
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>

	<xs:complexType name="callStepResultNotification">
		<xs:complexContent>
			<xs:extension base="callNotification">
				<xs:sequence>
					<xs:element name="result" type="xs:string" />
					<xs:element name="side" type="callSide" />
					<xs:element name="callpoint" type="callpoint" />
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>

	<xs:complexType name="queueExitNotification">
		<xs:complexContent>
			<xs:extension base="callNotification">
				<xs:sequence>
					<xs:element name="queueExit" type="xs:string" />
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>

</xs:schema>