There are some overridable components in eXo Collaboration so that you can control how these components work by implementing or extending default implementations and then reconfigure these new components in the file configuration.xml.

eXo Collaboration implements and provides many public REST APIS to help built-in applications, such as Calendar, Chat and Mail to communicate and transfer data with the server. By using these public REST APIs, extended or 3rd party applications can make use of this to develop cool web applications faster without much implementation.

The Calendar application of eXo Collaboration uses CalendarWebservice to provide all APIs for working with calendars, such as creating personal/group calendars, sharing calendars, managing events/tasks.

The REST API of Calendar portlet is exposed by org.exoplatform.services.cs.calendar.CalendarWebservice class.

Service name Service URL Description Location
CalendarWebservice $portalname/$restcontextname/private/cs/calendar Call extended services of the Calendar application.

- Maven groupId: org.exoplatform.cs

- ArtifactId: exo.cs.web.webservice

Use the following APIs to build all functions of the Calendar application:

Name Description Service URL endpoint Parameters Expected Values
checkpermission Check the permission of a user to a calendar, aiming at defining if the user has the edit permission to the calendar or not. /private/cs/calendar/checkPermission/{username}/{calendarId}/type}

username

calendarid

type

user id

calendar id

INVALID_TYPE = -1 / PRIVATE_TYPE = 0 / SHARED_TYPE = 1 / PUBLIC_TYPE = 2

event Return a feed RSS that lists links to access a specific event. /private/cs/calendar/event/{username}/{eventFeedName}

username

eventFeedName

user id

string

feed Show the content of a feed that is a list of events in the "filename" file. /private/cs/calendar/feed/{username}/{feedname}/{filename}

username

feedname

filename

username

string

string

publicProcess Process the public calendar when having a remote access request. /cs/calendar/subscribe/{username}/{calendarId}/{type}

username

calendarId

type

user id

calendar id

INVALID_TYPE = -1 / PRIVATE_TYPE = 0 / SHARED_TYPE = 1 / PUBLIC_TYPE = 2

privateProcess Process the public calendar when having a remote access request. User must enter username and password to access. /private/cs/calendar/private/{username}/{calendarId}/{type}

username

calendarID

type

user id

calendar id

INVALID_TYPE = -1 / PRIVATE_TYPE = 0 / SHARED_TYPE = 1 / PUBLIC_TYPE = 2

upcomingEvent The list of upcoming events in a specific calendar. /private/cs/calendar/getissues/{currentdatetime}/{type}/{limit}

currentdatatime

type

limit

valid time format

INVALID_TYPE = -1 / PRIVATE_TYPE = 0 / SHARED_TYPE = 1 / PUBLIC_TYPE = 2

integer

updateStatus Update the status of a task. /private/cs/calendar/updatestatus/{taskid} taskid task id
getCalendars Get a list of calendars. /private/cs/calendar/getcalendars no param

The Mail application of eXo Collaboration uses MailWebservice to provide all APIs for working with mail, such as sending/checking/storing mail to JCR.

REST API of the Mail portlet is exposed by org.exoplatform.services.cs.mail.MailWebservice class.

Service name Service URL Description Location
MailWebservice $portalname/$restcontextname/private/cs/mail This service is used to call extended services of the Mail application.

- Maven groupId: org.exoplatform.cs

- artifactId: exo.cs.web.webservice

Use the following APIs to build all functions of the Mail application:

Name Description Service URL endpoint Parameters Expected Values
checkMail Check mails when having a request. /checkmail/{username}/{accountId}/{folderId/}/

username

accountID

folderId

user id

account id

folder id

synchFolders Synchronize the mail folders in the clients and those in the mail server. /synchfolders/{username}/{accountId}/

username

accountID

user id

account id

stopCheckMail Stop checking the mail. /stopcheckmail/{username}/{accountId}/

username

accountId

user id

account id

getCheckMailJobInfo The method to get information of the mail-checking job./checkmailjobinfo/{username}/{accountId}/

