<!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" value="OpenMeetings Team">
		<meta name="email" value="sebawagner@apache.org">
		<title>OpenMeetings API Classes</title>
		<link rel="stylesheet" type="text/css" href="openmeetings_docs.css">
        </head>
	<body>
			
       <div class="navigation">
	               <div>
            <a href="CalendarService.html" target="_PARENT"><b>CalendarService</b></a><br/>
            <div class="navigation_comment"><i >CalendarService contains methods to create, edit delete calendar meetings</i></div>
            </div>
                    <div>
            <a href="FileService.html" target="_PARENT"><b>FileService</b></a><br/>
            <div class="navigation_comment"><i >Contains methods to import and upload files into the Files section of the
 conference room and the personal drive of any user</i></div>
            </div>
                    <div>
            <a href="JabberService.html" target="_PARENT"><b>JabberService</b></a><br/>
            <div class="navigation_comment"><i >This class provides method implementations necessary for OM to Jabber integration.</i></div>
            </div>
                    <div>
            <a href="RoomService.html" target="_PARENT"><b>RoomService</b></a><br/>
            <div class="navigation_comment"><i >RoomService contains methods to manipulate rooms and create invitation hash</i></div>
            </div>
                    <div>
            <a href="UserService.html" target="_PARENT"><b>UserService</b></a><br/>
            <div class="navigation_comment"><i >The Service contains methods to login and create hash to directly enter
 conference rooms, recordings or the application in general</i></div>
            </div>
                </div>
	
	
	</body>
	</html>