{docbook}
<abstract>
<para>This chapter presents the information about APIs that help you build your own applications from eXo services via the following topics:</para>
<itemizedlist>
  <listitem>
	<para>
	  <link linkend="DEV.eXoPlatformSupportedAPIs.DefinitionsOfAPILevels">Definitions of API Levels</link>
	</para>
	<itemizedlist>
	  <listitem>
		<para>
		  <link linkend="DEV.eXoPlatformSupportedAPIs.UseProvisionalOrExperimentalAPIs">Use Provisional or Experimental APIs</link>
		</para>
	  </listitem>
	</itemizedlist>
  </listitem>
  <listitem>
	<para>
	  <link linkend="DEV.eXoPlatformSupportedAPIs.PlatformAPIs">Platform APIs</link>
	</para>
	<itemizedlist>
	  <listitem>
		<para>
		  <link linkend="DEV.eXoPlatformSupportedAPIs.JavaAPIs">Java APIs</link>
		</para>
	  </listitem>
	  <listitem>
		<para>
		  <link linkend="DEV.eXoPlatformSupportedAPIs.JavaScriptAPIs">JavaScript APIs</link>
		</para>
	  </listitem>
	  <listitem>
		<para>
		  <link linkend="DEV.eXoPlatformSupportedAPIs.WebServices">Web Services</link>
		</para>
	  </listitem>
	</itemizedlist>
  </listitem>
  <listitem>
	<para>
	  <link linkend="DEV.eXoPlatformSupportedAPIs.ProvisionalAPIs">Provisional APIs</link>
	</para>
	<itemizedlist>
	  <listitem>
		<para>
		  <link linkend="DEV.eXoPlatformSupportedAPIs.ProvisionalAPIs.JavaAPIs">Java APIs</link>
		</para>
	  </listitem>
	</itemizedlist>
  </listitem>
</itemizedlist>
</abstract>
{docbook}

h1. Definitions of API Levels {anchor:id=DEV.eXoPlatformSupportedAPIs.DefinitionsOfAPILevels}

APIs vary according to the maturity level. It is important to understand the eXo Platform's general approach to the API change management.
The different levels of APIs are described in the following table:

|| API Level || Test Suite || Clients || Documentation || Support || Compatibility X.Y.Z(+1) || Compatibility X.Y(+1) ||
|*Platform API*| !images/yes.gif! | !images/yes.gif! | !images/yes.gif! | !images/yes.gif! | !images/yes.gif! | !images/yes.gif! |
|*Provisional API*| !images/yes.gif! | !images/yes.gif! | !images/yes.gif! | !images/yes.gif! | !images/yes.gif! | !images/no.gif! |
|*Experimental API*| !images/yes.gif! | !images/no.gif! | !images/yes.gif! | Best effort | Best effort | !images/no.gif! |
|*Unsupported API*| !images/no.gif! | !images/no.gif! | !images/no.gif! | !images/no.gif! | !images/no.gif! | !images/no.gif! |

*Test Suite*: A suite of tests that can be run against the API to detect changes.

*Clients*: The API has been used successfully by at least 2 different teams, using the API Documentation only.

*Documentation*: The API has a clean JavaDoc and reference documentation.

*Support*: The eXo Support team provides help on the code that uses this API, and fixes any reported bugs.

*Compatibility X.Y.Z(+1)*: The compatibility between maintenance versions (X.Y.Z and X.Y.Z+1) is guaranteed. If there is any change between X.Y and X.Y+1, the eXo Support team will help by upgrading the code.

*Compatibility X.Y(+1)*: The compatibility between minor versions (X.Y and X.Y+1) is guaranteed. If there is any change between X and X+1, the eXo Support team will help by upgrading the code.

*Best Effort*: You will receive assistance, but eXo Platform cannot guarantee any specific result.

{docbook}
<para xml:id="DEV.eXoPlatformSupportedAPIs.UseProvisionalOrExperimentalAPIs">
<citetitle>
<emphasis role="bold">
Use Provisional or Experimental APIs
</emphasis>
</citetitle>
</para>
{docbook}

These APIs are provided to give an "early look" at which will be available in upcoming versions of eXo Platform. These APIs are not final, but they can be used to start developing your application.

*Provisional APIs* are APIs close to being frozen, but that need a last look from users. They can be used by third-party developers for their own apps, with the knowledge that only a limited compatibility guarantee is offered.

*Experimental APIs* are APIs that are likely to change. They are published to get feedback from the community. These APIs have been tested successfully, but have not yet had enough feedback from developers.

h1. Platform APIs {anchor:id=DEV.eXoPlatformSupportedAPIs.PlatformAPIs}

h2. Java APIs {anchor:id=DEV.eXoPlatformSupportedAPIs.JavaAPIs}

*[Portlet API:|../../../reference/html/sect-Reference_Guide-Portlet_Primer.html] (JSR 168 and JSR 286)* A Java standard that defines how to write portlets. This is the way to develop Java applications that are integrated into eXo Platform.

*[WSRP 1.0 on JBoss:|../../../reference/html/wsrp.html]* A network protocol for integrating remote portlets into eXo Platform.

*[JAX-RS:|../../../reference/html/WS.RestServicesList.html] (JSR 311)* A standard API that provides support for creating REST-like services.

*[JCR (JSR 170):|../../../reference/html/JCR.WhyuseJCR.WhatJCR.html]* A standard API that provides access to a content repository.

