### Start eXo Platform with add-ons
Source: https://docs.exoplatform.org/administration/addons-management.html
Uses the docker run command with the EXO_ADDONS_LIST environment variable to specify and install add-ons during container initialization.
```bash
docker run -d \
-p 8080:8080 \
-e EXO_ADDONS_LIST="exo-tasks:1.3.x-SNAPSHOT,exo-answers:1.3.x-SNAPSHOT" \
exoplatform/exo-community
```
--------------------------------
### Start eXo Platform Containers
Source: https://docs.exoplatform.org/guide/developer-guide/intermediate-integration/rest-service.html
Instructions on how to start the eXo Platform using docker-compose.
```APIDOC
## Start eXo Platform Containers
### Description
Starts the eXo Platform using docker-compose.
### Command
```bash
docker-compose -f $EXO_HOME/docker-compose.yml up
```
```
--------------------------------
### Start eXo Platform Container
Source: https://docs.exoplatform.org/guide/developer-guide/intermediate-integration/rest-service.html
Command to initialize and start the eXo Platform environment using Docker Compose.
```bash
docker-compose -f $EXO_HOME/docker-compose.yml up
```
--------------------------------
### Configure Maven Repository for eXo Platform
Source: https://docs.exoplatform.org/guide/developer-guide/getting-started
This snippet shows how to add the eXo Platform Maven repository to your `settings.xml` file. This allows Maven to download eXo artifacts. Ensure the URL is correct and the profile is activated.
```xml
...
...
myprofile
eXo-pub-repo
eXoPlatform public repo
https://repository.exoplatform.org/public
...
myprofile
...
```
--------------------------------
### Import eXo Platform Dependencies in Maven
Source: https://docs.exoplatform.org/guide/developer-guide/getting-started
This example demonstrates how to import eXo Platform dependencies in your project's `pom.xml`. It uses a property to define the eXo Platform version, which is then used to import the versions of all related artifacts via a parent POM.
```xml
4.0.0
com.mycompany
my-project
1.0-SNAPSHOT
war
My project
6.3.0
org.exoplatform.social
social
${exoplatform.version}
pom
import
```
--------------------------------
### Launch eXo Platform with Docker Compose
Source: https://docs.exoplatform.org/guide/getting-started/start-community
Commands to start the eXo Platform environment using a Docker Compose file. Includes an option to set a custom virtual host domain name via environment variables.
```bash
docker-compose -f docker-compose.yml up
```
```bash
export EXO_PROXY_VHOST=exoapp2.local
docker-compose -f docker-compose.yml up
```
--------------------------------
### Install Nginx on Debian/Ubuntu
Source: https://docs.exoplatform.org/administration/security.html
Installs the Nginx web server on Debian or Ubuntu-based systems using the apt package manager. This is a prerequisite for configuring Nginx as a reverse proxy.
```bash
apt-get install nginx
```
--------------------------------
### Example Navigation Resource Bundle Content
Source: https://docs.exoplatform.org/guide/product-reference/Internationalization.html
This example shows the content of a properties file for a specific navigation resource bundle, in this case, for the 'organization.management.executive-board' group. It defines localized strings for UI elements.
```properties
organization.title=Organization
organization.newstaff=New Staff
organization.management=Management
```
--------------------------------
### Skip Account Setup Screen in eXo Platform
Source: https://docs.exoplatform.org/administration/configuration.html
Configures whether to skip the initial Account Setup and Greetings screens on the first startup. Set to 'true' to bypass these screens, which is useful when extensions declare sample users or when connecting to an existing user directory. Modify the 'exo.accountsetup.skip' property in the 'exo.properties' file.
```properties
exo.accountsetup.skip=true
```
--------------------------------
### List Installed Add-ons in Docker Container
Source: https://docs.exoplatform.org/administration/addons-management.html
Lists only the add-ons that are currently installed in a running eXo Platform Docker container. This is useful for checking the current state of installed features.
```bash
docker exec /opt/exo/addon list --installed
```
--------------------------------
### Monitor container logs and status
Source: https://docs.exoplatform.org/administration/addons-management.html
Commands to retrieve the container ID and follow the startup logs to verify the successful installation of add-ons.
```bash
docker ps -a
docker logs --follow
```
--------------------------------
### Build and Deploy Extension
Source: https://docs.exoplatform.org/guide/developer-guide/prepare-extension-project
Shell commands to build the extension using Maven and deploy the resulting WAR file to the eXo Platform webapps directory.
```bash
cd $EXO_HOME/sources/custom-extension
mvn deploy
cp $EXO_HOME/sources/custom-extension/webapp/target/custom-extension-webapp.war $EXO_HOME/webapps/custom-extension-webapp.war
```
--------------------------------
### Initialize Vue.js Application
Source: https://docs.exoplatform.org/guide/developer-guide/intermediate-integration/rest-service.html
Entry point script that loads internationalization resources and mounts the main Vue component to the DOM.
```javascript
import app from './components/birthdayAppMain.vue';
const lang = eXo && eXo.env && eXo.env.portal && eXo.env.portal.language || 'en';
const url = `${eXo.env.portal.context}/${eXo.env.portal.rest}/i18n/bundle/locale.portlet.birthdayApp-${lang}.json`;
exoi18n.loadLanguageAsync(lang, url).then(i18n => {
new Vue({
render: h => h(app),
i18n
}).$mount('#birthdayApp');
});
```
--------------------------------
### Build and Deploy Application via CLI
Source: https://docs.exoplatform.org/guide/developer-guide/intermediate-integration/rest-service.html
Standard shell commands to package the application using Maven, deploy the resulting WAR file to the eXo Platform webapps directory, and initiate the service using Docker Compose.
```bash
mvn clean package
cp webapp/target/my-connections-birthday-webapp.war $EXO_HOME/webapps
docker-compose -f docker-compose.yml up
```
--------------------------------
### Generate Keystore and Certificates using OpenSSL and Keytool
Source: https://docs.exoplatform.org/administration/saml-integration.html
This section covers the steps to create a private key and certificate using OpenSSL, export them into a PKCS12 file, and then import this into a JKS keystore using the `keytool` command. These commands are essential for setting up secure communication in SAML.
```shell
openssl req -newkey rsa:4096 -keyout private.key -x509 -days 365 -out certificate.crt
openssl pkcs12 -export -out certificate.p12 -inkey private.key -in certificate.crt
keytool -v -importkeystore -srckeystore certificate.p12 -srcstoretype PKCS12 -destkeystore secure-key.jks -deststoretype JKS
```
--------------------------------
### GET /v1/processes/workflows
Source: https://docs.exoplatform.org/guide/openapi/processes.html
Retrieves a list of all available workflows.
```APIDOC
## GET /v1/processes/workflows
### Description
Retrieves a list of all workflows.
### Method
GET
### Endpoint
/v1/processes/workflows
### Response
#### Success Response (200)
- **workflows** (array) - A list of workflow objects.
- Each object contains details of a workflow.
#### Response Example
```json
{
"workflows": [
{
"workflowId": "wf_1",
"name": "Approval Workflow",
"version": "1.0"
},
{
"workflowId": "wf_2",
"name": "Task Management Workflow",
"version": "2.1"
}
]
}
```
```
--------------------------------
### Configure System Hosts File
Source: https://docs.exoplatform.org/guide/getting-started/start-community
Configuration line to map the local loopback address to the eXo Platform domain name in the system hosts file.
```text
127.0.0.1 exoapp.local
```
--------------------------------
### GET /gamification/leaderboard
Source: https://docs.exoplatform.org/guide/openapi/gamification.html
Retrieves the leaderboard for users and spaces.
```APIDOC
## GET /gamification/leaderboard
### Description
Retrieve the list of leaderboard users or spaces, including the selected identity to retrieve its rank.
### Method
GET
### Endpoint
/gamification/leaderboard
### Response
#### Success Response (200)
- **rankings** (array) - List of ranked users or spaces.
```
--------------------------------
### GET /v1/processes/works/statuses
Source: https://docs.exoplatform.org/guide/openapi/processes.html
Retrieves the list of available work statuses.
```APIDOC
## GET /v1/processes/works/statuses
### Description
Retrieves a list of all possible statuses for work items.
### Method
GET
### Endpoint
/v1/processes/works/statuses
### Response
#### Success Response (200)
- **statuses** (array) - A list of status strings.
#### Response Example
```json
{
"statuses": [
"New",
"In Progress",
"Completed",
"Cancelled"
]
}
```
```
--------------------------------
### Secure MongoDB Authentication Setup
Source: https://docs.exoplatform.org/administration/security.html
Steps to secure a MongoDB instance for ExoPlatform, requiring user authentication. This involves creating an admin user, enabling authentication in the MongoDB configuration, creating a specific user for the application database, and configuring connection parameters.
```mongo
$ mongo
> use admin
> db.createUser({user: "admin", pwd: "admin", roles: [{role: "userAdminAnyDatabase", db: "admin"}]})
> exit
```
```ini
# mongodb.conf
# Your MongoDB host.
bind_ip = 192.168.1.81
# The default MongoDB port
port = 27017
# Turn on authentication
auth=true
```
```mongo
$ mongo -port 27017 -host 192.168.1.81 -u admin -p admin -authenticationDatabase admin
> use chat
> db.createUser({user: "exo", pwd: "exo", roles: [{role: "readWrite", db: "chat"}]})
> exit
```
```mongo
$ mongo -port 27017 -host 192.168.1.81 -u exo -p exo -authenticationDatabase chat
> use chat
> db.placeholder.insert({description: "test"})
> db.placeholder.find()
```
```properties
dbName=chat
dbServerHost=192.168.1.81
dbServerPort=27017
dbAuthentication=true
dbUser=exo
dbPassword=exo
```
--------------------------------
### GET /v1/processes/works
Source: https://docs.exoplatform.org/guide/openapi/processes.html
Retrieves a list of all available work items.
```APIDOC
## GET /v1/processes/works
### Description
Retrieves a list of all work items.
### Method
GET
### Endpoint
/v1/processes/works
### Response
#### Success Response (200)
- **works** (array) - A list of work item objects.
- Each object contains details of a work item.
#### Response Example
```json
{
"works": [
{
"workId": "work_1",
"title": "Task A",
"status": "In Progress"
},
{
"workId": "work_2",
"title": "Task B",
"status": "Completed"
}
]
}
```
```
--------------------------------
### GET /v1/processes/workflows/{workflowId}
Source: https://docs.exoplatform.org/guide/openapi/processes.html
Retrieves a specific workflow by its ID.
```APIDOC
## GET /v1/processes/workflows/{workflowId}
### Description
Retrieves a specific workflow by its unique identifier.
### Method
GET
### Endpoint
/v1/processes/workflows/{workflowId}
### Parameters
#### Path Parameters
- **workflowId** (string) - Required - The ID of the workflow to retrieve.
### Response
#### Success Response (200)
- **workflow** (object) - The workflow object containing its details.
#### Response Example
```json
{
"workflow": {
"workflowId": "wf_1",
"name": "Approval Workflow",
"version": "1.0",
"description": "Handles the approval process."
}
}
```
```
--------------------------------
### Build and Deploy Commands
Source: https://docs.exoplatform.org/guide/developer-guide/simple-integration/event-listeners.html
Shell commands to package the project using Maven, copy artifacts to the eXo home directory, and configure Docker volumes for deployment.
```bash
mvn package
cp services/target/sample-notification-services.jar $EXO_HOME/lib/sample-notification-services.jar
cp webapp/target/sample-notification-webapp.war $EXO_HOME/webapps
```
```yaml
volumes:
- exo_data:/srv/exo
- exo_logs:/var/log/exo
- $EXO_HOME/lib/sample-event-listeners.jar:/opt/exo/lib/sample-event-listeners.jar
- $EXO_HOME/webapps/event-listeners-webapp.war:/opt/exo/webapps/event-listeners-webapp.war
```
```bash
docker-compose -f /path/to/docker-compose.yml up
```
--------------------------------
### Main Configuration Entry Point (XML)
Source: https://docs.exoplatform.org/guide/developer-guide/intermediate-integration/front-end-application.html
The main configuration file for an eXo Platform extension. It uses the 'import' tag to load other configuration files, acting as the primary entry point for extension configurations.
```xml
war:/conf/custom-extension/bundle-configuration.xml
war:/conf/custom-extension/portal-configuration.xml
```
--------------------------------
### GET /v1/processes/workDrafts
Source: https://docs.exoplatform.org/guide/openapi/processes.html
Retrieves a list of all available work drafts.
```APIDOC
## GET /v1/processes/workDrafts
### Description
Retrieves a list of all work drafts.
### Method
GET
### Endpoint
/v1/processes/workDrafts
### Response
#### Success Response (200)
- **workDrafts** (array) - A list of work draft objects.
- Each object contains details of a work draft.
#### Response Example
```json
{
"workDrafts": [
{
"draftId": "draft_1",
"title": "Draft One",
"createdAt": "2023-10-27T10:00:00Z"
},
{
"draftId": "draft_2",
"title": "Draft Two",
"createdAt": "2023-10-27T11:00:00Z"
}
]
}
```
```
--------------------------------
### GET /v1/processes/permissions
Source: https://docs.exoplatform.org/guide/openapi/processes.html
Checks if the current user is a processes manager.
```APIDOC
## GET /v1/processes/permissions
### Description
Checks if the current user has manager permissions for processes.
### Method
GET
### Endpoint
/v1/processes/permissions
### Response
#### Success Response (200)
- **isManager** (boolean) - True if the current user is a processes manager, false otherwise.
#### Response Example
```json
{
"isManager": true
}
```
```
--------------------------------
### Build and Deploy Notification Modules
Source: https://docs.exoplatform.org/guide/developer-guide/simple-integration/notification.html
Commands to compile the notification service and webapp modules using Maven and copy the resulting artifacts to the eXo Platform installation directories.
```bash
cd $EXO_HOME/sources/sample-notification
mvn clean package
cp services/target/sample-notification-services.jar $EXO_HOME/lib/
cp webapp/target/sample-notification-webapp.war $EXO_HOME/webapps/
```
--------------------------------
### List Available Add-ons in Docker Container
Source: https://docs.exoplatform.org/administration/addons-management.html
Lists all available add-ons for eXo Platform within a running Docker container. This command helps discover potential add-ons that can be installed.
```bash
docker exec /opt/exo/addon list
```
--------------------------------
### Start eXo Platform in Debug and Dev Modes (Shell)
Source: https://docs.exoplatform.org/guide/developer-guide/miscellaneous/debug-dev-mode.html
This command starts the eXo Platform with both Debug and Dev modes enabled. These modes are not recommended for production due to performance impacts and are primarily for development and debugging.
```shell
./start_eXo.sh --dev --debug
```
--------------------------------
### Build and Deploy Extension
Source: https://docs.exoplatform.org/guide/developer-guide/intermediate-integration/rest-service.html
Shell commands to build the project using Maven and deploy the resulting artifacts to the eXo Platform server directories.
```bash
cd $EXO_HOME/sources/my-connections-birthdays-extension
mvn clean install
cp services/target/my-connections-birthday-services.jar $EXO_HOME/lib
cp webapp/target/my-connections-birthday-webapp.war $EXO_HOME/webapps
```
--------------------------------
### Build and Package Activity Extension with Maven
Source: https://docs.exoplatform.org/guide/developer-guide/simple-integration/activity-type.html
This command sequence builds the activity extension using Maven. It first cleans the project and then packages it into a WAR file. This WAR file contains all the necessary compiled code and resources for the extension.
```bash
cd $EXO_HOME/sources/docs-sample/activity-extensions
mvn clean package
```
--------------------------------
### GET /v1/processes/works/{workId}
Source: https://docs.exoplatform.org/guide/openapi/processes.html
Retrieves a specific work item by its ID.
```APIDOC
## GET /v1/processes/works/{workId}
### Description
Retrieves a specific work item by its unique identifier.
### Method
GET
### Endpoint
/v1/processes/works/{workId}
### Parameters
#### Path Parameters
- **workId** (string) - Required - The ID of the work item to retrieve.
### Response
#### Success Response (200)
- **work** (object) - The work item object containing its details.
#### Response Example
```json
{
"work": {
"workId": "work_1",
"title": "Task A",
"description": "Details for Task A.",
"status": "In Progress",
"createdAt": "2023-10-27T10:00:00Z"
}
}
```
```
--------------------------------
### GET /v1/processes/illustration/{workflowId}
Source: https://docs.exoplatform.org/guide/openapi/processes.html
Retrieves a workflow illustration image by its ID.
```APIDOC
## GET /v1/processes/illustration/{workflowId}
### Description
Gets a workflow illustration image by its ID.
### Method
GET
### Endpoint
/v1/processes/illustration/{workflowId}
### Parameters
#### Path Parameters
- **workflowId** (string) - Required - The ID of the workflow to get the illustration for.
### Response
#### Success Response (200)
- **image** (string) - The image data of the workflow illustration (e.g., base64 encoded).
- **contentType** (string) - The content type of the image (e.g., image/png).
#### Response Example
```json
{
"image": "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=",
"contentType": "image/png"
}
```
```
--------------------------------
### Initialize VueJS Application with i18n in eXo Platform
Source: https://docs.exoplatform.org/guide/developer-guide/intermediate-integration/front-end-application.html
This script initializes the VueJS application by fetching internationalization bundles asynchronously from the eXo portal environment. It ensures the application is mounted only after the locale resources are successfully loaded.
```javascript
import app from './components/app.vue';
const lang = eXo && eXo.env && eXo.env.portal && eXo.env.portal.language || 'en';
const resourceBundleName = 'locale.addon.Sample';
const url = `${eXo.env.portal.context}/${eXo.env.portal.rest}/i18n/bundle/${resourceBundleName}-${lang}.json`;
exoi18n.loadLanguageAsync(lang, url)
.then(i18n => {
new Vue({
render: h => h(app),
i18n
}).$mount('#vue_webpack_sample');
});
```
--------------------------------
### GET /v1/platform/branding
Source: https://docs.exoplatform.org/guide/openapi/poll
Endpoints for retrieving and updating platform branding assets.
```APIDOC
## GET /v1/platform/branding
### Description
Retrieves the current branding information for the platform.
### Method
GET
### Endpoint
/v1/platform/branding
### Response
#### Success Response (200)
- **branding** (object) - Branding configuration details
```
--------------------------------
### GET /v1/groups
Source: https://docs.exoplatform.org/guide/openapi/poll
Endpoints for managing platform groups and their associated memberships.
```APIDOC
## GET /v1/groups
### Description
Retrieves the list of groups available in the platform.
### Method
GET
### Endpoint
/v1/groups
### Response
#### Success Response (200)
- **groups** (array) - List of group objects
```
--------------------------------
### Build and Deploy Vue Portlet Application
Source: https://docs.exoplatform.org/guide/developer-guide/intermediate-integration/front-end-application.html
Commands to build the Vue portlet using Maven and deploy the resulting WAR file to the eXo Platform webapps directory.
```bash
cd docs-samples/portlet/vue-portlet-webpack
mvn clean package
cp target/vue-portlet-webpack.war $EXO_HOME/webapps/
```
--------------------------------
### GET /onlyoffice/editor/api/version
Source: https://docs.exoplatform.org/guide/openapi/onlyoffice
Retrieves the current version of the OnlyOffice integration API.
```APIDOC
## GET /onlyoffice/editor/api/version
### Description
Returns the version number of the OnlyOffice addon API.
### Method
GET
### Endpoint
/onlyoffice/editor/api/version
### Response
#### Success Response (200)
- **version** (string) - The API version string.
#### Response Example
{
"version": "1.0"
}
```
--------------------------------
### Resource Bundle Properties File (Sample_en.properties)
Source: https://docs.exoplatform.org/guide/developer-guide/intermediate-integration/front-end-application.html
A sample resource bundle file for English. It contains key-value pairs that provide text translations for internationalization within the ExoPlatform site.
```properties
# Sample resource bundle file for English
# Key-value pairs for text translations
# Example:
# locale.addon.Sample.someKey=Some Value
```
--------------------------------
### GET /gamification/realizations
Source: https://docs.exoplatform.org/guide/openapi/gamification.html
Retrieves the list of achievements for users with optional filtering.
```APIDOC
## GET /gamification/realizations
### Description
Retrieves the list of achievements with a filter. The returned format can be of type JSON or XLSX.
### Method
GET
### Endpoint
/gamification/realizations
### Query Parameters
- **filter** (string) - Optional - Filter criteria for achievements.
- **format** (string) - Optional - Desired output format (JSON or XLSX).
### Response
#### Success Response (200)
- **realizations** (array) - List of user achievements.
```
--------------------------------
### GET /otp/verify
Source: https://docs.exoplatform.org/guide/openapi/multifactor-authentication.html
Verifies the provided OTP token for the current user.
```APIDOC
## GET /otp/verify
### Description
Verify the provided OTP token.
### Method
GET
### Endpoint
/otp/verify
### Parameters
#### Query Parameters
- **token** (string) - Required - The OTP token to verify.
### Response
#### Success Response (200)
- **valid** (boolean) - Whether the token is valid.
#### Response Example
{
"valid": true
}
```
--------------------------------
### eXo Platform Resource Configuration (XML)
Source: https://docs.exoplatform.org/guide/developer-guide/intermediate-integration/front-end-application.html
Configures static resources like CSS and JavaScript for a specific portlet within the eXo Platform. It links CSS files and JavaScript bundles to a portlet, specifying their paths and any module dependencies. This allows eXo Platform to load and manage these resources correctly for the associated portlet.
```xml
vue-webpack-sample
vueWebpackSample
Enterprise
/css/sample.css
vueWebpackSample
vue
eXoVueI18n
```