username

accountId

user id

account id

searchemail Search information from emails. /searchemail/{keywords} keywords string

The Chat application uses some APIs to help users create a room, join a room, invite other users to room, or send files, and more.

The Chat application of eXo Collaboration uses two services: RESTXMPPService and FileExchangeService to do these tasks.

REST API RESTXMPPService of the Chat portlet is exposed by org.exoplatform.services.xmpp.rest.RESTXMPPService class

Service name Service URL Description Location
RESTXMPPService $portalname/$restcontextname/xmpp Implement all actions sent to the Chat server;

* Maven groupid: org.exoplatform.cs

* exo.cs.eXoApplication.chat.service

Use the following APIs to build all functions of the Chat application:

Name Description Service URL endpoint Parameters Expected Values
loadJsResourceBundle Read the language files in the Chat server. /loadJsResourceBundle/{locale}/ locale locale id
createRoom Create a chat room or a group chat /muc/createroom/{username}/

username

room

nickname

user id

room name

display name

configRoom Establish the configuration of a chat room. /muc/configroom/{username}/

username

room

user id

room name

getRoomConfigForm Get the configuration of a chat room created. /muc/getroomconfig/{username}/

username

room

user id

room name

getRoomInfo Get the inforamtion of a chat room created /muc/getroominfo/{username}/

username

room

user id

string

getJoinedRooms List chat rooms that a user has been joined. /muc/joinedrooms/{username}/ username user id
getRooms Get a list of group chat or chat rooms created. /muc/rooms/{username}/ username user id
declineToRoom Refuse the invitation to join the chat room. /muc/decline/{username}/{inviter}/

username

inviter

room

reason

user id

user id

room name

string

destroyRoom Delete a chat room created. /muc/destroy/{username}

username

room

reason

altroom

user id

room name

string

room id

inviteToRoom Invite other users to join a chat room. /muc/invite/{username}/{invitee}/

username

invitee

room

reason

user id

user id

room name

string

joinRoom Join a chat room. /muc/join/{username}/

username

room

nickname

password

user id

room name

display name

room password

leftRoom Leave a chat room. /muc/leaveroom/{username}/

username

room

user id

room name

changeNickname Change the nickname of users /muc/changenickname/{username}/{nickname}/

username

nickname

user id

display name

changeAvailabilityStatusInRoom Change the status of a user in the chat room. /muc/changestatus/{username}/{mode}/

username

mood

room

status

user id

presence type

room name

presence type

changeSubject Change the subject of a chat room. muc/changesubject/{username}/

username

room

subject

user id

room name

string

manageRoleRoom Change the role of each user in a chat room. /muc/managerole/{username}/

username

room

nickname

role

command

user id

room name

display name

Participant / moderator

grant/revoke

manageAffilationRoom Change the ownership of a chat room. /muc/manageaffiliation/{username}/

username

room

nickname

affiliation

command

user id

room name

display name

String affiliation

grant / revoke

kickUserFromRoom Remove a user from the chat room. /muc/kick/{username}/

username

nickname

room

reason

user id

display name

room name

string

banUserFromRoom Ban a user in the chat room. /muc/ban/{username}/

username

room

name

reason

user id

room name

user id

string

addBoddyToRoster Add a user into the contact list. /roster/add/{username}/{adduser}

username

adduser

nickname

group

user id

use id

display name

group id

updateBoddy Update new users into the contact list. /roster/update/{username}/{upduser}/

username

upduser

nickname

group

user id

user id

display name

group id

createGroup Create a chat room. /roster/group/{username}/{group}/

username

group

user id

group id

askForSubscription Change the presence type of a user into Subscription. /askforsubscription/{username}/{askuser}/

username

askuser

nickname

user id

user id

display name

cleanBuddylist Remove a user from the contact list. /rosterclean/{username}/ username user id
getAllHistory Get all the chat history of two users. /history/getmessages/{usernameto}/{isGroupChat}/

usernameto

