diff --git a/.version b/.version
index 0eed1a29ef..f8f4f03b3d 100644
--- a/.version
+++ b/.version
@@ -1 +1 @@
-1.12.0
+1.12.1
diff --git a/docs/docs/Enterprise/audit_logs.md b/docs/docs/Enterprise/audit_logs.md
index c34ee8d2fb..0444b20d36 100644
--- a/docs/docs/Enterprise/audit_logs.md
+++ b/docs/docs/Enterprise/audit_logs.md
@@ -1,3 +1,7 @@
+---
+id: audit_logs
+title: Audit logs
+---
# Audit logs
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.
diff --git a/docs/docs/actions/generate-file.md b/docs/docs/actions/generate-file.md
index 2850296f7f..6aeaa96d03 100644
--- a/docs/docs/actions/generate-file.md
+++ b/docs/docs/actions/generate-file.md
@@ -1,5 +1,6 @@
---
-sidebar_label: Generate file
+id: generate-file
+title: Generate file
---
# Generate file
diff --git a/docs/docs/actions/set-localstorage.md b/docs/docs/actions/set-localstorage.md
index 69fc56c8ab..404ab1428a 100644
--- a/docs/docs/actions/set-localstorage.md
+++ b/docs/docs/actions/set-localstorage.md
@@ -1,5 +1,6 @@
---
-sidebar_label: Set localStorage
+id: set-localstorage
+title: Set localStorage
---
# Set localStorage
diff --git a/docs/docs/contributing-guide/code-of-conduct.md b/docs/docs/contributing-guide/code-of-conduct.md
index 7c1fef9205..03f7184d51 100644
--- a/docs/docs/contributing-guide/code-of-conduct.md
+++ b/docs/docs/contributing-guide/code-of-conduct.md
@@ -1,10 +1,10 @@
---
-sidebar_position: 3
-sidebar_label: Code of Conduct
+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
diff --git a/docs/docs/contributing-guide/setup/docker.md b/docs/docs/contributing-guide/setup/docker.md
index 64e14bc904..27ea3ce172 100644
--- a/docs/docs/contributing-guide/setup/docker.md
+++ b/docs/docs/contributing-guide/setup/docker.md
@@ -1,5 +1,6 @@
---
-sidebar_position: 1
+id: docker
+title: Docker
---
# Docker
diff --git a/docs/docs/contributing-guide/setup/Mac OS.md b/docs/docs/contributing-guide/setup/macos.md
similarity index 99%
rename from docs/docs/contributing-guide/setup/Mac OS.md
rename to docs/docs/contributing-guide/setup/macos.md
index 2e96738c68..889727aa11 100644
--- a/docs/docs/contributing-guide/setup/Mac OS.md
+++ b/docs/docs/contributing-guide/setup/macos.md
@@ -1,5 +1,6 @@
---
-sidebar_position: 1
+id: macos
+title: Mac OS
---
# Mac OS
diff --git a/docs/docs/contributing-guide/setup/ubuntu.md b/docs/docs/contributing-guide/setup/ubuntu.md
index 8aa2b9674c..72dac0405d 100644
--- a/docs/docs/contributing-guide/setup/ubuntu.md
+++ b/docs/docs/contributing-guide/setup/ubuntu.md
@@ -1,5 +1,6 @@
---
-sidebar_position: 1
+id: ubuntu
+title: Ubuntu
---
# Ubuntu
diff --git a/docs/docs/contributing-guide/slackcoc.md b/docs/docs/contributing-guide/slackcoc.md
index e4d6f80eec..aa38cddbc7 100644
--- a/docs/docs/contributing-guide/slackcoc.md
+++ b/docs/docs/contributing-guide/slackcoc.md
@@ -1,6 +1,6 @@
---
-sidebar_position: 4
-sidebar_label: Slack Code of Conduct
+id: slackcoc
+title: Slack Code of Conduct
---
# Slack Code of Conduct
diff --git a/docs/docs/contributing-guide/tutorials/create-widget.md b/docs/docs/contributing-guide/tutorials/create-widget.md
index b54053daf2..de4cafaa81 100644
--- a/docs/docs/contributing-guide/tutorials/create-widget.md
+++ b/docs/docs/contributing-guide/tutorials/create-widget.md
@@ -1,5 +1,6 @@
---
-sidebar_position: 1
+id: creating-widget
+title: Creating Widgets
---
# Creating Widgets
diff --git a/docs/docs/contributing-guide/tutorials/creating-a-plugin.md b/docs/docs/contributing-guide/tutorials/creating-a-plugin.md
index cfd5e6eb01..8dbd1e8b87 100644
--- a/docs/docs/contributing-guide/tutorials/creating-a-plugin.md
+++ b/docs/docs/contributing-guide/tutorials/creating-a-plugin.md
@@ -1,6 +1,6 @@
---
-sidebar_position: 2
-sidebar_label: Creating a plugin
+id: creating-a-plugin
+title: Creating Plugins
---
# Creating plugins for ToolJet
diff --git a/docs/docs/data-sources/airtable.md b/docs/docs/data-sources/airtable.md
index 74404cc706..ff4dee4393 100644
--- a/docs/docs/data-sources/airtable.md
+++ b/docs/docs/data-sources/airtable.md
@@ -1,5 +1,6 @@
---
-sidebar_position: 1
+id: airtable
+title: Airtable
---
# Airtable
diff --git a/docs/docs/data-sources/appwrite.md b/docs/docs/data-sources/appwrite.md
index 72d44dd5c8..7148101903 100644
--- a/docs/docs/data-sources/appwrite.md
+++ b/docs/docs/data-sources/appwrite.md
@@ -1,6 +1,6 @@
---
-sidebar_position: 2
-sidebar_label: Appwrite
+id: appwrite
+title: Appwrite Database
---
# Appwrite Database
diff --git a/docs/docs/data-sources/baserow.md b/docs/docs/data-sources/baserow.md
index 5a8876dd7a..dc822d6ed8 100644
--- a/docs/docs/data-sources/baserow.md
+++ b/docs/docs/data-sources/baserow.md
@@ -1,6 +1,6 @@
---
-sidebar_position: 3
-sidebar_label: Baserow
+id: baserow
+title: Baserow
---
# Baserow
diff --git a/docs/docs/data-sources/bigquery.md b/docs/docs/data-sources/bigquery.md
index e44fcd7472..1b51599ecc 100644
--- a/docs/docs/data-sources/bigquery.md
+++ b/docs/docs/data-sources/bigquery.md
@@ -1,5 +1,6 @@
---
-sidebar_position: 3
+id: bigquery
+title: BigQuery
---
# BigQuery
diff --git a/docs/docs/data-sources/couchdb.md b/docs/docs/data-sources/couchdb.md
index 4654bf0b8a..37f49de7f8 100644
--- a/docs/docs/data-sources/couchdb.md
+++ b/docs/docs/data-sources/couchdb.md
@@ -1,6 +1,6 @@
---
-sidebar_position: 4.1
-sidebar_label: CouchDB
+id: couchdb
+title: CouchDB
---
# CouchDB
diff --git a/docs/docs/data-sources/custom-js.md b/docs/docs/data-sources/custom-js.md
index 95fd47edb4..e35c6dbf25 100644
--- a/docs/docs/data-sources/custom-js.md
+++ b/docs/docs/data-sources/custom-js.md
@@ -1,5 +1,6 @@
---
-sidebar_position: 5
+id: custom-js
+title: Custom JavaScript
---
# Custom JavaScript
diff --git a/docs/docs/data-sources/dynamodb.md b/docs/docs/data-sources/dynamodb.md
index aa45b270b2..df0189d671 100644
--- a/docs/docs/data-sources/dynamodb.md
+++ b/docs/docs/data-sources/dynamodb.md
@@ -1,5 +1,6 @@
---
-sidebar_position: 6
+id: dynamodb
+title: DynamoDB
---
# DynamoDB
diff --git a/docs/docs/data-sources/elasticsearch.md b/docs/docs/data-sources/elasticsearch.md
index a2c73ef57f..e5e356fbc7 100644
--- a/docs/docs/data-sources/elasticsearch.md
+++ b/docs/docs/data-sources/elasticsearch.md
@@ -1,5 +1,6 @@
---
-sidebar_position: 7
+id: elasticsearch
+title: Elasticsearch
---
# Elasticsearch
diff --git a/docs/docs/data-sources/firestore.md b/docs/docs/data-sources/firestore.md
index da98b8feda..6ee451f913 100644
--- a/docs/docs/data-sources/firestore.md
+++ b/docs/docs/data-sources/firestore.md
@@ -1,5 +1,6 @@
---
-sidebar_position: 4
+id: firestore
+title: Cloud Firestore
---
# Cloud Firestore
diff --git a/docs/docs/data-sources/gcs.md b/docs/docs/data-sources/gcs.md
index 5c9f4c08f3..2d77ae74f9 100644
--- a/docs/docs/data-sources/gcs.md
+++ b/docs/docs/data-sources/gcs.md
@@ -1,5 +1,6 @@
---
-sidebar_position: 8
+id: gcs
+title: Google Cloud Storage
---
# Google Cloud Storage
diff --git a/docs/docs/data-sources/google.sheets.md b/docs/docs/data-sources/google.sheets.md
index f68ff95903..b66939f204 100644
--- a/docs/docs/data-sources/google.sheets.md
+++ b/docs/docs/data-sources/google.sheets.md
@@ -1,5 +1,6 @@
---
-sidebar_position: 9
+id: google.sheets
+title: Google Sheets
---
# Google Sheets
diff --git a/docs/docs/data-sources/graphql.md b/docs/docs/data-sources/graphql.md
index 3d0dd9c8a8..018edead5e 100644
--- a/docs/docs/data-sources/graphql.md
+++ b/docs/docs/data-sources/graphql.md
@@ -1,5 +1,6 @@
---
-sidebar_position: 10
+id: graphql
+title: GraphQL
---
# GraphQL
diff --git a/docs/docs/data-sources/influxdb.md b/docs/docs/data-sources/influxdb.md
index 74affcebb6..77ff88ba32 100644
--- a/docs/docs/data-sources/influxdb.md
+++ b/docs/docs/data-sources/influxdb.md
@@ -1,5 +1,6 @@
---
-sidebar_position: 10.1
+id: influxdb
+title: InfluxDB
---
# InfluxDB
diff --git a/docs/docs/data-sources/mailgun.md b/docs/docs/data-sources/mailgun.md
index a3498d331e..ccfbc9d5ee 100644
--- a/docs/docs/data-sources/mailgun.md
+++ b/docs/docs/data-sources/mailgun.md
@@ -1,5 +1,6 @@
---
-sidebar_position: 11
+id: mailgun
+title: Mailgun
---
# Mailgun
diff --git a/docs/docs/data-sources/minio.md b/docs/docs/data-sources/minio.md
index 185ad98ee4..44c8a4e40c 100644
--- a/docs/docs/data-sources/minio.md
+++ b/docs/docs/data-sources/minio.md
@@ -1,5 +1,6 @@
---
-sidebar_position: 12
+id: minio
+title: MinIO
---
# MinIO
diff --git a/docs/docs/data-sources/mongodb.md b/docs/docs/data-sources/mongodb.md
index b1e2731c2c..0b345cb57f 100644
--- a/docs/docs/data-sources/mongodb.md
+++ b/docs/docs/data-sources/mongodb.md
@@ -1,5 +1,6 @@
---
-sidebar_position: 13
+id: mongodb
+title: MongoDB
---
# MongoDB
diff --git a/docs/docs/data-sources/mssql.md b/docs/docs/data-sources/mssql.md
index 26952698e9..feea0ec9d9 100644
--- a/docs/docs/data-sources/mssql.md
+++ b/docs/docs/data-sources/mssql.md
@@ -1,5 +1,6 @@
---
-sidebar_position: 14
+id: mssql
+title: MS SQL Server / Azure SQL databases
---
# MS SQL Server / Azure SQL databases
diff --git a/docs/docs/data-sources/mysql.md b/docs/docs/data-sources/mysql.md
index 047bf63673..44b167dae6 100644
--- a/docs/docs/data-sources/mysql.md
+++ b/docs/docs/data-sources/mysql.md
@@ -1,5 +1,6 @@
---
-sidebar_position: 15
+id: mysql
+title: MySQL
---
# MySQL
diff --git a/docs/docs/data-sources/n8n.md b/docs/docs/data-sources/n8n.md
index edf235b926..c0c01de98e 100644
--- a/docs/docs/data-sources/n8n.md
+++ b/docs/docs/data-sources/n8n.md
@@ -1,5 +1,6 @@
---
-sidebar_position: 16
+id: n8n
+title: n8n
---
# n8n
diff --git a/docs/docs/data-sources/notion.md b/docs/docs/data-sources/notion.md
index 4d1b83feab..1242765ef5 100644
--- a/docs/docs/data-sources/notion.md
+++ b/docs/docs/data-sources/notion.md
@@ -1,126 +1,249 @@
-# notion
+---
+id: notion
+title: Notion
+---
+# Notion
ToolJet can connect to a Notion workspace to do operations on notion pages, databases and blocks.
## Connection
-We can easily integrate notion with tooljet using just an API token. Read [Create internal integration with notion API](https://www.notion.so/help/create-integrations-with-the-notion-api)
+
+For integrating Notion with ToolJet we will need the API token. The API token can be generated from your Notion workspace settings. Read the official Notion docs for [Creating an internal integration with notion API](https://www.notion.so/help/create-integrations-with-the-notion-api).
+
+
+
+
+
+
## Querying Notion
-Notion API provides api support for database, page, block, user
+Notion API provides support for:
+- **[Database](#database)**
+- **[Page](#page)**
+- **[Block](#blocks)**
+- **[User](#user)**
+
+
+
+
+
+
+
+:::tip
+
+Before querying Notion, you must share the database with your integration. Click the share button in your database view, find your integration name select it.
+
+
+
+
+
+
+
+:::
### Database
-- Retrieve a database
+On database resource you can perform the following operations:
+- **[Retrieve a database](#1-retrieve-a-database)**
+- **[Query a database](#2-query-a-database)**
+- **[Create a database](#3-create-a-database)**
+- **[Update a database](#4-update-a-database)**
- #### **Properties**
+
- - Database ID
+
-- Query a database
+
- #### **Properties**
+#### 1. Retrieve a database
- - Database ID
- - Filter : This must be an object of filters
- - Children : Array of sort objects
- - Limit : limit for pagination
- - Start Cursor : Next object id to continue pagination
+This operations retreives a Database object using the ID specified.
-- Create a database
- #### **Properties**
- - Database ID
- - Title : Title should be an array of rich_text properties
- - Properties : Properties defines the columns in a database
- - Icon type : Currently notion api accepts two icon options, emoji, external URL
- - Icon value: Value of selected icon type
- - Icon type : Currently notion api accepts only external URL
- - Cover value: Value of selected cover type
+##### Required parameters:
-- Update a database
- #### **Properties**
- - Database ID
- - Title
- - Properties
- - Icon type
- - Icon value
- - Icon type
- - Cover value
+- **Database ID**: You'll find the Database ID in the url. Suppose this is the example url: `https://www.notion.so/workspace/XXX?v=YYY&p=ZZZ` then `XXX` is the database ID, `YYY` is the view ID and `ZZZ` is the page ID.
+
+
+
+
+
+
+
+#### 2. Query a database
+
+This operation gets a list of **Pages** contained in the database, filtered and ordered according to the filter conditions and sort criteria provided in the query.
+##### Required parameters:
+
+- **Database ID** : You'll find the Database ID in the url. Suppose this is the example url: `https://www.notion.so/workspace/XXX?v=YYY&p=ZZZ` then `XXX` is the database ID, `YYY` is the view ID and `ZZZ` is the page ID.
+
+##### Optional parameters:
+
+- **Filter** : This must be an object of filters
+- **Sort** : Array of sort objects
+- **Limit** : limit for pagination
+- **Start Cursor** : Next object id to continue pagination
+
+#### 3. Create a database
+
+This opertion creates a database as a subpage in the specified parent page, with the specified properties.
+
+##### Required parameters:
+
+- **Database ID** : You'll find the Database ID in the url. Suppose this is the example url: `https://www.notion.so/workspace/XXX?v=YYY&p=ZZZ` then `XXX` is the database ID, `YYY` is the view ID and `ZZZ` is the page ID.
+- **Page ID** : Page ID of the parent
+- **Properties** : Properties defines the columns in a database
+
+##### Optional parameters:
+
+- **Title** : Title should be an array of rich_text properties
+- **Icon type** : Currently notion api accepts two icon options, emoji, external URL
+- **Icon value** : Value of selected icon type
+- **Icon type** : Currently notion api accepts only external URL
+- **Cover value** : Value of selected cover type
+
+#### 4. Update a database
+
+This operation updates an existing database as specified by the parameters.
+
+##### Required parameters:
+- **Database ID**
+
+##### Optional parameters:
+
+- **Title** : Title should be an array of rich_text properties
+- **Properties** : Properties defines the columns in a database
+- **Icon type** : Currently notion api accepts two icon options, emoji, external URL
+- **Icon value** : Value of selected icon type
+- **Icon type** : Currently notion api accepts only external URL
+- **Cover value** : Value of selected cover type
### Page
-- Retrieve a page
- #### **Properties**
- - Page ID
+On page resource you can perform the following operations:
+- **[Retrieve a page](#1-retrieve-a-page)**
+- **[Create a page](#2-create-a-page)**
+- **[Update a page](#3-update-a-page)**
+- **[Retrieve a page property](#4-retrieve-a-page-property-item)**
+- **[Archive a page](#5-archive-delete-a-page)**
-- Retrieve a page property item
- #### **Properties**
- - Page ID
- - Property ID
- - Limit
- - Start cursor
+
-- Update a page
- #### **Properties**
- - Page ID
- - Parent type: A database parent or page parent
- - Properties : Property values of this page
- - Children : Page content for the new page as an array of block objects
- - Icon type : Currently notion api accepts two icon options, emoji, external URL
- - Icon value: Value of selected icon type
- - Icon type : Currently notion api accepts only external URL
- - Cover value: Value of selected cover type
+
-- Create a page
- #### **Properties**
- - Page ID
- - Properties : Property values of this page
- - Icon type : Currently notion api accepts two icon options, emoji, external URL
- - Icon value: Value of selected icon type
- - Icon type : Currently notion api accepts only external URL
- - Cover value: Value of selected cover type
+
-- Archive (delete) a page
- #### **Properties**
- - Page ID
- - Archive: Dropdown for archive and un archive the page
+#### 1. Retrieve a page
+This operation retrieves a **Page** object using the ID specified.
+##### Required parameters:
+- **Page ID**
+
+#### 2. Create a page
+This operation creates a new page in the specified database or as a child of an existing page. If the parent is a database, the property values of the new page in the properties parameter must conform to the parent database's property schema. If the parent is a page, the only valid property is title.
+##### Parameters:
+- **Page ID**
+- **Properties** : Property values of this page
+- **Icon type** : Currently notion api accepts two icon options, emoji, external URL
+- **Icon value**: Value of selected icon type
+- **Icon type** : Currently notion api accepts only external URL
+- **Cover value** : Value of selected cover type
+
+#### 3. Update a page
+This operation updates page property values for the specified page. Properties that are not set via the properties parameter will remain unchanged.
+##### Parameters:
+- **Page ID**
+- **Parent type**: A database parent or page parent
+- **Properties** : Property values of this page
+- **Children** : Page content for the new page as an array of block objects
+- **Icon type** : Currently notion api accepts two icon options, emoji, external URL
+- **Icon value**: Value of selected icon type
+- **Icon type** : Currently notion api accepts only external URL
+- **Cover value** : Value of selected cover type
+
+#### 4. Retrieve a page property item
+This operation retrieves a property_item object for a given page ID and property ID. Depending on the property type, the object returned will either be a value or a paginated list of property item values. See Property item objects for specifics.
+##### Parameters:
+- **Page ID**
+- **Property ID**
+- **Limit**
+- **Start cursor**
+
+#### 5. Archive (delete) a page
+##### Required parameters:
+- **Page ID**
+- **Archive**: Dropdown for archive and un archive the page
-
### Blocks
+The following operations can be performed on the block resource:
+- **[Retrieve a block](#1-retrieve-a-block)**
+- **[Append block children](#2-append-new-block-children)**
+- **[Retrieve block children](#3-retrieve-block-children)**
+- **[Update a block](#4-update-a-block)**
+- **[Delete a block](#5-delete-a-block)**
-- Retrieve a block
- #### **Properties**
- - Block ID
+
-- Retrieve block children
- #### **Properties**
- - Block ID
- - Limit
- - Start cursor
+
-- Update a block
- #### **Properties**
- - Block ID
- - Properties: The block object type value with the properties to be updated
- - Archive
+
-- Append new block children
- #### **Properties**
- - Block ID
- - Children: Array of block objects
+:::info
+To get the id for blocks, simply click on the menu icon for the block and click "Copy link". Afterwards, paste the link in the browser and it should look like this: `https://www.notion.so/Creating-Page-Sample-ee18b8779ae54f358b09221d6665ee15#7fcb3940a1264aadb2ad4ee9ffe11b0e` the string after **#** is the block id i.e. `7fcb3940a1264aadb2ad4ee9ffe11b0e`.
+:::
-- Delete a block
- #### **Properties**
- - Block ID
+#### 1. Retrieve a block
+This operation retrieves a **Block** object using the ID specified.
+
+##### Required parameters:
+- **Block ID**
+
+#### 2. Append new block children
+This operation creates and appends new children blocks to the parent block_id specified.
+
+##### Required parameters:
+- **Block ID**
+- **Children**: Array of block objects
+
+#### 3. Retrieve block children
+This operation retrieves a paginated array of child block objects contained in the block using the ID specified.
+
+##### Required parameters:
+- **Block ID**
+- **Limit**
+- **Start cursor**
+
+#### 4. Update a block
+This operation updates the content for the specified block_id based on the block type.
+
+##### Required parameters:
+- **Block ID**
+- **Properties**: The block object type value with the properties to be updated
+- **Archive**
+
+#### 5. Delete a block
+##### Required parameters:
+- **Block ID**
### User
+The following operations can be performed on the user notion resource:
-- Retrieve a user from current workspace
- #### **Properties**
- - User ID
-
-- Retrieve list of users of a workspace
- #### **Properties**
- - Limit
- - Start cursor
+#### 1. Retrieve a user from current workspace
+This operation retrieves a User using the ID specified.
+
+
+
+
+
+
+
+##### Required parameters:
+- **User ID**
+
+#### 2. Retrieve list of users of a workspace
+
+This operation returns a paginated list of Users for the workspace.
+
+##### Required parameters:
+- **Limit**
+- **Start cursor**
[Read more about notion API](https://developers.notion.com/reference/intro)
diff --git a/docs/docs/data-sources/openapi.md b/docs/docs/data-sources/openapi.md
index bdfc4bf5e7..7e8fe98370 100644
--- a/docs/docs/data-sources/openapi.md
+++ b/docs/docs/data-sources/openapi.md
@@ -1,5 +1,9 @@
+---
+id: openapi
+title: OpenAPI
+---
-# openapi
+# OpenAPI
ToolJet has a data source for generating REST API operations from OpenAPI Specs.
diff --git a/docs/docs/data-sources/oracledb.md b/docs/docs/data-sources/oracledb.md
index 6110c2bbe2..163a0ca513 100644
--- a/docs/docs/data-sources/oracledb.md
+++ b/docs/docs/data-sources/oracledb.md
@@ -1,5 +1,6 @@
---
-sidebar_position: 16.1
+id: oracledb
+title: Oracle DB
---
# Oracle DB
diff --git a/docs/docs/data-sources/postgresql.md b/docs/docs/data-sources/postgresql.md
index cf7174fe06..16ce523412 100644
--- a/docs/docs/data-sources/postgresql.md
+++ b/docs/docs/data-sources/postgresql.md
@@ -1,5 +1,6 @@
---
-sidebar_position: 17
+id: postgresql
+title: PostgreSQL
---
# PostgreSQL
diff --git a/docs/docs/data-sources/redis.md b/docs/docs/data-sources/redis.md
index 8a13380698..12ff5718ca 100644
--- a/docs/docs/data-sources/redis.md
+++ b/docs/docs/data-sources/redis.md
@@ -1,5 +1,6 @@
---
-sidebar_position: 18
+id: redis
+title: Redis
---
# Redis
diff --git a/docs/docs/data-sources/restapi.md b/docs/docs/data-sources/restapi.md
index 29a142b9f9..281d97388b 100644
--- a/docs/docs/data-sources/restapi.md
+++ b/docs/docs/data-sources/restapi.md
@@ -1,5 +1,6 @@
---
-sidebar_position: 19
+id: restapi
+title: REST API
---
# REST API
diff --git a/docs/docs/data-sources/rethinkdb.md b/docs/docs/data-sources/rethinkdb.md
index 730ff5864d..c762497a14 100644
--- a/docs/docs/data-sources/rethinkdb.md
+++ b/docs/docs/data-sources/rethinkdb.md
@@ -1,5 +1,6 @@
---
-sidebar_position: 26
+id: rethinkdb
+title: Rethinkdb
---
# Rethinkdb
diff --git a/docs/docs/data-sources/s3.md b/docs/docs/data-sources/s3.md
index 08ee885f85..7d30f07f6a 100644
--- a/docs/docs/data-sources/s3.md
+++ b/docs/docs/data-sources/s3.md
@@ -1,5 +1,6 @@
---
-sidebar_position: 1.1
+id: s3
+title: Amazon S3
---
# Amazon S3
diff --git a/docs/docs/data-sources/sendgrid.md b/docs/docs/data-sources/sendgrid.md
index 5b23f13bcd..fa45ffd56d 100644
--- a/docs/docs/data-sources/sendgrid.md
+++ b/docs/docs/data-sources/sendgrid.md
@@ -1,5 +1,6 @@
---
-sidebar_position: 21
+id: sendgrid
+title: SendGrid
---
# SendGrid
diff --git a/docs/docs/data-sources/smtp.md b/docs/docs/data-sources/smtp.md
index e96fbc7093..9f64a0f8b2 100644
--- a/docs/docs/data-sources/smtp.md
+++ b/docs/docs/data-sources/smtp.md
@@ -1,8 +1,8 @@
---
-sidebar_position: 22
+id: smtp
+title: SMTP
---
-
# SMTP
SMTP plugin can connect ToolJet applications to **SMTP servers** for sending emails.
diff --git a/docs/docs/data-sources/snowflake.md b/docs/docs/data-sources/snowflake.md
index 087d5535be..6b3b30d283 100644
--- a/docs/docs/data-sources/snowflake.md
+++ b/docs/docs/data-sources/snowflake.md
@@ -1,5 +1,6 @@
---
-sidebar_position: 23
+id: snowflake
+title: Snowflake
---
# Snowflake
diff --git a/docs/docs/data-sources/typesense.md b/docs/docs/data-sources/typesense.md
index 4d30b23f29..ba8ad30a66 100644
--- a/docs/docs/data-sources/typesense.md
+++ b/docs/docs/data-sources/typesense.md
@@ -1,5 +1,6 @@
---
-sidebar_position: 24
+id: typesense
+title: TypeSense
---
# TypeSense
diff --git a/docs/docs/how-to/oauth2-authorization.md b/docs/docs/how-to/oauth2-authorization.md
index 0195ffda4a..e2fd0c5236 100644
--- a/docs/docs/how-to/oauth2-authorization.md
+++ b/docs/docs/how-to/oauth2-authorization.md
@@ -1,6 +1,6 @@
---
-sidebar_position: 2
-sidebar_label: REST API authentication using OAuth 2.0
+id: oauth2-authorization
+title: REST API authentication using OAuth 2.0
---
# REST API authentication using OAuth 2.0
diff --git a/docs/docs/how-to/upload-files-gcs.md b/docs/docs/how-to/upload-files-gcs.md
index d5f4687482..83c9db9fdc 100644
--- a/docs/docs/how-to/upload-files-gcs.md
+++ b/docs/docs/how-to/upload-files-gcs.md
@@ -1,6 +1,6 @@
---
-sidebar_position: 3
-sidebar_label: Upload files using GCS
+id: upload-files-gcs
+title: Upload files using GCS
---
# Upload files using GCS
diff --git a/docs/docs/intro.md b/docs/docs/intro.md
index e6ecfa7bbb..901b7cdbda 100644
--- a/docs/docs/intro.md
+++ b/docs/docs/intro.md
@@ -1,5 +1,8 @@
---
-sidebar_position: 1
+id: introduction
+title: Introduction
+description: ToolJet is an **open-source low-code framework** to build and deploy custom internal tools. ToolJet can connect to your data sources such as databases ( PostgreSQL, MongoDB, MySQL, Elasticsearch, Firestore, DynamoDB, Redis and more ), API endpoints ( ToolJet supports OAuth2 authorization ) and external services ( Stripe, Slack, Google Sheets, Airtable and more ). Once the data sources are connected, ToolJet can run queries on these data sources to fetch and update data. The data fetched from data sources can be visualised and modified using the UI widgets such as tables, charts, forms, etc.
+slug: /
---
# Introduction
diff --git a/docs/docs/security.md b/docs/docs/security.md
index 54517a125c..6ff5ed1523 100644
--- a/docs/docs/security.md
+++ b/docs/docs/security.md
@@ -1,6 +1,7 @@
---
-sidebar_position: 3
-sidebar_label: Security
+id: security
+title: Security
+slug: /security
---
# Security
diff --git a/docs/docs/setup/client.md b/docs/docs/setup/client.md
index a6dca84fb9..e5e3692923 100644
--- a/docs/docs/setup/client.md
+++ b/docs/docs/setup/client.md
@@ -1,5 +1,6 @@
---
-sidebar_position: 9
+id: client
+title: Deploying ToolJet client
---
# Deploying ToolJet client
diff --git a/docs/docs/setup/docker.md b/docs/docs/setup/docker.md
index aaf667e884..a9d1d9b764 100644
--- a/docs/docs/setup/docker.md
+++ b/docs/docs/setup/docker.md
@@ -1,6 +1,6 @@
---
-sidebar_position: 2
-sidebar_label: Docker
+id: docker
+title: Docker
---
# Deploying ToolJet using docker-compose
diff --git a/docs/docs/setup/ec2.md b/docs/docs/setup/ec2.md
index 628a4eadb1..5f9f3fe7f2 100644
--- a/docs/docs/setup/ec2.md
+++ b/docs/docs/setup/ec2.md
@@ -1,5 +1,6 @@
---
-sidebar_position: 4
+id: ec2
+title: AWS EC2
---
# AWS EC2
diff --git a/docs/docs/setup/env-vars.md b/docs/docs/setup/env-vars.md
index 47d6c838ea..a332dfda78 100644
--- a/docs/docs/setup/env-vars.md
+++ b/docs/docs/setup/env-vars.md
@@ -1,5 +1,6 @@
---
-sidebar_position: 10
+id: env-vars
+title: Environment variables
---
# Environment variables
diff --git a/docs/docs/setup/google-cloud-run.md b/docs/docs/setup/google-cloud-run.md
index 94f2b72976..3a72857b70 100644
--- a/docs/docs/setup/google-cloud-run.md
+++ b/docs/docs/setup/google-cloud-run.md
@@ -1,6 +1,6 @@
---
-sidebar_position: 8
-sidebar_label: Google Cloud Run
+id: google-cloud-run
+title: Google Cloud Run
---
# Deploying ToolJet on Google Cloud Run
diff --git a/docs/docs/setup/heroku.md b/docs/docs/setup/heroku.md
index c234530847..ba5ad1093d 100644
--- a/docs/docs/setup/heroku.md
+++ b/docs/docs/setup/heroku.md
@@ -1,6 +1,6 @@
---
-sidebar_position: 3
-sidebar_label: Heroku
+id: heroku
+title: Heroku
---
# Deploying ToolJet on Heroku
diff --git a/docs/docs/setup/index.md b/docs/docs/setup/index.md
new file mode 100644
index 0000000000..6b09b765f9
--- /dev/null
+++ b/docs/docs/setup/index.md
@@ -0,0 +1,12 @@
+# Setup ToolJet
+
+Check out the different methods you can use to deploy ToolJet on your machine
+
+```mdx-code-block
+import DocCardList from '@theme/DocCardList';
+import {useCurrentSidebarCategory} from '@docusaurus/theme-common';
+
+
+```
+
+If you have any questions feel free to join our [Slack community](https://join.slack.com/t/tooljet/shared_invite/zt-r2neyfcw-KD1COL6t2kgVTlTtAV5rtg) or send us an email at hello@tooljet.com.
\ No newline at end of file
diff --git a/docs/docs/setup/architecture.md b/docs/docs/setup/introduction.md
similarity index 89%
rename from docs/docs/setup/architecture.md
rename to docs/docs/setup/introduction.md
index c9bd5d6858..03dc4b8d31 100644
--- a/docs/docs/setup/architecture.md
+++ b/docs/docs/setup/introduction.md
@@ -1,12 +1,8 @@
---
-sidebar_position: 1
-sidebar_label: Architecture
+id: introduction
+title: Introduction
---
-
-# Deploying ToolJet
- 
-
-## Architecture
+# Introduction
ToolJet have two main components: **ToolJet Server** and **ToolJet Client**.
diff --git a/docs/docs/setup/kubernetes-aks.md b/docs/docs/setup/kubernetes-aks.md
index 65f696da83..3072ce32bb 100644
--- a/docs/docs/setup/kubernetes-aks.md
+++ b/docs/docs/setup/kubernetes-aks.md
@@ -1,6 +1,6 @@
---
-sidebar_position: 7
-sidebar_label: Kubernetes (AKS)
+id: kubernetes-aks
+title: Kubernetes (AKS)
---
# Deploying ToolJet on Kubernetes (AKS)
diff --git a/docs/docs/setup/kubernetes-gke.md b/docs/docs/setup/kubernetes-gke.md
index ecf2679217..b2dc739bba 100644
--- a/docs/docs/setup/kubernetes-gke.md
+++ b/docs/docs/setup/kubernetes-gke.md
@@ -1,6 +1,6 @@
---
-sidebar_position: 6
-sidebar_label: Kubernetes (GKE)
+id: kubernetes-gke
+title: Kubernetes (GKE)
---
# Deploying ToolJet on Kubernetes (GKE)
diff --git a/docs/docs/setup/kubernetes.md b/docs/docs/setup/kubernetes.md
index d6e4dc2dc2..f5ae660b13 100644
--- a/docs/docs/setup/kubernetes.md
+++ b/docs/docs/setup/kubernetes.md
@@ -1,6 +1,6 @@
---
-sidebar_position: 5
-sidebar_label: Kubernetes
+id: kubernetes
+title: Kubernetes
---
# Deploying ToolJet on Kubernetes
diff --git a/docs/docs/sso/github.md b/docs/docs/sso/github.md
index 6ee2f29065..d6f201bc88 100644
--- a/docs/docs/sso/github.md
+++ b/docs/docs/sso/github.md
@@ -1,6 +1,6 @@
---
-sidebar_position: 6
-sidebar_label: GitHub
+id: github
+title: GitHub
---
# GitHub Single Sign-on
diff --git a/docs/docs/sso/google.md b/docs/docs/sso/google.md
index 9dea05029f..e8588f3b44 100644
--- a/docs/docs/sso/google.md
+++ b/docs/docs/sso/google.md
@@ -1,6 +1,6 @@
---
-sidebar_position: 6
-sidebar_label: Google
+id: google
+title: Google
---
# Google Single Sign-on
diff --git a/docs/docs/tutorial/tracking.md b/docs/docs/tracking.md
similarity index 94%
rename from docs/docs/tutorial/tracking.md
rename to docs/docs/tracking.md
index 8f3f599986..6033e14f19 100644
--- a/docs/docs/tutorial/tracking.md
+++ b/docs/docs/tracking.md
@@ -1,5 +1,7 @@
---
-sidebar_position: 13
+id: tracking
+title: Tracking
+slug: /tracking
---
# Tracking
diff --git a/docs/docs/tutorial/actions.md b/docs/docs/tutorial/actions.md
index 878e0cca0a..92586941e0 100644
--- a/docs/docs/tutorial/actions.md
+++ b/docs/docs/tutorial/actions.md
@@ -1,5 +1,6 @@
---
-sidebar_position: 6
+id: actions
+title: Adding actions
---
# Adding actions
diff --git a/docs/docs/tutorial/adding-a-datasource.md b/docs/docs/tutorial/adding-a-datasource.md
index 2447d9e219..2d46d1e914 100644
--- a/docs/docs/tutorial/adding-a-datasource.md
+++ b/docs/docs/tutorial/adding-a-datasource.md
@@ -1,5 +1,6 @@
---
-sidebar_position: 2
+id: adding-a-datasource
+title: Adding a data source
---
# Adding a data source
diff --git a/docs/docs/tutorial/adding-widget.md b/docs/docs/tutorial/adding-widget.md
index 6bba38b902..78ecedfb1d 100644
--- a/docs/docs/tutorial/adding-widget.md
+++ b/docs/docs/tutorial/adding-widget.md
@@ -1,5 +1,6 @@
---
-sidebar_position: 5
+id: adding-widget
+title: Adding a widget
---
# Adding a widget
diff --git a/docs/docs/tutorial/building-queries.md b/docs/docs/tutorial/building-queries.md
index f6ab8eeeac..dd845d2ccb 100644
--- a/docs/docs/tutorial/building-queries.md
+++ b/docs/docs/tutorial/building-queries.md
@@ -1,5 +1,6 @@
---
-sidebar_position: 3
+id: building-queries
+title: Building Queries
---
# Building Queries
diff --git a/docs/docs/tutorial/creating-app.md b/docs/docs/tutorial/creating-app.md
index a0e346ab64..4196e0abde 100644
--- a/docs/docs/tutorial/creating-app.md
+++ b/docs/docs/tutorial/creating-app.md
@@ -1,5 +1,6 @@
---
-sidebar_position: 1
+id: creating-app
+title: Creating new app
---
# Creating new app
diff --git a/docs/docs/tutorial/debugger.md b/docs/docs/tutorial/debugger.md
index b94a6fc79a..c2b43eb394 100644
--- a/docs/docs/tutorial/debugger.md
+++ b/docs/docs/tutorial/debugger.md
@@ -1,5 +1,6 @@
---
-sidebar_position: 7
+id: debugger
+title: Debugger
---
# Debugger
diff --git a/docs/docs/tutorial/keyboard-shortcuts.md b/docs/docs/tutorial/keyboard-shortcuts.md
index f7664e4e2e..a7a52ce7d0 100644
--- a/docs/docs/tutorial/keyboard-shortcuts.md
+++ b/docs/docs/tutorial/keyboard-shortcuts.md
@@ -1,5 +1,6 @@
---
-sidebar_position: 12
+id: keyboard-shortcuts
+title: Keyboard Shortcuts
---
# Keyboard Shortcuts
diff --git a/docs/docs/tutorial/manage-users-groups.md b/docs/docs/tutorial/manage-users-groups.md
index c6358d62dc..9c3bf778ee 100644
--- a/docs/docs/tutorial/manage-users-groups.md
+++ b/docs/docs/tutorial/manage-users-groups.md
@@ -1,5 +1,6 @@
---
-sidebar_position: 11
+id: manage-users-groups
+title: Managing Users and Groups
---
# Managing Users and Groups
diff --git a/docs/docs/tutorial/mobile-layout.md b/docs/docs/tutorial/mobile-layout.md
index a4cb453324..e7c2bddc49 100644
--- a/docs/docs/tutorial/mobile-layout.md
+++ b/docs/docs/tutorial/mobile-layout.md
@@ -1,5 +1,6 @@
---
-sidebar_position: 8
+id: mobile-layout
+title: Mobile layout
---
# Mobile layout
diff --git a/docs/docs/tutorial/sharing-and-deploying.md b/docs/docs/tutorial/sharing-and-deploying.md
index b6b364c4e2..0b871b2103 100644
--- a/docs/docs/tutorial/sharing-and-deploying.md
+++ b/docs/docs/tutorial/sharing-and-deploying.md
@@ -1,5 +1,6 @@
---
-sidebar_position: 10
+id: sharing-and-deploying
+title: Preview and Sharing Apps
---
# Preview and Sharing Apps
diff --git a/docs/docs/tutorial/transformations.md b/docs/docs/tutorial/transformations.md
index 7fcd4a99d3..d7b2e54b31 100644
--- a/docs/docs/tutorial/transformations.md
+++ b/docs/docs/tutorial/transformations.md
@@ -1,5 +1,6 @@
---
-sidebar_position: 4
+id: transformations
+title: Transformations
---
# Transformations
diff --git a/docs/docs/tutorial/versioning-and-release.md b/docs/docs/tutorial/versioning-and-release.md
index 53194f77d5..f0e0742bfa 100644
--- a/docs/docs/tutorial/versioning-and-release.md
+++ b/docs/docs/tutorial/versioning-and-release.md
@@ -1,5 +1,6 @@
---
-sidebar_position: 9
+id: versioning-and-release
+title: Versioning and Release
---
# Versioning and Release
diff --git a/docs/docs/widgets/button.md b/docs/docs/widgets/button.md
index 2cd1f4db4f..a44f418e39 100644
--- a/docs/docs/widgets/button.md
+++ b/docs/docs/widgets/button.md
@@ -1,3 +1,7 @@
+---
+id: button
+title: Button
+---
# Button
Button widget can be used to take actions.
diff --git a/docs/docs/widgets/calendar.md b/docs/docs/widgets/calendar.md
index 6d8076d414..8e1982030a 100644
--- a/docs/docs/widgets/calendar.md
+++ b/docs/docs/widgets/calendar.md
@@ -1,3 +1,7 @@
+---
+id: calendar
+title: Calendar
+---
# Calendar
Calendar widget comes with the following features:
diff --git a/docs/docs/widgets/chart.md b/docs/docs/widgets/chart.md
index 898a102c4b..525c070438 100644
--- a/docs/docs/widgets/chart.md
+++ b/docs/docs/widgets/chart.md
@@ -1,3 +1,7 @@
+---
+id: chart
+title: Chart
+---
# Chart
Chart widget takes the chart type, data and styles to draw charts using Plotly.js.
diff --git a/docs/docs/widgets/checkbox.md b/docs/docs/widgets/checkbox.md
index 6ae6d694cc..87a6f60e81 100644
--- a/docs/docs/widgets/checkbox.md
+++ b/docs/docs/widgets/checkbox.md
@@ -1,3 +1,7 @@
+---
+id: checkbox
+title: Checkbox
+---
# Checkbox
Checkbox widget can be used for allowing the users to make a binary choice, e.g,. unselected or selected.
diff --git a/docs/docs/widgets/circular-progress-bar.md b/docs/docs/widgets/circular-progress-bar.md
index ae205f50e4..fb4d80cdc2 100644
--- a/docs/docs/widgets/circular-progress-bar.md
+++ b/docs/docs/widgets/circular-progress-bar.md
@@ -1,3 +1,7 @@
+---
+id: circular-progress-bar
+title: Circular Progress Bar
+---
# Circular Progress Bar
Circular progress bar widget can be used to show progress in a progress circle.
diff --git a/docs/docs/widgets/code-editor.md b/docs/docs/widgets/code-editor.md
index eb3406d8c8..0812b4cedd 100644
--- a/docs/docs/widgets/code-editor.md
+++ b/docs/docs/widgets/code-editor.md
@@ -1,3 +1,7 @@
+---
+id: code-editor
+title: Code Editor
+---
# Code Editor
Code Editor widget is a versatile text editor for editing code and supports several languages.
diff --git a/docs/docs/widgets/container.md b/docs/docs/widgets/container.md
index 7a025edae6..bcf24bc16f 100644
--- a/docs/docs/widgets/container.md
+++ b/docs/docs/widgets/container.md
@@ -1,3 +1,7 @@
+---
+id: container
+title: Container
+---
# Container
Containers are used to group widgets together. You can move the desired number of widgets inside a container to organize your app better.
diff --git a/docs/docs/widgets/date-range-picker.md b/docs/docs/widgets/date-range-picker.md
index 6aa5ab45be..453685b6d6 100644
--- a/docs/docs/widgets/date-range-picker.md
+++ b/docs/docs/widgets/date-range-picker.md
@@ -1,3 +1,7 @@
+---
+id: date-range-picker
+title: Date-range picker
+---
# Date-range picker
The date-range picker widget allows users to select a range of dates.
diff --git a/docs/docs/widgets/datepicker.md b/docs/docs/widgets/datepicker.md
index 0e98cc2229..1cd3805d46 100644
--- a/docs/docs/widgets/datepicker.md
+++ b/docs/docs/widgets/datepicker.md
@@ -1,3 +1,7 @@
+---
+id: datepicker
+title: Datepicker
+---
# Datepicker
The Datepicker widget allows users to select a single value for date and time from a pre-determined set.
diff --git a/docs/docs/widgets/divider.md b/docs/docs/widgets/divider.md
index bf98f82fe3..ad6e3adcd7 100644
--- a/docs/docs/widgets/divider.md
+++ b/docs/docs/widgets/divider.md
@@ -1,3 +1,7 @@
+---
+id: divider
+title: Divider
+---
# Divider
Divider widget is used to add separator between components.
diff --git a/docs/docs/widgets/dropdown.md b/docs/docs/widgets/dropdown.md
index 8cfe22c338..0e515a4611 100644
--- a/docs/docs/widgets/dropdown.md
+++ b/docs/docs/widgets/dropdown.md
@@ -1,3 +1,7 @@
+---
+id: dropdown
+title: Dropdown
+---
# Dropdown
The Dropdown widget can be used to collect user input from a list of options.
diff --git a/docs/docs/widgets/file-picker.md b/docs/docs/widgets/file-picker.md
index 01b8c44c2d..e59702d969 100644
--- a/docs/docs/widgets/file-picker.md
+++ b/docs/docs/widgets/file-picker.md
@@ -1,3 +1,7 @@
+---
+id: file-picker
+title: Filepicker
+---
# Filepicker
Filepicker widget allows the user to drag and drop files or upload files by browsing the filesystem and selecting one or more files in a directory.
diff --git a/docs/docs/widgets/iframe.md b/docs/docs/widgets/iframe.md
index 9371f7d148..ee043f1508 100644
--- a/docs/docs/widgets/iframe.md
+++ b/docs/docs/widgets/iframe.md
@@ -1,3 +1,7 @@
+---
+id: iframe
+title: Iframe
+---
# Iframe
Iframe widget is used to embed another HTML page into the current one and display iframes in your app.
diff --git a/docs/docs/widgets/image.md b/docs/docs/widgets/image.md
index 18a32564c5..5dc1c0ad00 100644
--- a/docs/docs/widgets/image.md
+++ b/docs/docs/widgets/image.md
@@ -1,3 +1,7 @@
+---
+id: image
+title: Image
+---
# Image
Image widget is used to display images in your app.
diff --git a/docs/docs/widgets/listview.md b/docs/docs/widgets/listview.md
index b2f9acc849..f05ac09e0b 100644
--- a/docs/docs/widgets/listview.md
+++ b/docs/docs/widgets/listview.md
@@ -1,3 +1,7 @@
+---
+id: listview
+title: List view
+---
# List view
List view widget allows to create a list of repeatable rows of data. Just like container widget, you can nest other widgets inside of it and control how many times they repeat.
diff --git a/docs/docs/widgets/map.md b/docs/docs/widgets/map.md
index e29f5a797d..c06f6f6b18 100644
--- a/docs/docs/widgets/map.md
+++ b/docs/docs/widgets/map.md
@@ -1,3 +1,7 @@
+---
+id: map
+title: Map
+---
# Map
The map widget can be used to pick or select locations on the Google map with the location's coordinates.
diff --git a/docs/docs/widgets/modal.md b/docs/docs/widgets/modal.md
index cedd3eb412..9899649c0b 100644
--- a/docs/docs/widgets/modal.md
+++ b/docs/docs/widgets/modal.md
@@ -1,3 +1,7 @@
+---
+id: modal
+title: Modal
+---
# Modal
Modal widget renders in front of a backdrop, and it blocks interaction with the rest of the application until the modal is closed. It can be used to add dialog boxes to your app for lightboxes, user notifications, forms, etc.
diff --git a/docs/docs/widgets/multiselect.md b/docs/docs/widgets/multiselect.md
index 8d84bf06cc..129516397f 100644
--- a/docs/docs/widgets/multiselect.md
+++ b/docs/docs/widgets/multiselect.md
@@ -1,3 +1,7 @@
+---
+id: multiselect
+title: Multiselect
+---
# Multiselect
Multiselect widget can be used to collect multiple user inputs from a list of options.
diff --git a/docs/docs/widgets/number-input.md b/docs/docs/widgets/number-input.md
index 2f81b5a848..b1ed0ca685 100644
--- a/docs/docs/widgets/number-input.md
+++ b/docs/docs/widgets/number-input.md
@@ -1,3 +1,7 @@
+---
+id: number-input
+title: Number Input
+---
# Number Input
Number Input widget lets users enter and change numbers.
diff --git a/docs/docs/widgets/password-input.md b/docs/docs/widgets/password-input.md
index 7b49ea96ff..edaba3714d 100644
--- a/docs/docs/widgets/password-input.md
+++ b/docs/docs/widgets/password-input.md
@@ -1,3 +1,7 @@
+---
+id: password-input
+title: Password Input
+---
# Password Input
A Password Input widget provides a way for the users to securely enter a password. The Password Input is a one-line plain text editor in which the text is obscured so that it cannot be read, by replacing each character with an asterisk ("*") symbol.
diff --git a/docs/docs/widgets/qr-scanner.md b/docs/docs/widgets/qr-scanner.md
index 449ed91ac2..636e89412c 100644
--- a/docs/docs/widgets/qr-scanner.md
+++ b/docs/docs/widgets/qr-scanner.md
@@ -1,3 +1,7 @@
+---
+id: qr-scanner
+title: QR Scanner
+---
# QR Scanner
Scan QR codes using device camera and hold the data they carry.
diff --git a/docs/docs/widgets/radio-button.md b/docs/docs/widgets/radio-button.md
index 91a67a1d0d..4a9e194bb4 100644
--- a/docs/docs/widgets/radio-button.md
+++ b/docs/docs/widgets/radio-button.md
@@ -1,3 +1,7 @@
+---
+id: radio-button
+title: Radio Button
+---
# Radio Button
Radio button widget can be used to select one option from a group of options.
diff --git a/docs/docs/widgets/range-slider.md b/docs/docs/widgets/range-slider.md
index 0299d5c1d8..81ebd97105 100644
--- a/docs/docs/widgets/range-slider.md
+++ b/docs/docs/widgets/range-slider.md
@@ -1,3 +1,7 @@
+---
+id: range-slider
+title: Range Slider
+---
# Range Slider
Range sliders are widely used across different UIs. One of the main purposes is to filter, explore all the related content and available in the control and settings options.
diff --git a/docs/docs/widgets/rich-text-editor.md b/docs/docs/widgets/rich-text-editor.md
index b15ed8dd01..fdbae09966 100644
--- a/docs/docs/widgets/rich-text-editor.md
+++ b/docs/docs/widgets/rich-text-editor.md
@@ -1,3 +1,7 @@
+---
+id: rich-text-editor
+title: Rich Text Editor
+---
# Rich Text Editor
Rich Text Editor can be used to enter and edit the text in HTML format.
diff --git a/docs/docs/widgets/spinner.md b/docs/docs/widgets/spinner.md
index 758541b0c1..6b9184a0e5 100644
--- a/docs/docs/widgets/spinner.md
+++ b/docs/docs/widgets/spinner.md
@@ -1,3 +1,7 @@
+---
+id: spinner
+title: Spinner
+---
# Spinner
Spinner widget can be used to provide a visual indication that an action is in progress by awaiting a change.
diff --git a/docs/docs/widgets/star.md b/docs/docs/widgets/star.md
index d67de0c4cb..5e7b44bb77 100644
--- a/docs/docs/widgets/star.md
+++ b/docs/docs/widgets/star.md
@@ -1,3 +1,7 @@
+---
+id: star
+title: Star rating
+---
# Star rating
Star rating widget can be used to display as well as input ratings. The widget supports half stars, and the number of stars can be set too.
diff --git a/docs/docs/widgets/statistics.md b/docs/docs/widgets/statistics.md
index 64283b2bb6..0138a7a312 100644
--- a/docs/docs/widgets/statistics.md
+++ b/docs/docs/widgets/statistics.md
@@ -1,3 +1,7 @@
+---
+id: statistics
+title: Statistics
+---
# Statistics
Statistics can be used to display different statistical information.
diff --git a/docs/docs/widgets/table.md b/docs/docs/widgets/table.md
index d6e0a05465..46a3d2f6f3 100644
--- a/docs/docs/widgets/table.md
+++ b/docs/docs/widgets/table.md
@@ -1,3 +1,7 @@
+---
+id: table
+title: Table
+---
# Table
Tables can be used for both displaying and editing data.
diff --git a/docs/docs/widgets/tabs.md b/docs/docs/widgets/tabs.md
index 8886da2fc3..3c28efc7d3 100644
--- a/docs/docs/widgets/tabs.md
+++ b/docs/docs/widgets/tabs.md
@@ -1,3 +1,7 @@
+---
+id: tabs
+title: Tabs
+---
# Tabs
A Tabs widget contains a number of defined containers that can be navigated through the tabs. Each tab acts as a container and can have different components or widgets.
diff --git a/docs/docs/widgets/tags.md b/docs/docs/widgets/tags.md
index 1a3e954a41..a70101eabc 100644
--- a/docs/docs/widgets/tags.md
+++ b/docs/docs/widgets/tags.md
@@ -1,3 +1,7 @@
+---
+id: tags
+title: Tags
+---
# Tags
Tags widget can be used to show array of data as tags.
diff --git a/docs/docs/widgets/text-input.md b/docs/docs/widgets/text-input.md
index 4177cffe94..37f1699ee8 100644
--- a/docs/docs/widgets/text-input.md
+++ b/docs/docs/widgets/text-input.md
@@ -1,3 +1,7 @@
+---
+id: text-input
+title: Text Input
+---
# Text Input
Text Input widget let users enter and edit text.
diff --git a/docs/docs/widgets/text.md b/docs/docs/widgets/text.md
index ba4d1f03aa..435b93e255 100644
--- a/docs/docs/widgets/text.md
+++ b/docs/docs/widgets/text.md
@@ -1,3 +1,7 @@
+---
+id: text
+title: Text
+---
# Text
Text widget can be used to display text.
diff --git a/docs/docs/widgets/textarea.md b/docs/docs/widgets/textarea.md
index 0598b810af..cde96d9536 100644
--- a/docs/docs/widgets/textarea.md
+++ b/docs/docs/widgets/textarea.md
@@ -1,3 +1,7 @@
+---
+id: textarea
+title: Textarea
+---
# Textarea
Textarea widgets let users enter and edit just text like [Text Input](/docs/widgets/text-input) widget.
diff --git a/docs/docs/widgets/timeline.md b/docs/docs/widgets/timeline.md
index 7a4f4468f6..9701207e3d 100644
--- a/docs/docs/widgets/timeline.md
+++ b/docs/docs/widgets/timeline.md
@@ -1,3 +1,7 @@
+---
+id: timeline
+title: Timeline
+---
# Timeline
Timeline widget can be used to do a visual representation of a sequence of events
diff --git a/docs/docs/widgets/timer.md b/docs/docs/widgets/timer.md
index 8a230c1e4a..a444c9e9bf 100644
--- a/docs/docs/widgets/timer.md
+++ b/docs/docs/widgets/timer.md
@@ -1,3 +1,7 @@
+---
+id: timer
+title: Timer
+---
# Timer
Timer widget lets users to count timer both upward and downward
diff --git a/docs/docs/widgets/toggle-switch.md b/docs/docs/widgets/toggle-switch.md
index 1882786ef1..46517bc7af 100644
--- a/docs/docs/widgets/toggle-switch.md
+++ b/docs/docs/widgets/toggle-switch.md
@@ -1,3 +1,7 @@
+---
+id: toggle-switch
+title: Toggle Switch
+---
# Toggle Switch
The toggle switch widget allows the user to change a setting between two states.
diff --git a/docs/sidebars.js b/docs/sidebars.js
index 981a73cd7a..1f8ef310cf 100644
--- a/docs/sidebars.js
+++ b/docs/sidebars.js
@@ -1,26 +1,225 @@
/**
- * Creating a sidebar enables you to:
- - create an ordered group of docs
- - render a sidebar for each doc of that group
- - provide next/previous navigation
-
- The sidebars can be generated from the filesystem, or explicitly defined here.
-
- Create as many sidebars as you want.
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
*/
-module.exports = {
- // By default, Docusaurus generates a sidebar from the docs folder structure
- tutorialSidebar: [{type: 'autogenerated', dirName: '.'}],
+// @ts-check
- // But you can create a sidebar manually
- /*
- tutorialSidebar: [
+/** @type {import('@docusaurus/plugin-content-docs').SidebarsConfig} */
+const sidebars = {
+ docs: [
+ 'introduction',
+ {
+ type: 'category',
+ label: 'Setup',
+ link: {type: 'doc', id: 'setup/index'},
+ items: [
+ 'setup/introduction',
+ 'setup/docker',
+ 'setup/heroku',
+ 'setup/ec2',
+ 'setup/kubernetes',
+ 'setup/kubernetes-gke',
+ 'setup/kubernetes-aks',
+ 'setup/google-cloud-run',
+ 'setup/client',
+ 'setup/env-vars',
+ ],
+ },
+ 'security',
+ 'tracking',
{
type: 'category',
label: 'Tutorial',
- items: ['hello'],
+ link: {
+ type: 'generated-index',
+ title: 'Getting Started with ToolJet',
+ description:
+ "A primer on getting started with building an application with ToolJet!",
+ keywords: ['tutorial'],
+ },
+ items: [
+ 'tutorial/creating-app',
+ 'tutorial/adding-a-datasource',
+ 'tutorial/building-queries',
+ 'tutorial/transformations',
+ 'tutorial/adding-widget',
+ 'tutorial/actions',
+ 'tutorial/debugger',
+ 'tutorial/mobile-layout',
+ 'tutorial/versioning-and-release',
+ 'tutorial/sharing-and-deploying',
+ 'tutorial/manage-users-groups',
+ 'tutorial/keyboard-shortcuts',
+ ],
},
- ],
- */
+ {
+ type: 'category',
+ label: 'Datasource Reference',
+ items: [
+ 'data-sources/airtable',
+ 'data-sources/s3',
+ 'data-sources/appwrite',
+ 'data-sources/baserow',
+ 'data-sources/bigquery',
+ 'data-sources/firestore',
+ 'data-sources/couchdb',
+ 'data-sources/custom-js',
+ 'data-sources/dynamodb',
+ 'data-sources/elasticsearch',
+ 'data-sources/gcs',
+ 'data-sources/google.sheets',
+ 'data-sources/graphql',
+ 'data-sources/influxdb',
+ 'data-sources/mailgun',
+ 'data-sources/minio',
+ 'data-sources/mongodb',
+ 'data-sources/mssql',
+ 'data-sources/mysql',
+ 'data-sources/n8n',
+ 'data-sources/notion',
+ 'data-sources/openapi',
+ 'data-sources/oracledb',
+ 'data-sources/postgresql',
+ 'data-sources/redis',
+ 'data-sources/restapi',
+ 'data-sources/sendgrid',
+ 'data-sources/smtp',
+ 'data-sources/snowflake',
+ 'data-sources/rethinkdb',
+ 'data-sources/typesense',
+ ],
+ },
+ {
+ type: 'category',
+ label: 'Widget Reference',
+ items: [
+ 'widgets/button',
+ 'widgets/calendar',
+ 'widgets/chart',
+ 'widgets/checkbox',
+ 'widgets/circular-progress-bar',
+ 'widgets/code-editor',
+ 'widgets/container',
+ 'widgets/date-range-picker',
+ 'widgets/datepicker',
+ 'widgets/divider',
+ 'widgets/dropdown',
+ 'widgets/file-picker',
+ 'widgets/iframe',
+ 'widgets/image',
+ 'widgets/listview',
+ 'widgets/map',
+ 'widgets/modal',
+ 'widgets/multiselect',
+ 'widgets/number-input',
+ 'widgets/password-input',
+ 'widgets/qr-scanner',
+ 'widgets/radio-button',
+ 'widgets/range-slider',
+ 'widgets/rich-text-editor',
+ 'widgets/spinner',
+ 'widgets/star',
+ 'widgets/statistics',
+ 'widgets/table',
+ 'widgets/tabs',
+ 'widgets/tags',
+ 'widgets/text-input',
+ 'widgets/text',
+ 'widgets/textarea',
+ 'widgets/timeline',
+ 'widgets/timer',
+ 'widgets/toggle-switch',
+ ],
+ },
+ {
+ type: 'category',
+ label: 'Actions Reference',
+ link: {
+ type: 'generated-index',
+ title: 'Actions Reference',
+ description:
+ "All the actions that can be performed through event handlers",
+ keywords: ['actions','events'],
+ },
+ items: [
+ 'actions/generate-file',
+ 'actions/set-localstorage',
+ ],
+ },
+ {
+ type: 'category',
+ label: 'How To',
+ link: {
+ type: 'generated-index',
+ title: 'How To Guides',
+ description:
+ "How To Guides for all the things ToolJet",
+ keywords: ['how to'],
+ },
+ items: [
+ 'how-to/oauth2-authorization',
+ 'how-to/upload-files-gcs',
+ ],
+ },
+ {
+ type: 'category',
+ label: 'Enterprise',
+ items: [
+ 'Enterprise/audit_logs',
+ ]
+ },
+ {
+ type: 'category',
+ label: 'Single Sign-on',
+ link: {
+ type: 'generated-index',
+ title: 'Single Sign-on',
+ description:
+ "Guide for enabling available Single Sign-ons on ToolJet",
+ keywords: ['single sign-on','SSO'],
+ },
+ items: [
+ 'sso/github',
+ 'sso/google',
+ ],
+ },
+ {
+ type: 'category',
+ label: 'Contributing Guide',
+ link: {
+ type: 'generated-index',
+ title: 'Contributing Guide',
+ description:
+ "Guides for contributing to ToolJet",
+ keywords: ['contribute','contributing'],
+ },
+ collapsed: false,
+ items: [
+ {
+ type: 'category',
+ label: 'Setup',
+ items: [
+ 'contributing-guide/setup/macos',
+ 'contributing-guide/setup/docker',
+ 'contributing-guide/setup/ubuntu',
+ ],
+ },
+ {
+ type: 'category',
+ label: 'Tutorials',
+ items: [
+ 'contributing-guide/tutorials/creating-widget',
+ 'contributing-guide/tutorials/creating-a-plugin',
+ ],
+ },
+ 'contributing-guide/code-of-conduct',
+ 'contributing-guide/slackcoc',
+ ],
+ },
+ ]
};
+
+module.exports = sidebars;
\ No newline at end of file
diff --git a/docs/static/img/datasource-reference/notion/api.png b/docs/static/img/datasource-reference/notion/api.png
new file mode 100644
index 0000000000..eafeef2791
Binary files /dev/null and b/docs/static/img/datasource-reference/notion/api.png differ
diff --git a/docs/static/img/datasource-reference/notion/block_q.png b/docs/static/img/datasource-reference/notion/block_q.png
new file mode 100644
index 0000000000..91f17f67a5
Binary files /dev/null and b/docs/static/img/datasource-reference/notion/block_q.png differ
diff --git a/docs/static/img/datasource-reference/notion/db_q.png b/docs/static/img/datasource-reference/notion/db_q.png
new file mode 100644
index 0000000000..2b5348159e
Binary files /dev/null and b/docs/static/img/datasource-reference/notion/db_q.png differ
diff --git a/docs/static/img/datasource-reference/notion/db_retrieve.png b/docs/static/img/datasource-reference/notion/db_retrieve.png
new file mode 100644
index 0000000000..c3c6034eae
Binary files /dev/null and b/docs/static/img/datasource-reference/notion/db_retrieve.png differ
diff --git a/docs/static/img/datasource-reference/notion/page_q.png b/docs/static/img/datasource-reference/notion/page_q.png
new file mode 100644
index 0000000000..9da10ff748
Binary files /dev/null and b/docs/static/img/datasource-reference/notion/page_q.png differ
diff --git a/docs/static/img/datasource-reference/notion/querying.png b/docs/static/img/datasource-reference/notion/querying.png
new file mode 100644
index 0000000000..5345665dd7
Binary files /dev/null and b/docs/static/img/datasource-reference/notion/querying.png differ
diff --git a/docs/static/img/datasource-reference/notion/share.png b/docs/static/img/datasource-reference/notion/share.png
new file mode 100644
index 0000000000..a0e5a92250
Binary files /dev/null and b/docs/static/img/datasource-reference/notion/share.png differ
diff --git a/docs/static/img/datasource-reference/notion/user_q.png b/docs/static/img/datasource-reference/notion/user_q.png
new file mode 100644
index 0000000000..eabd8cb459
Binary files /dev/null and b/docs/static/img/datasource-reference/notion/user_q.png differ
diff --git a/docs/static/index.html b/docs/static/index.html
index 0e34801dd0..3e7ea72264 100644
--- a/docs/static/index.html
+++ b/docs/static/index.html
@@ -1,18 +1,18 @@
-
-
-
-
- ToolJet - Documentation
-
-
- If you are not redirected automatically, follow this
- link.
-
+
+
+
+
+
+ ToolJet - Documentation
+
+
+
+ If you are not redirected automatically, follow this
+ link.
+
+
diff --git a/frontend/src/Editor/Components/Timer.jsx b/frontend/src/Editor/Components/Timer.jsx
index 5b71fe6ef1..1942c533e6 100644
--- a/frontend/src/Editor/Components/Timer.jsx
+++ b/frontend/src/Editor/Components/Timer.jsx
@@ -54,7 +54,7 @@ export const Timer = function Timer({ height, properties = {}, styles, setExpose
const onReset = () => {
intervalId && clearInterval(intervalId);
setTime(getTimeObj(getDefaultValue));
- setExposedVariable('value', time);
+ setExposedVariable('value', getTimeObj(getDefaultValue));
fireEvent('onReset');
setState('initial');
};
diff --git a/frontend/src/Editor/RealtimeAvatars.jsx b/frontend/src/Editor/RealtimeAvatars.jsx
index 342b8cb942..7f9687a01b 100644
--- a/frontend/src/Editor/RealtimeAvatars.jsx
+++ b/frontend/src/Editor/RealtimeAvatars.jsx
@@ -33,7 +33,7 @@ const RealtimeAvatars = ({ self, updatePresence, editingVersionId }) => {
);
diff --git a/server/.version b/server/.version
index 0eed1a29ef..f8f4f03b3d 100644
--- a/server/.version
+++ b/server/.version
@@ -1 +1 @@
-1.12.0
+1.12.1
diff --git a/server/src/services/group_permissions.service.ts b/server/src/services/group_permissions.service.ts
index b26ac7d08a..8fcf857357 100644
--- a/server/src/services/group_permissions.service.ts
+++ b/server/src/services/group_permissions.service.ts
@@ -1,4 +1,4 @@
-import { BadRequestException, Injectable } from '@nestjs/common';
+import { BadRequestException, ConflictException, Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { Repository, createQueryBuilder, getManager, In, Not } from 'typeorm';
import { User } from 'src/entities/user.entity';
@@ -33,6 +33,18 @@ export class GroupPermissionsService {
if (!group || group === '') {
throw new BadRequestException('Cannot create group without name');
}
+
+ const groupToFind = await this.groupPermissionsRepository.findOne({
+ where: {
+ organizationId: user.organizationId,
+ group,
+ },
+ });
+
+ if (groupToFind) {
+ throw new ConflictException('Group name already exist');
+ }
+
return this.groupPermissionsRepository.save(
this.groupPermissionsRepository.create({
organizationId: user.organizationId,
diff --git a/server/test/controllers/group_permissions.e2e-spec.ts b/server/test/controllers/group_permissions.e2e-spec.ts
index 81856fd9da..e63daa3c46 100644
--- a/server/test/controllers/group_permissions.e2e-spec.ts
+++ b/server/test/controllers/group_permissions.e2e-spec.ts
@@ -63,8 +63,7 @@ describe('group permissions controller', () => {
.set('Authorization', authHeaderForUser(adminUser))
.send({ group: 'avengers' });
- // FIXME: setup postgres error codes and handle error gracefully
- expect(response.statusCode).toBe(500);
+ expect(response.statusCode).toBe(409);
});
it('should allow different organization to have same group name', async () => {
diff --git a/server/test/services/group_permissions.service.spec.ts b/server/test/services/group_permissions.service.spec.ts
new file mode 100644
index 0000000000..ff0b58b105
--- /dev/null
+++ b/server/test/services/group_permissions.service.spec.ts
@@ -0,0 +1,45 @@
+import { INestApplication, ConflictException, BadRequestException } from '@nestjs/common';
+import { GroupPermissionsService } from '@services/group_permissions.service';
+import { clearDB, createNestAppInstance, setupOrganization } from '../test.helper';
+
+describe('GroupPermissionsService', () => {
+ let service: GroupPermissionsService;
+ let nestApp: INestApplication;
+
+ beforeEach(async () => {
+ await clearDB();
+ });
+
+ beforeAll(async () => {
+ nestApp = await createNestAppInstance();
+ service = nestApp.get(GroupPermissionsService);
+ });
+
+ describe('.create', () => {
+ it('should pass group name', async () => {
+ const { adminUser } = await setupOrganization(nestApp);
+
+ await expect(service.create(adminUser, '')).rejects.toEqual(
+ new BadRequestException('Cannot create group without name')
+ );
+ });
+
+ it('should validate uniqueness of group permission group name', async () => {
+ const { adminUser } = await setupOrganization(nestApp);
+
+ const data = await service.create(adminUser, 'avengers');
+
+ expect(data.id).toBeDefined();
+ expect(data.organizationId).toBeDefined();
+ expect(data.group).toEqual('avengers');
+
+ await expect(service.create(adminUser, 'avengers')).rejects.toEqual(
+ new ConflictException('Group name already exist')
+ );
+ });
+ });
+
+ afterAll(async () => {
+ await nestApp.close();
+ });
+});