*[JCR Service Extensions:|../../../reference/html/JCR.Extensions.html]* A set of APIs that provide extended functionalities for the JCR, such as observation, permissions, and access to a repository.

*[Java EE 6:|http://www.oracle.com/technetwork/java/javaee/overview/index.html]* eXo Platform supports the Java EE 5 APIs, so you can develop applications using this standard.

*[Cache:|http://docs.jboss.org/exojcr/1.14.7-GA/developer/en-US/html/ch-cache.html]* An API used for data caching.

*[Event and Listener:|../../../reference/html/Kernel.UnderstandingtheListenerService.html]* An API for listening and sending events within eXo Platform.

*[Organization:|../../../reference/html/Core.OrganizationService.html]* An API and SPI for accessing user, group and membership information.

*[Portal Container Definition:|../../../reference/html/PortalContainer.html]* This API is used to configure your portal.

*[Taxonomy:|../../../reference/html/CONTref.JavaServices.TaxonomyService.html]* An API that allows you to organize your content.

*[LinkManager:|../../../reference/html/CONTref.JavaServices.LinkManager.html]* An API that provides a way to manage links when developing WCM features.

*[PublicationManager:|../../../reference/html/CONTref.JavaServices.PublicationManager.html]* An API that provides different ways to manage the publication of content when developing WCM features.

*[WCMComposer:|../../../reference/html/CONTref.JavaServices.WCMComposer.html]* An API to get content shown in the website. The cache management is used in this service, and methods to update the content cache.

*[NewFolksonomy:|../../../reference/html/CONTref.JavaServices.NewFolksonomy.html]*

*[ApplicationTemplateManager:|../../../reference/html/CONTref.JavaServices.ApplicationTemplateManager.html]*   An API to manage dynamic groovy templates for WCM-based products.

*[NodeFinder:|../../../reference/html/CONTref.JavaServices.NodeFinder.html]* An API to find a node with a given path.

*[JodConverter:|../../../reference/html/CONTref.JavaServices.JodConverter.html]* An API to convert documents into different office formats.

*[SiteSearchService:|../../../reference/html/CONTref.Configuration.Components.SiteSearchService.html]* An API that allows users to find all information matching with their given keyword.

*[SEOService:|../../../reference/html/CONTref.JavaServices.SEOService.html]* An API that manages SEO data of a page or a content.

*[TimelineService:|../../../reference/html/CONTref.Configuration.Components.TimelineService.html]* An API that allows documents to be displayed by days, months and years.

*[XML Configuration:|../../../reference/html/Kernel.ServicesWiring.IntroductionXMLSchemaOfConfigurationXML.html]* A set of DTD for configuring eXo Platform.

*[ActivityManager:|../../../reference/html/Developer_document.Java_APIs.Activity_Manager.html]* An API to manage activities (create/delete/like activity; delete/like/create comment; get activities of space/user/connection).

*[IdentityManager:|../../../reference/html/SOCref.Configuration.Component.IdentityManager.html]* An API to manage identities (create identity, save profile, get connection of an identity).

*[RelationshipManager:|../../../reference/html/SOCref.Configuration.RelationshipManager.html]* An API which is used to work with connections between 2 identities, interact between identities, get list access to get list of connections, incomings, outgoings.

*[SpaceService:|../../../reference/html/SOCref.Configuration.Component.SpaceService.html]*  An API that provides methods for working with space (create new space, delete, get space by url, groupid, display name, pretty name).

h2. JavaScript APIs {anchor:id=DEV.eXoPlatformSupportedAPIs.JavaScriptAPIs}

*[OpenSocial 1.1 Gadget Specification:|http://opensocial-resources.googlecode.com/svn/spec/1.1/Social-Gadget.xml]* A standard that defines how to write gadgets and provide APIs. Gadgets are particularly useful for integrating external applications into eXo Platform.

h2. Web Services {anchor:id=DEV.eXoPlatformSupportedAPIs.WebServices}

*[CMIS:|../../../reference/html/CONTref.CMIS.html]* A standard API that gives access to the content repository via REST and SOAP Web services.

*[FTP:|../../../reference/html/JCR.FTP.html]* A standard protocol for exchanging documents.

*[OpenSocial 1.1 REST Protocol:|http://opensocial-resources.googlecode.com/svn/spec/1.1/Social-API-Server.xml]* A standard API for accessing the social graph and activity streams.

*[WebDAV:|../../../reference/html/JCR.WebDAV.html]* A standard protocol for exchanging document over HTTP.

h1. Provisional APIs {anchor:id=DEV.eXoPlatformSupportedAPIs.ProvisionalAPIs}
{docbook}
<para xml:id="DEV.eXoPlatformSupportedAPIs.ProvisionalAPIs.JavaAPIs">
<citetitle>
<emphasis role="bold">
Java APIs
</emphasis>
</citetitle>
</para>
{docbook}

*[UI Extensions:|../../../reference/html/CONTref.Extensions.UIExtensions.html]* An API to plug new actions into the eXo Platform UI.

*[DocumentExplorer Toolbar|../../../reference/html/CONTref.Extensions.UIExtensions.AddOwnTabInECMAdministration.AddOwnUIAction.html]*

*[ECM Admin|../../../reference/html/CONTref.Extensions.UIExtensions.AddOwnTabInECMAdministration.html]*

*[Activity Sharing|../../../reference/html/Developer_document.Create the activity plug-in.html]*