<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--
  Licensed to the Apache Software Foundation (ASF) under one
  or more contributor license agreements.  See the NOTICE file
  distributed with this work for additional information
  regarding copyright ownership.  The ASF licenses this file
  to you 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 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="ServerService.html" target="_PARENT"><b>ServerService</b></a><br/>
            <div class="navigation_comment"><i >This class provides method implementations necessary for OM to manage servers
 participating in cluster.</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>
