<?xml version="1.0" encoding="ISO-8859-1" ?>
<?xml-stylesheet type="text/xsl" href="protocol.xsl" ?>

<tc>
	<protocol>
		<syntax>
			<field name="command">
				<desc>Befehl</desc>
			</field>
			<separator asc="2" />
			<field name="datasize">
				<desc>Größe der Daten</desc>
			</field>
			<separator asc="1" />
			<field name="data">
				<desc>Daten</desc>
			</field>
		</syntax>
		<version>0.1</version>
	</protocol>

	<command name="welcome" sender="Server">
		<desc>sendet wichtige Server-Eigenschaften</desc>
		<send>
			<constraint type="first" />
			<constraint type="single" />
		</send>
		<syntax>
			<field name="status">
				<desc>Status des Servers</desc>
				<value name="ok">Server ist online, Login möglich</value>
				<value name="full">Server ist voll, Login nicht möglich</value>
			</field>
			<separator asc="2" />
			<field name="protocolver">
				<desc>unterstützte Protokollversionen des Servers (durch Kommas getrennt)</desc>
			</field>
			<optional>
				<separator asc="2" />
				<field name="uniqueID">
					<desc>eindeutige Identifizierung des Clients (notwendig für Authentifizierung)</desc>
				</field>
				<separator asc="2" />
				<field name="authlist">
					<desc>Liste der vom Server unterstützten Authentifizierungsmethoden (durch Kommas getrennt)</desc>
				</field>
				<separator asc="2" />
				<field name="cryptolist">
					<desc>Liste der vom Server unterstützten Verschlüsselungsmethoden (durch Kommas getrennt)</desc>
				</field>
				<separator asc="2" />
				<field name="enclist">
					<desc>Liste der vom Server unterstützten Zeichenkodierungen (durch Kommas getrennt)</desc>
				</field>
				<separator asc="2" />
				<field name="maxtxtlen">
					<desc>maximal mögliche Nachrichtenlänge auf dem Server</desc>
				</field>
			</optional>
		</syntax>
	</command>

	<command name="setConnectionProps" sender="Client">
		<desc>setzt wichtige Verbindungseigenschaften</desc>
		<send>
			<constraint type="single" />
			<constraint type="follow_recv">welcome</constraint>
		</send>
		<syntax>
			<field name="protocolver">
				<desc>ausgewählte Protokollversion</desc>
			</field>
			<separator asc="2" />
			<field name="encoding">
				<desc>ausgewählte Zeichenkodierung</desc>
			</field>
			<separator asc="2" />
			<field name="cryptoalgo">
				<desc>ausgewählte Verschlüsselung</desc>
			</field>
			<separator asc="2" />
			<field name="authtype">
				<desc>ausgewählte Authentifizierungsmethode</desc>
			</field>
		</syntax>
	</command>
	<command name="acceptConnectionParams" sender="Server">
		<desc>akzeptiert Verbindungseigenschaften oder lehnt sie ab</desc>
		<send>
			<constraint type="single" />
			<constraint type="follow_recv">setConnectionProps</constraint>
		</send>
		<syntax>
			<field name="status">
				<desc>Status der Abarbeitung des Befehls <see>setConnectionProps</see></desc>
				<value name="ok">Verbindungseigenschaften erfolgreich gesetzt</value>
				<value name="invalid_auth">nicht unterstützte oder keine Authentifizierungsmethode wurde angegeben</value>
				<value name="invalid_crypto">nicht unterstützte oder keine Verschlüsselung wurde angegeben</value>
				<value name="invalid_encoding">nicht unterstützte oder keine Zeichenkodierung wurde angegeben</value>
				<value name="invalid_protocol">nicht unterstützte oder keine Protokollversion wurde angegeben</value>
			</field>
		</syntax>
	</command>

	<command name="login" sender="Client">
		<desc>Start des Anmeldevorganges</desc>
		<send>
			<constraint type="single" />
			<constraint type="after_recv">acceptConnectionParams</constraint>
		</send>
		<syntax>
			<field name="programver">
				<desc>Name und Version des Clientprogrammes</desc>
			</field>
			<separator asc="2" />
			<field name="chatname">
				<desc>Chatname (Nick)</desc>
			</field>
			<separator asc="2" />
			<field name="chatcolor">
				<desc>Chatfarbe</desc>
			</field>
		</syntax>
	</command>
	<command name="acceptLogin" sender="Server">
		<desc>Abschluß des Anmeldevorgangs</desc>
		<send>
			<constraint type="single" />
			<constraint type="after_recv">login</constraint>
		</send>
		<syntax>
			<field name="status">
				<desc>Status der Abarbeitung des Befehls <see>login</see></desc>
				<value name="ok">Anmeldung erfolgreich</value>
				<value name="auth_failed">Authentifizierung ist fehlgeschlagen (z.B. falsches Passwort)</value>
				<value name="invalid_chatname">Chatname wurde vom Server nicht akzeptiert (z.B. gebannt)</value>
				<value name="noguests">Gastzugang ist deaktiviert</value>
				<value name="used">Chatname wird bereits verwendet</value>
			</field>
			<optional>
				<separator asc="2" />
				<field name="chatname">
					<desc>evtl. serverseitig geänderter Chatname</desc>
				</field>
				<separator asc="2" />
				<field name="stdroom">
					<desc>Standardchatraum des Servers (leer, wenn keiner gesetzt)</desc>
				</field>
				<separator asc="2" />
				<field name="onlyroom">
					<desc>einzigster Chatraum des Servers (leer, wenn keiner/mehrere vorhanden)</desc>
				</field>
			</optional>
		</syntax>
	</command>
	<command name="logout" sender="Client">
		<desc>Client will Verbindung zum Server trennen</desc>
		<send>
			<constraint type="single" />
			<constraint type="after_recv">acceptLogin</constraint>
		</send>
		<syntax>
			<optional>
				<field name="reason">
					<desc>Grund</desc>
				</field>
			</optional>
		</syntax>
	</command>

	<command name="pluginData" sender="Both">
		<desc>Austausch von Daten der Plugins</desc>
		<send>
			<constraint who="Client" type="after_recv">acceptConnectionParam</constraint>
			<constraint who="Server" type="after_send">acceptConnectionParam</constraint>
		</send>
		<syntax>
			<field name="pluginID">
				<desc>systemweit eindeutige Identifikation des Plugins</desc>
			</field>
			<separator asc="2" />
			<field name="receiver/sender">
				<desc>Empfänger/Sender des Befehls (leer: an/vom Server)</desc>
			</field>
			<separator asc="2" />
			<field name="command">
				<desc>Befehl an das entfernte Plugin</desc>
			</field>
			<separator asc="2" />
			<field name="data">
				<desc>Daten zum Befehl</desc>
			</field>
		</syntax>
	</command>
	<command name="pluginResponse" sender="Both">
		<desc>Fehlermeldung nach Absenden eines Pluginbefehls</desc>
		<send>
			<constraint type="follow_recv">pluginData</constraint>
		</send>
		<syntax>
			<field name="pluginID">
				<desc>systemweit eindeutige Identifikation des Plugins</desc>
			</field>
			<separator asc="2" />
			<field name="receiver/sender">
				<desc>Empfänger/Sender des Befehls (leer: an/vom Server)</desc>
			</field>
			<separator asc="2" />
			<field name="status">
				<desc>Grund des Fehlers</desc>
				<value name="notfound_plugin">Empfänger hat das Plugin nicht gefunden</value>
				<value name="notfound_user">Empfänger wurde vom Server nicht gefunden</value>
			</field>
		</syntax>
	</command>

	<command name="enterRoom" sender="Client">
		<desc>betritt oder erstellt einen Chatraum</desc>
		<send>
			<constraint type="after_recv">acceptLogin</constraint>
		</send>
		<syntax>
			<field name="chatroom">
				<desc>zu betretender/erstellender Chatraum</desc>
			</field>
			<separator asc="2" />
			<field name="description">
				<desc>Beschreibung des Chatraumes, wenn er erstellt wird</desc>
			</field>
		</syntax>
	</command>
	<command name="leaveRoom" sender="Client">
		<desc>verlässt einen Chatraum</desc>
		<send>
			<constraint type="after_send">enterChatroom</constraint>
		</send>
		<syntax>
			<field name="chatroom">
				<desc>zu verlassender Chatraum</desc>
			</field>
			<separator asc="2" />
			<field name="reason">
				<desc>Grund für das Verlassen</desc>
			</field>
		</syntax>
	</command>
	<command name="acceptRoom" sender="Server">
		<desc>bestätigt das Betreten/Erstellen eines Chatraumes</desc>
		<send>
			<constraint type="follow_recv">enterRoom</constraint>
		</send>
		<syntax>
			<field name="status">
				<desc>Status der Abarbeitung des Befehls <see>enterRoom</see></desc>
				<value name="created">Chatraum erstellt</value>
				<value name="joined">Chatraum betreten</value>
				<value name="already_joined">Chatraum wurde schon betreten</value>
				<value name="auth_failed">Authentifizierung ist fehlgeschlagen (z.B. falsches Passwort)</value>
				<value name="invalid_chatroom">Chatraumname war nicht gültig</value>
				<value name="not_allowed">Person darf den Chatraum nicht betreten/erstellen</value>
			</field>
			<separator asc="2" />
			<field name="chatroom">
				<desc>Name des Chatraums</desc>
			</field>
		</syntax>
	</command>

	<command name="getServerInfo" sender="Client">
		<desc>fragt weitere Informationen vom Server ab</desc>
		<send>
			<constraint type="after_recv">acceptConnectionParam</constraint>
		</send>
	</command>
	<command name="serverInfo" sender="Server">
		<desc>sendet weitere Informationen vom Server</desc>
		<send>
			<constraint type="follow_recv">getServerInfo</constraint>
		</send>
		<syntax>
			<field name="version">
				<desc>Name und Version des Serverprogrammes</desc>
			</field>
			<separator asc="2" />
			<field name="adminName">
				<desc>Names des Administrators</desc>
			</field>
			<separator asc="2" />
			<field name="adminEmail">
				<desc>eMail des Adminstrators</desc>
			</field>
			<separator asc="2" />
			<field name="homepage">
				<desc>Homepage vom Chat</desc>
			</field>
		</syntax>
	</command>

	<command name="getUserData" sender="Client">
		<desc>fragt eine oder alle Eigenschaft(en) eines Benutzers ab</desc>
		<notice>Eigenschaften siehe <see>setUserData</see></notice>
		<send>
			<constraint type="after_recv">acceptLogin</constraint>
		</send>
		<syntax>
			<field name="chatname">
				<desc>Chatname (Nick)</desc>
			</field>
			<separator asc="2" />
			<field name="chatroom">
				<desc>für welchen Chatraum (leer, wenn global)</desc>
			</field>
			<separator asc="2" />
			<field name="property">
				<desc>zu lesende Eigenschaft (leer, wenn alle zurückgegeben werden sollen)</desc>
			</field>
			<optional>
				<separator asc="2" />
				<field name="level">
					<desc>Detaillevel (wird nur beachtet, wenn property leer ist)</desc>
					<value name="user">nur benutzerdefinierte Eigenschaften zurückgeben</value>
					<value name="system">nur vordefinierte Eigenschaften zurückgeben</value>
					<value name="all">alle Benutzereigenschaften zurückgeben</value>
				</field>
			</optional>
		</syntax>
	</command>
	<command name="userData" sender="Server">
		<desc>
			enthält eine oder alle Eigenschaft(en) eines Benutzers
			(entweder durch Befehl <see>getUserData</see> oder automatisch durch den Server bei Änderungen)
		</desc>
		<notice>Eigenschaften siehe <see>setUserData</see></notice>
		<send>
			<constraint type="follow_recv">getUserData</constraint>
		</send>
		<syntax>
			<field name="status">
				<desc>Status der Anfrage</desc>
				<value name="ok">Anfrage erfolgreich</value>
				<value name="notfound_room">Chatraum wurde nicht gefunden bzw. Benutzer ist nicht im Chatraum</value>
				<value name="notfound_user">Benutzer wurde nicht gefunden</value>
				<value name="unknown">Eigenschaft gibt es nicht beim Server</value>
			</field>
			<separator asc="2" />
			<field name="chatname">
				<desc>Chatname (Nick)</desc>
			</field>
			<separator asc="2" />
			<field name="chatroom">
				<desc>für welchen Chatraum es gilt (leer, wenn global gültig)</desc>
			</field>
			<separator asc="2" />
			<field name="property">
				<desc>Eigenschaft des Benutzers</desc>
			</field>
			<optional>
				<separator asc="4" />
				<field name="value">
					<desc>Wert der Eigenschaft</desc>
				</field>
				<optional>
					<separator asc="3" />
					weitere Eigenschaft-Werte-Paare
				</optional>
			</optional>
		</syntax>
	</command>

	<command name="setUserData" sender="Client">
		<desc>ändert eigene Benutzereigenschaft (Selbstdefinierte möglich über Server-Plugins)</desc>
		<send>
			<constraint type="after_recv">acceptLogin</constraint>
		</send>
		<syntax>
			<field name="chatroom">
				<desc>für welchen Chatraum es gilt (leer, wenn global gültig)</desc>
			</field>
			<separator asc="2" />
			<field name="property">
				<desc>zu ändernde Eigenschaft</desc>
				<value name="away">Away-Status</value>
				<value name="chatname">Chatname (Nick)</value>
				<value name="chatcolor">Chatfarbe</value>
			</field>
			<separator asc="2" />
			<field name="value">
				<desc>neuer Wert der Eigenschaft</desc>
				<value name="bei Eigenschaft 'away'">
					Away-Status oder leer, wenn nicht (mehr) abwesend<br />
				    <i>(intern wird nur 0/1 gespeichert für normal/abwesend)</i>
				</value>
				<value name="bei Eigenschaft 'chatname'">neuer Chatname</value>
				<value name="bei Eigenschaft 'chatcolor'">neue Farbe</value>
			</field>
		</syntax>
	</command>
	<command name="acceptUserData" sender="Server">
		<desc>akzeptiert neue Eigenschaft eines Benutzers</desc>
		<notice>Eigenschaften siehe <see>setUserData</see></notice>
		<send>
			<constraint type="follow_recv">setUserData</constraint>
		</send>
		<syntax>
			<field name="status">
				<desc>Status der Abarbeitung des Befehls <see>setUserData</see></desc>
				<value name="ok">Änderung erfolgreich</value>
				<value name="invalid_chatroom">die Eigenschaft kann nur global gesetzt werden</value>
				<value name="invalid_global">die Eigenschaft kann nur für einen Chatraum gesetzt werden</value>
				<value name="invalid_value">ungültiger Wert für Eigenschaft</value>
				<value name="notfound">Chatraum wurde nicht gefunden bzw. Benutzer ist nicht im Chatraum</value>
				<value name="readonly">Eigenschaft kann nicht direkt vom Client geändert werden (z.B. admin)</value>
				<value name="unknown">Eigenschaft gibt es nicht beim Server</value>
			</field>
			<separator asc="2" />
			<field name="chatroom">
				<desc>für welchen Chatraum es gilt (leer, wenn global gültig)</desc>
			</field>
			<separator asc="2" />
			<field name="property">
				<desc>Eigenschaft</desc>
			</field>
		</syntax>
	</command>

	<command name="userJoined" sender="Server">
		<desc>ein Benutzer hat den Chatraum betreten</desc>
		<notice>es werden nur vordefinierte Eigenschaften mitgesendet</notice>
		<send>
			<constraint type="after_recv">enterRoom</constraint>
		</send>
		<syntax>
			<field name="chatname">
				<desc>Chatname (Nick)</desc>
			</field>
			<separator asc="2" />
			<field name="chatcolor">
				<desc>Chatfarbe</desc>
			</field>
			<separator asc="2" />
			<field name="chatroom">
				<desc>Chatraum</desc>
			</field>
			<separator asc="2" />
			<optional>
				<field name="property">
					<desc>Eigenschaft des Benutzers</desc>
				</field>
				<separator asc="4" />
				<field name="value">
					<desc>Wert der Eigenschaft</desc>
				</field>
				<optional>
					<separator asc="3" />
					weitere Eigenschaft-Werte-Paare
				</optional>
			</optional>
		</syntax>
	</command>
	<command name="userLeft" sender="Server">
		<desc>ein Benutzer hat den Chatraum verlassen</desc>
		<send>
			<constraint type="after_recv">enterRoom</constraint>
		</send>
		<syntax>
			<field name="chatname">
				<desc>Chatname (Nick)</desc>
			</field>
			<separator asc="2" />
			<field name="chatroom">
				<desc>Chatraum</desc>
			</field>
			<optional>
				<separator asc="2" />
				<field name="reason">
					<desc>Grund für das Verlassen</desc>
				</field>
			</optional>
		</syntax>
	</command>

	<command name="getAwayMsg" sender="Both">
		<desc>fragt Away-Nachricht ab</desc>
		<send>
			<constraint who="Client" type="after_recv">acceptLogin</constraint>
			<constraint who="Server" type="after_send">acceptLogin</constraint>
		</send>
		<syntax>
			<field name="receiver/sender">
				<desc>Empfänger/Sender der Away-Nachricht</desc>
			</field>
		</syntax>
	</command>
	<command name="awayMsg" sender="Both">
		<desc>Away-Nachricht</desc>
		<send>
			<constraint who="Client" type="follow_recv">getAwayMsg</constraint>
			<constraint who="Server" type="after_recv">getAwayMsg</constraint>
		</send>
		<syntax>
			<field name="receiver/sender">
				<desc>Empfänger/Sender der Away-Nachricht</desc>
			</field>
			<separator asc="2" />
			<field name="message">
				<desc>Away-Nachricht (leer, wenn Benutzer nicht abwesend ist)</desc>
			</field>
		</syntax>
	</command>

	<command name="getWelcomeMsg" sender="Client">
		<desc>fragt Willkommensnachricht ab</desc>
		<send>
			<constraint type="after_recv">acceptConnectionParam</constraint>
		</send>
		<syntax>
			<field name="chatroom">
				<desc>Chatraum (wenn leer, dann allg. Willkommensnachricht vom Server)</desc>
			</field>
		</syntax>
	</command>
	<command name="welcomeMsg" sender="Server">
		<desc>Willkommensnachricht</desc>
		<send>
			<constraint type="follow_recv">getWelcomeMsg</constraint>
		</send>
		<syntax>
			<field name="message">
				<desc>Willkommensnachricht</desc>
			</field>
		</syntax>
	</command>

	<command name="ping" sender="Both">
		<desc>Ping senden, um Verbindung zu überprüfen</desc>
		<send>
			<constraint type="everytime" />
		</send>
	</command>
	<command name="pong" sender="Both">
		<send>
			<constraint type="follow_recv">ping</constraint>
		</send>
		<desc>Antwort auf Befehl ping</desc>
	</command>

	<command name="cmd" sender="Client">
		<desc>Befehl für die Server-Plugins</desc>
		<send>
			<constraint type="after_recv">enterRoom</constraint>
		</send>
		<syntax>
			<field name="command">
				<desc>Befehl</desc>
			</field>
			<separator asc="2" />
			<field name="data">
				<desc>Daten</desc>
			</field>
		</syntax>
	</command>
	<command name="acceptCmd" sender="Server">
		<desc>Status der Abarbeitung des Befehls <see>cmd</see></desc>
		<send>
			<constraint type="follow_recv">cmd</constraint>
		</send>
		<syntax>
			<field name="status">
				<desc>Status</desc>
				<value name="ok">Befehl erfolgreich abgearbeitet</value>
				<value name="unknown">Befehl wurde von keinem Server-Plugin bearbeitet</value>
			</field>
			<separator asc="2" />
			<field name="command">
				<desc>Befehl</desc>
			</field>
			<separator asc="2" />
			<field name="infos">
				<desc>weitere Informationen (Nachricht) vom Plugin</desc>
			</field>
		</syntax>
	</command>

	<command name="msg" sender="Both">
		<desc>Nachricht senden</desc>
		<send>
			<constraint who="Client" type="after_recv">acceptLogin</constraint>
			<constraint who="Server" type="after_send">acceptLogin</constraint>
		</send>
		<syntax>
			<field name="type">
				<desc>Nachrichtentyp</desc>
				<value name="normal">normale Nachricht</value>
				<value name="me">Nachricht über eine Tätigkeit (z.B.:"ChL programmiert gerade")</value>
				<value name="shout">Schreien</value>
				<value name="private">private Nachricht</value>
				<value name="system">Systemnachricht</value>
			</field>
			<separator asc="2" />
			<field name="msg">
				<desc>die Nachricht</desc>
			</field>
			<optional>
				<separator asc="2" />
				<field name="receiver/sender">
					<desc>Liste der Empfänger/Sender durch Zeichen chr(3) getrennt (nicht bei system)</desc>
				</field>
				<separator asc="2" />
				<field name="chatroom">
					<desc>Chatraum (nicht bei system und private)</desc>
				</field>
			</optional>
		</syntax>
	</command>

	<command name="roomClosed" sender="Server">
		<desc>wird gesendet, wenn ein Chatraum geschlossen wurde</desc>
		<send>
			<constraint type="after_send">acceptLogin</constraint>
		</send>
		<syntax>
			<field name="chatroom">
				<desc>Chatraum</desc>
			</field>
		</syntax>
	</command>

	<command name="getRoomList" sender="Client">
		<desc>Abfrage der Chatraumliste</desc>
		<send>
			<constraint type="after_recv">acceptLogin</constraint>
		</send>
		<syntax>
			<field name="details">
				<desc>ob auch weitere Informationen zum Chatraum enthalten sein sollen</desc>
				<value name="0">nein</value>
				<value name="1">ja</value>
			</field>
		</syntax>
	</command>
	<command name="roomList" sender="Server">
		<desc>Chatraumliste</desc>
		<send>
			<constraint type="follow_recv">getRoomList</constraint>
		</send>
		<syntax>
			<field name="details">
				<desc>ob auch weitere Informationen zum Chatraum enthalten sind</desc>
				<value name="0">nein</value>
				<value name="1">ja</value>
			</field>
			<separator asc="2" />
			<field name="allowcreate">
				<desc>ob Chaträume auf Server erstellt werden dürfen</desc>
				<value name="0">nicht erlaubt</value>
				<value name="1">erlaubt</value>
			</field>
			<separator asc="2" />
			<optional>
				<field name="name">
					<desc>Chatraumname</desc>
				</field>
				<optional>
					<separator asc="4" />
					<field name="desc">
						<desc>Chatraumbeschreibung</desc>
					</field>
					<separator asc="4" />
					<field name="users">
						<desc>Personenanzahl</desc>
					</field>
					<separator asc="4" />
					<field name="needauth">
						<desc>ob Chatraum zugangsbeschränkt ist</desc>
						<value name="0">nein</value>
						<value name="1">ja</value>
					</field>
				</optional>
			</optional>
			<optional>
				<separator asc="3" />
				weitere Chaträume
			</optional>
		</syntax>
	</command>

	<command name="getRoomData" sender="Client">
		<desc>Informationen zu einem Chatraum abfragen</desc>
		<send>
			<constraint type="after_recv">acceptLogin</constraint>
		</send>
		<syntax>
			<field name="chatroom">
				<desc>Name des Chatraums</desc>
			</field>
		</syntax>
	</command>
	<command name="roomData" sender="Server">
		<desc>Chatrauminformationen</desc>
		<send>
			<constraint type="follow_recv">getRoomData</constraint>
		</send>
		<syntax>
			<field name="status">
				<desc>Status der Anfrage</desc>
				<value name="ok">Anfrage erfolgreich</value>
				<value name="notfound">Chatraum wurde nicht gefunden</value>
			</field>
			<separator asc="2" />
			<field name="chatroom">
				<desc>Chatraumname</desc>
			</field>
			<optional>
				<separator asc="2" />
				<field name="desc">
					<desc>Chatraumbeschreibung</desc>
				</field>
				<separator asc="2" />
				<field name="users">
					<desc>Personenanzahl</desc>
				</field>
				<separator asc="2" />
				<field name="needauth">
					<desc>ob Chatraum zugangsbeschränkt ist</desc>
					<value name="0">nein</value>
					<value name="1">ja</value>
				</field>
			</optional>
		</syntax>
	</command>

	<command name="getUserList" sender="Client">
		<desc>Abfrage der Benutzerliste eines Chatraums</desc>
		<send>
			<constraint type="after_recv">acceptLogin</constraint>
		</send>
		<syntax>
			<field name="level">
				<desc>Detaillevel der zusätzlichen Informationen</desc>
				<value name="none">keine zusätzlichen Informationen</value>
				<value name="user">zusätzlich benutzerdefinierte Eigenschaften</value>
				<value name="system">zusätzlich vordefinierte Eigenschaften</value>
				<value name="all">alle Benutzereigenschaften</value>
			</field>
			<separator asc="2" />
			<field name="chatroom">
				<desc>Name des Chatraums</desc>
			</field>
		</syntax>
	</command>
	<command name="userList" sender="Server">
		<desc>Benutzerliste eines Chatraums</desc>
		<send>
			<constraint type="follow_recv">getUserList</constraint>
		</send>
		<syntax>
			<field name="status">
				<desc>Status der Anfrage</desc>
				<value name="ok">Anfrage wurde erfolgreich ausgeführt</value>
				<value name="denied">Zugriff auf die Liste wurde verweigert</value>
				<value name="notfound">Chatraum wurde nicht gefunden</value>
			</field>
			<separator asc="2" />
			<field name="level">
				<desc>Detaillevel der zusätzlichen Informationen</desc>
				<value name="none">keine zusätzlichen Informationen</value>
				<value name="user">zusätzlich benutzerdefinierte Eigenschaften</value>
				<value name="system">zusätzlich vordefinierte Eigenschaften</value>
				<value name="all">alle Benutzereigenschaften</value>
			</field>
			<separator asc="2" />
			<field name="chatroom">
				<desc>Name des Chatraums</desc>
			</field>
			<optional>
				<separator asc="2" />
				<field name="name">
					<desc>Chatname</desc>
				</field>
				<optional>
					<separator asc="4" />
					<field name="property">
						<desc>Eigenschaft des Benutzers</desc>
					</field>
					<separator asc="5" />
					<field name="value">
						<desc>Wert der Eigenschaft</desc>
					</field>
					<optional>
						<separator asc="4" />
						weitere Eigenschaft-Werte-Paare
					</optional>
				</optional>
			</optional>
			<optional>
				<separator asc="3" />
				weitere Benutzer
			</optional>
		</syntax>
	</command>
</tc>


