diff --git a/.github/workflows/tooljet-docker-develop-build.yml b/.github/workflows/tooljet-docker-develop-build.yml
index 3a8ec9349b..f033866d9f 100644
--- a/.github/workflows/tooljet-docker-develop-build.yml
+++ b/.github/workflows/tooljet-docker-develop-build.yml
@@ -65,6 +65,7 @@ jobs:
curl -X POST -H 'Content-type: application/json' --data "{\"text\":\"$message\"}" ${{ secrets.SLACK_WEBHOOK_URL_OPS_CHANNEL }}
+
tooljet-server-develop-image:
runs-on: ubuntu-latest
if: |
@@ -109,9 +110,9 @@ jobs:
env:
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
-
+
- name: Send Slack Notification on Failure
if: failure()
run: |
- message="Job '${{ env.JOB_NAME }}' failed! tooljet/tooljet-ce:develop"
- curl -X POST -H 'Content-type: application/json' --data "{\"text\":\"$message\"}" ${{ secrets.SLACK_WEBHOOK_URL_OPS_CHANNEL }}
\ No newline at end of file
+ message="Job '${{ env.JOB_NAME }}' failed! tooljet/tooljet-server-ce:develop"
+ curl -X POST -H 'Content-type: application/json' --data "{\"text\":\"$message\"}" ${{ secrets.SLACK_WEBHOOK_URL_OPS_CHANNEL }}
diff --git a/.github/workflows/tooljet-release-docker-image-build.yml b/.github/workflows/tooljet-release-docker-image-build.yml
index 0db2067d9e..a0b2edc425 100644
--- a/.github/workflows/tooljet-release-docker-image-build.yml
+++ b/.github/workflows/tooljet-release-docker-image-build.yml
@@ -7,8 +7,8 @@ on:
workflow_dispatch:
inputs:
job-to-run:
- description: Enter the job name (tooljet-ce)
- options: ["tooljet-ce"]
+ description: Enter the job name (tooljet-ce/tooljet-server-ce)
+ options: ["tooljet-ce", "tooljet-server-ce"]
required: true
image:
description: "Enter the latest image tag"
@@ -121,3 +121,57 @@ jobs:
fi
curl -X POST -H 'Content-type: application/json' --data "{\"text\":\"$message\"}" ${{ secrets.SLACK_WEBHOOK_URL }}
+
+ tooljet-server-ce:
+ runs-on: ubuntu-latest
+ if: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.job-to-run == 'tooljet-server-ce' }}
+
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v2
+ with:
+ ref: refs/heads/main
+
+ # Create Docker Buildx builder with platform configuration
+ - name: Set up Docker Buildx
+ run: |
+ mkdir -p ~/.docker/cli-plugins
+ curl -SL https://github.com/docker/buildx/releases/download/v0.11.0/buildx-v0.11.0.linux-amd64 -o ~/.docker/cli-plugins/docker-buildx
+ chmod a+x ~/.docker/cli-plugins/docker-buildx
+ docker buildx create --name mybuilder --platform linux/arm64,linux/amd64,linux/amd64/v2,linux/riscv64,linux/ppc64le,linux/s390x,linux/386,linux/mips64le,linux/mips64,linux/arm/v7,linux/arm/v6
+ docker buildx use mybuilder
+
+ - name: Set DOCKER_CLI_EXPERIMENTAL
+ run: echo "DOCKER_CLI_EXPERIMENTAL=enabled" >> $GITHUB_ENV
+
+ - name: use mybuilder buildx
+ run: docker buildx use mybuilder
+
+ - name: Docker Login
+ uses: docker/login-action@v2
+ with:
+ username: ${{ secrets.DOCKER_USERNAME }}
+ password: ${{ secrets.DOCKER_PASSWORD }}
+
+ - name: Build and Push Docker image
+ uses: docker/build-push-action@v4
+ with:
+ context: .
+ file: docker/server.Dockerfile
+ push: true
+ tags: tooljet/tooljet-server-ce:${{ github.event.inputs.image }},tooljet/tooljet-server-ce:latest
+ platforms: linux/amd64
+ env:
+ DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
+ DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
+
+ - name: Send Slack Notification
+ run: |
+ if [[ "${{ job.status }}" == "success" ]]; then
+ message="Job '${{ env.JOB_NAME }}' succeeded! tooljet/tooljet-server-ce:${{ github.event.release.tag_name }}"
+ else
+ message="Job '${{ env.JOB_NAME }}' failed! tooljet/tooljet-server-ce:${{ github.event.release.tag_name }}"
+ fi
+
+ curl -X POST -H 'Content-type: application/json' --data "{\"text\":\"$message\"}" ${{ secrets.SLACK_WEBHOOK_URL }}
+ curl -X POST -H 'Content-type: application/json' --data "{\"text\":\"$message\"}" ${{ secrets.SLACK_WEBHOOK_URL }}
diff --git a/.version b/.version
index b8e248f40b..17bdb70fa8 100644
--- a/.version
+++ b/.version
@@ -1 +1 @@
-2.19.1
+2.19.2
diff --git a/cypress-tests/cypress/e2e/editor/inspectorHappypath.cy.js b/cypress-tests/cypress/e2e/editor/inspectorHappypath.cy.js
index c518a1ea40..f821183964 100644
--- a/cypress-tests/cypress/e2e/editor/inspectorHappypath.cy.js
+++ b/cypress-tests/cypress/e2e/editor/inspectorHappypath.cy.js
@@ -129,7 +129,7 @@ describe("Editor- Inspector", () => {
verifyValue("key", "String", `"value"`);
cy.get(`[data-cy="inspector-node-key"] > .mx-1`).realHover();
- cy.get("[data-cy='copy-icon']").realClick();
+ cy.get('[data-cy="copy-path-to-clipboard"]').realClick();
cy.realPress("Escape");
cy.window().then((win) => {
@@ -138,10 +138,8 @@ describe("Editor- Inspector", () => {
});
});
- cy.get(".action-icons-group > .d-flex > :nth-child(2)").click();
- cy.get(".list-group-item").click();
+ cy.get('[data-cy="copy-value-to-clicpboard"]').realClick();
cy.realPress("Escape");
-
cy.window().then((win) => {
win.navigator.clipboard.readText().then((text) => {
expect(text).to.eq(`"value"`);
diff --git a/cypress-tests/cypress/e2e/editor/widget/csa.cy.js b/cypress-tests/cypress/e2e/editor/widget/csa.cy.js
index 2d4c34f2ac..95a385d5bf 100644
--- a/cypress-tests/cypress/e2e/editor/widget/csa.cy.js
+++ b/cypress-tests/cypress/e2e/editor/widget/csa.cy.js
@@ -153,7 +153,7 @@ describe("Editor- CSA", () => {
cy.get(commonWidgetSelector.draggableWidget("button1")).click();
cy.get(`${commonWidgetSelector.draggableWidget("filepicker1")} p`).should(
"have.text",
- "Drag and Drop some files here, or click to select files"
+ "Drag and drop files here or click to select files"
);
});
diff --git a/cypress-tests/cypress/e2e/workspace/dashboard.cy.js b/cypress-tests/cypress/e2e/workspace/dashboard.cy.js
index 8ac3e7bae4..3a9274b1a7 100644
--- a/cypress-tests/cypress/e2e/workspace/dashboard.cy.js
+++ b/cypress-tests/cypress/e2e/workspace/dashboard.cy.js
@@ -284,7 +284,7 @@ describe("dashboard", () => {
commonSelectors.toastMessage,
dashboardText.appClonedToast
);
- cy.waitForAppLoad();
+ // cy.waitForAppLoad();
cy.wait(2000);
cy.clearAndType(commonSelectors.appNameInput, data.cloneAppName);
cy.dragAndDropWidget("button", 25, 25);
diff --git a/docs/docs/Enterprise/superadmin.md b/docs/docs/Enterprise/superadmin.md
index 5a290c00cb..b8fe31f689 100644
--- a/docs/docs/Enterprise/superadmin.md
+++ b/docs/docs/Enterprise/superadmin.md
@@ -17,18 +17,21 @@ The user details entered while setting up ToolJet will have Super Admin privileg
| Manage Groups in their workspace (Create Group/Add or Delete Users from groups/ Modify Group Permissions) | ✅ | ✅ |
| Manage SSO in their workspace | ✅ | ✅ |
| Manage Workspace Variables in their workspace | ✅ | ✅ |
-| [Manage Global datasources for the user group in their workspace](/docs/data-sources/overview#permissions) | ✅ | ✅ |
+| Manage Workspace Constants in their workspace | ✅ | ✅ |
+| [Manage data sources for the user group in their workspace](/docs/data-sources/overview#permissions) | ✅ | ✅ |
| [Access any user's personal workspace (create, edit or delete apps)](#access-any-workspace) | ❌ | ✅ |
| [Archive Admin or any user of any workspace](#archiveunarchive-users) | ❌ | ✅ |
| [Access any user's ToolJet database (create, edit or delete database)](#access-tooljet-db-in-any-workspace) | ❌ | ✅ |
-| [Manage any workspace's setting (Groups/SSO/Workspace Variables)](#manage-workspace-setting-groupsssoworkspace-variables) | ❌ | ✅ |
-| [Manage all users from all the workspaces in the instance](#checking-all-the-users-in-the-instance) | ❌ | ✅ |
+| [Manage any workspace's setting (Groups/SSO/Workspace constants)](#manage-workspace-setting-groupsssoworkspace-constants) | ❌ | ✅ |
+| [Manage all users from all the workspaces in the instance](#manage-all-users-in-the-instance) | ❌ | ✅ |
| [Make any user Super Admin](#make-the-user-super-admin) | ❌ | ✅ |
| [Restrict creation of personal workspace of users](#restrict-creation-of-personal-workspace-of-users) | ❌ | ✅ |
+| [Enable Multiplayer editing](#enable-multiplayer-editing) | ❌ | ✅ |
+| [Implement White Labelling](#white-labelling) | ❌ | ✅ |
-
+
@@ -36,17 +39,17 @@ The user details entered while setting up ToolJet will have Super Admin privileg
### Access any workspace
-If a user is a Super Admin then they can switch to any workspace created by any user in the instance from the dropdown on the top-left of dashboard that is used to switch between workspaces.
+If a user has Super Admin privileges, they can switch to any workspace created by any user within the instance using the Workspace Switcher located in the bottom left corner of the screen.
-The dropdown will list all the workspaces including workspaces created by the Super Admin or Any User.
+The dropdown will display all workspaces, including those created by both Super Admins and any other users.
-
+
-### Create Edit or Delete apps from any user's personal workspace
+### Create, Edit or Delete apps from any user's personal workspace
Once the Super Admin accesses the workspace of any other user, they can create, edit or delete app on the workspace.
@@ -60,7 +63,7 @@ If a user is Super Admin, they just need to open the workspace in which they wan
-
+
@@ -68,39 +71,46 @@ If a user is Super Admin, they just need to open the workspace in which they wan
Super Admins have access to the database of any user's workspace - just like Super Admins can access any application in any workspace. They have full access to modify or create any table in the ToolJet DB of any workspace.
-### Manage Workspace Settings (Groups/SSO/Workspace Variables)
+### Manage Workspace Settings (Groups/SSO/Workspace constants)
Super Admins have all the privileges that an Admin of a workspace have, Super Admins can:
- **✅ Manage Groups**: Creating/Deleting/Updating a Group in any workspace
- **✅ Manage SSO**: Full control over General Settings, Password login and other SSO options
- **✅ Workspace Variables**: Adding, updating or deleting workspace variables
+- **✅ Workspace Constants**: Adding, updating or deleting workspace constants
+- **✅ Copilot**: Enabling or disabling Copilot
+- **✅ Custom Styles**: Adding or modifying custom styles
## Instance Settings
Only Super Admins can access the Instance Settings:
-- **Manage All Users**
+- **All Users**
- **Manage Instance Settings**
+- **License**
+- **White labelling**
-### Checking all the users in the instance
+## All Users
-**Manage All Users** can be used to check all the users that are there - altogether from all the workspaces in an instance.
+### Manage all users in the instance
+
+**All Users** page can be used to check the list of all the users in the instance. Super Admins can also promote/demote any user to/from Super Admin from this page. They can also archive/unarchive any user from this page.
-
+
### Archiving a user from workspace
-Super Admins have the privilege to remove any user from any of the workspace they belong.
+Super Admins have the privilege to remove any user from any workspace to which they belong.
-Super Admins can go to **Manage All Users** page, Under the **Workspaces** column they'll see the number of workspaces a user belongs to. Click on the **`View(n)`**, a modal will pop up that will have the list of **`n`** number the workspaces, click on the **Archive/Unarchive** button next to the workspace name to remove the user from the workspace.
+Super Admins can go to **All Users** page, Under the **Workspaces** column they'll see the number of workspaces a user belongs to. Click on the **`View(n)`**, a modal will pop up that will have the list of **`n`** number the workspaces, click on the **Archive/Unarchive** button next to the workspace name to remove the user from the workspace.
-
+
@@ -114,7 +124,15 @@ The user will become Super Admin and the Type column will update from **`workspa
-
+
+
+
+
+## Manage Instance Settings
+
+
+
+
@@ -124,8 +142,17 @@ When a user joins a workspace, they are provided with their own personal workspa
Super Admins can **control** this behavior from the Manage Instance Settings page, they can **toggle off** the option to **Allow personal workspace**. Now whenever a user joins a workspace they won't be provided a personal workspace nor they will be able to create a new workspace in the instance.
-
+### Enable multiplayer editing
-
+Super Admins can enable multiplayer editing from the Manage Instance Settings page. Once enabled, users will be able to edit the same app simultaneously resulting in real-time collaboration.
-
+## License
+
+Manage the instance license via the **Instance Settings** page. Super Admins have the capability to update the instance's license key from this page.
+
+Check out the [License](/docs/licensing) page for more details.
+
+## White labelling
+This feature allows you to customize the ToolJet instance with your own branding. You can change the logo, favicon, and the name of the instance.
+
+Check out the [White labelling](/docs/enterprise/white-label/) page for more details.
\ No newline at end of file
diff --git a/docs/docs/Enterprise/white-label.md b/docs/docs/Enterprise/white-label.md
index 1faba00070..2f91cf349a 100644
--- a/docs/docs/Enterprise/white-label.md
+++ b/docs/docs/Enterprise/white-label.md
@@ -5,35 +5,44 @@ title: White Label
Available on: Paid plans
-White Label feature will allow you to remove the ToolJet branding from the ToolJet platform and add your own custom logo and text.
+The White Label feature allows you to completely remove ToolJet's branding from the ToolJet platform, allowing you to replace it with your own customized logo, favicon and page title. This feature grants you full control over the visual identity of your ToolJet-powered application, ensuring a seamless and personalized user experience.
-This feature allows you to rebrand the following:
-- **App logo** (Logo on login screen, dashboard, and app-editor)
-
+With this feature, you gain the ability to rebrand the following key elements:
-
+- **Application Logo**: This includes the logo displayed on the login screen, dashboard, and app-editor.
-
+
-
+
-
+
-
+- **Favicon**: The small icon associated with your application.
-- **Favicon**
+
-- **Page Title** (next to Favicon)
-
+
-
+
-
+- **Page Title**: This is the text displayed next to the Favicon.
+
+
+
+
+
+
## Configuration
-To enable white labelling, you'll need to set the below mentioned **environment variables** in the .env file:
+To enable white labelling, you'll need to go to the **Instance Settings** from the Dashboard and click on the `White labelling` tab. On the White labelling page, you'll be able to configure the following:
-- `WHITE_LABEL_LOGO`: URL of the logo. Preferred dimensions of the logo are: width 130px and height 26px
-- `WHITE_LABEL_TEXT`: The text that you want to display as Page Title
-- `WHITE_LABEL_FAVICON`: URL of the favicon. Preferred dimensions of the logo are: 16x16px or 32x32px
\ No newline at end of file
+- **Application Logo**: Add the URL of the image you want to use as your application logo. Preferred dimensions of the logo are: width `130px` and height `26px`.
+- **Favicon**: Enter the URL of the image you want to use as your application's favicon. Preferred dimensions of the favicon are: width `32px` and height `32px` or `16px` and height `16px`.
+- **Page Title**: Enter the text you want to display as your application's title. Preferred title length are 50-60 characters.
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/docs/copilot.md b/docs/docs/copilot.md
index 442b26f348..8400b47241 100644
--- a/docs/docs/copilot.md
+++ b/docs/docs/copilot.md
@@ -6,7 +6,7 @@ title: Copilot
Available on: Paid plans
:::info BETA
-ToolJet Copilot is currently in private beta for **Business** and **Enterprise** users only. It is not yet available for ToolJet Community Edition, but we plan to make it accessible in the future.
+ToolJet Copilot is currently in private beta for **Business** and **Enterprise** users only.
:::
**ToolJet Copilot** helps you write your queries faster. It uses OpenAI to suggest queries based on your data.
diff --git a/docs/docs/data-sources/overview.md b/docs/docs/data-sources/overview.md
index 68f4fd9b02..26b25c3701 100644
--- a/docs/docs/data-sources/overview.md
+++ b/docs/docs/data-sources/overview.md
@@ -3,26 +3,26 @@ id: overview
title: Overview
---
-# Global Datasources : Overview
+# Data Sources : Overview
-Global data sources pull in and push data to any source including databases, external APIs, or services. Once a data source is connected to a workspace, the connection can be shared with any app of that workspace.
+Data Sources pull in and push data to any source including databases, external APIs, or services. Once a data source is connected to a workspace, the connection can be shared with any app of that workspace.
:::caution
-Global data sources are available only on **ToolJet version 2.3.0 and above**.
+Data Source page is available only on **ToolJet version 2.3.0 and above**.
:::
-
+
-## Connecting global data sources
+## Connecting data sources
1. **Create a new app** from the dashboard, and Click on the **+ Add new** button from the query panel.
-
+
@@ -30,7 +30,7 @@ Global data sources are available only on **ToolJet version 2.3.0 and above**.
-
+
@@ -38,7 +38,7 @@ Global data sources are available only on **ToolJet version 2.3.0 and above**.
-
+
@@ -48,7 +48,7 @@ Global data sources are available only on **ToolJet version 2.3.0 and above**.
-
+
@@ -56,7 +56,7 @@ Global data sources are available only on **ToolJet version 2.3.0 and above**.
-
+
@@ -64,7 +64,7 @@ Global data sources are available only on **ToolJet version 2.3.0 and above**.
-
+
@@ -78,7 +78,7 @@ By default, 4 data sources will be available on every app on ToolJet:
-
+
@@ -101,7 +101,7 @@ To configure these permissions, navigate to **Workspace Settings** -> **Groups S
-
+
@@ -116,7 +116,7 @@ To configure these permissions, navigate to **Workspace Settings** -> **Groups S
-
+
@@ -129,14 +129,14 @@ On ToolJet versions below 2.3.0, the data source connection was made from within
1. When dealing with apps that were created using ToolJet versions prior to 2.3.0, you will notice the presence of the data source manager in the left sidebar of the App Builder.
-
+
2. To change the scope, locate the kebab menu situated next to the connected data source. From this menu, select the **change scope** option.
-
+
@@ -145,6 +145,6 @@ On ToolJet versions below 2.3.0, the data source connection was made from within
-
+
\ No newline at end of file
diff --git a/docs/docs/data-sources/restapi.md b/docs/docs/data-sources/restapi.md
index 181615d057..ab4cbc3194 100644
--- a/docs/docs/data-sources/restapi.md
+++ b/docs/docs/data-sources/restapi.md
@@ -7,7 +7,7 @@ ToolJet can establish a connection with any available REST API endpoint and crea
## Connection
-To establish a connection with the REST API global datasource, you can either click on the `Add new global datasource` button located on the query panel or navigate to the **[Global Datasources](/docs/data-sources/overview)** page through the ToolJet dashboard.
+To establish a connection with the REST API data source, you can either click on the `Add new` button located on the query panel or navigate to the **[Data Sources](/docs/data-sources/overview)** page through the ToolJet dashboard.
@@ -15,7 +15,7 @@ To establish a connection with the REST API global datasource, you can either cl
-**ToolJet requires the following to connect to a REST API datasource:**
+**ToolJet requires the following to connect to a REST API data source:**
- __Base URL__: REST API endpoint URL
- __Headers__: Key-value pairs to include as headers with REST API requests.
@@ -33,29 +33,18 @@ To establish a connection with the REST API global datasource, you can either cl
-:::info
-REST HTTP methods that are supported are **GET, POST, PUT, PATCH & DELETE**.
-:::
-
-
-
-
-
-
-
## Querying REST API
-Once you have connected to the REST API datasource, follow these steps to write queries and interact with a REST API in the ToolJet application:
-
+Once you have connected to the REST API data source, follow these steps to write queries and interact with a REST API in the ToolJet application:
1. Open the ToolJet application and navigate to the query panel at the bottom of the app builder.
-2. Click the `+Add` button to open the list of available `local` and `global datasources`.
-3. Select **REST API** from the global datasource section.
+2. Click the `+Add` button to open the list of available `Data Sources`.
+3. Select **REST API** from the Data Source section.
4. Enter the required query parameters.
5. Click `Preview` to view the data returned from the query or click `Run` to execute the query.
:::tip
-Query results can be transformed using Transformation. For more information on transformations, please refer to our documentation at **[link](/docs/tutorial/transformations)**.
+Query results can be transformed using the **[Transformations](/docs/how-to/transformations)** feature.
:::
@@ -64,6 +53,16 @@ Query results can be transformed using Transformation. For more information on t
+
+
+ToolJet supports the REST HTTP methods **GET**, **POST**, **PUT**, **PATCH**, and **DELETE**. You can select the method from the dropdown menu.
+
+
+
+
+
+
+
## Response types
REST APIs can return data in a variety of formats, including **JSON** and **Base64**. JSON is a common format used for data exchange in REST APIs, while Base64 is often used for encoding binary data, such as images or video, within a JSON response.
@@ -152,4 +151,114 @@ Read the guide on **[loading base64 data](/docs/how-to/loading-image-pdf-from-db
-
\ No newline at end of file
+
+
+## OAuth 2.0 method for authenticating REST APIs
+
+ToolJet’s REST API data source supports OAuth 2.0 as the authentication type.
+
+Before setting up the REST API data source in ToolJet, we need to configure the **Google Cloud Platform** to gather the API keys required for the authorization access.
+
+### Setting up Google Cloud Platform
+
+Google Cloud Platform provides access to more than 350 APIs and Services that can allow us to access data from our Google account and its services. Let's create an OAuth application that can be given permission to use our Google profile data such as Name and Profile picture.
+
+1. Sign in to your [Google Cloud](https://cloud.google.com/) account, and from the console create a New Project.
+2. Navigate to the **APIs and Services**, and then open the **OAuth consent screen** section from the left sidebar.
+3. Enter the Application details and select the appropriate scopes for your application. We will select the profile and the email scopes.
+4. Once you have created the OAuth consent screen, Create new credentials for the **OAuth client ID** from the **Credentials** section in the left sidebar.
+5. Select the application type, enter the application name, and then add the following URIs under Authorised Redirect URIs:
+ 1. `https://app.tooljet.com/oauth2/authorize` (if you’re using ToolJet cloud)
+ 2. `http://localhost:8082/oauth2/authorize` (if you’re using ToolJet locally)
+6. Now save and then you’ll get the **Client ID and Client secret** for your application.
+
+
+
+### Configuring ToolJet Application with Google's OAuth 2.0 API
+
+Let's follow the steps to authorize ToolJet to access your Google profile data:
+
+- Go to the **Data Sources** page from the ToolJet dashboard, select API category on sidebar and choose the **REST API** data source.
+
+ :::info
+ You can rename the data source by clicking on its default name `restapi`
+ :::
+
+- In the **Base URL** field, enter the base URL `https://www.googleapis.com/oauth2/v1/userinfo`; the base URL specifies the network address of the API service.
+- Select **Authentication** type as `OAuth 2.0`
+- Keep the default values for **Grant Type**, **Add Access Token To**, and **Header Prefix** i.e. `Authorization Code`, `Request Header`, and `Bearer` respectively.
+- Enter **Access Token URL**: `https://oauth2.googleapis.com/token`; this token allows users to verify their identity, and in return, receive a unique access token.
+- Enter the **Client ID** and **Client Secret** that we generated from the [Google Console](http://console.developers.google.com/).
+- In the **Scope** field, enter `https://www.googleapis.com/auth/userinfo.profile`; Scope is a mechanism in OAuth 2.0 to limit an application's access to a user's account. Check the scopes available for [Google OAuth2 API here](https://developers.google.com/identity/protocols/oauth2/scopes#oauth2).
+- Enter **Authorization URL:** `https://accounts.google.com/o/oauth2/v2/auth`; the Authorization URL requests authorization from the user and redirects to retrieve an authorization code from identity server.
+- Create three **Custom Authentication Parameters:**
+
+ | Params | Description |
+ |:----------- |:----------- |
+ | response_type | code ( `code` refers to the Authorization Code) |
+ | client_id | **Client ID** |
+ | redirect_uri | `http://localhost:8082/oauth2/authorize` if using ToolJet locally or enter this `https://app.tooljet.com/oauth2/authorize` if using ToolJet Cloud. |
+
+- Keep the default selection for **Client Authentication** and **Save** the data source.
+
+
+
+### Authenticating REST API
+
+Let’s create a query to make a `GET` request to the URL, it will pop a new window and ask the user to authenticate against the API.
+
+- Add a new query and select the REST API data source from the dropdown
+- In the **Method** dropdown select `GET` and enabe the `Run query on application load?`
+- Run the query.
+- A new window will pop for authentication and once auth is successful, you can run the query again to get the user data like Name and Profile Picture.
+
+## Bearer Token method for authenticating REST APIs
+
+ToolJet’s REST API data source supports Bearer Token as the authentication type. Bearer Token is a security token that is issued by the authentication server to the client. The client then uses the token to access the protected resources hosted by the resource server.
+
+### Configuring REST API data source with Bearer Token
+
+- Go to the **Data Sources** page from the ToolJet dashboard, select **API** category on sidebar and choose the **REST API** data source.
+
+ :::info
+ You can rename the data source by clicking on its default name `restapi`
+ :::
+
+- In the **Base URL** field, enter the base URL. The base URL specifies the network address of the API service. For example, `http://localhost:3001/api/bearer-auth`
+- Enter the **Headers** if required. Headers are key-value pairs to include as headers with REST API requests.
+- Select **Authentication** type as `Bearer` from the dropdown.
+- Enter the **Token** in the field. The token is a security token that is issued by the authentication server to the client. The client then uses the token to access the protected resources hosted by the resource server.
+
+
+
+
+
+
+- Now you have option to select the **SSL Certificate** if required. SSL certificate is used to verify the server certificate. By default, it is set to `None`. You can provide the **CA Certificate** or **Client Certificate** from the dropdown.
+ - **CA Certificate**: Requires a CA certificate to verify the server certificate. Copy the content of `server.crt` file and paste it in the **CA Cert** field. `server.crt` file is the certificate file that is used to verify the server certificate.
+
+
+
+
+
+
+
+ - **Client Certificate**: Requires a client certificate to authenticate with the server. `client.key`, `client.crt`, and `server.crt` files are the certificate files that are used to authenticate with the server. Copy the content of `client.key` file and paste it in the **Client Key** field. Copy the content of `client.crt` file and paste it in the **Client Cert** field. Copy the content of `server.crt` file and paste it in the **CA Cert** field.
+
+
+
+
+
+
+
+- Once you have configured the REST API data source, click on the **Save** button.
+
+### Authenticating REST API
+
+Create a query to make a `GET` request to the URL, and it will return a success message if the token is valid.
+
+
+
+
+
+
diff --git a/docs/docs/data-sources/s3.md b/docs/docs/data-sources/s3.md
index ba1a029fb2..db8f35c780 100644
--- a/docs/docs/data-sources/s3.md
+++ b/docs/docs/data-sources/s3.md
@@ -11,7 +11,9 @@ ToolJet can connect to Amazon S3 buckets and perform various operation on them.
To add a new S3 source, go to the **Datasources manager** on the left sidebar of the app editor and click on `Add datasource` button. Select **AWS S3** from the modal that pops up.
-ToolJet requires the following to connect to your AWS S3:
+ToolJet supports connecting to AWS S3 using **IAM credentials**, **AWS Instance Profile** or **AWS ARN Role**.
+
+If you are using **IAM credentials**, you will need to provide the following details:
- **Region**
- **Access key**
@@ -21,7 +23,27 @@ It is recommended to create a new IAM user for the database so that you can cont
-
+
+
+
+
+To connect to AWS S3 using **AWS Instance Profile**, select the **Use AWS Instance Profile**. This will use the IAM role attached to the EC2 instance where ToolJet is running.
+To access the metadata service of an ECS container and the EC2 instance, we use the WebIdentityToken parameter which is obtained from a successful login with an identity provider.
+
+
+
+
+
+
+
+If you are using **AWS ARN Role**, you will need to provide the following details:
+
+- **Region**
+- **Role ARN**
+
+
+
+
diff --git a/docs/docs/how-to/oauth2-authorization.md b/docs/docs/how-to/oauth2-authorization.md
deleted file mode 100644
index e2fd0c5236..0000000000
--- a/docs/docs/how-to/oauth2-authorization.md
+++ /dev/null
@@ -1,66 +0,0 @@
----
-id: oauth2-authorization
-title: REST API authentication using OAuth 2.0
----
-
-# REST API authentication using OAuth 2.0
-
-ToolJet’s REST API data source supports OAuth 2.0 as the authentication type. In this guide, we’ll learn how to use **Google OAuth2 API** to delegate authorization and authentication for your ToolJet Application.
-
-Before setting up the REST API data source in ToolJet, we need to configure the **Google Cloud Platform** to gather the API keys required for the authorization access.
-
-## Setting up Google Cloud Platform
-
-Google Cloud Platform provides access to more than 350 APIs and Services that can allow us to access data from our Google account and its services. Let's create an OAuth application that can be given permission to use our Google profile data such as Name and Profile picture.
-
-1. Sign in to your [Google Cloud](https://cloud.google.com/) account, and from the console create a New Project.
-2. Navigate to the **APIs and Services**, and then open the **OAuth consent screen** section from the left sidebar.
-3. Enter the Application details and select the appropriate scopes for your application. We will select the profile and the email scopes.
-4. Once you have created the OAuth consent screen, Create new credentials for the **OAuth client ID** from the **Credentials** section in the left sidebar.
-5. Select the application type, enter the application name, and then add the following URIs under Authorised Redirect URIs:
- 1. `https://app.tooljet.com/oauth2/authorize` (if you’re using ToolJet cloud)
- 2. `http://localhost:8082/oauth2/authorize` (if you’re using ToolJet locally)
-6. Now save and then you’ll get the **Client ID and Client secret** for your application.
-
-
-
-## Configuring ToolJet Application with Google's OAuth 2.0 API
-
-Let's follow the steps to authorize ToolJet to access your Google profile data:
-
-- Select **add data source** from the left sidebar, and choose **REST API** from the dialog window.
-
-:::info
-You can rename the data source by clicking on its default name `REST API`
-:::
-
-- In the **URL** field, enter the base URL `https://www.googleapis.com/oauth2/v1/userinfo`; the base URL specifies the network address of the API service.
-- Select authentication type as `OAuth 2.0`
-- Keep the default values for **Grant Type**, **Add Access Token To**, and **Header Prefix** i.e. `Authorization Code`, `Request Header`, and `Bearer` respectively.
-- Enter **Access Token URL**: `https://oauth2.googleapis.com/token`; this token allows users to verify their identity, and in return, receive a unique access token.
-- Enter the **Client ID** and **Client Secret** that we generated from the [Google Console](http://console.developers.google.com/).
-- In the **Scope** field, enter `https://www.googleapis.com/auth/userinfo.profile`; Scope is a mechanism in OAuth 2.0 to limit an application's access to a user's account. Check the scopes available for [Google OAuth2 API here](https://developers.google.com/identity/protocols/oauth2/scopes#oauth2).
-- Enter **Authorization URL:** `https://accounts.google.com/o/oauth2/v2/auth`; the Authorization URL requests authorization from the user and redirects to retrieve an authorization code from identity server.
-- Create three **Custom Authentication Parameters:**
-
- | params | description |
- | ----------- | ----------- |
- | response_type | code ( `code` refers to the Authorization Code) |
- | client_id | **Client ID** |
- | redirect_uri | `http://localhost:8082/oauth2/authorize` if using ToolJet locally or enter this `https://app.tooljet.com/oauth2/authorize` if using ToolJet Cloud. |
-
-- Keep the default selection for **Client Authentication** and **Save** the data source.
-
-
-
-## Create the query
-
-Let’s create a query to make a `GET` request to the URL, it will pop a new window and ask the user to authenticate against the API.
-
-- Add a new query and select the REST API datasource from the dropdown
-- In the **Method** dropdown select `GET` and in advance tab toggle `run query on page load?`
-- **Save** and **Run** the query.
-
-
-
-A new window will pop for authentication and once auth is successful, you can run the query again to get the user data like Name and Profile Picture.
\ No newline at end of file
diff --git a/docs/docs/licensing.md b/docs/docs/org-management/licensing.md
similarity index 74%
rename from docs/docs/licensing.md
rename to docs/docs/org-management/licensing.md
index cb91ec46cc..57d9d9aa7c 100644
--- a/docs/docs/licensing.md
+++ b/docs/docs/org-management/licensing.md
@@ -11,13 +11,18 @@ This comprehensive guide aims to assist you in the process of configuring paid p
Let's look into three types of licenses:
-1. **Trial License**: This is a free license that grants access to premium features for a 14-day trial period. In order to get this, please reach out to our team.
+1. **Trial License**: This is a free license that grants access to premium features for a 14-day trial period.
+ - **New Users**: Choose the 14-day trial during onboarding.
+ - **Existing Users**: Request a trial license key from our sales or support team.
2. **Business License**: This is a paid license that you can purchase **[directly](https://www.tooljet.com/pricing)**.
3. **Enterprise License**: This is a paid license with customizable options. To obtain this license, you have to contact our sales team.
-After selecting the appropriate license that aligns with your needs, the next step is to proceed with the purchase. Once you have completed the onboarding process, we will generate a unique license key specifically tailored to your chosen specifications. Keep reading to gain a more comprehensive understanding of this process.
+---
+
+## Updating Your Trial License Key (For Existing Users)
+
+If you are an existing user and wish to update your trial license key, follow these steps:
-**To update your trial license key, please follow these steps:**
1. Set up the instance and log in as a **[Super Admin](/docs/Enterprise/superadmin)**.
2. Navigate to the instance settings page.
3. In the license key tab, make the necessary updates to the provided license key.
@@ -35,13 +40,32 @@ The trial license key will be valid for 14 days. To fully enjoy ToolJet, we reco
**Ref: Screenshot to update license key**
-## A) Chosen Plan: Business Plan
+## Purchasing a Paid License
-If you decide to proceed with the Business Plan and have made the purchase, please wait for our team to get back to you within 24-48 hours to get you onboarded.
+When you've identified the ideal paid license to meet your needs, the next step is to complete the purchase process, ensuring seamless access to premium features.
-**To update the business license key, follow these steps:**
+### A) Chosen Plan: Business Plan
+
+If you decide to proceed with the Business Plan and have made the purchase, please wait for our team to get back to you within 24-48 hours to get you onboarded. Once you receive the business license key, follow the steps to [update the license key](#updating-license-key).
+
+:::warning Important
+The business license key will be valid for 3 months only. You can renew it to continue using ToolJet to its fullest potential.
+:::
+
+
+### B) Chosen Plan: Enterprise Plan
+
+- If you've selected the Enterprise Plan, expect a response from our team within 24-48 hours for onboarding.
+- To update the enterprise license key, follow the steps outlined previously.
+- The remaining days of your enterprise edition period can be conveniently viewed on the dashboard.
+
+---
+
+## Updating License Key
+
+**To update the license key, follow these steps:**
1. Log in as a **[Super Admin](/docs/Enterprise/superadmin)**, ensuring that you are on the correct instance URL.
-2. Go to the instance settings page.
+2. Go to the Instance settings page.
3. In the license key tab, update the provided license key.
4. Within the license tab of the instance settings page, you can access the limit tab, which provides details about available super admins, builders, and end users.
@@ -61,24 +85,6 @@ As a super admin, you can conveniently view the remaining days of your enterpris
-:::warning Important
-The business license key will be valid for 3 months only. You can renew it to continue using ToolJet to its fullest potential.
-:::
-
-## B) Chosen Plan: Enterprise Plan
-
-If you choose to move forward with the Enterprise Plan and have completed the purchase process with our sales team, kindly anticipate a response from our team within 24-48 hours to facilitate your onboarding process.
-
-**To update the enterprise license key, follow these steps:**
-1. Log in as a **[Super Admin](/docs/Enterprise/superadmin)**, ensuring that you are on the correct instance URL.
-2. Go to the instance settings page.
-3. In the license key tab, update the provided license key.
-4. Within the license tab of the instance settings page, you can access the limit tab, which provides details about available super admins, builders, and end users.
-
-:::info Note
-As a super admin, you can conveniently view the remaining days of your enterprise edition period on the dashboard.
-:::
-
---
## Frequently Asked Questions (FAQs)
@@ -94,10 +100,16 @@ If your business or enterprise edition license key is nearing expiration, please
**Ref: Screenshot addressing upgrade/renew CTAs. Note that there are a couple of other pages which will display banners or CTAs, from where you can upgrade/renew.**
-### 2) What happens if my license expires?
+### 2) What is the duration of my license's validity?
+If you have an active license, you can find its validity period in the instance settings. Generally, the duration of your license varies based on the type:
+- Trial licenses are valid for 14 days.
+- Business licenses are valid for 3 months.
+- Enterprise licenses can be customized to suit your needs.
+
+### 3) What happens if my license expires?
If your business or enterprise license key expires, your instance will revert to operating as a free plan. While you can still create unlimited apps, workspaces, and add users, premium features such as OpenID and Audit logs will no longer be accessible. For further information, please refer to the relevant **[plans](https://www.tooljet.com/pricing)**.
-### 3) How can I add more users?
+### 4) How can I add more users?
There are different methods to do this:
**a)** You can renew directly using the **[business plan](https://www.tooljet.com/pricing)**. (Note: Please do check the list of premium features available with this plan)
diff --git a/docs/docs/release-management/multi-env.md b/docs/docs/release-management/multi-env.md
index d326e9d2db..965e36e56f 100644
--- a/docs/docs/release-management/multi-env.md
+++ b/docs/docs/release-management/multi-env.md
@@ -31,14 +31,14 @@ The default environments cannot be removed or renamed.
To configure connection settings for different environments, follow these steps:
-1. Go to the **[Global Datasource](/docs/data-sources/overview)** page.
-2. Click on the **Add new datasource** button.
-3. Choose a datasource. In the connection modal, you'll find three tabs: **Production**, **Staging**, and **Development**.
-4. Switch to each tab and enter the appropriate credentials for connecting to the respective database. Remember to save after entering credentials on each tab.
+1. Go to the **[Data Source](/docs/data-sources/overview)** page.
+2. Click on each category of data sources to view the list of available data sources. As you hover over the desired data source, an **Add** button will appear.
+3. On clicking the **Add** button, a connection modal will appear. In the connection modal, you'll find three tabs: **Production**, **Staging**, and **Development**.
+4. Switch to each tab and enter the appropriate credentials for connecting to the respective database. Remember to **save** after entering credentials on each tab.
-
+
@@ -109,4 +109,4 @@ To configure connection settings for different environments, follow these steps:
Please note that only one version of the app can be released at a time.
:::
-ToolJet automatically saves your most recently selected environment in the app builder. The next time you open an app, it will use the same environment. For example, if you switch to the staging environment in an app, the next time you open it will automatically use the same staging environment.
+ToolJet's app builder remembers your last editing state. When you reopen an app, it resumes from where you left off, ensuring a seamless experience. For instance, if you edited an app in the staging environment, it will open in the staging environment when you return.
diff --git a/docs/docs/setup/digitalocean.md b/docs/docs/setup/digitalocean.md
index a4143f9e4f..ccc8eb2969 100644
--- a/docs/docs/setup/digitalocean.md
+++ b/docs/docs/setup/digitalocean.md
@@ -9,40 +9,141 @@ Now you can quickly deploy ToolJet using the Deploy to DigitalOcean button.
*If you have any questions feel free to join our [Slack Community](https://tooljet.com/slack) or send us an email at hello@tooljet.com.*
+The latest docker image is `tooljet/tooljet:`
+
## Deploying
#### Follow the steps below to deploy ToolJet on DigitalOcean:
-
-1. Click on the button below to start one click deployment
-
+1. Once signed-in to your DigitalOcean account, click on the **Create App** button.
+
- [](https://cloud.digitalocean.com/apps/new?repo=https://github.com/ToolJet/ToolJet/tree/main)
+
-2. A new tab will open up, sign-in to your DigitalOCean account. Once signed-in, the **Create App** page will open up and **Resources** will be already selected. Click on **Next** button.
+2. On the next page, you'll be asked to choose a **Resource** type, select **Docker Hub**. Enter the Repository name as `tooljet/tooljet` and the corresponding tag.
-
+
-3. Now, on **Environment Variables** page you can add new variables or edit the existing ones. Check the [environment variables here](/docs/setup/env-vars).
+
-
+
-4. On the next page, you can change the **App name**, **Project**, and the **Region**.
+3. Once the Resource is created, you'll be redirected to the **Resources** page. Click on the **Edit** button next to the Resource.
-
+
-5. On the last page, you'll be asked to **Review** all the app details such that we entered before such as **Resources**, **Environment Variables**, **Region**, and there will also be **Billing** section at the end. Review all the details and click the **Create Resource** button.
+
-
+
+
+ Make sure the **Run Command** is `./server/scripts/digitalocean-postbuild.sh` and the **HTTP** port is `3000`. Once you have edited the ToolJet resource click on the **Back** button.
-6. Once you click the **Create Resource** button, the build will begin. Once the build is complete, you'll see the resource and a **URL** next to it. Click on the URL to open the deployed **ToolJet**.
+
-:::tip
-ToolJet server and client can be deployed as standalone applications. If you do not want to deploy the client on DigitalOcean, modify `package.json` accordingly. We have a [guide](/docs/setup/client) on deploying ToolJet client using services such as Firebase.
-:::
+
+
+
+
+### Redis setup
+
+ToolJet requires configuring Redis which is used for enabling multiplayer editing and for background jobs.
+
+Follow the steps below to configure Redis database:
+
+1. Navigate to **Database** and create a database cluster.
+
+
+
+
+
+
+
+2. Select `Redis` from the database engine and add a unique name to the cluster and click on **Create Database cluster**.
+
+
+
+
+
+
+
+3. Once the set-up is complete, add the Redis connection string in the environmental variable of `tooliet-app`.
+ :::info
+ In the business edition, saving or making changes in apps is dependent on Redis, even if multi-player editing is not necessary.
+ :::
+
+### Database setup
+
+Follow the below steps to attach a postgresql database:
+
+1. Click on **Add Resource** and select **Database** and click on add.
+
+
+
+
+
+
+
+2. Enter the preffered name for the database and click **Create and attach**.
+
+
+
+
+
+
+
+### Setting up environment variables
+
+1. Once the database is attached, click on **Next** to set up the environment variables.
+
+
+
+
+
+
+
+2. Click on **Edit** next to `tooljet-app`.
+
+
+
+
+
+
+
+3. Click on the build editor to edit the environment variables.
+
+
+
+
+
+
+
+ ```bash
+ NODE_ ENV=production
+ NODE_OPTIONS=--max-old-space-size=4096
+ LOCKBOX MASTER_KEY= #Use `openssl rand -hex 32`
+ SECRET KEY BASE= #Use `openssl rand -hex 64`
+ DEPLOYMENT_PLATFORM=digitalocean
+ DATABASE_URL=${.DATABASE_URL}
+ CA CERT=${.CA_CERT}
+ TOOLJET HOST=${APP_URL}
+ TOOLJET_SERVER_URL=${APP_URL}
+ REDIS_URL= #connection string
+ ```
+
+ DATABASE_URL and CA_CERT variable should be added in the above format.
+
+4. After adding the environment variables, click on **Save**.
+
+
+
+
+
+
+
+ To add additional environment variables, refer this [doc](https://docs.tooljet.com/docs/setup/env-vars/).
#### Deploying Tooljet Database
@@ -51,7 +152,7 @@ You can learn more about this feature [here](/docs/tooljet-database).
Follow the steps below to deploy ToolJet Database on DigitalOcean:
-1. If you are using dev database within ToolJet deployment, upgrade it to managed database. You could also add a separate database, if you intent use a different database, please refer the [environment variables](/docs/setup/env-vars#tooljet-database-feature-enable--optional-) for additional env variables.
+1. If you are using dev database within ToolJet deployment, upgrade it to managed database. You could also add a separate database, if you intent use a different database, please refer the [environment variables](/docs/setup/env-vars#enable-tooljet-database--optional-) for additional env variables.
2. Create a new app for PostgREST server. You can opt for docker hub to deploy PostgREST image of version `10.1.x`.
@@ -63,4 +164,4 @@ Follow the steps below to deploy ToolJet Database on DigitalOcean:
4. Add your newly created PostgREST app to the trusted sources of your managed or separate database.
-5. Update your existing ToolJet application deployment with [environment variables](/docs/setup/env-vars#tooljet-database-feature-enable--optional-) required for PostgREST.
+5. Update your existing ToolJet application deployment with [environment variables](/docs/setup/env-vars#enable-tooljet-database--optional-) required for PostgREST.
diff --git a/docs/docs/setup/docker.md b/docs/docs/setup/docker.md
index 0308312d21..ea1671ef1f 100644
--- a/docs/docs/setup/docker.md
+++ b/docs/docs/setup/docker.md
@@ -35,16 +35,17 @@ Confused about which setup to select? Feel free to ask the community via Slack:
1. Download our production docker-compose file into the server.
```bash
- curl -LO https://raw.githubusercontent.com/ToolJet/ToolJet/main/deploy/docker/docker-compose-db.yaml
+ curl -LO https://tooljet-deployments.s3.us-west-1.amazonaws.com/docker/docker-compose-db.yaml
mv docker-compose-db.yaml docker-compose.yaml
mkdir postgres_data
+ mkdir redis_data
```
2. Create `.env` file in the current directory (where the docker-compose.yaml file is downloaded as in step 1):
```bash
- curl -LO https://raw.githubusercontent.com/ToolJet/ToolJet/main/deploy/docker/.env.internal.example
- curl -LO https://raw.githubusercontent.com/ToolJet/ToolJet/main/deploy/docker/internal.sh && chmod +x internal.sh
+ curl -LO https://tooljet-deployments.s3.us-west-1.amazonaws.com/docker/.env.internal.example
+ curl -LO https://tooljet-deployments.s3.us-west-1.amazonaws.com/docker/internal.sh && chmod +x internal.sh
mv .env.internal.example .env && ./internal.sh
```
@@ -82,7 +83,8 @@ Confused about which setup to select? Feel free to ask the community via Slack:
2. Download our production docker-compose file into the server.
```bash
- curl -LO https://raw.githubusercontent.com/ToolJet/ToolJet/main/deploy/docker/docker-compose.yaml
+ curl -LO https://tooljet-deployments.s3.us-west-1.amazonaws.com/docker/docker-compose.yaml
+ mkdir redis_data
```
3. Create `.env` file in the current directory (where the docker-compose.yaml file is downloaded as in step 1):
@@ -96,8 +98,8 @@ Confused about which setup to select? Feel free to ask the community via Slack:
```bash
- curl -LO https://raw.githubusercontent.com/ToolJet/ToolJet/main/deploy/docker/.env.external.example
- curl -LO https://raw.githubusercontent.com/ToolJet/ToolJet/main/deploy/docker/external.sh && chmod +x external.sh
+ curl -LO https://tooljet-deployments.s3.us-west-1.amazonaws.com/docker/.env.external.example
+ curl -LO https://tooljet-deployments.s3.us-west-1.amazonaws.com/docker/external.sh && chmod +x external.sh
mv .env.external.example .env && ./external.sh
```
diff --git a/docs/docs/setup/ecs.md b/docs/docs/setup/ecs.md
index b16770014a..0494ef623d 100644
--- a/docs/docs/setup/ecs.md
+++ b/docs/docs/setup/ecs.md
@@ -39,8 +39,8 @@ Follow the steps below to deploy ToolJet on a ECS cluster.
Within the add container form that is shown:
- - Specify your container name ex: `tooljet-ce`
- - Set the image you intend to deploy. ex: `tooljet/tooljet-ce:v1.26.0`
+ - Specify your container name ex: `tooljet`
+ - Set the image you intend to deploy. ex: `tooljet/tooljet:`
- Update port mappings at container port `3000` for tcp protocol.
@@ -58,6 +58,16 @@ Follow the steps below to deploy ToolJet on a ECS cluster.
Read **[environment variables reference](/docs/setup/env-vars)**
:::
+ 5. Please add redis container as part of the deployment. Please make sure that you are using redis version 6.x.x
+
+ Also add these env variable in the above tooljet container
+
+ ```
+ REDIS_HOST=localhost
+ REDIS_PORT=6379
+ REDIS_USER=default
+ REDIS_PASSWORD=
+ ```
4. Create a service to run your task definition within your cluster.
- Select launch type as Fargate.
diff --git a/docs/docs/setup/env-vars.md b/docs/docs/setup/env-vars.md
index 62e12a702b..18f69d14e5 100644
--- a/docs/docs/setup/env-vars.md
+++ b/docs/docs/setup/env-vars.md
@@ -63,20 +63,12 @@ Self-hosted version of ToolJet pings our server to fetch the latest product upda
### Comment feature enable ( optional )
-Use this environment variable to enable/disable the feature that allows you to add comments on the canvas.
+Use this environment variable to enable/disable the feature that allows you to add comments on the canvas. To configure this environment variable, ensure that multiplayer editing is enabled in the instance settings.
| variable | value |
| ---------------------- | ----------------- |
| COMMENT_FEATURE_ENABLE | `true` or `false` |
-### Multiplayer feature enable ( optional )
-
-Use this environment variable to enable/disable the feature that allows users to collaboratively work on the canvas.
-
-| variable | value |
-| -------------------------- | ----------------- |
-| ENABLE_MULTIPLAYER_EDITING | `true` or `false` |
-
### Marketplace
#### Marketplace feature enable ( optional )
diff --git a/docs/docs/setup/google-cloud-run.md b/docs/docs/setup/google-cloud-run.md
index fc7dd35617..0431078dcc 100644
--- a/docs/docs/setup/google-cloud-run.md
+++ b/docs/docs/setup/google-cloud-run.md
@@ -20,9 +20,9 @@ Follow the steps below to deploy ToolJet on Cloud run with `gcloud` CLI.
```bash
gcloud auth configure-docker
- docker pull tooljet/tooljet-ce:latest
- docker tag tooljet/tooljet-ce:latest gcr.io//tooljet/tooljet-ce:latest
- docker push gcr.io//tooljet/tooljet-ce:latest
+ docker pull tooljet/tooljet:latest
+ docker tag tooljet/tooljet:latest gcr.io//tooljet/tooljet:latest
+ docker push gcr.io//tooljet/tooljet:latest
```
Please run the above command by launching GoogleCLI which will help to push the Tooljet application image to Google container registry.
diff --git a/docs/docs/setup/heroku.md b/docs/docs/setup/heroku.md
deleted file mode 100644
index 80e14d2c06..0000000000
--- a/docs/docs/setup/heroku.md
+++ /dev/null
@@ -1,145 +0,0 @@
----
-id: heroku
-title: Heroku
----
-
-# Deploying ToolJet on Heroku
-
-
-
-*If you have any questions feel free to join our [Slack Community](https://tooljet.com/slack) or send us an email at hello@tooljet.com.*
-
-
-### Follow the steps below to deploy ToolJet on Heroku:
-
-1. Click the button below to start one click deployment.
-
-
-2. On Heroku tab, you'll be asked to provide an `App name` and `Choose a region`. Enter the name for your deployment and select the region according to your choice.
-
-
-
-
-
-
-
-3. Now let's enter the `Config vars` to configure additional [environment variables](/docs/setup/env-vars) that are required for the installation.
- - **LOCKBOX_MASTER_KEY**: ToolJet server uses lockbox to encrypt datasource credentials. You should set the environment variable LOCKBOX_MASTER_KEY with a 32 byte hexadecimal string. If you have OpenSSL installed, you can run the command `openssl rand -hex 32` to generate the key.
- - **NODE_ENV**: By default NODE_ENV is set to production.
- - **NODE_OPTIONS**: Node options are configured to increase node memory to support app build.
- - **SECRET_KEY_BASE**: ToolJet server uses a secure 64 byte hexadecimal string to encrypt session cookies. You should set the environment variable SECRET_KEY_BASE. If you have OpenSSL installed, you can run the command `openssl rand -hex 64` to generate the key.
- - **TOOLJET_HOST**: Public URL of ToolJet installation. This is usually `https://.herokuapp.com`.
- - **TOOLJET_SERVER_URL**: URL of ToolJet server installation. (This is same as the TOOLJET_HOST for Heroku deployments)
-
-
-4. Click on `Deploy app` button at the bottom to initiate the build.
-
-5. After the successful build, you'll see two buttons at the bottom: `Manage App` and `View`. Click on the `View` to open the app or click on `Manage App` to configure any settings.
-
-
-
-
-
-
-
-
-:::tip
-ToolJet server and client can be deployed as standalone applications. If you do not want to deploy the client on Heroku, modify `package.json` accordingly. We have a [guide](/docs/setup/client) on deploying ToolJet client using services such as Firebase.
-:::
-
-
-
-### Deploying Tooljet Database
-
-If you intend to use this feature, you'd have to set up and deploy PostgREST server which helps querying ToolJet Database.
-
-This feature is only enabled if `ENABLE_TOOLJET_DB` is set to `true` in the Tooljet application.
-
-#### Follow the steps below to deploy ToolJet Database on Heroku:
-
-:::note
-Please install Heroku CLI on your local machine. Please refer Heroku CLI installation steps [**here**](https://devcenter.heroku.com/articles/heroku-cli).
-:::
-
-1. **Create a new Heroku app using the PostgREST buildpack**
-
- 1.1 Create a folder with your app name. Please give a unique name to the app.
-
- ```bash
- mkdir ${YOUR_PGRST_APP_NAME}
- cd $${YOUR_PGRST_APP_NAME}
- git init
- ```
-
- 1.2 Add PostgREST buildpack to your app.
-
- ```bash
- heroku apps:create ${YOUR_PGRST_APP_NAME} --buildpack https://github.com/PostgREST/postgrest-heroku.git
- heroku git:remote -a ${YOUR_PGRST_APP_NAME}
- ```
-
-2. **Attach the Tooljet app’s PostgreSQL database your Tooljet database app**
-
- `${HEROKU_PG_DB_NAME` Should be the name of the PostgreSQL created by the Tooljet app.
-
- You can get the `${HEROKU_PG_DB_NAME` of the Tooljet application from the Resources tab under Heroku Postgres attachments as shown below. (eg: `${HEROKU_PG_DB_NAME = postgresql-transparent-24158` ).
-
- ```bash
- heroku addons:attach ${HEROKU_PG_DB_NAME} -a ${YOUR_PGRST_APP_NAME}
- ```
-
-
-
-
-
-
-3. **Create a Procfile**
-
- :::info
- The Procfile is a simple text file that is named Procfile without a file extension. For example, Procfile.txt is not valid.
- :::
-
- Please paste the below string within the Procfile file.
-
- ```bash
- web: PGRST_SERVER_HOST=0.0.0.0 PGRST_SERVER_PORT=${PORT} PGRST_DB_URI=${PGRST_DB_URI:-${DATABASE_URL}} ./postgrest-${POSTGREST_VER}
- ```
-
-
-4. **Set environment variables**
-
- You can also refer environment variable [**here**](/docs/setup/env-vars#tooljet-database).
-
- :::tip
- If you have openssl installed, you can run the following command `openssl rand -hex 32` to generate the value for `PGRST_JWT_SECRET`.
-
- If this parameter is not specified then PostgREST refuses authentication requests.
- :::
-
- ```bash
- heroku config:set PGRST_JWT_SECRET=
- heroku config:set POSTGREST_VER=10.0.0
- ```
-
- You can also refer environment variable [**here**](/docs/setup/env-vars#tooljet-database).
-
-
-5. **Build and deploy your app**
-
- ```bash
- git add Procfile
- git commit -m "PostgREST on Heroku"
- git push --set-upstream heroku main
- ```
-
- Your Heroku app should be live at `${YOUR_APP_NAME}.herokuapp.com`.
-
-
-6. **Additional environment variables for Tooljet application**
-
-
- Please enter the below env variables in the Tooljet application, under the setting tab. You can also refer environment variable [**here**](/docs/setup/env-vars#tooljet-database).
diff --git a/docs/docs/setup/kubernetes-aks.md b/docs/docs/setup/kubernetes-aks.md
index 7c87caa19d..04cc1515d2 100644
--- a/docs/docs/setup/kubernetes-aks.md
+++ b/docs/docs/setup/kubernetes-aks.md
@@ -18,7 +18,7 @@ Follow the steps below to deploy ToolJet on a AKS Kubernetes cluster.
2. Create k8s deployment
```bash
- curl -LO https://raw.githubusercontent.com/ToolJet/ToolJet/main/deploy/kubernetes/AKS/deployment.yaml
+ curl -LO https://tooljet-deployments.s3.us-west-1.amazonaws.com/kubernetes/AKS/deployment.yaml
```
Make sure to edit the environment variables in the `deployment.yaml`. We advise to use secrets to setup sensitive information. You can check out the available options [here](https://docs.tooljet.com/docs/setup/env-vars).
@@ -29,7 +29,7 @@ If there are self signed HTTPS endpoints that Tooljet needs to connect to, pleas
3. Create k8s service and reserve a static IP and inorder expose it via a service load balancer as mentioned in the [doc](https://docs.microsoft.com/en-us/azure/aks/static-ip). You can refer `service.yaml`.
```bash
- curl -LO https://raw.githubusercontent.com/ToolJet/ToolJet/main/deploy/kubernetes/AKS/service.yaml
+ curl -LO https://tooljet-deployments.s3.us-west-1.amazonaws.com/kubernetes/AKS/service.yaml
```
4. Apply YAML configs
@@ -49,7 +49,7 @@ If you intend to use this feature, you'd have to set up and deploy PostgREST ser
1. Setup PostgREST server
```bash
- kubectl apply -f https://raw.githubusercontent.com/ToolJet/ToolJet/main/deploy/kubernetes/AKS/postgrest.yaml
+ kubectl apply -f https://tooljet-deployments.s3.us-west-1.amazonaws.com/kubernetes/AKS/postgrest.yaml
```
-2. Update ToolJet deployment with the appropriate env variables [here](https://raw.githubusercontent.com/ToolJet/ToolJet/main/deploy/kubernetes/AKS/deployment.yaml) and apply the changes.
+2. Update ToolJet deployment with the appropriate env variables [here](https://tooljet-deployments.s3.us-west-1.amazonaws.com/kubernetes/AKS/deployment.yaml) and apply the changes.
diff --git a/docs/docs/setup/kubernetes-gke.md b/docs/docs/setup/kubernetes-gke.md
index af86339fec..c87a6c36bd 100644
--- a/docs/docs/setup/kubernetes-gke.md
+++ b/docs/docs/setup/kubernetes-gke.md
@@ -16,7 +16,7 @@ Follow the steps below to deploy ToolJet on a GKE Kubernetes cluster.
1. Create an SSL certificate.
```bash
-curl -LO https://raw.githubusercontent.com/ToolJet/ToolJet/main/deploy/kubernetes/GKE/certificate.yaml
+curl -LO https://tooljet-deployments.s3.us-west-1.amazonaws.com/kubernetes/GKE/certificate.yaml
```
Change the domain name to the domain/subdomain that you wish to use for ToolJet installation.
@@ -30,7 +30,7 @@ gcloud compute addresses create tj-static-ip --global
3. Create k8s deployment
```bash
-curl -LO https://raw.githubusercontent.com/ToolJet/ToolJet/main/deploy/kubernetes/GKE/deployment.yaml
+curl -LO https://tooljet-deployments.s3.us-west-1.amazonaws.com/kubernetes/GKE/deployment.yaml
```
Make sure to edit the environment variables in the `deployment.yaml`. You can check out the available options [here](https://docs.tooljet.com/docs/setup/env-vars).
@@ -42,13 +42,13 @@ If there are self signed HTTPS endpoints that Tooljet needs to connect to, pleas
4. Create k8s service
```bash
-curl -LO https://raw.githubusercontent.com/ToolJet/ToolJet/main/deploy/kubernetes/GKE/service.yaml
+curl -LO https://tooljet-deployments.s3.us-west-1.amazonaws.com/kubernetes/GKE/service.yaml
```
5. Create k8s ingress
```bash
-curl -LO https://raw.githubusercontent.com/ToolJet/ToolJet/main/deploy/kubernetes/GKE/ingress.yaml
+curl -LO https://tooljet-deployments.s3.us-west-1.amazonaws.com/kubernetes/GKE/ingress.yaml
```
Change the domain name to the domain/subdomain that you wish to use for ToolJet installation.
@@ -75,7 +75,7 @@ If you intend to use this feature, you'd have to set up and deploy PostgREST ser
1. Setup PostgREST server
```bash
- kubectl apply -f https://raw.githubusercontent.com/ToolJet/ToolJet/main/deploy/kubernetes/GKE/postgrest.yaml
+ kubectl apply -f https://tooljet-deployments.s3.us-west-1.amazonaws.com/kubernetes/GKE/postgrest.yaml
```
-2. Update ToolJet deployment with the appropriate env variables [here](https://raw.githubusercontent.com/ToolJet/ToolJet/main/deploy/kubernetes/GKE/deployment.yaml) and apply the changes.
+2. Update ToolJet deployment with the appropriate env variables [here](https://tooljet-deployments.s3.us-west-1.amazonaws.com/kubernetes/GKE/deployment.yaml) and apply the changes.
diff --git a/docs/docs/setup/kubernetes.md b/docs/docs/setup/kubernetes.md
index 1f8991660b..10441ef99d 100644
--- a/docs/docs/setup/kubernetes.md
+++ b/docs/docs/setup/kubernetes.md
@@ -23,7 +23,7 @@ Follow the steps below to deploy ToolJet on a Kubernetes cluster.
3. Create a Kubernetes deployment
```bash
- kubectl apply -f https://raw.githubusercontent.com/ToolJet/ToolJet/main/deploy/kubernetes/deployment.yaml
+ kubectl apply -f https://tooljet-deployments.s3.us-west-1.amazonaws.com/kubernetes/deployment.yaml
```
:::info
@@ -40,7 +40,7 @@ If there are self signed HTTPS endpoints that Tooljet needs to connect to, pleas
kubectl get pods
```
-5. Create a Kubernetes services to publish the Kubernetes deployment that you've created. This step varies with cloud providers. We have a [template](https://raw.githubusercontent.com/ToolJet/ToolJet/main/deploy/kubernetes/service.yaml) for exposing the ToolJet server as a service using an AWS loadbalancer.
+5. Create a Kubernetes services to publish the Kubernetes deployment that you've created. This step varies with cloud providers. We have a [template](https://tooljet-deployments.s3.us-west-1.amazonaws.com/kubernetes/service.yaml) for exposing the ToolJet server as a service using an AWS loadbalancer.
**Examples:**
@@ -61,4 +61,4 @@ If you intend to use this feature, you'd have to set up and deploy PostgREST ser
kubectl apply -f https://raw.githubusercontent.com/ToolJet/ToolJet/main/deploy/kubernetes/postgrest.yaml
```
-2. Update ToolJet deployment with the appropriate env variables [here](https://raw.githubusercontent.com/ToolJet/ToolJet/main/deploy/kubernetes/deployment.yaml) and apply the changes.
+2. Update ToolJet deployment with the appropriate env variables [here](https://tooljet-deployments.s3.us-west-1.amazonaws.com/kubernetes/deployment.yaml) and apply the changes.
diff --git a/docs/docs/setup/openshift.md b/docs/docs/setup/openshift.md
index 1cdb3dd674..73f6a7e531 100644
--- a/docs/docs/setup/openshift.md
+++ b/docs/docs/setup/openshift.md
@@ -28,14 +28,14 @@ When entering one or more files and use --- to separate each definition
Copy paste deployment.yaml to the online editor
```
-https://raw.githubusercontent.com/ToolJet/ToolJet/main/deploy/openshift/deployment.yaml
+https://tooljet-deployments.s3.us-west-1.amazonaws.com/openshift/deployment.yaml
```
Copy paste the service.yaml to the online editor
```
-https://raw.githubusercontent.com/ToolJet/ToolJet/main/deploy/openshift/service.yaml
+https://tooljet-deployments.s3.us-west-1.amazonaws.com/openshift/service.yaml
```
@@ -66,5 +66,5 @@ You can know more about tooljet database [here](https://docs.tooljet.com/docs/to
If you intend to use this feature, you'd have to set up and deploy PostgREST server which helps querying ToolJet Database. Please [follow the instructions here](https://docs.tooljet.com/docs/setup/env-vars#tooljet-database) for additional environment variables configuration to be done.
```
-https://raw.githubusercontent.com/ToolJet/ToolJet/main/deploy/openshift/postgrest.yaml
-```
\ No newline at end of file
+https://tooljet-deployments.s3.us-west-1.amazonaws.com/openshift/postgrest.yaml
+```
diff --git a/docs/docs/tooljet_database.md b/docs/docs/tooljet_database.md
index b337d04d3c..b5955daf90 100644
--- a/docs/docs/tooljet_database.md
+++ b/docs/docs/tooljet_database.md
@@ -7,7 +7,7 @@ Use the ToolJet-hosted database to build apps faster, and manage your data with
-
+
@@ -68,6 +68,7 @@ ToolJet database allows you to:
- **[Maintain tables of data](#accessing-tooljet-database)** in a secure database that's only accessible within your ToolJet organization.
- **[Edit, search, filter, sort, and filter](#database-editor)** data using a spreadsheet-like interface.
- **[Quickly build applications and write queries](#querying-data-from-the-tooljet-database)** to interact with the ToolJet Database, just like any other datasource but without any setup.
+- **[Export table](#export-table)** from the ToolJet Database to a JSON file.
## Accessing ToolJet Database
@@ -77,7 +78,7 @@ The ToolJet Database is available on: **[ToolJet Cloud](https://tooljet.com)**,
-
+
@@ -87,7 +88,7 @@ You can manage the ToolJet Database directly from the Database Editor. ToolJet D
-
+
@@ -97,7 +98,7 @@ For creating a new table in ToolJet Database, click on the **Create New Table**
-
+
@@ -105,7 +106,7 @@ When the **Create New Table** button is clicked, a drawer opens up from the righ
-
+
@@ -119,12 +120,13 @@ When the **Create New Table** button is clicked, a drawer opens up from the righ
- **int**: It is a numeric data type used to store whole numbers, that is, numbers without fractional components.
- **float**: float is also a numeric data type that is used to store inexact, variable-precision values.
- **boolean**: boolean data type can hold true, false, and null values.
+- **bigint**: bigint is a numeric data type that is used to store whole numbers, that is, numbers without fractional components.
Click on **Create** button to create a new table.
-
+
@@ -134,7 +136,7 @@ You can enter a search term to search through all tables in the database.
-
+
@@ -149,7 +151,69 @@ A drawer from the right will open up from where you can create a new column by e
-
+
+
+
+
+### Delete column
+
+To delete a particular column, just click on the column header and the **delete** button will appear, click on it to delete the column.
+
+
+
+
+
+
+
+### Add new row
+
+To add a new row to the existing table data, click on the **Add new row** button. A drawer will open from the right where you can **enter the values** for the new row.
+
+
+
+
+
+
+
+### Edit row
+
+To edit the rows from the ToolJet database dashboard, click on the **Edit row** button. A drawer will open from the right from where first you need to **select the id** of the row to be edited from the dropdown and then you can edit the cell values of the selected row.
+
+
+
+
+
+
+
+### Bulk upload data
+
+You can bulk upload data to the ToolJet database by clicking on the **Bulk upload data** button on the top of the database editor. On clicking the button, a drawer will open from the right from where you can upload a **CSV** file. This file is used to upsert records onto the table. If data for id column is missing it will insert new record with the row data else if id is present it will update the corresponding record with the corresponding row data.
+
+From the drawer, users can download the **template CSV file** in which they can enter the data to be uploaded to the ToolJet database's table or format their CSV file in the same way as the template file.
+
+Once the CSV file is ready, click on the file picker to select the file or drag and drop the file in the file picker. Now, click on the **Upload data** button to upload the data to the ToolJet database.
+
+**Requirements**:
+- The data types of columns in the CSV file should match those in the ToolJet database table.
+- The `id` column with a `serial` data type should not contain duplicate values.
+
+**Limitations**:
+- There is a limit of 1000 rows per CSV file that can be uploaded to the ToolJet database.
+- The CSV file should not exceed 2MB in size.
+
+
+
+
+
+
+
+### Delete records
+
+To delete one or many records/rows, select on the checkbox at the right of the record or records that you want to delete. As soon as you select a single record, the button to delete record will appear on the top, click on the **Delete record** button to delete the selected records.
+
+
+
+
@@ -163,24 +227,24 @@ You can add as many filter as you want into the table by clicking on the **Filte
- Enter a **value** for the selected operation
#### Available operations are:
-- **equals**
-- **greater than**
-- **greater than or equal**
-- **less than**
-- **less than or equal**
-- **not equal**
-- **like**
-- **ilike**
-- **match**
-- **imatch**
-- **in**
-- **contains**
-- **contained**
-- **not**
+- **equals**: This operation is used to check if the value of the column is equal to the value entered in the input field.
+- **greater than**: This operation is used to check if the value of the column is greater than the value entered in the input field.
+- **greater than or equal**: This operation is used to check if the value of the column is greater than or equal to the value entered in the input field.
+- **less than**: This operation is used to check if the value of the column is less than the value entered in the input field.
+- **less than or equal**: This operation is used to check if the value of the column is less than or equal to the value entered in the input field.
+- **not equal**: This operation is used to check if the value of the column is not equal to the value entered in the input field.
+- **like**: This operation is used to check if the value of the column is like the value entered in the input field. This operation is case-sensitive. ex: `ToolJet` will not match `tooljet`
+- **ilike**: This operation is used to check if the value of the column is like the value entered in the input field. This operation is case-insensitive. ex: `ToolJet` will match `tooljet`
+- **match**: This operation is used to check if the value of the column is like the value entered in the input field. This operation is case-sensitive. ex: `ToolJet` will not match `tooljet`. This operation uses regular expressions. ex: `^ToolJet$` will match `ToolJet` but not `ToolJet Inc`.
+- **imatch**: This operation is used to check if the value of the column is like the value entered in the input field. This operation is case-insensitive. This operation uses regular expressions. ex: `^ToolJet$` will match `ToolJet` but not `ToolJet Inc`.
+- **in**: This operation is used to check if the value of the column is in the list of values entered in the input field. ex: `1,2,3`
+- **contains**: This operation is used to check if the value of the column contains the value entered in the input field. This operation is case-sensitive. ex: `ToolJet` will not match `tooljet`
+- **contained**: This operation is used to check if the value of the column is contained in the value entered in the input field. This operation is case-sensitive. ex: `ToolJet` will not match `tooljet`
+- **not**: This operation is used to negate the result of the operation selected in the dropdown. ex: `not equals` will return all the records where the value of the column is not equal to the value entered in the input field.
-
+
@@ -190,59 +254,41 @@ To sort the table data, click on the **Sort** button on top, select a **column**
-
+
-### Add new row
+### Edit table
-To add a new row to the existing table data, click on the **Add new row** button. A drawer will open from the right where you can **enter the values** for the new row.
+To edit the table name, click on the three vertical dots icon on the right of the table name and then click on the **Edit** option. A drawer will open from the right from where you can edit the table name.
-
+
-### Edit row
+### Export table
-To edit the rows from the ToolJet database dashboard, click on the **Edit row** button. A drawer will open from the right from where first you need to **select the id** of the row to be edited from the dropdown and then you can edit the cell values of the selected row.
+The export table option allows you to download the selected table schema in a JSON file. This does not export the table data.
+
+While [exporting the app](https://docs.tooljet.com/docs/dashboard#export-app), you can choose to export the app with or without table schema connected to the app.
+
+To export the table schema, click on the three vertical dots icon on the right of the table name and then click on the **Export** option. A JSON file will be downloaded with the table schema.
-
+
-### Delete records
+### Delete table
-To delete one or many records/rows, select on the checkbox at the right of the record or records that you want to delete. As soon as you select a single record, the button to delete record will appear on the top, click on the **Delete record** button to delete the selected records.
+To delete a table, click on the three vertical dots icon on the right of the table name and then click on the **Delete** option. A confirmation modal will appear, click on the **Delete** button to delete the table.
-
-
-
-
-### Delete column
-
-To delete a particular column, just click on the column name and the **delete** button will appear, click on it to delete the column.
-
-
-
-
-
-
-
-### Edit or Delete a table
-
-When you click on the kebab menu (three vertical dots icon) on the right of the table name, you'll get two options: Edit and Delete.
-- **Edit** will allow you to rename the table
-- **Delete** will allow you to delete the table permanently
-
-
-
-
+
@@ -250,52 +296,84 @@ When you click on the kebab menu (three vertical dots icon) on the right of the
Querying ToolJet database is as easy as querying any other datasource on ToolJet.
-- Go to the **query panel**, and click on the **+Add** button to add a new query, and select **Run ToolJetDb query**
+- Go to the **query panel**, and click on the **+Add** button to add a new query, and select **ToolJet Database**
-
+
-- Enter the **Name** of the table that you want to query, select an **Operation** from the dropdown, **Create** the query, and then **Run** the query to get the response.
+- Select the **table** that you want to query from the dropdown, choose an **operation** from the dropdown, and then enter the required parameters for the selected operation. Click on the **Run** button to execute the query.
-
+
-:::info
-- **Preview** button on the query panel returns the query response without executing the query. Once clicked, the response will be displayed on the Preview section of the query panel which can be viewed in JSON or Raw.
-- When a new query is created, by default the query name is set to `tooljetdbN` (where N is a number) - you can rename the query by click on the query name or from the left sidebar of query panel.
-:::
+ :::info
+ - **Preview** button on the query panel returns the query response without executing the query. Once clicked, the response will be displayed on the Preview section of the query panel which can be viewed as JSON or Raw.
+ - When a new query is created, by default the query name is set to `tooljetdbN` (where N is a number) - you can rename the query by click on the query name or from the left sidebar of query panel.
+ :::
### Available operations
-#### List rows
-This operation returns the list of all the records in the table
+### List rows
+This operation returns all the records from the table
#### Optional parameters
-- **Filter**: Add a filter to the query response by setting a column, operation and value.
-- **Sort**: Add a sort to the query response by setting a column and direction.
-- **Limit**: Limit the query response. This parameter expects a numerical value. ex: 5
+- **Filter**: Add a condition by choosing a column, an operation, and the value for filtering the records.
+- **Sort**: Sort the query response by choosing a column and the order (ascending or descending).
+- **Limit**: Limit the number of records to be returned by entering a number.
-#### Create row
-This operation creates a new record in the table
+### Create row
+This operation creates a new record in the table. You can create a single record or multiple records at once.
#### Required parameters
-- **Columns**: Choose a column from the dropdown and enter a value for the new record.
+- **Columns**: Choose the columns for which you want to add values for the new record and enter the values for the selected columns. You can also add a new column by clicking on the **+Add column** button.
-#### Update row
-This operation updates an existing record in the table
+### Update row
+This operation updates a record in the table. You can update a single record or multiple records at once.
#### Required parameter
- **Filter**: Add a condition by choosing a column, an operation, and the value for updating a particular record.
+- **Columns**: Choose the columns for which you want to update the values for the selected record and enter the values for the selected columns.
-#### Delete row
-This operation deletes a record from the table
+### Delete row
+This operation deletes a record in the table. You can delete a single record or multiple records at once.
#### Required parameters
- **Filter**: Add a condition by choosing a column, an operation, and the value for deleting a particular record.
+- **Limit**: Limit the number of records to be deleted by entering a number.
+
+### Join tables
+
+You can join two or more tables in the ToolJet database by using the **Join** operation.
+
+#### Required parameters
+- **From**: In the **From** section, there are the following parameters:
+ - **Selected Table**: Select the table from which you want to join the other table.
+ - **Type of Join**: Select the type of join you want to perform. The available options are: `Inner Join`, `Left Join`, `RIght Join`, and `Full Outer Join`.
+ - **Joining Table**: Select the table that you want to join with the selected table.
+ - **On**: Select the column from the **selected table** and the **joining table** on which you want to join the tables. Currently, only `=` operation is supported for joining tables.
+ - **AND or OR condition**: You can add multiple conditions by clicking on the **+Add more** button below each join. The conditions can be joined by `AND` or `OR` operation.
+
+
+
+
+
+
+
+- **Filter**: Add a condition by choosing a column, an operation, and the value for filtering the records. The operations supported are same as the [filter operations](#available-operations-are) for the **List rows** operation.
+- **Sort**: Sort the query response by choosing a column and the order (ascending or descending).
+- **Limit**: Limit the number of records to be returned by entering a number.
+- **Offset**: Offset the number of records to be returned by entering a number. This parameter is used for pagination.
+- **Select**: Select the columns that you want to return in the query response. By default, all the columns are selected.
+
+
+
+
+
+
:::info
If you have any other questions or feedback about **ToolJet Database**, please reach us out at hello@tooljet.com or join our **[Slack Community](https://www.tooljet.com/slack)**
diff --git a/docs/docs/tutorial/manage-users-groups.md b/docs/docs/tutorial/manage-users-groups.md
index b1b86ff215..f75471375c 100644
--- a/docs/docs/tutorial/manage-users-groups.md
+++ b/docs/docs/tutorial/manage-users-groups.md
@@ -90,7 +90,7 @@ Every group on ToolJet has **four** sections:
- [Apps](#apps)
- [Users](#users)
- [Permissions](#permissions)
-- [Datasources](#datasources)
+- [Data Sources](#data-sources)
#### Apps:
@@ -117,8 +117,8 @@ Admins and Super Admins can add or remove any numbers of users in a group. Just
Admins and Super Admins can set granular permission for the users added in that particular group, such as:
- **Create** and **Delete** Apps
- **Create**, **Update**, and **Delete** Folders
-- **Create**, **Update**, and **Delete** [Workspace Variables](/docs/tutorial/workspace-variables)
-- **Create** and **Delete** [Global Datasources](/docs/widgets/overview)
+- **Create**, **Update**, and **Delete** [Workspace Constants](/docs/org-management/workspaces/workspace_constants/)
+- **Create** and **Delete** [Data Sources](/docs/data-sources/overview)
@@ -126,9 +126,9 @@ Admins and Super Admins can set granular permission for the users added in that
-#### Datasources:
+#### Data Sources
-Only Admins and Super Admins can define what datasources can be **viewed** or **edited** by the users of that group.
+Only Admins and Super Admins can define what data sources can be **viewed** or **edited** by the users of that group.
@@ -172,7 +172,9 @@ This group contains admins by default. Admins can add more admins or remove the
-### Creating new group
+### Creating new group (Paid plans only)
+
+Option to create a new group is available in the **paid plans** only. To create a new group:
- Click on `Create new group` button in the **Groups** page.
diff --git a/docs/docusaurus.config.js b/docs/docusaurus.config.js
index 80b015df32..73b02d706a 100644
--- a/docs/docusaurus.config.js
+++ b/docs/docusaurus.config.js
@@ -121,7 +121,7 @@ module.exports = {
// Please change this to your repo.
editUrl: 'https://github.com/ToolJet/Tooljet/blob/develop/docs/',
includeCurrentVersion: false,
- lastVersion: '2.17.0',
+ lastVersion: '2.19.0',
},
theme: {
customCss: require.resolve('./src/css/custom.css'),
diff --git a/docs/sidebars.js b/docs/sidebars.js
index a464162013..230f897487 100644
--- a/docs/sidebars.js
+++ b/docs/sidebars.js
@@ -22,7 +22,6 @@ const sidebars = {
'setup/try-tooljet',
'setup/digitalocean',
'setup/docker',
- 'setup/heroku',
'setup/ec2',
'setup/ecs',
'setup/openshift',
@@ -39,7 +38,6 @@ const sidebars = {
'setup/v2-migration-guide'
]
},
- 'licensing',
'tooljet-database',
'tooljet-copilot',
{
@@ -291,6 +289,7 @@ const sidebars = {
'Enterprise/audit_logs',
'Enterprise/white-label',
'Enterprise/superadmin',
+ 'org-management/licensing',
],
},
{
@@ -360,7 +359,6 @@ const sidebars = {
'how-to/access-users-location',
'how-to/use-s3-signed-url-to-upload-docs',
'how-to/s3-custom-endpoints',
- 'how-to/oauth2-authorization',
'how-to/upload-files-aws',
'how-to/upload-files-gcs',
'how-to/loading-image-pdf-from-db',
@@ -429,7 +427,7 @@ const sidebars = {
{
'type': 'link',
'label': 'Roadmap',
- 'href': 'https://github.com/ToolJet/ToolJet/projects/2?query=is%3Aopen+sort%3Aupdated-desc',
+ 'href': 'https://github.com/tooljet/tooljet/milestones',
},
],
},
diff --git a/docs/src/css/custom.css b/docs/src/css/custom.css
index be275b1c57..4f64289f90 100644
--- a/docs/src/css/custom.css
+++ b/docs/src/css/custom.css
@@ -271,6 +271,10 @@ img {
width: 13px;
}
+.DocSearch-Button-Placeholder {
+ font-size: 0.85rem
+}
+
@media screen and (min-width: 768px) {
.DocSearch-Button-Container {
min-width: 200px;
diff --git a/docs/static/img/datasource-reference/rest-api/bearersuccess.png b/docs/static/img/datasource-reference/rest-api/bearersuccess.png
new file mode 100644
index 0000000000..b0397b2fb9
Binary files /dev/null and b/docs/static/img/datasource-reference/rest-api/bearersuccess.png differ
diff --git a/docs/static/img/datasource-reference/rest-api/cacert.png b/docs/static/img/datasource-reference/rest-api/cacert.png
new file mode 100644
index 0000000000..8adb7ebbf7
Binary files /dev/null and b/docs/static/img/datasource-reference/rest-api/cacert.png differ
diff --git a/docs/static/img/datasource-reference/rest-api/clientcert.png b/docs/static/img/datasource-reference/rest-api/clientcert.png
new file mode 100644
index 0000000000..54be7b94cb
Binary files /dev/null and b/docs/static/img/datasource-reference/rest-api/clientcert.png differ
diff --git a/docs/static/img/datasource-reference/rest-api/none.png b/docs/static/img/datasource-reference/rest-api/none.png
new file mode 100644
index 0000000000..185b95595b
Binary files /dev/null and b/docs/static/img/datasource-reference/rest-api/none.png differ
diff --git a/docs/static/img/enterprise/superadmin/allusersa.png b/docs/static/img/enterprise/superadmin/allusersa.png
new file mode 100644
index 0000000000..b467813ec9
Binary files /dev/null and b/docs/static/img/enterprise/superadmin/allusersa.png differ
diff --git a/docs/static/img/enterprise/superadmin/archivesa.png b/docs/static/img/enterprise/superadmin/archivesa.png
new file mode 100644
index 0000000000..5917b94454
Binary files /dev/null and b/docs/static/img/enterprise/superadmin/archivesa.png differ
diff --git a/docs/static/img/enterprise/superadmin/instanceset.png b/docs/static/img/enterprise/superadmin/instanceset.png
new file mode 100644
index 0000000000..fb37feaf1d
Binary files /dev/null and b/docs/static/img/enterprise/superadmin/instanceset.png differ
diff --git a/docs/static/img/enterprise/superadmin/instancesett.png b/docs/static/img/enterprise/superadmin/instancesett.png
new file mode 100644
index 0000000000..46187d7c44
Binary files /dev/null and b/docs/static/img/enterprise/superadmin/instancesett.png differ
diff --git a/docs/static/img/enterprise/superadmin/saset.png b/docs/static/img/enterprise/superadmin/saset.png
new file mode 100644
index 0000000000..d03527426b
Binary files /dev/null and b/docs/static/img/enterprise/superadmin/saset.png differ
diff --git a/docs/static/img/enterprise/superadmin/unarchivesa.png b/docs/static/img/enterprise/superadmin/unarchivesa.png
new file mode 100644
index 0000000000..39c38b91fd
Binary files /dev/null and b/docs/static/img/enterprise/superadmin/unarchivesa.png differ
diff --git a/docs/static/img/enterprise/superadmin/workspaceswitcher.png b/docs/static/img/enterprise/superadmin/workspaceswitcher.png
new file mode 100644
index 0000000000..5971435d0b
Binary files /dev/null and b/docs/static/img/enterprise/superadmin/workspaceswitcher.png differ
diff --git a/docs/static/img/enterprise/white-label/newdash.png b/docs/static/img/enterprise/white-label/newdash.png
new file mode 100644
index 0000000000..7c389b8ce0
Binary files /dev/null and b/docs/static/img/enterprise/white-label/newdash.png differ
diff --git a/docs/static/img/enterprise/white-label/newfav.png b/docs/static/img/enterprise/white-label/newfav.png
new file mode 100644
index 0000000000..630c0a6e1e
Binary files /dev/null and b/docs/static/img/enterprise/white-label/newfav.png differ
diff --git a/docs/static/img/enterprise/white-label/title.png b/docs/static/img/enterprise/white-label/title.png
new file mode 100644
index 0000000000..369ce8f39a
Binary files /dev/null and b/docs/static/img/enterprise/white-label/title.png differ
diff --git a/docs/static/img/enterprise/white-label/whitelabelsettings.png b/docs/static/img/enterprise/white-label/whitelabelsettings.png
new file mode 100644
index 0000000000..5317b2a8a5
Binary files /dev/null and b/docs/static/img/enterprise/white-label/whitelabelsettings.png differ
diff --git a/docs/static/img/setup/digitalocean/1.png b/docs/static/img/setup/digitalocean/1.png
new file mode 100644
index 0000000000..3f19837eb0
Binary files /dev/null and b/docs/static/img/setup/digitalocean/1.png differ
diff --git a/docs/static/img/setup/digitalocean/10.png b/docs/static/img/setup/digitalocean/10.png
new file mode 100644
index 0000000000..f30b77a0ef
Binary files /dev/null and b/docs/static/img/setup/digitalocean/10.png differ
diff --git a/docs/static/img/setup/digitalocean/11.png b/docs/static/img/setup/digitalocean/11.png
new file mode 100644
index 0000000000..2b1a39071e
Binary files /dev/null and b/docs/static/img/setup/digitalocean/11.png differ
diff --git a/docs/static/img/setup/digitalocean/12.png b/docs/static/img/setup/digitalocean/12.png
new file mode 100644
index 0000000000..834323f7a9
Binary files /dev/null and b/docs/static/img/setup/digitalocean/12.png differ
diff --git a/docs/static/img/setup/digitalocean/2.png b/docs/static/img/setup/digitalocean/2.png
new file mode 100644
index 0000000000..bac9070589
Binary files /dev/null and b/docs/static/img/setup/digitalocean/2.png differ
diff --git a/docs/static/img/setup/digitalocean/3.png b/docs/static/img/setup/digitalocean/3.png
new file mode 100644
index 0000000000..53a9427e23
Binary files /dev/null and b/docs/static/img/setup/digitalocean/3.png differ
diff --git a/docs/static/img/setup/digitalocean/4.png b/docs/static/img/setup/digitalocean/4.png
new file mode 100644
index 0000000000..a221f7498e
Binary files /dev/null and b/docs/static/img/setup/digitalocean/4.png differ
diff --git a/docs/static/img/setup/digitalocean/5.png b/docs/static/img/setup/digitalocean/5.png
new file mode 100644
index 0000000000..c33bc6b801
Binary files /dev/null and b/docs/static/img/setup/digitalocean/5.png differ
diff --git a/docs/static/img/setup/digitalocean/6.png b/docs/static/img/setup/digitalocean/6.png
new file mode 100644
index 0000000000..bad1993fea
Binary files /dev/null and b/docs/static/img/setup/digitalocean/6.png differ
diff --git a/docs/static/img/setup/digitalocean/7.png b/docs/static/img/setup/digitalocean/7.png
new file mode 100644
index 0000000000..937b2a63a5
Binary files /dev/null and b/docs/static/img/setup/digitalocean/7.png differ
diff --git a/docs/static/img/setup/digitalocean/8.png b/docs/static/img/setup/digitalocean/8.png
new file mode 100644
index 0000000000..9894b2bc9a
Binary files /dev/null and b/docs/static/img/setup/digitalocean/8.png differ
diff --git a/docs/static/img/setup/digitalocean/9.png b/docs/static/img/setup/digitalocean/9.png
new file mode 100644
index 0000000000..ebe1043bb1
Binary files /dev/null and b/docs/static/img/setup/digitalocean/9.png differ
diff --git a/docs/static/img/v2-beta/database/newui/create1.png b/docs/static/img/v2-beta/database/newui/create1.png
new file mode 100644
index 0000000000..71d7f54b8e
Binary files /dev/null and b/docs/static/img/v2-beta/database/newui/create1.png differ
diff --git a/docs/static/img/v2-beta/database/newui/create2.png b/docs/static/img/v2-beta/database/newui/create2.png
new file mode 100644
index 0000000000..1ec46ec485
Binary files /dev/null and b/docs/static/img/v2-beta/database/newui/create2.png differ
diff --git a/docs/static/img/v2-beta/database/newui/delete1.png b/docs/static/img/v2-beta/database/newui/delete1.png
new file mode 100644
index 0000000000..7b268d6b3f
Binary files /dev/null and b/docs/static/img/v2-beta/database/newui/delete1.png differ
diff --git a/docs/static/img/v2-beta/database/newui/delete11.png b/docs/static/img/v2-beta/database/newui/delete11.png
new file mode 100644
index 0000000000..1d28fda91d
Binary files /dev/null and b/docs/static/img/v2-beta/database/newui/delete11.png differ
diff --git a/docs/static/img/v2-beta/database/newui/edit1.png b/docs/static/img/v2-beta/database/newui/edit1.png
new file mode 100644
index 0000000000..cd61c1cb3b
Binary files /dev/null and b/docs/static/img/v2-beta/database/newui/edit1.png differ
diff --git a/docs/static/img/v2-beta/database/newui/exporttable.png b/docs/static/img/v2-beta/database/newui/exporttable.png
new file mode 100644
index 0000000000..e968b61f01
Binary files /dev/null and b/docs/static/img/v2-beta/database/newui/exporttable.png differ
diff --git a/docs/static/img/v2-beta/database/newui/filter1.png b/docs/static/img/v2-beta/database/newui/filter1.png
new file mode 100644
index 0000000000..ec68f4ccc1
Binary files /dev/null and b/docs/static/img/v2-beta/database/newui/filter1.png differ
diff --git a/docs/static/img/v2-beta/database/newui/join.png b/docs/static/img/v2-beta/database/newui/join.png
new file mode 100644
index 0000000000..fe3953c116
Binary files /dev/null and b/docs/static/img/v2-beta/database/newui/join.png differ
diff --git a/docs/static/img/v2-beta/database/newui/join1.png b/docs/static/img/v2-beta/database/newui/join1.png
new file mode 100644
index 0000000000..d808a428a8
Binary files /dev/null and b/docs/static/img/v2-beta/database/newui/join1.png differ
diff --git a/docs/static/img/v2-beta/database/newui/join2.png b/docs/static/img/v2-beta/database/newui/join2.png
new file mode 100644
index 0000000000..d9a18d08f1
Binary files /dev/null and b/docs/static/img/v2-beta/database/newui/join2.png differ
diff --git a/docs/static/img/v2-beta/database/newui/newcolumn1.png b/docs/static/img/v2-beta/database/newui/newcolumn1.png
new file mode 100644
index 0000000000..a94b7d7f63
Binary files /dev/null and b/docs/static/img/v2-beta/database/newui/newcolumn1.png differ
diff --git a/docs/static/img/v2-beta/database/newui/qtjdb.png b/docs/static/img/v2-beta/database/newui/qtjdb.png
new file mode 100644
index 0000000000..6ed646f436
Binary files /dev/null and b/docs/static/img/v2-beta/database/newui/qtjdb.png differ
diff --git a/docs/static/img/v2-beta/database/newui/qtjdb2.png b/docs/static/img/v2-beta/database/newui/qtjdb2.png
new file mode 100644
index 0000000000..08c7f5ea79
Binary files /dev/null and b/docs/static/img/v2-beta/database/newui/qtjdb2.png differ
diff --git a/docs/static/img/v2-beta/database/newui/search1.png b/docs/static/img/v2-beta/database/newui/search1.png
new file mode 100644
index 0000000000..cd4ad29281
Binary files /dev/null and b/docs/static/img/v2-beta/database/newui/search1.png differ
diff --git a/docs/static/img/v2-beta/database/newui/sort1.png b/docs/static/img/v2-beta/database/newui/sort1.png
new file mode 100644
index 0000000000..6bf99d203b
Binary files /dev/null and b/docs/static/img/v2-beta/database/newui/sort1.png differ
diff --git a/docs/static/img/v2-beta/database/newui/tables1.png b/docs/static/img/v2-beta/database/newui/tables1.png
new file mode 100644
index 0000000000..3f5d259568
Binary files /dev/null and b/docs/static/img/v2-beta/database/newui/tables1.png differ
diff --git a/docs/static/img/v2-beta/database/newui/tjdb1.png b/docs/static/img/v2-beta/database/newui/tjdb1.png
new file mode 100644
index 0000000000..29e0e27cf2
Binary files /dev/null and b/docs/static/img/v2-beta/database/newui/tjdb1.png differ
diff --git a/docs/static/img/v2-beta/database/newui/tjdbdash.png b/docs/static/img/v2-beta/database/newui/tjdbdash.png
new file mode 100644
index 0000000000..e583855a4f
Binary files /dev/null and b/docs/static/img/v2-beta/database/newui/tjdbdash.png differ
diff --git a/docs/static/img/v2-beta/database/newui2/addnewcolumn.png b/docs/static/img/v2-beta/database/newui2/addnewcolumn.png
new file mode 100644
index 0000000000..1cd6ccc5a0
Binary files /dev/null and b/docs/static/img/v2-beta/database/newui2/addnewcolumn.png differ
diff --git a/docs/static/img/v2-beta/database/newui2/addnewrow.png b/docs/static/img/v2-beta/database/newui2/addnewrow.png
new file mode 100644
index 0000000000..b0af957a40
Binary files /dev/null and b/docs/static/img/v2-beta/database/newui2/addnewrow.png differ
diff --git a/docs/static/img/v2-beta/database/newui2/create2.png b/docs/static/img/v2-beta/database/newui2/create2.png
new file mode 100644
index 0000000000..34fdcb9acb
Binary files /dev/null and b/docs/static/img/v2-beta/database/newui2/create2.png differ
diff --git a/docs/static/img/v2-beta/database/newui2/createnew.png b/docs/static/img/v2-beta/database/newui2/createnew.png
new file mode 100644
index 0000000000..367bfc48cf
Binary files /dev/null and b/docs/static/img/v2-beta/database/newui2/createnew.png differ
diff --git a/docs/static/img/v2-beta/database/newui2/datatypes.png b/docs/static/img/v2-beta/database/newui2/datatypes.png
new file mode 100644
index 0000000000..23c49d2ff2
Binary files /dev/null and b/docs/static/img/v2-beta/database/newui2/datatypes.png differ
diff --git a/docs/static/img/v2-beta/database/newui2/deletecol.png b/docs/static/img/v2-beta/database/newui2/deletecol.png
new file mode 100644
index 0000000000..a81c0049ca
Binary files /dev/null and b/docs/static/img/v2-beta/database/newui2/deletecol.png differ
diff --git a/docs/static/img/v2-beta/database/newui2/deleterec.png b/docs/static/img/v2-beta/database/newui2/deleterec.png
new file mode 100644
index 0000000000..179811477c
Binary files /dev/null and b/docs/static/img/v2-beta/database/newui2/deleterec.png differ
diff --git a/docs/static/img/v2-beta/database/newui2/deletetable.png b/docs/static/img/v2-beta/database/newui2/deletetable.png
new file mode 100644
index 0000000000..c7f3d0e625
Binary files /dev/null and b/docs/static/img/v2-beta/database/newui2/deletetable.png differ
diff --git a/docs/static/img/v2-beta/database/newui2/editrow.gif b/docs/static/img/v2-beta/database/newui2/editrow.gif
new file mode 100644
index 0000000000..3d69b46720
Binary files /dev/null and b/docs/static/img/v2-beta/database/newui2/editrow.gif differ
diff --git a/docs/static/img/v2-beta/database/newui2/edittablename.png b/docs/static/img/v2-beta/database/newui2/edittablename.png
new file mode 100644
index 0000000000..f21211fb06
Binary files /dev/null and b/docs/static/img/v2-beta/database/newui2/edittablename.png differ
diff --git a/docs/static/img/v2-beta/database/newui2/export.png b/docs/static/img/v2-beta/database/newui2/export.png
new file mode 100644
index 0000000000..ecdac23632
Binary files /dev/null and b/docs/static/img/v2-beta/database/newui2/export.png differ
diff --git a/docs/static/img/v2-beta/database/newui2/filters.png b/docs/static/img/v2-beta/database/newui2/filters.png
new file mode 100644
index 0000000000..d3c4ab2623
Binary files /dev/null and b/docs/static/img/v2-beta/database/newui2/filters.png differ
diff --git a/docs/static/img/v2-beta/database/newui2/search.png b/docs/static/img/v2-beta/database/newui2/search.png
new file mode 100644
index 0000000000..0615514379
Binary files /dev/null and b/docs/static/img/v2-beta/database/newui2/search.png differ
diff --git a/docs/static/img/v2-beta/database/newui2/sidebaroption.png b/docs/static/img/v2-beta/database/newui2/sidebaroption.png
new file mode 100644
index 0000000000..4bea713ab4
Binary files /dev/null and b/docs/static/img/v2-beta/database/newui2/sidebaroption.png differ
diff --git a/docs/static/img/v2-beta/database/newui2/sort.png b/docs/static/img/v2-beta/database/newui2/sort.png
new file mode 100644
index 0000000000..4876fe4ca5
Binary files /dev/null and b/docs/static/img/v2-beta/database/newui2/sort.png differ
diff --git a/docs/static/img/v2-beta/database/newui2/tabledash.png b/docs/static/img/v2-beta/database/newui2/tabledash.png
new file mode 100644
index 0000000000..bb03c781a4
Binary files /dev/null and b/docs/static/img/v2-beta/database/newui2/tabledash.png differ
diff --git a/docs/static/img/v2-beta/database/newui2/tablescol.png b/docs/static/img/v2-beta/database/newui2/tablescol.png
new file mode 100644
index 0000000000..d154e06f0d
Binary files /dev/null and b/docs/static/img/v2-beta/database/newui2/tablescol.png differ
diff --git a/docs/static/img/v2-beta/database/newui2/uploadcsv.png b/docs/static/img/v2-beta/database/newui2/uploadcsv.png
new file mode 100644
index 0000000000..e74036314f
Binary files /dev/null and b/docs/static/img/v2-beta/database/newui2/uploadcsv.png differ
diff --git a/docs/static/img/v2-beta/multi-env/multienvtabs.png b/docs/static/img/v2-beta/multi-env/multienvtabs.png
new file mode 100644
index 0000000000..2e00f397b2
Binary files /dev/null and b/docs/static/img/v2-beta/multi-env/multienvtabs.png differ
diff --git a/docs/versioned_docs/version-2.10.0/copilot.md b/docs/versioned_docs/version-2.10.0/copilot.md
index 442b26f348..8400b47241 100644
--- a/docs/versioned_docs/version-2.10.0/copilot.md
+++ b/docs/versioned_docs/version-2.10.0/copilot.md
@@ -6,7 +6,7 @@ title: Copilot
Available on: Paid plans
:::info BETA
-ToolJet Copilot is currently in private beta for **Business** and **Enterprise** users only. It is not yet available for ToolJet Community Edition, but we plan to make it accessible in the future.
+ToolJet Copilot is currently in private beta for **Business** and **Enterprise** users only.
:::
**ToolJet Copilot** helps you write your queries faster. It uses OpenAI to suggest queries based on your data.
diff --git a/docs/versioned_docs/version-2.10.0/data-sources/s3.md b/docs/versioned_docs/version-2.10.0/data-sources/s3.md
index ba1a029fb2..db8f35c780 100644
--- a/docs/versioned_docs/version-2.10.0/data-sources/s3.md
+++ b/docs/versioned_docs/version-2.10.0/data-sources/s3.md
@@ -11,7 +11,9 @@ ToolJet can connect to Amazon S3 buckets and perform various operation on them.
To add a new S3 source, go to the **Datasources manager** on the left sidebar of the app editor and click on `Add datasource` button. Select **AWS S3** from the modal that pops up.
-ToolJet requires the following to connect to your AWS S3:
+ToolJet supports connecting to AWS S3 using **IAM credentials**, **AWS Instance Profile** or **AWS ARN Role**.
+
+If you are using **IAM credentials**, you will need to provide the following details:
- **Region**
- **Access key**
@@ -21,7 +23,27 @@ It is recommended to create a new IAM user for the database so that you can cont
-
+
+
+
+
+To connect to AWS S3 using **AWS Instance Profile**, select the **Use AWS Instance Profile**. This will use the IAM role attached to the EC2 instance where ToolJet is running.
+To access the metadata service of an ECS container and the EC2 instance, we use the WebIdentityToken parameter which is obtained from a successful login with an identity provider.
+
+
+
+
+
+
+
+If you are using **AWS ARN Role**, you will need to provide the following details:
+
+- **Region**
+- **Role ARN**
+
+
+
+
diff --git a/docs/versioned_docs/version-2.10.0/release-management/multi-env.md b/docs/versioned_docs/version-2.10.0/release-management/multi-env.md
index d326e9d2db..64f173b1b8 100644
--- a/docs/versioned_docs/version-2.10.0/release-management/multi-env.md
+++ b/docs/versioned_docs/version-2.10.0/release-management/multi-env.md
@@ -109,4 +109,4 @@ To configure connection settings for different environments, follow these steps:
Please note that only one version of the app can be released at a time.
:::
-ToolJet automatically saves your most recently selected environment in the app builder. The next time you open an app, it will use the same environment. For example, if you switch to the staging environment in an app, the next time you open it will automatically use the same staging environment.
+ToolJet's app builder remembers your last editing state. When you reopen an app, it resumes from where you left off, ensuring a seamless experience. For instance, if you edited an app in the staging environment, it will open in the staging environment when you return.
diff --git a/docs/versioned_docs/version-2.10.0/setup/env-vars.md b/docs/versioned_docs/version-2.10.0/setup/env-vars.md
index 0299608bff..d1f15113f2 100644
--- a/docs/versioned_docs/version-2.10.0/setup/env-vars.md
+++ b/docs/versioned_docs/version-2.10.0/setup/env-vars.md
@@ -49,7 +49,7 @@ If you are using docker-compose setup, you can set PG_HOST as `postgres` which w
:::
:::info
-If you intent you use the DB connection url and if the connection does not support ssl. Please use the below format using the variable DATABASE_URL.
+If you intend to use the DB connection url and if the connection does not support ssl. Please use the below format using the variable DATABASE_URL.
`postgres://username:password@hostname:port/database_name?sslmode=disable`
:::
@@ -121,7 +121,7 @@ Incase you want to trigger it manually, use the command `npm run db:create` on T
:::
:::info
-If you intent you use the DB connection url and if the connection does not support ssl. Please use the below format using the variable TOOLJET_DB_URL.
+If you intend to use the DB connection url and if the connection does not support ssl. Please use the below format using the variable TOOLJET_DB_URL.
`postgres://username:password@hostname:port/database_name?sslmode=disable`
:::
diff --git a/docs/versioned_docs/version-2.11.0/copilot.md b/docs/versioned_docs/version-2.11.0/copilot.md
index e9b7320e55..8400b47241 100644
--- a/docs/versioned_docs/version-2.11.0/copilot.md
+++ b/docs/versioned_docs/version-2.11.0/copilot.md
@@ -6,10 +6,9 @@ title: Copilot
Available on: Paid plans
:::info BETA
-ToolJet Copilot is currently in private beta for **Business** and **Enterprise** users only. It is not yet available for ToolJet Community Edition, but we plan to make it accessible in the future.
+ToolJet Copilot is currently in private beta for **Business** and **Enterprise** users only.
:::
-
**ToolJet Copilot** helps you write your queries faster. It uses OpenAI to suggest queries based on your data.
## Activating Copilot
diff --git a/docs/versioned_docs/version-2.11.0/data-sources/s3.md b/docs/versioned_docs/version-2.11.0/data-sources/s3.md
index ba1a029fb2..db8f35c780 100644
--- a/docs/versioned_docs/version-2.11.0/data-sources/s3.md
+++ b/docs/versioned_docs/version-2.11.0/data-sources/s3.md
@@ -11,7 +11,9 @@ ToolJet can connect to Amazon S3 buckets and perform various operation on them.
To add a new S3 source, go to the **Datasources manager** on the left sidebar of the app editor and click on `Add datasource` button. Select **AWS S3** from the modal that pops up.
-ToolJet requires the following to connect to your AWS S3:
+ToolJet supports connecting to AWS S3 using **IAM credentials**, **AWS Instance Profile** or **AWS ARN Role**.
+
+If you are using **IAM credentials**, you will need to provide the following details:
- **Region**
- **Access key**
@@ -21,7 +23,27 @@ It is recommended to create a new IAM user for the database so that you can cont
-
+
+
+
+
+To connect to AWS S3 using **AWS Instance Profile**, select the **Use AWS Instance Profile**. This will use the IAM role attached to the EC2 instance where ToolJet is running.
+To access the metadata service of an ECS container and the EC2 instance, we use the WebIdentityToken parameter which is obtained from a successful login with an identity provider.
+
+
+
+
+
+
+
+If you are using **AWS ARN Role**, you will need to provide the following details:
+
+- **Region**
+- **Role ARN**
+
+
+
+
diff --git a/docs/versioned_docs/version-2.11.0/release-management/multi-env.md b/docs/versioned_docs/version-2.11.0/release-management/multi-env.md
index d326e9d2db..64f173b1b8 100644
--- a/docs/versioned_docs/version-2.11.0/release-management/multi-env.md
+++ b/docs/versioned_docs/version-2.11.0/release-management/multi-env.md
@@ -109,4 +109,4 @@ To configure connection settings for different environments, follow these steps:
Please note that only one version of the app can be released at a time.
:::
-ToolJet automatically saves your most recently selected environment in the app builder. The next time you open an app, it will use the same environment. For example, if you switch to the staging environment in an app, the next time you open it will automatically use the same staging environment.
+ToolJet's app builder remembers your last editing state. When you reopen an app, it resumes from where you left off, ensuring a seamless experience. For instance, if you edited an app in the staging environment, it will open in the staging environment when you return.
diff --git a/docs/versioned_docs/version-2.11.0/setup/env-vars.md b/docs/versioned_docs/version-2.11.0/setup/env-vars.md
index 0299608bff..d1f15113f2 100644
--- a/docs/versioned_docs/version-2.11.0/setup/env-vars.md
+++ b/docs/versioned_docs/version-2.11.0/setup/env-vars.md
@@ -49,7 +49,7 @@ If you are using docker-compose setup, you can set PG_HOST as `postgres` which w
:::
:::info
-If you intent you use the DB connection url and if the connection does not support ssl. Please use the below format using the variable DATABASE_URL.
+If you intend to use the DB connection url and if the connection does not support ssl. Please use the below format using the variable DATABASE_URL.
`postgres://username:password@hostname:port/database_name?sslmode=disable`
:::
@@ -121,7 +121,7 @@ Incase you want to trigger it manually, use the command `npm run db:create` on T
:::
:::info
-If you intent you use the DB connection url and if the connection does not support ssl. Please use the below format using the variable TOOLJET_DB_URL.
+If you intend to use the DB connection url and if the connection does not support ssl. Please use the below format using the variable TOOLJET_DB_URL.
`postgres://username:password@hostname:port/database_name?sslmode=disable`
:::
diff --git a/docs/versioned_docs/version-2.12.0/copilot.md b/docs/versioned_docs/version-2.12.0/copilot.md
index 442b26f348..8400b47241 100644
--- a/docs/versioned_docs/version-2.12.0/copilot.md
+++ b/docs/versioned_docs/version-2.12.0/copilot.md
@@ -6,7 +6,7 @@ title: Copilot
Available on: Paid plans
:::info BETA
-ToolJet Copilot is currently in private beta for **Business** and **Enterprise** users only. It is not yet available for ToolJet Community Edition, but we plan to make it accessible in the future.
+ToolJet Copilot is currently in private beta for **Business** and **Enterprise** users only.
:::
**ToolJet Copilot** helps you write your queries faster. It uses OpenAI to suggest queries based on your data.
diff --git a/docs/versioned_docs/version-2.12.0/data-sources/s3.md b/docs/versioned_docs/version-2.12.0/data-sources/s3.md
index ba1a029fb2..db8f35c780 100644
--- a/docs/versioned_docs/version-2.12.0/data-sources/s3.md
+++ b/docs/versioned_docs/version-2.12.0/data-sources/s3.md
@@ -11,7 +11,9 @@ ToolJet can connect to Amazon S3 buckets and perform various operation on them.
To add a new S3 source, go to the **Datasources manager** on the left sidebar of the app editor and click on `Add datasource` button. Select **AWS S3** from the modal that pops up.
-ToolJet requires the following to connect to your AWS S3:
+ToolJet supports connecting to AWS S3 using **IAM credentials**, **AWS Instance Profile** or **AWS ARN Role**.
+
+If you are using **IAM credentials**, you will need to provide the following details:
- **Region**
- **Access key**
@@ -21,7 +23,27 @@ It is recommended to create a new IAM user for the database so that you can cont
-
+
+
+
+
+To connect to AWS S3 using **AWS Instance Profile**, select the **Use AWS Instance Profile**. This will use the IAM role attached to the EC2 instance where ToolJet is running.
+To access the metadata service of an ECS container and the EC2 instance, we use the WebIdentityToken parameter which is obtained from a successful login with an identity provider.
+
+
+
+
+
+
+
+If you are using **AWS ARN Role**, you will need to provide the following details:
+
+- **Region**
+- **Role ARN**
+
+
+
+
diff --git a/docs/versioned_docs/version-2.12.0/release-management/multi-env.md b/docs/versioned_docs/version-2.12.0/release-management/multi-env.md
index d326e9d2db..64f173b1b8 100644
--- a/docs/versioned_docs/version-2.12.0/release-management/multi-env.md
+++ b/docs/versioned_docs/version-2.12.0/release-management/multi-env.md
@@ -109,4 +109,4 @@ To configure connection settings for different environments, follow these steps:
Please note that only one version of the app can be released at a time.
:::
-ToolJet automatically saves your most recently selected environment in the app builder. The next time you open an app, it will use the same environment. For example, if you switch to the staging environment in an app, the next time you open it will automatically use the same staging environment.
+ToolJet's app builder remembers your last editing state. When you reopen an app, it resumes from where you left off, ensuring a seamless experience. For instance, if you edited an app in the staging environment, it will open in the staging environment when you return.
diff --git a/docs/versioned_docs/version-2.12.0/setup/env-vars.md b/docs/versioned_docs/version-2.12.0/setup/env-vars.md
index 0299608bff..d1f15113f2 100644
--- a/docs/versioned_docs/version-2.12.0/setup/env-vars.md
+++ b/docs/versioned_docs/version-2.12.0/setup/env-vars.md
@@ -49,7 +49,7 @@ If you are using docker-compose setup, you can set PG_HOST as `postgres` which w
:::
:::info
-If you intent you use the DB connection url and if the connection does not support ssl. Please use the below format using the variable DATABASE_URL.
+If you intend to use the DB connection url and if the connection does not support ssl. Please use the below format using the variable DATABASE_URL.
`postgres://username:password@hostname:port/database_name?sslmode=disable`
:::
@@ -121,7 +121,7 @@ Incase you want to trigger it manually, use the command `npm run db:create` on T
:::
:::info
-If you intent you use the DB connection url and if the connection does not support ssl. Please use the below format using the variable TOOLJET_DB_URL.
+If you intend to use the DB connection url and if the connection does not support ssl. Please use the below format using the variable TOOLJET_DB_URL.
`postgres://username:password@hostname:port/database_name?sslmode=disable`
:::
diff --git a/docs/versioned_docs/version-2.13.0/copilot.md b/docs/versioned_docs/version-2.13.0/copilot.md
index 442b26f348..8400b47241 100644
--- a/docs/versioned_docs/version-2.13.0/copilot.md
+++ b/docs/versioned_docs/version-2.13.0/copilot.md
@@ -6,7 +6,7 @@ title: Copilot
Available on: Paid plans
:::info BETA
-ToolJet Copilot is currently in private beta for **Business** and **Enterprise** users only. It is not yet available for ToolJet Community Edition, but we plan to make it accessible in the future.
+ToolJet Copilot is currently in private beta for **Business** and **Enterprise** users only.
:::
**ToolJet Copilot** helps you write your queries faster. It uses OpenAI to suggest queries based on your data.
diff --git a/docs/versioned_docs/version-2.13.0/data-sources/s3.md b/docs/versioned_docs/version-2.13.0/data-sources/s3.md
index ba1a029fb2..db8f35c780 100644
--- a/docs/versioned_docs/version-2.13.0/data-sources/s3.md
+++ b/docs/versioned_docs/version-2.13.0/data-sources/s3.md
@@ -11,7 +11,9 @@ ToolJet can connect to Amazon S3 buckets and perform various operation on them.
To add a new S3 source, go to the **Datasources manager** on the left sidebar of the app editor and click on `Add datasource` button. Select **AWS S3** from the modal that pops up.
-ToolJet requires the following to connect to your AWS S3:
+ToolJet supports connecting to AWS S3 using **IAM credentials**, **AWS Instance Profile** or **AWS ARN Role**.
+
+If you are using **IAM credentials**, you will need to provide the following details:
- **Region**
- **Access key**
@@ -21,7 +23,27 @@ It is recommended to create a new IAM user for the database so that you can cont
-
+
+
+
+
+To connect to AWS S3 using **AWS Instance Profile**, select the **Use AWS Instance Profile**. This will use the IAM role attached to the EC2 instance where ToolJet is running.
+To access the metadata service of an ECS container and the EC2 instance, we use the WebIdentityToken parameter which is obtained from a successful login with an identity provider.
+
+
+
+
+
+
+
+If you are using **AWS ARN Role**, you will need to provide the following details:
+
+- **Region**
+- **Role ARN**
+
+
+
+
diff --git a/docs/versioned_docs/version-2.13.0/release-management/multi-env.md b/docs/versioned_docs/version-2.13.0/release-management/multi-env.md
index d326e9d2db..64f173b1b8 100644
--- a/docs/versioned_docs/version-2.13.0/release-management/multi-env.md
+++ b/docs/versioned_docs/version-2.13.0/release-management/multi-env.md
@@ -109,4 +109,4 @@ To configure connection settings for different environments, follow these steps:
Please note that only one version of the app can be released at a time.
:::
-ToolJet automatically saves your most recently selected environment in the app builder. The next time you open an app, it will use the same environment. For example, if you switch to the staging environment in an app, the next time you open it will automatically use the same staging environment.
+ToolJet's app builder remembers your last editing state. When you reopen an app, it resumes from where you left off, ensuring a seamless experience. For instance, if you edited an app in the staging environment, it will open in the staging environment when you return.
diff --git a/docs/versioned_docs/version-2.13.0/setup/env-vars.md b/docs/versioned_docs/version-2.13.0/setup/env-vars.md
index 0299608bff..d1f15113f2 100644
--- a/docs/versioned_docs/version-2.13.0/setup/env-vars.md
+++ b/docs/versioned_docs/version-2.13.0/setup/env-vars.md
@@ -49,7 +49,7 @@ If you are using docker-compose setup, you can set PG_HOST as `postgres` which w
:::
:::info
-If you intent you use the DB connection url and if the connection does not support ssl. Please use the below format using the variable DATABASE_URL.
+If you intend to use the DB connection url and if the connection does not support ssl. Please use the below format using the variable DATABASE_URL.
`postgres://username:password@hostname:port/database_name?sslmode=disable`
:::
@@ -121,7 +121,7 @@ Incase you want to trigger it manually, use the command `npm run db:create` on T
:::
:::info
-If you intent you use the DB connection url and if the connection does not support ssl. Please use the below format using the variable TOOLJET_DB_URL.
+If you intend to use the DB connection url and if the connection does not support ssl. Please use the below format using the variable TOOLJET_DB_URL.
`postgres://username:password@hostname:port/database_name?sslmode=disable`
:::
diff --git a/docs/versioned_docs/version-2.14.0/copilot.md b/docs/versioned_docs/version-2.14.0/copilot.md
index 442b26f348..8400b47241 100644
--- a/docs/versioned_docs/version-2.14.0/copilot.md
+++ b/docs/versioned_docs/version-2.14.0/copilot.md
@@ -6,7 +6,7 @@ title: Copilot
Available on: Paid plans
:::info BETA
-ToolJet Copilot is currently in private beta for **Business** and **Enterprise** users only. It is not yet available for ToolJet Community Edition, but we plan to make it accessible in the future.
+ToolJet Copilot is currently in private beta for **Business** and **Enterprise** users only.
:::
**ToolJet Copilot** helps you write your queries faster. It uses OpenAI to suggest queries based on your data.
diff --git a/docs/versioned_docs/version-2.14.0/data-sources/s3.md b/docs/versioned_docs/version-2.14.0/data-sources/s3.md
index ba1a029fb2..db8f35c780 100644
--- a/docs/versioned_docs/version-2.14.0/data-sources/s3.md
+++ b/docs/versioned_docs/version-2.14.0/data-sources/s3.md
@@ -11,7 +11,9 @@ ToolJet can connect to Amazon S3 buckets and perform various operation on them.
To add a new S3 source, go to the **Datasources manager** on the left sidebar of the app editor and click on `Add datasource` button. Select **AWS S3** from the modal that pops up.
-ToolJet requires the following to connect to your AWS S3:
+ToolJet supports connecting to AWS S3 using **IAM credentials**, **AWS Instance Profile** or **AWS ARN Role**.
+
+If you are using **IAM credentials**, you will need to provide the following details:
- **Region**
- **Access key**
@@ -21,7 +23,27 @@ It is recommended to create a new IAM user for the database so that you can cont
-
+
+
+
+
+To connect to AWS S3 using **AWS Instance Profile**, select the **Use AWS Instance Profile**. This will use the IAM role attached to the EC2 instance where ToolJet is running.
+To access the metadata service of an ECS container and the EC2 instance, we use the WebIdentityToken parameter which is obtained from a successful login with an identity provider.
+
+
+
+
+
+
+
+If you are using **AWS ARN Role**, you will need to provide the following details:
+
+- **Region**
+- **Role ARN**
+
+
+
+
diff --git a/docs/versioned_docs/version-2.14.0/release-management/multi-env.md b/docs/versioned_docs/version-2.14.0/release-management/multi-env.md
index d326e9d2db..64f173b1b8 100644
--- a/docs/versioned_docs/version-2.14.0/release-management/multi-env.md
+++ b/docs/versioned_docs/version-2.14.0/release-management/multi-env.md
@@ -109,4 +109,4 @@ To configure connection settings for different environments, follow these steps:
Please note that only one version of the app can be released at a time.
:::
-ToolJet automatically saves your most recently selected environment in the app builder. The next time you open an app, it will use the same environment. For example, if you switch to the staging environment in an app, the next time you open it will automatically use the same staging environment.
+ToolJet's app builder remembers your last editing state. When you reopen an app, it resumes from where you left off, ensuring a seamless experience. For instance, if you edited an app in the staging environment, it will open in the staging environment when you return.
diff --git a/docs/versioned_docs/version-2.14.0/setup/env-vars.md b/docs/versioned_docs/version-2.14.0/setup/env-vars.md
index 0299608bff..d1f15113f2 100644
--- a/docs/versioned_docs/version-2.14.0/setup/env-vars.md
+++ b/docs/versioned_docs/version-2.14.0/setup/env-vars.md
@@ -49,7 +49,7 @@ If you are using docker-compose setup, you can set PG_HOST as `postgres` which w
:::
:::info
-If you intent you use the DB connection url and if the connection does not support ssl. Please use the below format using the variable DATABASE_URL.
+If you intend to use the DB connection url and if the connection does not support ssl. Please use the below format using the variable DATABASE_URL.
`postgres://username:password@hostname:port/database_name?sslmode=disable`
:::
@@ -121,7 +121,7 @@ Incase you want to trigger it manually, use the command `npm run db:create` on T
:::
:::info
-If you intent you use the DB connection url and if the connection does not support ssl. Please use the below format using the variable TOOLJET_DB_URL.
+If you intend to use the DB connection url and if the connection does not support ssl. Please use the below format using the variable TOOLJET_DB_URL.
`postgres://username:password@hostname:port/database_name?sslmode=disable`
:::
diff --git a/docs/versioned_docs/version-2.15.0/copilot.md b/docs/versioned_docs/version-2.15.0/copilot.md
index 442b26f348..8400b47241 100644
--- a/docs/versioned_docs/version-2.15.0/copilot.md
+++ b/docs/versioned_docs/version-2.15.0/copilot.md
@@ -6,7 +6,7 @@ title: Copilot
Available on: Paid plans
:::info BETA
-ToolJet Copilot is currently in private beta for **Business** and **Enterprise** users only. It is not yet available for ToolJet Community Edition, but we plan to make it accessible in the future.
+ToolJet Copilot is currently in private beta for **Business** and **Enterprise** users only.
:::
**ToolJet Copilot** helps you write your queries faster. It uses OpenAI to suggest queries based on your data.
diff --git a/docs/versioned_docs/version-2.15.0/data-sources/overview.md b/docs/versioned_docs/version-2.15.0/data-sources/overview.md
index 68f4fd9b02..26b25c3701 100644
--- a/docs/versioned_docs/version-2.15.0/data-sources/overview.md
+++ b/docs/versioned_docs/version-2.15.0/data-sources/overview.md
@@ -3,26 +3,26 @@ id: overview
title: Overview
---
-# Global Datasources : Overview
+# Data Sources : Overview
-Global data sources pull in and push data to any source including databases, external APIs, or services. Once a data source is connected to a workspace, the connection can be shared with any app of that workspace.
+Data Sources pull in and push data to any source including databases, external APIs, or services. Once a data source is connected to a workspace, the connection can be shared with any app of that workspace.
:::caution
-Global data sources are available only on **ToolJet version 2.3.0 and above**.
+Data Source page is available only on **ToolJet version 2.3.0 and above**.
:::
-
+
-## Connecting global data sources
+## Connecting data sources
1. **Create a new app** from the dashboard, and Click on the **+ Add new** button from the query panel.
-
+
@@ -30,7 +30,7 @@ Global data sources are available only on **ToolJet version 2.3.0 and above**.
-
+
@@ -38,7 +38,7 @@ Global data sources are available only on **ToolJet version 2.3.0 and above**.
-
+
@@ -48,7 +48,7 @@ Global data sources are available only on **ToolJet version 2.3.0 and above**.
-
+
@@ -56,7 +56,7 @@ Global data sources are available only on **ToolJet version 2.3.0 and above**.
-
+
@@ -64,7 +64,7 @@ Global data sources are available only on **ToolJet version 2.3.0 and above**.
-
+
@@ -78,7 +78,7 @@ By default, 4 data sources will be available on every app on ToolJet:
-
+
@@ -101,7 +101,7 @@ To configure these permissions, navigate to **Workspace Settings** -> **Groups S
-
+
@@ -116,7 +116,7 @@ To configure these permissions, navigate to **Workspace Settings** -> **Groups S
-
+
@@ -129,14 +129,14 @@ On ToolJet versions below 2.3.0, the data source connection was made from within
1. When dealing with apps that were created using ToolJet versions prior to 2.3.0, you will notice the presence of the data source manager in the left sidebar of the App Builder.
-
+
2. To change the scope, locate the kebab menu situated next to the connected data source. From this menu, select the **change scope** option.
-
+
@@ -145,6 +145,6 @@ On ToolJet versions below 2.3.0, the data source connection was made from within
-
+
\ No newline at end of file
diff --git a/docs/versioned_docs/version-2.15.0/data-sources/s3.md b/docs/versioned_docs/version-2.15.0/data-sources/s3.md
index ba1a029fb2..db8f35c780 100644
--- a/docs/versioned_docs/version-2.15.0/data-sources/s3.md
+++ b/docs/versioned_docs/version-2.15.0/data-sources/s3.md
@@ -11,7 +11,9 @@ ToolJet can connect to Amazon S3 buckets and perform various operation on them.
To add a new S3 source, go to the **Datasources manager** on the left sidebar of the app editor and click on `Add datasource` button. Select **AWS S3** from the modal that pops up.
-ToolJet requires the following to connect to your AWS S3:
+ToolJet supports connecting to AWS S3 using **IAM credentials**, **AWS Instance Profile** or **AWS ARN Role**.
+
+If you are using **IAM credentials**, you will need to provide the following details:
- **Region**
- **Access key**
@@ -21,7 +23,27 @@ It is recommended to create a new IAM user for the database so that you can cont
-
+
+
+
+
+To connect to AWS S3 using **AWS Instance Profile**, select the **Use AWS Instance Profile**. This will use the IAM role attached to the EC2 instance where ToolJet is running.
+To access the metadata service of an ECS container and the EC2 instance, we use the WebIdentityToken parameter which is obtained from a successful login with an identity provider.
+
+
+
+
+
+
+
+If you are using **AWS ARN Role**, you will need to provide the following details:
+
+- **Region**
+- **Role ARN**
+
+
+
+
diff --git a/docs/versioned_docs/version-2.15.0/release-management/multi-env.md b/docs/versioned_docs/version-2.15.0/release-management/multi-env.md
index d326e9d2db..965e36e56f 100644
--- a/docs/versioned_docs/version-2.15.0/release-management/multi-env.md
+++ b/docs/versioned_docs/version-2.15.0/release-management/multi-env.md
@@ -31,14 +31,14 @@ The default environments cannot be removed or renamed.
To configure connection settings for different environments, follow these steps:
-1. Go to the **[Global Datasource](/docs/data-sources/overview)** page.
-2. Click on the **Add new datasource** button.
-3. Choose a datasource. In the connection modal, you'll find three tabs: **Production**, **Staging**, and **Development**.
-4. Switch to each tab and enter the appropriate credentials for connecting to the respective database. Remember to save after entering credentials on each tab.
+1. Go to the **[Data Source](/docs/data-sources/overview)** page.
+2. Click on each category of data sources to view the list of available data sources. As you hover over the desired data source, an **Add** button will appear.
+3. On clicking the **Add** button, a connection modal will appear. In the connection modal, you'll find three tabs: **Production**, **Staging**, and **Development**.
+4. Switch to each tab and enter the appropriate credentials for connecting to the respective database. Remember to **save** after entering credentials on each tab.
-
+
@@ -109,4 +109,4 @@ To configure connection settings for different environments, follow these steps:
Please note that only one version of the app can be released at a time.
:::
-ToolJet automatically saves your most recently selected environment in the app builder. The next time you open an app, it will use the same environment. For example, if you switch to the staging environment in an app, the next time you open it will automatically use the same staging environment.
+ToolJet's app builder remembers your last editing state. When you reopen an app, it resumes from where you left off, ensuring a seamless experience. For instance, if you edited an app in the staging environment, it will open in the staging environment when you return.
diff --git a/docs/versioned_docs/version-2.15.0/setup/heroku.md b/docs/versioned_docs/version-2.15.0/setup/heroku.md
deleted file mode 100644
index 80e14d2c06..0000000000
--- a/docs/versioned_docs/version-2.15.0/setup/heroku.md
+++ /dev/null
@@ -1,145 +0,0 @@
----
-id: heroku
-title: Heroku
----
-
-# Deploying ToolJet on Heroku
-
-
-
-*If you have any questions feel free to join our [Slack Community](https://tooljet.com/slack) or send us an email at hello@tooljet.com.*
-
-
-### Follow the steps below to deploy ToolJet on Heroku:
-
-1. Click the button below to start one click deployment.
-
-
-2. On Heroku tab, you'll be asked to provide an `App name` and `Choose a region`. Enter the name for your deployment and select the region according to your choice.
-
-
-
-
-
-
-
-3. Now let's enter the `Config vars` to configure additional [environment variables](/docs/setup/env-vars) that are required for the installation.
- - **LOCKBOX_MASTER_KEY**: ToolJet server uses lockbox to encrypt datasource credentials. You should set the environment variable LOCKBOX_MASTER_KEY with a 32 byte hexadecimal string. If you have OpenSSL installed, you can run the command `openssl rand -hex 32` to generate the key.
- - **NODE_ENV**: By default NODE_ENV is set to production.
- - **NODE_OPTIONS**: Node options are configured to increase node memory to support app build.
- - **SECRET_KEY_BASE**: ToolJet server uses a secure 64 byte hexadecimal string to encrypt session cookies. You should set the environment variable SECRET_KEY_BASE. If you have OpenSSL installed, you can run the command `openssl rand -hex 64` to generate the key.
- - **TOOLJET_HOST**: Public URL of ToolJet installation. This is usually `https://.herokuapp.com`.
- - **TOOLJET_SERVER_URL**: URL of ToolJet server installation. (This is same as the TOOLJET_HOST for Heroku deployments)
-
-
-4. Click on `Deploy app` button at the bottom to initiate the build.
-
-5. After the successful build, you'll see two buttons at the bottom: `Manage App` and `View`. Click on the `View` to open the app or click on `Manage App` to configure any settings.
-
-
-
-
-
-
-
-
-:::tip
-ToolJet server and client can be deployed as standalone applications. If you do not want to deploy the client on Heroku, modify `package.json` accordingly. We have a [guide](/docs/setup/client) on deploying ToolJet client using services such as Firebase.
-:::
-
-
-
-### Deploying Tooljet Database
-
-If you intend to use this feature, you'd have to set up and deploy PostgREST server which helps querying ToolJet Database.
-
-This feature is only enabled if `ENABLE_TOOLJET_DB` is set to `true` in the Tooljet application.
-
-#### Follow the steps below to deploy ToolJet Database on Heroku:
-
-:::note
-Please install Heroku CLI on your local machine. Please refer Heroku CLI installation steps [**here**](https://devcenter.heroku.com/articles/heroku-cli).
-:::
-
-1. **Create a new Heroku app using the PostgREST buildpack**
-
- 1.1 Create a folder with your app name. Please give a unique name to the app.
-
- ```bash
- mkdir ${YOUR_PGRST_APP_NAME}
- cd $${YOUR_PGRST_APP_NAME}
- git init
- ```
-
- 1.2 Add PostgREST buildpack to your app.
-
- ```bash
- heroku apps:create ${YOUR_PGRST_APP_NAME} --buildpack https://github.com/PostgREST/postgrest-heroku.git
- heroku git:remote -a ${YOUR_PGRST_APP_NAME}
- ```
-
-2. **Attach the Tooljet app’s PostgreSQL database your Tooljet database app**
-
- `${HEROKU_PG_DB_NAME` Should be the name of the PostgreSQL created by the Tooljet app.
-
- You can get the `${HEROKU_PG_DB_NAME` of the Tooljet application from the Resources tab under Heroku Postgres attachments as shown below. (eg: `${HEROKU_PG_DB_NAME = postgresql-transparent-24158` ).
-
- ```bash
- heroku addons:attach ${HEROKU_PG_DB_NAME} -a ${YOUR_PGRST_APP_NAME}
- ```
-
-
-
-
-
-
-3. **Create a Procfile**
-
- :::info
- The Procfile is a simple text file that is named Procfile without a file extension. For example, Procfile.txt is not valid.
- :::
-
- Please paste the below string within the Procfile file.
-
- ```bash
- web: PGRST_SERVER_HOST=0.0.0.0 PGRST_SERVER_PORT=${PORT} PGRST_DB_URI=${PGRST_DB_URI:-${DATABASE_URL}} ./postgrest-${POSTGREST_VER}
- ```
-
-
-4. **Set environment variables**
-
- You can also refer environment variable [**here**](/docs/setup/env-vars#tooljet-database).
-
- :::tip
- If you have openssl installed, you can run the following command `openssl rand -hex 32` to generate the value for `PGRST_JWT_SECRET`.
-
- If this parameter is not specified then PostgREST refuses authentication requests.
- :::
-
- ```bash
- heroku config:set PGRST_JWT_SECRET=
- heroku config:set POSTGREST_VER=10.0.0
- ```
-
- You can also refer environment variable [**here**](/docs/setup/env-vars#tooljet-database).
-
-
-5. **Build and deploy your app**
-
- ```bash
- git add Procfile
- git commit -m "PostgREST on Heroku"
- git push --set-upstream heroku main
- ```
-
- Your Heroku app should be live at `${YOUR_APP_NAME}.herokuapp.com`.
-
-
-6. **Additional environment variables for Tooljet application**
-
-
- Please enter the below env variables in the Tooljet application, under the setting tab. You can also refer environment variable [**here**](/docs/setup/env-vars#tooljet-database).
diff --git a/docs/versioned_docs/version-2.16.0/copilot.md b/docs/versioned_docs/version-2.16.0/copilot.md
index 442b26f348..8400b47241 100644
--- a/docs/versioned_docs/version-2.16.0/copilot.md
+++ b/docs/versioned_docs/version-2.16.0/copilot.md
@@ -6,7 +6,7 @@ title: Copilot
Available on: Paid plans
:::info BETA
-ToolJet Copilot is currently in private beta for **Business** and **Enterprise** users only. It is not yet available for ToolJet Community Edition, but we plan to make it accessible in the future.
+ToolJet Copilot is currently in private beta for **Business** and **Enterprise** users only.
:::
**ToolJet Copilot** helps you write your queries faster. It uses OpenAI to suggest queries based on your data.
diff --git a/docs/versioned_docs/version-2.16.0/data-sources/overview.md b/docs/versioned_docs/version-2.16.0/data-sources/overview.md
index 68f4fd9b02..26b25c3701 100644
--- a/docs/versioned_docs/version-2.16.0/data-sources/overview.md
+++ b/docs/versioned_docs/version-2.16.0/data-sources/overview.md
@@ -3,26 +3,26 @@ id: overview
title: Overview
---
-# Global Datasources : Overview
+# Data Sources : Overview
-Global data sources pull in and push data to any source including databases, external APIs, or services. Once a data source is connected to a workspace, the connection can be shared with any app of that workspace.
+Data Sources pull in and push data to any source including databases, external APIs, or services. Once a data source is connected to a workspace, the connection can be shared with any app of that workspace.
:::caution
-Global data sources are available only on **ToolJet version 2.3.0 and above**.
+Data Source page is available only on **ToolJet version 2.3.0 and above**.
:::
-
+
-## Connecting global data sources
+## Connecting data sources
1. **Create a new app** from the dashboard, and Click on the **+ Add new** button from the query panel.
-
+
@@ -30,7 +30,7 @@ Global data sources are available only on **ToolJet version 2.3.0 and above**.
-
+
@@ -38,7 +38,7 @@ Global data sources are available only on **ToolJet version 2.3.0 and above**.
-
+
@@ -48,7 +48,7 @@ Global data sources are available only on **ToolJet version 2.3.0 and above**.
-
+
@@ -56,7 +56,7 @@ Global data sources are available only on **ToolJet version 2.3.0 and above**.
-
+
@@ -64,7 +64,7 @@ Global data sources are available only on **ToolJet version 2.3.0 and above**.
-
+
@@ -78,7 +78,7 @@ By default, 4 data sources will be available on every app on ToolJet:
-
+
@@ -101,7 +101,7 @@ To configure these permissions, navigate to **Workspace Settings** -> **Groups S
-
+
@@ -116,7 +116,7 @@ To configure these permissions, navigate to **Workspace Settings** -> **Groups S
-
+
@@ -129,14 +129,14 @@ On ToolJet versions below 2.3.0, the data source connection was made from within
1. When dealing with apps that were created using ToolJet versions prior to 2.3.0, you will notice the presence of the data source manager in the left sidebar of the App Builder.
-
+
2. To change the scope, locate the kebab menu situated next to the connected data source. From this menu, select the **change scope** option.
-
+
@@ -145,6 +145,6 @@ On ToolJet versions below 2.3.0, the data source connection was made from within
-
+
\ No newline at end of file
diff --git a/docs/versioned_docs/version-2.16.0/data-sources/s3.md b/docs/versioned_docs/version-2.16.0/data-sources/s3.md
index ba1a029fb2..db8f35c780 100644
--- a/docs/versioned_docs/version-2.16.0/data-sources/s3.md
+++ b/docs/versioned_docs/version-2.16.0/data-sources/s3.md
@@ -11,7 +11,9 @@ ToolJet can connect to Amazon S3 buckets and perform various operation on them.
To add a new S3 source, go to the **Datasources manager** on the left sidebar of the app editor and click on `Add datasource` button. Select **AWS S3** from the modal that pops up.
-ToolJet requires the following to connect to your AWS S3:
+ToolJet supports connecting to AWS S3 using **IAM credentials**, **AWS Instance Profile** or **AWS ARN Role**.
+
+If you are using **IAM credentials**, you will need to provide the following details:
- **Region**
- **Access key**
@@ -21,7 +23,27 @@ It is recommended to create a new IAM user for the database so that you can cont
-
+
+
+
+
+To connect to AWS S3 using **AWS Instance Profile**, select the **Use AWS Instance Profile**. This will use the IAM role attached to the EC2 instance where ToolJet is running.
+To access the metadata service of an ECS container and the EC2 instance, we use the WebIdentityToken parameter which is obtained from a successful login with an identity provider.
+
+
+
+
+
+
+
+If you are using **AWS ARN Role**, you will need to provide the following details:
+
+- **Region**
+- **Role ARN**
+
+
+
+
diff --git a/docs/versioned_docs/version-2.16.0/release-management/multi-env.md b/docs/versioned_docs/version-2.16.0/release-management/multi-env.md
index d326e9d2db..965e36e56f 100644
--- a/docs/versioned_docs/version-2.16.0/release-management/multi-env.md
+++ b/docs/versioned_docs/version-2.16.0/release-management/multi-env.md
@@ -31,14 +31,14 @@ The default environments cannot be removed or renamed.
To configure connection settings for different environments, follow these steps:
-1. Go to the **[Global Datasource](/docs/data-sources/overview)** page.
-2. Click on the **Add new datasource** button.
-3. Choose a datasource. In the connection modal, you'll find three tabs: **Production**, **Staging**, and **Development**.
-4. Switch to each tab and enter the appropriate credentials for connecting to the respective database. Remember to save after entering credentials on each tab.
+1. Go to the **[Data Source](/docs/data-sources/overview)** page.
+2. Click on each category of data sources to view the list of available data sources. As you hover over the desired data source, an **Add** button will appear.
+3. On clicking the **Add** button, a connection modal will appear. In the connection modal, you'll find three tabs: **Production**, **Staging**, and **Development**.
+4. Switch to each tab and enter the appropriate credentials for connecting to the respective database. Remember to **save** after entering credentials on each tab.
-
+
@@ -109,4 +109,4 @@ To configure connection settings for different environments, follow these steps:
Please note that only one version of the app can be released at a time.
:::
-ToolJet automatically saves your most recently selected environment in the app builder. The next time you open an app, it will use the same environment. For example, if you switch to the staging environment in an app, the next time you open it will automatically use the same staging environment.
+ToolJet's app builder remembers your last editing state. When you reopen an app, it resumes from where you left off, ensuring a seamless experience. For instance, if you edited an app in the staging environment, it will open in the staging environment when you return.
diff --git a/docs/versioned_docs/version-2.16.0/setup/heroku.md b/docs/versioned_docs/version-2.16.0/setup/heroku.md
deleted file mode 100644
index 80e14d2c06..0000000000
--- a/docs/versioned_docs/version-2.16.0/setup/heroku.md
+++ /dev/null
@@ -1,145 +0,0 @@
----
-id: heroku
-title: Heroku
----
-
-# Deploying ToolJet on Heroku
-
-
-
-*If you have any questions feel free to join our [Slack Community](https://tooljet.com/slack) or send us an email at hello@tooljet.com.*
-
-
-### Follow the steps below to deploy ToolJet on Heroku:
-
-1. Click the button below to start one click deployment.
-
-
-2. On Heroku tab, you'll be asked to provide an `App name` and `Choose a region`. Enter the name for your deployment and select the region according to your choice.
-
-
-
-
-
-
-
-3. Now let's enter the `Config vars` to configure additional [environment variables](/docs/setup/env-vars) that are required for the installation.
- - **LOCKBOX_MASTER_KEY**: ToolJet server uses lockbox to encrypt datasource credentials. You should set the environment variable LOCKBOX_MASTER_KEY with a 32 byte hexadecimal string. If you have OpenSSL installed, you can run the command `openssl rand -hex 32` to generate the key.
- - **NODE_ENV**: By default NODE_ENV is set to production.
- - **NODE_OPTIONS**: Node options are configured to increase node memory to support app build.
- - **SECRET_KEY_BASE**: ToolJet server uses a secure 64 byte hexadecimal string to encrypt session cookies. You should set the environment variable SECRET_KEY_BASE. If you have OpenSSL installed, you can run the command `openssl rand -hex 64` to generate the key.
- - **TOOLJET_HOST**: Public URL of ToolJet installation. This is usually `https://.herokuapp.com`.
- - **TOOLJET_SERVER_URL**: URL of ToolJet server installation. (This is same as the TOOLJET_HOST for Heroku deployments)
-
-
-4. Click on `Deploy app` button at the bottom to initiate the build.
-
-5. After the successful build, you'll see two buttons at the bottom: `Manage App` and `View`. Click on the `View` to open the app or click on `Manage App` to configure any settings.
-
-
-
-
-
-
-
-
-:::tip
-ToolJet server and client can be deployed as standalone applications. If you do not want to deploy the client on Heroku, modify `package.json` accordingly. We have a [guide](/docs/setup/client) on deploying ToolJet client using services such as Firebase.
-:::
-
-
-
-### Deploying Tooljet Database
-
-If you intend to use this feature, you'd have to set up and deploy PostgREST server which helps querying ToolJet Database.
-
-This feature is only enabled if `ENABLE_TOOLJET_DB` is set to `true` in the Tooljet application.
-
-#### Follow the steps below to deploy ToolJet Database on Heroku:
-
-:::note
-Please install Heroku CLI on your local machine. Please refer Heroku CLI installation steps [**here**](https://devcenter.heroku.com/articles/heroku-cli).
-:::
-
-1. **Create a new Heroku app using the PostgREST buildpack**
-
- 1.1 Create a folder with your app name. Please give a unique name to the app.
-
- ```bash
- mkdir ${YOUR_PGRST_APP_NAME}
- cd $${YOUR_PGRST_APP_NAME}
- git init
- ```
-
- 1.2 Add PostgREST buildpack to your app.
-
- ```bash
- heroku apps:create ${YOUR_PGRST_APP_NAME} --buildpack https://github.com/PostgREST/postgrest-heroku.git
- heroku git:remote -a ${YOUR_PGRST_APP_NAME}
- ```
-
-2. **Attach the Tooljet app’s PostgreSQL database your Tooljet database app**
-
- `${HEROKU_PG_DB_NAME` Should be the name of the PostgreSQL created by the Tooljet app.
-
- You can get the `${HEROKU_PG_DB_NAME` of the Tooljet application from the Resources tab under Heroku Postgres attachments as shown below. (eg: `${HEROKU_PG_DB_NAME = postgresql-transparent-24158` ).
-
- ```bash
- heroku addons:attach ${HEROKU_PG_DB_NAME} -a ${YOUR_PGRST_APP_NAME}
- ```
-
-
-
-
-
-
-3. **Create a Procfile**
-
- :::info
- The Procfile is a simple text file that is named Procfile without a file extension. For example, Procfile.txt is not valid.
- :::
-
- Please paste the below string within the Procfile file.
-
- ```bash
- web: PGRST_SERVER_HOST=0.0.0.0 PGRST_SERVER_PORT=${PORT} PGRST_DB_URI=${PGRST_DB_URI:-${DATABASE_URL}} ./postgrest-${POSTGREST_VER}
- ```
-
-
-4. **Set environment variables**
-
- You can also refer environment variable [**here**](/docs/setup/env-vars#tooljet-database).
-
- :::tip
- If you have openssl installed, you can run the following command `openssl rand -hex 32` to generate the value for `PGRST_JWT_SECRET`.
-
- If this parameter is not specified then PostgREST refuses authentication requests.
- :::
-
- ```bash
- heroku config:set PGRST_JWT_SECRET=
- heroku config:set POSTGREST_VER=10.0.0
- ```
-
- You can also refer environment variable [**here**](/docs/setup/env-vars#tooljet-database).
-
-
-5. **Build and deploy your app**
-
- ```bash
- git add Procfile
- git commit -m "PostgREST on Heroku"
- git push --set-upstream heroku main
- ```
-
- Your Heroku app should be live at `${YOUR_APP_NAME}.herokuapp.com`.
-
-
-6. **Additional environment variables for Tooljet application**
-
-
- Please enter the below env variables in the Tooljet application, under the setting tab. You can also refer environment variable [**here**](/docs/setup/env-vars#tooljet-database).
diff --git a/docs/versioned_docs/version-2.16.0/tooljet_database.md b/docs/versioned_docs/version-2.16.0/tooljet_database.md
index b337d04d3c..287f45257e 100644
--- a/docs/versioned_docs/version-2.16.0/tooljet_database.md
+++ b/docs/versioned_docs/version-2.16.0/tooljet_database.md
@@ -7,7 +7,7 @@ Use the ToolJet-hosted database to build apps faster, and manage your data with
-
+
@@ -68,6 +68,7 @@ ToolJet database allows you to:
- **[Maintain tables of data](#accessing-tooljet-database)** in a secure database that's only accessible within your ToolJet organization.
- **[Edit, search, filter, sort, and filter](#database-editor)** data using a spreadsheet-like interface.
- **[Quickly build applications and write queries](#querying-data-from-the-tooljet-database)** to interact with the ToolJet Database, just like any other datasource but without any setup.
+- **[Export table](#export-table)** from the ToolJet Database to a JSON file.
## Accessing ToolJet Database
@@ -77,7 +78,7 @@ The ToolJet Database is available on: **[ToolJet Cloud](https://tooljet.com)**,
-
+
@@ -87,7 +88,7 @@ You can manage the ToolJet Database directly from the Database Editor. ToolJet D
-
+
@@ -97,7 +98,7 @@ For creating a new table in ToolJet Database, click on the **Create New Table**
-
+
@@ -105,7 +106,7 @@ When the **Create New Table** button is clicked, a drawer opens up from the righ
-
+
@@ -124,7 +125,7 @@ Click on **Create** button to create a new table.
-
+
@@ -134,7 +135,7 @@ You can enter a search term to search through all tables in the database.
-
+
@@ -149,7 +150,7 @@ A drawer from the right will open up from where you can create a new column by e
-
+
@@ -163,24 +164,24 @@ You can add as many filter as you want into the table by clicking on the **Filte
- Enter a **value** for the selected operation
#### Available operations are:
-- **equals**
-- **greater than**
-- **greater than or equal**
-- **less than**
-- **less than or equal**
-- **not equal**
-- **like**
-- **ilike**
-- **match**
-- **imatch**
-- **in**
-- **contains**
-- **contained**
-- **not**
+- **equals**: This operation is used to check if the value of the column is equal to the value entered in the input field.
+- **greater than**: This operation is used to check if the value of the column is greater than the value entered in the input field.
+- **greater than or equal**: This operation is used to check if the value of the column is greater than or equal to the value entered in the input field.
+- **less than**: This operation is used to check if the value of the column is less than the value entered in the input field.
+- **less than or equal**: This operation is used to check if the value of the column is less than or equal to the value entered in the input field.
+- **not equal**: This operation is used to check if the value of the column is not equal to the value entered in the input field.
+- **like**: This operation is used to check if the value of the column is like the value entered in the input field. This operation is case-sensitive. ex: `ToolJet` will not match `tooljet`
+- **ilike**: This operation is used to check if the value of the column is like the value entered in the input field. This operation is case-insensitive. ex: `ToolJet` will match `tooljet`
+- **match**: This operation is used to check if the value of the column is like the value entered in the input field. This operation is case-sensitive. ex: `ToolJet` will not match `tooljet`. This operation uses regular expressions. ex: `^ToolJet$` will match `ToolJet` but not `ToolJet Inc`.
+- **imatch**: This operation is used to check if the value of the column is like the value entered in the input field. This operation is case-insensitive. This operation uses regular expressions. ex: `^ToolJet$` will match `ToolJet` but not `ToolJet Inc`.
+- **in**: This operation is used to check if the value of the column is in the list of values entered in the input field. ex: `1,2,3`
+- **contains**: This operation is used to check if the value of the column contains the value entered in the input field. This operation is case-sensitive. ex: `ToolJet` will not match `tooljet`
+- **contained**: This operation is used to check if the value of the column is contained in the value entered in the input field. This operation is case-sensitive. ex: `ToolJet` will not match `tooljet`
+- **not**: This operation is used to negate the result of the operation selected in the dropdown. ex: `not equals` will return all the records where the value of the column is not equal to the value entered in the input field.
-
+
@@ -190,7 +191,17 @@ To sort the table data, click on the **Sort** button on top, select a **column**
-
+
+
+
+
+### Export table
+
+To export the table data, click on the **Export table** button on top. The selected table data will be exported to a **JSON** file.
+
+
+
+
@@ -220,29 +231,37 @@ To delete one or many records/rows, select on the checkbox at the right of the r
-
+
### Delete column
-To delete a particular column, just click on the column name and the **delete** button will appear, click on it to delete the column.
+To delete a particular column, just click on the column header and the **delete** button will appear, click on it to delete the column.
-
+
-### Edit or Delete a table
+### Edit table
-When you click on the kebab menu (three vertical dots icon) on the right of the table name, you'll get two options: Edit and Delete.
-- **Edit** will allow you to rename the table
-- **Delete** will allow you to delete the table permanently
+To edit the table name, click on the three vertical dots icon on the right of the table name and then click on the **Edit** option. A drawer will open from the right from where you can edit the table name.
-
+
+
+
+
+### Delete table
+
+To delete a table, click on the three vertical dots icon on the right of the table name and then click on the **Delete** option. A confirmation modal will appear, click on the **Delete** button to delete the table.
+
+
+
+
@@ -250,52 +269,54 @@ When you click on the kebab menu (three vertical dots icon) on the right of the
Querying ToolJet database is as easy as querying any other datasource on ToolJet.
-- Go to the **query panel**, and click on the **+Add** button to add a new query, and select **Run ToolJetDb query**
+- Go to the **query panel**, and click on the **+Add** button to add a new query, and select **ToolJet Database**
-
+
-- Enter the **Name** of the table that you want to query, select an **Operation** from the dropdown, **Create** the query, and then **Run** the query to get the response.
+- Select the **table** that you want to query from the dropdown, choose an **operation** from the dropdown, and then enter the required parameters for the selected operation. Click on the **Run** button to execute the query.
-
+
-:::info
-- **Preview** button on the query panel returns the query response without executing the query. Once clicked, the response will be displayed on the Preview section of the query panel which can be viewed in JSON or Raw.
-- When a new query is created, by default the query name is set to `tooljetdbN` (where N is a number) - you can rename the query by click on the query name or from the left sidebar of query panel.
-:::
+ :::info
+ - **Preview** button on the query panel returns the query response without executing the query. Once clicked, the response will be displayed on the Preview section of the query panel which can be viewed as JSON or Raw.
+ - When a new query is created, by default the query name is set to `tooljetdbN` (where N is a number) - you can rename the query by click on the query name or from the left sidebar of query panel.
+ :::
### Available operations
-#### List rows
-This operation returns the list of all the records in the table
+### List rows
+This operation returns all the records from the table
#### Optional parameters
-- **Filter**: Add a filter to the query response by setting a column, operation and value.
-- **Sort**: Add a sort to the query response by setting a column and direction.
-- **Limit**: Limit the query response. This parameter expects a numerical value. ex: 5
+- **Filter**: Add a condition by choosing a column, an operation, and the value for filtering the records.
+- **Sort**: Sort the query response by choosing a column and the order (ascending or descending).
+- **Limit**: Limit the number of records to be returned by entering a number.
-#### Create row
-This operation creates a new record in the table
+### Create row
+This operation creates a new record in the table. You can create a single record or multiple records at once.
#### Required parameters
-- **Columns**: Choose a column from the dropdown and enter a value for the new record.
+- **Columns**: Choose the columns for which you want to add values for the new record and enter the values for the selected columns. You can also add a new column by clicking on the **+Add column** button.
-#### Update row
-This operation updates an existing record in the table
+### Update row
+This operation updates a record in the table. You can update a single record or multiple records at once.
#### Required parameter
- **Filter**: Add a condition by choosing a column, an operation, and the value for updating a particular record.
+- **Columns**: Choose the columns for which you want to update the values for the selected record and enter the values for the selected columns.
-#### Delete row
-This operation deletes a record from the table
+### Delete row
+This operation deletes a record in the table. You can delete a single record or multiple records at once.
#### Required parameters
- **Filter**: Add a condition by choosing a column, an operation, and the value for deleting a particular record.
+- **Limit**: Limit the number of records to be deleted by entering a number.
:::info
If you have any other questions or feedback about **ToolJet Database**, please reach us out at hello@tooljet.com or join our **[Slack Community](https://www.tooljet.com/slack)**
diff --git a/docs/versioned_docs/version-2.17.0/copilot.md b/docs/versioned_docs/version-2.17.0/copilot.md
index 442b26f348..8400b47241 100644
--- a/docs/versioned_docs/version-2.17.0/copilot.md
+++ b/docs/versioned_docs/version-2.17.0/copilot.md
@@ -6,7 +6,7 @@ title: Copilot
Available on: Paid plans
:::info BETA
-ToolJet Copilot is currently in private beta for **Business** and **Enterprise** users only. It is not yet available for ToolJet Community Edition, but we plan to make it accessible in the future.
+ToolJet Copilot is currently in private beta for **Business** and **Enterprise** users only.
:::
**ToolJet Copilot** helps you write your queries faster. It uses OpenAI to suggest queries based on your data.
diff --git a/docs/versioned_docs/version-2.17.0/data-sources/overview.md b/docs/versioned_docs/version-2.17.0/data-sources/overview.md
index 68f4fd9b02..26b25c3701 100644
--- a/docs/versioned_docs/version-2.17.0/data-sources/overview.md
+++ b/docs/versioned_docs/version-2.17.0/data-sources/overview.md
@@ -3,26 +3,26 @@ id: overview
title: Overview
---
-# Global Datasources : Overview
+# Data Sources : Overview
-Global data sources pull in and push data to any source including databases, external APIs, or services. Once a data source is connected to a workspace, the connection can be shared with any app of that workspace.
+Data Sources pull in and push data to any source including databases, external APIs, or services. Once a data source is connected to a workspace, the connection can be shared with any app of that workspace.
:::caution
-Global data sources are available only on **ToolJet version 2.3.0 and above**.
+Data Source page is available only on **ToolJet version 2.3.0 and above**.
:::
-
+
-## Connecting global data sources
+## Connecting data sources
1. **Create a new app** from the dashboard, and Click on the **+ Add new** button from the query panel.
-
+
@@ -30,7 +30,7 @@ Global data sources are available only on **ToolJet version 2.3.0 and above**.
-
+
@@ -38,7 +38,7 @@ Global data sources are available only on **ToolJet version 2.3.0 and above**.
-
+
@@ -48,7 +48,7 @@ Global data sources are available only on **ToolJet version 2.3.0 and above**.
-
+
@@ -56,7 +56,7 @@ Global data sources are available only on **ToolJet version 2.3.0 and above**.
-
+
@@ -64,7 +64,7 @@ Global data sources are available only on **ToolJet version 2.3.0 and above**.
-
+
@@ -78,7 +78,7 @@ By default, 4 data sources will be available on every app on ToolJet:
-
+
@@ -101,7 +101,7 @@ To configure these permissions, navigate to **Workspace Settings** -> **Groups S
-
+
@@ -116,7 +116,7 @@ To configure these permissions, navigate to **Workspace Settings** -> **Groups S
-
+
@@ -129,14 +129,14 @@ On ToolJet versions below 2.3.0, the data source connection was made from within
1. When dealing with apps that were created using ToolJet versions prior to 2.3.0, you will notice the presence of the data source manager in the left sidebar of the App Builder.
-
+
2. To change the scope, locate the kebab menu situated next to the connected data source. From this menu, select the **change scope** option.
-
+
@@ -145,6 +145,6 @@ On ToolJet versions below 2.3.0, the data source connection was made from within
-
+
\ No newline at end of file
diff --git a/docs/versioned_docs/version-2.17.0/data-sources/restapi.md b/docs/versioned_docs/version-2.17.0/data-sources/restapi.md
index 181615d057..ab4cbc3194 100644
--- a/docs/versioned_docs/version-2.17.0/data-sources/restapi.md
+++ b/docs/versioned_docs/version-2.17.0/data-sources/restapi.md
@@ -7,7 +7,7 @@ ToolJet can establish a connection with any available REST API endpoint and crea
## Connection
-To establish a connection with the REST API global datasource, you can either click on the `Add new global datasource` button located on the query panel or navigate to the **[Global Datasources](/docs/data-sources/overview)** page through the ToolJet dashboard.
+To establish a connection with the REST API data source, you can either click on the `Add new` button located on the query panel or navigate to the **[Data Sources](/docs/data-sources/overview)** page through the ToolJet dashboard.
@@ -15,7 +15,7 @@ To establish a connection with the REST API global datasource, you can either cl
-**ToolJet requires the following to connect to a REST API datasource:**
+**ToolJet requires the following to connect to a REST API data source:**
- __Base URL__: REST API endpoint URL
- __Headers__: Key-value pairs to include as headers with REST API requests.
@@ -33,29 +33,18 @@ To establish a connection with the REST API global datasource, you can either cl
-:::info
-REST HTTP methods that are supported are **GET, POST, PUT, PATCH & DELETE**.
-:::
-
-
-
-
-
-
-
## Querying REST API
-Once you have connected to the REST API datasource, follow these steps to write queries and interact with a REST API in the ToolJet application:
-
+Once you have connected to the REST API data source, follow these steps to write queries and interact with a REST API in the ToolJet application:
1. Open the ToolJet application and navigate to the query panel at the bottom of the app builder.
-2. Click the `+Add` button to open the list of available `local` and `global datasources`.
-3. Select **REST API** from the global datasource section.
+2. Click the `+Add` button to open the list of available `Data Sources`.
+3. Select **REST API** from the Data Source section.
4. Enter the required query parameters.
5. Click `Preview` to view the data returned from the query or click `Run` to execute the query.
:::tip
-Query results can be transformed using Transformation. For more information on transformations, please refer to our documentation at **[link](/docs/tutorial/transformations)**.
+Query results can be transformed using the **[Transformations](/docs/how-to/transformations)** feature.
:::
@@ -64,6 +53,16 @@ Query results can be transformed using Transformation. For more information on t
+
+
+ToolJet supports the REST HTTP methods **GET**, **POST**, **PUT**, **PATCH**, and **DELETE**. You can select the method from the dropdown menu.
+
+
+
+
+
+
+
## Response types
REST APIs can return data in a variety of formats, including **JSON** and **Base64**. JSON is a common format used for data exchange in REST APIs, while Base64 is often used for encoding binary data, such as images or video, within a JSON response.
@@ -152,4 +151,114 @@ Read the guide on **[loading base64 data](/docs/how-to/loading-image-pdf-from-db
-
\ No newline at end of file
+
+
+## OAuth 2.0 method for authenticating REST APIs
+
+ToolJet’s REST API data source supports OAuth 2.0 as the authentication type.
+
+Before setting up the REST API data source in ToolJet, we need to configure the **Google Cloud Platform** to gather the API keys required for the authorization access.
+
+### Setting up Google Cloud Platform
+
+Google Cloud Platform provides access to more than 350 APIs and Services that can allow us to access data from our Google account and its services. Let's create an OAuth application that can be given permission to use our Google profile data such as Name and Profile picture.
+
+1. Sign in to your [Google Cloud](https://cloud.google.com/) account, and from the console create a New Project.
+2. Navigate to the **APIs and Services**, and then open the **OAuth consent screen** section from the left sidebar.
+3. Enter the Application details and select the appropriate scopes for your application. We will select the profile and the email scopes.
+4. Once you have created the OAuth consent screen, Create new credentials for the **OAuth client ID** from the **Credentials** section in the left sidebar.
+5. Select the application type, enter the application name, and then add the following URIs under Authorised Redirect URIs:
+ 1. `https://app.tooljet.com/oauth2/authorize` (if you’re using ToolJet cloud)
+ 2. `http://localhost:8082/oauth2/authorize` (if you’re using ToolJet locally)
+6. Now save and then you’ll get the **Client ID and Client secret** for your application.
+
+
+
+### Configuring ToolJet Application with Google's OAuth 2.0 API
+
+Let's follow the steps to authorize ToolJet to access your Google profile data:
+
+- Go to the **Data Sources** page from the ToolJet dashboard, select API category on sidebar and choose the **REST API** data source.
+
+ :::info
+ You can rename the data source by clicking on its default name `restapi`
+ :::
+
+- In the **Base URL** field, enter the base URL `https://www.googleapis.com/oauth2/v1/userinfo`; the base URL specifies the network address of the API service.
+- Select **Authentication** type as `OAuth 2.0`
+- Keep the default values for **Grant Type**, **Add Access Token To**, and **Header Prefix** i.e. `Authorization Code`, `Request Header`, and `Bearer` respectively.
+- Enter **Access Token URL**: `https://oauth2.googleapis.com/token`; this token allows users to verify their identity, and in return, receive a unique access token.
+- Enter the **Client ID** and **Client Secret** that we generated from the [Google Console](http://console.developers.google.com/).
+- In the **Scope** field, enter `https://www.googleapis.com/auth/userinfo.profile`; Scope is a mechanism in OAuth 2.0 to limit an application's access to a user's account. Check the scopes available for [Google OAuth2 API here](https://developers.google.com/identity/protocols/oauth2/scopes#oauth2).
+- Enter **Authorization URL:** `https://accounts.google.com/o/oauth2/v2/auth`; the Authorization URL requests authorization from the user and redirects to retrieve an authorization code from identity server.
+- Create three **Custom Authentication Parameters:**
+
+ | Params | Description |
+ |:----------- |:----------- |
+ | response_type | code ( `code` refers to the Authorization Code) |
+ | client_id | **Client ID** |
+ | redirect_uri | `http://localhost:8082/oauth2/authorize` if using ToolJet locally or enter this `https://app.tooljet.com/oauth2/authorize` if using ToolJet Cloud. |
+
+- Keep the default selection for **Client Authentication** and **Save** the data source.
+
+
+
+### Authenticating REST API
+
+Let’s create a query to make a `GET` request to the URL, it will pop a new window and ask the user to authenticate against the API.
+
+- Add a new query and select the REST API data source from the dropdown
+- In the **Method** dropdown select `GET` and enabe the `Run query on application load?`
+- Run the query.
+- A new window will pop for authentication and once auth is successful, you can run the query again to get the user data like Name and Profile Picture.
+
+## Bearer Token method for authenticating REST APIs
+
+ToolJet’s REST API data source supports Bearer Token as the authentication type. Bearer Token is a security token that is issued by the authentication server to the client. The client then uses the token to access the protected resources hosted by the resource server.
+
+### Configuring REST API data source with Bearer Token
+
+- Go to the **Data Sources** page from the ToolJet dashboard, select **API** category on sidebar and choose the **REST API** data source.
+
+ :::info
+ You can rename the data source by clicking on its default name `restapi`
+ :::
+
+- In the **Base URL** field, enter the base URL. The base URL specifies the network address of the API service. For example, `http://localhost:3001/api/bearer-auth`
+- Enter the **Headers** if required. Headers are key-value pairs to include as headers with REST API requests.
+- Select **Authentication** type as `Bearer` from the dropdown.
+- Enter the **Token** in the field. The token is a security token that is issued by the authentication server to the client. The client then uses the token to access the protected resources hosted by the resource server.
+
+
+
+
+
+
+- Now you have option to select the **SSL Certificate** if required. SSL certificate is used to verify the server certificate. By default, it is set to `None`. You can provide the **CA Certificate** or **Client Certificate** from the dropdown.
+ - **CA Certificate**: Requires a CA certificate to verify the server certificate. Copy the content of `server.crt` file and paste it in the **CA Cert** field. `server.crt` file is the certificate file that is used to verify the server certificate.
+
+
+
+
+
+
+
+ - **Client Certificate**: Requires a client certificate to authenticate with the server. `client.key`, `client.crt`, and `server.crt` files are the certificate files that are used to authenticate with the server. Copy the content of `client.key` file and paste it in the **Client Key** field. Copy the content of `client.crt` file and paste it in the **Client Cert** field. Copy the content of `server.crt` file and paste it in the **CA Cert** field.
+
+
+
+
+
+
+
+- Once you have configured the REST API data source, click on the **Save** button.
+
+### Authenticating REST API
+
+Create a query to make a `GET` request to the URL, and it will return a success message if the token is valid.
+
+
+
+
+
+
diff --git a/docs/versioned_docs/version-2.17.0/data-sources/s3.md b/docs/versioned_docs/version-2.17.0/data-sources/s3.md
index ba1a029fb2..db8f35c780 100644
--- a/docs/versioned_docs/version-2.17.0/data-sources/s3.md
+++ b/docs/versioned_docs/version-2.17.0/data-sources/s3.md
@@ -11,7 +11,9 @@ ToolJet can connect to Amazon S3 buckets and perform various operation on them.
To add a new S3 source, go to the **Datasources manager** on the left sidebar of the app editor and click on `Add datasource` button. Select **AWS S3** from the modal that pops up.
-ToolJet requires the following to connect to your AWS S3:
+ToolJet supports connecting to AWS S3 using **IAM credentials**, **AWS Instance Profile** or **AWS ARN Role**.
+
+If you are using **IAM credentials**, you will need to provide the following details:
- **Region**
- **Access key**
@@ -21,7 +23,27 @@ It is recommended to create a new IAM user for the database so that you can cont
-
+
+
+
+
+To connect to AWS S3 using **AWS Instance Profile**, select the **Use AWS Instance Profile**. This will use the IAM role attached to the EC2 instance where ToolJet is running.
+To access the metadata service of an ECS container and the EC2 instance, we use the WebIdentityToken parameter which is obtained from a successful login with an identity provider.
+
+
+
+
+
+
+
+If you are using **AWS ARN Role**, you will need to provide the following details:
+
+- **Region**
+- **Role ARN**
+
+
+
+
diff --git a/docs/versioned_docs/version-2.17.0/how-to/oauth2-authorization.md b/docs/versioned_docs/version-2.17.0/how-to/oauth2-authorization.md
deleted file mode 100644
index e2fd0c5236..0000000000
--- a/docs/versioned_docs/version-2.17.0/how-to/oauth2-authorization.md
+++ /dev/null
@@ -1,66 +0,0 @@
----
-id: oauth2-authorization
-title: REST API authentication using OAuth 2.0
----
-
-# REST API authentication using OAuth 2.0
-
-ToolJet’s REST API data source supports OAuth 2.0 as the authentication type. In this guide, we’ll learn how to use **Google OAuth2 API** to delegate authorization and authentication for your ToolJet Application.
-
-Before setting up the REST API data source in ToolJet, we need to configure the **Google Cloud Platform** to gather the API keys required for the authorization access.
-
-## Setting up Google Cloud Platform
-
-Google Cloud Platform provides access to more than 350 APIs and Services that can allow us to access data from our Google account and its services. Let's create an OAuth application that can be given permission to use our Google profile data such as Name and Profile picture.
-
-1. Sign in to your [Google Cloud](https://cloud.google.com/) account, and from the console create a New Project.
-2. Navigate to the **APIs and Services**, and then open the **OAuth consent screen** section from the left sidebar.
-3. Enter the Application details and select the appropriate scopes for your application. We will select the profile and the email scopes.
-4. Once you have created the OAuth consent screen, Create new credentials for the **OAuth client ID** from the **Credentials** section in the left sidebar.
-5. Select the application type, enter the application name, and then add the following URIs under Authorised Redirect URIs:
- 1. `https://app.tooljet.com/oauth2/authorize` (if you’re using ToolJet cloud)
- 2. `http://localhost:8082/oauth2/authorize` (if you’re using ToolJet locally)
-6. Now save and then you’ll get the **Client ID and Client secret** for your application.
-
-
-
-## Configuring ToolJet Application with Google's OAuth 2.0 API
-
-Let's follow the steps to authorize ToolJet to access your Google profile data:
-
-- Select **add data source** from the left sidebar, and choose **REST API** from the dialog window.
-
-:::info
-You can rename the data source by clicking on its default name `REST API`
-:::
-
-- In the **URL** field, enter the base URL `https://www.googleapis.com/oauth2/v1/userinfo`; the base URL specifies the network address of the API service.
-- Select authentication type as `OAuth 2.0`
-- Keep the default values for **Grant Type**, **Add Access Token To**, and **Header Prefix** i.e. `Authorization Code`, `Request Header`, and `Bearer` respectively.
-- Enter **Access Token URL**: `https://oauth2.googleapis.com/token`; this token allows users to verify their identity, and in return, receive a unique access token.
-- Enter the **Client ID** and **Client Secret** that we generated from the [Google Console](http://console.developers.google.com/).
-- In the **Scope** field, enter `https://www.googleapis.com/auth/userinfo.profile`; Scope is a mechanism in OAuth 2.0 to limit an application's access to a user's account. Check the scopes available for [Google OAuth2 API here](https://developers.google.com/identity/protocols/oauth2/scopes#oauth2).
-- Enter **Authorization URL:** `https://accounts.google.com/o/oauth2/v2/auth`; the Authorization URL requests authorization from the user and redirects to retrieve an authorization code from identity server.
-- Create three **Custom Authentication Parameters:**
-
- | params | description |
- | ----------- | ----------- |
- | response_type | code ( `code` refers to the Authorization Code) |
- | client_id | **Client ID** |
- | redirect_uri | `http://localhost:8082/oauth2/authorize` if using ToolJet locally or enter this `https://app.tooljet.com/oauth2/authorize` if using ToolJet Cloud. |
-
-- Keep the default selection for **Client Authentication** and **Save** the data source.
-
-
-
-## Create the query
-
-Let’s create a query to make a `GET` request to the URL, it will pop a new window and ask the user to authenticate against the API.
-
-- Add a new query and select the REST API datasource from the dropdown
-- In the **Method** dropdown select `GET` and in advance tab toggle `run query on page load?`
-- **Save** and **Run** the query.
-
-
-
-A new window will pop for authentication and once auth is successful, you can run the query again to get the user data like Name and Profile Picture.
\ No newline at end of file
diff --git a/docs/versioned_docs/version-2.17.0/licensing.md b/docs/versioned_docs/version-2.17.0/licensing.md
index cb91ec46cc..88d6a2b99b 100644
--- a/docs/versioned_docs/version-2.17.0/licensing.md
+++ b/docs/versioned_docs/version-2.17.0/licensing.md
@@ -11,13 +11,18 @@ This comprehensive guide aims to assist you in the process of configuring paid p
Let's look into three types of licenses:
-1. **Trial License**: This is a free license that grants access to premium features for a 14-day trial period. In order to get this, please reach out to our team.
+1. **Trial License**: This is a free license that grants access to premium features for a 14-day trial period.
+ - **New Users**: Choose the 14-day trial during onboarding.
+ - **Existing Users**: Request a trial license key from our sales or support team.
2. **Business License**: This is a paid license that you can purchase **[directly](https://www.tooljet.com/pricing)**.
3. **Enterprise License**: This is a paid license with customizable options. To obtain this license, you have to contact our sales team.
-After selecting the appropriate license that aligns with your needs, the next step is to proceed with the purchase. Once you have completed the onboarding process, we will generate a unique license key specifically tailored to your chosen specifications. Keep reading to gain a more comprehensive understanding of this process.
+---
+
+## Updating Your Trial License Key (For Existing Users)
+
+If you are an existing user and wish to update your trial license key, follow these steps:
-**To update your trial license key, please follow these steps:**
1. Set up the instance and log in as a **[Super Admin](/docs/Enterprise/superadmin)**.
2. Navigate to the instance settings page.
3. In the license key tab, make the necessary updates to the provided license key.
@@ -35,6 +40,10 @@ The trial license key will be valid for 14 days. To fully enjoy ToolJet, we reco
**Ref: Screenshot to update license key**
+## Purchasing a Paid License
+
+When you've identified the ideal paid license to meet your needs, the next step is to complete the purchase process, ensuring seamless access to premium features.
+
## A) Chosen Plan: Business Plan
If you decide to proceed with the Business Plan and have made the purchase, please wait for our team to get back to you within 24-48 hours to get you onboarded.
@@ -65,15 +74,12 @@ As a super admin, you can conveniently view the remaining days of your enterpris
The business license key will be valid for 3 months only. You can renew it to continue using ToolJet to its fullest potential.
:::
+
## B) Chosen Plan: Enterprise Plan
-If you choose to move forward with the Enterprise Plan and have completed the purchase process with our sales team, kindly anticipate a response from our team within 24-48 hours to facilitate your onboarding process.
-
-**To update the enterprise license key, follow these steps:**
-1. Log in as a **[Super Admin](/docs/Enterprise/superadmin)**, ensuring that you are on the correct instance URL.
-2. Go to the instance settings page.
-3. In the license key tab, update the provided license key.
-4. Within the license tab of the instance settings page, you can access the limit tab, which provides details about available super admins, builders, and end users.
+- If you've selected the Enterprise Plan, expect a response from our team within 24-48 hours for onboarding.
+- To update the enterprise license key, follow the steps outlined previously.
+- The remaining days of your enterprise edition period can be conveniently viewed on the dashboard. (refer screenshots added above)
:::info Note
As a super admin, you can conveniently view the remaining days of your enterprise edition period on the dashboard.
@@ -94,10 +100,16 @@ If your business or enterprise edition license key is nearing expiration, please
**Ref: Screenshot addressing upgrade/renew CTAs. Note that there are a couple of other pages which will display banners or CTAs, from where you can upgrade/renew.**
-### 2) What happens if my license expires?
+### 2) What is the duration of my license's validity?
+If you have an active license, you can find its validity period in the instance settings. Generally, the duration of your license varies based on the type:
+- Trial licenses are valid for 14 days.
+- Business licenses are valid for 3 months.
+- Enterprise licenses can be customized to suit your needs.
+
+### 3) What happens if my license expires?
If your business or enterprise license key expires, your instance will revert to operating as a free plan. While you can still create unlimited apps, workspaces, and add users, premium features such as OpenID and Audit logs will no longer be accessible. For further information, please refer to the relevant **[plans](https://www.tooljet.com/pricing)**.
-### 3) How can I add more users?
+### 4) How can I add more users?
There are different methods to do this:
**a)** You can renew directly using the **[business plan](https://www.tooljet.com/pricing)**. (Note: Please do check the list of premium features available with this plan)
diff --git a/docs/versioned_docs/version-2.17.0/release-management/multi-env.md b/docs/versioned_docs/version-2.17.0/release-management/multi-env.md
index d326e9d2db..965e36e56f 100644
--- a/docs/versioned_docs/version-2.17.0/release-management/multi-env.md
+++ b/docs/versioned_docs/version-2.17.0/release-management/multi-env.md
@@ -31,14 +31,14 @@ The default environments cannot be removed or renamed.
To configure connection settings for different environments, follow these steps:
-1. Go to the **[Global Datasource](/docs/data-sources/overview)** page.
-2. Click on the **Add new datasource** button.
-3. Choose a datasource. In the connection modal, you'll find three tabs: **Production**, **Staging**, and **Development**.
-4. Switch to each tab and enter the appropriate credentials for connecting to the respective database. Remember to save after entering credentials on each tab.
+1. Go to the **[Data Source](/docs/data-sources/overview)** page.
+2. Click on each category of data sources to view the list of available data sources. As you hover over the desired data source, an **Add** button will appear.
+3. On clicking the **Add** button, a connection modal will appear. In the connection modal, you'll find three tabs: **Production**, **Staging**, and **Development**.
+4. Switch to each tab and enter the appropriate credentials for connecting to the respective database. Remember to **save** after entering credentials on each tab.
-
+
@@ -109,4 +109,4 @@ To configure connection settings for different environments, follow these steps:
Please note that only one version of the app can be released at a time.
:::
-ToolJet automatically saves your most recently selected environment in the app builder. The next time you open an app, it will use the same environment. For example, if you switch to the staging environment in an app, the next time you open it will automatically use the same staging environment.
+ToolJet's app builder remembers your last editing state. When you reopen an app, it resumes from where you left off, ensuring a seamless experience. For instance, if you edited an app in the staging environment, it will open in the staging environment when you return.
diff --git a/docs/versioned_docs/version-2.17.0/setup/digitalocean.md b/docs/versioned_docs/version-2.17.0/setup/digitalocean.md
index a4143f9e4f..ccc8eb2969 100644
--- a/docs/versioned_docs/version-2.17.0/setup/digitalocean.md
+++ b/docs/versioned_docs/version-2.17.0/setup/digitalocean.md
@@ -9,40 +9,141 @@ Now you can quickly deploy ToolJet using the Deploy to DigitalOcean button.
*If you have any questions feel free to join our [Slack Community](https://tooljet.com/slack) or send us an email at hello@tooljet.com.*
+The latest docker image is `tooljet/tooljet:`
+
## Deploying
#### Follow the steps below to deploy ToolJet on DigitalOcean:
-
-1. Click on the button below to start one click deployment
-
+1. Once signed-in to your DigitalOcean account, click on the **Create App** button.
+
- [](https://cloud.digitalocean.com/apps/new?repo=https://github.com/ToolJet/ToolJet/tree/main)
+
-2. A new tab will open up, sign-in to your DigitalOCean account. Once signed-in, the **Create App** page will open up and **Resources** will be already selected. Click on **Next** button.
+2. On the next page, you'll be asked to choose a **Resource** type, select **Docker Hub**. Enter the Repository name as `tooljet/tooljet` and the corresponding tag.
-
+
-3. Now, on **Environment Variables** page you can add new variables or edit the existing ones. Check the [environment variables here](/docs/setup/env-vars).
+
-
+
-4. On the next page, you can change the **App name**, **Project**, and the **Region**.
+3. Once the Resource is created, you'll be redirected to the **Resources** page. Click on the **Edit** button next to the Resource.
-
+
-5. On the last page, you'll be asked to **Review** all the app details such that we entered before such as **Resources**, **Environment Variables**, **Region**, and there will also be **Billing** section at the end. Review all the details and click the **Create Resource** button.
+
-
+
+
+ Make sure the **Run Command** is `./server/scripts/digitalocean-postbuild.sh` and the **HTTP** port is `3000`. Once you have edited the ToolJet resource click on the **Back** button.
-6. Once you click the **Create Resource** button, the build will begin. Once the build is complete, you'll see the resource and a **URL** next to it. Click on the URL to open the deployed **ToolJet**.
+
-:::tip
-ToolJet server and client can be deployed as standalone applications. If you do not want to deploy the client on DigitalOcean, modify `package.json` accordingly. We have a [guide](/docs/setup/client) on deploying ToolJet client using services such as Firebase.
-:::
+
+
+
+
+### Redis setup
+
+ToolJet requires configuring Redis which is used for enabling multiplayer editing and for background jobs.
+
+Follow the steps below to configure Redis database:
+
+1. Navigate to **Database** and create a database cluster.
+
+
+
+
+
+
+
+2. Select `Redis` from the database engine and add a unique name to the cluster and click on **Create Database cluster**.
+
+
+
+
+
+
+
+3. Once the set-up is complete, add the Redis connection string in the environmental variable of `tooliet-app`.
+ :::info
+ In the business edition, saving or making changes in apps is dependent on Redis, even if multi-player editing is not necessary.
+ :::
+
+### Database setup
+
+Follow the below steps to attach a postgresql database:
+
+1. Click on **Add Resource** and select **Database** and click on add.
+
+
+
+
+
+
+
+2. Enter the preffered name for the database and click **Create and attach**.
+
+
+
+
+
+
+
+### Setting up environment variables
+
+1. Once the database is attached, click on **Next** to set up the environment variables.
+
+
+
+
+
+
+
+2. Click on **Edit** next to `tooljet-app`.
+
+
+
+
+
+
+
+3. Click on the build editor to edit the environment variables.
+
+
+
+
+
+
+
+ ```bash
+ NODE_ ENV=production
+ NODE_OPTIONS=--max-old-space-size=4096
+ LOCKBOX MASTER_KEY= #Use `openssl rand -hex 32`
+ SECRET KEY BASE= #Use `openssl rand -hex 64`
+ DEPLOYMENT_PLATFORM=digitalocean
+ DATABASE_URL=${.DATABASE_URL}
+ CA CERT=${.CA_CERT}
+ TOOLJET HOST=${APP_URL}
+ TOOLJET_SERVER_URL=${APP_URL}
+ REDIS_URL= #connection string
+ ```
+
+ DATABASE_URL and CA_CERT variable should be added in the above format.
+
+4. After adding the environment variables, click on **Save**.
+
+
+
+
+
+
+
+ To add additional environment variables, refer this [doc](https://docs.tooljet.com/docs/setup/env-vars/).
#### Deploying Tooljet Database
@@ -51,7 +152,7 @@ You can learn more about this feature [here](/docs/tooljet-database).
Follow the steps below to deploy ToolJet Database on DigitalOcean:
-1. If you are using dev database within ToolJet deployment, upgrade it to managed database. You could also add a separate database, if you intent use a different database, please refer the [environment variables](/docs/setup/env-vars#tooljet-database-feature-enable--optional-) for additional env variables.
+1. If you are using dev database within ToolJet deployment, upgrade it to managed database. You could also add a separate database, if you intent use a different database, please refer the [environment variables](/docs/setup/env-vars#enable-tooljet-database--optional-) for additional env variables.
2. Create a new app for PostgREST server. You can opt for docker hub to deploy PostgREST image of version `10.1.x`.
@@ -63,4 +164,4 @@ Follow the steps below to deploy ToolJet Database on DigitalOcean:
4. Add your newly created PostgREST app to the trusted sources of your managed or separate database.
-5. Update your existing ToolJet application deployment with [environment variables](/docs/setup/env-vars#tooljet-database-feature-enable--optional-) required for PostgREST.
+5. Update your existing ToolJet application deployment with [environment variables](/docs/setup/env-vars#enable-tooljet-database--optional-) required for PostgREST.
diff --git a/docs/versioned_docs/version-2.17.0/setup/docker.md b/docs/versioned_docs/version-2.17.0/setup/docker.md
index 0308312d21..ea1671ef1f 100644
--- a/docs/versioned_docs/version-2.17.0/setup/docker.md
+++ b/docs/versioned_docs/version-2.17.0/setup/docker.md
@@ -35,16 +35,17 @@ Confused about which setup to select? Feel free to ask the community via Slack:
1. Download our production docker-compose file into the server.
```bash
- curl -LO https://raw.githubusercontent.com/ToolJet/ToolJet/main/deploy/docker/docker-compose-db.yaml
+ curl -LO https://tooljet-deployments.s3.us-west-1.amazonaws.com/docker/docker-compose-db.yaml
mv docker-compose-db.yaml docker-compose.yaml
mkdir postgres_data
+ mkdir redis_data
```
2. Create `.env` file in the current directory (where the docker-compose.yaml file is downloaded as in step 1):
```bash
- curl -LO https://raw.githubusercontent.com/ToolJet/ToolJet/main/deploy/docker/.env.internal.example
- curl -LO https://raw.githubusercontent.com/ToolJet/ToolJet/main/deploy/docker/internal.sh && chmod +x internal.sh
+ curl -LO https://tooljet-deployments.s3.us-west-1.amazonaws.com/docker/.env.internal.example
+ curl -LO https://tooljet-deployments.s3.us-west-1.amazonaws.com/docker/internal.sh && chmod +x internal.sh
mv .env.internal.example .env && ./internal.sh
```
@@ -82,7 +83,8 @@ Confused about which setup to select? Feel free to ask the community via Slack:
2. Download our production docker-compose file into the server.
```bash
- curl -LO https://raw.githubusercontent.com/ToolJet/ToolJet/main/deploy/docker/docker-compose.yaml
+ curl -LO https://tooljet-deployments.s3.us-west-1.amazonaws.com/docker/docker-compose.yaml
+ mkdir redis_data
```
3. Create `.env` file in the current directory (where the docker-compose.yaml file is downloaded as in step 1):
@@ -96,8 +98,8 @@ Confused about which setup to select? Feel free to ask the community via Slack:
```bash
- curl -LO https://raw.githubusercontent.com/ToolJet/ToolJet/main/deploy/docker/.env.external.example
- curl -LO https://raw.githubusercontent.com/ToolJet/ToolJet/main/deploy/docker/external.sh && chmod +x external.sh
+ curl -LO https://tooljet-deployments.s3.us-west-1.amazonaws.com/docker/.env.external.example
+ curl -LO https://tooljet-deployments.s3.us-west-1.amazonaws.com/docker/external.sh && chmod +x external.sh
mv .env.external.example .env && ./external.sh
```
diff --git a/docs/versioned_docs/version-2.17.0/setup/ecs.md b/docs/versioned_docs/version-2.17.0/setup/ecs.md
index b16770014a..0494ef623d 100644
--- a/docs/versioned_docs/version-2.17.0/setup/ecs.md
+++ b/docs/versioned_docs/version-2.17.0/setup/ecs.md
@@ -39,8 +39,8 @@ Follow the steps below to deploy ToolJet on a ECS cluster.
Within the add container form that is shown:
- - Specify your container name ex: `tooljet-ce`
- - Set the image you intend to deploy. ex: `tooljet/tooljet-ce:v1.26.0`
+ - Specify your container name ex: `tooljet`
+ - Set the image you intend to deploy. ex: `tooljet/tooljet:`
- Update port mappings at container port `3000` for tcp protocol.
@@ -58,6 +58,16 @@ Follow the steps below to deploy ToolJet on a ECS cluster.
Read **[environment variables reference](/docs/setup/env-vars)**
:::
+ 5. Please add redis container as part of the deployment. Please make sure that you are using redis version 6.x.x
+
+ Also add these env variable in the above tooljet container
+
+ ```
+ REDIS_HOST=localhost
+ REDIS_PORT=6379
+ REDIS_USER=default
+ REDIS_PASSWORD=
+ ```
4. Create a service to run your task definition within your cluster.
- Select launch type as Fargate.
diff --git a/docs/versioned_docs/version-2.17.0/setup/heroku.md b/docs/versioned_docs/version-2.17.0/setup/heroku.md
deleted file mode 100644
index 80e14d2c06..0000000000
--- a/docs/versioned_docs/version-2.17.0/setup/heroku.md
+++ /dev/null
@@ -1,145 +0,0 @@
----
-id: heroku
-title: Heroku
----
-
-# Deploying ToolJet on Heroku
-
-
-
-*If you have any questions feel free to join our [Slack Community](https://tooljet.com/slack) or send us an email at hello@tooljet.com.*
-
-
-### Follow the steps below to deploy ToolJet on Heroku:
-
-1. Click the button below to start one click deployment.
-
-
-2. On Heroku tab, you'll be asked to provide an `App name` and `Choose a region`. Enter the name for your deployment and select the region according to your choice.
-
-
-
-
-
-
-
-3. Now let's enter the `Config vars` to configure additional [environment variables](/docs/setup/env-vars) that are required for the installation.
- - **LOCKBOX_MASTER_KEY**: ToolJet server uses lockbox to encrypt datasource credentials. You should set the environment variable LOCKBOX_MASTER_KEY with a 32 byte hexadecimal string. If you have OpenSSL installed, you can run the command `openssl rand -hex 32` to generate the key.
- - **NODE_ENV**: By default NODE_ENV is set to production.
- - **NODE_OPTIONS**: Node options are configured to increase node memory to support app build.
- - **SECRET_KEY_BASE**: ToolJet server uses a secure 64 byte hexadecimal string to encrypt session cookies. You should set the environment variable SECRET_KEY_BASE. If you have OpenSSL installed, you can run the command `openssl rand -hex 64` to generate the key.
- - **TOOLJET_HOST**: Public URL of ToolJet installation. This is usually `https://.herokuapp.com`.
- - **TOOLJET_SERVER_URL**: URL of ToolJet server installation. (This is same as the TOOLJET_HOST for Heroku deployments)
-
-
-4. Click on `Deploy app` button at the bottom to initiate the build.
-
-5. After the successful build, you'll see two buttons at the bottom: `Manage App` and `View`. Click on the `View` to open the app or click on `Manage App` to configure any settings.
-
-
-
-
-
-
-
-
-:::tip
-ToolJet server and client can be deployed as standalone applications. If you do not want to deploy the client on Heroku, modify `package.json` accordingly. We have a [guide](/docs/setup/client) on deploying ToolJet client using services such as Firebase.
-:::
-
-
-
-### Deploying Tooljet Database
-
-If you intend to use this feature, you'd have to set up and deploy PostgREST server which helps querying ToolJet Database.
-
-This feature is only enabled if `ENABLE_TOOLJET_DB` is set to `true` in the Tooljet application.
-
-#### Follow the steps below to deploy ToolJet Database on Heroku:
-
-:::note
-Please install Heroku CLI on your local machine. Please refer Heroku CLI installation steps [**here**](https://devcenter.heroku.com/articles/heroku-cli).
-:::
-
-1. **Create a new Heroku app using the PostgREST buildpack**
-
- 1.1 Create a folder with your app name. Please give a unique name to the app.
-
- ```bash
- mkdir ${YOUR_PGRST_APP_NAME}
- cd $${YOUR_PGRST_APP_NAME}
- git init
- ```
-
- 1.2 Add PostgREST buildpack to your app.
-
- ```bash
- heroku apps:create ${YOUR_PGRST_APP_NAME} --buildpack https://github.com/PostgREST/postgrest-heroku.git
- heroku git:remote -a ${YOUR_PGRST_APP_NAME}
- ```
-
-2. **Attach the Tooljet app’s PostgreSQL database your Tooljet database app**
-
- `${HEROKU_PG_DB_NAME` Should be the name of the PostgreSQL created by the Tooljet app.
-
- You can get the `${HEROKU_PG_DB_NAME` of the Tooljet application from the Resources tab under Heroku Postgres attachments as shown below. (eg: `${HEROKU_PG_DB_NAME = postgresql-transparent-24158` ).
-
- ```bash
- heroku addons:attach ${HEROKU_PG_DB_NAME} -a ${YOUR_PGRST_APP_NAME}
- ```
-
-
-
-
-
-
-3. **Create a Procfile**
-
- :::info
- The Procfile is a simple text file that is named Procfile without a file extension. For example, Procfile.txt is not valid.
- :::
-
- Please paste the below string within the Procfile file.
-
- ```bash
- web: PGRST_SERVER_HOST=0.0.0.0 PGRST_SERVER_PORT=${PORT} PGRST_DB_URI=${PGRST_DB_URI:-${DATABASE_URL}} ./postgrest-${POSTGREST_VER}
- ```
-
-
-4. **Set environment variables**
-
- You can also refer environment variable [**here**](/docs/setup/env-vars#tooljet-database).
-
- :::tip
- If you have openssl installed, you can run the following command `openssl rand -hex 32` to generate the value for `PGRST_JWT_SECRET`.
-
- If this parameter is not specified then PostgREST refuses authentication requests.
- :::
-
- ```bash
- heroku config:set PGRST_JWT_SECRET=
- heroku config:set POSTGREST_VER=10.0.0
- ```
-
- You can also refer environment variable [**here**](/docs/setup/env-vars#tooljet-database).
-
-
-5. **Build and deploy your app**
-
- ```bash
- git add Procfile
- git commit -m "PostgREST on Heroku"
- git push --set-upstream heroku main
- ```
-
- Your Heroku app should be live at `${YOUR_APP_NAME}.herokuapp.com`.
-
-
-6. **Additional environment variables for Tooljet application**
-
-
- Please enter the below env variables in the Tooljet application, under the setting tab. You can also refer environment variable [**here**](/docs/setup/env-vars#tooljet-database).
diff --git a/docs/versioned_docs/version-2.17.0/setup/kubernetes-aks.md b/docs/versioned_docs/version-2.17.0/setup/kubernetes-aks.md
index 7c87caa19d..09160b07e7 100644
--- a/docs/versioned_docs/version-2.17.0/setup/kubernetes-aks.md
+++ b/docs/versioned_docs/version-2.17.0/setup/kubernetes-aks.md
@@ -18,7 +18,7 @@ Follow the steps below to deploy ToolJet on a AKS Kubernetes cluster.
2. Create k8s deployment
```bash
- curl -LO https://raw.githubusercontent.com/ToolJet/ToolJet/main/deploy/kubernetes/AKS/deployment.yaml
+ curl -LO https://tooljet-deployments.s3.us-west-1.amazonaws.com/kubernetes/AKS/deployment.yaml
```
Make sure to edit the environment variables in the `deployment.yaml`. We advise to use secrets to setup sensitive information. You can check out the available options [here](https://docs.tooljet.com/docs/setup/env-vars).
@@ -29,7 +29,7 @@ If there are self signed HTTPS endpoints that Tooljet needs to connect to, pleas
3. Create k8s service and reserve a static IP and inorder expose it via a service load balancer as mentioned in the [doc](https://docs.microsoft.com/en-us/azure/aks/static-ip). You can refer `service.yaml`.
```bash
- curl -LO https://raw.githubusercontent.com/ToolJet/ToolJet/main/deploy/kubernetes/AKS/service.yaml
+ curl -LO https://tooljet-deployments.s3.us-west-1.amazonaws.com/kubernetes/AKS/service.yaml
```
4. Apply YAML configs
@@ -49,7 +49,7 @@ If you intend to use this feature, you'd have to set up and deploy PostgREST ser
1. Setup PostgREST server
```bash
- kubectl apply -f https://raw.githubusercontent.com/ToolJet/ToolJet/main/deploy/kubernetes/AKS/postgrest.yaml
+ kubectl apply -f https://tooljet-deployments.s3.us-west-1.amazonaws.com/kubernetes/AKS/postgrest.yaml
```
-2. Update ToolJet deployment with the appropriate env variables [here](https://raw.githubusercontent.com/ToolJet/ToolJet/main/deploy/kubernetes/AKS/deployment.yaml) and apply the changes.
+2. Update ToolJet deployment with the appropriate env variables [here](https://tooljet-deployments.s3.us-west-1.amazonaws.com/kubernetes/AKS/deployment.yaml) and apply the changes.
diff --git a/docs/versioned_docs/version-2.17.0/setup/kubernetes-gke.md b/docs/versioned_docs/version-2.17.0/setup/kubernetes-gke.md
index af86339fec..8071da0ae7 100644
--- a/docs/versioned_docs/version-2.17.0/setup/kubernetes-gke.md
+++ b/docs/versioned_docs/version-2.17.0/setup/kubernetes-gke.md
@@ -16,7 +16,7 @@ Follow the steps below to deploy ToolJet on a GKE Kubernetes cluster.
1. Create an SSL certificate.
```bash
-curl -LO https://raw.githubusercontent.com/ToolJet/ToolJet/main/deploy/kubernetes/GKE/certificate.yaml
+curl -LO https://tooljet-deployments.s3.us-west-1.amazonaws.com/kubernetes/GKE/certificate.yaml
```
Change the domain name to the domain/subdomain that you wish to use for ToolJet installation.
@@ -30,7 +30,7 @@ gcloud compute addresses create tj-static-ip --global
3. Create k8s deployment
```bash
-curl -LO https://raw.githubusercontent.com/ToolJet/ToolJet/main/deploy/kubernetes/GKE/deployment.yaml
+curl -LO https://tooljet-deployments.s3.us-west-1.amazonaws.com/kubernetes/GKE/deployment.yaml
```
Make sure to edit the environment variables in the `deployment.yaml`. You can check out the available options [here](https://docs.tooljet.com/docs/setup/env-vars).
@@ -42,13 +42,13 @@ If there are self signed HTTPS endpoints that Tooljet needs to connect to, pleas
4. Create k8s service
```bash
-curl -LO https://raw.githubusercontent.com/ToolJet/ToolJet/main/deploy/kubernetes/GKE/service.yaml
+curl -LO https://tooljet-deployments.s3.us-west-1.amazonaws.com/kubernetes/GKE/service.yaml
```
5. Create k8s ingress
```bash
-curl -LO https://raw.githubusercontent.com/ToolJet/ToolJet/main/deploy/kubernetes/GKE/ingress.yaml
+curl -LO https://tooljet-deployments.s3.us-west-1.amazonaws.com/kubernetes/GKE/ingress.yaml
```
Change the domain name to the domain/subdomain that you wish to use for ToolJet installation.
@@ -75,7 +75,7 @@ If you intend to use this feature, you'd have to set up and deploy PostgREST ser
1. Setup PostgREST server
```bash
- kubectl apply -f https://raw.githubusercontent.com/ToolJet/ToolJet/main/deploy/kubernetes/GKE/postgrest.yaml
+ kubectl apply -f https://tooljet-deployments.s3.us-west-1.amazonaws.com/kubernetes/GKE/postgrest.yaml
```
-2. Update ToolJet deployment with the appropriate env variables [here](https://raw.githubusercontent.com/ToolJet/ToolJet/main/deploy/kubernetes/GKE/deployment.yaml) and apply the changes.
+2. Update ToolJet deployment with the appropriate env variables [here](https://tooljet-deployments.s3.us-west-1.amazonaws.com/kubernetes/GKE/deployment.yaml) and apply the changes.
diff --git a/docs/versioned_docs/version-2.17.0/setup/kubernetes.md b/docs/versioned_docs/version-2.17.0/setup/kubernetes.md
index 1f8991660b..b54428f606 100644
--- a/docs/versioned_docs/version-2.17.0/setup/kubernetes.md
+++ b/docs/versioned_docs/version-2.17.0/setup/kubernetes.md
@@ -23,7 +23,7 @@ Follow the steps below to deploy ToolJet on a Kubernetes cluster.
3. Create a Kubernetes deployment
```bash
- kubectl apply -f https://raw.githubusercontent.com/ToolJet/ToolJet/main/deploy/kubernetes/deployment.yaml
+ kubectl apply -f https://tooljet-deployments.s3.us-west-1.amazonaws.com/kubernetes/deployment.yaml
```
:::info
@@ -40,7 +40,7 @@ If there are self signed HTTPS endpoints that Tooljet needs to connect to, pleas
kubectl get pods
```
-5. Create a Kubernetes services to publish the Kubernetes deployment that you've created. This step varies with cloud providers. We have a [template](https://raw.githubusercontent.com/ToolJet/ToolJet/main/deploy/kubernetes/service.yaml) for exposing the ToolJet server as a service using an AWS loadbalancer.
+5. Create a Kubernetes services to publish the Kubernetes deployment that you've created. This step varies with cloud providers. We have a [template](https://tooljet-deployments.s3.us-west-1.amazonaws.com/kubernetes/service.yaml) for exposing the ToolJet server as a service using an AWS loadbalancer.
**Examples:**
@@ -58,7 +58,7 @@ If you intend to use this feature, you'd have to set up and deploy PostgREST ser
1. Setup PostgREST server
```bash
- kubectl apply -f https://raw.githubusercontent.com/ToolJet/ToolJet/main/deploy/kubernetes/postgrest.yaml
+ kubectl apply -f https://tooljet-deployments.s3.us-west-1.amazonaws.com/kubernetes/postgrest.yaml
```
-2. Update ToolJet deployment with the appropriate env variables [here](https://raw.githubusercontent.com/ToolJet/ToolJet/main/deploy/kubernetes/deployment.yaml) and apply the changes.
+2. Update ToolJet deployment with the appropriate env variables [here](https://tooljet-deployments.s3.us-west-1.amazonaws.com/kubernetes/deployment.yaml) and apply the changes.
diff --git a/docs/versioned_docs/version-2.17.0/setup/openshift.md b/docs/versioned_docs/version-2.17.0/setup/openshift.md
index 1cdb3dd674..73f6a7e531 100644
--- a/docs/versioned_docs/version-2.17.0/setup/openshift.md
+++ b/docs/versioned_docs/version-2.17.0/setup/openshift.md
@@ -28,14 +28,14 @@ When entering one or more files and use --- to separate each definition
Copy paste deployment.yaml to the online editor
```
-https://raw.githubusercontent.com/ToolJet/ToolJet/main/deploy/openshift/deployment.yaml
+https://tooljet-deployments.s3.us-west-1.amazonaws.com/openshift/deployment.yaml
```
Copy paste the service.yaml to the online editor
```
-https://raw.githubusercontent.com/ToolJet/ToolJet/main/deploy/openshift/service.yaml
+https://tooljet-deployments.s3.us-west-1.amazonaws.com/openshift/service.yaml
```
@@ -66,5 +66,5 @@ You can know more about tooljet database [here](https://docs.tooljet.com/docs/to
If you intend to use this feature, you'd have to set up and deploy PostgREST server which helps querying ToolJet Database. Please [follow the instructions here](https://docs.tooljet.com/docs/setup/env-vars#tooljet-database) for additional environment variables configuration to be done.
```
-https://raw.githubusercontent.com/ToolJet/ToolJet/main/deploy/openshift/postgrest.yaml
-```
\ No newline at end of file
+https://tooljet-deployments.s3.us-west-1.amazonaws.com/openshift/postgrest.yaml
+```
diff --git a/docs/versioned_docs/version-2.17.0/tooljet_database.md b/docs/versioned_docs/version-2.17.0/tooljet_database.md
index b337d04d3c..287f45257e 100644
--- a/docs/versioned_docs/version-2.17.0/tooljet_database.md
+++ b/docs/versioned_docs/version-2.17.0/tooljet_database.md
@@ -7,7 +7,7 @@ Use the ToolJet-hosted database to build apps faster, and manage your data with
-
+
@@ -68,6 +68,7 @@ ToolJet database allows you to:
- **[Maintain tables of data](#accessing-tooljet-database)** in a secure database that's only accessible within your ToolJet organization.
- **[Edit, search, filter, sort, and filter](#database-editor)** data using a spreadsheet-like interface.
- **[Quickly build applications and write queries](#querying-data-from-the-tooljet-database)** to interact with the ToolJet Database, just like any other datasource but without any setup.
+- **[Export table](#export-table)** from the ToolJet Database to a JSON file.
## Accessing ToolJet Database
@@ -77,7 +78,7 @@ The ToolJet Database is available on: **[ToolJet Cloud](https://tooljet.com)**,
-
+
@@ -87,7 +88,7 @@ You can manage the ToolJet Database directly from the Database Editor. ToolJet D
-
+
@@ -97,7 +98,7 @@ For creating a new table in ToolJet Database, click on the **Create New Table**
-
+
@@ -105,7 +106,7 @@ When the **Create New Table** button is clicked, a drawer opens up from the righ
-
+
@@ -124,7 +125,7 @@ Click on **Create** button to create a new table.
-
+
@@ -134,7 +135,7 @@ You can enter a search term to search through all tables in the database.
-
+
@@ -149,7 +150,7 @@ A drawer from the right will open up from where you can create a new column by e
-
+
@@ -163,24 +164,24 @@ You can add as many filter as you want into the table by clicking on the **Filte
- Enter a **value** for the selected operation
#### Available operations are:
-- **equals**
-- **greater than**
-- **greater than or equal**
-- **less than**
-- **less than or equal**
-- **not equal**
-- **like**
-- **ilike**
-- **match**
-- **imatch**
-- **in**
-- **contains**
-- **contained**
-- **not**
+- **equals**: This operation is used to check if the value of the column is equal to the value entered in the input field.
+- **greater than**: This operation is used to check if the value of the column is greater than the value entered in the input field.
+- **greater than or equal**: This operation is used to check if the value of the column is greater than or equal to the value entered in the input field.
+- **less than**: This operation is used to check if the value of the column is less than the value entered in the input field.
+- **less than or equal**: This operation is used to check if the value of the column is less than or equal to the value entered in the input field.
+- **not equal**: This operation is used to check if the value of the column is not equal to the value entered in the input field.
+- **like**: This operation is used to check if the value of the column is like the value entered in the input field. This operation is case-sensitive. ex: `ToolJet` will not match `tooljet`
+- **ilike**: This operation is used to check if the value of the column is like the value entered in the input field. This operation is case-insensitive. ex: `ToolJet` will match `tooljet`
+- **match**: This operation is used to check if the value of the column is like the value entered in the input field. This operation is case-sensitive. ex: `ToolJet` will not match `tooljet`. This operation uses regular expressions. ex: `^ToolJet$` will match `ToolJet` but not `ToolJet Inc`.
+- **imatch**: This operation is used to check if the value of the column is like the value entered in the input field. This operation is case-insensitive. This operation uses regular expressions. ex: `^ToolJet$` will match `ToolJet` but not `ToolJet Inc`.
+- **in**: This operation is used to check if the value of the column is in the list of values entered in the input field. ex: `1,2,3`
+- **contains**: This operation is used to check if the value of the column contains the value entered in the input field. This operation is case-sensitive. ex: `ToolJet` will not match `tooljet`
+- **contained**: This operation is used to check if the value of the column is contained in the value entered in the input field. This operation is case-sensitive. ex: `ToolJet` will not match `tooljet`
+- **not**: This operation is used to negate the result of the operation selected in the dropdown. ex: `not equals` will return all the records where the value of the column is not equal to the value entered in the input field.
-
+
@@ -190,7 +191,17 @@ To sort the table data, click on the **Sort** button on top, select a **column**
-
+
+
+
+
+### Export table
+
+To export the table data, click on the **Export table** button on top. The selected table data will be exported to a **JSON** file.
+
+
+
+
@@ -220,29 +231,37 @@ To delete one or many records/rows, select on the checkbox at the right of the r
-
+
### Delete column
-To delete a particular column, just click on the column name and the **delete** button will appear, click on it to delete the column.
+To delete a particular column, just click on the column header and the **delete** button will appear, click on it to delete the column.
-
+
-### Edit or Delete a table
+### Edit table
-When you click on the kebab menu (three vertical dots icon) on the right of the table name, you'll get two options: Edit and Delete.
-- **Edit** will allow you to rename the table
-- **Delete** will allow you to delete the table permanently
+To edit the table name, click on the three vertical dots icon on the right of the table name and then click on the **Edit** option. A drawer will open from the right from where you can edit the table name.
-
+
+
+
+
+### Delete table
+
+To delete a table, click on the three vertical dots icon on the right of the table name and then click on the **Delete** option. A confirmation modal will appear, click on the **Delete** button to delete the table.
+
+
+
+
@@ -250,52 +269,54 @@ When you click on the kebab menu (three vertical dots icon) on the right of the
Querying ToolJet database is as easy as querying any other datasource on ToolJet.
-- Go to the **query panel**, and click on the **+Add** button to add a new query, and select **Run ToolJetDb query**
+- Go to the **query panel**, and click on the **+Add** button to add a new query, and select **ToolJet Database**
-
+
-- Enter the **Name** of the table that you want to query, select an **Operation** from the dropdown, **Create** the query, and then **Run** the query to get the response.
+- Select the **table** that you want to query from the dropdown, choose an **operation** from the dropdown, and then enter the required parameters for the selected operation. Click on the **Run** button to execute the query.
-
+
-:::info
-- **Preview** button on the query panel returns the query response without executing the query. Once clicked, the response will be displayed on the Preview section of the query panel which can be viewed in JSON or Raw.
-- When a new query is created, by default the query name is set to `tooljetdbN` (where N is a number) - you can rename the query by click on the query name or from the left sidebar of query panel.
-:::
+ :::info
+ - **Preview** button on the query panel returns the query response without executing the query. Once clicked, the response will be displayed on the Preview section of the query panel which can be viewed as JSON or Raw.
+ - When a new query is created, by default the query name is set to `tooljetdbN` (where N is a number) - you can rename the query by click on the query name or from the left sidebar of query panel.
+ :::
### Available operations
-#### List rows
-This operation returns the list of all the records in the table
+### List rows
+This operation returns all the records from the table
#### Optional parameters
-- **Filter**: Add a filter to the query response by setting a column, operation and value.
-- **Sort**: Add a sort to the query response by setting a column and direction.
-- **Limit**: Limit the query response. This parameter expects a numerical value. ex: 5
+- **Filter**: Add a condition by choosing a column, an operation, and the value for filtering the records.
+- **Sort**: Sort the query response by choosing a column and the order (ascending or descending).
+- **Limit**: Limit the number of records to be returned by entering a number.
-#### Create row
-This operation creates a new record in the table
+### Create row
+This operation creates a new record in the table. You can create a single record or multiple records at once.
#### Required parameters
-- **Columns**: Choose a column from the dropdown and enter a value for the new record.
+- **Columns**: Choose the columns for which you want to add values for the new record and enter the values for the selected columns. You can also add a new column by clicking on the **+Add column** button.
-#### Update row
-This operation updates an existing record in the table
+### Update row
+This operation updates a record in the table. You can update a single record or multiple records at once.
#### Required parameter
- **Filter**: Add a condition by choosing a column, an operation, and the value for updating a particular record.
+- **Columns**: Choose the columns for which you want to update the values for the selected record and enter the values for the selected columns.
-#### Delete row
-This operation deletes a record from the table
+### Delete row
+This operation deletes a record in the table. You can delete a single record or multiple records at once.
#### Required parameters
- **Filter**: Add a condition by choosing a column, an operation, and the value for deleting a particular record.
+- **Limit**: Limit the number of records to be deleted by entering a number.
:::info
If you have any other questions or feedback about **ToolJet Database**, please reach us out at hello@tooljet.com or join our **[Slack Community](https://www.tooljet.com/slack)**
diff --git a/docs/versioned_docs/version-2.18.0/Enterprise/_category_.json b/docs/versioned_docs/version-2.18.0/Enterprise/_category_.json
new file mode 100644
index 0000000000..b9b132f890
--- /dev/null
+++ b/docs/versioned_docs/version-2.18.0/Enterprise/_category_.json
@@ -0,0 +1,5 @@
+{
+ "label": "Enterprise",
+ "position": 9,
+ "collapsed": true
+}
\ No newline at end of file
diff --git a/docs/versioned_docs/version-2.18.0/Enterprise/audit_logs.md b/docs/versioned_docs/version-2.18.0/Enterprise/audit_logs.md
new file mode 100644
index 0000000000..76ddf4ceb0
--- /dev/null
+++ b/docs/versioned_docs/version-2.18.0/Enterprise/audit_logs.md
@@ -0,0 +1,93 @@
+---
+id: audit_logs
+title: Audit logs
+---
+
+
Available on: Paid plans
+
+
+The audit log is the report of all the activities done in your ToolJet account. It will capture and display events automatically by recording who performed an activity, what when, and where the activity was performed, along with other information such as IP address.
+
+
+
+
+
+
+
+### Date Range
+
+Retrieve the log of events that occurred within the specified date and time range using the range picker. By default, the system loads 24-hour logs for the initial view. The maximum duration that can be specified for the "from" and "to" dates is 30 days.
+
+:::info
+Pagination at the bottom allows navigation through the pages, with each page displaying a maximum of 7 logs.
+:::
+
+
+
+
+
+
+
+### Filter Audit Logs
+
+You can apply filters to the audited events based on the following criteria.
+
+#### Select Users
+
+Choose a specific user from the dropdown list to view all their activities.
+
+#### Select Apps
+
+The dropdown will display all the apps associated with your account. Select an app to filter the logs related to that particular app.
+
+#### Select Resources
+
+| Resources | description |
+| ----------- | ----------- |
+| User | Filter all the User events like `USER_LOGIN`, `USER_SIGNUP`, `USER_INVITE`, AND `USER_INVITE_REDEEM`. |
+| App | Filter all the App events like `APP_CREATE`, `APP_UPDATE`,`APP_VIEW`,`APP_DELETE`,`APP_IMPORT`,`APP_EXPORT`,`APP_CLONE`. |
+| Data Query | Filters the events associated with Data Query like `DATA_QUERY_RUN`. |
+| Group Permission | All the events associated with Group Permissions will be filtered. Group Permissions include `GROUP_CREATE`, `GROUP_UPDATE`, `GROUP_DELETE`. |
+| App Group Permission | Within each group, you can set apps for read or edit privileges. These events get recorded as App Group Permissions. |
+
+#### Select Actions
+
+| Actions | description |
+| ----------- | ----------- |
+| USER_LOGIN | This event is recorded everytime a user logins. |
+| USER_SIGNUP | This event is recorded everytime a new signup is made. |
+| USER_INVITE | You can invite users to your account from `Manage Users` section and an event is audited everytime an invite is sent. |
+| USER_INVITE_REDEEM | This event is recorded whenever an invite is redeemed. |
+| APP_CREATE | This event is recorded when a user creates a new app. |
+| APP_UPDATE | This event is recorded whenever actions like renaming the app, making the app public, editing shareable link, or deploying the app are made. |
+| APP_VIEW | This event is logged when someone views the launched app. (public apps aren't accounted for) |
+| APP_DELETE | This event is recorded whenever a user deletes an app from the dashboard. |
+| APP_IMPORT | This event is recorded whenever a user imports an app. |
+| APP_EXPORT | This event is recorded whenever an app is exported. |
+| APP_CLONE | This event is recorded whenever a clone of the existing app is created. |
+| DATA_QUERY_RUN | This event is logged whenever a data source is added, a query is created, or whenever a query is run either from the query editor or from the launched app. |
+| GROUP_PERMISSION_CREATE | This event is recorded whenever a group is created. |
+| GROUP_PERMISSION_UPDATE | This event is recorded whenever an app or user is added to or removed from a group, or the permissions for a group are updated. |
+| GROUP_PERMISSION_DELETE | This event is recorded whenever a user group is deleted from an account. |
+| APP_GROUP_PERMISSION_UPDATE | For every app added in to user group, you can set privileges like `View` or `Edit` and whenever these privileges are updated this event is recorded. By default, the permission of an app for a user group is set to `View`. |
+
+### Understanding Log Information
+
+
+
+
+
+
+
+| Property | Description |
+| ----------- | ----------- |
+| action_type | This indicates the type of action that was logged in the event. Refer to [this](#select-actions) for more information on actions. |
+| created_at | Shows the date and time when the event was logged. |
+| id | Each logged event is assigned a unique event ID. |
+| ip_address | Displays the IP address from which the event was logged. |
+| metadata | The metadata includes two sub-properties: `tooljet_version` and `user_agent`. `tooljet_version` shows the version of ToolJet used for the event, while `user_agent` contains information about the device and browser used. |
+| organization_id | Every organization in ToolJet has a unique ID associated with it, which is recorded when an event occurs. |
+| resource_id | Different [resources](#select-resources) have their respective IDs associated with them. These IDs are assigned when the resources are created. |
+| resource_name | Shows the name of the [resources](#select-resources) that were involved in the logged event. For example, if an app was created or deleted, it will display the name of that app. |
+| resource_type | Indicates the type of the [resources](#select-resources) involved in the logged event. |
+| user_id | Each user account in ToolJet has a unique ID associated with it, which is recorded when an event occurs. |
\ No newline at end of file
diff --git a/docs/versioned_docs/version-2.18.0/Enterprise/superadmin.md b/docs/versioned_docs/version-2.18.0/Enterprise/superadmin.md
new file mode 100644
index 0000000000..b8fe31f689
--- /dev/null
+++ b/docs/versioned_docs/version-2.18.0/Enterprise/superadmin.md
@@ -0,0 +1,158 @@
+---
+id: superadmin
+title: Super Admin
+---
+
+
Available on: Paid plans
+
+A Super Admin is the user who has full access to all the Workspaces, Users, and Groups of an instance. An instance can have more than one Super Admin. A Super Admin has full control over other users' workspaces and can create users, groups, and other super admins.
+
+The user details entered while setting up ToolJet will have Super Admin privileges.
+
+## How is Super Admin different from Admin
+
+| Privilege | Admin | Super Admin |
+| --------- | ----- | ----------- |
+| Manage Users in their workspace (Invite/Archive/Unarchive) | ✅ | ✅ |
+| Manage Groups in their workspace (Create Group/Add or Delete Users from groups/ Modify Group Permissions) | ✅ | ✅ |
+| Manage SSO in their workspace | ✅ | ✅ |
+| Manage Workspace Variables in their workspace | ✅ | ✅ |
+| Manage Workspace Constants in their workspace | ✅ | ✅ |
+| [Manage data sources for the user group in their workspace](/docs/data-sources/overview#permissions) | ✅ | ✅ |
+| [Access any user's personal workspace (create, edit or delete apps)](#access-any-workspace) | ❌ | ✅ |
+| [Archive Admin or any user of any workspace](#archiveunarchive-users) | ❌ | ✅ |
+| [Access any user's ToolJet database (create, edit or delete database)](#access-tooljet-db-in-any-workspace) | ❌ | ✅ |
+| [Manage any workspace's setting (Groups/SSO/Workspace constants)](#manage-workspace-setting-groupsssoworkspace-constants) | ❌ | ✅ |
+| [Manage all users from all the workspaces in the instance](#manage-all-users-in-the-instance) | ❌ | ✅ |
+| [Make any user Super Admin](#make-the-user-super-admin) | ❌ | ✅ |
+| [Restrict creation of personal workspace of users](#restrict-creation-of-personal-workspace-of-users) | ❌ | ✅ |
+| [Enable Multiplayer editing](#enable-multiplayer-editing) | ❌ | ✅ |
+| [Implement White Labelling](#white-labelling) | ❌ | ✅ |
+
+
+
+
+
+
+
+## Super Admin features
+
+### Access any workspace
+
+If a user has Super Admin privileges, they can switch to any workspace created by any user within the instance using the Workspace Switcher located in the bottom left corner of the screen.
+
+The dropdown will display all workspaces, including those created by both Super Admins and any other users.
+
+
+
+
+
+
+
+### Create, Edit or Delete apps from any user's personal workspace
+
+Once the Super Admin accesses the workspace of any other user, they can create, edit or delete app on the workspace.
+
+This also includes - modifying folders and importing, exporting, or cloning apps to any user's workspace.
+
+### Archive/Unarchive Users
+
+Super Admin can not only archive/unarchive users/admins on their workspace but also from the workspaces of any other user.
+
+If a user is Super Admin, they just need to open the workspace in which they want to archive or unarchive a user. Then go to the **Workspace Settings** from the sidebar -> **Manage Users** -> **Archive/Unarchive** any user/admin
+
+
+
+
+
+
+
+### Access ToolJet DB in any workspace
+
+Super Admins have access to the database of any user's workspace - just like Super Admins can access any application in any workspace. They have full access to modify or create any table in the ToolJet DB of any workspace.
+
+### Manage Workspace Settings (Groups/SSO/Workspace constants)
+
+Super Admins have all the privileges that an Admin of a workspace have, Super Admins can:
+- **✅ Manage Groups**: Creating/Deleting/Updating a Group in any workspace
+- **✅ Manage SSO**: Full control over General Settings, Password login and other SSO options
+- **✅ Workspace Variables**: Adding, updating or deleting workspace variables
+- **✅ Workspace Constants**: Adding, updating or deleting workspace constants
+- **✅ Copilot**: Enabling or disabling Copilot
+- **✅ Custom Styles**: Adding or modifying custom styles
+
+## Instance Settings
+
+Only Super Admins can access the Instance Settings:
+
+- **All Users**
+- **Manage Instance Settings**
+- **License**
+- **White labelling**
+
+## All Users
+
+### Manage all users in the instance
+
+**All Users** page can be used to check the list of all the users in the instance. Super Admins can also promote/demote any user to/from Super Admin from this page. They can also archive/unarchive any user from this page.
+
+
+
+
+
+
+
+### Archiving a user from workspace
+
+Super Admins have the privilege to remove any user from any workspace to which they belong.
+
+Super Admins can go to **All Users** page, Under the **Workspaces** column they'll see the number of workspaces a user belongs to. Click on the **`View(n)`**, a modal will pop up that will have the list of **`n`** number the workspaces, click on the **Archive/Unarchive** button next to the workspace name to remove the user from the workspace.
+
+
+
+
+
+
+
+### Make the user super admin
+
+Super Admins can make any user as Super Admin or remove any Super Admin from the **Manage All Users** in the Instance Settings page.
+
+Click on the **Edit** button next to any user, **Enable** the **Make the user Super Admin** option, and then **Save** it.
+
+The user will become Super Admin and the Type column will update from **`workspace`** to **`instance`**.
+
+
+
+
+
+
+
+## Manage Instance Settings
+
+
+
+
+
+
+
+### Restrict creation of personal workspace of users
+
+When a user joins a workspace, they are provided with their own personal workspace and option to create new workspaces.
+
+Super Admins can **control** this behavior from the Manage Instance Settings page, they can **toggle off** the option to **Allow personal workspace**. Now whenever a user joins a workspace they won't be provided a personal workspace nor they will be able to create a new workspace in the instance.
+
+### Enable multiplayer editing
+
+Super Admins can enable multiplayer editing from the Manage Instance Settings page. Once enabled, users will be able to edit the same app simultaneously resulting in real-time collaboration.
+
+## License
+
+Manage the instance license via the **Instance Settings** page. Super Admins have the capability to update the instance's license key from this page.
+
+Check out the [License](/docs/licensing) page for more details.
+
+## White labelling
+This feature allows you to customize the ToolJet instance with your own branding. You can change the logo, favicon, and the name of the instance.
+
+Check out the [White labelling](/docs/enterprise/white-label/) page for more details.
\ No newline at end of file
diff --git a/docs/versioned_docs/version-2.18.0/Enterprise/white-label.md b/docs/versioned_docs/version-2.18.0/Enterprise/white-label.md
new file mode 100644
index 0000000000..2f91cf349a
--- /dev/null
+++ b/docs/versioned_docs/version-2.18.0/Enterprise/white-label.md
@@ -0,0 +1,48 @@
+---
+id: white-label
+title: White Label
+---
+
+
Available on: Paid plans
+
+The White Label feature allows you to completely remove ToolJet's branding from the ToolJet platform, allowing you to replace it with your own customized logo, favicon and page title. This feature grants you full control over the visual identity of your ToolJet-powered application, ensuring a seamless and personalized user experience.
+
+With this feature, you gain the ability to rebrand the following key elements:
+
+- **Application Logo**: This includes the logo displayed on the login screen, dashboard, and app-editor.
+
+
+
+
+
+
+
+- **Favicon**: The small icon associated with your application.
+
+
+
+
+
+
+
+- **Page Title**: This is the text displayed next to the Favicon.
+
+
+
+
+
+
+
+## Configuration
+
+To enable white labelling, you'll need to go to the **Instance Settings** from the Dashboard and click on the `White labelling` tab. On the White labelling page, you'll be able to configure the following:
+
+- **Application Logo**: Add the URL of the image you want to use as your application logo. Preferred dimensions of the logo are: width `130px` and height `26px`.
+- **Favicon**: Enter the URL of the image you want to use as your application's favicon. Preferred dimensions of the favicon are: width `32px` and height `32px` or `16px` and height `16px`.
+- **Page Title**: Enter the text you want to display as your application's title. Preferred title length are 50-60 characters.
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/versioned_docs/version-2.18.0/actions/_category_.json b/docs/versioned_docs/version-2.18.0/actions/_category_.json
new file mode 100644
index 0000000000..f5b2dfe045
--- /dev/null
+++ b/docs/versioned_docs/version-2.18.0/actions/_category_.json
@@ -0,0 +1,5 @@
+{
+ "label": "Actions Reference",
+ "position": 7,
+ "collapsed": true
+}
\ No newline at end of file
diff --git a/docs/versioned_docs/version-2.18.0/actions/close-modal.md b/docs/versioned_docs/version-2.18.0/actions/close-modal.md
new file mode 100644
index 0000000000..bb772142f9
--- /dev/null
+++ b/docs/versioned_docs/version-2.18.0/actions/close-modal.md
@@ -0,0 +1,19 @@
+---
+id: close-modal
+title: Close modal
+---
+
+Use this action to close the modal that is already shown.
+
+Debounce field is empty by default, you can enter a numerical value to specify the time in milliseconds after which the action will be performed. ex: `300`
+
+:::info
+You can also trigger actions from the **JavaScript code**. Check it out [here](/docs/how-to/run-actions-from-runjs).
+:::
+
+
+
+
+
+
+
diff --git a/docs/versioned_docs/version-2.18.0/actions/control-component.md b/docs/versioned_docs/version-2.18.0/actions/control-component.md
new file mode 100644
index 0000000000..3a959c2921
--- /dev/null
+++ b/docs/versioned_docs/version-2.18.0/actions/control-component.md
@@ -0,0 +1,98 @@
+---
+id: control-component
+title: Control component (Component Specific Actions)
+---
+
+Control component action invokes the component specific actions. Component specific actions are the actions that are exclusive actions for a particular widget. Component specific actions can be triggered either through the event handlers or from the Run JavaScript code query.
+
+:::info
+Check out the **[live demo](https://youtu.be/JIhSH3YeM3E)** of Component specific actions demonstrated in one of our community call.
+:::
+
+## Available Component Specific Actions
+
+| Widget | Component Specific Actions |
+|--------|---------------------------|
+| Button | Click, Set label, Disable, Visibility, Loading |
+| Checkbox | Set checked |
+| Color picker | Set color |
+| Dropdown | Select option |
+| File picker | Clear files |
+| Kanban | Add card, Delete card, Move card, Update card data |
+| Map | Set location |
+| Modal | Show, Close |
+| Multiselect | Select option, Deselect option, Clear selection |
+| Radio button | Select option |
+| Tabs | Set tab |
+| Table | Set page, Select row, Deselect Row, Discard changes |
+| Text | Set text, Set Visibility |
+| Text Area | Set text, Clear |
+| Text Input | Set text, Clear, Set Focus, Set Blur, Disable, Visibility |
+
+:::info
+Currently, Component specific actions are supported only by the above listed widgets. We are working on bringing component specific actions for the remaining widgets.
+:::
+
+## Using Component Specific Actions
+
+### Set a value for text input widget using button's event handler
+
+- Drag a **Text Input** and a **Button** widget onto the canvas.
+
+- Go to the **Inspector** on the left sidebar to check the exposed variables available for the `textinput1` widget under the `components`. You'll see that the variable `value` is an empty string because the field value of the text input widget is empty right now.
+
+
+
+
+
+
+
+- Now enter some value in the text input widget and you'll see that the `value` in inspector has been updated.
+
+
+
+
+
+
+
+- Now, click on the button's widget handler to open up its properties in the right sidebar and then add a event handler for **On Click** event to trigger **Control Component** action. Select `textinput1` in component dropdown, `Set text` as Action, and in `Text` field enter the text that you want to update in the field value.
+
+
+
+
+
+
+
+- Now when you'll click on the button you'll see that the field value of the text input widget has been updated with value that you set.
+
+
+
+
+
+
+
+
+### Clear value of text input widget using JavaScript query
+
+- Let's clear the value that we set in the previous section, using Run JavaScript code. Create a new Run JavaScript Code query and call the component and the CSA that component provides.
+
+**Syntax:**
+```js
+await components.textinput1.clear()
+```
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+- Finally, hit the **save and run** query button to fire up the query, and you'll see that the field value of the text input widget has been cleared.
+
diff --git a/docs/versioned_docs/version-2.18.0/actions/copy-to-clipboard.md b/docs/versioned_docs/version-2.18.0/actions/copy-to-clipboard.md
new file mode 100644
index 0000000000..81f97c360e
--- /dev/null
+++ b/docs/versioned_docs/version-2.18.0/actions/copy-to-clipboard.md
@@ -0,0 +1,18 @@
+---
+id: copy-to-clipboard
+title: Copy to clipboard
+---
+
+Use this action to copy the text to the clipboard.
+
+Debounce field is empty by default, you can enter a numerical value to specify the time in milliseconds after which the action will be performed. ex: `300`
+
+:::info
+You can also trigger actions from the **JavaScript code**. Check it out [here](/docs/how-to/run-actions-from-runjs).
+:::
+
+
+
+
+
+
diff --git a/docs/versioned_docs/version-2.18.0/actions/generate-file.md b/docs/versioned_docs/version-2.18.0/actions/generate-file.md
new file mode 100644
index 0000000000..5e969b87a8
--- /dev/null
+++ b/docs/versioned_docs/version-2.18.0/actions/generate-file.md
@@ -0,0 +1,56 @@
+---
+id: generate-file
+title: Generate file
+---
+
+# Generate file
+
+This action allows you to construct files on the fly and let users download it.
+
+## Options
+
+| Option | Description |
+|--------|-------------|
+| Type | Type of file to be generated. Types: `CSV`, `Text` and `PDF` |
+| File name | Name of the file to be generated |
+| Data | Data that will be used to construct the file. Its format will depend on the file type, as specified in the following section |
+| Debounce | Debounce field is empty by default, you can enter a numerical value to specify the time in milliseconds after which the action will be performed. ex: `300` |
+
+:::tip
+Check how to run **[generate file action using RunJS](/docs/how-to/run-actions-from-runjs/#generate-file)**.
+:::
+
+### CSV Data Format
+
+To use the `CSV` file format, the data field should contain an array of objects. ToolJet assumes that the keys in each object are the same and represent the column headers of the CSV file.
+
+Example:
+
+```javascript
+{{
+ [
+ { name: 'John', email: 'john@tooljet.com' },
+ { name: 'Sarah', email: 'sarah@tooljet.com' },
+ ]
+}}
+```
+
+Using the above code snippet will generate a CSV file with the following content:
+
+```csv
+name,email
+John,john@tooljet.com
+Sarah,sarah@tooljet.com
+```
+
+### Text Data Format
+
+To use the `Text` file format, the data field should contain a string.
+
+If you want to generate a text file based on an array of objects, you need to stringify the data before providing it.
+
+For example, if you are using the table component to provide the data, you can enter **`{{JSON.stringify(components.table1.currentPageData)}}`** in the Data field.
+
+### PDF data format
+
+The PDF data format supports two types of input: either a `string` or an `array of objects`. When using an array of objects, the resulting PDF will display the data in a tabular format with columns and rows. On the other hand, if a string is provided, the generated PDF will consist of plain text.
diff --git a/docs/versioned_docs/version-2.18.0/actions/go-to-app.md b/docs/versioned_docs/version-2.18.0/actions/go-to-app.md
new file mode 100644
index 0000000000..02d15e6aef
--- /dev/null
+++ b/docs/versioned_docs/version-2.18.0/actions/go-to-app.md
@@ -0,0 +1,20 @@
+---
+id: go-to-app
+title: Go to app
+---
+
+This action allows you to open any ToolJet application when an event occurs.
+
+Debounce field is empty by default, you can enter a numerical value to specify the time in milliseconds after which the action will be performed. ex: `300`
+
+:::info
+You can also trigger actions from the **JavaScript code**. Check it out [here](/docs/how-to/run-actions-from-runjs).
+:::
+
+
+
+
+
+
+
+
diff --git a/docs/versioned_docs/version-2.18.0/actions/logout.md b/docs/versioned_docs/version-2.18.0/actions/logout.md
new file mode 100644
index 0000000000..0e3187471c
--- /dev/null
+++ b/docs/versioned_docs/version-2.18.0/actions/logout.md
@@ -0,0 +1,18 @@
+---
+id: logout
+title: Logout
+---
+
+This action allows you to log out of the application (ToolJet).
+
+Debounce field is empty by default, you can enter a numerical value to specify the time in milliseconds after which the action will be performed. ex: `300`
+
+:::info
+You can also trigger actions from the **JavaScript code**. Check it out [here](/docs/how-to/run-actions-from-runjs).
+:::
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/versioned_docs/version-2.18.0/actions/open-webpage.md b/docs/versioned_docs/version-2.18.0/actions/open-webpage.md
new file mode 100644
index 0000000000..749b205eb9
--- /dev/null
+++ b/docs/versioned_docs/version-2.18.0/actions/open-webpage.md
@@ -0,0 +1,18 @@
+---
+id: open-webpage
+title: Open webpage
+---
+
+You can use this action to open a webpage(on a new tab) for any event.
+
+Debounce field is empty by default, you can enter a numerical value to specify the time in milliseconds after which the action will be performed. ex: `300`
+
+:::info
+You can also trigger actions from the **JavaScript code**. Check it out [here](/docs/how-to/run-actions-from-runjs).
+:::
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/versioned_docs/version-2.18.0/actions/run-query.md b/docs/versioned_docs/version-2.18.0/actions/run-query.md
new file mode 100644
index 0000000000..55eb1f16aa
--- /dev/null
+++ b/docs/versioned_docs/version-2.18.0/actions/run-query.md
@@ -0,0 +1,18 @@
+---
+id: run-query
+title: Run Query
+---
+
+This action allows you to fire queries when an event occurs.
+
+Debounce field is empty by default, you can enter a numerical value to specify the time in milliseconds after which the action will be performed. ex: `300`
+
+:::info
+You can also trigger actions from the **JavaScript code**. Check it out [here](/docs/how-to/run-actions-from-runjs).
+:::
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/versioned_docs/version-2.18.0/actions/set-localstorage.md b/docs/versioned_docs/version-2.18.0/actions/set-localstorage.md
new file mode 100644
index 0000000000..3dead574aa
--- /dev/null
+++ b/docs/versioned_docs/version-2.18.0/actions/set-localstorage.md
@@ -0,0 +1,59 @@
+---
+id: set-localstorage
+title: Set localStorage
+---
+
+# Set localStorage
+
+This action allows you to specify a `key` and its corresponding `value` to be stored in localStorage.
+
+## Example: App that stores a name in localStorage and displays it on reload
+
+1. Add an input field, button and a text as shown
+
+
+
+3. Select the text label we've added and set its value to the name item from localStorage.
+
+:::info
+Debounce field is empty by default, you can enter a numerical value to specify the time in milliseconds after which the action will be performed. ex: `300`
+:::
+
+
+
+
+4. Now save the application, this is important as we're about to reload the page.
+
+5. Type in anything you wish on the input box and click on the button
+
+
+
diff --git a/docs/versioned_docs/version-2.18.0/actions/set-page-var.md b/docs/versioned_docs/version-2.18.0/actions/set-page-var.md
new file mode 100644
index 0000000000..5c50bab3ee
--- /dev/null
+++ b/docs/versioned_docs/version-2.18.0/actions/set-page-var.md
@@ -0,0 +1,36 @@
+---
+id: set-page-variable
+title: Set page variable
+---
+
+Page variables are restricted to the page where they are created and cannot be accessed throughout the entire application like regular variables.
+
+Use this action to establish a variable and assign a value to it within the [Multipage Apps](/docs/tutorial/pages).
+
+By default, the debounce field is left empty. However, you can input a numeric value to indicate the time in milliseconds before the action is executed. For example, `300`.
+
+
+
+
+
+
+
+## Using RunJS query to set page variable
+
+Alternatively, the set page variable action can be triggered via a RunJS query using the following syntax:
+```js
+await actions.setPageVariable('',)
+```
+
+`variablekey` must be provided as a string (enclosed in quotes), while the `variablevalue` does not require quotation marks if it is a numerical value.
+
+
+
+
+
+
+
+:::info
+For instructions on how to run actions from a RunJS query, refer to the how-to guide [Running Actions from RunJS Query](/docs/how-to/run-actions-from-runjs).
+:::
+
diff --git a/docs/versioned_docs/version-2.18.0/actions/set-table-page.md b/docs/versioned_docs/version-2.18.0/actions/set-table-page.md
new file mode 100644
index 0000000000..6c6414650c
--- /dev/null
+++ b/docs/versioned_docs/version-2.18.0/actions/set-table-page.md
@@ -0,0 +1,24 @@
+---
+id: set-table-page
+title: Set Table Page
+---
+
+Use this action to change the page index in the table widget.
+
+## Options
+
+| Option | Description |
+|--------|-------------|
+| Table | Select table from the dropdown |
+| Page Index | Numerical value for the page index. ex: `{{2}}` |
+| Debounce | Debounce field is empty by default, you can enter a numerical value to specify the time in milliseconds after which the action will be performed. ex: `300` |
+
+:::info
+You can also trigger actions from the **JavaScript code**. Check it out [here](/docs/how-to/run-actions-from-runjs).
+:::
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/versioned_docs/version-2.18.0/actions/set-variable.md b/docs/versioned_docs/version-2.18.0/actions/set-variable.md
new file mode 100644
index 0000000000..ef611d43ba
--- /dev/null
+++ b/docs/versioned_docs/version-2.18.0/actions/set-variable.md
@@ -0,0 +1,24 @@
+---
+id: set-variable
+title: Set variable
+---
+
+This action allows you to create a variable and assign a `value` to it.
+
+## Options
+
+| Option | Description |
+|--------|-------------|
+| Key | Name(String) of the variable through which you can access the value |
+| Value | A value can be a string, number, boolean expression, array, or object |
+| Debounce | Debounce field is empty by default, you can enter a numerical value to specify the time in milliseconds after which the action will be performed. ex: `300` |
+
+:::info
+You can also trigger actions from the **JavaScript code**. Check it out [here](/docs/how-to/run-actions-from-runjs).
+:::
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/versioned_docs/version-2.18.0/actions/show-alert.md b/docs/versioned_docs/version-2.18.0/actions/show-alert.md
new file mode 100644
index 0000000000..f92ec12cd7
--- /dev/null
+++ b/docs/versioned_docs/version-2.18.0/actions/show-alert.md
@@ -0,0 +1,23 @@
+---
+id: show-alert
+title: Show alert
+---
+
+This action allows you to display an alert message.
+
+You can set a custom **message** for the alert and choose a particular alert type.
+
+There are 4 types of alert messages - **Info**, **Success**, **Warning**, and **Error**.
+
+Debounce field is empty by default, you can enter a numerical value to specify the time in milliseconds after which the action will be performed. ex: `300`
+
+:::info
+You can also trigger actions from the **JavaScript code**. Check it out [here](/docs/how-to/run-actions-from-runjs).
+:::
+
+
+
+
+
+
+
diff --git a/docs/versioned_docs/version-2.18.0/actions/show-modal.md b/docs/versioned_docs/version-2.18.0/actions/show-modal.md
new file mode 100644
index 0000000000..10f5d9ab17
--- /dev/null
+++ b/docs/versioned_docs/version-2.18.0/actions/show-modal.md
@@ -0,0 +1,18 @@
+---
+id: show-modal
+title: Show modal
+---
+
+Use this action to show the modal for an event.
+
+Debounce field is empty by default, you can enter a numerical value to specify the time in milliseconds after which the action will be performed. ex: `300`
+
+:::info
+You can also trigger actions from the **JavaScript code**. Check it out [here](/docs/how-to/run-actions-from-runjs).
+:::
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/versioned_docs/version-2.18.0/actions/switch-page.md b/docs/versioned_docs/version-2.18.0/actions/switch-page.md
new file mode 100644
index 0000000000..2438fb45e7
--- /dev/null
+++ b/docs/versioned_docs/version-2.18.0/actions/switch-page.md
@@ -0,0 +1,55 @@
+---
+id: switch-page
+title: Switch Page
+---
+
+Utilize this action with various event handler to transition to a different page within the [Multipage App](/docs/tutorial/pages).
+
+By default, the debounce field is left empty. However, you can input a numeric value to indicate the time in milliseconds before the action is executed. For example, `300`.
+
+
+
+
+
+
+
+## Query Params
+
+Query parameters can be passed through action such as `Switch Page`. The parameters are appended to the end of the application URL and are preceded by a question mark (`?`).
+
+Query parameters are composed of key-value pairs, where the `key` and `value` are separated by an equals sign (`=`). Multiple query parameters can be included by clicking on the `+` button.
+
+
+
+
+
+
+
+In the above screenshot, we have provided the `username` as the key and the value is `{{globals.currentUser.email}}` which gets the email of the signed in user dynamically. When the button is clicked to trigger the `Switch Page` event handler attached to it then the URL on the switched page will have the parameters.
+
+They are commonly used to provide additional information to the server or to modify the behavior of a web page. They can be used for filtering search results, pagination, sorting, and various other purposes.
+
+
+
+
+
+
+
+## Using RunJS query to switch page
+
+Alternatively, the switch page action can be activated via a RunJS query using the following syntax:
+```js
+await actions.switchPage('')
+```
+
+:::info
+For instructions on how to run actions from a RunJS query, refer to the how-to guide [Running Actions from RunJS Query](/docs/how-to/run-actions-from-runjs).
+:::
+
+### Switch page with query params
+
+The switch page action can also be triggered along with query parameters using the following syntax:
+
+```js
+actions.switchPage('', [['param1', 'value1'], ['param2', 'value2']])
+```
diff --git a/docs/versioned_docs/version-2.18.0/actions/unset-page-var.md b/docs/versioned_docs/version-2.18.0/actions/unset-page-var.md
new file mode 100644
index 0000000000..933721c12d
--- /dev/null
+++ b/docs/versioned_docs/version-2.18.0/actions/unset-page-var.md
@@ -0,0 +1,27 @@
+---
+id: unset-page-variable
+title: Unset page variable
+---
+
+Utilize this action to clear a variable that was established using the [set page variable action](/docs/actions/set-page-variable).
+
+By default, the debounce field is left empty. However, you can input a numeric value to indicate the time in milliseconds before the action is executed. For example, `300`.
+
+
+
+
+
+
+
+## Using RunJS query to unset variable
+
+Alternatively, the unset page variable action can be triggered via a RunJS query using the following syntax:
+```js
+await actions.unsetPageVariable('')
+```
+
+`variablename` is the key of the variable that was provided while creating the variable.
+
+:::info
+For instructions on how to run actions from a RunJS query, refer to the how-to guide [Running Actions from RunJS Query](/docs/how-to/run-actions-from-runjs).
+:::
\ No newline at end of file
diff --git a/docs/versioned_docs/version-2.18.0/actions/unset-variable.md b/docs/versioned_docs/version-2.18.0/actions/unset-variable.md
new file mode 100644
index 0000000000..1e6b35f99f
--- /dev/null
+++ b/docs/versioned_docs/version-2.18.0/actions/unset-variable.md
@@ -0,0 +1,23 @@
+---
+id: unset-variable
+title: Unset variable
+---
+
+This action allows you to remove the variable variable that was created using the set variable action.
+
+## Options
+
+| Option | Description |
+|--------|-------------|
+| Key | Name(String) of the variable through which you can access the value |
+| Debounce | Debounce field is empty by default, you can enter a numerical value to specify the time in milliseconds after which the action will be performed. ex: `300` |
+
+:::info
+You can also trigger actions from the **JavaScript code**. Check it out [here](/docs/how-to/run-actions-from-runjs).
+:::
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/versioned_docs/version-2.18.0/app-builder/canvas.md b/docs/versioned_docs/version-2.18.0/app-builder/canvas.md
new file mode 100644
index 0000000000..99d2a75318
--- /dev/null
+++ b/docs/versioned_docs/version-2.18.0/app-builder/canvas.md
@@ -0,0 +1,67 @@
+---
+id: canvas
+title: Canvas
+---
+
+Canvas is the center area of the ToolJet app builder where the application is built. You arrange the **components** by dragging them from the Components library(right-sidebar).
+
+
+
+
+
+
+
+
+:::info
+- The Canvas height and width can be adjusted from the [Global Settings](/docs/app-builder/left-sidebar#global-settings).
+- When the [Pages drawer](/docs/tutorial/pages) on the left is opened or pinned, the canvas becomes horizontally scrollable.
+
+
+
+
+
+
+:::
+
+### Arrange Components
+
+All the components are fully interactive in editor mode - to prevent interaction you can **click and hold** the **Component Handle** to change component's position.
+
+
+
+
+
+
+
+### Resize Components
+
+Components on the canvas can be resized from the edges.
+
+You can precisely set the position of selected components using keyboard arrow keys after clicking the component handle.
+
+
+
+
+
+
+
+### Group Components
+
+ToolJet comes with flexible components to group other components together, such as **[Container](/docs/widgets/container/)** and **[Form](/docs/widgets/form/)**. When you drag and drop components in containers/forms they create a group of nested components. All components can be nested in this way.
+
+### Hide or Disable Components
+
+Hide or Disable a component by setting its **Visibility** or **Disabled** property to `true`. Click on the component handle to open **config inspector** on right side. These values can also evaluate to true based on a truthy value. For example, you can use the property of one component to toggle the Visibility property of another component dynamically, you just need to write a conditional statement.
+
+For example: We want to disable a button when a checkbox is checked so we can simple use `{{components.checkbox1.value}}` in **Disable** property of the button. `{{components.checkbox1.value}}` evaluates to `true` when the checkbox is checked, and false when unchecked.
+
+
+
+
+
+
+
+### Clone Components
+
+You can clone existing components on the canvas by **cmd/ctrl + d**. Check other **[Keyboard Shortcuts](/docs/tutorial/keyboard-shortcuts)**.
+
diff --git a/docs/versioned_docs/version-2.18.0/app-builder/customcss.md b/docs/versioned_docs/version-2.18.0/app-builder/customcss.md
new file mode 100644
index 0000000000..870292c51e
--- /dev/null
+++ b/docs/versioned_docs/version-2.18.0/app-builder/customcss.md
@@ -0,0 +1,56 @@
+---
+id: customstyles
+title: Custom Styles
+---
+
+
Available on: Paid plans
+
+Custom Styles feature enables the implementation of theming on ToolJet apps, allowing users to inject their own CSS styling to override the default app styling. This feature fulfills the requirement of allowing users to easily customize the appearance of their apps.
+
+Custom Styles helps in maintaining consistent themes across the ToolJet apps, alleviating the repetitive burden of styling components whenever a new app is created. By enabling users to apply standardized styles, this feature ensures that each app adheres to a unified theme without the need to manually restyle the components from scratch. As a result, the ToolJet app development process becomes more efficient, and the visual coherence of the apps is preserved, providing users with a seamless experience across all applications.
+
+
+
+
+
+
+
+## Applying Custom Styles
+
+To add Custom Styles to ToolJet apps, users should follow these steps:
+
+1. Go to the **Custom Styles** Page, accessible under **Workspace Settings** from the ToolJet dashboard.
+
+
+
+
+
+
+2. When creating a new app on ToolJet, the default button color is **blue**. If you wish to change the default button color to **red**, you must identify the class of the button component, which follows the format `_tooljet-`.
+ - The browser's inspector can also help you find the class of the component. Classes are added for both **pages** and **components**, and there are two types of selectors for classes: **Common** (`_tooljet-`) and **Individual** (`_tooljet-`).
+
+
+
+
+
+
+3. Once the class (**`_tooljet-Button`**) is identified, navigate to the Custom Styles page and apply the desired CSS changes for that class, as shown in the following CSS code:
+ ```css
+ ._tooljet-Button button {
+ background: red !important;
+ }
+ ._tooljet-Button button:hover {
+ background: green !important;
+ }
+ ```
+
+4. By applying this custom styles, all future instances of the app will have buttons with a red default color, and they will turn green on hover. This eliminates the need for users to individually edit button properties, streamlining the customization process.
+ :::info
+ Custom Styles are injected at the workspace level, ensuring consistent theming across all apps within the workspace.
+ :::
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/versioned_docs/version-2.18.0/app-builder/left-sidebar.md b/docs/versioned_docs/version-2.18.0/app-builder/left-sidebar.md
new file mode 100644
index 0000000000..ac2f311c16
--- /dev/null
+++ b/docs/versioned_docs/version-2.18.0/app-builder/left-sidebar.md
@@ -0,0 +1,99 @@
+---
+id: left-sidebar
+title: Left-sidebar
+---
+
+Left-sidebar has the following options:
+
+- **[Pages](#pages)**
+- **[Inspector](#inspector)**
+- **[Debugger](#debugger)**
+- **[Global Settings](#global-settings)**
+- **[Comments](#comments)**
+- **[Theme switch](#theme-switch)**
+
+
+
+
+
+
+
+## Pages
+
+Pages allows you to have multiple pages in a single application, making your ToolJet applications more robust and user-friendly.
+
+Check the detailed documentation for **[Pages](/docs/tutorial/pages)**.
+
+
+
+
+
+
+
+## Inspector
+
+The Inspector can be used to inspect the data of the **queries**, properties and values of the **components** that are there on the canvas, ToolJet's global variables and the variables that have been set by the user.
+
+Check the detailed guide on **[using Inspector](/docs/how-to/use-inspector)**.
+
+
+
+
+
+
+
+## Debugger
+
+Debugger records any errors that occur during the execution of queries. For instance, if a database query fails because the database is unavailable or if a REST API query fails due to an incorrect URL, the errors will be captured and shown in the debugger. Additionally, the debugger provides pertinent information associated with the error alongside the error message.
+
+If you wish to prevent the debugger from closing, you can simply click on the pin icon located in the top-right corner. By doing so, the debugger will stay open until you decide to unpin it.
+
+Debugger consists of two main sections:
+
+1. **All Log:** In this section, you can view a comprehensive list of all the logs generated during the execution of the application. These logs may include various types of messages, such as success messages, warning, and error messages.
+
+2. **Errors:** This section specifically focuses on displaying the error messages that occurred during the program's execution. These error messages indicate issues or problems that need attention, as they may lead to unexpected behaviors of the application.
+
+
+
+
+
+
+
+## Global Settings
+
+To configure the app's global settings, click on the kebab menu(three vertical dots) on the left of the app name. Global settings include:
+
+- **Hide header for launched apps**: Toggle this on to the hide the tooljet's header when the applications are launched
+- **Maintenance mode**: Toggle this on to put the application in maintenance mode. When in **maintenance mode**, on launching the app, the user will get an error message that **the app is under maintenance**.
+- **Max width of canvas**: Modify the width of the canvas in **px** or **%**. The default width is 1292 px.
+- **Max height of canvas**: Modify the width of the canvas in **px** or **%**. The default height is 2400 px and currently it is the maximum height limit.
+- **Background color of canvas**: Enter the hex color code or choose a color from the picker to change the background color of the canvas. You can also click on the **Fx** to programmatically set the value.
+
+
+
+
+
+
+
+## Comments
+
+Comment anywhere on the canvas and collaborate with other users in the workspace. Click on the comments button to enable it and then drop comment anywhere on the canvas.
+
+
+
+
+
+
+
+## Theme Switch
+
+Use the theme switch button to toggle ToolJet between light and dark modes.
+
+While developers can access the current theme's value through global variables using `{{globals.theme.name}}`, it is not currently feasible to change the theme programmatically.
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/versioned_docs/version-2.18.0/app-builder/overview.md b/docs/versioned_docs/version-2.18.0/app-builder/overview.md
new file mode 100644
index 0000000000..2fb73cfed2
--- /dev/null
+++ b/docs/versioned_docs/version-2.18.0/app-builder/overview.md
@@ -0,0 +1,20 @@
+---
+id: overview
+title: Overview
+---
+
+# App-Builder: Overview
+
+ToolJet's App Builder allows you to build applications. ToolJet's app builder has the following major components:
+
+- **[Topbar](/docs/app-builder/topbar)**: configure app settings
+- **[Canvas](/docs/app-builder/canvas)**: Arrange the components to build the interface of app
+- **[Left-sidebar](/docs/app-builder/left-sidebar)**: Add **[pages](/docs/tutorial/pages)**, **[inspect](/docs/how-to/use-inspector)** the components, queries or variables, and **[debug](#debugger)** the errors.
+- **[Components library](/docs/app-builder/components-library)**(right sidebar): Drag any component or modify the property or styling
+- **[Query Panel](/docs/app-builder/query-panel)**: Create, edit or manage the queries from the **[datasources](/docs/data-sources/overview)**
+
+
+
+
+
+
diff --git a/docs/versioned_docs/version-2.18.0/app-builder/query-panel.md b/docs/versioned_docs/version-2.18.0/app-builder/query-panel.md
new file mode 100644
index 0000000000..d21714e855
--- /dev/null
+++ b/docs/versioned_docs/version-2.18.0/app-builder/query-panel.md
@@ -0,0 +1,218 @@
+---
+id: query-panel
+title: Query Panel
+---
+
+The Query Panel, located at the bottom of the app-builder, allows you to create and manage queries for interacting with connected **Default** and **Global** datasources. It provides the capability to perform API requests, query **[databases](/docs/data-sources/overview)**, and apply **[transformations](/docs/tutorial/transformations)** or data manipulation using **[JavaScript](/docs/data-sources/run-js)** and **[Python](/docs/data-sources/run-py)**.
+
+The Query Panel consists of two sections:
+- The **[Query Manager](#query-manager)** on the right side, which displays a list of all the created queries.
+- The **[Query Editor](#query-editor)**, used to configure the selected query.
+
+
+
+
+
+
+
+## Query Manager
+
+Query Manager will list all the queries that has been created in the application. Query Manager helps in managing the queries that have been created, you can **add**, **edit**, **delete**, **duplicate**, **search**, **sort** and **filter** through them.
+
+
+
+
+
+
+
+### Add
+
+Add button is used to add new query in the application. When Add button is clicked, a menu will open with a list of options for creating a query from **Default** datasources such as **Rest API**, **ToolJet Database**, **JavaScript Code**, **Python Code** or from connected **Global Datasources**.
+
+
+
+
+
+
+
+### Sort/Filter
+
+On the top of Query Manager, there is button to Sort or Filter queries. The following options are there:
+
+**Filter:**
+- By Datasource
+
+**Sort:**
+- Name: A-Z
+- Name: Z-A
+- Type: A-Z
+- Type: Z-A
+- Last modified: oldest first
+- Last modified: newest First
+
+
+
+
+
+
+
+### Search
+
+On the top of the query manager is search box that can be used to search for a specific query.
+
+
+
+
+
+
+
+### Delete
+
+Delete button will delete the selected query, the button will only show up when you hover over the query name. When you click on the delete button, a confirmation dialog will open to confirm the deletion of the query.
+
+
+
+
+
+
+
+### Duplicate
+
+Duplicate button will duplicate the selected query, the button will only show up when you hover over the query name. The duplicate query will be named as `_copy`.
+
+
+
+
+
+
+
+### Rename
+
+Rename button is used to rename the selected query, the button will only show up when you hover over the query name. When you click on the rename button, the query name becomes editable and you can change the name of the query.
+
+
+
+
+
+
+
+## Query Editor
+
+Query editor used to configure the query parameters, preview or transform the data return by the query.
+
+:::info
+The changes made in the query panel will be saved automatically.
+:::
+
+
+
+
+
+
+
+### Topbar
+
+On the top of the query panel there are a few options:
+
+#### Query Name
+
+The name of query is displayed on the top of the query panel. You can click on it to make it editable and change the name of the query.
+
+
+
+
+
+
+
+#### Preview
+
+Preview button is used to preview the data returned by the query. The data will be displayed on the preview section present at the bottom of the query panel. This helps in debugging the query and see the data returned by the query without triggering the query in the app.
+
+The Preview of data is returned in two different formats: **Raw** & **JSON**. You can click on the clear button to clear the preview data.
+
+
+
+
+
+
+
+#### Run
+
+Run is used to trigger the query, running the query will interact with the application unlike `Preview`.
+
+
+
+
+
+
+
+### Query Parameters
+
+Query Parameters are essential values that must be provided in a query for the server to generate a response. These parameters encompass **endpoints**, **methods**, or **operations**. It's important to note that the specific set of Query Parameters varies for each datasource.
+
+
+
+
+
+
+
+#### Datasource
+
+The primary and default parameter found in all queries is **Datasource**. This option allows you to choose the appropriate datasource for your query.
+
+In cases where multiple datasources of the same type are connected, you can easily switch the query's datasource using the dropdown menu.
+
+
+
+
+
+
+
+### Transformation
+
+Transformations can be enabled on queries to transform the query results. ToolJet allows you to transform the query results using two programming languages JavaScript & Python. Check the detailed documentation on **[Transformations](/docs/tutorial/transformations)**.
+
+
+
+
+
+
+
+### Settings
+
+
+
+
+
+
+
+#### Run this query on application load?
+
+Enabling this option will execute the query every time the app is loaded.
+
+#### Request confirmation before running the query?
+
+Enabling this option show a confirmation modal to confirm `Yes` or `No` if you want to fire that query.
+
+#### Show notification on success?
+
+Enabling this option show a success toast notification when the query is successfully triggered.
+
+You can provide a custom **success message** and **notification duration** in milliseconds.
+
+### Events
+
+Event handlers can be added to queries for the following events:
+
+- **Query Success**
+- **Query Failure**
+
+:::info
+Learn more about [Event Handlers and Actions](/docs/widgets/overview#component-event-handlers).
+:::
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/versioned_docs/version-2.18.0/app-builder/right-sidebar.md b/docs/versioned_docs/version-2.18.0/app-builder/right-sidebar.md
new file mode 100644
index 0000000000..88faa89314
--- /dev/null
+++ b/docs/versioned_docs/version-2.18.0/app-builder/right-sidebar.md
@@ -0,0 +1,29 @@
+---
+id: components-library
+title: Components Library
+---
+
+The **Components Library** on the right sidebar contains all of the available components. Use this to drag-and-drop a component from the library to the canvas. It organizes components into sections and you can enter a search term to quickly find a component you need.
+
+
+
+
+
+
+
+:::tip
+Check the **[Components Catalog](/docs/widgets/overview)** to know more about specific component.
+:::
+
+## Component Config Inspector
+
+The Component Config Inspector is also called as component inspector. It contains all the available settings for the selected component and is where you **set values**, **update component names**, and **create event handlers**. The Component Inspector organizes settings into different sections, such as **Property** and **Styles**.
+
+To open the Component Config Inspector, click on the **[component handle](/docs/app-builder/canvas#arrange-components)** that is present on the top of the component including **⚙️ + Component Name** and the component inspector will open up on the right side:
+
+
+
+
+
+
+
diff --git a/docs/versioned_docs/version-2.18.0/app-builder/share.md b/docs/versioned_docs/version-2.18.0/app-builder/share.md
new file mode 100644
index 0000000000..0c3280b02d
--- /dev/null
+++ b/docs/versioned_docs/version-2.18.0/app-builder/share.md
@@ -0,0 +1,52 @@
+---
+id: share
+title: Share
+---
+
+ToolJet apps offer two sharing options: they can either be shared privately with workspace users or publicly by generating a shareable link. To obtain the shareable URL, you can easily do so by clicking on the Share button located on the top bar of the App builder.
+
+
+
+
+
+
+
+### Making the app public
+
+To share the app with external end users and make it accessible to anyone on the internet without requiring a ToolJet login, you can toggle on the Switch for "Make the application public?" in the Share modal.
+
+
+
+
+
+
+
+### Customizing the app URL
+
+By default, ToolJet will generate a unique URL for your application. However, you also have the option to edit the slug of the URL to make it more customized and user-friendly.
+
+
+
+
+
+
+
+### Embedding ToolJet Apps
+
+ToolJet apps can be directly shared with end users and embedded into web apps using `iframes`. If you want to make your application public, you can use the Share modal to obtain the embeddable link.
+
+:::info
+For embedding private ToolJet apps, you'll need to set an environment variable in the `.env` file.
+
+| Variable | Description |
+|:-------------- |:------------------------------------ |
+| ENABLE_PRIVATE_APP_EMBED | `true` or `false` |
+
+You can learn more [here](/docs/setup/env-vars#enabling-embedding-of-private-apps).
+:::
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/versioned_docs/version-2.18.0/app-builder/toolbar.md b/docs/versioned_docs/version-2.18.0/app-builder/toolbar.md
new file mode 100644
index 0000000000..c5e3b41372
--- /dev/null
+++ b/docs/versioned_docs/version-2.18.0/app-builder/toolbar.md
@@ -0,0 +1,135 @@
+---
+id: topbar
+title: Topbar
+---
+
+Topbar is present at the top of the app-builder, and is used to configure the app settings.
+
+
+
+
+
+
+
+### App name
+
+The App name can be modified by selecting the application name located on the left side of the topbar.
+
+Upon the creation of a new app, it is automatically assigned a unique app name.
+
+
+
+
+
+
+
+### Desktop or Mobile layout
+
+Switch the canvas mode in Mobile or Desktop layout from the topbar.
+
+#### Showing component on mobile layout
+
+Click on the component handle to open [component config inspector](/docs/app-builder/components-library#component-config-inspector) on the right sidebar. Scroll down to the **Layout** section and toggle on the Mobile Layout option. The width of the components will be adjusted to fit the Mobile Layout.
+
+#### Adding a new component to mobile layout
+
+Switch the canvas to mobile layout by clicking the mobile icon on the topbar. Drag and drop a new component to the canvas. This component will not be visible on the desktop layout unless **Show on desktop** is enabled from the component config inspector.
+
+:::info
+Width of the component will be automatically adjusted to fit the screen while viewing the application in app viewer.
+:::
+
+
+
+
+
+
+
+### Changes saved indicator
+
+Whenever a change is made on the component or the query panel/queries, the changes are saved automatically. The changes saved indicator will be displayed on the topbar. This helps the developer to know if the changes are saved or not.
+
+
+
+
+
+
+
+### Developer Details
+
+This will show a profile picture of the developer who is currently working on the application. Hovering over the profile picture will show the name of the developer. If there is no profile picture, then the first letter of the first name and last name will be displayed.
+
+
+
+
+
+
+
+### Version Manager
+
+**Add** or **remove** versions of an application from the Version Manager. Click on the `edit` icon next to version name to rename the version.
+
+When many developers are working on an app, **Versioning** allows them to save their own version of the app. This also prevents developers from overwriting the other developer's work.
+
+:::tip
+Versioning is also helpful when working with **[multiple environments](/docs/release-management/multi-environment/)** like development, staging and production.
+:::
+
+
+
+
+
+
+
+### Undo or Redo
+
+Undo or Redo any action performed on the canvas.
+
+You can also use **[Keyboard Shortcuts](/docs/tutorial/keyboard-shortcuts)** to perform such actions.
+
+
+
+
+
+
+
+### Share
+
+Share your applications with a unique URL generated automatically or edit the URL slug to personalize it.
+
+- When **Make the application public** is off and URL is shared then the users will have to login to ToolJet to use the application. Toggle on the option then anyone on the internet will be able to access the application without logging in to ToolJet.
+- ToolJet generates the **Embedded link** which can be used to embed application on the webpages.
+
+:::tip
+Learn more about **[Sharing](/docs/app-builder/share)** your tooljet applications.
+:::
+
+
+
+
+
+
+
+### Preview
+
+Clicking on **Preview** button will open up the currently opened version of the app in the new tab. This is really handy when the app developer wants to immediately check the app preview in production.
+
+
+
+
+
+
+
+### Release
+
+Release the app to publish the current version of the app and push the changes into the production.
+
+:::caution
+ToolJet will block editing of the Released version of an app and will display a prompt to create a new version to make the changes. This is to prevent accidentally pushing an unfinished app to the live version.
+:::
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/versioned_docs/version-2.18.0/contributing-guide/_category_.json b/docs/versioned_docs/version-2.18.0/contributing-guide/_category_.json
new file mode 100644
index 0000000000..317067020d
--- /dev/null
+++ b/docs/versioned_docs/version-2.18.0/contributing-guide/_category_.json
@@ -0,0 +1,5 @@
+{
+ "label": "Contributing Guide",
+ "position": 11,
+ "collapsed": true
+}
\ No newline at end of file
diff --git a/docs/versioned_docs/version-2.18.0/contributing-guide/code-of-conduct.md b/docs/versioned_docs/version-2.18.0/contributing-guide/code-of-conduct.md
new file mode 100644
index 0000000000..03f7184d51
--- /dev/null
+++ b/docs/versioned_docs/version-2.18.0/contributing-guide/code-of-conduct.md
@@ -0,0 +1,81 @@
+---
+id: code-of-conduct
+title: Contributor Code of Conduct
+---
+
+# Contributor Covenant Code of Conduct
+
+## Our Pledge
+
+In the interest of fostering an open and welcoming environment, we as
+contributors and maintainers pledge to make participation in our project and
+our community a harassment-free experience for everyone, regardless of age, body
+size, disability, ethnicity, sex characteristics, gender identity and expression,
+level of experience, education, socio-economic status, nationality, personal
+appearance, race, religion, or sexual identity and orientation.
+
+## Our Standards
+
+Examples of behavior that contributes to creating a positive environment
+include:
+
+* Using welcoming and inclusive language
+* Being respectful of differing viewpoints and experiences
+* Gracefully accepting constructive criticism
+* Focusing on what is best for the community
+* Showing empathy towards other community members
+
+Examples of unacceptable behavior by participants include:
+
+* The use of sexualized language or imagery and unwelcome sexual attention or
+ advances
+* Trolling, insulting/derogatory comments, and personal or political attacks
+* Public or private harassment
+* Publishing others' private information, such as a physical or electronic
+ address, without explicit permission
+* Other conduct which could reasonably be considered inappropriate in a
+ professional setting
+
+## Our Responsibilities
+
+Project maintainers are responsible for clarifying the standards of acceptable
+behavior and are expected to take appropriate and fair corrective action in
+response to any instances of unacceptable behavior.
+
+Project maintainers have the right and responsibility to remove, edit, or
+reject comments, commits, code, wiki edits, issues, and other contributions
+that are not aligned to this Code of Conduct, or to ban temporarily or
+permanently any contributor for other behaviors that they deem inappropriate,
+threatening, offensive, or harmful.
+
+## Scope
+
+This Code of Conduct applies within all project spaces, and it also applies when
+an individual is representing the project or its community in public spaces.
+Examples of representing a project or community include using an official
+project e-mail address, posting via an official social media account, or acting
+as an appointed representative at an online or offline event. Representation of
+a project may be further defined and clarified by project maintainers.
+
+## Enforcement
+
+Instances of abusive, harassing, or otherwise unacceptable behavior may be
+reported by contacting the project team at hello@tooljet.com . All
+complaints will be reviewed and investigated and will result in a response that
+is deemed necessary and appropriate to the circumstances. The project team is
+obligated to maintain confidentiality with regard to the reporter of an incident.
+Further details of specific enforcement policies may be posted separately.
+
+Project maintainers who do not follow or enforce the Code of Conduct in good
+faith may face temporary or permanent repercussions as determined by other
+members of the project's leadership.
+
+## Attribution
+
+This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
+available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
+
+[homepage]: https://www.contributor-covenant.org
+
+For answers to common questions about this code of conduct, see
+https://www.contributor-covenant.org/faq
\ No newline at end of file
diff --git a/docs/versioned_docs/version-2.18.0/contributing-guide/l10n.md b/docs/versioned_docs/version-2.18.0/contributing-guide/l10n.md
new file mode 100644
index 0000000000..196a10aba2
--- /dev/null
+++ b/docs/versioned_docs/version-2.18.0/contributing-guide/l10n.md
@@ -0,0 +1,69 @@
+---
+id: l10n
+title: Localization
+---
+
+Welcome to ToolJet Localization Guide. The goal of the Localization is to make ToolJet easy to use and close to all countries, languages, and general cultural groups. On this page, you will find instructions on how to contribute to ToolJet through Localization and make a more friendly ToolJet for all regions.
+
+## Adding Translations
+
+- For adding the translations of your language in ToolJet, you'll need to create a new **languagecode.json** file which will include all the translations for the keywords in your language, and then list the language in the **languages.json** file for the language to be listed in the dashboard of the ToolJet.
+
+- Go to the **frontend** directory which is at the root of ToolJet, then go to the **assets** and inside assets, you'll find the **translations** directory. You have created a new json file with the **language code** as the file name. The language code should follow [ISO 639-1 Code](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes).
+
+ ```
+ \frontend
+ |--\assets
+ |--\--\translations
+ |--\--\--\languages.json
+ |--\--\--\en.json
+ ```
+
+
+
+
+
+
+
+- Let's localize ToolJet in the **French** language. Create a new json file inside the translations directory and name it **fr.json**. `fr` is the language code for French.
+
+- After creating the new file, open the **en.json** file and copy all the contents of the file to the newly created **fr.json**.
+
+
+
+
+
+
+
+- Once copied, you can now start adding the translations for the keywords in the french language.
+
+- After completing the translation, all you need to do is list the language in **languages.json** file. You'll need to add an object with three key-value pairs. **lang** - the name of the language that you added, **code** - the language code, and the **nativeLang** - name of language in the native.
+
+ ```js
+ {
+ "languageList":
+ [
+ { "lang": "English", "code": "en", "nativeLang": "English" },
+ { "lang": "French", "code": "fr", "nativeLang": "Français" }
+ ]
+ }
+ ```
+
+
+
+:::note
+Feel free to reach us on [Slack](https://tooljet.com/slack) for any help related to Localization.
+:::
\ No newline at end of file
diff --git a/docs/versioned_docs/version-2.18.0/contributing-guide/marketplace/creating-a-plugin.md b/docs/versioned_docs/version-2.18.0/contributing-guide/marketplace/creating-a-plugin.md
new file mode 100644
index 0000000000..6cadb88d7e
--- /dev/null
+++ b/docs/versioned_docs/version-2.18.0/contributing-guide/marketplace/creating-a-plugin.md
@@ -0,0 +1,390 @@
+---
+id: creating-a-plugin
+title: 'Marketplace: Creating plugins'
+---
+
+# Marketplace: Creating plugins
+
+## What are plugins
+
+ToolJet’s development has centered on extensibility, allowing developers to utilize plugins that expand their capabilities. Currently, these plugins are limited to connectors, including data source connectors like PostgreSQL, MySQL, Twilio, Stripe, and more. Using JavaScript/TypeScript, developers can develop plugins to enhance ToolJet's functionality and publish these plugins on the ToolJet Marketplace.
+
+This guide will provide step-by-step instructions for creating ToolJet plugins using the `tooljet` CLI.
+
+The `tooljet` CLI is a user-friendly command-line tool designed to simplify the plugin building process. As part of this guide, we will create a basic plugin for GitHub.
+
+## Step 1: Creating a New Plugin - GitHub Plugin
+
+The first step is to bootstrap a new plugin for the ToolJet marketplace. The plugin will authenticate users with a GitHub Personal Access Token and include fundamental operations such as fetching user details, repositories, issues, and pull requests.
+
+If you have completed the **[Setup](/docs/contributing-guide/marketplace/marketplace-setup)** guide, you can begin developing the plugin using the `tooljet` CLI. To initiate plugin development, enter the following command in the terminal:
+```bash
+# create a new plugin
+tooljet plugin create github
+```
+
+When prompted, enter the **plugin name** and select the **plugin type**, which is api in this case. Additionally, select **yes** when prompted to create a new plugin for the marketplace.
+
+If your plugin is hosted on GitHub, please provide the **repository URL** when prompted. Otherwise, leave it blank.
+
+When a plugin is created using the `ToolJet` CLI, an object is added to the **plugins.json** file in the **`ToolJet/server/src/assets/marketplace/`** directory. This object includes metadata about the plugin, such as its name, description, version, author, and other relevant details.
+
+The plugins.json file serves as a registry of all available plugins for use in ToolJet. When the ToolJet server starts up, it reads the plugins.json file and loads all plugins that are listed in it.
+
+:::info
+It is important to note that the plugins.json file should not be manually edited, as it is automatically generated by the `ToolJet CLI`. Making changes to this file can result in issues with the proper functioning of the plugins in the system.
+:::
+
+All marketplace plugins are stored in the **`/marketplace`** directory of the ToolJet repository. You can find the GitHub plugin **[here](https://github.com/ToolJet/ToolJet/tree/develop/marketplace/plugins/github)**.
+
+The structure of a typical ToolJet plugin directory appears as follows:
+```bash
+github/
+ package.json
+ lib/
+ icon.svg
+ index.ts
+ operations.json
+ manifest.json
+```
+
+In this structure, the file **manifest.json** contains information about the plugin's name, description, and other details. The file **operations.json** contains metadata about all the operations that the plugin supports. The main file, **index.ts**, creates a QueryService for the plugin, which handles queries, connection testing, caching, and more. The **icon.svg** file serves as the plugin's icon, while **package.json** is automatically generated by the CLI.
+
+:::info
+**Why do we need a manifest.json file or a operations.json file?**
+
+The manifest.json file is used by a React component to create a dynamic UI for connection forms. It defines the schema of an API or data source, including its name, type, and any exposed variables, as well as options for authentication and other customizable properties. The properties section specifies the required fields and their types for connecting to the API or data source. By reading the manifest.json file, the React component generates the necessary UI components based on the schema, such as text inputs, dropdowns, checkboxes, and other elements.
+
+On the other hand, the operations.json file contains a schema definition for a specific data source, like Github. It describes the available operations and their parameters that can be used to query the data source. A React component uses this schema to create queries in ToolJet applications, generating a UI that allows users to select the desired operation and provide the required parameters. The component uses the properties defined in the operations.json file to create various UI elements, such as dropdowns and input fields, and handle user interactions to create the final query. Once the user fills in the required parameters, the component uses them to generate a query that can be executed against the data source and return the results to the user.
+
+Overall, *manifest.json* and *operations.json* files are essential for creating dynamic UI components in ToolJet applications. They define the schema for data sources and available operations, which React components then use to generate user-friendly UI elements. By utilizing these files, ToolJet enables users to easily connect to various APIs and data sources, perform queries, and retrieve data in an intuitive and efficient manner.
+:::
+
+## Step 2: Defining the manifest.json file
+
+To construct the connection form, it's important to include the necessary options in the manifest.json file. Here's an example of how to do it:
+```json
+ "properties": {
+ "credentials": {
+ "label": "Authentication",
+ "key": "auth_type",
+ "type": "dropdown-component-flip",
+ "description": "A single select dropdown to choose credentials",
+ "list": [
+ {
+ "value": "personal_access_token",
+ "name": "Use Personal Access Token"
+ }
+ ]
+ },
+ "personal_access_token": {
+ "token": {
+ "label": "Token",
+ "key": "personal_token",
+ "type": "password",
+ "description": "Enter your personal access token",
+ "hint": "You can generate a personal access token from your Github account settings."
+ }
+ }
+ }
+```
+This manifest.json file includes information about authentication options, specifically a dropdown to choose a type of credentials and a field to enter a personal access token. The label, key, type, description, and hint properties are used to define the specific fields and their types required for connecting to the API or data source.
+
+In this particular code, there are two main properties defined: **`credentials`** and **`personal_access_token`**.
+
+The **`credentials`** property specifies the authentication method to be used. It contains several keys:
+- **`label`**: a user-friendly label for the authentication method, set to "Authentication"
+- **`key`**: a unique identifier for the authentication method, set to "auth_type"
+- **`type`**: the type of the authentication method, set to "dropdown-component-flip"
+- **`description`**: a description of the authentication method, set to "A single select dropdown to choose credentials"
+- **`list`**: an array of objects representing the different authentication methods available. In this case, there is only one method available: a personal access token. The `value` key in the object is set to "personal_access_token" and the `name` key is set to "Use Personal Access Token".
+
+The **`personal_access_token`** property specifies the details of the personal access token authentication method. It contains a `token` key, which specifies the actual personal access token to be used. The `token` key contains several keys:
+- **`label`**: a user-friendly label for the personal access token, set to "Token"
+- **`key`**: a unique identifier for the personal access token, set to "personal_token"
+- **`type`**: the type of the personal access token, set to "password"
+- **`description`**: a description of the personal access token, set to "Enter your personal access token"
+- **`hint`**: a hint for the personal access token, set to "You can generate a personal access token from your Github account settings."
+
+The available `type` options are:
+
+However, based on the code you provided, the available **`type`** options are:
+- **`password`**: used to input a secret value, such as a password or an access token.
+- **`dropdown-component-flip`**: used to create a dropdown menu that flips its position relative to the component that triggers it.
+- **`text`**: used to input a single line of text.
+- **`textarea`**: used to input multiple lines of text.
+- **`toggle`**: used to create a simple on/off switch.
+- **`react-component-headers`**: used to display headers for React components.
+- **`codehinter`**: is a specialized input field used for entering code and has additional functionality, such as resolving JavaScript code within double curly braces`{{}}`.
+
+:::tip
+The **manifest.json** file is utilized by the connection modal component, which appears to prompt users to enter their datasource credentials. Meanwhile, the **operations.json** file is used by the query manager when users generate a specific query for a connected datasource. **Both files utilize a similar schema**.
+:::
+
+## Step 3: Defining the operations.json file
+```json
+ "properties": {
+ "operation": {
+ "label": "Operation",
+ "key": "operation",
+ "type": "dropdown-component-flip",
+ "description": "Single select dropdown for operation",
+ "list": [
+ {
+ "value": "get_user_info",
+ "name": "Get user info"
+ },
+ {
+ "value": "get_repo",
+ "name": "Get repository"
+ },
+ {
+ "value": "get_repo_issues",
+ "name": "Get repository issues"
+ },
+ {
+ "value": "get_repo_pull_requests",
+ "name": "Get repository pull requests"
+ }
+ ]
+ },
+ "get_user_info": {
+ "username": {
+ "label": "Username",
+ "key": "username",
+ "type": "codehinter",
+ "lineNumbers": false,
+ "description": "Enter username",
+ "width": "320px",
+ "height": "36px",
+ "className": "codehinter-plugins",
+ "placeholder": "Enter username"
+ }
+ },
+ "get_repo": {
+ "owner": {
+ "label": "Owner",
+ "key": "owner",
+ "type": "codehinter",
+ "lineNumbers": false,
+ "description": "Enter owner name",
+ "width": "320px",
+ "height": "36px",
+ "className": "codehinter-plugins",
+ "placeholder": "developer"
+ },
+ "repo": {
+ "label": "Repository",
+ "key": "repo",
+ "type": "codehinter",
+ "lineNumbers": false,
+ "description": "Enter repository name",
+ "width": "320px",
+ "height": "36px",
+ "className": "codehinter-plugins",
+ "placeholder": "tooljet"
+ }
+ },
+ "get_repo_issues": {
+ "owner": {
+ "label": "Owner",
+ "key": "owner",
+ "type": "codehinter",
+ "lineNumbers": false,
+ "description": "Enter owner name",
+ "width": "320px",
+ "height": "36px",
+ "className": "codehinter-plugins",
+ "placeholder": "developer"
+ },
+ "repo": {
+ "label": "Repository",
+ "key": "repo",
+ "type": "codehinter",
+ "lineNumbers": false,
+ "description": "Enter repository name",
+ "width": "320px",
+ "height": "36px",
+ "className": "codehinter-plugins",
+ "placeholder": "tooljet"
+ },
+ "state": {
+ "label": "State",
+ "key": "state",
+ "className": "codehinter-plugins col-4",
+ "type": "dropdown",
+ "description": "Single select dropdown for choosing state",
+ "list": [
+ {
+ "value": "open",
+ "name": "Open"
+ },
+ {
+ "value": "closed",
+ "name": "Closed"
+ },
+ {
+ "value": "all",
+ "name": "All"
+ }
+ ]
+ }
+ },
+ "get_repo_pull_requests": {
+ "owner": {
+ "label": "Owner",
+ "key": "owner",
+ "type": "codehinter",
+ "lineNumbers": false,
+ "description": "Enter owner name",
+ "width": "320px",
+ "height": "36px",
+ "className": "codehinter-plugins",
+ "placeholder": "developer"
+ },
+ "repo": {
+ "label": "Repository",
+ "key": "repo",
+ "type": "codehinter",
+ "lineNumbers": false,
+ "description": "Enter repository name",
+ "width": "320px",
+ "height": "36px",
+ "className": "codehinter-plugins",
+ "placeholder": "tooljet"
+ },
+ "state": {
+ "label": "State",
+ "key": "state",
+ "type": "dropdown",
+ "className": "codehinter-plugins col-4",
+ "description": "Single select dropdown for choosing state",
+ "list": [
+ {
+ "value": "open",
+ "name": "Open"
+ },
+ {
+ "value": "closed",
+ "name": "Closed"
+ },
+ {
+ "value": "all",
+ "name": "All"
+ }
+ ]
+ }
+ }
+ }
+```
+The operations.json file specifies the available operations that can be executed on the data source. It provides details about the operation type, required fields to execute the operation, and the data type of each field. The label, key, type, description, and hint properties are used to define the specific fields and their types required to establish a connection with the API or data source.
+
+## Step 4: Add the npm package of Gitub to the plugin dependencies
+
+- Change directory to the plugin directory where the npm package needs to be installed and then install the package
+ ```bash
+ # change directory to the plugin directory and install the npm package
+ npm i octokit --workspace=@tooljet-marketplace/github
+ ```
+
+ :::info
+ Steps to install npm package to a plugin
+
+ ```bash
+ npm i --workspace=
+ ```
+
+ The command `npm i --workspace=` is used to install a specific npm package into a particular workspace of a multi-package repository.
+
+ The *--workspace* flag is used to specify the workspace where the package should be installed. In this case, we are installing the package in the *@tooljet-marketplace/github* workspace.
+ :::
+
+## Step 5: Implement the query execution logic in index.ts
+
+In index.ts, the query execution logic needs to be implemented for the Github plugin's QueryService. The QueryService is responsible for handling the process of running queries and receives information about the data source, including credentials, configurations, and query parameters.
+
+For the Github data source, the sourceOptions will contain the necessary authentication credentials, like the personal access token, while the queryOptions will include the configurations and parameters specific to the query, like obtaining a list of repositories for a particular user.
+
+Using this information, the QueryService will create and execute API requests against the Github API. The resulting data will be returned to the caller for further processing as needed.
+
+Create a new file **query_operations.ts** in the **plugins/github/src** directory and add the following code to it.
+```typescript
+import { Octokit } from 'octokit'
+import { QueryOptions } from './types'
+
+
+export async function getUserInfo(octokit: Octokit, options: QueryOptions): Promise