<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--
Copyright 1999-2004 The Apache Software Foundation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->

    <!-- ====================================================================== -->
    <!-- GENERATED FILE, DO NOT EDIT, EDIT THE TEMPLATE INSTEAD! -->
    <!-- Main Page Section -->
    <!-- ====================================================================== -->
    
     <html>
        <head>
		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
		<meta name="author" content="OpenMeetings Team">
		<meta name="email" content="sebawagner@apache.org">
		<title>OpenMeetings API Methods</title>
		<link rel="stylesheet" type="text/css" href="openmeetings_docs.css">
        </head>
	<body>
	
		<h3>Available WebServices:</h3>
	
		<iframe src="WebserviceIndex.html" width="100%" height="210" name="WebserviceIndex.html"
			scrolling="no" marginheight="0" marginwidth="0" frameborder="0">
		  <p>Your Browser does not support frames ...</p>
		</iframe>
		
		<hr />
	
	   <h3>WebService: RoomService</h3>
	   <p>RoomService contains methods to manipulate rooms and create invitation hash<p>
	   <p>WSDL sample Url: <a href="http://localhost:5080/openmeetings/services/RoomService?wsdl">http://localhost:5080/openmeetings/services/RoomService?wsdl</a><p>
	
	<!-- Links to Methods -->
	   <h3>Index of Methods available in RoomService</h3>
	   
       <div class="navigation">
	                               <div>
                <a href="#getRoomsPublic"><b>getRoomsPublic</b></a><br/>
                <div class="navigation_comment"><i >Returns an Object of Type RoomsList which contains a list of
 Room-Objects. Every Room-Object contains a Roomtype and all informations
 about that Room. The List of current-users in the room is Null if you get
 them via SOAP. The Roomtype can be 1 for conference rooms or 2 for
 audience rooms.</i></div>
                </div>
                                               <div>
                <a href="#deleteFlvRecording"><b>deleteFlvRecording</b></a><br/>
                <div class="navigation_comment"><i >Deletes a flv recording</i></div>
                </div>
                                               <div>
                <a href="#getFlvRecordingByExternalUserId"><b>getFlvRecordingByExternalUserId</b></a><br/>
                <div class="navigation_comment"><i >Gets a list of flv recordings</i></div>
                </div>
                                               <div>
                <a href="#getFlvRecordingByExternalRoomTypeAndCreator"><b>getFlvRecordingByExternalRoomTypeAndCreator</b></a><br/>
                <div class="navigation_comment"><i >Gets a list of flv recordings</i></div>
                </div>
                                               <div>
                <a href="#getFlvRecordingByExternalRoomTypeByList"><b>getFlvRecordingByExternalRoomTypeByList</b></a><br/>
                <div class="navigation_comment"><i >Gets a list of flv recordings</i></div>
                </div>
                                               <div>
                <a href="#getFlvRecordingByExternalRoomType"><b>getFlvRecordingByExternalRoomType</b></a><br/>
                <div class="navigation_comment"><i >Gets a list of flv recordings</i></div>
                </div>
                                               <div>
                <a href="#getFlvRecordingByRoomId"><b>getFlvRecordingByRoomId</b></a><br/>
                <div class="navigation_comment"><i >Get list of recordings</i></div>
                </div>
                                               <div>
                <a href="#getRoomTypes"><b>getRoomTypes</b></a><br/>
                <div class="navigation_comment"><i >List of available room types</i></div>
                </div>
                                               <div>
                <a href="#getRoomCounters"><b>getRoomCounters</b></a><br/>
                <div class="navigation_comment"><i >Returns current users for rooms ids</i></div>
                </div>
                                               <div>
                <a href="#getRoomById"><b>getRoomById</b></a><br/>
                <div class="navigation_comment"><i >returns a conference room object</i></div>
                </div>
                                               <div>
                <a href="#getRoomWithCurrentUsersById"><b>getRoomWithCurrentUsersById</b></a><br/>
                <div class="navigation_comment"><i ></i></div>
                </div>
                                               <div>
                <a href="#getRoomWithClientObjectsById"><b>getRoomWithClientObjectsById</b></a><br/>
                <div class="navigation_comment"><i >Returns a object of type RoomReturn</i></div>
                </div>
                                               <div>
                <a href="#getRooms"><b>getRooms</b></a><br/>
                <div class="navigation_comment"><i >Returns a List of Objects of Rooms You can use "name" as value for
 orderby or rooms_id</i></div>
                </div>
                                               <div>
                <a href="#getRoomsWithCurrentUsers"><b>getRoomsWithCurrentUsers</b></a><br/>
                <div class="navigation_comment"><i >Returns a List of Objects of Rooms You can use "name" as value for
 orderby or rooms_id. It also fills the attribute currentUsers in the
 Room-Object</i></div>
                </div>
                                               <div>
                <a href="#addRoom"><b>addRoom</b></a><br/>
                <div class="navigation_comment"><i >TODO: Fix Organization Issue
 
 deprecated use addRoomWithModeration instead</i></div>
                </div>
                                               <div>
                <a href="#addRoomWithModeration"><b>addRoomWithModeration</b></a><br/>
                <div class="navigation_comment"><i >Create a conference room</i></div>
                </div>
                                               <div>
                <a href="#addRoomWithModerationAndQuestions"><b>addRoomWithModerationAndQuestions</b></a><br/>
                <div class="navigation_comment"><i >this SOAP Method has an additional param to enable or disable the buttons
 to apply for moderation this does only work in combination with the
 room-type restricted</i></div>
                </div>
                                               <div>
                <a href="#addRoomWithModerationQuestionsAndAudioType"><b>addRoomWithModerationQuestionsAndAudioType</b></a><br/>
                <div class="navigation_comment"><i >adds a new room with options for user questions and audio only</i></div>
                </div>
                                               <div>
                <a href="#addRoomWithModerationQuestionsAudioTypeAndHideOptions"><b>addRoomWithModerationQuestionsAudioTypeAndHideOptions</b></a><br/>
                <div class="navigation_comment"><i >adds a new room with options for user questions, audio only and hide</i></div>
                </div>
                                               <div>
                <a href="#getRoomIdByExternalId"><b>getRoomIdByExternalId</b></a><br/>
                <div class="navigation_comment"><i >Checks if a room with this exteralRoomId + externalRoomType does exist,
 if yes it returns the room id if not, it will create the room and then
 return the room id of the newly created room</i></div>
                </div>
                                               <div>
                <a href="#updateRoom"><b>updateRoom</b></a><br/>
                <div class="navigation_comment"><i >TODO: Fix Organization Issue deprecated use updateRoomWithModeration</i></div>
                </div>
                                               <div>
                <a href="#updateRoomWithModeration"><b>updateRoomWithModeration</b></a><br/>
                <div class="navigation_comment"><i >Updates a conference room by its room id</i></div>
                </div>
                                               <div>
                <a href="#updateRoomWithModerationAndQuestions"><b>updateRoomWithModerationAndQuestions</b></a><br/>
                <div class="navigation_comment"><i ></i></div>
                </div>
                                               <div>
                <a href="#updateRoomWithModerationQuestionsAudioTypeAndHideOptions"><b>updateRoomWithModerationQuestionsAudioTypeAndHideOptions</b></a><br/>
                <div class="navigation_comment"><i >update room with options for user questions, audio only and hide</i></div>
                </div>
                                               <div>
                <a href="#deleteRoom"><b>deleteRoom</b></a><br/>
                <div class="navigation_comment"><i >Delete a room by its room id</i></div>
                </div>
                                               <div>
                <a href="#kickUser"><b>kickUser</b></a><br/>
                <div class="navigation_comment"><i >kick all uses of a certain room</i></div>
                </div>
                                               <div>
                <a href="#addRoomWithModerationAndExternalType"><b>addRoomWithModerationAndExternalType</b></a><br/>
                <div class="navigation_comment"><i >Add a new conference room with option to set the external room type, the
 external room type should be set if multiple applications use the same
 OpenMeetings instance</i></div>
                </div>
                                               <div>
                <a href="#addRoomWithModerationExternalTypeAndAudioType"><b>addRoomWithModerationExternalTypeAndAudioType</b></a><br/>
                <div class="navigation_comment"><i >Adds a new room with options for audio only</i></div>
                </div>
                                               <div>
                <a href="#addRoomWithModerationAndRecordingFlags"><b>addRoomWithModerationAndRecordingFlags</b></a><br/>
                <div class="navigation_comment"><i >Adds a new room with options for recording</i></div>
                </div>
                                               <div>
                <a href="#addRoomWithModerationExternalTypeAndTopBarOption"><b>addRoomWithModerationExternalTypeAndTopBarOption</b></a><br/>
                <div class="navigation_comment"><i >Add a conference room with options to disable the top menu bar in the
 conference room</i></div>
                </div>
                                               <div>
                <a href="#getInvitationHash"><b>getInvitationHash</b></a><br/>
                <div class="navigation_comment"><i >Create a Invitation hash and optionally send it by mail the From to Date
 is as String as some SOAP libraries do not accept Date Objects in SOAP
 Calls Date is parsed as dd.mm.yyyy, time as hh:mm (don't forget the
 leading zero's)</i></div>
                </div>
                                               <div>
                <a href="#sendInvitationHash"><b>sendInvitationHash</b></a><br/>
                <div class="navigation_comment"><i >Create a Invitation hash and optionally send it by mail the From to Date
 is as String as some SOAP libraries do not accept Date Objects in SOAP
 Calls Date is parsed as dd.mm.yyyy, time as hh:mm (don't forget the
 leading zero's)</i></div>
                </div>
                                               <div>
                <a href="#sendInvitationHashWithDateObject"><b>sendInvitationHashWithDateObject</b></a><br/>
                <div class="navigation_comment"><i >Create a Invitation hash and optionally send it by mail the From to Date
 is as String as some SOAP libraries do not accept Date Objects in SOAP
 Calls Date is parsed as dd.mm.yyyy, time as hh:mm (don't forget the
 leading zero's)</i></div>
                </div>
                                               <div>
                <a href="#getRoomsWithCurrentUsersByList"><b>getRoomsWithCurrentUsersByList</b></a><br/>
                <div class="navigation_comment"><i >Return a RoomReturn Object with information of the current users of a
 conference room</i></div>
                </div>
                                               <div>
                <a href="#getRoomsWithCurrentUsersByListAndType"><b>getRoomsWithCurrentUsersByListAndType</b></a><br/>
                <div class="navigation_comment"><i >Return a RoomReturn Object with information of the current users of a
 conference room with option to search for special external room types</i></div>
                </div>
                                               <div>
                <a href="#addRoomWithModerationAndExternalTypeAndStartEnd"><b>addRoomWithModerationAndExternalTypeAndStartEnd</b></a><br/>
                <div class="navigation_comment"><i >Adds a conference room that is only available for a period of time</i></div>
                </div>
                                               <div>
                <a href="#addMeetingMemberRemindToRoom"><b>addMeetingMemberRemindToRoom</b></a><br/>
                <div class="navigation_comment"><i >Add a meeting member to a certain room. This is the same as adding an
 external user to a event in the calendar.</i></div>
                </div>
                                               <div>
                <a href="#addExternalMeetingMemberRemindToRoom"><b>addExternalMeetingMemberRemindToRoom</b></a><br/>
                <div class="navigation_comment"><i >Add a meeting member to a certain room. This is the same as adding an
 external user to a event in the calendar. with a certain time zone</i></div>
                </div>
                                               <div>
                <a href="#closeRoom"><b>closeRoom</b></a><br/>
                <div class="navigation_comment"><i >Method to remotely close or open rooms. If a room is closed all users
 inside the room and all users that try to enter it will be redirected to
 the redirectURL that is defined in the Room-Object.
 
 Returns positive value if authentication was successful.</i></div>
                </div>
                                               <div>
                <a href="#modifyRoomParameter"><b>modifyRoomParameter</b></a><br/>
                <div class="navigation_comment"><i >Method to update arbitrary room parameter.</i></div>
                </div>
                           </div>
	   
	    <h3>Methods Details in RoomService</h3>
	
				    		      <div class="method">
		        <div class="method_header">
		        <div style="margin-left:10px">
    			<a name="getRoomsPublic" ><b>getRoomsPublic</b></a>
    			</div>
    			</div>
    			
    			Method: <i>getRoomsPublic (
    			    			    			       			   String SID
    			       			    			       			     , 
    			       			   Long roomtypes_id
    			       			    			)
    			</i><br/>
    			<p>
    			  Returns an Object of Type RoomsList which contains a list of
 Room-Objects. Every Room-Object contains a Roomtype and all informations
 about that Room. The List of current-users in the room is Null if you get
 them via SOAP. The Roomtype can be 1 for conference rooms or 2 for
 audience rooms.
    			</p>
    			<p>
                  Return Type: org.apache.openmeetings.persistence.beans.room.Room[]
                </p>
    			<p>Params:</p>
    			    			
    				    			<table rules="all" border="1">
	    			   <thead>
	    			   <tr>
	    			     <th width="200" align="left">Type</th>
	    			     <th width="200" align="left">Fieldname</th>
	    			     <th width="400" align="left">Description</th>
	    			   </tr>
	    			   </thead>
	    			   <tbody>
	    			   	    			   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">SID</td>
	                     <td valign="top">The SID of the User. This SID must be marked as Loggedin</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Long
	                     		                     </td>
	                     <td valign="top">roomtypes_id</td>
	                     <td valign="top"></td>
	                   </tr>
	                   
	                   	                   	                   </tbody>
	    			</table>
    			    			<br/>
    			REST Sample Call/URL:<br/>
    			    			    				    								    				    												<a href="http://localhost:5080/openmeetings/services/RoomService/getRoomsPublic?SID=VALUE&roomtypes_id=VALUE">http://localhost:5080/openmeetings/services/RoomService/getRoomsPublic?SID=VALUE&amp;roomtypes_id=VALUE</a>
    		  </div>
    	   				    		      <div class="method">
		        <div class="method_header">
		        <div style="margin-left:10px">
    			<a name="deleteFlvRecording" ><b>deleteFlvRecording</b></a>
    			</div>
    			</div>
    			
    			Method: <i>deleteFlvRecording (
    			    			    			       			   String SID
    			       			    			       			     , 
    			       			   Long flvRecordingId
    			       			    			)
    			</i><br/>
    			<p>
    			  Deletes a flv recording
    			</p>
    			<p>
                  Return Type: boolean
                </p>
    			<p>Params:</p>
    			    			
    				    			<table rules="all" border="1">
	    			   <thead>
	    			   <tr>
	    			     <th width="200" align="left">Type</th>
	    			     <th width="200" align="left">Fieldname</th>
	    			     <th width="400" align="left">Description</th>
	    			   </tr>
	    			   </thead>
	    			   <tbody>
	    			   	    			   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">SID</td>
	                     <td valign="top">The SID of the User. This SID must be marked as Loggedin</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Long
	                     		                     </td>
	                     <td valign="top">flvRecordingId</td>
	                     <td valign="top">the id of the recording</td>
	                   </tr>
	                   
	                   	                   	                   </tbody>
	    			</table>
    			    			<br/>
    			REST Sample Call/URL:<br/>
    			    			    				    								    				    												<a href="http://localhost:5080/openmeetings/services/RoomService/deleteFlvRecording?SID=VALUE&flvRecordingId=VALUE">http://localhost:5080/openmeetings/services/RoomService/deleteFlvRecording?SID=VALUE&amp;flvRecordingId=VALUE</a>
    		  </div>
    	   				    		      <div class="method">
		        <div class="method_header">
		        <div style="margin-left:10px">
    			<a name="getFlvRecordingByExternalUserId" ><b>getFlvRecordingByExternalUserId</b></a>
    			</div>
    			</div>
    			
    			Method: <i>getFlvRecordingByExternalUserId (
    			    			    			       			   String SID
    			       			    			       			     , 
    			       			   String externalUserId
    			       			    			)
    			</i><br/>
    			<p>
    			  Gets a list of flv recordings
    			</p>
    			<p>
                  Return Type: org.apache.openmeetings.axis.services.FLVRecordingReturn[]
                </p>
    			<p>Params:</p>
    			    			
    				    			<table rules="all" border="1">
	    			   <thead>
	    			   <tr>
	    			     <th width="200" align="left">Type</th>
	    			     <th width="200" align="left">Fieldname</th>
	    			     <th width="400" align="left">Description</th>
	    			   </tr>
	    			   </thead>
	    			   <tbody>
	    			   	    			   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">SID</td>
	                     <td valign="top">The SID of the User. This SID must be marked as Loggedin</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">externalUserId</td>
	                     <td valign="top">the externalUserId</td>
	                   </tr>
	                   
	                   	                   	                   </tbody>
	    			</table>
    			    			<br/>
    			REST Sample Call/URL:<br/>
    			    			    				    								    				    												<a href="http://localhost:5080/openmeetings/services/RoomService/getFlvRecordingByExternalUserId?SID=VALUE&externalUserId=VALUE">http://localhost:5080/openmeetings/services/RoomService/getFlvRecordingByExternalUserId?SID=VALUE&amp;externalUserId=VALUE</a>
    		  </div>
    	   				    		      <div class="method">
		        <div class="method_header">
		        <div style="margin-left:10px">
    			<a name="getFlvRecordingByExternalRoomTypeAndCreator" ><b>getFlvRecordingByExternalRoomTypeAndCreator</b></a>
    			</div>
    			</div>
    			
    			Method: <i>getFlvRecordingByExternalRoomTypeAndCreator (
    			    			    			       			   String SID
    			       			    			       			     , 
    			       			   String externalRoomType
    			       			    			       			     , 
    			       			   Long insertedBy
    			       			    			)
    			</i><br/>
    			<p>
    			  Gets a list of flv recordings
    			</p>
    			<p>
                  Return Type: org.apache.openmeetings.axis.services.FLVRecordingReturn[]
                </p>
    			<p>Params:</p>
    			    			
    				    			<table rules="all" border="1">
	    			   <thead>
	    			   <tr>
	    			     <th width="200" align="left">Type</th>
	    			     <th width="200" align="left">Fieldname</th>
	    			     <th width="400" align="left">Description</th>
	    			   </tr>
	    			   </thead>
	    			   <tbody>
	    			   	    			   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">SID</td>
	                     <td valign="top">The SID of the User. This SID must be marked as Loggedin</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">externalRoomType</td>
	                     <td valign="top">externalRoomType specified when creating the room</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Long
	                     		                     </td>
	                     <td valign="top">insertedBy</td>
	                     <td valign="top">the userId that created the recording</td>
	                   </tr>
	                   
	                   	                   	                   </tbody>
	    			</table>
    			    			<br/>
    			REST Sample Call/URL:<br/>
    			    			    				    								    				    								    				    												<a href="http://localhost:5080/openmeetings/services/RoomService/getFlvRecordingByExternalRoomTypeAndCreator?SID=VALUE&externalRoomType=VALUE&insertedBy=VALUE">http://localhost:5080/openmeetings/services/RoomService/getFlvRecordingByExternalRoomTypeAndCreator?SID=VALUE&amp;externalRoomType=VALUE&amp;insertedBy=VALUE</a>
    		  </div>
    	   				    		      <div class="method">
		        <div class="method_header">
		        <div style="margin-left:10px">
    			<a name="getFlvRecordingByExternalRoomTypeByList" ><b>getFlvRecordingByExternalRoomTypeByList</b></a>
    			</div>
    			</div>
    			
    			Method: <i>getFlvRecordingByExternalRoomTypeByList (
    			    			    			       			   String SID
    			       			    			       			     , 
    			       			   String externalRoomType
    			       			    			)
    			</i><br/>
    			<p>
    			  Gets a list of flv recordings
    			</p>
    			<p>
                  Return Type: java.util.List
                </p>
    			<p>Params:</p>
    			    			
    				    			<table rules="all" border="1">
	    			   <thead>
	    			   <tr>
	    			     <th width="200" align="left">Type</th>
	    			     <th width="200" align="left">Fieldname</th>
	    			     <th width="400" align="left">Description</th>
	    			   </tr>
	    			   </thead>
	    			   <tbody>
	    			   	    			   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">SID</td>
	                     <td valign="top">The SID of the User. This SID must be marked as Loggedin</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">externalRoomType</td>
	                     <td valign="top">externalRoomType specified when creating the room</td>
	                   </tr>
	                   
	                   	                   	                   </tbody>
	    			</table>
    			    			<br/>
    			REST Sample Call/URL:<br/>
    			    			    				    								    				    												<a href="http://localhost:5080/openmeetings/services/RoomService/getFlvRecordingByExternalRoomTypeByList?SID=VALUE&externalRoomType=VALUE">http://localhost:5080/openmeetings/services/RoomService/getFlvRecordingByExternalRoomTypeByList?SID=VALUE&amp;externalRoomType=VALUE</a>
    		  </div>
    	   				    		      <div class="method">
		        <div class="method_header">
		        <div style="margin-left:10px">
    			<a name="getFlvRecordingByExternalRoomType" ><b>getFlvRecordingByExternalRoomType</b></a>
    			</div>
    			</div>
    			
    			Method: <i>getFlvRecordingByExternalRoomType (
    			    			    			       			   String SID
    			       			    			       			     , 
    			       			   String externalRoomType
    			       			    			)
    			</i><br/>
    			<p>
    			  Gets a list of flv recordings
    			</p>
    			<p>
                  Return Type: org.apache.openmeetings.persistence.beans.flvrecord.FlvRecording[]
                </p>
    			<p>Params:</p>
    			    			
    				    			<table rules="all" border="1">
	    			   <thead>
	    			   <tr>
	    			     <th width="200" align="left">Type</th>
	    			     <th width="200" align="left">Fieldname</th>
	    			     <th width="400" align="left">Description</th>
	    			   </tr>
	    			   </thead>
	    			   <tbody>
	    			   	    			   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">SID</td>
	                     <td valign="top">The SID of the User. This SID must be marked as Loggedin</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">externalRoomType</td>
	                     <td valign="top">externalRoomType specified when creating the room</td>
	                   </tr>
	                   
	                   	                   	                   </tbody>
	    			</table>
    			    			<br/>
    			REST Sample Call/URL:<br/>
    			    			    				    								    				    												<a href="http://localhost:5080/openmeetings/services/RoomService/getFlvRecordingByExternalRoomType?SID=VALUE&externalRoomType=VALUE">http://localhost:5080/openmeetings/services/RoomService/getFlvRecordingByExternalRoomType?SID=VALUE&amp;externalRoomType=VALUE</a>
    		  </div>
    	   				    		      <div class="method">
		        <div class="method_header">
		        <div style="margin-left:10px">
    			<a name="getFlvRecordingByRoomId" ><b>getFlvRecordingByRoomId</b></a>
    			</div>
    			</div>
    			
    			Method: <i>getFlvRecordingByRoomId (
    			    			    			       			   String SID
    			       			    			       			     , 
    			       			   Long roomId
    			       			    			)
    			</i><br/>
    			<p>
    			  Get list of recordings
    			</p>
    			<p>
                  Return Type: org.apache.openmeetings.persistence.beans.flvrecord.FlvRecording[]
                </p>
    			<p>Params:</p>
    			    			
    				    			<table rules="all" border="1">
	    			   <thead>
	    			   <tr>
	    			     <th width="200" align="left">Type</th>
	    			     <th width="200" align="left">Fieldname</th>
	    			     <th width="400" align="left">Description</th>
	    			   </tr>
	    			   </thead>
	    			   <tbody>
	    			   	    			   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">SID</td>
	                     <td valign="top">The SID of the User. This SID must be marked as Loggedin</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Long
	                     		                     </td>
	                     <td valign="top">roomId</td>
	                     <td valign="top">the room id</td>
	                   </tr>
	                   
	                   	                   	                   </tbody>
	    			</table>
    			    			<br/>
    			REST Sample Call/URL:<br/>
    			    			    				    								    				    												<a href="http://localhost:5080/openmeetings/services/RoomService/getFlvRecordingByRoomId?SID=VALUE&roomId=VALUE">http://localhost:5080/openmeetings/services/RoomService/getFlvRecordingByRoomId?SID=VALUE&amp;roomId=VALUE</a>
    		  </div>
    	   				    		      <div class="method">
		        <div class="method_header">
		        <div style="margin-left:10px">
    			<a name="getRoomTypes" ><b>getRoomTypes</b></a>
    			</div>
    			</div>
    			
    			Method: <i>getRoomTypes (
    			    			    			       			   String SID
    			       			    			)
    			</i><br/>
    			<p>
    			  List of available room types
    			</p>
    			<p>
                  Return Type: org.apache.openmeetings.persistence.beans.room.RoomType[]
                </p>
    			<p>Params:</p>
    			    			
    				    			<table rules="all" border="1">
	    			   <thead>
	    			   <tr>
	    			     <th width="200" align="left">Type</th>
	    			     <th width="200" align="left">Fieldname</th>
	    			     <th width="400" align="left">Description</th>
	    			   </tr>
	    			   </thead>
	    			   <tbody>
	    			   	    			   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">SID</td>
	                     <td valign="top">The SID of the User. This SID must be marked as Loggedin</td>
	                   </tr>
	                   
	                   	                   	                   </tbody>
	    			</table>
    			    			<br/>
    			REST Sample Call/URL:<br/>
    			    			    				    												<a href="http://localhost:5080/openmeetings/services/RoomService/getRoomTypes?SID=VALUE">http://localhost:5080/openmeetings/services/RoomService/getRoomTypes?SID=VALUE</a>
    		  </div>
    	   				    		      <div class="method">
		        <div class="method_header">
		        <div style="margin-left:10px">
    			<a name="getRoomCounters" ><b>getRoomCounters</b></a>
    			</div>
    			</div>
    			
    			Method: <i>getRoomCounters (
    			    			    			       			   String SID
    			       			    			       			     , 
    			       			   Integer roomId1
    			       			    			       			     , 
    			       			   Integer roomId2
    			       			    			       			     , 
    			       			   Integer roomId3
    			       			    			       			     , 
    			       			   Integer roomId4
    			       			    			       			     , 
    			       			   Integer roomId5
    			       			    			       			     , 
    			       			   Integer roomId6
    			       			    			       			     , 
    			       			   Integer roomId7
    			       			    			       			     , 
    			       			   Integer roomId8
    			       			    			       			     , 
    			       			   Integer roomId9
    			       			    			       			     , 
    			       			   Integer roomId10
    			       			    			)
    			</i><br/>
    			<p>
    			  Returns current users for rooms ids
    			</p>
    			<p>
                  Return Type: org.apache.openmeetings.axis.services.RoomCountBean[]
                </p>
    			<p>Params:</p>
    			    			
    				    			<table rules="all" border="1">
	    			   <thead>
	    			   <tr>
	    			     <th width="200" align="left">Type</th>
	    			     <th width="200" align="left">Fieldname</th>
	    			     <th width="400" align="left">Description</th>
	    			   </tr>
	    			   </thead>
	    			   <tbody>
	    			   	    			   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">SID</td>
	                     <td valign="top">The SID of the User. This SID must be marked as Loggedin</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Integer
	                     		                     </td>
	                     <td valign="top">roomId1</td>
	                     <td valign="top"></td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Integer
	                     		                     </td>
	                     <td valign="top">roomId2</td>
	                     <td valign="top"></td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Integer
	                     		                     </td>
	                     <td valign="top">roomId3</td>
	                     <td valign="top"></td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Integer
	                     		                     </td>
	                     <td valign="top">roomId4</td>
	                     <td valign="top"></td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Integer
	                     		                     </td>
	                     <td valign="top">roomId5</td>
	                     <td valign="top"></td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Integer
	                     		                     </td>
	                     <td valign="top">roomId6</td>
	                     <td valign="top"></td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Integer
	                     		                     </td>
	                     <td valign="top">roomId7</td>
	                     <td valign="top"></td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Integer
	                     		                     </td>
	                     <td valign="top">roomId8</td>
	                     <td valign="top"></td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Integer
	                     		                     </td>
	                     <td valign="top">roomId9</td>
	                     <td valign="top"></td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Integer
	                     		                     </td>
	                     <td valign="top">roomId10</td>
	                     <td valign="top"></td>
	                   </tr>
	                   
	                   	                   	                   </tbody>
	    			</table>
    			    			<br/>
    			REST Sample Call/URL:<br/>
    			    			    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    												<a href="http://localhost:5080/openmeetings/services/RoomService/getRoomCounters?SID=VALUE&roomId1=VALUE&roomId2=VALUE&roomId3=VALUE&roomId4=VALUE&roomId5=VALUE&roomId6=VALUE&roomId7=VALUE&roomId8=VALUE&roomId9=VALUE&roomId10=VALUE">http://localhost:5080/openmeetings/services/RoomService/getRoomCounters?SID=VALUE&amp;roomId1=VALUE&amp;roomId2=VALUE&amp;roomId3=VALUE&amp;roomId4=VALUE&amp;roomId5=VALUE&amp;roomId6=VALUE&amp;roomId7=VALUE&amp;roomId8=VALUE&amp;roomId9=VALUE&amp;roomId10=VALUE</a>
    		  </div>
    	   				    		      <div class="method">
		        <div class="method_header">
		        <div style="margin-left:10px">
    			<a name="getRoomById" ><b>getRoomById</b></a>
    			</div>
    			</div>
    			
    			Method: <i>getRoomById (
    			    			    			       			   String SID
    			       			    			       			     , 
    			       			   long rooms_id
    			       			    			)
    			</i><br/>
    			<p>
    			  returns a conference room object
    			</p>
    			<p>
                  Return Type: org.apache.openmeetings.persistence.beans.room.Room
                </p>
    			<p>Params:</p>
    			    			
    				    			<table rules="all" border="1">
	    			   <thead>
	    			   <tr>
	    			     <th width="200" align="left">Type</th>
	    			     <th width="200" align="left">Fieldname</th>
	    			     <th width="400" align="left">Description</th>
	    			   </tr>
	    			   </thead>
	    			   <tbody>
	    			   	    			   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">SID</td>
	                     <td valign="top">The SID of the User. This SID must be marked as Loggedin</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		long
	                     		                     </td>
	                     <td valign="top">rooms_id</td>
	                     <td valign="top">the room id</td>
	                   </tr>
	                   
	                   	                   	                   </tbody>
	    			</table>
    			    			<br/>
    			REST Sample Call/URL:<br/>
    			    			    				    								    				    												<a href="http://localhost:5080/openmeetings/services/RoomService/getRoomById?SID=VALUE&rooms_id=VALUE">http://localhost:5080/openmeetings/services/RoomService/getRoomById?SID=VALUE&amp;rooms_id=VALUE</a>
    		  </div>
    	   				    		      <div class="method">
		        <div class="method_header">
		        <div style="margin-left:10px">
    			<a name="getRoomWithCurrentUsersById" ><b>getRoomWithCurrentUsersById</b></a>
    			</div>
    			</div>
    			
    			Method: <i>getRoomWithCurrentUsersById (
    			    			    			       			   String SID
    			       			    			       			     , 
    			       			   long rooms_id
    			       			    			)
    			</i><br/>
    			<p>
    			  
    			</p>
    			<p>
                  Return Type: org.apache.openmeetings.persistence.beans.room.Room
                </p>
    			<p>Params:</p>
    			    			
    				    			<table rules="all" border="1">
	    			   <thead>
	    			   <tr>
	    			     <th width="200" align="left">Type</th>
	    			     <th width="200" align="left">Fieldname</th>
	    			     <th width="400" align="left">Description</th>
	    			   </tr>
	    			   </thead>
	    			   <tbody>
	    			   	    			   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">SID</td>
	                     <td valign="top">The SID of the User. This SID must be marked as Loggedin</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		long
	                     		                     </td>
	                     <td valign="top">rooms_id</td>
	                     <td valign="top"></td>
	                   </tr>
	                   
	                   	                   	                   </tbody>
	    			</table>
    			    			<br/>
    			REST Sample Call/URL:<br/>
    			    			    				    								    				    												<a href="http://localhost:5080/openmeetings/services/RoomService/getRoomWithCurrentUsersById?SID=VALUE&rooms_id=VALUE">http://localhost:5080/openmeetings/services/RoomService/getRoomWithCurrentUsersById?SID=VALUE&amp;rooms_id=VALUE</a>
    		  </div>
    	   				    		      <div class="method">
		        <div class="method_header">
		        <div style="margin-left:10px">
    			<a name="getRoomWithClientObjectsById" ><b>getRoomWithClientObjectsById</b></a>
    			</div>
    			</div>
    			
    			Method: <i>getRoomWithClientObjectsById (
    			    			    			       			   String SID
    			       			    			       			     , 
    			       			   long rooms_id
    			       			    			)
    			</i><br/>
    			<p>
    			  Returns a object of type RoomReturn
    			</p>
    			<p>
                  Return Type: org.apache.openmeetings.axis.services.RoomReturn
                </p>
    			<p>Params:</p>
    			    			
    				    			<table rules="all" border="1">
	    			   <thead>
	    			   <tr>
	    			     <th width="200" align="left">Type</th>
	    			     <th width="200" align="left">Fieldname</th>
	    			     <th width="400" align="left">Description</th>
	    			   </tr>
	    			   </thead>
	    			   <tbody>
	    			   	    			   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">SID</td>
	                     <td valign="top">The SID of the User. This SID must be marked as Loggedin</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		long
	                     		                     </td>
	                     <td valign="top">rooms_id</td>
	                     <td valign="top"></td>
	                   </tr>
	                   
	                   	                   	                   </tbody>
	    			</table>
    			    			<br/>
    			REST Sample Call/URL:<br/>
    			    			    				    								    				    												<a href="http://localhost:5080/openmeetings/services/RoomService/getRoomWithClientObjectsById?SID=VALUE&rooms_id=VALUE">http://localhost:5080/openmeetings/services/RoomService/getRoomWithClientObjectsById?SID=VALUE&amp;rooms_id=VALUE</a>
    		  </div>
    	   				    		      <div class="method">
		        <div class="method_header">
		        <div style="margin-left:10px">
    			<a name="getRooms" ><b>getRooms</b></a>
    			</div>
    			</div>
    			
    			Method: <i>getRooms (
    			    			    			       			   String SID
    			       			    			       			     , 
    			       			   int start
    			       			    			       			     , 
    			       			   int max
    			       			    			       			     , 
    			       			   String orderby
    			       			    			       			     , 
    			       			   boolean asc
    			       			    			)
    			</i><br/>
    			<p>
    			  Returns a List of Objects of Rooms You can use "name" as value for
 orderby or rooms_id
    			</p>
    			<p>
                  Return Type: org.apache.openmeetings.data.beans.basic.SearchResult
                </p>
    			<p>Params:</p>
    			    			
    				    			<table rules="all" border="1">
	    			   <thead>
	    			   <tr>
	    			     <th width="200" align="left">Type</th>
	    			     <th width="200" align="left">Fieldname</th>
	    			     <th width="400" align="left">Description</th>
	    			   </tr>
	    			   </thead>
	    			   <tbody>
	    			   	    			   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">SID</td>
	                     <td valign="top">The SID of the User. This SID must be marked as Loggedin</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		int
	                     		                     </td>
	                     <td valign="top">start</td>
	                     <td valign="top">The id you want to start</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		int
	                     		                     </td>
	                     <td valign="top">max</td>
	                     <td valign="top">The maximum you want to get</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">orderby</td>
	                     <td valign="top">The column it will be ordered</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		boolean
	                     		                     </td>
	                     <td valign="top">asc</td>
	                     <td valign="top">Asc or Desc sort ordering</td>
	                   </tr>
	                   
	                   	                   	                   </tbody>
	    			</table>
    			    			<br/>
    			REST Sample Call/URL:<br/>
    			    			    				    								    				    								    				    								    				    								    				    												<a href="http://localhost:5080/openmeetings/services/RoomService/getRooms?SID=VALUE&start=VALUE&max=VALUE&orderby=VALUE&asc=VALUE">http://localhost:5080/openmeetings/services/RoomService/getRooms?SID=VALUE&amp;start=VALUE&amp;max=VALUE&amp;orderby=VALUE&amp;asc=VALUE</a>
    		  </div>
    	   				    		      <div class="method">
		        <div class="method_header">
		        <div style="margin-left:10px">
    			<a name="getRoomsWithCurrentUsers" ><b>getRoomsWithCurrentUsers</b></a>
    			</div>
    			</div>
    			
    			Method: <i>getRoomsWithCurrentUsers (
    			    			    			       			   String SID
    			       			    			       			     , 
    			       			   int start
    			       			    			       			     , 
    			       			   int max
    			       			    			       			     , 
    			       			   String orderby
    			       			    			       			     , 
    			       			   boolean asc
    			       			    			)
    			</i><br/>
    			<p>
    			  Returns a List of Objects of Rooms You can use "name" as value for
 orderby or rooms_id. It also fills the attribute currentUsers in the
 Room-Object
    			</p>
    			<p>
                  Return Type: org.apache.openmeetings.data.beans.basic.SearchResult
                </p>
    			<p>Params:</p>
    			    			
    				    			<table rules="all" border="1">
	    			   <thead>
	    			   <tr>
	    			     <th width="200" align="left">Type</th>
	    			     <th width="200" align="left">Fieldname</th>
	    			     <th width="400" align="left">Description</th>
	    			   </tr>
	    			   </thead>
	    			   <tbody>
	    			   	    			   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">SID</td>
	                     <td valign="top">The SID of the User. This SID must be marked as Loggedin</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		int
	                     		                     </td>
	                     <td valign="top">start</td>
	                     <td valign="top">The id you want to start</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		int
	                     		                     </td>
	                     <td valign="top">max</td>
	                     <td valign="top">The maximum you want to get</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">orderby</td>
	                     <td valign="top">The column it will be ordered</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		boolean
	                     		                     </td>
	                     <td valign="top">asc</td>
	                     <td valign="top">Asc or Desc sort ordering</td>
	                   </tr>
	                   
	                   	                   	                   </tbody>
	    			</table>
    			    			<br/>
    			REST Sample Call/URL:<br/>
    			    			    				    								    				    								    				    								    				    								    				    												<a href="http://localhost:5080/openmeetings/services/RoomService/getRoomsWithCurrentUsers?SID=VALUE&start=VALUE&max=VALUE&orderby=VALUE&asc=VALUE">http://localhost:5080/openmeetings/services/RoomService/getRoomsWithCurrentUsers?SID=VALUE&amp;start=VALUE&amp;max=VALUE&amp;orderby=VALUE&amp;asc=VALUE</a>
    		  </div>
    	   				    		      <div class="method">
		        <div class="method_header">
		        <div style="margin-left:10px">
    			<a name="addRoom" ><b>addRoom</b></a>
    			</div>
    			</div>
    			
    			Method: <i>addRoom (
    			    			    			       			   String SID
    			       			    			       			     , 
    			       			   String name
    			       			    			       			     , 
    			       			   Long roomtypes_id
    			       			    			       			     , 
    			       			   String comment
    			       			    			       			     , 
    			       			   Long numberOfPartizipants
    			       			    			       			     , 
    			       			   Boolean ispublic
    			       			    			       			     , 
    			       			   Integer videoPodWidth
    			       			    			       			     , 
    			       			   Integer videoPodHeight
    			       			    			       			     , 
    			       			   Integer videoPodXPosition
    			       			    			       			     , 
    			       			   Integer videoPodYPosition
    			       			    			       			     , 
    			       			   Integer moderationPanelXPosition
    			       			    			       			     , 
    			       			   Boolean showWhiteBoard
    			       			    			       			     , 
    			       			   Integer whiteBoardPanelXPosition
    			       			    			       			     , 
    			       			   Integer whiteBoardPanelYPosition
    			       			    			       			     , 
    			       			   Integer whiteBoardPanelHeight
    			       			    			       			     , 
    			       			   Integer whiteBoardPanelWidth
    			       			    			       			     , 
    			       			   Boolean showFilesPanel
    			       			    			       			     , 
    			       			   Integer filesPanelXPosition
    			       			    			       			     , 
    			       			   Integer filesPanelYPosition
    			       			    			       			     , 
    			       			   Integer filesPanelHeight
    			       			    			       			     , 
    			       			   Integer filesPanelWidth
    			       			    			)
    			</i><br/>
    			<p>
    			  TODO: Fix Organization Issue
 
 deprecated use addRoomWithModeration instead
    			</p>
    			<p>
                  Return Type: java.lang.Long
                </p>
    			<p>Params:</p>
    			    			
    				    			<table rules="all" border="1">
	    			   <thead>
	    			   <tr>
	    			     <th width="200" align="left">Type</th>
	    			     <th width="200" align="left">Fieldname</th>
	    			     <th width="400" align="left">Description</th>
	    			   </tr>
	    			   </thead>
	    			   <tbody>
	    			   	    			   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">SID</td>
	                     <td valign="top">The SID of the User. This SID must be marked as Loggedin</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">name</td>
	                     <td valign="top"></td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Long
	                     		                     </td>
	                     <td valign="top">roomtypes_id</td>
	                     <td valign="top"></td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">comment</td>
	                     <td valign="top"></td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Long
	                     		                     </td>
	                     <td valign="top">numberOfPartizipants</td>
	                     <td valign="top"></td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">ispublic</td>
	                     <td valign="top"></td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Integer
	                     		                     </td>
	                     <td valign="top">videoPodWidth</td>
	                     <td valign="top"></td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Integer
	                     		                     </td>
	                     <td valign="top">videoPodHeight</td>
	                     <td valign="top"></td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Integer
	                     		                     </td>
	                     <td valign="top">videoPodXPosition</td>
	                     <td valign="top"></td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Integer
	                     		                     </td>
	                     <td valign="top">videoPodYPosition</td>
	                     <td valign="top"></td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Integer
	                     		                     </td>
	                     <td valign="top">moderationPanelXPosition</td>
	                     <td valign="top"></td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">showWhiteBoard</td>
	                     <td valign="top"></td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Integer
	                     		                     </td>
	                     <td valign="top">whiteBoardPanelXPosition</td>
	                     <td valign="top"></td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Integer
	                     		                     </td>
	                     <td valign="top">whiteBoardPanelYPosition</td>
	                     <td valign="top"></td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Integer
	                     		                     </td>
	                     <td valign="top">whiteBoardPanelHeight</td>
	                     <td valign="top"></td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Integer
	                     		                     </td>
	                     <td valign="top">whiteBoardPanelWidth</td>
	                     <td valign="top"></td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">showFilesPanel</td>
	                     <td valign="top"></td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Integer
	                     		                     </td>
	                     <td valign="top">filesPanelXPosition</td>
	                     <td valign="top"></td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Integer
	                     		                     </td>
	                     <td valign="top">filesPanelYPosition</td>
	                     <td valign="top"></td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Integer
	                     		                     </td>
	                     <td valign="top">filesPanelHeight</td>
	                     <td valign="top"></td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Integer
	                     		                     </td>
	                     <td valign="top">filesPanelWidth</td>
	                     <td valign="top"></td>
	                   </tr>
	                   
	                   	                   	                   </tbody>
	    			</table>
    			    			<br/>
    			REST Sample Call/URL:<br/>
    			    			    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    												<a href="http://localhost:5080/openmeetings/services/RoomService/addRoom?SID=VALUE&name=VALUE&roomtypes_id=VALUE&comment=VALUE&numberOfPartizipants=VALUE&ispublic=VALUE&videoPodWidth=VALUE&videoPodHeight=VALUE&videoPodXPosition=VALUE&videoPodYPosition=VALUE&moderationPanelXPosition=VALUE&showWhiteBoard=VALUE&whiteBoardPanelXPosition=VALUE&whiteBoardPanelYPosition=VALUE&whiteBoardPanelHeight=VALUE&whiteBoardPanelWidth=VALUE&showFilesPanel=VALUE&filesPanelXPosition=VALUE&filesPanelYPosition=VALUE&filesPanelHeight=VALUE&filesPanelWidth=VALUE">http://localhost:5080/openmeetings/services/RoomService/addRoom?SID=VALUE&amp;name=VALUE&amp;roomtypes_id=VALUE&amp;comment=VALUE&amp;numberOfPartizipants=VALUE&amp;ispublic=VALUE&amp;videoPodWidth=VALUE&amp;videoPodHeight=VALUE&amp;videoPodXPosition=VALUE&amp;videoPodYPosition=VALUE&amp;moderationPanelXPosition=VALUE&amp;showWhiteBoard=VALUE&amp;whiteBoardPanelXPosition=VALUE&amp;whiteBoardPanelYPosition=VALUE&amp;whiteBoardPanelHeight=VALUE&amp;whiteBoardPanelWidth=VALUE&amp;showFilesPanel=VALUE&amp;filesPanelXPosition=VALUE&amp;filesPanelYPosition=VALUE&amp;filesPanelHeight=VALUE&amp;filesPanelWidth=VALUE</a>
    		  </div>
    	   				    		      <div class="method">
		        <div class="method_header">
		        <div style="margin-left:10px">
    			<a name="addRoomWithModeration" ><b>addRoomWithModeration</b></a>
    			</div>
    			</div>
    			
    			Method: <i>addRoomWithModeration (
    			    			    			       			   String SID
    			       			    			       			     , 
    			       			   String name
    			       			    			       			     , 
    			       			   Long roomtypes_id
    			       			    			       			     , 
    			       			   String comment
    			       			    			       			     , 
    			       			   Long numberOfPartizipants
    			       			    			       			     , 
    			       			   Boolean ispublic
    			       			    			       			     , 
    			       			   Boolean appointment
    			       			    			       			     , 
    			       			   Boolean isDemoRoom
    			       			    			       			     , 
    			       			   Integer demoTime
    			       			    			       			     , 
    			       			   Boolean isModeratedRoom
    			       			    			)
    			</i><br/>
    			<p>
    			  Create a conference room
    			</p>
    			<p>
                  Return Type: java.lang.Long
                </p>
    			<p>Params:</p>
    			    			
    				    			<table rules="all" border="1">
	    			   <thead>
	    			   <tr>
	    			     <th width="200" align="left">Type</th>
	    			     <th width="200" align="left">Fieldname</th>
	    			     <th width="400" align="left">Description</th>
	    			   </tr>
	    			   </thead>
	    			   <tbody>
	    			   	    			   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">SID</td>
	                     <td valign="top">The SID of the User. This SID must be marked as Loggedin</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">name</td>
	                     <td valign="top">Name of the Room</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Long
	                     		                     </td>
	                     <td valign="top">roomtypes_id</td>
	                     <td valign="top">Type of that room (1 = Conference, 2 = Audience, 3 =
            Restricted, 4 = Interview)</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">comment</td>
	                     <td valign="top">any comment</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Long
	                     		                     </td>
	                     <td valign="top">numberOfPartizipants</td>
	                     <td valign="top">the maximum users allowed in this room</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">ispublic</td>
	                     <td valign="top">If this room is public (use true if you don't deal with
            different Organizations)</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">appointment</td>
	                     <td valign="top">is it a Calendar Room (use false by default)</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">isDemoRoom</td>
	                     <td valign="top">is it a Demo Room with limited time (use false by default)</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Integer
	                     		                     </td>
	                     <td valign="top">demoTime</td>
	                     <td valign="top">time in seconds after the user will be logged out (only
            enabled if isDemoRoom is true)</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">isModeratedRoom</td>
	                     <td valign="top">Users have to wait untill a Moderator arrives. Use the
            becomeModerator param in setUserObjectAndGenerateRoomHash to
            set a user as default Moderator</td>
	                   </tr>
	                   
	                   	                   	                   </tbody>
	    			</table>
    			    			<br/>
    			REST Sample Call/URL:<br/>
    			    			    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    												<a href="http://localhost:5080/openmeetings/services/RoomService/addRoomWithModeration?SID=VALUE&name=VALUE&roomtypes_id=VALUE&comment=VALUE&numberOfPartizipants=VALUE&ispublic=VALUE&appointment=VALUE&isDemoRoom=VALUE&demoTime=VALUE&isModeratedRoom=VALUE">http://localhost:5080/openmeetings/services/RoomService/addRoomWithModeration?SID=VALUE&amp;name=VALUE&amp;roomtypes_id=VALUE&amp;comment=VALUE&amp;numberOfPartizipants=VALUE&amp;ispublic=VALUE&amp;appointment=VALUE&amp;isDemoRoom=VALUE&amp;demoTime=VALUE&amp;isModeratedRoom=VALUE</a>
    		  </div>
    	   				    		      <div class="method">
		        <div class="method_header">
		        <div style="margin-left:10px">
    			<a name="addRoomWithModerationAndQuestions" ><b>addRoomWithModerationAndQuestions</b></a>
    			</div>
    			</div>
    			
    			Method: <i>addRoomWithModerationAndQuestions (
    			    			    			       			   String SID
    			       			    			       			     , 
    			       			   String name
    			       			    			       			     , 
    			       			   Long roomtypes_id
    			       			    			       			     , 
    			       			   String comment
    			       			    			       			     , 
    			       			   Long numberOfPartizipants
    			       			    			       			     , 
    			       			   Boolean ispublic
    			       			    			       			     , 
    			       			   Boolean appointment
    			       			    			       			     , 
    			       			   Boolean isDemoRoom
    			       			    			       			     , 
    			       			   Integer demoTime
    			       			    			       			     , 
    			       			   Boolean isModeratedRoom
    			       			    			       			     , 
    			       			   Boolean allowUserQuestions
    			       			    			)
    			</i><br/>
    			<p>
    			  this SOAP Method has an additional param to enable or disable the buttons
 to apply for moderation this does only work in combination with the
 room-type restricted
    			</p>
    			<p>
                  Return Type: java.lang.Long
                </p>
    			<p>Params:</p>
    			    			
    				    			<table rules="all" border="1">
	    			   <thead>
	    			   <tr>
	    			     <th width="200" align="left">Type</th>
	    			     <th width="200" align="left">Fieldname</th>
	    			     <th width="400" align="left">Description</th>
	    			   </tr>
	    			   </thead>
	    			   <tbody>
	    			   	    			   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">SID</td>
	                     <td valign="top">The SID of the User. This SID must be marked as Loggedin</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">name</td>
	                     <td valign="top">Name of the Room</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Long
	                     		                     </td>
	                     <td valign="top">roomtypes_id</td>
	                     <td valign="top">Type of that room (1 = Conference, 2 = Audience, 3 =
            Restricted, 4 = Interview)</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">comment</td>
	                     <td valign="top">any comment</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Long
	                     		                     </td>
	                     <td valign="top">numberOfPartizipants</td>
	                     <td valign="top">the maximum users allowed in this room</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">ispublic</td>
	                     <td valign="top">If this room is public (use true if you don't deal with
            different Organizations)</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">appointment</td>
	                     <td valign="top">is it a Calendar Room (use false by default)</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">isDemoRoom</td>
	                     <td valign="top">is it a Demo Room with limited time (use false by default)</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Integer
	                     		                     </td>
	                     <td valign="top">demoTime</td>
	                     <td valign="top">time in seconds after the user will be logged out (only
            enabled if isDemoRoom is true)</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">isModeratedRoom</td>
	                     <td valign="top">Users have to wait untill a Moderator arrives. Use the
            becomeModerator param in setUserObjectAndGenerateRoomHash to
            set a user as default Moderator</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">allowUserQuestions</td>
	                     <td valign="top">enable or disable the button to allow users to apply for
            moderation</td>
	                   </tr>
	                   
	                   	                   	                   </tbody>
	    			</table>
    			    			<br/>
    			REST Sample Call/URL:<br/>
    			    			    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    												<a href="http://localhost:5080/openmeetings/services/RoomService/addRoomWithModerationAndQuestions?SID=VALUE&name=VALUE&roomtypes_id=VALUE&comment=VALUE&numberOfPartizipants=VALUE&ispublic=VALUE&appointment=VALUE&isDemoRoom=VALUE&demoTime=VALUE&isModeratedRoom=VALUE&allowUserQuestions=VALUE">http://localhost:5080/openmeetings/services/RoomService/addRoomWithModerationAndQuestions?SID=VALUE&amp;name=VALUE&amp;roomtypes_id=VALUE&amp;comment=VALUE&amp;numberOfPartizipants=VALUE&amp;ispublic=VALUE&amp;appointment=VALUE&amp;isDemoRoom=VALUE&amp;demoTime=VALUE&amp;isModeratedRoom=VALUE&amp;allowUserQuestions=VALUE</a>
    		  </div>
    	   				    		      <div class="method">
		        <div class="method_header">
		        <div style="margin-left:10px">
    			<a name="addRoomWithModerationQuestionsAndAudioType" ><b>addRoomWithModerationQuestionsAndAudioType</b></a>
    			</div>
    			</div>
    			
    			Method: <i>addRoomWithModerationQuestionsAndAudioType (
    			    			    			       			   String SID
    			       			    			       			     , 
    			       			   String name
    			       			    			       			     , 
    			       			   Long roomtypes_id
    			       			    			       			     , 
    			       			   String comment
    			       			    			       			     , 
    			       			   Long numberOfPartizipants
    			       			    			       			     , 
    			       			   Boolean ispublic
    			       			    			       			     , 
    			       			   Boolean appointment
    			       			    			       			     , 
    			       			   Boolean isDemoRoom
    			       			    			       			     , 
    			       			   Integer demoTime
    			       			    			       			     , 
    			       			   Boolean isModeratedRoom
    			       			    			       			     , 
    			       			   Boolean allowUserQuestions
    			       			    			       			     , 
    			       			   Boolean isAudioOnly
    			       			    			)
    			</i><br/>
    			<p>
    			  adds a new room with options for user questions and audio only
    			</p>
    			<p>
                  Return Type: java.lang.Long
                </p>
    			<p>Params:</p>
    			    			
    				    			<table rules="all" border="1">
	    			   <thead>
	    			   <tr>
	    			     <th width="200" align="left">Type</th>
	    			     <th width="200" align="left">Fieldname</th>
	    			     <th width="400" align="left">Description</th>
	    			   </tr>
	    			   </thead>
	    			   <tbody>
	    			   	    			   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">SID</td>
	                     <td valign="top">The SID of the User. This SID must be marked as Loggedin</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">name</td>
	                     <td valign="top">Name of the Room</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Long
	                     		                     </td>
	                     <td valign="top">roomtypes_id</td>
	                     <td valign="top">Type of that room (1 = Conference, 2 = Audience, 3 =
            Restricted, 4 = Interview)</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">comment</td>
	                     <td valign="top">any comment</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Long
	                     		                     </td>
	                     <td valign="top">numberOfPartizipants</td>
	                     <td valign="top">the maximum users allowed in this room</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">ispublic</td>
	                     <td valign="top">If this room is public (use true if you don't deal with
            different Organizations)</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">appointment</td>
	                     <td valign="top">is it a Calendar Room (use false by default)</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">isDemoRoom</td>
	                     <td valign="top">is it a Demo Room with limited time (use false by default)</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Integer
	                     		                     </td>
	                     <td valign="top">demoTime</td>
	                     <td valign="top">time in seconds after the user will be logged out (only
            enabled if isDemoRoom is true)</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">isModeratedRoom</td>
	                     <td valign="top">Users have to wait until a Moderator arrives. Use the
            becomeModerator param in setUserObjectAndGenerateRoomHash to
            set a user as default Moderator</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">allowUserQuestions</td>
	                     <td valign="top">enable or disable the button to allow users to apply for
            moderation</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">isAudioOnly</td>
	                     <td valign="top">enable or disable the video / or audio-only</td>
	                   </tr>
	                   
	                   	                   	                   </tbody>
	    			</table>
    			    			<br/>
    			REST Sample Call/URL:<br/>
    			    			    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    												<a href="http://localhost:5080/openmeetings/services/RoomService/addRoomWithModerationQuestionsAndAudioType?SID=VALUE&name=VALUE&roomtypes_id=VALUE&comment=VALUE&numberOfPartizipants=VALUE&ispublic=VALUE&appointment=VALUE&isDemoRoom=VALUE&demoTime=VALUE&isModeratedRoom=VALUE&allowUserQuestions=VALUE&isAudioOnly=VALUE">http://localhost:5080/openmeetings/services/RoomService/addRoomWithModerationQuestionsAndAudioType?SID=VALUE&amp;name=VALUE&amp;roomtypes_id=VALUE&amp;comment=VALUE&amp;numberOfPartizipants=VALUE&amp;ispublic=VALUE&amp;appointment=VALUE&amp;isDemoRoom=VALUE&amp;demoTime=VALUE&amp;isModeratedRoom=VALUE&amp;allowUserQuestions=VALUE&amp;isAudioOnly=VALUE</a>
    		  </div>
    	   				    		      <div class="method">
		        <div class="method_header">
		        <div style="margin-left:10px">
    			<a name="addRoomWithModerationQuestionsAudioTypeAndHideOptions" ><b>addRoomWithModerationQuestionsAudioTypeAndHideOptions</b></a>
    			</div>
    			</div>
    			
    			Method: <i>addRoomWithModerationQuestionsAudioTypeAndHideOptions (
    			    			    			       			   String SID
    			       			    			       			     , 
    			       			   String name
    			       			    			       			     , 
    			       			   Long roomtypes_id
    			       			    			       			     , 
    			       			   String comment
    			       			    			       			     , 
    			       			   Long numberOfPartizipants
    			       			    			       			     , 
    			       			   Boolean ispublic
    			       			    			       			     , 
    			       			   Boolean appointment
    			       			    			       			     , 
    			       			   Boolean isDemoRoom
    			       			    			       			     , 
    			       			   Integer demoTime
    			       			    			       			     , 
    			       			   Boolean isModeratedRoom
    			       			    			       			     , 
    			       			   Boolean allowUserQuestions
    			       			    			       			     , 
    			       			   Boolean isAudioOnly
    			       			    			       			     , 
    			       			   Boolean hideTopBar
    			       			    			       			     , 
    			       			   Boolean hideChat
    			       			    			       			     , 
    			       			   Boolean hideActivitiesAndActions
    			       			    			       			     , 
    			       			   Boolean hideFilesExplorer
    			       			    			       			     , 
    			       			   Boolean hideActionsMenu
    			       			    			       			     , 
    			       			   Boolean hideScreenSharing
    			       			    			       			     , 
    			       			   Boolean hideWhiteboard
    			       			    			)
    			</i><br/>
    			<p>
    			  adds a new room with options for user questions, audio only and hide
    			</p>
    			<p>
                  Return Type: java.lang.Long
                </p>
    			<p>Params:</p>
    			    			
    				    			<table rules="all" border="1">
	    			   <thead>
	    			   <tr>
	    			     <th width="200" align="left">Type</th>
	    			     <th width="200" align="left">Fieldname</th>
	    			     <th width="400" align="left">Description</th>
	    			   </tr>
	    			   </thead>
	    			   <tbody>
	    			   	    			   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">SID</td>
	                     <td valign="top">The SID of the User. This SID must be marked as Loggedin</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">name</td>
	                     <td valign="top">Name of the Room</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Long
	                     		                     </td>
	                     <td valign="top">roomtypes_id</td>
	                     <td valign="top">Type of that room (1 = Conference, 2 = Audience, 3 =
            Restricted, 4 = Interview)</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">comment</td>
	                     <td valign="top">any comment</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Long
	                     		                     </td>
	                     <td valign="top">numberOfPartizipants</td>
	                     <td valign="top">the maximum users allowed in this room</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">ispublic</td>
	                     <td valign="top">If this room is public (use true if you don't deal with
            different Organizations)</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">appointment</td>
	                     <td valign="top">is it a Calendar Room (use false by default)</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">isDemoRoom</td>
	                     <td valign="top">is it a Demo Room with limited time (use false by default)</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Integer
	                     		                     </td>
	                     <td valign="top">demoTime</td>
	                     <td valign="top">time in seconds after the user will be logged out (only
            enabled if isDemoRoom is true)</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">isModeratedRoom</td>
	                     <td valign="top">Users have to wait until a Moderator arrives. Use the
            becomeModerator param in setUserObjectAndGenerateRoomHash to
            set a user as default Moderator</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">allowUserQuestions</td>
	                     <td valign="top">enable or disable the button to allow users to apply for
            moderation</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">isAudioOnly</td>
	                     <td valign="top">enable or disable the video / or audio-only</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">hideTopBar</td>
	                     <td valign="top">hide or show TopBar</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">hideChat</td>
	                     <td valign="top">hide or show Chat</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">hideActivitiesAndActions</td>
	                     <td valign="top">hide or show Activities And Actions</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">hideFilesExplorer</td>
	                     <td valign="top">hide or show Files Explorer</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">hideActionsMenu</td>
	                     <td valign="top">hide or show Actions Menu</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">hideScreenSharing</td>
	                     <td valign="top">hide or show Screen Sharing</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">hideWhiteboard</td>
	                     <td valign="top">hide or show Whiteboard. If whitboard is hidden, video pods
            and scrollbar appear instead.</td>
	                   </tr>
	                   
	                   	                   	                   </tbody>
	    			</table>
    			    			<br/>
    			REST Sample Call/URL:<br/>
    			    			    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    												<a href="http://localhost:5080/openmeetings/services/RoomService/addRoomWithModerationQuestionsAudioTypeAndHideOptions?SID=VALUE&name=VALUE&roomtypes_id=VALUE&comment=VALUE&numberOfPartizipants=VALUE&ispublic=VALUE&appointment=VALUE&isDemoRoom=VALUE&demoTime=VALUE&isModeratedRoom=VALUE&allowUserQuestions=VALUE&isAudioOnly=VALUE&hideTopBar=VALUE&hideChat=VALUE&hideActivitiesAndActions=VALUE&hideFilesExplorer=VALUE&hideActionsMenu=VALUE&hideScreenSharing=VALUE&hideWhiteboard=VALUE">http://localhost:5080/openmeetings/services/RoomService/addRoomWithModerationQuestionsAudioTypeAndHideOptions?SID=VALUE&amp;name=VALUE&amp;roomtypes_id=VALUE&amp;comment=VALUE&amp;numberOfPartizipants=VALUE&amp;ispublic=VALUE&amp;appointment=VALUE&amp;isDemoRoom=VALUE&amp;demoTime=VALUE&amp;isModeratedRoom=VALUE&amp;allowUserQuestions=VALUE&amp;isAudioOnly=VALUE&amp;hideTopBar=VALUE&amp;hideChat=VALUE&amp;hideActivitiesAndActions=VALUE&amp;hideFilesExplorer=VALUE&amp;hideActionsMenu=VALUE&amp;hideScreenSharing=VALUE&amp;hideWhiteboard=VALUE</a>
    		  </div>
    	   				    		      <div class="method">
		        <div class="method_header">
		        <div style="margin-left:10px">
    			<a name="getRoomIdByExternalId" ><b>getRoomIdByExternalId</b></a>
    			</div>
    			</div>
    			
    			Method: <i>getRoomIdByExternalId (
    			    			    			       			   String SID
    			       			    			       			     , 
    			       			   String name
    			       			    			       			     , 
    			       			   Long roomtypes_id
    			       			    			       			     , 
    			       			   String comment
    			       			    			       			     , 
    			       			   Long numberOfPartizipants
    			       			    			       			     , 
    			       			   Boolean ispublic
    			       			    			       			     , 
    			       			   Boolean appointment
    			       			    			       			     , 
    			       			   Boolean isDemoRoom
    			       			    			       			     , 
    			       			   Integer demoTime
    			       			    			       			     , 
    			       			   Boolean isModeratedRoom
    			       			    			       			     , 
    			       			   Long externalRoomId
    			       			    			       			     , 
    			       			   String externalRoomType
    			       			    			)
    			</i><br/>
    			<p>
    			  Checks if a room with this exteralRoomId + externalRoomType does exist,
 if yes it returns the room id if not, it will create the room and then
 return the room id of the newly created room
    			</p>
    			<p>
                  Return Type: java.lang.Long
                </p>
    			<p>Params:</p>
    			    			
    				    			<table rules="all" border="1">
	    			   <thead>
	    			   <tr>
	    			     <th width="200" align="left">Type</th>
	    			     <th width="200" align="left">Fieldname</th>
	    			     <th width="400" align="left">Description</th>
	    			   </tr>
	    			   </thead>
	    			   <tbody>
	    			   	    			   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">SID</td>
	                     <td valign="top">The SID of the User. This SID must be marked as Loggedin</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">name</td>
	                     <td valign="top">Name of the room</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Long
	                     		                     </td>
	                     <td valign="top">roomtypes_id</td>
	                     <td valign="top">Type of that room (1 = Conference, 2 = Audience, 3 =
            Restricted, 4 = Interview)</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">comment</td>
	                     <td valign="top">any comment</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Long
	                     		                     </td>
	                     <td valign="top">numberOfPartizipants</td>
	                     <td valign="top">the maximum users allowed in this room</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">ispublic</td>
	                     <td valign="top">If this room is public (use true if you don't deal with
            different Organizations)</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">appointment</td>
	                     <td valign="top">is it a Calendar Room? (use false if not sure what that means)</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">isDemoRoom</td>
	                     <td valign="top">is it a Demo Room with limited time? (use false if not sure
            what that means)</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Integer
	                     		                     </td>
	                     <td valign="top">demoTime</td>
	                     <td valign="top">time in seconds after the user will be logged out (only
            enabled if isDemoRoom is true)</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">isModeratedRoom</td>
	                     <td valign="top">Users have to wait untill a Moderator arrives. Use the
            becomeModerator param in setUserObjectAndGenerateRoomHash to
            set a user as default Moderator</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Long
	                     		                     </td>
	                     <td valign="top">externalRoomId</td>
	                     <td valign="top">your external room id may set here</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">externalRoomType</td>
	                     <td valign="top">you can specify your system-name or type of room here, for
            example "moodle"</td>
	                   </tr>
	                   
	                   	                   	                   </tbody>
	    			</table>
    			    			<br/>
    			REST Sample Call/URL:<br/>
    			    			    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    												<a href="http://localhost:5080/openmeetings/services/RoomService/getRoomIdByExternalId?SID=VALUE&name=VALUE&roomtypes_id=VALUE&comment=VALUE&numberOfPartizipants=VALUE&ispublic=VALUE&appointment=VALUE&isDemoRoom=VALUE&demoTime=VALUE&isModeratedRoom=VALUE&externalRoomId=VALUE&externalRoomType=VALUE">http://localhost:5080/openmeetings/services/RoomService/getRoomIdByExternalId?SID=VALUE&amp;name=VALUE&amp;roomtypes_id=VALUE&amp;comment=VALUE&amp;numberOfPartizipants=VALUE&amp;ispublic=VALUE&amp;appointment=VALUE&amp;isDemoRoom=VALUE&amp;demoTime=VALUE&amp;isModeratedRoom=VALUE&amp;externalRoomId=VALUE&amp;externalRoomType=VALUE</a>
    		  </div>
    	   				    		      <div class="method">
		        <div class="method_header">
		        <div style="margin-left:10px">
    			<a name="updateRoom" ><b>updateRoom</b></a>
    			</div>
    			</div>
    			
    			Method: <i>updateRoom (
    			    			    			       			   String SID
    			       			    			       			     , 
    			       			   Long rooms_id
    			       			    			       			     , 
    			       			   String name
    			       			    			       			     , 
    			       			   Long roomtypes_id
    			       			    			       			     , 
    			       			   String comment
    			       			    			       			     , 
    			       			   Long numberOfPartizipants
    			       			    			       			     , 
    			       			   Boolean ispublic
    			       			    			       			     , 
    			       			   Integer videoPodWidth
    			       			    			       			     , 
    			       			   Integer videoPodHeight
    			       			    			       			     , 
    			       			   Integer videoPodXPosition
    			       			    			       			     , 
    			       			   Integer videoPodYPosition
    			       			    			       			     , 
    			       			   Integer moderationPanelXPosition
    			       			    			       			     , 
    			       			   Boolean showWhiteBoard
    			       			    			       			     , 
    			       			   Integer whiteBoardPanelXPosition
    			       			    			       			     , 
    			       			   Integer whiteBoardPanelYPosition
    			       			    			       			     , 
    			       			   Integer whiteBoardPanelHeight
    			       			    			       			     , 
    			       			   Integer whiteBoardPanelWidth
    			       			    			       			     , 
    			       			   Boolean showFilesPanel
    			       			    			       			     , 
    			       			   Integer filesPanelXPosition
    			       			    			       			     , 
    			       			   Integer filesPanelYPosition
    			       			    			       			     , 
    			       			   Integer filesPanelHeight
    			       			    			       			     , 
    			       			   Integer filesPanelWidth
    			       			    			       			     , 
    			       			   Boolean appointment
    			       			    			)
    			</i><br/>
    			<p>
    			  TODO: Fix Organization Issue deprecated use updateRoomWithModeration
    			</p>
    			<p>
                  Return Type: java.lang.Long
                </p>
    			<p>Params:</p>
    			    				<b>Warning:</b><i> Params in this method do not seem to be correctly documentated</i>
    				<br/><br/>
    			    			
    				    			<table rules="all" border="1">
	    			   <thead>
	    			   <tr>
	    			     <th width="200" align="left">Type</th>
	    			     <th width="200" align="left">Fieldname</th>
	    			     <th width="400" align="left">Description</th>
	    			   </tr>
	    			   </thead>
	    			   <tbody>
	    			   	    			   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">SID</td>
	                     <td valign="top">The SID of the User. This SID must be marked as Loggedin</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Long
	                     		                     </td>
	                     <td valign="top">rooms_id</td>
	                     <td valign="top"></td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">name</td>
	                     <td valign="top"></td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Long
	                     		                     </td>
	                     <td valign="top">roomtypes_id</td>
	                     <td valign="top"></td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">comment</td>
	                     <td valign="top"></td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Long
	                     		                     </td>
	                     <td valign="top">numberOfPartizipants</td>
	                     <td valign="top"></td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">ispublic</td>
	                     <td valign="top"></td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Integer
	                     		                     </td>
	                     <td valign="top">videoPodWidth</td>
	                     <td valign="top"></td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Integer
	                     		                     </td>
	                     <td valign="top">videoPodHeight</td>
	                     <td valign="top"></td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Integer
	                     		                     </td>
	                     <td valign="top">videoPodXPosition</td>
	                     <td valign="top"></td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Integer
	                     		                     </td>
	                     <td valign="top">videoPodYPosition</td>
	                     <td valign="top"></td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Integer
	                     		                     </td>
	                     <td valign="top">moderationPanelXPosition</td>
	                     <td valign="top"></td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">showWhiteBoard</td>
	                     <td valign="top"></td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Integer
	                     		                     </td>
	                     <td valign="top">whiteBoardPanelXPosition</td>
	                     <td valign="top"></td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Integer
	                     		                     </td>
	                     <td valign="top">whiteBoardPanelYPosition</td>
	                     <td valign="top"></td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Integer
	                     		                     </td>
	                     <td valign="top">whiteBoardPanelHeight</td>
	                     <td valign="top"></td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Integer
	                     		                     </td>
	                     <td valign="top">whiteBoardPanelWidth</td>
	                     <td valign="top"></td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">showFilesPanel</td>
	                     <td valign="top"></td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Integer
	                     		                     </td>
	                     <td valign="top">filesPanelXPosition</td>
	                     <td valign="top"></td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Integer
	                     		                     </td>
	                     <td valign="top">filesPanelYPosition</td>
	                     <td valign="top"></td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Integer
	                     		                     </td>
	                     <td valign="top">filesPanelHeight</td>
	                     <td valign="top"></td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Integer
	                     		                     </td>
	                     <td valign="top">filesPanelWidth</td>
	                     <td valign="top"></td>
	                   </tr>
	                   
	                   	                   	                   </tbody>
	    			</table>
    			    			<br/>
    			REST Sample Call/URL:<br/>
    			    			    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    												<a href="http://localhost:5080/openmeetings/services/RoomService/updateRoom?SID=VALUE&rooms_id=VALUE&name=VALUE&roomtypes_id=VALUE&comment=VALUE&numberOfPartizipants=VALUE&ispublic=VALUE&videoPodWidth=VALUE&videoPodHeight=VALUE&videoPodXPosition=VALUE&videoPodYPosition=VALUE&moderationPanelXPosition=VALUE&showWhiteBoard=VALUE&whiteBoardPanelXPosition=VALUE&whiteBoardPanelYPosition=VALUE&whiteBoardPanelHeight=VALUE&whiteBoardPanelWidth=VALUE&showFilesPanel=VALUE&filesPanelXPosition=VALUE&filesPanelYPosition=VALUE&filesPanelHeight=VALUE&filesPanelWidth=VALUE&appointment=VALUE">http://localhost:5080/openmeetings/services/RoomService/updateRoom?SID=VALUE&amp;rooms_id=VALUE&amp;name=VALUE&amp;roomtypes_id=VALUE&amp;comment=VALUE&amp;numberOfPartizipants=VALUE&amp;ispublic=VALUE&amp;videoPodWidth=VALUE&amp;videoPodHeight=VALUE&amp;videoPodXPosition=VALUE&amp;videoPodYPosition=VALUE&amp;moderationPanelXPosition=VALUE&amp;showWhiteBoard=VALUE&amp;whiteBoardPanelXPosition=VALUE&amp;whiteBoardPanelYPosition=VALUE&amp;whiteBoardPanelHeight=VALUE&amp;whiteBoardPanelWidth=VALUE&amp;showFilesPanel=VALUE&amp;filesPanelXPosition=VALUE&amp;filesPanelYPosition=VALUE&amp;filesPanelHeight=VALUE&amp;filesPanelWidth=VALUE&amp;appointment=VALUE</a>
    		  </div>
    	   				    		      <div class="method">
		        <div class="method_header">
		        <div style="margin-left:10px">
    			<a name="updateRoomWithModeration" ><b>updateRoomWithModeration</b></a>
    			</div>
    			</div>
    			
    			Method: <i>updateRoomWithModeration (
    			    			    			       			   String SID
    			       			    			       			     , 
    			       			   Long room_id
    			       			    			       			     , 
    			       			   String name
    			       			    			       			     , 
    			       			   Long roomtypes_id
    			       			    			       			     , 
    			       			   String comment
    			       			    			       			     , 
    			       			   Long numberOfPartizipants
    			       			    			       			     , 
    			       			   Boolean ispublic
    			       			    			       			     , 
    			       			   Boolean appointment
    			       			    			       			     , 
    			       			   Boolean isDemoRoom
    			       			    			       			     , 
    			       			   Integer demoTime
    			       			    			       			     , 
    			       			   Boolean isModeratedRoom
    			       			    			)
    			</i><br/>
    			<p>
    			  Updates a conference room by its room id
    			</p>
    			<p>
                  Return Type: java.lang.Long
                </p>
    			<p>Params:</p>
    			    			
    				    			<table rules="all" border="1">
	    			   <thead>
	    			   <tr>
	    			     <th width="200" align="left">Type</th>
	    			     <th width="200" align="left">Fieldname</th>
	    			     <th width="400" align="left">Description</th>
	    			   </tr>
	    			   </thead>
	    			   <tbody>
	    			   	    			   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">SID</td>
	                     <td valign="top">The SID of the User. This SID must be marked as Loggedin</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Long
	                     		                     </td>
	                     <td valign="top">room_id</td>
	                     <td valign="top">the room id to update</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">name</td>
	                     <td valign="top">new name of the room</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Long
	                     		                     </td>
	                     <td valign="top">roomtypes_id</td>
	                     <td valign="top">new type of room (1 = Conference, 2 = Audience, 3 =
            Restricted, 4 = Interview)</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">comment</td>
	                     <td valign="top">new comment</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Long
	                     		                     </td>
	                     <td valign="top">numberOfPartizipants</td>
	                     <td valign="top">new numberOfParticipants</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">ispublic</td>
	                     <td valign="top">is public</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">appointment</td>
	                     <td valign="top">if the room is an appointment</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">isDemoRoom</td>
	                     <td valign="top">is it a Demo Room with limited time? (use false if not sure
            what that means)</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Integer
	                     		                     </td>
	                     <td valign="top">demoTime</td>
	                     <td valign="top">time in seconds after the user will be logged out (only
            enabled if isDemoRoom is true)</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">isModeratedRoom</td>
	                     <td valign="top">Users have to wait until a Moderator arrives. Use the
            becomeModerator parameter in setUserObjectAndGenerateRoomHash
            to set a user as default Moderator</td>
	                   </tr>
	                   
	                   	                   	                   </tbody>
	    			</table>
    			    			<br/>
    			REST Sample Call/URL:<br/>
    			    			    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    												<a href="http://localhost:5080/openmeetings/services/RoomService/updateRoomWithModeration?SID=VALUE&room_id=VALUE&name=VALUE&roomtypes_id=VALUE&comment=VALUE&numberOfPartizipants=VALUE&ispublic=VALUE&appointment=VALUE&isDemoRoom=VALUE&demoTime=VALUE&isModeratedRoom=VALUE">http://localhost:5080/openmeetings/services/RoomService/updateRoomWithModeration?SID=VALUE&amp;room_id=VALUE&amp;name=VALUE&amp;roomtypes_id=VALUE&amp;comment=VALUE&amp;numberOfPartizipants=VALUE&amp;ispublic=VALUE&amp;appointment=VALUE&amp;isDemoRoom=VALUE&amp;demoTime=VALUE&amp;isModeratedRoom=VALUE</a>
    		  </div>
    	   				    		      <div class="method">
		        <div class="method_header">
		        <div style="margin-left:10px">
    			<a name="updateRoomWithModerationAndQuestions" ><b>updateRoomWithModerationAndQuestions</b></a>
    			</div>
    			</div>
    			
    			Method: <i>updateRoomWithModerationAndQuestions (
    			    			    			       			   String SID
    			       			    			       			     , 
    			       			   Long room_id
    			       			    			       			     , 
    			       			   String name
    			       			    			       			     , 
    			       			   Long roomtypes_id
    			       			    			       			     , 
    			       			   String comment
    			       			    			       			     , 
    			       			   Long numberOfPartizipants
    			       			    			       			     , 
    			       			   Boolean ispublic
    			       			    			       			     , 
    			       			   Boolean appointment
    			       			    			       			     , 
    			       			   Boolean isDemoRoom
    			       			    			       			     , 
    			       			   Integer demoTime
    			       			    			       			     , 
    			       			   Boolean isModeratedRoom
    			       			    			       			     , 
    			       			   Boolean allowUserQuestions
    			       			    			)
    			</i><br/>
    			<p>
    			  
    			</p>
    			<p>
                  Return Type: java.lang.Long
                </p>
    			<p>Params:</p>
    			    			
    				    			<table rules="all" border="1">
	    			   <thead>
	    			   <tr>
	    			     <th width="200" align="left">Type</th>
	    			     <th width="200" align="left">Fieldname</th>
	    			     <th width="400" align="left">Description</th>
	    			   </tr>
	    			   </thead>
	    			   <tbody>
	    			   	    			   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">SID</td>
	                     <td valign="top">The SID of the User. This SID must be marked as Loggedin</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Long
	                     		                     </td>
	                     <td valign="top">room_id</td>
	                     <td valign="top">the room id to update</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">name</td>
	                     <td valign="top">new name of the room</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Long
	                     		                     </td>
	                     <td valign="top">roomtypes_id</td>
	                     <td valign="top">new type of room (1 = Conference, 2 = Audience, 3 =
            Restricted, 4 = Interview)</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">comment</td>
	                     <td valign="top">new comment</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Long
	                     		                     </td>
	                     <td valign="top">numberOfPartizipants</td>
	                     <td valign="top">new numberOfParticipants</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">ispublic</td>
	                     <td valign="top">is public</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">appointment</td>
	                     <td valign="top">if the room is an appointment</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">isDemoRoom</td>
	                     <td valign="top">is it a Demo Room with limited time? (use false if not sure
            what that means)</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Integer
	                     		                     </td>
	                     <td valign="top">demoTime</td>
	                     <td valign="top">time in seconds after the user will be logged out (only
            enabled if isDemoRoom is true)</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">isModeratedRoom</td>
	                     <td valign="top">Users have to wait until a Moderator arrives. Use the
            becomeModerator parameter in setUserObjectAndGenerateRoomHash
            to set a user as default Moderator</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">allowUserQuestions</td>
	                     <td valign="top">enable or disable the button to allow users to apply for
            moderation</td>
	                   </tr>
	                   
	                   	                   	                   </tbody>
	    			</table>
    			    			<br/>
    			REST Sample Call/URL:<br/>
    			    			    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    												<a href="http://localhost:5080/openmeetings/services/RoomService/updateRoomWithModerationAndQuestions?SID=VALUE&room_id=VALUE&name=VALUE&roomtypes_id=VALUE&comment=VALUE&numberOfPartizipants=VALUE&ispublic=VALUE&appointment=VALUE&isDemoRoom=VALUE&demoTime=VALUE&isModeratedRoom=VALUE&allowUserQuestions=VALUE">http://localhost:5080/openmeetings/services/RoomService/updateRoomWithModerationAndQuestions?SID=VALUE&amp;room_id=VALUE&amp;name=VALUE&amp;roomtypes_id=VALUE&amp;comment=VALUE&amp;numberOfPartizipants=VALUE&amp;ispublic=VALUE&amp;appointment=VALUE&amp;isDemoRoom=VALUE&amp;demoTime=VALUE&amp;isModeratedRoom=VALUE&amp;allowUserQuestions=VALUE</a>
    		  </div>
    	   				    		      <div class="method">
		        <div class="method_header">
		        <div style="margin-left:10px">
    			<a name="updateRoomWithModerationQuestionsAudioTypeAndHideOptions" ><b>updateRoomWithModerationQuestionsAudioTypeAndHideOptions</b></a>
    			</div>
    			</div>
    			
    			Method: <i>updateRoomWithModerationQuestionsAudioTypeAndHideOptions (
    			    			    			       			   String SID
    			       			    			       			     , 
    			       			   Long room_id
    			       			    			       			     , 
    			       			   String name
    			       			    			       			     , 
    			       			   Long roomtypes_id
    			       			    			       			     , 
    			       			   String comment
    			       			    			       			     , 
    			       			   Long numberOfPartizipants
    			       			    			       			     , 
    			       			   Boolean ispublic
    			       			    			       			     , 
    			       			   Boolean appointment
    			       			    			       			     , 
    			       			   Boolean isDemoRoom
    			       			    			       			     , 
    			       			   Integer demoTime
    			       			    			       			     , 
    			       			   Boolean isModeratedRoom
    			       			    			       			     , 
    			       			   Boolean allowUserQuestions
    			       			    			       			     , 
    			       			   Boolean isAudioOnly
    			       			    			       			     , 
    			       			   Boolean hideTopBar
    			       			    			       			     , 
    			       			   Boolean hideChat
    			       			    			       			     , 
    			       			   Boolean hideActivitiesAndActions
    			       			    			       			     , 
    			       			   Boolean hideFilesExplorer
    			       			    			       			     , 
    			       			   Boolean hideActionsMenu
    			       			    			       			     , 
    			       			   Boolean hideScreenSharing
    			       			    			       			     , 
    			       			   Boolean hideWhiteboard
    			       			    			)
    			</i><br/>
    			<p>
    			  update room with options for user questions, audio only and hide
    			</p>
    			<p>
                  Return Type: java.lang.Long
                </p>
    			<p>Params:</p>
    			    			
    				    			<table rules="all" border="1">
	    			   <thead>
	    			   <tr>
	    			     <th width="200" align="left">Type</th>
	    			     <th width="200" align="left">Fieldname</th>
	    			     <th width="400" align="left">Description</th>
	    			   </tr>
	    			   </thead>
	    			   <tbody>
	    			   	    			   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">SID</td>
	                     <td valign="top">The SID of the User. This SID must be marked as Loggedin</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Long
	                     		                     </td>
	                     <td valign="top">room_id</td>
	                     <td valign="top">the room id to update</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">name</td>
	                     <td valign="top">new name of the room</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Long
	                     		                     </td>
	                     <td valign="top">roomtypes_id</td>
	                     <td valign="top">new type of room (1 = Conference, 2 = Audience, 3 =
            Restricted, 4 = Interview)</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">comment</td>
	                     <td valign="top">new comment</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Long
	                     		                     </td>
	                     <td valign="top">numberOfPartizipants</td>
	                     <td valign="top">number of participants</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">ispublic</td>
	                     <td valign="top">is public</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">appointment</td>
	                     <td valign="top">if the room is an appointment (use false if not sure what that
            means)</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">isDemoRoom</td>
	                     <td valign="top">is it a Demo Room with limited time? (use false if not sure
            what that means)</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Integer
	                     		                     </td>
	                     <td valign="top">demoTime</td>
	                     <td valign="top">time in seconds after the user will be logged out (only
            enabled if isDemoRoom is true)</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">isModeratedRoom</td>
	                     <td valign="top">Users have to wait until a Moderator arrives. Use the
            becomeModerator parameter in setUserObjectAndGenerateRoomHash
            to set a user as default Moderator</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">allowUserQuestions</td>
	                     <td valign="top">enable or disable the button to allow users to apply for
            moderation</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">isAudioOnly</td>
	                     <td valign="top">enable or disable the video / or audio-only</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">hideTopBar</td>
	                     <td valign="top">hide or show TopBar</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">hideChat</td>
	                     <td valign="top">hide or show Chat</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">hideActivitiesAndActions</td>
	                     <td valign="top">hide or show Activities And Actions</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">hideFilesExplorer</td>
	                     <td valign="top">hide or show Files Explorer</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">hideActionsMenu</td>
	                     <td valign="top">hide or show Actions Menu</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">hideScreenSharing</td>
	                     <td valign="top">hide or show Screen Sharing</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">hideWhiteboard</td>
	                     <td valign="top">hide or show Whiteboard. If whitboard is hidden, video pods
            and scrollbar appear instead.</td>
	                   </tr>
	                   
	                   	                   	                   </tbody>
	    			</table>
    			    			<br/>
    			REST Sample Call/URL:<br/>
    			    			    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    												<a href="http://localhost:5080/openmeetings/services/RoomService/updateRoomWithModerationQuestionsAudioTypeAndHideOptions?SID=VALUE&room_id=VALUE&name=VALUE&roomtypes_id=VALUE&comment=VALUE&numberOfPartizipants=VALUE&ispublic=VALUE&appointment=VALUE&isDemoRoom=VALUE&demoTime=VALUE&isModeratedRoom=VALUE&allowUserQuestions=VALUE&isAudioOnly=VALUE&hideTopBar=VALUE&hideChat=VALUE&hideActivitiesAndActions=VALUE&hideFilesExplorer=VALUE&hideActionsMenu=VALUE&hideScreenSharing=VALUE&hideWhiteboard=VALUE">http://localhost:5080/openmeetings/services/RoomService/updateRoomWithModerationQuestionsAudioTypeAndHideOptions?SID=VALUE&amp;room_id=VALUE&amp;name=VALUE&amp;roomtypes_id=VALUE&amp;comment=VALUE&amp;numberOfPartizipants=VALUE&amp;ispublic=VALUE&amp;appointment=VALUE&amp;isDemoRoom=VALUE&amp;demoTime=VALUE&amp;isModeratedRoom=VALUE&amp;allowUserQuestions=VALUE&amp;isAudioOnly=VALUE&amp;hideTopBar=VALUE&amp;hideChat=VALUE&amp;hideActivitiesAndActions=VALUE&amp;hideFilesExplorer=VALUE&amp;hideActionsMenu=VALUE&amp;hideScreenSharing=VALUE&amp;hideWhiteboard=VALUE</a>
    		  </div>
    	   				    		      <div class="method">
		        <div class="method_header">
		        <div style="margin-left:10px">
    			<a name="deleteRoom" ><b>deleteRoom</b></a>
    			</div>
    			</div>
    			
    			Method: <i>deleteRoom (
    			    			    			       			   String SID
    			       			    			       			     , 
    			       			   long rooms_id
    			       			    			)
    			</i><br/>
    			<p>
    			  Delete a room by its room id
    			</p>
    			<p>
                  Return Type: java.lang.Long
                </p>
    			<p>Params:</p>
    			    			
    				    			<table rules="all" border="1">
	    			   <thead>
	    			   <tr>
	    			     <th width="200" align="left">Type</th>
	    			     <th width="200" align="left">Fieldname</th>
	    			     <th width="400" align="left">Description</th>
	    			   </tr>
	    			   </thead>
	    			   <tbody>
	    			   	    			   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">SID</td>
	                     <td valign="top">The SID of the User. This SID must be marked as Loggedin</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		long
	                     		                     </td>
	                     <td valign="top">rooms_id</td>
	                     <td valign="top"></td>
	                   </tr>
	                   
	                   	                   	                   </tbody>
	    			</table>
    			    			<br/>
    			REST Sample Call/URL:<br/>
    			    			    				    								    				    												<a href="http://localhost:5080/openmeetings/services/RoomService/deleteRoom?SID=VALUE&rooms_id=VALUE">http://localhost:5080/openmeetings/services/RoomService/deleteRoom?SID=VALUE&amp;rooms_id=VALUE</a>
    		  </div>
    	   				    		      <div class="method">
		        <div class="method_header">
		        <div style="margin-left:10px">
    			<a name="kickUser" ><b>kickUser</b></a>
    			</div>
    			</div>
    			
    			Method: <i>kickUser (
    			    			    			       			   String SID_Admin
    			       			    			       			     , 
    			       			   Long room_id
    			       			    			)
    			</i><br/>
    			<p>
    			  kick all uses of a certain room
    			</p>
    			<p>
                  Return Type: java.lang.Boolean
                </p>
    			<p>Params:</p>
    			    			
    				    			<table rules="all" border="1">
	    			   <thead>
	    			   <tr>
	    			     <th width="200" align="left">Type</th>
	    			     <th width="200" align="left">Fieldname</th>
	    			     <th width="400" align="left">Description</th>
	    			   </tr>
	    			   </thead>
	    			   <tbody>
	    			   	    			   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">SID</td>
	                     <td valign="top">The SID of the User. This SID must be marked as Loggedin
            _Admin</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Long
	                     		                     </td>
	                     <td valign="top">room_id</td>
	                     <td valign="top">the room id</td>
	                   </tr>
	                   
	                   	                   	                   </tbody>
	    			</table>
    			    			<br/>
    			REST Sample Call/URL:<br/>
    			    			    				    								    				    												<a href="http://localhost:5080/openmeetings/services/RoomService/kickUser?SID_Admin=VALUE&room_id=VALUE">http://localhost:5080/openmeetings/services/RoomService/kickUser?SID_Admin=VALUE&amp;room_id=VALUE</a>
    		  </div>
    	   				    		      <div class="method">
		        <div class="method_header">
		        <div style="margin-left:10px">
    			<a name="addRoomWithModerationAndExternalType" ><b>addRoomWithModerationAndExternalType</b></a>
    			</div>
    			</div>
    			
    			Method: <i>addRoomWithModerationAndExternalType (
    			    			    			       			   String SID
    			       			    			       			     , 
    			       			   String name
    			       			    			       			     , 
    			       			   Long roomtypes_id
    			       			    			       			     , 
    			       			   String comment
    			       			    			       			     , 
    			       			   Long numberOfPartizipants
    			       			    			       			     , 
    			       			   Boolean ispublic
    			       			    			       			     , 
    			       			   Boolean appointment
    			       			    			       			     , 
    			       			   Boolean isDemoRoom
    			       			    			       			     , 
    			       			   Integer demoTime
    			       			    			       			     , 
    			       			   Boolean isModeratedRoom
    			       			    			       			     , 
    			       			   String externalRoomType
    			       			    			)
    			</i><br/>
    			<p>
    			  Add a new conference room with option to set the external room type, the
 external room type should be set if multiple applications use the same
 OpenMeetings instance
    			</p>
    			<p>
                  Return Type: java.lang.Long
                </p>
    			<p>Params:</p>
    			    			
    				    			<table rules="all" border="1">
	    			   <thead>
	    			   <tr>
	    			     <th width="200" align="left">Type</th>
	    			     <th width="200" align="left">Fieldname</th>
	    			     <th width="400" align="left">Description</th>
	    			   </tr>
	    			   </thead>
	    			   <tbody>
	    			   	    			   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">SID</td>
	                     <td valign="top">The SID of the User. This SID must be marked as Loggedin</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">name</td>
	                     <td valign="top">new name of the room</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Long
	                     		                     </td>
	                     <td valign="top">roomtypes_id</td>
	                     <td valign="top">new type of room (1 = Conference, 2 = Audience, 3 =
            Restricted, 4 = Interview)</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">comment</td>
	                     <td valign="top">new comment</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Long
	                     		                     </td>
	                     <td valign="top">numberOfPartizipants</td>
	                     <td valign="top">new numberOfParticipants</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">ispublic</td>
	                     <td valign="top">is public</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">appointment</td>
	                     <td valign="top">if the room is an appointment</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">isDemoRoom</td>
	                     <td valign="top">is it a Demo Room with limited time? (use false if not sure
            what that means)</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Integer
	                     		                     </td>
	                     <td valign="top">demoTime</td>
	                     <td valign="top">time in seconds after the user will be logged out (only
            enabled if isDemoRoom is true)</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">isModeratedRoom</td>
	                     <td valign="top">Users have to wait until a Moderator arrives. Use the
            becomeModerator parameter in setUserObjectAndGenerateRoomHash
            to set a user as default Moderator</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">externalRoomType</td>
	                     <td valign="top">the external room type (can be used to identify different
            external systems using same OpenMeetings instance)</td>
	                   </tr>
	                   
	                   	                   	                   </tbody>
	    			</table>
    			    			<br/>
    			REST Sample Call/URL:<br/>
    			    			    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    												<a href="http://localhost:5080/openmeetings/services/RoomService/addRoomWithModerationAndExternalType?SID=VALUE&name=VALUE&roomtypes_id=VALUE&comment=VALUE&numberOfPartizipants=VALUE&ispublic=VALUE&appointment=VALUE&isDemoRoom=VALUE&demoTime=VALUE&isModeratedRoom=VALUE&externalRoomType=VALUE">http://localhost:5080/openmeetings/services/RoomService/addRoomWithModerationAndExternalType?SID=VALUE&amp;name=VALUE&amp;roomtypes_id=VALUE&amp;comment=VALUE&amp;numberOfPartizipants=VALUE&amp;ispublic=VALUE&amp;appointment=VALUE&amp;isDemoRoom=VALUE&amp;demoTime=VALUE&amp;isModeratedRoom=VALUE&amp;externalRoomType=VALUE</a>
    		  </div>
    	   				    		      <div class="method">
		        <div class="method_header">
		        <div style="margin-left:10px">
    			<a name="addRoomWithModerationExternalTypeAndAudioType" ><b>addRoomWithModerationExternalTypeAndAudioType</b></a>
    			</div>
    			</div>
    			
    			Method: <i>addRoomWithModerationExternalTypeAndAudioType (
    			    			    			       			   String SID
    			       			    			       			     , 
    			       			   String name
    			       			    			       			     , 
    			       			   Long roomtypes_id
    			       			    			       			     , 
    			       			   String comment
    			       			    			       			     , 
    			       			   Long numberOfPartizipants
    			       			    			       			     , 
    			       			   Boolean ispublic
    			       			    			       			     , 
    			       			   Boolean appointment
    			       			    			       			     , 
    			       			   Boolean isDemoRoom
    			       			    			       			     , 
    			       			   Integer demoTime
    			       			    			       			     , 
    			       			   Boolean isModeratedRoom
    			       			    			       			     , 
    			       			   String externalRoomType
    			       			    			       			     , 
    			       			   Boolean allowUserQuestions
    			       			    			       			     , 
    			       			   Boolean isAudioOnly
    			       			    			)
    			</i><br/>
    			<p>
    			  Adds a new room with options for audio only
    			</p>
    			<p>
                  Return Type: java.lang.Long
                </p>
    			<p>Params:</p>
    			    			
    				    			<table rules="all" border="1">
	    			   <thead>
	    			   <tr>
	    			     <th width="200" align="left">Type</th>
	    			     <th width="200" align="left">Fieldname</th>
	    			     <th width="400" align="left">Description</th>
	    			   </tr>
	    			   </thead>
	    			   <tbody>
	    			   	    			   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">SID</td>
	                     <td valign="top">The SID of the User. This SID must be marked as Loggedin</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">name</td>
	                     <td valign="top">new name of the room</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Long
	                     		                     </td>
	                     <td valign="top">roomtypes_id</td>
	                     <td valign="top">new type of room (1 = Conference, 2 = Audience, 3 =
            Restricted, 4 = Interview)</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">comment</td>
	                     <td valign="top">new comment</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Long
	                     		                     </td>
	                     <td valign="top">numberOfPartizipants</td>
	                     <td valign="top">new numberOfParticipants</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">ispublic</td>
	                     <td valign="top">is public</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">appointment</td>
	                     <td valign="top">if the room is an appointment</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">isDemoRoom</td>
	                     <td valign="top">is it a Demo Room with limited time? (use false if not sure
            what that means)</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Integer
	                     		                     </td>
	                     <td valign="top">demoTime</td>
	                     <td valign="top">time in seconds after the user will be logged out (only
            enabled if isDemoRoom is true)</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">isModeratedRoom</td>
	                     <td valign="top">Users have to wait until a Moderator arrives. Use the
            becomeModerator parameter in setUserObjectAndGenerateRoomHash
            to set a user as default Moderator</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">externalRoomType</td>
	                     <td valign="top">the external room type (can be used to identify different
            external systems using same OpenMeetings instance)</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">allowUserQuestions</td>
	                     <td valign="top">enable or disable the button to allow users to apply for
            moderation</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">isAudioOnly</td>
	                     <td valign="top">enable or disable the video / or audio-only</td>
	                   </tr>
	                   
	                   	                   	                   </tbody>
	    			</table>
    			    			<br/>
    			REST Sample Call/URL:<br/>
    			    			    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    												<a href="http://localhost:5080/openmeetings/services/RoomService/addRoomWithModerationExternalTypeAndAudioType?SID=VALUE&name=VALUE&roomtypes_id=VALUE&comment=VALUE&numberOfPartizipants=VALUE&ispublic=VALUE&appointment=VALUE&isDemoRoom=VALUE&demoTime=VALUE&isModeratedRoom=VALUE&externalRoomType=VALUE&allowUserQuestions=VALUE&isAudioOnly=VALUE">http://localhost:5080/openmeetings/services/RoomService/addRoomWithModerationExternalTypeAndAudioType?SID=VALUE&amp;name=VALUE&amp;roomtypes_id=VALUE&amp;comment=VALUE&amp;numberOfPartizipants=VALUE&amp;ispublic=VALUE&amp;appointment=VALUE&amp;isDemoRoom=VALUE&amp;demoTime=VALUE&amp;isModeratedRoom=VALUE&amp;externalRoomType=VALUE&amp;allowUserQuestions=VALUE&amp;isAudioOnly=VALUE</a>
    		  </div>
    	   				    		      <div class="method">
		        <div class="method_header">
		        <div style="margin-left:10px">
    			<a name="addRoomWithModerationAndRecordingFlags" ><b>addRoomWithModerationAndRecordingFlags</b></a>
    			</div>
    			</div>
    			
    			Method: <i>addRoomWithModerationAndRecordingFlags (
    			    			    			       			   String SID
    			       			    			       			     , 
    			       			   String name
    			       			    			       			     , 
    			       			   Long roomtypes_id
    			       			    			       			     , 
    			       			   String comment
    			       			    			       			     , 
    			       			   Long numberOfPartizipants
    			       			    			       			     , 
    			       			   Boolean ispublic
    			       			    			       			     , 
    			       			   Boolean appointment
    			       			    			       			     , 
    			       			   Boolean isDemoRoom
    			       			    			       			     , 
    			       			   Integer demoTime
    			       			    			       			     , 
    			       			   Boolean isModeratedRoom
    			       			    			       			     , 
    			       			   String externalRoomType
    			       			    			       			     , 
    			       			   Boolean allowUserQuestions
    			       			    			       			     , 
    			       			   Boolean isAudioOnly
    			       			    			       			     , 
    			       			   Boolean waitForRecording
    			       			    			       			     , 
    			       			   Boolean allowRecording
    			       			    			)
    			</i><br/>
    			<p>
    			  Adds a new room with options for recording
    			</p>
    			<p>
                  Return Type: java.lang.Long
                </p>
    			<p>Params:</p>
    			    			
    				    			<table rules="all" border="1">
	    			   <thead>
	    			   <tr>
	    			     <th width="200" align="left">Type</th>
	    			     <th width="200" align="left">Fieldname</th>
	    			     <th width="400" align="left">Description</th>
	    			   </tr>
	    			   </thead>
	    			   <tbody>
	    			   	    			   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">SID</td>
	                     <td valign="top">The SID of the User. This SID must be marked as Loggedin</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">name</td>
	                     <td valign="top">new name of the room</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Long
	                     		                     </td>
	                     <td valign="top">roomtypes_id</td>
	                     <td valign="top">new type of room (1 = Conference, 2 = Audience, 3 =
            Restricted, 4 = Interview)</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">comment</td>
	                     <td valign="top">new comment</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Long
	                     		                     </td>
	                     <td valign="top">numberOfPartizipants</td>
	                     <td valign="top">new numberOfParticipants</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">ispublic</td>
	                     <td valign="top">is public</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">appointment</td>
	                     <td valign="top">if the room is an appointment</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">isDemoRoom</td>
	                     <td valign="top">is it a Demo Room with limited time? (use false if not sure
            what that means)</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Integer
	                     		                     </td>
	                     <td valign="top">demoTime</td>
	                     <td valign="top">time in seconds after the user will be logged out (only
            enabled if isDemoRoom is true)</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">isModeratedRoom</td>
	                     <td valign="top">Users have to wait until a Moderator arrives. Use the
            becomeModerator parameter in setUserObjectAndGenerateRoomHash
            to set a user as default Moderator</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">externalRoomType</td>
	                     <td valign="top">the external room type (can be used to identify different
            external systems using same OpenMeetings instance)</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">allowUserQuestions</td>
	                     <td valign="top">enable or disable the button to allow users to apply for
            moderation</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">isAudioOnly</td>
	                     <td valign="top">enable or disable the video / or audio-only</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">waitForRecording</td>
	                     <td valign="top">if the users in the room will get a notification that they
            should start recording before they do a conference</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">allowRecording</td>
	                     <td valign="top">if the recording option is available or not</td>
	                   </tr>
	                   
	                   	                   	                   </tbody>
	    			</table>
    			    			<br/>
    			REST Sample Call/URL:<br/>
    			    			    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    												<a href="http://localhost:5080/openmeetings/services/RoomService/addRoomWithModerationAndRecordingFlags?SID=VALUE&name=VALUE&roomtypes_id=VALUE&comment=VALUE&numberOfPartizipants=VALUE&ispublic=VALUE&appointment=VALUE&isDemoRoom=VALUE&demoTime=VALUE&isModeratedRoom=VALUE&externalRoomType=VALUE&allowUserQuestions=VALUE&isAudioOnly=VALUE&waitForRecording=VALUE&allowRecording=VALUE">http://localhost:5080/openmeetings/services/RoomService/addRoomWithModerationAndRecordingFlags?SID=VALUE&amp;name=VALUE&amp;roomtypes_id=VALUE&amp;comment=VALUE&amp;numberOfPartizipants=VALUE&amp;ispublic=VALUE&amp;appointment=VALUE&amp;isDemoRoom=VALUE&amp;demoTime=VALUE&amp;isModeratedRoom=VALUE&amp;externalRoomType=VALUE&amp;allowUserQuestions=VALUE&amp;isAudioOnly=VALUE&amp;waitForRecording=VALUE&amp;allowRecording=VALUE</a>
    		  </div>
    	   				    		      <div class="method">
		        <div class="method_header">
		        <div style="margin-left:10px">
    			<a name="addRoomWithModerationExternalTypeAndTopBarOption" ><b>addRoomWithModerationExternalTypeAndTopBarOption</b></a>
    			</div>
    			</div>
    			
    			Method: <i>addRoomWithModerationExternalTypeAndTopBarOption (
    			    			    			       			   String SID
    			       			    			       			     , 
    			       			   String name
    			       			    			       			     , 
    			       			   Long roomtypes_id
    			       			    			       			     , 
    			       			   String comment
    			       			    			       			     , 
    			       			   Long numberOfPartizipants
    			       			    			       			     , 
    			       			   Boolean ispublic
    			       			    			       			     , 
    			       			   Boolean appointment
    			       			    			       			     , 
    			       			   Boolean isDemoRoom
    			       			    			       			     , 
    			       			   Integer demoTime
    			       			    			       			     , 
    			       			   Boolean isModeratedRoom
    			       			    			       			     , 
    			       			   String externalRoomType
    			       			    			       			     , 
    			       			   Boolean allowUserQuestions
    			       			    			       			     , 
    			       			   Boolean isAudioOnly
    			       			    			       			     , 
    			       			   Boolean waitForRecording
    			       			    			       			     , 
    			       			   Boolean allowRecording
    			       			    			       			     , 
    			       			   Boolean hideTopBar
    			       			    			)
    			</i><br/>
    			<p>
    			  Add a conference room with options to disable the top menu bar in the
 conference room
    			</p>
    			<p>
                  Return Type: java.lang.Long
                </p>
    			<p>Params:</p>
    			    			
    				    			<table rules="all" border="1">
	    			   <thead>
	    			   <tr>
	    			     <th width="200" align="left">Type</th>
	    			     <th width="200" align="left">Fieldname</th>
	    			     <th width="400" align="left">Description</th>
	    			   </tr>
	    			   </thead>
	    			   <tbody>
	    			   	    			   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">SID</td>
	                     <td valign="top">The SID of the User. This SID must be marked as Loggedin</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">name</td>
	                     <td valign="top">new name of the room</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Long
	                     		                     </td>
	                     <td valign="top">roomtypes_id</td>
	                     <td valign="top">new type of room (1 = Conference, 2 = Audience, 3 =
            Restricted, 4 = Interview)</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">comment</td>
	                     <td valign="top">new comment</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Long
	                     		                     </td>
	                     <td valign="top">numberOfPartizipants</td>
	                     <td valign="top">new numberOfParticipants</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">ispublic</td>
	                     <td valign="top">is public</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">appointment</td>
	                     <td valign="top">if the room is an appointment</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">isDemoRoom</td>
	                     <td valign="top">is it a Demo Room with limited time? (use false if not sure
            what that means)</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Integer
	                     		                     </td>
	                     <td valign="top">demoTime</td>
	                     <td valign="top">time in seconds after the user will be logged out (only
            enabled if isDemoRoom is true)</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">isModeratedRoom</td>
	                     <td valign="top">Users have to wait until a Moderator arrives. Use the
            becomeModerator parameter in setUserObjectAndGenerateRoomHash
            to set a user as default Moderator</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">externalRoomType</td>
	                     <td valign="top">the external room type (can be used to identify different
            external systems using same OpenMeetings instance)</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">allowUserQuestions</td>
	                     <td valign="top">enable or disable the button to allow users to apply for
            moderation</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">isAudioOnly</td>
	                     <td valign="top">enable or disable the video / or audio-only</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">waitForRecording</td>
	                     <td valign="top">if the users in the room will get a notification that they
            should start recording before they do a conference</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">allowRecording</td>
	                     <td valign="top">if the recording option is available or not</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">hideTopBar</td>
	                     <td valign="top">if the top bar in the conference room is visible or not</td>
	                   </tr>
	                   
	                   	                   	                   </tbody>
	    			</table>
    			    			<br/>
    			REST Sample Call/URL:<br/>
    			    			    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    												<a href="http://localhost:5080/openmeetings/services/RoomService/addRoomWithModerationExternalTypeAndTopBarOption?SID=VALUE&name=VALUE&roomtypes_id=VALUE&comment=VALUE&numberOfPartizipants=VALUE&ispublic=VALUE&appointment=VALUE&isDemoRoom=VALUE&demoTime=VALUE&isModeratedRoom=VALUE&externalRoomType=VALUE&allowUserQuestions=VALUE&isAudioOnly=VALUE&waitForRecording=VALUE&allowRecording=VALUE&hideTopBar=VALUE">http://localhost:5080/openmeetings/services/RoomService/addRoomWithModerationExternalTypeAndTopBarOption?SID=VALUE&amp;name=VALUE&amp;roomtypes_id=VALUE&amp;comment=VALUE&amp;numberOfPartizipants=VALUE&amp;ispublic=VALUE&amp;appointment=VALUE&amp;isDemoRoom=VALUE&amp;demoTime=VALUE&amp;isModeratedRoom=VALUE&amp;externalRoomType=VALUE&amp;allowUserQuestions=VALUE&amp;isAudioOnly=VALUE&amp;waitForRecording=VALUE&amp;allowRecording=VALUE&amp;hideTopBar=VALUE</a>
    		  </div>
    	   				    		      <div class="method">
		        <div class="method_header">
		        <div style="margin-left:10px">
    			<a name="getInvitationHash" ><b>getInvitationHash</b></a>
    			</div>
    			</div>
    			
    			Method: <i>getInvitationHash (
    			    			    			       			   String SID
    			       			    			       			     , 
    			       			   String username
    			       			    			       			     , 
    			       			   Long room_id
    			       			    			       			     , 
    			       			   Boolean isPasswordProtected
    			       			    			       			     , 
    			       			   String invitationpass
    			       			    			       			     , 
    			       			   Integer valid
    			       			    			       			     , 
    			       			   String validFromDate
    			       			    			       			     , 
    			       			   String validFromTime
    			       			    			       			     , 
    			       			   String validToDate
    			       			    			       			     , 
    			       			   String validToTime
    			       			    			)
    			</i><br/>
    			<p>
    			  Create a Invitation hash and optionally send it by mail the From to Date
 is as String as some SOAP libraries do not accept Date Objects in SOAP
 Calls Date is parsed as dd.mm.yyyy, time as hh:mm (don't forget the
 leading zero's)
    			</p>
    			<p>
                  Return Type: java.lang.String
                </p>
    			<p>Params:</p>
    			    			
    				    			<table rules="all" border="1">
	    			   <thead>
	    			   <tr>
	    			     <th width="200" align="left">Type</th>
	    			     <th width="200" align="left">Fieldname</th>
	    			     <th width="400" align="left">Description</th>
	    			   </tr>
	    			   </thead>
	    			   <tbody>
	    			   	    			   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">SID</td>
	                     <td valign="top">The SID of the User. This SID must be marked as Loggedin a
            valid Session Token</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">username</td>
	                     <td valign="top">the username of the User that he will get</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Long
	                     		                     </td>
	                     <td valign="top">room_id</td>
	                     <td valign="top">the conference room id of the invitation</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">isPasswordProtected</td>
	                     <td valign="top">if the invitation is password protected</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">invitationpass</td>
	                     <td valign="top">the password for accessing the conference room via the
            invitation hash</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Integer
	                     		                     </td>
	                     <td valign="top">valid</td>
	                     <td valign="top">the type of validation for the hash 1: endless, 2: from-to
            period, 3: one-time</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">validFromDate</td>
	                     <td valign="top">Date in Format of dd.mm.yyyy only of interest if valid is type
            2</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">validFromTime</td>
	                     <td valign="top">time in Format of hh:mm only of interest if valid is type 2</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">validToDate</td>
	                     <td valign="top">Date in Format of dd.mm.yyyy only of interest if valid is type
            2</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">validToTime</td>
	                     <td valign="top">time in Format of hh:mm only of interest if valid is type 2</td>
	                   </tr>
	                   
	                   	                   	                   </tbody>
	    			</table>
    			    			<br/>
    			REST Sample Call/URL:<br/>
    			    			    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    												<a href="http://localhost:5080/openmeetings/services/RoomService/getInvitationHash?SID=VALUE&username=VALUE&room_id=VALUE&isPasswordProtected=VALUE&invitationpass=VALUE&valid=VALUE&validFromDate=VALUE&validFromTime=VALUE&validToDate=VALUE&validToTime=VALUE">http://localhost:5080/openmeetings/services/RoomService/getInvitationHash?SID=VALUE&amp;username=VALUE&amp;room_id=VALUE&amp;isPasswordProtected=VALUE&amp;invitationpass=VALUE&amp;valid=VALUE&amp;validFromDate=VALUE&amp;validFromTime=VALUE&amp;validToDate=VALUE&amp;validToTime=VALUE</a>
    		  </div>
    	   				    		      <div class="method">
		        <div class="method_header">
		        <div style="margin-left:10px">
    			<a name="sendInvitationHash" ><b>sendInvitationHash</b></a>
    			</div>
    			</div>
    			
    			Method: <i>sendInvitationHash (
    			    			    			       			   String SID
    			       			    			       			     , 
    			       			   String username
    			       			    			       			     , 
    			       			   String message
    			       			    			       			     , 
    			       			   String baseurl
    			       			    			       			     , 
    			       			   String email
    			       			    			       			     , 
    			       			   String subject
    			       			    			       			     , 
    			       			   Long room_id
    			       			    			       			     , 
    			       			   String conferencedomain
    			       			    			       			     , 
    			       			   Boolean isPasswordProtected
    			       			    			       			     , 
    			       			   String invitationpass
    			       			    			       			     , 
    			       			   Integer valid
    			       			    			       			     , 
    			       			   String validFromDate
    			       			    			       			     , 
    			       			   String validFromTime
    			       			    			       			     , 
    			       			   String validToDate
    			       			    			       			     , 
    			       			   String validToTime
    			       			    			       			     , 
    			       			   Long language_id
    			       			    			       			     , 
    			       			   Boolean sendMail
    			       			    			)
    			</i><br/>
    			<p>
    			  Create a Invitation hash and optionally send it by mail the From to Date
 is as String as some SOAP libraries do not accept Date Objects in SOAP
 Calls Date is parsed as dd.mm.yyyy, time as hh:mm (don't forget the
 leading zero's)
    			</p>
    			<p>
                  Return Type: java.lang.String
                </p>
    			<p>Params:</p>
    			    			
    				    			<table rules="all" border="1">
	    			   <thead>
	    			   <tr>
	    			     <th width="200" align="left">Type</th>
	    			     <th width="200" align="left">Fieldname</th>
	    			     <th width="400" align="left">Description</th>
	    			   </tr>
	    			   </thead>
	    			   <tbody>
	    			   	    			   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">SID</td>
	                     <td valign="top">The SID of the User. This SID must be marked as Loggedin a
            valid Session Token</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">username</td>
	                     <td valign="top">the Username of the User that he will get</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">message</td>
	                     <td valign="top">the Message in the Email Body send with the invitation if
            sendMail is true</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">baseurl</td>
	                     <td valign="top">the baseURL for the Infivations link in the Mail Body if
            sendMail is true</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">email</td>
	                     <td valign="top">the Email to send the invitation to if sendMail is true</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">subject</td>
	                     <td valign="top">the subject of the Email send with the invitation if sendMail
            is true</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Long
	                     		                     </td>
	                     <td valign="top">room_id</td>
	                     <td valign="top">the conference room id of the invitation</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">conferencedomain</td>
	                     <td valign="top">the domain of the room (keep empty)</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">isPasswordProtected</td>
	                     <td valign="top">if the invitation is password protected</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">invitationpass</td>
	                     <td valign="top">the password for accessing the conference room via the
            invitation hash</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Integer
	                     		                     </td>
	                     <td valign="top">valid</td>
	                     <td valign="top">the type of validation for the hash 1: endless, 2: from-to
            period, 3: one-time</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">validFromDate</td>
	                     <td valign="top">Date in Format of dd.mm.yyyy only of interest if valid is type
            2</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">validFromTime</td>
	                     <td valign="top">time in Format of hh:mm only of interest if valid is type 2</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">validToDate</td>
	                     <td valign="top">Date in Format of dd.mm.yyyy only of interest if valid is type
            2</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">validToTime</td>
	                     <td valign="top">time in Format of hh:mm only of interest if valid is type 2</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Long
	                     		                     </td>
	                     <td valign="top">language_id</td>
	                     <td valign="top">the language id of the EMail that is send with the invitation
            if sendMail is true</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">sendMail</td>
	                     <td valign="top">if sendMail is true then the RPC-Call will send the invitation
            to the email</td>
	                   </tr>
	                   
	                   	                   	                   </tbody>
	    			</table>
    			    			<br/>
    			REST Sample Call/URL:<br/>
    			    			    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    												<a href="http://localhost:5080/openmeetings/services/RoomService/sendInvitationHash?SID=VALUE&username=VALUE&message=VALUE&baseurl=VALUE&email=VALUE&subject=VALUE&room_id=VALUE&conferencedomain=VALUE&isPasswordProtected=VALUE&invitationpass=VALUE&valid=VALUE&validFromDate=VALUE&validFromTime=VALUE&validToDate=VALUE&validToTime=VALUE&language_id=VALUE&sendMail=VALUE">http://localhost:5080/openmeetings/services/RoomService/sendInvitationHash?SID=VALUE&amp;username=VALUE&amp;message=VALUE&amp;baseurl=VALUE&amp;email=VALUE&amp;subject=VALUE&amp;room_id=VALUE&amp;conferencedomain=VALUE&amp;isPasswordProtected=VALUE&amp;invitationpass=VALUE&amp;valid=VALUE&amp;validFromDate=VALUE&amp;validFromTime=VALUE&amp;validToDate=VALUE&amp;validToTime=VALUE&amp;language_id=VALUE&amp;sendMail=VALUE</a>
    		  </div>
    	   				    		      <div class="method">
		        <div class="method_header">
		        <div style="margin-left:10px">
    			<a name="sendInvitationHashWithDateObject" ><b>sendInvitationHashWithDateObject</b></a>
    			</div>
    			</div>
    			
    			Method: <i>sendInvitationHashWithDateObject (
    			    			    			       			   String SID
    			       			    			       			     , 
    			       			   String username
    			       			    			       			     , 
    			       			   String message
    			       			    			       			     , 
    			       			   String baseurl
    			       			    			       			     , 
    			       			   String email
    			       			    			       			     , 
    			       			   String subject
    			       			    			       			     , 
    			       			   Long room_id
    			       			    			       			     , 
    			       			   String conferencedomain
    			       			    			       			     , 
    			       			   Boolean isPasswordProtected
    			       			    			       			     , 
    			       			   String invitationpass
    			       			    			       			     , 
    			       			   Integer valid
    			       			    			       			     , 
    			       			   Date fromDate
    			       			    			       			     , 
    			       			   Date toDate
    			       			    			       			     , 
    			       			   Long language_id
    			       			    			       			     , 
    			       			   Boolean sendMail
    			       			    			)
    			</i><br/>
    			<p>
    			  Create a Invitation hash and optionally send it by mail the From to Date
 is as String as some SOAP libraries do not accept Date Objects in SOAP
 Calls Date is parsed as dd.mm.yyyy, time as hh:mm (don't forget the
 leading zero's)
    			</p>
    			<p>
                  Return Type: java.lang.String
                </p>
    			<p>Params:</p>
    			    			
    				    			<table rules="all" border="1">
	    			   <thead>
	    			   <tr>
	    			     <th width="200" align="left">Type</th>
	    			     <th width="200" align="left">Fieldname</th>
	    			     <th width="400" align="left">Description</th>
	    			   </tr>
	    			   </thead>
	    			   <tbody>
	    			   	    			   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">SID</td>
	                     <td valign="top">The SID of the User. This SID must be marked as Loggedin a
            valid Session Token</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">username</td>
	                     <td valign="top">the Username of the User that he will get</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">message</td>
	                     <td valign="top">the Message in the Email Body send with the invitation if
            sendMail is true</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">baseurl</td>
	                     <td valign="top">the baseURL for the Infivations link in the Mail Body if
            sendMail is true</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">email</td>
	                     <td valign="top">the Email to send the invitation to if sendMail is true</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">subject</td>
	                     <td valign="top">the subject of the Email send with the invitation if sendMail
            is true</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Long
	                     		                     </td>
	                     <td valign="top">room_id</td>
	                     <td valign="top">the conference room id of the invitation</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">conferencedomain</td>
	                     <td valign="top">the domain of the room (keep empty)</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">isPasswordProtected</td>
	                     <td valign="top">if the invitation is password protected</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">invitationpass</td>
	                     <td valign="top">the password for accessing the conference room via the
            invitation hash</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Integer
	                     		                     </td>
	                     <td valign="top">valid</td>
	                     <td valign="top">the type of validation for the hash 1: endless, 2: from-to
            period, 3: one-time</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Date
	                     		                     </td>
	                     <td valign="top">fromDate</td>
	                     <td valign="top">Date as Date Object only of interest if valid is type 2</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Date
	                     		                     </td>
	                     <td valign="top">toDate</td>
	                     <td valign="top">Date as Date Object only of interest if valid is type 2</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Long
	                     		                     </td>
	                     <td valign="top">language_id</td>
	                     <td valign="top">the language id of the EMail that is send with the invitation
            if sendMail is true</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">sendMail</td>
	                     <td valign="top">if sendMail is true then the RPC-Call will send the invitation
            to the email</td>
	                   </tr>
	                   
	                   	                   	                   </tbody>
	    			</table>
    			    			<br/>
    			REST Sample Call/URL:<br/>
    			    			    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    												<a href="http://localhost:5080/openmeetings/services/RoomService/sendInvitationHashWithDateObject?SID=VALUE&username=VALUE&message=VALUE&baseurl=VALUE&email=VALUE&subject=VALUE&room_id=VALUE&conferencedomain=VALUE&isPasswordProtected=VALUE&invitationpass=VALUE&valid=VALUE&fromDate=VALUE&toDate=VALUE&language_id=VALUE&sendMail=VALUE">http://localhost:5080/openmeetings/services/RoomService/sendInvitationHashWithDateObject?SID=VALUE&amp;username=VALUE&amp;message=VALUE&amp;baseurl=VALUE&amp;email=VALUE&amp;subject=VALUE&amp;room_id=VALUE&amp;conferencedomain=VALUE&amp;isPasswordProtected=VALUE&amp;invitationpass=VALUE&amp;valid=VALUE&amp;fromDate=VALUE&amp;toDate=VALUE&amp;language_id=VALUE&amp;sendMail=VALUE</a>
    		  </div>
    	   				    		      <div class="method">
		        <div class="method_header">
		        <div style="margin-left:10px">
    			<a name="getRoomsWithCurrentUsersByList" ><b>getRoomsWithCurrentUsersByList</b></a>
    			</div>
    			</div>
    			
    			Method: <i>getRoomsWithCurrentUsersByList (
    			    			    			       			   String SID
    			       			    			       			     , 
    			       			   int start
    			       			    			       			     , 
    			       			   int max
    			       			    			       			     , 
    			       			   String orderby
    			       			    			       			     , 
    			       			   boolean asc
    			       			    			)
    			</i><br/>
    			<p>
    			  Return a RoomReturn Object with information of the current users of a
 conference room
    			</p>
    			<p>
                  Return Type: java.util.List
                </p>
    			<p>Params:</p>
    			    			
    				    			<table rules="all" border="1">
	    			   <thead>
	    			   <tr>
	    			     <th width="200" align="left">Type</th>
	    			     <th width="200" align="left">Fieldname</th>
	    			     <th width="400" align="left">Description</th>
	    			   </tr>
	    			   </thead>
	    			   <tbody>
	    			   	    			   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">SID</td>
	                     <td valign="top">The SID of the User. This SID must be marked as Loggedin</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		int
	                     		                     </td>
	                     <td valign="top">start</td>
	                     <td valign="top">The id you want to start</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		int
	                     		                     </td>
	                     <td valign="top">max</td>
	                     <td valign="top">The maximum you want to get</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">orderby</td>
	                     <td valign="top">The column it will be ordered</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		boolean
	                     		                     </td>
	                     <td valign="top">asc</td>
	                     <td valign="top">Asc or Desc sort ordering</td>
	                   </tr>
	                   
	                   	                   	                   </tbody>
	    			</table>
    			    			<br/>
    			REST Sample Call/URL:<br/>
    			    			    				    								    				    								    				    								    				    								    				    												<a href="http://localhost:5080/openmeetings/services/RoomService/getRoomsWithCurrentUsersByList?SID=VALUE&start=VALUE&max=VALUE&orderby=VALUE&asc=VALUE">http://localhost:5080/openmeetings/services/RoomService/getRoomsWithCurrentUsersByList?SID=VALUE&amp;start=VALUE&amp;max=VALUE&amp;orderby=VALUE&amp;asc=VALUE</a>
    		  </div>
    	   				    		      <div class="method">
		        <div class="method_header">
		        <div style="margin-left:10px">
    			<a name="getRoomsWithCurrentUsersByListAndType" ><b>getRoomsWithCurrentUsersByListAndType</b></a>
    			</div>
    			</div>
    			
    			Method: <i>getRoomsWithCurrentUsersByListAndType (
    			    			    			       			   String SID
    			       			    			       			     , 
    			       			   int start
    			       			    			       			     , 
    			       			   int max
    			       			    			       			     , 
    			       			   String orderby
    			       			    			       			     , 
    			       			   boolean asc
    			       			    			       			     , 
    			       			   String externalRoomType
    			       			    			)
    			</i><br/>
    			<p>
    			  Return a RoomReturn Object with information of the current users of a
 conference room with option to search for special external room types
    			</p>
    			<p>
                  Return Type: java.util.List
                </p>
    			<p>Params:</p>
    			    			
    				    			<table rules="all" border="1">
	    			   <thead>
	    			   <tr>
	    			     <th width="200" align="left">Type</th>
	    			     <th width="200" align="left">Fieldname</th>
	    			     <th width="400" align="left">Description</th>
	    			   </tr>
	    			   </thead>
	    			   <tbody>
	    			   	    			   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">SID</td>
	                     <td valign="top">The SID of the User. This SID must be marked as Loggedin</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		int
	                     		                     </td>
	                     <td valign="top">start</td>
	                     <td valign="top">The id you want to start</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		int
	                     		                     </td>
	                     <td valign="top">max</td>
	                     <td valign="top">The maximum you want to get</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">orderby</td>
	                     <td valign="top">The column it will be ordered</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		boolean
	                     		                     </td>
	                     <td valign="top">asc</td>
	                     <td valign="top">Asc or Desc sort ordering</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">externalRoomType</td>
	                     <td valign="top">the external room type</td>
	                   </tr>
	                   
	                   	                   	                   </tbody>
	    			</table>
    			    			<br/>
    			REST Sample Call/URL:<br/>
    			    			    				    								    				    								    				    								    				    								    				    								    				    												<a href="http://localhost:5080/openmeetings/services/RoomService/getRoomsWithCurrentUsersByListAndType?SID=VALUE&start=VALUE&max=VALUE&orderby=VALUE&asc=VALUE&externalRoomType=VALUE">http://localhost:5080/openmeetings/services/RoomService/getRoomsWithCurrentUsersByListAndType?SID=VALUE&amp;start=VALUE&amp;max=VALUE&amp;orderby=VALUE&amp;asc=VALUE&amp;externalRoomType=VALUE</a>
    		  </div>
    	   				    		      <div class="method">
		        <div class="method_header">
		        <div style="margin-left:10px">
    			<a name="addRoomWithModerationAndExternalTypeAndStartEnd" ><b>addRoomWithModerationAndExternalTypeAndStartEnd</b></a>
    			</div>
    			</div>
    			
    			Method: <i>addRoomWithModerationAndExternalTypeAndStartEnd (
    			    			    			       			   String SID
    			       			    			       			     , 
    			       			   String name
    			       			    			       			     , 
    			       			   Long roomtypes_id
    			       			    			       			     , 
    			       			   String comment
    			       			    			       			     , 
    			       			   Long numberOfPartizipants
    			       			    			       			     , 
    			       			   Boolean ispublic
    			       			    			       			     , 
    			       			   Boolean appointment
    			       			    			       			     , 
    			       			   Boolean isDemoRoom
    			       			    			       			     , 
    			       			   Integer demoTime
    			       			    			       			     , 
    			       			   Boolean isModeratedRoom
    			       			    			       			     , 
    			       			   String externalRoomType
    			       			    			       			     , 
    			       			   String validFromDate
    			       			    			       			     , 
    			       			   String validFromTime
    			       			    			       			     , 
    			       			   String validToDate
    			       			    			       			     , 
    			       			   String validToTime
    			       			    			       			     , 
    			       			   Boolean isPasswordProtected
    			       			    			       			     , 
    			       			   String password
    			       			    			       			     , 
    			       			   Long reminderTypeId
    			       			    			       			     , 
    			       			   String redirectURL
    			       			    			)
    			</i><br/>
    			<p>
    			  Adds a conference room that is only available for a period of time
    			</p>
    			<p>
                  Return Type: java.lang.Long
                </p>
    			<p>Params:</p>
    			    			
    				    			<table rules="all" border="1">
	    			   <thead>
	    			   <tr>
	    			     <th width="200" align="left">Type</th>
	    			     <th width="200" align="left">Fieldname</th>
	    			     <th width="400" align="left">Description</th>
	    			   </tr>
	    			   </thead>
	    			   <tbody>
	    			   	    			   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">SID</td>
	                     <td valign="top">The SID of the User. This SID must be marked as Loggedin</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">name</td>
	                     <td valign="top">new name of the room</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Long
	                     		                     </td>
	                     <td valign="top">roomtypes_id</td>
	                     <td valign="top">new type of room (1 = Conference, 2 = Audience, 3 =
            Restricted, 4 = Interview)</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">comment</td>
	                     <td valign="top">new comment</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Long
	                     		                     </td>
	                     <td valign="top">numberOfPartizipants</td>
	                     <td valign="top">new numberOfParticipants</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">ispublic</td>
	                     <td valign="top">is public</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">appointment</td>
	                     <td valign="top">if the room is an appointment</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">isDemoRoom</td>
	                     <td valign="top">is it a Demo Room with limited time? (use false if not sure
            what that means)</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Integer
	                     		                     </td>
	                     <td valign="top">demoTime</td>
	                     <td valign="top">time in seconds after the user will be logged out (only
            enabled if isDemoRoom is true)</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">isModeratedRoom</td>
	                     <td valign="top">Users have to wait until a Moderator arrives. Use the
            becomeModerator parameter in setUserObjectAndGenerateRoomHash
            to set a user as default Moderator</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">externalRoomType</td>
	                     <td valign="top">the external room type (can be used to identify different
            external systems using same OpenMeetings instance)</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">validFromDate</td>
	                     <td valign="top">valid from as Date format: dd.MM.yyyy</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">validFromTime</td>
	                     <td valign="top">valid to as time format: mm:hh</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">validToDate</td>
	                     <td valign="top">valid to Date format: dd.MM.yyyy</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">validToTime</td>
	                     <td valign="top">valid to time format: mm:hh</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">isPasswordProtected</td>
	                     <td valign="top">If the links send via EMail to invited people is password
            protected</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">password</td>
	                     <td valign="top">Password for Invitations send via Mail</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Long
	                     		                     </td>
	                     <td valign="top">reminderTypeId</td>
	                     <td valign="top">1=none, 2=simple mail, 3=ICAL</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">redirectURL</td>
	                     <td valign="top">URL Users will be lead to if the Conference Time is elapsed</td>
	                   </tr>
	                   
	                   	                   	                   </tbody>
	    			</table>
    			    			<br/>
    			REST Sample Call/URL:<br/>
    			    			    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    												<a href="http://localhost:5080/openmeetings/services/RoomService/addRoomWithModerationAndExternalTypeAndStartEnd?SID=VALUE&name=VALUE&roomtypes_id=VALUE&comment=VALUE&numberOfPartizipants=VALUE&ispublic=VALUE&appointment=VALUE&isDemoRoom=VALUE&demoTime=VALUE&isModeratedRoom=VALUE&externalRoomType=VALUE&validFromDate=VALUE&validFromTime=VALUE&validToDate=VALUE&validToTime=VALUE&isPasswordProtected=VALUE&password=VALUE&reminderTypeId=VALUE&redirectURL=VALUE">http://localhost:5080/openmeetings/services/RoomService/addRoomWithModerationAndExternalTypeAndStartEnd?SID=VALUE&amp;name=VALUE&amp;roomtypes_id=VALUE&amp;comment=VALUE&amp;numberOfPartizipants=VALUE&amp;ispublic=VALUE&amp;appointment=VALUE&amp;isDemoRoom=VALUE&amp;demoTime=VALUE&amp;isModeratedRoom=VALUE&amp;externalRoomType=VALUE&amp;validFromDate=VALUE&amp;validFromTime=VALUE&amp;validToDate=VALUE&amp;validToTime=VALUE&amp;isPasswordProtected=VALUE&amp;password=VALUE&amp;reminderTypeId=VALUE&amp;redirectURL=VALUE</a>
    		  </div>
    	   				    		      <div class="method">
		        <div class="method_header">
		        <div style="margin-left:10px">
    			<a name="addMeetingMemberRemindToRoom" ><b>addMeetingMemberRemindToRoom</b></a>
    			</div>
    			</div>
    			
    			Method: <i>addMeetingMemberRemindToRoom (
    			    			    			       			   String SID
    			       			    			       			     , 
    			       			   Long room_id
    			       			    			       			     , 
    			       			   String firstname
    			       			    			       			     , 
    			       			   String lastname
    			       			    			       			     , 
    			       			   String email
    			       			    			       			     , 
    			       			   String baseUrl
    			       			    			       			     , 
    			       			   Long language_id
    			       			    			)
    			</i><br/>
    			<p>
    			  Add a meeting member to a certain room. This is the same as adding an
 external user to a event in the calendar.
    			</p>
    			<p>
                  Return Type: java.lang.Long
                </p>
    			<p>Params:</p>
    			    			
    				    			<table rules="all" border="1">
	    			   <thead>
	    			   <tr>
	    			     <th width="200" align="left">Type</th>
	    			     <th width="200" align="left">Fieldname</th>
	    			     <th width="400" align="left">Description</th>
	    			   </tr>
	    			   </thead>
	    			   <tbody>
	    			   	    			   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">SID</td>
	                     <td valign="top">The SID of the User. This SID must be marked as Loggedin</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Long
	                     		                     </td>
	                     <td valign="top">room_id</td>
	                     <td valign="top">The Room Id the meeting member is going to be added</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">firstname</td>
	                     <td valign="top">The first name of the meeting member</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">lastname</td>
	                     <td valign="top">The last name of the meeting member</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">email</td>
	                     <td valign="top">The email of the Meeting member</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">baseUrl</td>
	                     <td valign="top">The baseUrl, this is important to send the correct link in the
            invitation to the meeting member</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Long
	                     		                     </td>
	                     <td valign="top">language_id</td>
	                     <td valign="top">The ID of the language, for the email that is send to the
            meeting member</td>
	                   </tr>
	                   
	                   	                   	                   </tbody>
	    			</table>
    			    			<br/>
    			REST Sample Call/URL:<br/>
    			    			    				    								    				    								    				    								    				    								    				    								    				    								    				    												<a href="http://localhost:5080/openmeetings/services/RoomService/addMeetingMemberRemindToRoom?SID=VALUE&room_id=VALUE&firstname=VALUE&lastname=VALUE&email=VALUE&baseUrl=VALUE&language_id=VALUE">http://localhost:5080/openmeetings/services/RoomService/addMeetingMemberRemindToRoom?SID=VALUE&amp;room_id=VALUE&amp;firstname=VALUE&amp;lastname=VALUE&amp;email=VALUE&amp;baseUrl=VALUE&amp;language_id=VALUE</a>
    		  </div>
    	   				    		      <div class="method">
		        <div class="method_header">
		        <div style="margin-left:10px">
    			<a name="addExternalMeetingMemberRemindToRoom" ><b>addExternalMeetingMemberRemindToRoom</b></a>
    			</div>
    			</div>
    			
    			Method: <i>addExternalMeetingMemberRemindToRoom (
    			    			    			       			   String SID
    			       			    			       			     , 
    			       			   Long room_id
    			       			    			       			     , 
    			       			   String firstname
    			       			    			       			     , 
    			       			   String lastname
    			       			    			       			     , 
    			       			   String email
    			       			    			       			     , 
    			       			   String baseUrl
    			       			    			       			     , 
    			       			   Long language_id
    			       			    			       			     , 
    			       			   String jNameTimeZone
    			       			    			       			     , 
    			       			   String invitorName
    			       			    			)
    			</i><br/>
    			<p>
    			  Add a meeting member to a certain room. This is the same as adding an
 external user to a event in the calendar. with a certain time zone
    			</p>
    			<p>
                  Return Type: java.lang.Long
                </p>
    			<p>Params:</p>
    			    			
    				    			<table rules="all" border="1">
	    			   <thead>
	    			   <tr>
	    			     <th width="200" align="left">Type</th>
	    			     <th width="200" align="left">Fieldname</th>
	    			     <th width="400" align="left">Description</th>
	    			   </tr>
	    			   </thead>
	    			   <tbody>
	    			   	    			   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">SID</td>
	                     <td valign="top">The SID of the User. This SID must be marked as Loggedin</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Long
	                     		                     </td>
	                     <td valign="top">room_id</td>
	                     <td valign="top">The Room Id the meeting member is going to be added</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">firstname</td>
	                     <td valign="top">The first name of the meeting member</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">lastname</td>
	                     <td valign="top">The last name of the meeting member</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">email</td>
	                     <td valign="top">The email of the Meeting member</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">baseUrl</td>
	                     <td valign="top">The baseUrl, this is important to send the correct link in the
            invitation to the meeting member</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Long
	                     		                     </td>
	                     <td valign="top">language_id</td>
	                     <td valign="top">The ID of the language, for the email that is send to the
            meeting member</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">jNameTimeZone</td>
	                     <td valign="top">name of the timezone</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">invitorName</td>
	                     <td valign="top">name of invitation creators</td>
	                   </tr>
	                   
	                   	                   	                   </tbody>
	    			</table>
    			    			<br/>
    			REST Sample Call/URL:<br/>
    			    			    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    								    				    												<a href="http://localhost:5080/openmeetings/services/RoomService/addExternalMeetingMemberRemindToRoom?SID=VALUE&room_id=VALUE&firstname=VALUE&lastname=VALUE&email=VALUE&baseUrl=VALUE&language_id=VALUE&jNameTimeZone=VALUE&invitorName=VALUE">http://localhost:5080/openmeetings/services/RoomService/addExternalMeetingMemberRemindToRoom?SID=VALUE&amp;room_id=VALUE&amp;firstname=VALUE&amp;lastname=VALUE&amp;email=VALUE&amp;baseUrl=VALUE&amp;language_id=VALUE&amp;jNameTimeZone=VALUE&amp;invitorName=VALUE</a>
    		  </div>
    	   				    		      <div class="method">
		        <div class="method_header">
		        <div style="margin-left:10px">
    			<a name="closeRoom" ><b>closeRoom</b></a>
    			</div>
    			</div>
    			
    			Method: <i>closeRoom (
    			    			    			       			   String SID
    			       			    			       			     , 
    			       			   Long room_id
    			       			    			       			     , 
    			       			   Boolean status
    			       			    			)
    			</i><br/>
    			<p>
    			  Method to remotely close or open rooms. If a room is closed all users
 inside the room and all users that try to enter it will be redirected to
 the redirectURL that is defined in the Room-Object.
 
 Returns positive value if authentication was successful.
    			</p>
    			<p>
                  Return Type: int
                </p>
    			<p>Params:</p>
    			    			
    				    			<table rules="all" border="1">
	    			   <thead>
	    			   <tr>
	    			     <th width="200" align="left">Type</th>
	    			     <th width="200" align="left">Fieldname</th>
	    			     <th width="400" align="left">Description</th>
	    			   </tr>
	    			   </thead>
	    			   <tbody>
	    			   	    			   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">SID</td>
	                     <td valign="top">The SID of the User. This SID must be marked as Loggedin</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Long
	                     		                     </td>
	                     <td valign="top">room_id</td>
	                     <td valign="top">the room id</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Boolean
	                     		                     </td>
	                     <td valign="top">status</td>
	                     <td valign="top">false = close, true = open</td>
	                   </tr>
	                   
	                   	                   	                   </tbody>
	    			</table>
    			    			<br/>
    			REST Sample Call/URL:<br/>
    			    			    				    								    				    								    				    												<a href="http://localhost:5080/openmeetings/services/RoomService/closeRoom?SID=VALUE&room_id=VALUE&status=VALUE">http://localhost:5080/openmeetings/services/RoomService/closeRoom?SID=VALUE&amp;room_id=VALUE&amp;status=VALUE</a>
    		  </div>
    	   				    		      <div class="method">
		        <div class="method_header">
		        <div style="margin-left:10px">
    			<a name="modifyRoomParameter" ><b>modifyRoomParameter</b></a>
    			</div>
    			</div>
    			
    			Method: <i>modifyRoomParameter (
    			    			    			       			   String SID
    			       			    			       			     , 
    			       			   Long room_id
    			       			    			       			     , 
    			       			   String paramName
    			       			    			       			     , 
    			       			   String paramValue
    			       			    			)
    			</i><br/>
    			<p>
    			  Method to update arbitrary room parameter.
    			</p>
    			<p>
                  Return Type: int
                </p>
    			<p>Params:</p>
    			    			
    				    			<table rules="all" border="1">
	    			   <thead>
	    			   <tr>
	    			     <th width="200" align="left">Type</th>
	    			     <th width="200" align="left">Fieldname</th>
	    			     <th width="400" align="left">Description</th>
	    			   </tr>
	    			   </thead>
	    			   <tbody>
	    			   	    			   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">SID</td>
	                     <td valign="top">The SID of the User. This SID must be marked as Loggedin</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		Long
	                     		                     </td>
	                     <td valign="top">room_id</td>
	                     <td valign="top">the room id</td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">paramName</td>
	                     <td valign="top"></td>
	                   </tr>
	                   
	                   	                   	    			   <tr>
	                     <td valign="top">
	                     		                     		String
	                     		                     </td>
	                     <td valign="top">paramValue</td>
	                     <td valign="top"></td>
	                   </tr>
	                   
	                   	                   	                   </tbody>
	    			</table>
    			    			<br/>
    			REST Sample Call/URL:<br/>
    			    			    				    								    				    								    				    								    				    												<a href="http://localhost:5080/openmeetings/services/RoomService/modifyRoomParameter?SID=VALUE&room_id=VALUE&paramName=VALUE&paramValue=VALUE">http://localhost:5080/openmeetings/services/RoomService/modifyRoomParameter?SID=VALUE&amp;room_id=VALUE&amp;paramName=VALUE&amp;paramValue=VALUE</a>
    		  </div>
    	   			
	
	</body>
</html>

