{docbook}
<highlights>
        <itemizedlist>
          <listitem>
            <para>
              <link linkend="Developer_document.Java_APIs.Activity_Manager">ActivityManager</link>
            </para>
            <para>Details of methods which manage activities (for example, saveActivity, getActivity, deleteActivity, and more).</para>
          </listitem>
          <listitem>
            <para>
              <link linkend="Developer_document.Java_APIs.Identity_Manager">IdentityManager</link>
            </para>
            <para>Details of methods which manage identities (for example, registerIdentityProviders, getIdentity, getOrCreateIdentity, and more).</para>
          </listitem>
		    <listitem>
            <para>
              <link linkend="Developer_document.Java_APIs.Relationship_manager">RelationshipManager</link>
            </para>
            <para>Details of methods which manage relationships in Social (for example, getRelationshipById, saveRelationship, getRequireValidationRelationships, and more).</para>
          </listitem>
          <listitem>
            <para>
              <link linkend="Developer_document.JavaAPIs.Java_APIs.SpaceService">SpaceService</link>
            </para>
            <para>Details of methods which work with spaces in Social (for example, getSpaceByDisplayName, getSpaceByPrettyName, getSpaceByGroupId, and more).</para>
          </listitem>
          <listitem>
            <para>
              <link linkend="Developer_document.JavaAPIs.Java_APIs.I18NActivityProcessor">I18NActivityProcessor</link>
            </para>
            <para>Details of methods which process any internationalized activities to new dynamic ones with the internationalized title (including: addActivityResourceBundlePlugin, removeActivityResourceBundlePlugin, process and setResourceBundleService.</para>
          </listitem>
          <listitem>
            <para>
              <link linkend="Developer_document.JavaAPIs.Java_APIs.LinkProvider">LinkProvider</link>
            </para>
            <para>Details of methods which get the URLs of the activities, profiles, spaces, avatars (for example, getSpaceUri, getProfileUri, getUserActivityUri, and more).</para>
          </listitem>
        </itemizedlist>
</highlights>
{docbook}

{docbook}
<para>
<prompt>
   <emphasis role="bold">See also</emphasis>
</prompt>
</para>
{docbook}

* [UI Extensions|#SOCref.DevelopersReferences.UIExtensions]
* [Overridable Components|#SOCref.DevelopersReferences.OverridableComponents]
* [Java APIs sample code/ tutorial|#SOCref.DevelopersReferences.SampleCode_Tutorial]
* [Public REST APIs|#SOCref.DevelopersReferences.PublicREST_APIs]
* [Rest Service APIs|#SOCref.DevelopersReferences.RestService_APIs]
* [Public Javascript APIs|#SOCref.DevelopersReferences.PublicJavascriptAPIs]
* [Social JCR Structure|#SOCref.Social_JCR_Structure]
* [Spaces Template configuration|#SOCref.Space_Template_Configuration]
* [Configure the oauth 2 legged scenario|#SOCref.ConfigureOauth2_Legend_Scenario]

h1. ActivityManager {anchor:id=Developer_document.Java_APIs.Activity_ManagerRoleNotInToc}

|| Method|| Param || Return || Description ||
|*saveActivity*(Identity owner, ExoSocialActivity activity) throws ActivityStorageException |{{owner }} - the owner of activity stream, {{activity}} -  the activity which needs to be saved |ExoSocialActivity  | Save an activity to the stream of an owner. Note that the Activity.userId will be set to the owner's identity if it has not been already set.|
|*getActivity*(String activityId) throws ActivityStorageException |{{activityId}} - the id of activity| ExoSocialActivity| Get an activity by its id.|
|*deleteActivity*(String activityId) throws ActivityStorageException |{{activityId}} - the id of activity |void |Delete an activity by its id. |
|*deleteActivity*(ExoSocialActivity activity) throws ActivityStorageException |{{activity}} | void |Delete a stored activity ({{{id !}}}= null). (Since 1.1.1).|
|*deleteComment*(String activityId, String commentId) throws ActivityStorageException |{{activityId}} - the id of activity, {{commentId}} - the id of comment| void | Delete a comment by its id.|
|*getActivities*(Identity identity) throws ActivityStorageException|{{identity}} |List<ExoSocialActivity>  |Get the latest activities by an identity with the default limit of 20 latest activities.|
|*getActivities*(Identity identity, long start, long limit) throws ActivityStorageException |{{identity}}, {{start }}, {{limit}}  | List<ExoSocialActivity> |Get the latest activities by an identity, specifying *start* that is an offset index and *limit*. |
|*getActivitiesOfConnections*(Identity ownerIdentity) throws ActivityStorageException | {{ownerIdentity}} |List<ExoSocialActivity> |Get activities of connections from an identity. The activities are returned as a list that is sorted descending by activity posted time. (Since 1.1.1).|
|*getActivitiesOfConnections*(Identity ownerIdentity, int offset, int limit) throws ActivityStorageException;| {{ownerIdentity, offset, limit}} |List<ExoSocialActivity>|Get the activities of connections from an identity by specifying offset and limit. The activities are returned as a list that is sorted starting from the most recent activity.(Since 1.2.0-GA).|
|*getActivitiesOfUserSpaces*(Identity ownerIdentity)| {{ownerIdentity}} |List<ExoSocialActivity> |Get the activities from all spaces of a user. By default, the activity list is composed of all spaces' activities. Each activity list of the space contains maximum 20 activities and are sorted by time. (Since 1.1.1).|
|*getActivityFeed*(Identity identity) throws ActivityStorageException | {{identity}} |List<ExoSocialActivity> |Get the activity feed of an identity. This feed is the combination of all the activities of his own activities, his connections' activities and spaces' activities which are returned as a list that is sorted starting from the most recent activity.(Since  1.1.2).|
|*saveActivity*(ExoSocialActivity activity) throws ActivityStorageException | {{ activity}} - the activity to save|ExoSocialActivity |Save an activity into the stream for the activity's userId. The userId must be set and this field is used to indicate the owner stream.|
|*saveComment*(ExoSocialActivity activity, ExoSocialActivity comment) throws ActivityStorageException | {{activity, comment}} |void |Save a new comment or updates an existing comment that is an instance of activity with mandatory fields: userId, title.|
|*saveLike*(ExoSocialActivity activity, Identity identity) throws ActivityStorageException | {{activity, identity }} |void|Save an identity who likes an activity.|
|*removeLike*(ExoSocialActivity activity, Identity identity) throws ActivityStorageException | {{ activity}}, {{identity}} - a user who dislikes an activity |void|Remove an identity who likes an activity, if this activity is liked, it will be removed.|
|*getComments*(ExoSocialActivity activity) throws ActivityStorageException | {{activity}} |List<ExoSocialActivity>| Get the comment list of an activity.|
|*recordActivity*(Identity owner, String type, String title) throws ActivityStorageException | {{owner, type, title }} |ExoSocialActivity |Record an activity. (Since 1.2.0-GA).|
|*recordActivity*(Identity owner, ExoSocialActivity activity) throws Exception | {{owner, activity }} |ExoSocialActivity |Save an activity. You should use ActivityManager#saveActivity(org.exoplatform.social.core.identity.model.Identity, org.exoplatform.social.core.activity.model.ExoSocialActivity) instead. It will be removed in Social 1.3.x.|
|*recordActivity*(Identity owner, String type, String title, String body) throws ActivityStorageException | {{ owner}} - the owner of the target stream for this activity, {{type}} - the type of an activity which will be used to render a custom UI, {{title}} - the title, {{body}} - the body |ExoSocialActivity |Record an activity.|
|*addProcessor*(ActivityProcessor processor) | {{processor }} |void|Add a new processor.|
|*addProcessorPlugin*(BaseActivityProcessorPlugin plugin) | {{plugin}} |void|Add a new processor plugin.|
|*getActivitiesCount*(Identity owner) throws ActivityStorageException | {{owner }} | int|Get the number of activities from a stream owner.|
|*processActivitiy*(ExoSocialActivity activity) | {{activity}} |void|Pass an activity through the chain of processors.|


h1. IdentityManager {anchor:id=Developer_document.Java_APIs.Identity_ManagerRoleNotInToc}

|| Method || Param || Return || Description ||
| *registerIdentityProviders*(IdentityProviderPlugin plugin)| {{plugin}}| void| Register one or more IdentityProvider through an IdentityProviderPlugin.|
| *getIdentity*(String id) | {{id}} can be a social GlobalId or a raw identity such as in Identity.getId() |Identity - null if nothing is found, or the Identity object | Get the identity by ID and loads his profile. |
| *getIdentity*(String id, boolean loadProfile) | {{id}} can be a social GlobalId or a raw identity such as in Identity.getId(), {{loadProfile}} - the value is true if the profile is loaded and false if not loaded | null if nothing is found, or the Identity object | Get the identity by loading id of the profile optionally. |
| *deleteIdentity*(Identity identity)|{{identiy}}| void|Delete an identity.|
| *addIdentityProvider*(IdentityProvider<?> idProvider)| {{idProvider}} - the id of provider | void | Add the identity provider. |
| *getOrCreateIdentity*(String providerId, String remoteId) | {{providerId}} - the id of provider, {{remoteId}} - the remote id | Identity | Get the identity by remoteId. If the provider can not find any identity by remoteId, the return value is null. If no identity found by identity provider and that identity is still stored on JCR, the stored identity will be deleted and the return value is null.|
| *getOrCreateIdentity*(String providerId, String remoteId, boolean loadProfile) | {{providerId}} - referring to the name of the Identity provider, {{remoteId}} - the identifier that identify the identity in the specific identity provider, {{loadProfile}} - true when the profile is loaded |null if nothing is found, or the Identity object improves the performance by specifying what needs to be loaded | This function returns an Identity object that is specific to a special type. For example, if the type is Linked'In, the identifier will be the URL of profile or if it is a CS contact manager, it will be the UID of the contact. A new identity is created if it does not exist. |
| *getIdentitiesByProfileFilter*(String providerId, ProfileFilter profileFilter) throws Exception | {{providerId}} - the id of provider, {{profileFilter}} - the filter of provider |Identity| Get the identities by a profile filter. |
| *getIdentitiesByProfileFilter*(String providerId, ProfileFilter profileFilter, long offset, long limit) throws Exception | {{providerId, profileFilter, offset, limit}} | List<Identity>  | Get the identities by a profile filter. |
| *getIdentitiesByProfileFilter*(ProfileFilter profileFilter) throws Exception | {{profileFilter}} - the profile filter | List<Identity> | Get the identities by a profile filter. |
| *getIdentitiesByProfileFilter*(ProfileFilter profileFilter, long offset, long limit) throws Exception | {{providerId, profileFilter, offset, limit}} | List<Identity>  |Get the identities by a profile filter.  |
| *getIdentitiesFilterByAlphaBet*(String providerId, ProfileFilter profileFilter) throws Exception | {{providerId}} - the id of provider, {{profileFilter}} - the profile filter |  List<Identity>  | Get the identities filter by alphabet. |
| *getIdentitiesFilterByAlphaBet*(String providerId, ProfileFilter profileFilter, long offset,long limit) throws Exception| {{providerId, profileFilter, offset, limit}}|List<Identity>| Get the identities filter by alphabet with offset and limit.|
| *getIdentitiesFilterByAlphaBet*(ProfileFilter profileFilter) throws Exception| {{profileFilter}} - the profile filter |   List<Identity>  | Get the identities filter by alphabet. |
| *getIdentity*(String providerId, String remoteId, boolean loadProfile) | {{providerId}}, {{remoteId}}, {{loadProfile}} | Identity | Get the identity. |
| *getIdentitiesCount*(String providerId)| {{providerId}} |long| Get the number of identities.|
| *identityExisted*(String providerId, String remoteId) | {{providerId}}, {{remoteId}} | boolean | Check if the identity is already existed or not. |
| *saveIdentity*(Identity identity) | {{identity}} - the identity | void | Save the identity. |
| *saveProfile*(Profile profile)| {{profile}} | void | Save a profile.|
| *addOrModifyProfileProperties*(Profile profile) throws Exception| {{profile}}|void | Add or modify properties of profile. Profile parameter is a lightweight that contains only the property that you want to add or modify. NOTE: The method will not delete the properties of an old profile when the param profile does not have those keys.|
| *updateAvatar*(Profile p) | {{profile}} | void | Update the avatar. |
| *updateBasicInfo*(Profile p) throws Exception | {{profile}} | void | Update the basic information. |
| *updateContactSection*(Profile p) throws Exception | {{profile}} | void | Update the contact section of the profile. |
| *updateExperienceSection*(Profile p)throws Exception | {{profile}}  | void | Update the experience section of the profile. |
| *updateHeaderSection*(Profile p) throws Exception | {{profile}} | void | Update the header section of the profile. |
| *getIdentities*(String providerId) throws Exception | {{providerId}} - the id of provider | List<Identity>  | Get the identities by the provider id. |
| *getIdentities*(String providerId, boolean loadProfile)| {{providerId}} - the id of provider, {{loadProfile}} - the loaded profile. |List<Identity>  | Get the identities by the provider id. If loadProvider is true, loading the profile will be performed.|
| *getConnections*(Identity ownerIdentity) throws Exception| {{ownerIdentity}} | List<Identity> | Get connections of an identity. (Since 1.1.1). |
| *getIdentityStorage*() | {{N/A}} | IdentityStorage  | Get the identity storage. |
| *getStorage*() | {{ N/A}} | IdentityStorage  |Get the storage. Deprecated: should use method getIdentityStorage(). |
| *registerProfileListener*(ProfileListener listener) | {{listener}} | void | Register the profile listener. |
| *unregisterProfileListener*(ProfileListener listener) | {{ listener}}| void | Unregister the profile listener. |
| *addProfileListener*(ProfileListenerPlugin plugin) | {{plugin}} | void | Register a profile listener component plug-in. |


h1. RelationshipManager {anchor:id=Developer_document.Java_APIs.Relationship_managerRoleNotInToc}

|| Method || Param || Return || Description ||
| *getRelationshipById*(String id) throws Exception | {{id}}|Relationship| Get the relationship by id. You should use get(String) instead. It will be removed at 1.2.x.|
| *invite*(Identity sender, Identity receiver) throws RelationshipStorageException| {{sender}} {{receiver}} | Relationship | Create a connection invitation between two identities. |
| *saveRelationship*(Relationship relationship) throws RelationshipStorageException| {{relationship}} - a relationship | void | Save a relationship. |
| *confirm*(Relationship relationship) throws RelationshipStorageException| {{relationship}} - a pending relationship | void | Mark a relationship as confirmed. |
| *deny*(Relationship relationship) throws RelationshipStorageException| {{relationship}} - a pending relationship | void | Deny a relationship. |
| *remove*(Relationship relationship) throws RelationshipStorageException| {{relationship}} - a pending relationship | void | Remove a relationship. |
| *ignore*(Relationship relationship) throws RelationshipStorageException| {{relationship}} - a pending relationship | void | Mark a relationship as ignored |
| *getPendingRelationships*(Identity sender) throws Exception | {{sender}} - an identity | List<Relationship> | Get all the pending relationship of sender. |
| *getPendingRelationships*(Identity sender, List<Identity> identities) throws Exception| {{sender}} - an identity, {{identities}} - a list of identity | List<Relationship> | Get pending relationships of sender that match with identities. |
| *getRequireValidationRelationships*(Identity receiver) throws Exception| {{receiver}} - an identity | List<Relationship> | Get list of required validation relationship of receiver. |
| *getRequireValidationRelationships*(Identity receiver, List<Identity> identities)| {{receiver}} - an identity, {{identities}} - a list of identity | List<Relationship> | Get list of required validation relationship of receiver that match with identities. |
| *getConfirmedRelationships*(Identity identity)| {{identity}} - an identity | List<Relationship> | Get list of confirmed relationship of identity. |
| *getConfirmedRelationships*(Identity identity, List<Identity> identities)| {{identity}} - an identity, {{identities}} - a list of identity | List<Relationship> | Get list of confirmed relationship of identity that match with identities. |
| *getAllRelationships*(Identity identity)| {{identity}} - an identity | List<Relationship> | Return all the relationship of a given identity with other identity. |
| *getAllRelationships*(Identity identity, List<Identity> identities)| {{identity}} - an identity, {{identities}} - a list of identity | List<Relationship> | Return all the relationship of a given identity with other identity in identities. |
| *getAllRelationships*(Identity identity)| {{identity}} - an identity | List<Relationship> | Return all the relationship of a given identity with other identity. |
| *getAllRelationships*(Identity identity, Relationship.Type type, List<Identity> identities)| {{identity}} - an identity, {{type}} - a Relationship.Type, {{identities}} - a list of identity <Relationship> | | Return all the  relationship of a given identity with other identity in identities in type. |
| *getRelationship*(Identity identity1, Identity identity2)| {{identity1}} and {{identity2}} - identities| Relationship | Get the relationship of two identities. |


h1. SpaceService {anchor:id=Developer_document.JavaAPIs.Java_APIs.SpaceServiceRoleNotInToc}

|| Method || Param || Return || Description ||
|*getSpaceByDisplayName*(String spaceDisplayName)|{{spaceDisplayName}}|Space |Get a space whose display name matches the string input. (Since 1.2.0-GA).|
|*getSpaceByPrettyName*(String spaceName)| {{spaceName}}| Space |Get a space whose pretty name matches the string input. (Since 1.2.0-GA).|
|*getSpaceByGroupId*(String groupId)|{{groupId}}|Space |Get a space that has group Id matching the string input. |
|*getSpaceById*(String spaceId)|{{spaceId}} |Space |Get a space by its Id.|
|*getSpaceByUrl*(String spaceUrl)|{{spaceUrl}} |Space|Get a space whose URL matches the string input. |
|*getAllSpaces*()|{{N/A}}|ListAccess<Space> |Get a list of spaces with the type of a space list access. (Since 1.3.0-GA).|
|*getAllSpacesWithListAccess*()|{{N/A}}|ListAccess<Space>|Get a list of spaces with the type of a space list access. (Since 1.2.0-GA).|
|*getAllSpacesByFilter*(SpaceFilter spaceFilter)|{{spaceFilter}}|ListAccess<Space> |Get a list of spaces with the type of a space list access. These spaces matches the space filter. (Since  1.2.0-GA).|
|*getMemberSpaces*(String userId)|{{userId}}|ListAccess<Space> |Get a list of spaces with the type of list access that contains all the spaces in which a user has the "member" role. (Since 1.2.0-GA).|
|*getMemberSpacesByFilter*(String userId, SpaceFilter spaceFilter)|{{userId}}, {{spaceFilter}}|ListAccess<Space> |Get a list of spaces with the type of a space list access. The list contains the spaces which a user has the "member" role and match the provided space filter. (Since 1.2.0-GA).|
|*getAccessibleSpaces*(String userId)|{{userId}}| ListAccess<Space>  |Get a list of spaces with the type of a space list access. The list contains all the spaces that a user has the access permission.(Since 1.3.0-GA).|
|*getAccessibleSpacesWithListAccess*(String userId) |{{userId}}|ListAccess<Space> |Get a list of spaces with a space list access. The list contains all the spaces that a user has the access permission. (Since 1.2.0-GA).|
|*getAccessibleSpacesByFilter*(String userId, SpaceFilter spaceFilter)|{{userId}}, {{spaceFilter}}|ListAccess<Space>|Get a list of spaces with the type of a space list access. The list contains all the spaces that a user has the access permission and match the provided space filter. (Since 1.2.0-GA).|
|*getSettingableSpaces*(String userId)|{{userId}}|ListAccess<Space> |Get a list of spaces with the type of a space list access. The list contains all the spaces that a user has the setting permission. (Since 1.2.0-GA).|
|*getSettingabledSpacesByFilter*(String userId, SpaceFilter spaceFilter)|{{userId, spaceFilter}}|ListAccess<Space> |Get a list of spaces with the type of a space list access. The list contains all the spaces that a user has the setting permission and match the provided space filter. (Since 1.2.0-GA).|
|*getInvitedSpaces*(String userId)|{{userId}}|ListAccess<Space> |Get a list of spaces with the type of a space list access. The list contains all the spaces that a user is invited to join. (Since 1.3.0-GA).|
|*getInvitedSpacesWithListAccess*(String userId)| {{userId}}|ListAccess<Space> |Get a list of spaces with the type of a space list access. The list contains all the spaces that a user is invited to join. (Since 1.2.0-GA).|
|*getInvitedSpacesByFilter*(String userId, SpaceFilter spaceFilter)|{{userId}}, {{spaceFilter}}|ListAccess<Space> |Get a list of spaces with the type of a space list access. The list contains all the spaces that a user is invited to join and match the provided space filter. (Since 1.2.0-GA). |
|*getPublicSpaces*(String userId)|{{userId}}|ListAccess<Space> |Get a list of spaces with the type of a space list access. The list contains all the spaces that a user can request to join. (Since 1.3.0-GA).|
|*getPublicSpacesWithListAccess*(String userId)|{{userId}}|ListAccess<Space> |Get a list of spaces with the type of a space list access. The list contains all the spaces that a user can request to join. (Since 1.2.0-GA). |
|*getPublicSpacesByFilter*(String userId, SpaceFilter spaceFilter)|{{userId}}, {{spaceFilter}}|ListAccess<Space> |Get a list of spaces with the type of a space list access. The list contains all the spaces that a user can request to join and match the provided space filter. (Since 1.2.0-GA).|
|*getPendingSpaces*(String userId)|{{userId}}|ListAccess<Space> |Get a list of spaces with the type of a space list access. The list contains all the spaces that a user sent join-request to a space. (Since 1.3.0-GA).|
|*getPendingSpacesWithListAccess*(String userId)|{{userId}}|ListAccess<Space> |Get a list of spaces with the type of a space list access. The list contains all the spaces that a user sent a request for joining a space. (Since 1.2.0-GA).|
|*getPendingSpacesByFilter*(String userId, SpaceFilter spaceFilter)|{{userId}}, {{spaceFilter}}|ListAccess<Space> |Get a list of spaces with the type of a space list access. The list contains all the spaces that a user sent join-request to a space and match the provided space filter. (Since 1.2.0-GA).|
|*createSpace*(Space space, String creatorUserId)|{{space, creatorUserId }}| Space |Create a new space: create a group, its group navigation with pages for installing space applications.|
|*updateSpace*(Space existingSpace)|{{existingSpace}}|Space |Update information of a space. (Since 1.2.0-GA).|
|*deleteSpace*(Space space)|{{space}}|void|Delete a space. When deleting a space, all of its page navigation bars and its group will be deleted.|
|*addPendingUser*(Space space, String userId)|{{space, userId}}| void|Add a user to the pending list to request to join a space. (Since 1.2.0-GA).|
|*removePendingUser*(Space space, String userId)|{{space, userId}}|void|Remove a user from the pending list to request to join a space. (Since 1.2.0-GA).|
|*isPendingUser*(Space space, String userId)|{{space, userId}}|void|Check if a user is in the pending list to request to join a space or not. (Since 1.2.0-GA).|
|*addInvitedUser*(Space space, String userId)|{{space, userId}}|void|Add a user, who is invited to a space, to the invited list. (Since 1.2.0-GA). |
|*removeInvitedUser*(Space space, String userId)|{{space, userId}}|void|Remove a user, who is invited to a space, from the invited list. (Since 1.2.0-GA).|
|*isInvitedUser*(Space space, String userId)|{{space, userId}}|void|Check if a user invited to join a space is in the invited list or not. (Since 1.2.0-GA).|
|*addMember*(Space space, String userId)|{{space, userId}}|void|Add a user to a space. The user will get the "member" role in that space.|
|*removeMember*(Space space, String userId)|{{space, userId}}|void|Remove a member from a space.|
|*isMember*(Space space, String userId)|{{space, userId}}|boolean|Check whether a user is a space's member or not.|
|*setManager*(Space space, String userId, boolean isManager)|{{space, userId, isManager}}|void|Add a user to have the "manager" role in a space. If _isManager_ is set to "true", a user will get the "manager" role. If false, that user will get the "member" role. (Since 1.2.0-GA).|
|*isManager*(Space space, String userId)|{{space, userId}}|void|Check if a user has the "manager" role in a space or not. (Since 1.2.0-GA).|
|*isOnlyManager*(Space space, String userId)|{{space, userId}}|boolean|Check if a user is the only one who has the "manager" role in a space. True if the user Id is the only one who has "manager" role in a space. Otherwise, return false. (Since 1.2.0-GA).|
|*hasAccessPermission*(Space space, String userId)|{{space, userId}}|boolean|Check if a user can access a space or not. If the user is root or the space's member, return true.|
|*hasSettingPermission*(Space space, String userId)|{{space, userId}}|boolean|Check if a user can have the setting permission to a space or not. If the user is root or the space's member, return true. (Since 1.2.0-GA).|
|*registerSpaceListenerPlugin*(SpaceListenerPlugin spaceListenerPlugin)|{{spaceListenerPlugin}}|void|Register a space listener plugin to listen to space lifecyle events: creating, removing space, activating, deactiving, adding, removing application, promoting, joining, leaving, and revoking. (Since 1.2.0-GA).|
|*unregisterSpaceListenerPlugin*(SpaceListenerPlugin spaceListenerPlugin)|{{spaceListenerPlugin}}|void|Unregister an existing space listener plugin. (Since 1.2.0-GA).|
|*setSpaceApplicationConfigPlugin*(SpaceApplicationConfigPlugin spaceApplicationConfigPlugin)|{{spaceApplicationConfigPlugin}}|void|Set a space application configuration plugin to configure the home and space applications. By configuring this, the space service will know how to create a new page node with title, URL, and portlet to use. (Since 1.2.0-GA). |
|*getSpaceApplicationConfigPlugin*()|{{N/A}}|SpaceApplicationConfigPlugin|Get the configuration of applications to be initialized when creating a new space. (Since 1.2.0-GA).|
|*getAllSpaces*() throws SpaceException|{{N/A}}|List<Space>|Get all spaces in Social. You should use method getAllSpaceWithListAccess instead of getAllSpaces. It will be removed in Social 1.3.x.|
|*getSpaceByName*(String spaceName) throws SpaceException|{{spaceName}}|Space|Get a space by its name. You should use SpaceService#getSpaceByPrettyName instead. It will be removed version 1.3.x.|
|*getSpacesByFirstCharacterOfName*(String firstCharacterOfName) throws SpaceException|{{firstCharacterOfName}}|  List<Space> |Get all spaces whose name starting with the input character.|
|*getSpacesBySearchCondition*(String condition) throws Exception|{{condition}} | List<Space> |Get all spaces which has the name or the description that matches the input condition.|
|*getSpaces*(String userId) throws SpaceException|{{userId}} | List<Space>|Get spaces of a user in which that user is a member. You should use getMemberSpaces(String) instead. It will be removed in Social 1.3.x|
|*getAccessibleSpaces*(String userId) throws SpaceException|{{userId}}|List<Space>|Get spaces of a user which that user has the access permission. You should use getAccessibleSpacesWithListAccess(String) instead. It will be removed in Social 1.3.x.|
|*getEditableSpaces*(String userId) throws SpaceException|{{userId}}| List<Space>|Get spaces of a user which that user has the edit permission. You should use getSettingableSpaces(String) instead. It will be removed in Social 1.3.x.|
|*getInvitedSpaces*(String userId) throws SpaceException|{{userId}}|  List<Space> |Get invited spaces of a user and that user can accept or deny the request. You should use getInvitedSpacesWithListAccess(String) instead. It will be removed in Social 1.3.x.|
|*getPublicSpaces*(String userId) throws SpaceException|{{userId - Id of user}}|List<Space> |Get invited spaces of a user that can be accepted or denied by the user. You should use getPublicSpacesWithListAccess(String) instead. It will be removed in Social 1.3.x.|
|*getPendingSpaces*(String userId) throws SpaceException|{{userId}}|  List<Space> |Get pending spaces of a user and spaces which the user can revoke that request. You should use getPendingSpacesWithListAccess(String) instead. It will be removed in Social 1.3.x.|
|*createSpace*(Space space, String creator, String invitedGroupId) throws SpaceException|{{space, creator, invitedGroupId}}|Space|Create a new space and invite all users from invitedGroupId to join this newly created space.|
|*saveSpace*(Space space, boolean isNew) throws SpaceException|{{space}},  {{isNew}}|void|Save a new space or update a space. You should use updateSpace(org.exoplatform.social.core.space.model.Space) instead. It will be removed in Social 1.3.x.|
|*deleteSpace*(String spaceId) throws SpaceException|{{ spaceId}}|void|Delete a space by its id. You should use deleteSpace(org.exoplatform.social.core.space.model.Space) instead. It will be removed in Social 1.3.x.|
|*initApp*(Space space) throws SpaceException|{{space}}|void|It is just for compatibility. Deprecated: it will be removed in Social 1.3.x.|
|*initApps*(Space space) throws SpaceException|{{space}}|void|It is just for compatibility. Deprecated: it will be removed in Social 1.3.x.|
|*deInitApps*(Space space) throws SpaceException|{{space }}| void |It is just for compatibility. Deprecated: it will be removed in Social 1.3.x.|
|*addMember*(String spaceId, String userId) throws SpaceException|{{spaceId, userId}}|void|Add a user to a space, the user will get the "member" role in a space. You should use addMember(org.exoplatform.social.core.space.model.Space, String) instead. It will be removed in Social 1.3.x.|
|*removeMember*(String spaceId, String userId) throws SpaceException|{{spaceId, userId}}|void|Remove a member from a space. You should use removeMember(org.exoplatform.social.core.space.model.Space, String) instead. It will be removed in Social 1.3.x.|
|*getMembers*(Space space) throws SpaceException|{{space}}| List<String>|Get a list of the space members from a space. You should use Space#getMembers() instead. It will be removed in Social 1.3.x.|
|*getMembers*(String spaceId) throws SpaceException|{{spaceId}}| List<String>|Get a list of the space members from a space. You should use Space#getMembers() instead. It will be removed in Social 1.3.x.|
|*setLeader*(Space space, String userId, boolean isLeader) throws SpaceException|{{space, userId, isLeader }}|void|Set a member of a space as a manager. You should use setManager(org.exoplatform.social.core.space.model.Space, String, boolean) instead. It will be removed in Social 1.3.x.|
|*setLeader*(String spaceId, String userId, boolean isLeader) throws SpaceException|{{spaceId, userId, isLeader}}|void|Set a member of a space as a manager. You should use setManager(org.exoplatform.social.core.space.model.Space, String, boolean) instead. It will be removed in Social 1.3.x.|
|*isLeader*(Space space, String userId) throws SpaceException|{{space, userId}}|boolean |Check whether a user is a space's leader or not. You should use isManager(org.exoplatform.social.core.space.model.Space, String) instead. It will be removed in Social 1.3.x.|
|*isLeader*(String spaceId, String userId) throws SpaceException|{{spaceId, userId}}|boolean |Check whether a user is a space's leader or not. You should use isManager(org.exoplatform.social.core.space.model.Space, String) instead. It will be removed in Social 1.3.x.|
|*isOnlyLeader*(Space space, String userId) throws SpaceException|{{space, userId}}|boolean|Check whether a user is the only leader of a space or not. You should use isOnlyManager(org.exoplatform.social.core.space.model.Space, String) instead. It will be removed in Social 1.3.x.|
|*isOnlyLeader*(String spaceId, String userId) throws SpaceException|{{spaceId, userId}}|boolean|Check whether a user is the only leader of a space or not. You should use isOnlyManager(org.exoplatform.social.core.space.model.Space, String) instead. It will be removed in Social 1.3.x.|
|*isMember*(String spaceId, String userId) throws SpaceException|{{spaceId, userId, }}| boolean |Check whether a user is a space's member or not. You should use isMember(org.exoplatform.social.core.space.model.Space, String) instead. It will be removed in Social 1.3.x.|
|*hasAccessPermission*(String spaceId, String userId) throws SpaceException|{{spaceId, userId}}|boolean |Check if a user can access a space or not. You should use hasAccessPermission(org.exoplatform.social.core.space.model.Space, String) instead. It will be removed in Social 1.3.x.|
|*hasEditPermission*(Space space, String userId) throws SpaceException|{{space, userId}}|Boolean |Check if a user can have the edit permission of a space or not. You should use hasSettingPermission(org.exoplatform.social.core.space.model.Space, String) instead. It will be removed in Social 1.3.x.|
|*hasEditPermission*(String spaceId, String userId) throws SpaceException|{{spaceId, userId}}|Boolean |Check if a user can have the edit permission of a space or not. You should use hasSettingPermission(org.exoplatform.social.core.space.model.Space, String) instead. It will be removed in Social 1.3.x.|
|*isInvited*(Space space, String userId) throws SpaceException|{{space, userId}}|Boolean |Check if a user is in the invited list of a space or not. You should use isInvitedUser(org.exoplatform.social.core.space.model.Space, String) instead. It will be removed in Social 1.3.x.|
|*isInvited*(String spaceId, String userId) throws SpaceException|{{spaceId, userId}}|Boolean |Check if a user is in the invited list of a space or not. You should use isInvitedUser(org.exoplatform.social.core.space.model.Space, String) instead. It will be removed in Social 1.3.x.|
|*isPending*(Space space, String userId) throws SpaceException|{{space, userId}}|Boolean  |Check if a user is in the pending list of a space or not.You should use isPendingUser(org.exoplatform.social.core.space.model.Space, String) instead. It will be removed in Social 1.3.x.|
|*isPending*(String spaceId, String userId) throws SpaceException|{{spaceId, userId}}|Boolean  | Check if a user is in the pending list of a space or not. You should use isPendingUser(org.exoplatform.social.core.space.model.Space, String) instead. It will be removed in Social 1.3.x.|
|*installApplication*(String spaceId, String appId) throws SpaceException|{{spaceId, appId}}|void|Install an application to a space.|
|*installApplication*(Space space, String appId) throws SpaceException|{{space, appId}}|void |Install an application to a space.|
|*activateApplication*(Space space, String appId) throws SpaceException|{{space, appId}}| void|Activate an installed application in a space.|
|*activateApplication*(String spaceId, String appId) throws SpaceException|{{spaceId, appId}}|void|Activate an installed application in a space.|
|*deactivateApplication*(Space space, String appId) throws SpaceException|{{space, appId}}|void |Deactivate an installed application in a space.|
|*deactivateApplication*(String spaceId, String appId) throws SpaceException|{{spaceId, appId}}|void|Deactivate an installed application in a space.|
|*removeApplication*(Space space, String appId, String appName) throws SpaceException|{{space, appId, appName}}| void|Remove an installed application from a space.|
|*removeApplication*(String spaceId, String appId, String appName) throws SpaceException|{{space, appId, appName}}|void|Remove an installed application from a space.|
|*requestJoin*(Space space, String userId) throws SpaceException|{{space, userId}}|  void |Request users to join a space. The invited users are then added to the pending list of the space. You should use addPendingUser(org.exoplatform.social.core.space.model.Space, String) instead. It will be removed in Social 1.3.x.|
|*requestJoin*(String spaceId, String userId) throws SpaceException|{{spaceId, userId}}|void|Request users to join a space. The invited users are then added to the pending list of the space.. You should use addPendingUser(org.exoplatform.social.core.space.model.Space, String) instead. It will be removed in Social 1.3.x.|
|*revokeRequestJoin*(Space space, String userId) throws SpaceException|{{space, userId}}|void|Revoke a join request after users request to join a group and is in the pending status. You should use removePendingUser(org.exoplatform.social.core.space.model.Space, String) instead. It will be removed in Social 1.3.x.|
|*revokeRequestJoin*(String spaceId, String userId) throws SpaceException|{{spaceId, userId}}|void|Revoke a request to join a space. You should use removePendingUser(org.exoplatform.social.core.space.model.Space, String) instead. It will be removed in Social 1.3.x.|
|*inviteMember*(Space space, String userId) throws SpaceException|{{space, userId}}| void |Invite a userId to become a member of a space. You should use addInvitedUser(org.exoplatform.social.core.space.model.Space, String) instead. It will be removed in Social 1.3.x.|
|*inviteMember*(String spaceId, String userId) throws SpaceException|{{spaceId, userId}}|void|Invite a userId to a be member of a space. You should use addInvitedUser(org.exoplatform.social.core.space.model.Space, String) instead. It will be removed in Social 1.3.x.|
|*revokeInvitation*(Space space, String userId) throws SpaceException|{{space, userId}}|void|Revoke an invitation. Remove a user from the invited  member list of the space. You should use removeInvitedUser(org.exoplatform.social.core.space.model.Space, String) instead. It will be removed in Social 1.3.x.|
|*revokeInvitation*(String spaceId, String userId) throws SpaceException|{{spaceId, userId}}|void|Revoke an invitation. Remove a user from the invited  member list of the space. You should use removeInvitedUser(org.exoplatform.social.core.space.model.Space, String) instead. It will be removed in Social 1.3.x.|
|*acceptInvitation*(Space space, String userId) throws SpaceException|{{space, userId}}|void|Accept an invitation and move a user from the invited list to the member list. You should use addMember(org.exoplatform.social.core.space.model.Space, String) instead. It will be removed in Social 1.3.x.|
|*acceptInvitation*(String spaceId, String userId) throws SpaceException|{{spaceId, userId}}|void|Accept an invitation and move a user from the invited list to the member list. You should use addMember(org.exoplatform.social.core.space.model.Space, String) instead. It will be removed in Social 1.3.x.|
|*denyInvitation*(Space space, String userId) throws SpaceException|{{space, userId}}|void|Deny an invitation and remove a user from the invited list. You should use removeInvitedUser(org.exoplatform.social.core.space.model.Space, String) instead. It will be removed in Social 1.3.x.|
|*denyInvitation*(String spaceId, String userId) throws SpaceException|{{spaceId, userId}}|void|Deny an invitation and remove a user from the invited list. You should use removeInvitedUser(org.exoplatform.social.core.space.model.Space, String) instead. It will be removed in Social 1.3.x.|
|*validateRequest*(Space space, String userId) throws SpaceException|{{space, userId}}|void|Validate a request and move a user from the pending list to the member list. You should use addMember(org.exoplatform.social.core.space.model.Space, String) instead. It will be removed in Social 1.3.x.|
|*validateRequest*(String spaceId, String userId) throws SpaceException|{{spaceId, userId}}|void|Validate a request and move a user from the pending list to the member list. You should use addMember(org.exoplatform.social.core.space.model.Space, String) instead. It will be removed in Social 1.3.x.|
|*declineRequest*(Space space, String userId) throws SpaceException|{{space, userId}}|void|Decline a request and remove a user from  the pending list. You should use removePendingUser(org.exoplatform.social.core.space.model.Space, String) instead. It will be removed in Social 1.3.x.|
|*declineRequest*(String spaceId, String userId) throws SpaceException|{{spaceId, userId}}|void|Decline a request and remove a user from  the pending list. You should use removePendingUser(org.exoplatform.social.core.space.model.Space, String) instead. It will be removed in Social 1.3.x.|
|*registerSpaceLifeCycleListener*(SpaceLifeCycleListener listener|{{listener}}|void|Register a space lifecycle listener. Deprecated: it will be removed in Social 1.3.x.|
|*unregisterSpaceLifeCycleListener*(SpaceLifeCycleListener listener)|{{listener}}|void|Unregister a space lifecycle listener. Deprecated: it will be removed in Social 1.3.x.|
|*setPortletsPrefsRequired*(PortletPreferenceRequiredPlugin portletPrefsRequiredPlugin)|{{portletPrefsRequiredPlugin}}|void| Set the portlet preferences got from the plug-in configuration. You should use SpaceApplicationConfigPlugin(org.exoplatform.social.core.space.model.Space, String) instead. It will be removed in Social 1.3.x.|
|*getPortletsPrefsRequired*()|{{N/A}}|String|Get the portlet preferences required to use in creating the portlet application. Deprecated: it will be removed in Social 1.3.x.|


h1. I18NActivityProcessor {anchor:id=Developer_document.JavaAPIs.Java_APIs.I18NActivityProcessorRoleNotInToc}

|| Method || Param || Return || Description ||
|*addActivityResourceBundlePlugin*(ActivityResourceBundlePlugin activityResourceBundlePlugin)|{{activityResourceBundlePlugin}}|void|Register an activity resource bundle plugin.|
|*removeActivityResourceBundlePlugin*(ActivityResourceBundlePlugin activityResourceBundlePlugin)|{{activityResourceBundlePlugin}}|void|Unregister an existing registered resource bundle plugin.|
|*process*(ExoSocialActivity i18nActivity, Locale selectedLocale)|{{i18nActivity, selectedLocale}}|ExoSocialActivity|Process the internationalized activity which means that {{activity.getTitleId() \!= null}}.|
|*setResourceBundleService*(ResourceBundleService resourceBundleService)|{{resourceBundleService}}|void|Set the external resource bundle service.|



h1. LinkProvider {anchor:id=Developer_document.JavaAPIs.Java_APIs.LinkProviderRoleNotInToc}

|| Method || Param || Return || Description ||
|*getSpaceUri*(final String prettyName)|{{prettyName}} |String |Return the URI link to the space profile. (Since 1.2.0-GA). |
|*getProfileUri*(final String username)|{{username}} |String |Return the URI link to the user profile. |
|*getProfileUri*(final String username, final String portalOwner)|{{username, portalOwner}} |String |Return the URI link to the user profile in a _portalOwner_. |
|*getProfileLink*(final String username)|{{username}} |String |Return the _<a>_ tag with a link to the profile of _userName_. |
|*getProfileLink*(final String username, final String portalOwner)|{{username, portalOwner}}| String|Return the _<a>_ tag with a link to the profile of _userName_ on a _portalName_. |
|*getAbsoluteProfileUrl*(final String userName, final String portalName, final String portalOwner, final String host)|{{userName, portalName, portalOwner, host}} |String |Get the absolute profile URI of the _userName_. |
|*getUserActivityUri*(final String remoteId)|{{remoteId}} |String |Get an activity link of a user. The _remoteId_ parameter should be the Id name. For example: _root_. |
|*getUserConnectionsUri*(final String remoteId)| {{remoteId}}|String |Get a connection link of a user. The _remoteId_ parameter should be the Id name. For example: _root_. |
|*getUserConnectionsYoursUri*(final String remoteId)|{{remoteId}}|String  |Get a connection link of a user. The _remoteId_ parameter should be the Id name. For example: _root_.|
|*getUserProfileUri*(final String remoteId)|{{remoteId}}|String  |Get a profile link of a user. The _remoteId_ parameter should be the Id name.For example: _root_. |
|*getActivityUri*(final String providerId, final String remoteId)|{{providerId, remoteId}} | String|Get an activity link of a space or a user. The _remoteId_ parameter should be the Id name. For example: _organization\:root_ or _space\:abc\_def_. |
|*getActivityUriForSpace*(final String remoteId, final String groupId)|{{ remoteId, groupId}} |String |Get an activity link of the space. (Since 1.2.8). |
|*buildAvatarImageUri*(final AvatarAttachment avatarAttachment)|{{avatarAttachment}} | String| Build an avatar image URI from _avatarAttachment_.|
|*buildAvatarImageUri*(final Space space)|{{space}} |String |Get the URI link of the avatar. (Since 1.2.0-GA). |
|*buildAvatarImageUri*(final String identityName)|{{identityName}} |String |Get the URI link of the avatar from the identity name. (Since 1.2.0-GA). |
|*buildAvatarImageUri*(final PortalContainer container, final AvatarAttachment avatarAttachment)|{{container, avatarAttachment}} |String |Build an avatar image URI from _avatarAttachment_. (Sine 1.2.0-GA).|
|*getAvatarImageSource*(final PortalContainer portalContainer, final Profile profile)|{{portalContainer, profile}} |String|Get an avatar image URI of a profile in a _portalContainer_. Deprecated: You should use _Profile#getAvatarUrl()_ instead. It will be removed in eXo Social 1.3.x. |
|*getAvatarImageSource*(final Profile profile)|{{profile}} |String |Get an avatar image URI of the profile. Deprecated: You should use _Profile#getAvatarUrl()_ instead. It will be removed in eXo Social 1.3.x. |
|*escapeJCRSpecialCharacters*(String string)|{{string}} |String |Escape the JCR special characters. |