isGroupChat

usernamefrom

user id

true / false

user id

getHistoryBetweenDate Get the chat history of two users in a specific period. /history/getmessages/{usernameto}/{isGroupChat}/{from}/{to}/

usernameto

isgroupchat

from

to

usernamefrom

user id

true / false

valid date format

valid date format

user id

getHistoryFromDateToNow Get the chat history of two users from a specific date to the current time. /history/getmessages/{usernameto}/{isGroupChat}/{from}/

username

isGroupChat

from

usernamefrom

user id

true / false

valid date format

valid date format

user id

getAllHistoryFile Download all the chat history file of two users./history/file/getmessages/{usernameto}/{isGroupChat}/{clientTimezoneOffset}/

uernameto

isGroupChat

clientTimezoneOffset

usernamefrom

user id

true / false

Long

user id

getHistoryFromDateToNowFile Download the chat history file of two users from a specific date to the current time /history/file/getmessages/{usernameto}/{isGroupChat}/{from}/{clientTimezoneOffset}/

usernameto

isGroupChat

from

clientTimezoneOffset

usernamefrom

user id

true / false

valid date format

Long

user id

getHistoryBetweenDateFile Download the chat history file of two users in the specific date. /history/file/getmessages/{usernameto}/{isGroupChat}/{from}/{to}/{clientTimezoneOffset}/

usernameto

isGroupChat

from

to

clientTimezoneOffset

usernamefrom

user id

true / false

valid date format

valid date format

Long

user id

getUserInfo Get the information of a user. /getuserinfo/{username}/{needinfo}/

username

needinfo

user id

string

login2 Allow a user to log in the chat server. /login2/{forcache}/ forcache
logout Allow a user to log out the chat server. /logout/{username}/{presencestatus}/

username

presencestatus

user id

presencestatus

messageReceive Receive a message from other users. /history/messagereceive/{username}/{messageid}/

username

messageid

user id

message id

removeBuddy Delete a contact from the contact list. /roster/del/{username}/{removeboddy}/

username

removeboddy

user id

user id

removeTransport Reset the presence type at the service that is being used. /removetransport/{username}/{transport}/

username

transport

user id

transport servive (e.g: Yahoo, XMPP)

searchUsers Search users in the chat server/searchuser/{username}/

username

search

byUsername

byName

byEmail

searchService

user id

string

true / false

true /false

true / false

string

sendMessage Send an message to other users. /sendmessage/{username}/

username

messageBean

usesr id

object

sendMUCMessage Send a message to multile users or a group. /muc/sendmessage/{username}/

username

messageBean

user id

object

setUserStatus Change the status of a user. /sendstatus/{username}/{status}/

username

status

user id

available/ unavailabe / do not disturb / away / extend away

subscribeUser Change presence type into Subcribed type. /subscribeuser/{username}/{subsuser}/

username

subsuser

user id

user id

unsubscribeUser Change presence type into the Unsubscribed type. /unsubscribeuser/{username}/{unsubsuser}/

username

unsubsuser

user id

user id

acceptFile Accept getting a file sent from another user. /fileexchange/accept/{username}/{uuid}/

username

uuid

user id

string

rejectFile Refuse getting a file sent from another user./fileexchange/reject/{username}/{uuid}/

username

uuid

user id

string

getPreviousStatus Get the tatus of a user in the last log-in. /getprevstatus/{username}/ username user id

REST API FileExchangeService for uploading files is defined in org.exoplatform.services.xmpp.rest.FileExchangeService.

Service name Service URL Description Location
FileExchangeService $portalname/$restcontextname/fileexchange Upload a file to the server and inform the user that the file can be downloaded to the local computer.

- Maven groupid: org.exoplatform.cs

- InterfactId: exo.cs.eXoApplication.chat.service

Name Description Service URL endpoint Parameters Expected Values
upload Upload a file to the server. $portalname/$restcontextname/fileexchange

description

username

requestor

isroom

string

user id

user id

true / false