Merge branch 'develop' into docs/update-smtp-snowflake-stripe

This commit is contained in:
Pratik Agrawal 2024-09-27 11:31:25 +05:30
commit 778ac22c19
63 changed files with 2297 additions and 1175 deletions

24
.vscode/launch.json vendored
View file

@ -26,6 +26,30 @@
"cwd": "${workspaceRoot}/server",
"console": "integratedTerminal",
"protocol": "inspector"
},
{
"name": "Docker Debug Client",
"request": "launch",
"type": "chrome",
"preLaunchTask": "docker-compose: debug:client",
"url": "http://127.0.0.1:8082",
"webRoot": "${workspaceFolder}/frontend",
"skipFiles": ["<node_internals>/**"]
},
{
"name": "Docker Debug Server",
"request": "launch",
"type": "docker",
"platform": "node",
"preLaunchTask": "docker-compose: debug:server",
"removeContainerAfterDebug": true,
"node": {
"port": 9229,
"localRoot": "${workspaceRoot}/server",
"remoteRoot": "/app/server",
"sourceMaps": true,
"skipFiles": ["<node_internals>/**"]
},
}
]
}

37
.vscode/tasks.json vendored Normal file
View file

@ -0,0 +1,37 @@
{
"version": "2.0.0",
"tasks": [
{
"type": "docker-compose",
"label": "docker-compose: debug:client",
"dockerCompose": {
"up": {
"detached": true,
"services": [
"client"
]
},
"files": [
"${workspaceFolder}/docker-compose.yaml",
"${workspaceFolder}/docker-compose-debug.yaml"
]
}
},
{
"type": "docker-compose",
"label": "docker-compose: debug:server",
"dockerCompose": {
"up": {
"detached": true,
"services": [
"server"
]
},
"files": [
"${workspaceFolder}/docker-compose.yaml",
"${workspaceFolder}/docker-compose-debug.yaml"
]
}
}
]
}

View file

@ -0,0 +1,7 @@
version: "3"
services:
server:
ports:
- 9229:9229
command: npm run --prefix server start:debug -- --debug 0.0.0.0:9229

View file

@ -149,4 +149,41 @@ docker compose run --rm server npm --prefix server run test <path-to-file>
## Troubleshooting
Please open a new issue at https://github.com/ToolJet/ToolJet/issues or join our [Slack Community](https://tooljet.com/slack) if you encounter any issues when trying to run ToolJet locally.
Please open a new issue at https://github.com/ToolJet/ToolJet/issues or join our [Slack Community](https://tooljet.com/slack) if you encounter any issues when trying to run ToolJet locally.
## Debugging with Docker
In this section, we provide guidance on how to enable debugging for ToolJet services using Docker and Visual Studio Code. These additions will significantly benefit contributors by streamlining the debugging process and enhancing the overall development experience.
#### VSCode Launch Configuration:
A new configuration has been added in `.vscode/launch.json` to facilitate launching the client and server in debug mode. This allows contributors to easily debug the application within the Visual Studio Code environment. Configurations include:
- **Docker Debug Client**: Launch the client running in a Docker container for debugging within Visual Studio Code.
- **Docker Debug Server**: Debug the server in a Docker container, allowing developers to leverage Node.js debugging tools directly from their IDE.
#### VSCode Task Configuration:
A new task has been introduced in `.vscode/tasks.json` to manage Docker Compose commands for debugging. This includes tasks to start the client and server in detached mode, making it easier to initiate debugging sessions.
#### Docker Compose Debug Configuration:
The `docker-compose-debug.yaml` file defines the services for debugging, exposing the necessary port (9229) for Node.js debugging. This setup ensures that the server runs in debug mode, allowing for effective troubleshooting.
### Benefits of Debugging Configuration
These changes streamline the debugging process, making it more efficient for contributors to identify and fix issues. The integration with Visual Studio Code allows for advanced debugging features such as breakpoints and real-time variable inspection. Furthermore, standardizing the debugging setup fosters better collaboration among team members, facilitating knowledge sharing and improving the overall development workflow.
By implementing these configurations, ToolJet aims to enhance the development experience, enabling contributors to resolve issues swiftly and maintain project momentum.
If you want to run docker in debug mode use this command
```bash
docker-compose -f docker-compose.yaml -f docker-compose-debug.yaml up --build
```
**Open the Project in VSCode**: Open the ToolJet directory in Visual Studio Code.
Check Launch Configurations:
- Open the debug view by clicking on the Debug icon in the Activity Bar on the side of the window.
- Select the appropriate configuration, such as Docker Debug Client or Docker Debug Server.

View file

@ -3,18 +3,43 @@ id: airtable
title: Airtable
---
ToolJet can connect to your **Airtable** account to read and write data. **Personal Access Token** is required to connect to the Airtable data source on ToolJet. You can generate the Personal Access Token by visiting **[Developer Hub from your Airtable profile](https://support.airtable.com/docs/creating-and-using-api-keys-and-access-tokens#understanding-personal-access-token-basic-actions)**.
ToolJet can connect to your **Airtable** account to read and write data.
<div style={{paddingTop:'24px'}}>
## Connection
To establish a connection with the **Airtable** data source, you can either click on the **+ Add new Data source** button located on the query panel or navigate to the **[Data Sources](/docs/data-sources/overview/)** page from the ToolJet dashboard.
ToolJet requires the following to connect to your Airtable:
- **Personal Access Token**
You can generate the Personal Access Token by visiting **[Developer Hub from your Airtable profile](https://support.airtable.com/docs/creating-and-using-api-keys-and-access-tokens#understanding-personal-access-token-basic-actions)**.
<div style={{textAlign: 'center'}}>
<img style={{ border:'0', marginBottom:'15px', borderRadius:'5px', boxShadow: '0px 1px 3px rgba(0, 0, 0, 0.2)' }} className="screenshot-full" src="/img/datasource-reference/airtable/airtableconnect-v2.gif" alt="Airtable Data Source Connection" />
<img style={{ border:'0', borderRadius:'5px', boxShadow: '0px 1px 3px rgba(0, 0, 0, 0.2)' }} className="screenshot-full" src="/img/datasource-reference/airtable/airtableconnect-v2.gif" alt="Airtable Data Source Connection" />
</div>
<br/>
</div>
:::info
Airtable API has a rate limit, and at the time of writing this documentation, the limit is five(5) requests per second per base. You can read more about rate limits here **[Airtable API](https://airtable.com/api)**.
:::
<div style={{paddingTop:'24px'}}>
## Querying Airtable
1. Click on **+ Add** button of the query manager at the bottom panel of the editor.
2. Select the **Airtable** datasource added in previous step.
3. Select the desired operation from the dropdown and enter the required parameters.
4. Click on the **Preview** button to preview the output or Click on the **Run** button to trigger the query.
<img className="screenshot-full" src="/img/datasource-reference/airtable/operations.png" alt="Airtable Data Source Operations" />
</div>
<div style={{paddingTop:'24px'}}>
## Supported Operations
@ -27,104 +52,100 @@ Airtable API has a rate limit, and at the time of writing this documentation, th
</div>
<div style={{paddingTop:'24px'}}>
### List Records
### List records
This operation retrieves a list of records from the specified table.
This operation returns a list of records from the specified table.
#### Required Parameters
#### Required parameters:
- **Base ID**
- **Table name**
- **Base ID:** To find the Base ID, first visit **[Airtable API](https://airtable.com/api)**. Then select the base you want to connect to. The Base ID will be mentioned in the API documentation. Example Base ID: `appDT3UCPffPiSmFd`
- **Table name:** The name of the table from which you want to fetch the records.
#### Optional Parameters
#### Optional parameters:
- **Page size**
- **Offset**
- **Filter by formula**
- **Fields**
- **Page size:** The number of records returned in each request. Default is 100 records.
- **Offset:** The offset value is used to fetch the next set of records. The offset value is returned in the response of the previous request.
- **Filter by formula:** This parameter will only return records that satisfy the formula. The formula will be evaluated for each record, and if the result is not 0, false, "", NaN, [], or #Error!, the record will be included in the result. e.g. `Name = 'John'`
- **Fields:** The fields you want to retrieve. If you don't specify the fields, all fields will be returned. e.g. `["Name", "Email", "Survey Response"]`
<img className="screenshot-full" src="/img/datasource-reference/airtable/list-records-v2.png" alt="Airtable List Records Query" />
<br/>
<div style={{textAlign: 'center'}}>
<img style={{ border:'0', marginBottom:'15px', borderRadius:'5px', boxShadow: '0px 1px 3px rgba(0, 0, 0, 0.2)' }} className="screenshot-full" src="/img/datasource-reference/airtable/list-records-v2.png" alt="Airtable List Records Query" />
</div>
Example response from Airtable:
```json
{
"records": [
{
"id": "recu9xMnUdr2n2cw8",
"fields": {
"Notes": "Meeting to discuss project details",
"Name": "John Doe"
<details>
<summary>**Response Example**</summary>
```json
{
"records": [
{
"id": "recu9xMnUdr2n2cw8",
"fields": {
"Notes": "Meeting to discuss project details",
"Name": "John Doe"
},
"createdTime": "2021-05-12T14:30:33.000Z"
},
"createdTime": "2021-05-12T14:30:33.000Z"
{
"id": "recyIdR7bVdQvmKXa",
"fields": {
"Notes": "Follow-up call regarding contract",
"Name": "Jane Smith"
},
"createdTime": "2021-05-12T14:30:33.000Z"
},
{
"id": "recAOzdIHaRpvRaGE",
"fields": {
"Notes": "Client feedback review meeting",
"Name": "Alice Johnson"
},
"createdTime": "2021-05-12T14:30:33.000Z"
}
],
"offset": "recAOzdIHaRpvRaGE"
}
```
</details>
### Retrieve Record
This operation fetches a specific record from the specified table.
#### Required Parameters
- **Base ID**
- **Table name**
- **Record ID**
<img className="screenshot-full" src="/img/datasource-reference/airtable/retrieve-record-v2.png" alt="Airtable Retrieve Record Query" />
<details>
<summary>**Response Example**</summary>
```json
{
"id": "recu9xMnUdr2n2cw8",
"fields": {
"Notes": "Discuss project timeline",
"Name": "Michael Scott"
},
{
"id": "recyIdR7bVdQvmKXa",
"fields": {
"Notes": "Follow-up call regarding contract",
"Name": "Jane Smith"
},
"createdTime": "2021-05-12T14:30:33.000Z"
},
{
"id": "recAOzdIHaRpvRaGE",
"fields": {
"Notes": "Client feedback review meeting",
"Name": "Alice Johnson"
},
"createdTime": "2021-05-12T14:30:33.000Z"
}
],
"offset": "recAOzdIHaRpvRaGE"
}
```
"createdTime": "2021-05-12T14:30:33.000Z"
}
```
</details>
</div>
### Create Record
### Retrieve record
This operation creates a new record in the specified table.
#### Required parameters:
#### Required Parameters
- **Base ID**: To find the Base ID, first visit **[Airtable API](https://airtable.com/api)**. Then select the base you want to connect to. The Base ID will be mentioned in the API documentation. Example Base ID: `appDT3UCPffPiSmFd`
- **Table name**: The name of the table from which you want to fetch the records.
- **Record ID**: The ID of the record you want to retrieve.
- **Base ID**
- **Table name**
- **Records**
<div style={{textAlign: 'center'}}>
<img style={{ border:'0', marginBottom:'15px', borderRadius:'5px', boxShadow: '0px 1px 3px rgba(0, 0, 0, 0.2)' }} className="screenshot-full" src="/img/datasource-reference/airtable/retrieve-record-v2.png" alt="Airtable Retrieve Record Query" />
</div>
<img className="screenshot-full" src="/img/datasource-reference/airtable/create-record-v2.png" alt="Airtable Create Record Query" />
Example response from Airtable:
```json
{
"id": "recu9xMnUdr2n2cw8",
"fields": {
"Notes": "Discuss project timeline",
"Name": "Michael Scott"
},
"createdTime": "2021-05-12T14:30:33.000Z"
}
```
### Create record
#### Required parameters:
- **Base ID**: To find the Base ID, first visit **[Airtable API](https://airtable.com/api)**. Then select the base you want to connect to. The Base ID will be mentioned in the API documentation. Example Base ID: `appDT3UCPffPiSmFd`
- **Table name**: The name of the table where you want to create the record.
- **Records**: The records you want to create. The records should be in the form of an array of objects. Each object should have a `fields` key, which contains the fields of the record. The field names should be the same as the field names in the Airtable table.
<br/>
<div style={{textAlign: 'center'}}>
<img style={{ border:'0', marginBottom:'15px', borderRadius:'5px', boxShadow: '0px 1px 3px rgba(0, 0, 0, 0.2)' }} className="screenshot-full" src="/img/datasource-reference/airtable/create-record-v2.png" alt="Airtable Create Record Query" />
</div>
Example creating a record:
#### Example
```json title="Records"
[{
@ -134,81 +155,82 @@ Example creating a record:
}
}]
```
Query returns the following response when the record is created successfully:
```json
{
"records": [
{
"id": "recu6jhA7tzv4K66s",
"createdTime": "2024-06-11T06:01:44.000Z",
"fields": {
"Name": "Katrina Petersons",
"Email": "katrina.petersions@example.com",
"Date": "06-11-2024",
<details>
<summary>**Response Example**</summary>
```json
{
"records": [
{
"id": "recu6jhA7tzv4K66s",
"createdTime": "2024-06-11T06:01:44.000Z",
"fields": {
"Name": "Katrina Petersons",
"Email": "katrina.petersions@example.com",
"Date": "06-11-2024",
}
}
}
]
}
```
]
}
```
</details>
### Update record
Update a specific record by providing new data.
#### Required parameters:
- **Base ID**: To find the Base ID, first visit **[Airtable API](https://airtable.com/api)**. Then select the base you want to connect to. The Base ID will be mentioned in the API documentation. Example Base ID: `appDT3UCPffPiSmFd`
- **Table name**: The name of the table where you want to update the record.
- **Record ID**: The ID of the record you want to update.
- **Body**: The fields you want to update. The fields should be in the form of an object. The field names should be the same as the field names in the Airtable table.
<br/>
<div style={{textAlign: 'center'}}>
<img style={{ border:'0', marginBottom:'15px', borderRadius:'5px', boxShadow: '0px 1px 3px rgba(0, 0, 0, 0.2)' }} className="screenshot-full" src="/img/datasource-reference/airtable/update-record-v2.png" alt="Airtable Update Record Query" />
</div>
- **Base ID**
- **Table name**
- **Record ID**
- **Body**
Example updating a record:
<img className="screenshot-full" src="/img/datasource-reference/airtable/update-record-v2.png" alt="Airtable Update Record Query" />
```json title="Body"
#### Example
```json
{
"Email": "katrina.petersions2@example.com"
}
```
Query returns the following response when the record is updated successfully:
```json
{
"records": [
{
"id": "recu6jhA7tzv4K66s",
"createdTime": "2024-06-11T07:01:44.000Z",
"fields": {
"Name": "Katrina Petersons",
"Email": "katrina.petersions2@example.com",
"Date": "06-11-2024",
<details>
<summary>**Response Example**</summary>
```json
{
"records": [
{
"id": "recu6jhA7tzv4K66s",
"createdTime": "2024-06-11T07:01:44.000Z",
"fields": {
"Name": "Katrina Petersons",
"Email": "katrina.petersions2@example.com",
"Date": "06-11-2024",
}
}
}
]
}
```
]
}
```
</details>
### Delete record
This operation removes a record from the specified table.
#### Required parameters:
- **Base ID**: To find the Base ID, first visit **[Airtable API](https://airtable.com/api)**. Then select the base you want to connect to. The Base ID will be mentioned in the API documentation. Example Base ID: `appDT3UCPffPiSmFd`
- **Table name**: The name of the table where you want to delete the record.
- **Record ID**: The ID of the record you want to delete.
<br/>
<div style={{textAlign: 'center'}}>
<img style={{ border:'0', marginBottom:'15px', borderRadius:'5px', boxShadow: '0px 1px 3px rgba(0, 0, 0, 0.2)' }} className="screenshot-full" src="/img/datasource-reference/airtable/delete-record-v2.png" alt="Airtable Delete Record Query" />
</div>
- **Base ID**
- **Table name**
- **Record ID**
Query returns the following response when the record is deleted successfully:
<img className="screenshot-full" src="/img/datasource-reference/airtable/delete-record-v2.png" alt="Airtable Delete Record Query" />
```json
{
deleted: true
id: "recIKsyZgqI4zoqS7"
}
```
<details>
<summary>**Response Example**</summary>
```json
{
deleted: true
id: "recIKsyZgqI4zoqS7"
}
```
</details>

View file

@ -7,9 +7,9 @@ ToolJet offers the capability to establish a connection with Azure Blob storage
## Connection
To establish a connection with the Azure Blob data source, you can either click on the **+ Add new Data source** button located on the query panel or navigate to the **[Data Sources](/docs/data-sources/overview)** page from the ToolJet dashboard and choose Amazon Athena as the data source.
To establish a connection with the Azure Blob data source, you can either click on the **+ Add new Data source** button located on the query panel or navigate to the **[Data Sources](/docs/data-sources/overview)** page from the ToolJet dashboard and choose Azure Blob as the data source.
ToolJet requires the following to connect to your Athena.
ToolJet requires the following to connect to your Azure Blob.
- **Connection String**
<div style={{textAlign: 'center'}}>

View file

@ -3,13 +3,13 @@ id: s3
title: Amazon S3
---
ToolJet can connect to **Amazon S3** buckets and perform various operation on them.
ToolJet can connect to **Amazon S3** buckets and perform various operations on them.
<div style={{paddingTop:'24px',}}>
<div style={{paddingTop:'24px'}}>
## Connection
To establish a connection with the **Amazon S3** data source, you can either click on the **+Add new Data source** button located on the query panel or navigate to the **[Data Sources](/docs/data-sources/overview/)** page from the ToolJet dashboard.
To establish a connection with the **Amazon S3** data source, you can either click on the **+ Add new Data source** button located on the query panel or navigate to the **[Data Sources](/docs/data-sources/overview/)** page from the ToolJet dashboard.
ToolJet supports connecting to AWS S3 using **IAM Access Keys**, **AWS Instance Credentials** or **AWS ARN Role**.
@ -19,29 +19,22 @@ If you are using **IAM Access Keys**, you will need to provide the following det
- **Access key**
- **Secret key**
It is recommended to create a new IAM user for the database so that you can control the access levels of ToolJet.
**Note:** It is recommended to create a new IAM user for the database so that you can control the access levels of ToolJet.
<div style={{textAlign: 'left'}}>
<img style={{ border:'0', marginBottom:'15px' }} className="screenshot-full" src="/img/datasource-reference/aws-s3/iamnew.png" alt="aws s3 modal" />
</div>
<img className="screenshot-full" src="/img/datasource-reference/aws-s3/iamnew.png" alt="aws s3 modal" />
To connect to AWS S3 using **AWS Instance Credentials**, select the **Use AWS Instance Credentials**. 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.
<div style={{textAlign: 'left'}}>
<img style={{ border:'0', marginBottom:'15px' }} className="screenshot-full" src="/img/datasource-reference/aws-s3/instanew.png" alt="aws s3 modal" />
</div>
<img className="screenshot-full" src="/img/datasource-reference/aws-s3/instanew.png" alt="aws s3 modal" />
If you are using **AWS ARN Role**, you will need to provide the following details:
- **Region**
- **Role ARN**
<div style={{textAlign: 'left'}}>
<img style={{ border:'0', marginBottom:'15px', width:'100%' }} className="screenshot-full" src="/img/datasource-reference/aws-s3/arnnew.png" alt="aws s3 modal" />
</div>
Click on **Test Connection** button to verify if the credentials are correct and that the database is accessible to ToolJet server. Click on **Save** button to save the data source.
<img className="screenshot-full" src="/img/datasource-reference/aws-s3/arnnew.png" alt="aws s3 modal" />
:::tip
You can now connect to **[different S3 Hosts using custom endpoints](/docs/how-to/s3-custom-endpoints)**.
@ -53,16 +46,13 @@ You can now connect to **[different S3 Hosts using custom endpoints](/docs/how-t
## Querying AWS S3
Click on **+Add** button of the **[query manager](/docs/app-builder/query-panel/#query-manager)** and select the data source added in the previous step as the data source. Select the operation that you want to perform, fill in the required parameters and click on **Run** button to run the query.
<div style={{textAlign: 'left'}}>
1. Click on **+ Add** button of the query manager at the bottom panel of the editor.
2. Select the **Amazon AWS S3** datasource added in previous step.
3. Select the desired operation from the dropdown and enter the required parameters.
4. Click on the **Preview** button to preview the output or Click on the **Run** button to trigger the query.
<img className="screenshot-full" src="/img/datasource-reference/aws-s3/operations3.png" alt="aws s3 query" />
</div>
<br/>
:::info
Query results can be transformed using transformations. Read our [transformations documentation](/docs/tutorial/transformations).
:::
@ -71,156 +61,121 @@ Query results can be transformed using transformations. Read our [transformation
<div style={{paddingTop:'24px'}}>
## Query operations
## Supported Operations
You can create query for AWS S3 data source to perform several actions such as:
1. **[Create a new bucket](#create-a-new-bucket)**
2. **[Read object](#read-object)**
3. **[Upload object](#upload-object)**
4. **[Remove object](#remove-object)**
5. **[List buckets](#list-buckets)**
6. **[List objects in a bucket](#list-objects-in-a-bucket)**
7. **[Signed url for download](#signed-url-for-download)**
8. **[Signed url for upload](#signed-url-for-upload)**
- **[Create a new bucket](#create-a-new-bucket)**
- **[Read object](#read-object)**
- **[Upload object](#upload-object)**
- **[Remove object](#remove-object)**
- **[List buckets](#list-buckets)**
- **[List objects in a bucket](#list-objects-in-a-bucket)**
- **[Signed URL for download](#signed-url-for-download)**
- **[Signed URL for upload](#signed-url-for-upload)**
</div>
### Create a new bucket
### Create a New Bucket
You can create a new bucket in your S3 by using this operation.
#### Required parameters:
#### Required Parameters
- **Bucket Name**: Specify the bucket name.
- **Bucket Name**
<div style={{textAlign: 'left'}}>
<img style={{marginBottom:'15px'}} className="screenshot-full" src="/img/datasource-reference/aws-s3/createbucket.png" alt="Create a new bucket - S3 operation" />
<img className="screenshot-full" src="/img/datasource-reference/aws-s3/createbucket.png" alt="Create a new bucket - S3 operation" />
</div>
### Read object
### Read Object
You can read an object in a bucket by using this operation.
#### Required parameters:
#### Required Parameters
- **Bucket**: Specify the bucket name.
- **Key**: Key of the object/file.
- **Bucket**
- **Key**
<img style={{marginBottom:'15px'}} className="screenshot-full" src="/img/datasource-reference/aws-s3/readv2-v3.png" alt="aws s3 read object" />
<div style={{textAlign: 'left'}}>
<img style={{ border:'0'}} className="screenshot-full" src="/img/datasource-reference/aws-s3/readv2-v3.png" alt="aws s3 read object" />
</div>
### Upload object
### Upload Object
You can use this operation to upload objects(files) to your S3 bucket.
#### Required parameters:
#### Required Parameters
- **Bucket**: Specify the bucket name.
- **Key**: Key of the object/file.
- **Content Type**: Specify file type such as text, image etc.
- **Upload data**: File/object that is to be uploaded.
- **Bucket**
- **Key**
- **Content Type**
- **Upload data**
<img style={{marginBottom:'15px'}} className="screenshot-full" src="/img/datasource-reference/aws-s3/uplobjv2-v3.png" alt="aws s3 upload"/>
<div style={{textAlign: 'left'}}>
<img style={{ border:'0'}} className="screenshot-full" src="/img/datasource-reference/aws-s3/uplobjv2-v3.png" alt="aws s3 upload"/>
</div>
### Remove object
### Remove Object
You can use this operation to remove an object from your S3 bucket.
#### Required parameters:
#### Required Parameters
- **Bucket**: Specify the bucket name.
- **Key**: Key of the object/file.
- **Bucket**
- **Key**
<div style={{textAlign: 'left'}}>
<img style={{marginBottom:'15px'}} className="screenshot-full" src="/img/datasource-reference/aws-s3/removeobject.png" alt="Create a new bucket - S3 operation" />
<img style={{ border:'0'}} className="screenshot-full" src="/img/datasource-reference/aws-s3/removeobject.png" alt="Create a new bucket - S3 operation" />
</div>
### List buckets
### List Buckets
This operation will list all the buckets in your S3. This does not require any parameter.
<img style={{marginBottom:'15px'}} className="screenshot-full" src="/img/datasource-reference/aws-s3/listbucketsv2-v3.png" alt="aws s3 bucket" />
<div style={{textAlign: 'left'}}>
<img style={{ border:'0'}} className="screenshot-full" src="/img/datasource-reference/aws-s3/listbucketsv2-v3.png" alt="aws s3 bucket" />
</div>
### List objects in a bucket
### List Objects in a Bucket
This operation will fetch the list of all the files in your bucket. It requires the following parameters:
#### Required parameters:
#### Required Parameters
- **Bucket**: Specify the bucket name.
- **Bucket**
#### Optional parameters:
#### Optional Parameters
- **Prefix**: To limit the response to keys that begin with the specified prefix.
- **Max keys**: The maximum number of keys returned in the response body. Default value is 1000.
- **Offset**: The key to start with when listing objects in a bucket.
- **Next Continuation Token**: `Next Continuation Token` indicates Amazon S3 that the list is being continued on this bucket with a token. ContinuationToken is obfuscated and is not a real key.
- **Prefix**
- **Max keys**
- **Offset**
- **Next Continuation Token**
:::info
**Next Continuation Token**
For listing a bucket for objects that begin with a specific character or a prefix, then use the `Offset` parameter. For example, if you want to list all the objects that begin with `a`, then set the `Offset` parameter to `a`. Similarly, if you want to list all the objects that begin with `ab`, then set the `Offset` parameter to `ab`.
The `Next Continuation Token` is used to list the next set of objects in a bucket. It is returned by the API when the response is truncated. The results will contain `Next Continuation Token` if there are more keys in the bucket that satisfy the list query. To get the next set of objects, set the `Next Continuation Token` parameter and run the query again.
**Next Continuation Token** <br/>
For listing a bucket for objects that begin with a specific character or a prefix, then use the **Offset** parameter. For example, if you want to list all the objects that begin with **a**, then set the **Offset** parameter to **a**. Similarly, if you want to list all the objects that begin with **ab**, then set the **Offset** parameter to **ab**. <br/>
The **Next Continuation Token** is used to list the next set of objects in a bucket. It is returned by the API when the response is truncated. The results will contain **Next Continuation Token** if there are more keys in the bucket that satisfy the list query. To get the next set of objects, set the **Next Continuation Token** parameter and run the query again. <br/>
The results will continue from where the last listing finished.
:::
<img style={{marginBottom:'15px'}} className="screenshot-full" src="/img/datasource-reference/aws-s3/listobjectsv2-v3.png" alt="aws s3 list object" />
<div style={{textAlign: 'left'}}>
<img style={{ border:'0'}} className="screenshot-full" src="/img/datasource-reference/aws-s3/listobjectsv2-v3.png" alt="aws s3 list object" />
</div>
### Signed URL for download
### Signed URL for Download
The object owner can optionally share objects with others by creating a presigned URL, using their own security credentials, to grant time-limited permission to download the objects.
#### Required parameters:
#### Required Parameters
- **Bucket**: Name of the bucket for uploading the file.
- **Key**: The object key.
- **Expires in**: The expiration time of URL.
- **Bucket**
- **Key**
- **Expires in**
<img style={{marginBottom:'15px'}} className="screenshot-full" src="/img/datasource-reference/aws-s3/urldownv2-v3.png" alt="aws s3 signed download" />
<div style={{textAlign: 'left'}}>
<img style={{ border:'0'}} className="screenshot-full" src="/img/datasource-reference/aws-s3/urldownv2-v3.png" alt="aws s3 signed download" />
</div>
### Signed URL for upload
### Signed URL for Upload
The presigned URLs are useful if you want your user/customer to be able to upload a specific object to your bucket, but you don't require them to have AWS security credentials or permissions.
#### Required parameters:
- **Bucket**: Name of the bucket for uploading the file.
- **Key**: The object key.
- **Expires in**: The expiration time of URL.
- **Content Type**: The content type such as text, image etc.
<div style={{textAlign: 'left'}}>
<img style={{ border:'0', marginBottom:'15px' }} className="screenshot-full" src="/img/datasource-reference/aws-s3/urluplv2-v3.png" alt="aws s3 signed upload" />
</div>
#### Required Parameters
- **Bucket**
- **Key**
- **Expires in**
- **Content Type**
<img className="screenshot-full" src="/img/datasource-reference/aws-s3/urluplv2-v3.png" alt="aws s3 signed upload" />
:::info
We built an app to view and upload files to AWS S3 buckets. Check out the complete tutorial **[here](https://blog.tooljet.com/build-an-aws-s3-broswer-with-tooljet/)**.
:::
:::
</div>

View file

@ -3,52 +3,55 @@ id: twilio
title: Twilio
---
# Twilio
ToolJet can connect to Twilio account to send sms.
ToolJet can connect to your Twilio account to send sms.
<div style={{textAlign: 'center'}}>
![ToolJet - Data source - Twilio](/img/datasource-reference/twilio/connect.png)
</div>
<div style={{paddingTop:'24px'}}>
## Connection
- To add the Twilio datasource, click the **Datasource manager** icon on the left-sidebar of the app builder and click on the `Add datasource` button, then select **Twilio** from the modal that pops up.
- In the next dialog, you'll be asked to enter the Auth Token, Account SID, and Messaging Service SID.
- You can get the **Auth Token and Account SID** on the dashboard of your Twilio account.
To establish a connection with the Twilio data source, you can either click on the **+ Add new Data source** button located on the query panel or navigate to the **[Data Sources](/docs/data-sources/overview)** page from the ToolJet dashboard and choose Twilio as the data source.
<div style={{textAlign: 'center'}}>
ToolJet requires the following to connect to Twilio:
- **Auth Token**
- **Account SID**
- **Messaging Service SID**
![ToolJet - Data source - Twilio](/img/datasource-reference/twilio/auth.png)
You can get the **Auth Token and Account SID** on the dashboard of your Twilio account.
<img className="screenshot-full" src="/img/datasource-reference/twilio/auth.png" alt="ToolJet - Data source - Twilio" />
For **Messaging Service SID**, you'll need to create a messaging service first from the Services under Messaging in the left-sidebar.
<img className="screenshot-full" src="/img/datasource-reference/twilio/sid.png" alt="ToolJet - Data source - Twilio" />
<img className="screenshot-full" src="/img/datasource-reference/twilio/connect-v2.png" alt="ToolJet - Data source - Twilio" />
</div>
- For **Messaging Service SID**, you'll need to create a messaging service first from the Services under Messaging in the left-sidebar.
<div style={{paddingTop:'24px'}}>
<div style={{textAlign: 'center'}}>
## Querying Twilio
![ToolJet - Data source - Twilio](/img/datasource-reference/twilio/sid.png)
1. Click on **+ Add** button of the query manager at the bottom panel of the editor.
2. Select the **Twilio** datasource added in previous step.
3. Select **Send SMS** from the dropdown and enter the required parameters.
4. Click on the **Preview** button to preview the output or Click on the **Run** button to trigger the query.
</div>
- After entering the three credentials, you can **Save** the datasource.
<div style={{paddingTop:'24px'}}>
## Supported operations
1. **Send message**
### Send message
This operation will send the specified message to specified mobile number.
<div style={{textAlign: 'center'}}>
#### Required Parameters
- **To Number**
- **Body**
![ToolJet - Data source - Twilio](/img/datasource-reference/twilio/sms.png)
<img className="screenshot-full" src="/img/datasource-reference/twilio/sms-v2.png" alt="ToolJet - Data source - Twilio" />
</div>

View file

@ -3,90 +3,145 @@ id: typesense
title: TypeSense
---
# TypeSense
ToolJet can connect to your TypeSense deployment to read and write data.
## Connection
Please make sure the host/IP of the TypeSense deployment is accessible from your VPC if you have self-hosted ToolJet. If you are using ToolJet cloud, please **whitelist our IP**.
<div style={{paddingTop:'24px'}}>
ToolJet requires the following to connect to your TypeSense deployment:
## Connection
To establish a connection with the Typesense data source, you can either click on the **+ Add new Data source** button located on the query panel or navigate to the **[Data Sources](/docs/data-sources/overview)** page from the ToolJet dashboard and choose Typesense as the data source.
:::info
Please make sure the **Host/IP** of the database is accessible from your VPC if you have self-hosted ToolJet. If you are using ToolJet cloud, please **whitelist** our IP.
:::
ToolJet requires the following to connect to TypeSense deployment:
- **Host**
- **Port**
- **API Key**
- **Protocol**
<div style={{textAlign: 'center'}}>
<img className="screenshot-full" src="/img/datasource-reference/typesense/connect.png" alt="typesense connect" />
<img className="screenshot-full" src="/img/datasource-reference/typesense/connect-v2.png" alt="typesense connect" />
</div>
<div style={{paddingTop:'24px'}}>
## Querying TypeSense
Click on `+` button of the query manager at the bottom panel of the editor and select the TypeSense added in the previous step as the data source.
Select the operation that you want to perform on your TypeSense cluster and click `Create` to save the query.
<div style={{textAlign: 'center'}}>
<img className="screenshot-full" src="/img/datasource-reference/typesense/query.png" alt="typesense query" />
</div>
1. Click on **+ Add** button of the query manager at the bottom panel of the editor.
2. Select the **Typesence** datasource added in previous step.
3. Select the desired operation from the dropdown and enter the required parameters.
4. Click on the **Preview** button to preview the output or Click on the **Run** button to trigger the query.
:::tip
Query results can be transformed using transformations. Read our transformations documentation to see how: **[link](/docs/tutorial/transformations)**
:::
## Supported operations
</div>
#### 1. Create a Collection
<div style={{paddingTop:'24px'}}>
## Supported Operations
### Create a Collection
With this operation you can easily create `Collections` in your TypeSense cluster. In the schema field, you'll need to define the schema for creating a new collection. Check out TypeSense docs to know more about collections **[here](https://typesense.org/docs/0.22.2/api/collections.html#create-a-collection)**
#### Required Parameter
- **Schema**
<img className="screenshot-full" src="/img/datasource-reference/typesense/collection.png" alt="typesense collection" />
<img className="screenshot-full" src="/img/datasource-reference/typesense/collection-v2.png" alt="typesense collection" style={{marginBottom:'15px'}}/>
#### Example
#### 2. Index a document
```yaml
[
{ "name": "id", "type": "string" },
{ "name": "name", "type": "string" },
{ "name": "price", "type": "float" }
]
```
### Index a Document
Use this operation to index a document to your collection. You'll need to specify the **Collection Name** where you want your document to be indexed and also provide the document data according the schema defined in the collection. Read more about Indexing a document in TypeSense **[here](
https://typesense.org/docs/0.22.2/api/documents.html#index-a-single-document)**.
#### Required Parameter
- **Collection**
- **Document**
<img className="screenshot-full" src="/img/datasource-reference/typesense/index.png" alt="typesense index" />
<img className="screenshot-full" src="/img/datasource-reference/typesense/index-v2.png" alt="typesense index" style={{marginBottom:'15px'}}/>
```yaml
{
"id": "1",
"name": "Laptop",
"price": 999.99
}
```
#### 3. Search
### Search
Use this operation to perform a search within the specified collection. Know more about the search parameters in the TypeSense doc **[here](https://typesense.org/docs/0.22.2/api/documents.html#search)**.
#### Required Parameter
- **Collection**
<img className="screenshot-full" src="/img/datasource-reference/typesense/search.png" alt="typesense search" />
<img className="screenshot-full" src="/img/datasource-reference/typesense/search-v2.png" alt="typesense search" style={{marginBottom:'15px'}}/>
```yaml
{
"filter_by": "price:<1000",
"sort_by": "price:desc",
"per_page": 10
}
```
#### 4. Get a document
### Get a Document
Use this operation to fetch an individual document in a collection by providing the `id` of the document. Read more about it **[here](https://typesense.org/docs/0.22.2/api/documents.html#retrieve-a-document)**.
#### Required Parameter
- **Collection**
- **Id**
<img className="screenshot-full" src="/img/datasource-reference/typesense/get.png" alt="typesense get"/>
<img className="screenshot-full" src="/img/datasource-reference/typesense/get-v2.png" alt="typesense get" style={{marginBottom:'15px'}}/>
#### 5. Update a document
### Update a Document
Use this operation to update an individual document by providing the **Collection Name** and **Id** of the document. You'll need to provide the updated document data in the form of specified schema. Check out the TypeSense's doc on updating a document **[here](https://typesense.org/docs/0.22.2/api/documents.html#update-a-document)**.
#### Required Parameter
- **Collection**
- **Id**
- **Document**
<img className="screenshot-full" src="/img/datasource-reference/typesense/update.png" alt="typesense update" />
<img className="screenshot-full" src="/img/datasource-reference/typesense/update-v2.png" alt="typesense update" style={{marginBottom:'15px'}}/>
```yaml
{
"name": "Gaming Laptop",
"price": 1199.99
}
```
#### 6. Delete a document
### Delete a Document
Delete a document from collection by providing the `Id` of the document. Check out the TypeSense's doc on deleting documents **[here](https://typesense.org/docs/0.22.2/api/documents.html#delete-documents)**.
#### Required Parameter
- **Collection**
- **Id**
<img className="screenshot-full" src="/img/datasource-reference/typesense/delete.png" alt="typesense delete" />
<img className="screenshot-full" src="/img/datasource-reference/typesense/delete-v2.png" alt="typesense delete" style={{marginBottom:'15px'}}/>
<br/><br/>
:::tip
Make sure that you supply JSON strings instead of JavaScript objects for any document or schema that is being passed to the server, in any of the above operations.
:::
</div>

View file

@ -2,63 +2,89 @@
id: woocommerce
title: WooCommerce
---
# WooCommerce
ToolJet can connect to WooCommerce databases to read and write data.
- [Connection](#connection)
- [Getting Started](#querying-woocommerce)
<div style={{paddingTop:'24px'}}>
## Connection
Auth
You may use [HTTP Basic Auth] by providing the REST API Consumer Key as the username and the REST API Consumer Secret as the password.
To establish a connection with the WooCommerce data source, you can either click on the **+ Add new Data source** button located on the query panel or navigate to the **[Data Sources](/docs/data-sources/overview)** page from the ToolJet dashboard and choose WooCommerce as the data source.
ToolJet requires the following to connect to WooCommerce
- **Host**
- **Consumer key**
- **Consumer secret**
![ToolJet - Data Source - Woocommerce](/img/datasource-reference/woocommerce/woocomerce-auth.png)
<img className="screenshot-full" src="/img/datasource-reference/woocommerce/woocomerce-auth-v2.png" alt="ToolJet - Data Source - Woocommerce" />
:::info
NOTE: For generating keys visit admin dashboard of woocommerce , more info: https://woocommerce.github.io/woocommerce-rest-api-docs/?javascript#authentication
:::
## Querying Woocommerce
</div>
**Operations**
<div style={{paddingTop:'24px'}}>
**Customer**
## Querying WooCommerce
- list customer
- update customer
- delete customer
- batch update customer
- create customer
- retrieve customer
1. Click on **+ Add** button of the query manager at the bottom panel of the editor.
2. Select the **WooCommerce** datasource added in previous step.
3. Select the desired resource from the dropdown and then select the desired operation and enter the required parameters.
4. Click on the **Preview** button to preview the output or Click on the **Run** button to trigger the query.
**PRODUCT**
:::tip
Query results can be transformed using transformations. Read our transformations documentation to see how: **[link](/docs/tutorial/transformations)**
:::
- list product
- update product
- delete product
- batch update product
- create product
- retrieve product
</div>
**ORDER**
<div style={{paddingTop:'24px'}}>
- list order
- update order
- delete order
- batch update order
- create order
- retrieve order
## Resource
**Coupon**
### Customer
- list coupon
- create coupon
#### Supported Operations
- **list customer**
- **update customer**
- **delete customer**
- **batch update customer**
- **create customer**
- **retrieve customer**
### Product
#### Supported Operations
- **list product**
- **update product**
- **delete product**
- **batch update product**
- **create product**
- **retrieve product**
### Order
#### Supported Operations
- **list order**
- **update order**
- **delete order**
- **batch update order**
- **create order**
- **retrieve order**
### Coupon
#### Supported Operations
- **list coupon**
- **create coupon**
:::info
NOTE: For more info visit https://woocommerce.github.io/woocommerce-rest-api-docs/?javascript.
:::
:::
</div>

View file

@ -3,94 +3,114 @@ id: zendesk
title: Zendesk
---
# Zendesk
ToolJet can connect to Zendesk APIs to read and write data using OAuth 2.0, which helps us to limit an application's access to a user's account.
- [Connection](#connection)
- [Querying Zendesk](#querying-zendesk)
<div style={{paddingTop:'24px'}}>
## Connection
To establish a connection with the Zendesk data source, you can either click on the **+ Add new Data source** button located on the query panel or navigate to the **[Data Sources](/docs/data-sources/overview)** page from the ToolJet dashboard and choose Zendesk as the data source.
ToolJet connects to your Zendesk app using :
- **Zendesk Sub-domain**
- **Client ID**
- **Client Secret**
## Authorization Scopes
### Authorization Scopes
You can create a Zendesk data source with one of either of the two permission scopes :
1. **Read Only**
2. **Read and Write**
- **Read Only**
- **Read and Write**
:::info
You must first be a verified user to make Zendesk API requests. This is configured in the Admin Center interface in **Apps and integrations > APIs > Zendesk APIs.** For more information, see Security and Authentication in the [Zendesk Support API reference](https://developer.zendesk.com/api-reference/ticketing/introduction/#security-and-authentication) or [check out Zendesk's docs](https://support.zendesk.com/hc/en-us/articles/4408845965210).
:::
To connect Zendesk datasource to your ToolJet application, go to the data source manager on the left-sidebar and click on the `+` button. Select Zendesk from the list of available datasources, provide the credentials and click **Connect to Zendesk** and authenticate via OAuth. And click **Save** to save the datasource.
</div>
<div style={{textAlign: 'center'}}>
<div style={{paddingTop:'24px'}}>
![ToolJet - Data source - Zendesk](/img/datasource-reference/zendesk/zendesk-v2.gif)
## Querying Zendesk
1. Click on **+ Add** button of the query manager at the bottom panel of the editor.
2. Select the **Zendesk** datasource added in previous step.
3. Select the desired operation and enter the required parameters.
4. Click on the **Preview** button to preview the output or Click on the **Run** button to trigger the query.
<img className="screenshot-full" src="/img/datasource-reference/zendesk/zendesk-v2.gif" alt="ToolJet - Data source - Zendesk" />
</div>
## Querying Zendesk
1. **[List Tickets](/docs/data-sources/zendesk#list-tickets)**
2. **[List requested Tickets](/docs/data-sources/zendesk#list-requested-tickets)**
3. **[Show a Ticket](/docs/data-sources/zendesk#show-tickets)**
4. **[Update a Ticket](/docs/data-sources/zendesk#update-tickets)**
5. **[List Users](/docs/data-sources/zendesk#list-users)**
6. **[Get Profile](/docs/data-sources/zendesk#get-profile)**
7. **[Search query](/docs/data-sources/zendesk#search-query)**
<div style={{paddingTop:'24px'}}>
## Supported Operations
- **[List Tickets](#list-tickets)**
- **[List requested Tickets](#list-requested-tickets)**
- **[Show a Ticket](#show-tickets)**
- **[Update a Ticket](#update-tickets)**
- **[List Users](#list-users)**
- **[Get User](#get-user)**
- **[Search](#search)**
### List Tickets
Lists all the tickets in your Zendesk account.
### List requested Tickets
<img className="screenshot-full" src="/img/datasource-reference/zendesk/list-tickets.png" alt="ToolJet - Data source - Zendesk" />
### List Requested Tickets
Lists all the tickets requested by the user.
| Fields | description |
| ----------- | ----------- |
| User ID | The id of the user |
#### Required Parameter
- **User ID**
<img className="screenshot-full" src="/img/datasource-reference/zendesk/list-requested-tickets.png" alt="ToolJet - Data source - Zendesk" />
### Show Tickets
Gets a ticket's properties with the given ID, though not the ticket comments.
| Fields | description |
| ----------- | ----------- |
| Ticket ID | The id of the ticket |
#### Required Parameter
- **Ticket ID**
<img className="screenshot-full" src="/img/datasource-reference/zendesk/show.png" alt="ToolJet - Data source - Zendesk" />
### Update Tickets
Updates a ticket's properties with the given ID.
| Fields | description |
| ----------- | ----------- |
| Ticket ID | The id of the ticket |
| Body | The properties and values to update. Example: `{{({ "ticket": {"status": "solved"} })}}` |
#### Required Parameter
- **Ticket ID**
- **Body**
<img className="screenshot-full" src="/img/datasource-reference/zendesk/update.png" alt="ToolJet - Data source - Zendesk" />
### List Users
Lists all the users in your Zendesk account.
### Get Profile
<img className="screenshot-full" src="/img/datasource-reference/zendesk/list-users.png" alt="ToolJet - Data source - Zendesk" />
### Get User
Gets a user's profile with the given ID.
| Fields | description |
| ----------- | ----------- |
| User ID | The id of the user |
#### Required Parameter
- **User ID**
<img className="screenshot-full" src="/img/datasource-reference/zendesk/get.png" alt="ToolJet - Data source - Zendesk" />
### Search
### Search Query
The Search Query uses Zendesk's Search API to return tickets, users, and organizations with defined filters.
#### Required Parameter
- **Query**
Common filters include:
- `type:ticket`
- `type:user`
- `type:organization`
- `type:ticket organization:12345 status:open`
| Fields | description |
| ----------- | ----------- |
| Query | The search query |
<img className="screenshot-full" src="/img/datasource-reference/zendesk/search.png" alt="ToolJet - Data source - Zendesk" />
</div>

View file

@ -83,6 +83,7 @@ To remove a plugin, follow these steps:
- **[OpenAI](/docs/marketplace/plugins/marketplace-plugin-openai)**
- **[Plivo](/docs/marketplace/plugins/marketplace-plugin-plivo)**
- **[Pocketbase](/docs/marketplace/plugins/marketplace-plugin-pocketbase)**
- **[Portkey](/docs/marketplace/plugins/marketplace-plugin-portkey)**
- **[PrestoDB](/docs/marketplace/plugins/marketplace-plugin-prestodb)**
- **[Salesforce](/docs/marketplace/plugins/marketplace-plugin-salesforce)**
- **[Supabase](/docs/marketplace/plugins/marketplace-plugin-supabase)**

View file

@ -0,0 +1,232 @@
---
id: marketplace-plugin-portkey
title: Portkey
---
ToolJet can integrate with Portkey to access AI services such as text completion, chat completion, prompt completion, and embedding creation. This integration enables ToolJet to leverage Portkey's LMOps platform to develop, launch, maintain, and iterate on generative AI features.
<div style={{textAlign: 'center', paddingBottom: '24px'}}>
<img className="screenshot-full" src="/img/marketplace/plugins/portkey/overview.png" alt="Portkey Dashboard Overview" />
</div>
:::note
Before following this guide, it is assumed that you have already completed the process of **[Using Marketplace plugins](/docs/marketplace/marketplace-overview#using-marketplace-plugins)**.
:::
## Connection
To connect to Portkey, the following credentials are required:
- **API Key**: Your Portkey API Key. Refer to the **[Portkey API Authentication Documentation](https://docs.portkey.ai/docs/api-reference/authentication#obtaining-your-api-key)** for instructions on obtaining your API Key.
- **Default Virtual Key** (Optional): Your default Portkey Virtual Key. Visit the **[Portkey Virtual Keys Documentation](https://docs.portkey.ai/docs/product/ai-gateway-streamline-llm-integrations/virtual-keys#creating-virtual-keys)** to learn how to create and retrieve your Virtual Key.
- **Config** (Optional): Your default Portkey configuration.
- **Gateway URL** (Optional): Your default Portkey Gateway URL. See the **[Portkey API Authentication Documentation](https://docs.portkey.ai/docs/api-reference/authentication#obtaining-your-api-key)** for details on how to obtain your Gateway URL.
<div style={{textAlign: 'center'}}>
<img className="screenshot-full" src="/img/marketplace/plugins/portkey/configuration.png" alt="Configuring Portkey in ToolJet" />
</div>
## Supported Operations
Portkey in ToolJet supports the following operations:
- **[Completion](#completion)**
- **[Chat](#chat)**
- **[Prompt Completion](#prompt-completion)**
- **[Create Embedding](#create-embedding)**
### Completion
This operation generates text completions based on a given prompt.
#### Parameters:
- **Prompt**: The input text to generate completions for.
- **Model**: The AI model to use.
- **Max Tokens**: Maximum number of tokens to generate.
- **Temperature**: Controls randomness.
- **Stop Sequences**: Sequences where the API will stop generating further tokens.
- **Metadata**: Additional metadata for the request.
- **Other Parameters**: Any other parameters to include in the request.
<div style={{textAlign: 'center'}}>
<img className="screenshot-full" src="/img/marketplace/plugins/portkey/completion.png" alt="Completion Operation for Portkey" />
</div>
<details>
<summary>**Response Example**</summary>
```json
{
"id": "cmpl-9vNUfM8OP0SwSqXcnPwkqzR7ep8Sy",
"object": "text_completion",
"created": 1723462033,
"model": "gpt-3.5-turbo-instruct",
"choices": [
{
"text": "nn"Experience the perfect brew at Bean There."",
"index": 0,
"logprobs": null,
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 13,
"completion_tokens": 10,
"total_tokens": 23
}
}
```
</details>
### Chat
This operation generates chat completions based on a series of messages.
#### Parameters:
- **Messages**: An array of message objects representing the conversation.
- **Model**: The AI model to use.
- **Max Tokens**: Maximum number of tokens to generate.
- **Temperature**: Controls randomness.
- **Stop Sequence**: Sequences where the API will stop generating further tokens.
- **Metadata**: Additional metadata for the request.
- **Other Parameters**: Any other parameters to include in the request.
<div style={{textAlign: 'center'}}>
<img className="screenshot-full" src="/img/marketplace/plugins/portkey/chat.png" alt="Chat Operation for Portkey" />
</div>
<details>
<summary>**Response Example**</summary>
```json
{
"id": "chatcmpl-9vNIlfllXOPEmroKFajK2nlJHzhXA",
"object": "chat.completion",
"created": 1723461295,
"model": "gpt-3.5-turbo-0125",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "The capital of France is Paris.",
"refusal": null
},
"logprobs": null,
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 24,
"completion_tokens": 7,
"total_tokens": 31
},
"system_fingerprint": null
}
```
</details>
### Prompt Completion
This operation generates completions based on a pre-defined prompt.
#### Parameters:
- **Prompt ID**: The ID of the pre-defined prompt to use.
- **Variables**: Variables to be used in the prompt.
- **Parameters**: Additional parameters for the prompt completion.
- **Metadata**: Additional metadata for the request.
<div style={{textAlign: 'center'}}>
<img className="screenshot-full" src="/img/marketplace/plugins/portkey/prompt-completion.png" alt="Prompt Completion Operation for Portkey" />
</div>
<details>
<summary>**Response Example**</summary>
```json
{
"id": "chatcmpl-9w6D8jZciWVf1DzkgqNZK14KUvA4d",
"object": "chat.completion",
"created": 1723633926,
"model": "gpt-4o-mini-2024-07-18",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "The Industrial Revolution, starting in the late 18th century, transformed production from hand methods to machine-based processes, introducing new manufacturing techniques, steam power, and machine tools. It marked a shift from bio-fuels to coal, with the textile industry leading the way. This period resulted in significant population growth, increased average income, and improved living standards.",
"refusal": null
},
"logprobs": null,
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 145,
"completion_tokens": 71,
"total_tokens": 216
},
"system_fingerprint": "fp_48196bc67a"
}
```
</details>
### Create Embedding
This operation creates embeddings for given input text.
#### Parameters:
- **Input**: The input text to create embeddings for.
- **Model**: The AI model to use for creating embeddings.
- **Metadata**: Additional metadata for the request.
<div style={{textAlign: 'center'}}>
<img className="screenshot-full" src="/img/marketplace/plugins/portkey/embedding.png" alt="Create Embedding Operation for Portkey" />
</div>
<details>
<summary>**Response Example**</summary>
```json
{
"object": "list",
"data": [
{
"object": "embedding",
"index": 0,
"embedding": [
-0.02083237,
-0.016892163,
-0.0045676464,
-0.05084554,
-0.025968939,
0.029597048,
0.029987168,
0.02907689,
0.0105982395,
-0.024356445,
-0.00935636,
0.0066352785,
0.034018397,
-0.042002838,
0.03856979,
-0.014681488,
...,
0.024707552
]
}
],
"model": "text-embedding-3-small",
"usage": {
"prompt_tokens": 9,
"total_tokens": 9
}
}
```
</details>
For all operations, you can optionally specify:
- **Config**: Configuration options for the request.
- **Virtual Key**: A specific virtual key to use for the request, overriding the default.
---

View file

@ -15,6 +15,8 @@ Please find the latest LTS version here: <br/>
| Version | Release Date | Docker Pull Command |
|---------|--------------|----------------------|
| Latest EE-LTS | N/A | `docker pull tooljet/tooljet:EE-LTS-latest` |
| [EE-LTS-2.50.9.41](https://hub.docker.com/layers/tooljet/tooljet/EE-LTS-2.50.9.41/images/sha256-d36444747af6f81d4456ca4d1f7dcf92c3e77e13e23ca9407c22de1c62451bd7?context=explore) | September 24 , 2024 | `docker pull tooljet/tooljet:EE-LTS-2.50.9.41` |
| [EE-LTS-2.50.9.40](https://hub.docker.com/layers/tooljet/tooljet/EE-LTS-2.50.9.40/images/sha256-26338b926568dc514c26988f6cd01f84bb3edf950fac08982365fabb95900f78?context=explore) | September 18 , 2024 | `docker pull tooljet/tooljet:EE-LTS-2.50.9.40` |
| [EE-LTS-2.50.9.39](https://hub.docker.com/layers/tooljet/tooljet/EE-LTS-2.50.9.39/images/sha256-6f1b7a00432e0e29a05adb375d3ddd9da877d6eb53d489be14ca0061953bbb57?context=explore) | September 12 , 2024 | `docker pull tooljet/tooljet:EE-LTS-2.50.9.39` |
| [EE-LTS-2.50.9.38](https://hub.docker.com/layers/tooljet/tooljet/EE-LTS-2.50.9.38/images/sha256-1974afb5f8483f4bfb7bf7575d7d8b4f0f7747dd7c88139cbf559c3ce8b1fdbd?context=explore) | September 12 , 2024 | `docker pull tooljet/tooljet:EE-LTS-2.50.9.38` |
| [EE-LTS-2.50.9.37](https://hub.docker.com/layers/tooljet/tooljet/EE-LTS-2.50.9.37/images/sha256-b1a13a5424bf14af77bb455f39e07d2a774303bcf4286aa7bd6d0a78c1a58e59?context=explore) | September 11 , 2024 | `docker pull tooljet/tooljet:EE-LTS-2.50.9.37` |
@ -29,8 +31,6 @@ Please find the latest LTS version here: <br/>
| [EE-LTS-2.50.9.28](https://hub.docker.com/layers/tooljet/tooljet/EE-LTS-2.50.9.28/images/sha256-f33982c51a59b126aea9da9eef2cace0cd074411583ea896edc3f6db5b578a6b?context=explore) | August 19, 2024 | `docker pull tooljet/tooljet:EE-LTS-2.50.9.28` |
| [EE-LTS-2.50.9.27](https://hub.docker.com/layers/tooljet/tooljet/EE-LTS-2.50.9.27/images/sha256-ae4810ddd12b2e397a07085e2ea62e98c4ea16c139d2673e4ab890d19b40f868?context=explore) | August 13, 2024 | `docker pull tooljet/tooljet:EE-LTS-2.50.9.27` |
| [EE-LTS-2.50.9.26](https://hub.docker.com/layers/tooljet/tooljet/EE-LTS-2.50.9.26/images/sha256-8e17e23f2d61b463aaf0f87e5e90fa4580faf3fa6e790afcff64ef399454f85f?context=explore) | August 12, 2024 | `docker pull tooljet/tooljet:EE-LTS-2.50.9.26` |
| [EE-LTS-2.50.9.25](https://hub.docker.com/layers/tooljet/tooljet/EE-LTS-2.50.9.25/images/sha256-fdf2858e364c238abd49418321a34676449383733ca3c6fb79ae4714e113a064?context=explore) | August 2, 2024 | `docker pull tooljet/tooljet:EE-LTS-2.50.9.25` |
| [EE-LTS-2.50.9.24](https://hub.docker.com/layers/tooljet/tooljet/EE-LTS-2.50.9.24/images/sha256-a51522503c4b31eb5cd27bd105fe8693f371f17fcf6bf9c86c3fff3d6d9faf4f?context=explore) | August 1, 2024 | `docker pull tooljet/tooljet:EE-LTS-2.50.9.24` |
:::info
Users are encouraged to upgrade to the latest LTS version to ensure they benefit from the latest improvements and maintain a secure and efficient environment.

View file

@ -430,6 +430,7 @@ const sidebars = {
'marketplace/plugins/marketplace-plugin-salesforce',
'marketplace/plugins/marketplace-plugin-supabase',
'marketplace/plugins/marketplace-plugin-pocketbase',
'marketplace/plugins/marketplace-plugin-portkey',
'marketplace/plugins/marketplace-plugin-prestodb',
'marketplace/plugins/marketplace-plugin-jira',
],

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 126 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 126 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 165 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 350 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 193 KiB

View file

@ -149,4 +149,41 @@ docker compose run --rm server npm --prefix server run test <path-to-file>
## Troubleshooting
Please open a new issue at https://github.com/ToolJet/ToolJet/issues or join our [Slack Community](https://tooljet.com/slack) if you encounter any issues when trying to run ToolJet locally.
Please open a new issue at https://github.com/ToolJet/ToolJet/issues or join our [Slack Community](https://tooljet.com/slack) if you encounter any issues when trying to run ToolJet locally.
## Debugging with Docker
In this section, we provide guidance on how to enable debugging for ToolJet services using Docker and Visual Studio Code. These additions will significantly benefit contributors by streamlining the debugging process and enhancing the overall development experience.
#### VSCode Launch Configuration:
A new configuration has been added in `.vscode/launch.json` to facilitate launching the client and server in debug mode. This allows contributors to easily debug the application within the Visual Studio Code environment. Configurations include:
- **Docker Debug Client**: Launch the client running in a Docker container for debugging within Visual Studio Code.
- **Docker Debug Server**: Debug the server in a Docker container, allowing developers to leverage Node.js debugging tools directly from their IDE.
#### VSCode Task Configuration:
A new task has been introduced in `.vscode/tasks.json` to manage Docker Compose commands for debugging. This includes tasks to start the client and server in detached mode, making it easier to initiate debugging sessions.
#### Docker Compose Debug Configuration:
The `docker-compose-debug.yaml` file defines the services for debugging, exposing the necessary port (9229) for Node.js debugging. This setup ensures that the server runs in debug mode, allowing for effective troubleshooting.
### Benefits of Debugging Configuration
These changes streamline the debugging process, making it more efficient for contributors to identify and fix issues. The integration with Visual Studio Code allows for advanced debugging features such as breakpoints and real-time variable inspection. Furthermore, standardizing the debugging setup fosters better collaboration among team members, facilitating knowledge sharing and improving the overall development workflow.
By implementing these configurations, ToolJet aims to enhance the development experience, enabling contributors to resolve issues swiftly and maintain project momentum.
If you want to run docker in debug mode use this command
```bash
docker-compose -f docker-compose.yaml -f docker-compose-debug.yaml up --build
```
**Open the Project in VSCode**: Open the ToolJet directory in Visual Studio Code.
Check Launch Configurations:
- Open the debug view by clicking on the Debug icon in the Activity Bar on the side of the window.
- Select the appropriate configuration, such as Docker Debug Client or Docker Debug Server.

View file

@ -3,18 +3,43 @@ id: airtable
title: Airtable
---
ToolJet can connect to your **Airtable** account to read and write data. **Personal Access Token** is required to connect to the Airtable data source on ToolJet. You can generate the Personal Access Token by visiting **[Developer Hub from your Airtable profile](https://support.airtable.com/docs/creating-and-using-api-keys-and-access-tokens#understanding-personal-access-token-basic-actions)**.
ToolJet can connect to your **Airtable** account to read and write data.
<div style={{paddingTop:'24px'}}>
## Connection
To establish a connection with the **Airtable** data source, you can either click on the **+ Add new Data source** button located on the query panel or navigate to the **[Data Sources](/docs/data-sources/overview/)** page from the ToolJet dashboard.
ToolJet requires the following to connect to your Airtable:
- **Personal Access Token**
You can generate the Personal Access Token by visiting **[Developer Hub from your Airtable profile](https://support.airtable.com/docs/creating-and-using-api-keys-and-access-tokens#understanding-personal-access-token-basic-actions)**.
<div style={{textAlign: 'center'}}>
<img style={{ border:'0', marginBottom:'15px', borderRadius:'5px', boxShadow: '0px 1px 3px rgba(0, 0, 0, 0.2)' }} className="screenshot-full" src="/img/datasource-reference/airtable/airtableconnect-v2.gif" alt="Airtable Data Source Connection" />
<img style={{ border:'0', borderRadius:'5px', boxShadow: '0px 1px 3px rgba(0, 0, 0, 0.2)' }} className="screenshot-full" src="/img/datasource-reference/airtable/airtableconnect-v2.gif" alt="Airtable Data Source Connection" />
</div>
<br/>
</div>
:::info
Airtable API has a rate limit, and at the time of writing this documentation, the limit is five(5) requests per second per base. You can read more about rate limits here **[Airtable API](https://airtable.com/api)**.
:::
<div style={{paddingTop:'24px'}}>
## Querying Airtable
1. Click on **+ Add** button of the query manager at the bottom panel of the editor.
2. Select the **Airtable** datasource added in previous step.
3. Select the desired operation from the dropdown and enter the required parameters.
4. Click on the **Preview** button to preview the output or Click on the **Run** button to trigger the query.
<img className="screenshot-full" src="/img/datasource-reference/airtable/operations.png" alt="Airtable Data Source Operations" />
</div>
<div style={{paddingTop:'24px'}}>
## Supported Operations
@ -27,104 +52,100 @@ Airtable API has a rate limit, and at the time of writing this documentation, th
</div>
<div style={{paddingTop:'24px'}}>
### List Records
### List records
This operation retrieves a list of records from the specified table.
This operation returns a list of records from the specified table.
#### Required Parameters
#### Required parameters:
- **Base ID**
- **Table name**
- **Base ID:** To find the Base ID, first visit **[Airtable API](https://airtable.com/api)**. Then select the base you want to connect to. The Base ID will be mentioned in the API documentation. Example Base ID: `appDT3UCPffPiSmFd`
- **Table name:** The name of the table from which you want to fetch the records.
#### Optional Parameters
#### Optional parameters:
- **Page size**
- **Offset**
- **Filter by formula**
- **Fields**
- **Page size:** The number of records returned in each request. Default is 100 records.
- **Offset:** The offset value is used to fetch the next set of records. The offset value is returned in the response of the previous request.
- **Filter by formula:** This parameter will only return records that satisfy the formula. The formula will be evaluated for each record, and if the result is not 0, false, "", NaN, [], or #Error!, the record will be included in the result. e.g. `Name = 'John'`
- **Fields:** The fields you want to retrieve. If you don't specify the fields, all fields will be returned. e.g. `["Name", "Email", "Survey Response"]`
<img className="screenshot-full" src="/img/datasource-reference/airtable/list-records-v2.png" alt="Airtable List Records Query" />
<br/>
<div style={{textAlign: 'center'}}>
<img style={{ border:'0', marginBottom:'15px', borderRadius:'5px', boxShadow: '0px 1px 3px rgba(0, 0, 0, 0.2)' }} className="screenshot-full" src="/img/datasource-reference/airtable/list-records-v2.png" alt="Airtable List Records Query" />
</div>
Example response from Airtable:
```json
{
"records": [
{
"id": "recu9xMnUdr2n2cw8",
"fields": {
"Notes": "Meeting to discuss project details",
"Name": "John Doe"
<details>
<summary>**Response Example**</summary>
```json
{
"records": [
{
"id": "recu9xMnUdr2n2cw8",
"fields": {
"Notes": "Meeting to discuss project details",
"Name": "John Doe"
},
"createdTime": "2021-05-12T14:30:33.000Z"
},
"createdTime": "2021-05-12T14:30:33.000Z"
{
"id": "recyIdR7bVdQvmKXa",
"fields": {
"Notes": "Follow-up call regarding contract",
"Name": "Jane Smith"
},
"createdTime": "2021-05-12T14:30:33.000Z"
},
{
"id": "recAOzdIHaRpvRaGE",
"fields": {
"Notes": "Client feedback review meeting",
"Name": "Alice Johnson"
},
"createdTime": "2021-05-12T14:30:33.000Z"
}
],
"offset": "recAOzdIHaRpvRaGE"
}
```
</details>
### Retrieve Record
This operation fetches a specific record from the specified table.
#### Required Parameters
- **Base ID**
- **Table name**
- **Record ID**
<img className="screenshot-full" src="/img/datasource-reference/airtable/retrieve-record-v2.png" alt="Airtable Retrieve Record Query" />
<details>
<summary>**Response Example**</summary>
```json
{
"id": "recu9xMnUdr2n2cw8",
"fields": {
"Notes": "Discuss project timeline",
"Name": "Michael Scott"
},
{
"id": "recyIdR7bVdQvmKXa",
"fields": {
"Notes": "Follow-up call regarding contract",
"Name": "Jane Smith"
},
"createdTime": "2021-05-12T14:30:33.000Z"
},
{
"id": "recAOzdIHaRpvRaGE",
"fields": {
"Notes": "Client feedback review meeting",
"Name": "Alice Johnson"
},
"createdTime": "2021-05-12T14:30:33.000Z"
}
],
"offset": "recAOzdIHaRpvRaGE"
}
```
"createdTime": "2021-05-12T14:30:33.000Z"
}
```
</details>
</div>
### Create Record
### Retrieve record
This operation creates a new record in the specified table.
#### Required parameters:
#### Required Parameters
- **Base ID**: To find the Base ID, first visit **[Airtable API](https://airtable.com/api)**. Then select the base you want to connect to. The Base ID will be mentioned in the API documentation. Example Base ID: `appDT3UCPffPiSmFd`
- **Table name**: The name of the table from which you want to fetch the records.
- **Record ID**: The ID of the record you want to retrieve.
<br/>
<div style={{textAlign: 'center'}}>
<img style={{ border:'0', marginBottom:'15px', borderRadius:'5px', boxShadow: '0px 1px 3px rgba(0, 0, 0, 0.2)' }} className="screenshot-full" src="/img/datasource-reference/airtable/retrieve-record-v2.png" alt="Airtable Retrieve Record Query" />
</div>
- **Base ID**
- **Table name**
- **Records**
<img className="screenshot-full" src="/img/datasource-reference/airtable/create-record-v2.png" alt="Airtable Create Record Query" />
Example response from Airtable:
```json
{
"id": "recu9xMnUdr2n2cw8",
"fields": {
"Notes": "Discuss project timeline",
"Name": "Michael Scott"
},
"createdTime": "2021-05-12T14:30:33.000Z"
}
```
### Create record
#### Required parameters:
- **Base ID**: To find the Base ID, first visit **[Airtable API](https://airtable.com/api)**. Then select the base you want to connect to. The Base ID will be mentioned in the API documentation. Example Base ID: `appDT3UCPffPiSmFd`
- **Table name**: The name of the table where you want to create the record.
- **Records**: The records you want to create. The records should be in the form of an array of objects. Each object should have a `fields` key, which contains the fields of the record. The field names should be the same as the field names in the Airtable table.
<br/>
<div style={{textAlign: 'center'}}>
<img style={{ border:'0', marginBottom:'15px', borderRadius:'5px', boxShadow: '0px 1px 3px rgba(0, 0, 0, 0.2)' }} className="screenshot-full" src="/img/datasource-reference/airtable/create-record-v2.png" alt="Airtable Create Record Query" />
</div>
Example creating a record:
#### Example
```json title="Records"
[{
@ -134,81 +155,82 @@ Example creating a record:
}
}]
```
Query returns the following response when the record is created successfully:
```json
{
"records": [
{
"id": "recu6jhA7tzv4K66s",
"createdTime": "2024-06-11T06:01:44.000Z",
"fields": {
"Name": "Katrina Petersons",
"Email": "katrina.petersions@example.com",
"Date": "06-11-2024",
<details>
<summary>**Response Example**</summary>
```json
{
"records": [
{
"id": "recu6jhA7tzv4K66s",
"createdTime": "2024-06-11T06:01:44.000Z",
"fields": {
"Name": "Katrina Petersons",
"Email": "katrina.petersions@example.com",
"Date": "06-11-2024",
}
}
}
]
}
```
]
}
```
</details>
### Update record
Update a specific record by providing new data.
#### Required parameters:
- **Base ID**: To find the Base ID, first visit **[Airtable API](https://airtable.com/api)**. Then select the base you want to connect to. The Base ID will be mentioned in the API documentation. Example Base ID: `appDT3UCPffPiSmFd`
- **Table name**: The name of the table where you want to update the record.
- **Record ID**: The ID of the record you want to update.
- **Body**: The fields you want to update. The fields should be in the form of an object. The field names should be the same as the field names in the Airtable table.
<br/>
<div style={{textAlign: 'center'}}>
<img style={{ border:'0', marginBottom:'15px', borderRadius:'5px', boxShadow: '0px 1px 3px rgba(0, 0, 0, 0.2)' }} className="screenshot-full" src="/img/datasource-reference/airtable/update-record-v2.png" alt="Airtable Update Record Query" />
</div>
- **Base ID**
- **Table name**
- **Record ID**
- **Body**
Example updating a record:
<img className="screenshot-full" src="/img/datasource-reference/airtable/update-record-v2.png" alt="Airtable Update Record Query" />
```json title="Body"
#### Example
```json
{
"Email": "katrina.petersions2@example.com"
}
```
Query returns the following response when the record is updated successfully:
```json
{
"records": [
{
"id": "recu6jhA7tzv4K66s",
"createdTime": "2024-06-11T07:01:44.000Z",
"fields": {
"Name": "Katrina Petersons",
"Email": "katrina.petersions2@example.com",
"Date": "06-11-2024",
<details>
<summary>**Response Example**</summary>
```json
{
"records": [
{
"id": "recu6jhA7tzv4K66s",
"createdTime": "2024-06-11T07:01:44.000Z",
"fields": {
"Name": "Katrina Petersons",
"Email": "katrina.petersions2@example.com",
"Date": "06-11-2024",
}
}
}
]
}
```
]
}
```
</details>
### Delete record
This operation removes a record from the specified table.
#### Required parameters:
- **Base ID**: To find the Base ID, first visit **[Airtable API](https://airtable.com/api)**. Then select the base you want to connect to. The Base ID will be mentioned in the API documentation. Example Base ID: `appDT3UCPffPiSmFd`
- **Table name**: The name of the table where you want to delete the record.
- **Record ID**: The ID of the record you want to delete.
<br/>
<div style={{textAlign: 'center'}}>
<img style={{ border:'0', marginBottom:'15px', borderRadius:'5px', boxShadow: '0px 1px 3px rgba(0, 0, 0, 0.2)' }} className="screenshot-full" src="/img/datasource-reference/airtable/delete-record-v2.png" alt="Airtable Delete Record Query" />
</div>
- **Base ID**
- **Table name**
- **Record ID**
Query returns the following response when the record is deleted successfully:
<img className="screenshot-full" src="/img/datasource-reference/airtable/delete-record-v2.png" alt="Airtable Delete Record Query" />
```json
{
deleted: true
id: "recIKsyZgqI4zoqS7"
}
```
<details>
<summary>**Response Example**</summary>
```json
{
deleted: true
id: "recIKsyZgqI4zoqS7"
}
```
</details>

View file

@ -7,9 +7,9 @@ ToolJet offers the capability to establish a connection with Azure Blob storage
## Connection
To establish a connection with the Azure Blob data source, you can either click on the **+ Add new Data source** button located on the query panel or navigate to the **[Data Sources](/docs/data-sources/overview)** page from the ToolJet dashboard and choose Amazon Athena as the data source.
To establish a connection with the Azure Blob data source, you can either click on the **+ Add new Data source** button located on the query panel or navigate to the **[Data Sources](/docs/data-sources/overview)** page from the ToolJet dashboard and choose Azure Blob as the data source.
ToolJet requires the following to connect to your Athena.
ToolJet requires the following to connect to your Azure Blob.
- **Connection String**
<div style={{textAlign: 'center'}}>

View file

@ -3,13 +3,13 @@ id: s3
title: Amazon S3
---
ToolJet can connect to **Amazon S3** buckets and perform various operation on them.
ToolJet can connect to **Amazon S3** buckets and perform various operations on them.
<div style={{paddingTop:'24px'}}>
## Connection
To establish a connection with the **Amazon S3** data source, you can either click on the **+Add new Data source** button located on the query panel or navigate to the **[Data Sources](/docs/data-sources/overview/)** page from the ToolJet dashboard.
To establish a connection with the **Amazon S3** data source, you can either click on the **+ Add new Data source** button located on the query panel or navigate to the **[Data Sources](/docs/data-sources/overview/)** page from the ToolJet dashboard.
ToolJet supports connecting to AWS S3 using **IAM Access Keys**, **AWS Instance Credentials** or **AWS ARN Role**.
@ -19,29 +19,22 @@ If you are using **IAM Access Keys**, you will need to provide the following det
- **Access key**
- **Secret key**
It is recommended to create a new IAM user for the database so that you can control the access levels of ToolJet.
**Note:** It is recommended to create a new IAM user for the database so that you can control the access levels of ToolJet.
<div style={{textAlign: 'left'}}>
<img style={{ border:'0', marginBottom:'15px' }} className="screenshot-full" src="/img/datasource-reference/aws-s3/iamnew.png" alt="aws s3 modal" />
</div>
<img className="screenshot-full" src="/img/datasource-reference/aws-s3/iamnew.png" alt="aws s3 modal" />
To connect to AWS S3 using **AWS Instance Credentials**, select the **Use AWS Instance Credentials**. 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.
<div style={{textAlign: 'left'}}>
<img style={{ border:'0', marginBottom:'15px' }} className="screenshot-full" src="/img/datasource-reference/aws-s3/instanew.png" alt="aws s3 modal" />
</div>
<img className="screenshot-full" src="/img/datasource-reference/aws-s3/instanew.png" alt="aws s3 modal" />
If you are using **AWS ARN Role**, you will need to provide the following details:
- **Region**
- **Role ARN**
<div style={{textAlign: 'left'}}>
<img style={{ border:'0', marginBottom:'15px', width:'100%' }} className="screenshot-full" src="/img/datasource-reference/aws-s3/arnnew.png" alt="aws s3 modal" />
</div>
Click on **Test Connection** button to verify if the credentials are correct and that the database is accessible to ToolJet server. Click on **Save** button to save the data source.
<img className="screenshot-full" src="/img/datasource-reference/aws-s3/arnnew.png" alt="aws s3 modal" />
:::tip
You can now connect to **[different S3 Hosts using custom endpoints](/docs/how-to/s3-custom-endpoints)**.
@ -53,16 +46,13 @@ You can now connect to **[different S3 Hosts using custom endpoints](/docs/how-t
## Querying AWS S3
Click on **+Add** button of the **[query manager](/docs/app-builder/query-panel/#query-manager)** and select the data source added in the previous step as the data source. Select the operation that you want to perform, fill in the required parameters and click on **Run** button to run the query.
<div style={{textAlign: 'left'}}>
1. Click on **+ Add** button of the query manager at the bottom panel of the editor.
2. Select the **Amazon AWS S3** datasource added in previous step.
3. Select the desired operation from the dropdown and enter the required parameters.
4. Click on the **Preview** button to preview the output or Click on the **Run** button to trigger the query.
<img className="screenshot-full" src="/img/datasource-reference/aws-s3/operations3.png" alt="aws s3 query" />
</div>
<br/>
:::info
Query results can be transformed using transformations. Read our [transformations documentation](/docs/tutorial/transformations).
:::
@ -71,156 +61,121 @@ Query results can be transformed using transformations. Read our [transformation
<div style={{paddingTop:'24px'}}>
## Query operations
## Supported Operations
You can create query for AWS S3 data source to perform several actions such as:
1. **[Create a new bucket](#create-a-new-bucket)**
2. **[Read object](#read-object)**
3. **[Upload object](#upload-object)**
4. **[Remove object](#remove-object)**
5. **[List buckets](#list-buckets)**
6. **[List objects in a bucket](#list-objects-in-a-bucket)**
7. **[Signed url for download](#signed-url-for-download)**
8. **[Signed url for upload](#signed-url-for-upload)**
- **[Create a new bucket](#create-a-new-bucket)**
- **[Read object](#read-object)**
- **[Upload object](#upload-object)**
- **[Remove object](#remove-object)**
- **[List buckets](#list-buckets)**
- **[List objects in a bucket](#list-objects-in-a-bucket)**
- **[Signed URL for download](#signed-url-for-download)**
- **[Signed URL for upload](#signed-url-for-upload)**
</div>
### Create a new bucket
### Create a New Bucket
You can create a new bucket in your S3 by using this operation.
#### Required parameters:
#### Required Parameters
- **Bucket Name**: Specify the bucket name.
- **Bucket Name**
<div style={{textAlign: 'left'}}>
<img style={{marginBottom:'15px'}} className="screenshot-full" src="/img/datasource-reference/aws-s3/createbucket.png" alt="Create a new bucket - S3 operation" />
<img className="screenshot-full" src="/img/datasource-reference/aws-s3/createbucket.png" alt="Create a new bucket - S3 operation" />
</div>
### Read object
### Read Object
You can read an object in a bucket by using this operation.
#### Required parameters:
#### Required Parameters
- **Bucket**: Specify the bucket name.
- **Key**: Key of the object/file.
- **Bucket**
- **Key**
<img style={{marginBottom:'15px'}} className="screenshot-full" src="/img/datasource-reference/aws-s3/readv2-v3.png" alt="aws s3 read object" />
<div style={{textAlign: 'left'}}>
<img style={{ border:'0'}} className="screenshot-full" src="/img/datasource-reference/aws-s3/readv2-v3.png" alt="aws s3 read object" />
</div>
### Upload object
### Upload Object
You can use this operation to upload objects(files) to your S3 bucket.
#### Required parameters:
#### Required Parameters
- **Bucket**: Specify the bucket name.
- **Key**: Key of the object/file.
- **Content Type**: Specify file type such as text, image etc.
- **Upload data**: File/object that is to be uploaded.
- **Bucket**
- **Key**
- **Content Type**
- **Upload data**
<img style={{marginBottom:'15px'}} className="screenshot-full" src="/img/datasource-reference/aws-s3/uplobjv2-v3.png" alt="aws s3 upload"/>
<div style={{textAlign: 'left'}}>
<img style={{ border:'0'}} className="screenshot-full" src="/img/datasource-reference/aws-s3/uplobjv2-v3.png" alt="aws s3 upload"/>
</div>
### Remove object
### Remove Object
You can use this operation to remove an object from your S3 bucket.
#### Required parameters:
#### Required Parameters
- **Bucket**: Specify the bucket name.
- **Key**: Key of the object/file.
- **Bucket**
- **Key**
<div style={{textAlign: 'left'}}>
<img style={{marginBottom:'15px'}} className="screenshot-full" src="/img/datasource-reference/aws-s3/removeobject.png" alt="Create a new bucket - S3 operation" />
<img style={{ border:'0'}} className="screenshot-full" src="/img/datasource-reference/aws-s3/removeobject.png" alt="Create a new bucket - S3 operation" />
</div>
### List buckets
### List Buckets
This operation will list all the buckets in your S3. This does not require any parameter.
<img style={{marginBottom:'15px'}} className="screenshot-full" src="/img/datasource-reference/aws-s3/listbucketsv2-v3.png" alt="aws s3 bucket" />
<div style={{textAlign: 'left'}}>
<img style={{ border:'0'}} className="screenshot-full" src="/img/datasource-reference/aws-s3/listbucketsv2-v3.png" alt="aws s3 bucket" />
</div>
### List objects in a bucket
### List Objects in a Bucket
This operation will fetch the list of all the files in your bucket. It requires the following parameters:
#### Required parameters:
#### Required Parameters
- **Bucket**: Specify the bucket name.
- **Bucket**
#### Optional parameters:
#### Optional Parameters
- **Prefix**: To limit the response to keys that begin with the specified prefix.
- **Max keys**: The maximum number of keys returned in the response body. Default value is 1000.
- **Offset**: The key to start with when listing objects in a bucket.
- **Next Continuation Token**: `Next Continuation Token` indicates Amazon S3 that the list is being continued on this bucket with a token. ContinuationToken is obfuscated and is not a real key.
- **Prefix**
- **Max keys**
- **Offset**
- **Next Continuation Token**
:::info
**Next Continuation Token**
For listing a bucket for objects that begin with a specific character or a prefix, then use the `Offset` parameter. For example, if you want to list all the objects that begin with `a`, then set the `Offset` parameter to `a`. Similarly, if you want to list all the objects that begin with `ab`, then set the `Offset` parameter to `ab`.
The `Next Continuation Token` is used to list the next set of objects in a bucket. It is returned by the API when the response is truncated. The results will contain `Next Continuation Token` if there are more keys in the bucket that satisfy the list query. To get the next set of objects, set the `Next Continuation Token` parameter and run the query again.
**Next Continuation Token** <br/>
For listing a bucket for objects that begin with a specific character or a prefix, then use the **Offset** parameter. For example, if you want to list all the objects that begin with **a**, then set the **Offset** parameter to **a**. Similarly, if you want to list all the objects that begin with **ab**, then set the **Offset** parameter to **ab**. <br/>
The **Next Continuation Token** is used to list the next set of objects in a bucket. It is returned by the API when the response is truncated. The results will contain **Next Continuation Token** if there are more keys in the bucket that satisfy the list query. To get the next set of objects, set the **Next Continuation Token** parameter and run the query again. <br/>
The results will continue from where the last listing finished.
:::
<img style={{marginBottom:'15px'}} className="screenshot-full" src="/img/datasource-reference/aws-s3/listobjectsv2-v3.png" alt="aws s3 list object" />
<div style={{textAlign: 'left'}}>
<img style={{ border:'0'}} className="screenshot-full" src="/img/datasource-reference/aws-s3/listobjectsv2-v3.png" alt="aws s3 list object" />
</div>
### Signed URL for download
### Signed URL for Download
The object owner can optionally share objects with others by creating a presigned URL, using their own security credentials, to grant time-limited permission to download the objects.
#### Required parameters:
#### Required Parameters
- **Bucket**: Name of the bucket for uploading the file.
- **Key**: The object key.
- **Expires in**: The expiration time of URL.
- **Bucket**
- **Key**
- **Expires in**
<img style={{marginBottom:'15px'}} className="screenshot-full" src="/img/datasource-reference/aws-s3/urldownv2-v3.png" alt="aws s3 signed download" />
<div style={{textAlign: 'left'}}>
<img style={{ border:'0'}} className="screenshot-full" src="/img/datasource-reference/aws-s3/urldownv2-v3.png" alt="aws s3 signed download" />
</div>
### Signed URL for upload
### Signed URL for Upload
The presigned URLs are useful if you want your user/customer to be able to upload a specific object to your bucket, but you don't require them to have AWS security credentials or permissions.
#### Required parameters:
- **Bucket**: Name of the bucket for uploading the file.
- **Key**: The object key.
- **Expires in**: The expiration time of URL.
- **Content Type**: The content type such as text, image etc.
<div style={{textAlign: 'left'}}>
<img style={{ border:'0', marginBottom:'15px' }} className="screenshot-full" src="/img/datasource-reference/aws-s3/urluplv2-v3.png" alt="aws s3 signed upload" />
</div>
#### Required Parameters
- **Bucket**
- **Key**
- **Expires in**
- **Content Type**
<img className="screenshot-full" src="/img/datasource-reference/aws-s3/urluplv2-v3.png" alt="aws s3 signed upload" />
:::info
We built an app to view and upload files to AWS S3 buckets. Check out the complete tutorial **[here](https://blog.tooljet.com/build-an-aws-s3-broswer-with-tooljet/)**.
:::
:::
</div>

View file

@ -3,52 +3,55 @@ id: twilio
title: Twilio
---
# Twilio
ToolJet can connect to Twilio account to send sms.
ToolJet can connect to your Twilio account to send sms.
<div style={{textAlign: 'center'}}>
![ToolJet - Data source - Twilio](/img/datasource-reference/twilio/connect.png)
</div>
<div style={{paddingTop:'24px'}}>
## Connection
- To add the Twilio datasource, click the **Datasource manager** icon on the left-sidebar of the app builder and click on the `Add datasource` button, then select **Twilio** from the modal that pops up.
- In the next dialog, you'll be asked to enter the Auth Token, Account SID, and Messaging Service SID.
- You can get the **Auth Token and Account SID** on the dashboard of your Twilio account.
To establish a connection with the Twilio data source, you can either click on the **+ Add new Data source** button located on the query panel or navigate to the **[Data Sources](/docs/data-sources/overview)** page from the ToolJet dashboard and choose Twilio as the data source.
<div style={{textAlign: 'center'}}>
ToolJet requires the following to connect to Twilio:
- **Auth Token**
- **Account SID**
- **Messaging Service SID**
![ToolJet - Data source - Twilio](/img/datasource-reference/twilio/auth.png)
You can get the **Auth Token and Account SID** on the dashboard of your Twilio account.
<img className="screenshot-full" src="/img/datasource-reference/twilio/auth.png" alt="ToolJet - Data source - Twilio" />
For **Messaging Service SID**, you'll need to create a messaging service first from the Services under Messaging in the left-sidebar.
<img className="screenshot-full" src="/img/datasource-reference/twilio/sid.png" alt="ToolJet - Data source - Twilio" />
<img className="screenshot-full" src="/img/datasource-reference/twilio/connect-v2.png" alt="ToolJet - Data source - Twilio" />
</div>
- For **Messaging Service SID**, you'll need to create a messaging service first from the Services under Messaging in the left-sidebar.
<div style={{paddingTop:'24px'}}>
<div style={{textAlign: 'center'}}>
## Querying Twilio
![ToolJet - Data source - Twilio](/img/datasource-reference/twilio/sid.png)
1. Click on **+ Add** button of the query manager at the bottom panel of the editor.
2. Select the **Twilio** datasource added in previous step.
3. Select **Send SMS** from the dropdown and enter the required parameters.
4. Click on the **Preview** button to preview the output or Click on the **Run** button to trigger the query.
</div>
- After entering the three credentials, you can **Save** the datasource.
<div style={{paddingTop:'24px'}}>
## Supported operations
1. **Send message**
### Send message
This operation will send the specified message to specified mobile number.
<div style={{textAlign: 'center'}}>
#### Required Parameters
- **To Number**
- **Body**
![ToolJet - Data source - Twilio](/img/datasource-reference/twilio/sms.png)
<img className="screenshot-full" src="/img/datasource-reference/twilio/sms-v2.png" alt="ToolJet - Data source - Twilio" />
</div>

View file

@ -3,90 +3,145 @@ id: typesense
title: TypeSense
---
# TypeSense
ToolJet can connect to your TypeSense deployment to read and write data.
## Connection
Please make sure the host/IP of the TypeSense deployment is accessible from your VPC if you have self-hosted ToolJet. If you are using ToolJet cloud, please **whitelist our IP**.
<div style={{paddingTop:'24px'}}>
ToolJet requires the following to connect to your TypeSense deployment:
## Connection
To establish a connection with the Typesense data source, you can either click on the **+ Add new Data source** button located on the query panel or navigate to the **[Data Sources](/docs/data-sources/overview)** page from the ToolJet dashboard and choose Typesense as the data source.
:::info
Please make sure the **Host/IP** of the database is accessible from your VPC if you have self-hosted ToolJet. If you are using ToolJet cloud, please **whitelist** our IP.
:::
ToolJet requires the following to connect to TypeSense deployment:
- **Host**
- **Port**
- **API Key**
- **Protocol**
<div style={{textAlign: 'center'}}>
<img className="screenshot-full" src="/img/datasource-reference/typesense/connect.png" alt="typesense connect" />
<img className="screenshot-full" src="/img/datasource-reference/typesense/connect-v2.png" alt="typesense connect" />
</div>
<div style={{paddingTop:'24px'}}>
## Querying TypeSense
Click on `+` button of the query manager at the bottom panel of the editor and select the TypeSense added in the previous step as the data source.
Select the operation that you want to perform on your TypeSense cluster and click `Create` to save the query.
<div style={{textAlign: 'center'}}>
<img className="screenshot-full" src="/img/datasource-reference/typesense/query.png" alt="typesense query" />
</div>
1. Click on **+ Add** button of the query manager at the bottom panel of the editor.
2. Select the **Typesence** datasource added in previous step.
3. Select the desired operation from the dropdown and enter the required parameters.
4. Click on the **Preview** button to preview the output or Click on the **Run** button to trigger the query.
:::tip
Query results can be transformed using transformations. Read our transformations documentation to see how: **[link](/docs/tutorial/transformations)**
:::
## Supported operations
</div>
#### 1. Create a Collection
<div style={{paddingTop:'24px'}}>
## Supported Operations
### Create a Collection
With this operation you can easily create `Collections` in your TypeSense cluster. In the schema field, you'll need to define the schema for creating a new collection. Check out TypeSense docs to know more about collections **[here](https://typesense.org/docs/0.22.2/api/collections.html#create-a-collection)**
#### Required Parameter
- **Schema**
<img className="screenshot-full" src="/img/datasource-reference/typesense/collection.png" alt="typesense collection" />
<img className="screenshot-full" src="/img/datasource-reference/typesense/collection-v2.png" alt="typesense collection" style={{marginBottom:'15px'}}/>
#### Example
#### 2. Index a document
```yaml
[
{ "name": "id", "type": "string" },
{ "name": "name", "type": "string" },
{ "name": "price", "type": "float" }
]
```
### Index a Document
Use this operation to index a document to your collection. You'll need to specify the **Collection Name** where you want your document to be indexed and also provide the document data according the schema defined in the collection. Read more about Indexing a document in TypeSense **[here](
https://typesense.org/docs/0.22.2/api/documents.html#index-a-single-document)**.
#### Required Parameter
- **Collection**
- **Document**
<img className="screenshot-full" src="/img/datasource-reference/typesense/index.png" alt="typesense index" />
<img className="screenshot-full" src="/img/datasource-reference/typesense/index-v2.png" alt="typesense index" style={{marginBottom:'15px'}}/>
```yaml
{
"id": "1",
"name": "Laptop",
"price": 999.99
}
```
#### 3. Search
### Search
Use this operation to perform a search within the specified collection. Know more about the search parameters in the TypeSense doc **[here](https://typesense.org/docs/0.22.2/api/documents.html#search)**.
#### Required Parameter
- **Collection**
<img className="screenshot-full" src="/img/datasource-reference/typesense/search.png" alt="typesense search" />
<img className="screenshot-full" src="/img/datasource-reference/typesense/search-v2.png" alt="typesense search" style={{marginBottom:'15px'}}/>
```yaml
{
"filter_by": "price:<1000",
"sort_by": "price:desc",
"per_page": 10
}
```
#### 4. Get a document
### Get a Document
Use this operation to fetch an individual document in a collection by providing the `id` of the document. Read more about it **[here](https://typesense.org/docs/0.22.2/api/documents.html#retrieve-a-document)**.
#### Required Parameter
- **Collection**
- **Id**
<img className="screenshot-full" src="/img/datasource-reference/typesense/get.png" alt="typesense get"/>
<img className="screenshot-full" src="/img/datasource-reference/typesense/get-v2.png" alt="typesense get" style={{marginBottom:'15px'}}/>
#### 5. Update a document
### Update a Document
Use this operation to update an individual document by providing the **Collection Name** and **Id** of the document. You'll need to provide the updated document data in the form of specified schema. Check out the TypeSense's doc on updating a document **[here](https://typesense.org/docs/0.22.2/api/documents.html#update-a-document)**.
#### Required Parameter
- **Collection**
- **Id**
- **Document**
<img className="screenshot-full" src="/img/datasource-reference/typesense/update.png" alt="typesense update" />
<img className="screenshot-full" src="/img/datasource-reference/typesense/update-v2.png" alt="typesense update" style={{marginBottom:'15px'}}/>
```yaml
{
"name": "Gaming Laptop",
"price": 1199.99
}
```
#### 6. Delete a document
### Delete a Document
Delete a document from collection by providing the `Id` of the document. Check out the TypeSense's doc on deleting documents **[here](https://typesense.org/docs/0.22.2/api/documents.html#delete-documents)**.
#### Required Parameter
- **Collection**
- **Id**
<img className="screenshot-full" src="/img/datasource-reference/typesense/delete.png" alt="typesense delete" />
<img className="screenshot-full" src="/img/datasource-reference/typesense/delete-v2.png" alt="typesense delete" style={{marginBottom:'15px'}}/>
<br/><br/>
:::tip
Make sure that you supply JSON strings instead of JavaScript objects for any document or schema that is being passed to the server, in any of the above operations.
:::
</div>

View file

@ -2,63 +2,89 @@
id: woocommerce
title: WooCommerce
---
# WooCommerce
ToolJet can connect to WooCommerce databases to read and write data.
- [Connection](#connection)
- [Getting Started](#querying-woocommerce)
<div style={{paddingTop:'24px'}}>
## Connection
Auth
You may use [HTTP Basic Auth] by providing the REST API Consumer Key as the username and the REST API Consumer Secret as the password.
To establish a connection with the WooCommerce data source, you can either click on the **+ Add new Data source** button located on the query panel or navigate to the **[Data Sources](/docs/data-sources/overview)** page from the ToolJet dashboard and choose WooCommerce as the data source.
ToolJet requires the following to connect to WooCommerce
- **Host**
- **Consumer key**
- **Consumer secret**
![ToolJet - Data Source - Woocommerce](/img/datasource-reference/woocommerce/woocomerce-auth.png)
<img className="screenshot-full" src="/img/datasource-reference/woocommerce/woocomerce-auth-v2.png" alt="ToolJet - Data Source - Woocommerce" />
:::info
NOTE: For generating keys visit admin dashboard of woocommerce , more info: https://woocommerce.github.io/woocommerce-rest-api-docs/?javascript#authentication
:::
## Querying Woocommerce
</div>
**Operations**
<div style={{paddingTop:'24px'}}>
**Customer**
## Querying WooCommerce
- list customer
- update customer
- delete customer
- batch update customer
- create customer
- retrieve customer
1. Click on **+ Add** button of the query manager at the bottom panel of the editor.
2. Select the **WooCommerce** datasource added in previous step.
3. Select the desired resource from the dropdown and then select the desired operation and enter the required parameters.
4. Click on the **Preview** button to preview the output or Click on the **Run** button to trigger the query.
**PRODUCT**
:::tip
Query results can be transformed using transformations. Read our transformations documentation to see how: **[link](/docs/tutorial/transformations)**
:::
- list product
- update product
- delete product
- batch update product
- create product
- retrieve product
</div>
**ORDER**
<div style={{paddingTop:'24px'}}>
- list order
- update order
- delete order
- batch update order
- create order
- retrieve order
## Resource
**Coupon**
### Customer
- list coupon
- create coupon
#### Supported Operations
- **list customer**
- **update customer**
- **delete customer**
- **batch update customer**
- **create customer**
- **retrieve customer**
### Product
#### Supported Operations
- **list product**
- **update product**
- **delete product**
- **batch update product**
- **create product**
- **retrieve product**
### Order
#### Supported Operations
- **list order**
- **update order**
- **delete order**
- **batch update order**
- **create order**
- **retrieve order**
### Coupon
#### Supported Operations
- **list coupon**
- **create coupon**
:::info
NOTE: For more info visit https://woocommerce.github.io/woocommerce-rest-api-docs/?javascript.
:::
:::
</div>

View file

@ -3,94 +3,114 @@ id: zendesk
title: Zendesk
---
# Zendesk
ToolJet can connect to Zendesk APIs to read and write data using OAuth 2.0, which helps us to limit an application's access to a user's account.
- [Connection](#connection)
- [Querying Zendesk](#querying-zendesk)
<div style={{paddingTop:'24px'}}>
## Connection
To establish a connection with the Zendesk data source, you can either click on the **+ Add new Data source** button located on the query panel or navigate to the **[Data Sources](/docs/data-sources/overview)** page from the ToolJet dashboard and choose Zendesk as the data source.
ToolJet connects to your Zendesk app using :
- **Zendesk Sub-domain**
- **Client ID**
- **Client Secret**
## Authorization Scopes
### Authorization Scopes
You can create a Zendesk data source with one of either of the two permission scopes :
1. **Read Only**
2. **Read and Write**
- **Read Only**
- **Read and Write**
:::info
You must first be a verified user to make Zendesk API requests. This is configured in the Admin Center interface in **Apps and integrations > APIs > Zendesk APIs.** For more information, see Security and Authentication in the [Zendesk Support API reference](https://developer.zendesk.com/api-reference/ticketing/introduction/#security-and-authentication) or [check out Zendesk's docs](https://support.zendesk.com/hc/en-us/articles/4408845965210).
:::
To connect Zendesk datasource to your ToolJet application, go to the data source manager on the left-sidebar and click on the `+` button. Select Zendesk from the list of available datasources, provide the credentials and click **Connect to Zendesk** and authenticate via OAuth. And click **Save** to save the datasource.
</div>
<div style={{textAlign: 'center'}}>
<div style={{paddingTop:'24px'}}>
![ToolJet - Data source - Zendesk](/img/datasource-reference/zendesk/zendesk-v2.gif)
## Querying Zendesk
1. Click on **+ Add** button of the query manager at the bottom panel of the editor.
2. Select the **Zendesk** datasource added in previous step.
3. Select the desired operation and enter the required parameters.
4. Click on the **Preview** button to preview the output or Click on the **Run** button to trigger the query.
<img className="screenshot-full" src="/img/datasource-reference/zendesk/zendesk-v2.gif" alt="ToolJet - Data source - Zendesk" />
</div>
## Querying Zendesk
1. **[List Tickets](/docs/data-sources/zendesk#list-tickets)**
2. **[List requested Tickets](/docs/data-sources/zendesk#list-requested-tickets)**
3. **[Show a Ticket](/docs/data-sources/zendesk#show-tickets)**
4. **[Update a Ticket](/docs/data-sources/zendesk#update-tickets)**
5. **[List Users](/docs/data-sources/zendesk#list-users)**
6. **[Get Profile](/docs/data-sources/zendesk#get-profile)**
7. **[Search query](/docs/data-sources/zendesk#search-query)**
<div style={{paddingTop:'24px'}}>
## Supported Operations
- **[List Tickets](#list-tickets)**
- **[List requested Tickets](#list-requested-tickets)**
- **[Show a Ticket](#show-tickets)**
- **[Update a Ticket](#update-tickets)**
- **[List Users](#list-users)**
- **[Get User](#get-user)**
- **[Search](#search)**
### List Tickets
Lists all the tickets in your Zendesk account.
### List requested Tickets
<img className="screenshot-full" src="/img/datasource-reference/zendesk/list-tickets.png" alt="ToolJet - Data source - Zendesk" />
### List Requested Tickets
Lists all the tickets requested by the user.
| Fields | description |
| ----------- | ----------- |
| User ID | The id of the user |
#### Required Parameter
- **User ID**
<img className="screenshot-full" src="/img/datasource-reference/zendesk/list-requested-tickets.png" alt="ToolJet - Data source - Zendesk" />
### Show Tickets
Gets a ticket's properties with the given ID, though not the ticket comments.
| Fields | description |
| ----------- | ----------- |
| Ticket ID | The id of the ticket |
#### Required Parameter
- **Ticket ID**
<img className="screenshot-full" src="/img/datasource-reference/zendesk/show.png" alt="ToolJet - Data source - Zendesk" />
### Update Tickets
Updates a ticket's properties with the given ID.
| Fields | description |
| ----------- | ----------- |
| Ticket ID | The id of the ticket |
| Body | The properties and values to update. Example: `{{({ "ticket": {"status": "solved"} })}}` |
#### Required Parameter
- **Ticket ID**
- **Body**
<img className="screenshot-full" src="/img/datasource-reference/zendesk/update.png" alt="ToolJet - Data source - Zendesk" />
### List Users
Lists all the users in your Zendesk account.
### Get Profile
<img className="screenshot-full" src="/img/datasource-reference/zendesk/list-users.png" alt="ToolJet - Data source - Zendesk" />
### Get User
Gets a user's profile with the given ID.
| Fields | description |
| ----------- | ----------- |
| User ID | The id of the user |
#### Required Parameter
- **User ID**
<img className="screenshot-full" src="/img/datasource-reference/zendesk/get.png" alt="ToolJet - Data source - Zendesk" />
### Search
### Search Query
The Search Query uses Zendesk's Search API to return tickets, users, and organizations with defined filters.
#### Required Parameter
- **Query**
Common filters include:
- `type:ticket`
- `type:user`
- `type:organization`
- `type:ticket organization:12345 status:open`
| Fields | description |
| ----------- | ----------- |
| Query | The search query |
<img className="screenshot-full" src="/img/datasource-reference/zendesk/search.png" alt="ToolJet - Data source - Zendesk" />
</div>

View file

@ -82,6 +82,7 @@ To remove a plugin, follow these steps:
- **[OpenAI](/docs/marketplace/plugins/marketplace-plugin-openai)**
- **[Plivo](/docs/marketplace/plugins/marketplace-plugin-plivo)**
- **[Pocketbase](/docs/marketplace/plugins/marketplace-plugin-pocketbase)**
- **[Portkey](/docs/marketplace/plugins/marketplace-plugin-portkey)**
- **[PrestoDB](/docs/marketplace/plugins/marketplace-plugin-prestodb)**
- **[Salesforce](/docs/marketplace/plugins/marketplace-plugin-salesforce)**
- **[Supabase](/docs/marketplace/plugins/marketplace-plugin-supabase)**

View file

@ -0,0 +1,232 @@
---
id: marketplace-plugin-portkey
title: Portkey
---
ToolJet can integrate with Portkey to access AI services such as text completion, chat completion, prompt completion, and embedding creation. This integration enables ToolJet to leverage Portkey's LMOps platform to develop, launch, maintain, and iterate on generative AI features.
<div style={{textAlign: 'center', paddingBottom: '24px'}}>
<img className="screenshot-full" src="/img/marketplace/plugins/portkey/overview.png" alt="Portkey Dashboard Overview" />
</div>
:::note
Before following this guide, it is assumed that you have already completed the process of **[Using Marketplace plugins](/docs/marketplace/marketplace-overview#using-marketplace-plugins)**.
:::
## Connection
To connect to Portkey, the following credentials are required:
- **API Key**: Your Portkey API Key. Refer to the **[Portkey API Authentication Documentation](https://docs.portkey.ai/docs/api-reference/authentication#obtaining-your-api-key)** for instructions on obtaining your API Key.
- **Default Virtual Key** (Optional): Your default Portkey Virtual Key. Visit the **[Portkey Virtual Keys Documentation](https://docs.portkey.ai/docs/product/ai-gateway-streamline-llm-integrations/virtual-keys#creating-virtual-keys)** to learn how to create and retrieve your Virtual Key.
- **Config** (Optional): Your default Portkey configuration.
- **Gateway URL** (Optional): Your default Portkey Gateway URL. See the **[Portkey API Authentication Documentation](https://docs.portkey.ai/docs/api-reference/authentication#obtaining-your-api-key)** for details on how to obtain your Gateway URL.
<div style={{textAlign: 'center'}}>
<img className="screenshot-full" src="/img/marketplace/plugins/portkey/configuration.png" alt="Configuring Portkey in ToolJet" />
</div>
## Supported Operations
Portkey in ToolJet supports the following operations:
- **[Completion](#completion)**
- **[Chat](#chat)**
- **[Prompt Completion](#prompt-completion)**
- **[Create Embedding](#create-embedding)**
### Completion
This operation generates text completions based on a given prompt.
#### Parameters:
- **Prompt**: The input text to generate completions for.
- **Model**: The AI model to use.
- **Max Tokens**: Maximum number of tokens to generate.
- **Temperature**: Controls randomness.
- **Stop Sequences**: Sequences where the API will stop generating further tokens.
- **Metadata**: Additional metadata for the request.
- **Other Parameters**: Any other parameters to include in the request.
<div style={{textAlign: 'center'}}>
<img className="screenshot-full" src="/img/marketplace/plugins/portkey/completion.png" alt="Completion Operation for Portkey" />
</div>
<details>
<summary>**Response Example**</summary>
```json
{
"id": "cmpl-9vNUfM8OP0SwSqXcnPwkqzR7ep8Sy",
"object": "text_completion",
"created": 1723462033,
"model": "gpt-3.5-turbo-instruct",
"choices": [
{
"text": "nn"Experience the perfect brew at Bean There."",
"index": 0,
"logprobs": null,
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 13,
"completion_tokens": 10,
"total_tokens": 23
}
}
```
</details>
### Chat
This operation generates chat completions based on a series of messages.
#### Parameters:
- **Messages**: An array of message objects representing the conversation.
- **Model**: The AI model to use.
- **Max Tokens**: Maximum number of tokens to generate.
- **Temperature**: Controls randomness.
- **Stop Sequence**: Sequences where the API will stop generating further tokens.
- **Metadata**: Additional metadata for the request.
- **Other Parameters**: Any other parameters to include in the request.
<div style={{textAlign: 'center'}}>
<img className="screenshot-full" src="/img/marketplace/plugins/portkey/chat.png" alt="Chat Operation for Portkey" />
</div>
<details>
<summary>**Response Example**</summary>
```json
{
"id": "chatcmpl-9vNIlfllXOPEmroKFajK2nlJHzhXA",
"object": "chat.completion",
"created": 1723461295,
"model": "gpt-3.5-turbo-0125",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "The capital of France is Paris.",
"refusal": null
},
"logprobs": null,
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 24,
"completion_tokens": 7,
"total_tokens": 31
},
"system_fingerprint": null
}
```
</details>
### Prompt Completion
This operation generates completions based on a pre-defined prompt.
#### Parameters:
- **Prompt ID**: The ID of the pre-defined prompt to use.
- **Variables**: Variables to be used in the prompt.
- **Parameters**: Additional parameters for the prompt completion.
- **Metadata**: Additional metadata for the request.
<div style={{textAlign: 'center'}}>
<img className="screenshot-full" src="/img/marketplace/plugins/portkey/prompt-completion.png" alt="Prompt Completion Operation for Portkey" />
</div>
<details>
<summary>**Response Example**</summary>
```json
{
"id": "chatcmpl-9w6D8jZciWVf1DzkgqNZK14KUvA4d",
"object": "chat.completion",
"created": 1723633926,
"model": "gpt-4o-mini-2024-07-18",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "The Industrial Revolution, starting in the late 18th century, transformed production from hand methods to machine-based processes, introducing new manufacturing techniques, steam power, and machine tools. It marked a shift from bio-fuels to coal, with the textile industry leading the way. This period resulted in significant population growth, increased average income, and improved living standards.",
"refusal": null
},
"logprobs": null,
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 145,
"completion_tokens": 71,
"total_tokens": 216
},
"system_fingerprint": "fp_48196bc67a"
}
```
</details>
### Create Embedding
This operation creates embeddings for given input text.
#### Parameters:
- **Input**: The input text to create embeddings for.
- **Model**: The AI model to use for creating embeddings.
- **Metadata**: Additional metadata for the request.
<div style={{textAlign: 'center'}}>
<img className="screenshot-full" src="/img/marketplace/plugins/portkey/embedding.png" alt="Create Embedding Operation for Portkey" />
</div>
<details>
<summary>**Response Example**</summary>
```json
{
"object": "list",
"data": [
{
"object": "embedding",
"index": 0,
"embedding": [
-0.02083237,
-0.016892163,
-0.0045676464,
-0.05084554,
-0.025968939,
0.029597048,
0.029987168,
0.02907689,
0.0105982395,
-0.024356445,
-0.00935636,
0.0066352785,
0.034018397,
-0.042002838,
0.03856979,
-0.014681488,
...,
0.024707552
]
}
],
"model": "text-embedding-3-small",
"usage": {
"prompt_tokens": 9,
"total_tokens": 9
}
}
```
</details>
For all operations, you can optionally specify:
- **Config**: Configuration options for the request.
- **Virtual Key**: A specific virtual key to use for the request, overriding the default.
---

View file

@ -15,6 +15,8 @@ Please find the latest LTS version here: <br/>
| Version | Release Date | Docker Pull Command |
|---------|--------------|----------------------|
| Latest EE-LTS | N/A | `docker pull tooljet/tooljet:EE-LTS-latest` |
| [EE-LTS-2.50.9.41](https://hub.docker.com/layers/tooljet/tooljet/EE-LTS-2.50.9.41/images/sha256-d36444747af6f81d4456ca4d1f7dcf92c3e77e13e23ca9407c22de1c62451bd7?context=explore) | September 24 , 2024 | `docker pull tooljet/tooljet:EE-LTS-2.50.9.41` |
| [EE-LTS-2.50.9.40](https://hub.docker.com/layers/tooljet/tooljet/EE-LTS-2.50.9.40/images/sha256-26338b926568dc514c26988f6cd01f84bb3edf950fac08982365fabb95900f78?context=explore) | September 18 , 2024 | `docker pull tooljet/tooljet:EE-LTS-2.50.9.40` |
| [EE-LTS-2.50.9.39](https://hub.docker.com/layers/tooljet/tooljet/EE-LTS-2.50.9.39/images/sha256-6f1b7a00432e0e29a05adb375d3ddd9da877d6eb53d489be14ca0061953bbb57?context=explore) | September 12 , 2024 | `docker pull tooljet/tooljet:EE-LTS-2.50.9.39` |
| [EE-LTS-2.50.9.38](https://hub.docker.com/layers/tooljet/tooljet/EE-LTS-2.50.9.38/images/sha256-1974afb5f8483f4bfb7bf7575d7d8b4f0f7747dd7c88139cbf559c3ce8b1fdbd?context=explore) | September 12 , 2024 | `docker pull tooljet/tooljet:EE-LTS-2.50.9.38` |
| [EE-LTS-2.50.9.37](https://hub.docker.com/layers/tooljet/tooljet/EE-LTS-2.50.9.37/images/sha256-b1a13a5424bf14af77bb455f39e07d2a774303bcf4286aa7bd6d0a78c1a58e59?context=explore) | September 11 , 2024 | `docker pull tooljet/tooljet:EE-LTS-2.50.9.37` |
@ -29,8 +31,6 @@ Please find the latest LTS version here: <br/>
| [EE-LTS-2.50.9.28](https://hub.docker.com/layers/tooljet/tooljet/EE-LTS-2.50.9.28/images/sha256-f33982c51a59b126aea9da9eef2cace0cd074411583ea896edc3f6db5b578a6b?context=explore) | August 19, 2024 | `docker pull tooljet/tooljet:EE-LTS-2.50.9.28` |
| [EE-LTS-2.50.9.27](https://hub.docker.com/layers/tooljet/tooljet/EE-LTS-2.50.9.27/images/sha256-ae4810ddd12b2e397a07085e2ea62e98c4ea16c139d2673e4ab890d19b40f868?context=explore) | August 13, 2024 | `docker pull tooljet/tooljet:EE-LTS-2.50.9.27` |
| [EE-LTS-2.50.9.26](https://hub.docker.com/layers/tooljet/tooljet/EE-LTS-2.50.9.26/images/sha256-8e17e23f2d61b463aaf0f87e5e90fa4580faf3fa6e790afcff64ef399454f85f?context=explore) | August 12, 2024 | `docker pull tooljet/tooljet:EE-LTS-2.50.9.26` |
| [EE-LTS-2.50.9.25](https://hub.docker.com/layers/tooljet/tooljet/EE-LTS-2.50.9.25/images/sha256-fdf2858e364c238abd49418321a34676449383733ca3c6fb79ae4714e113a064?context=explore) | August 2, 2024 | `docker pull tooljet/tooljet:EE-LTS-2.50.9.25` |
| [EE-LTS-2.50.9.24](https://hub.docker.com/layers/tooljet/tooljet/EE-LTS-2.50.9.24/images/sha256-a51522503c4b31eb5cd27bd105fe8693f371f17fcf6bf9c86c3fff3d6d9faf4f?context=explore) | August 1, 2024 | `docker pull tooljet/tooljet:EE-LTS-2.50.9.24` |
:::info
Users are encouraged to upgrade to the latest LTS version to ensure they benefit from the latest improvements and maintain a secure and efficient environment.

View file

@ -3,18 +3,43 @@ id: airtable
title: Airtable
---
ToolJet can connect to your **Airtable** account to read and write data. **Personal Access Token** is required to connect to the Airtable data source on ToolJet. You can generate the Personal Access Token by visiting **[Developer Hub from your Airtable profile](https://support.airtable.com/docs/creating-and-using-api-keys-and-access-tokens#understanding-personal-access-token-basic-actions)**.
ToolJet can connect to your **Airtable** account to read and write data.
<div style={{paddingTop:'24px'}}>
## Connection
To establish a connection with the **Airtable** data source, you can either click on the **+ Add new Data source** button located on the query panel or navigate to the **[Data Sources](/docs/data-sources/overview/)** page from the ToolJet dashboard.
ToolJet requires the following to connect to your Airtable:
- **Personal Access Token**
You can generate the Personal Access Token by visiting **[Developer Hub from your Airtable profile](https://support.airtable.com/docs/creating-and-using-api-keys-and-access-tokens#understanding-personal-access-token-basic-actions)**.
<div style={{textAlign: 'center'}}>
<img style={{ border:'0', marginBottom:'15px', borderRadius:'5px', boxShadow: '0px 1px 3px rgba(0, 0, 0, 0.2)' }} className="screenshot-full" src="/img/datasource-reference/airtable/airtableconnect-v2.gif" alt="Airtable Data Source Connection" />
<img style={{ border:'0', borderRadius:'5px', boxShadow: '0px 1px 3px rgba(0, 0, 0, 0.2)' }} className="screenshot-full" src="/img/datasource-reference/airtable/airtableconnect-v2.gif" alt="Airtable Data Source Connection" />
</div>
<br/>
</div>
:::info
Airtable API has a rate limit, and at the time of writing this documentation, the limit is five(5) requests per second per base. You can read more about rate limits here **[Airtable API](https://airtable.com/api)**.
:::
<div style={{paddingTop:'24px'}}>
## Querying Airtable
1. Click on **+ Add** button of the query manager at the bottom panel of the editor.
2. Select the **Airtable** datasource added in previous step.
3. Select the desired operation from the dropdown and enter the required parameters.
4. Click on the **Preview** button to preview the output or Click on the **Run** button to trigger the query.
<img className="screenshot-full" src="/img/datasource-reference/airtable/operations.png" alt="Airtable Data Source Operations" />
</div>
<div style={{paddingTop:'24px'}}>
## Supported Operations
@ -27,104 +52,100 @@ Airtable API has a rate limit, and at the time of writing this documentation, th
</div>
<div style={{paddingTop:'24px'}}>
### List Records
### List records
This operation retrieves a list of records from the specified table.
This operation returns a list of records from the specified table.
#### Required Parameters
#### Required parameters:
- **Base ID**
- **Table name**
- **Base ID:** To find the Base ID, first visit **[Airtable API](https://airtable.com/api)**. Then select the base you want to connect to. The Base ID will be mentioned in the API documentation. Example Base ID: `appDT3UCPffPiSmFd`
- **Table name:** The name of the table from which you want to fetch the records.
#### Optional Parameters
#### Optional parameters:
- **Page size**
- **Offset**
- **Filter by formula**
- **Fields**
- **Page size:** The number of records returned in each request. Default is 100 records.
- **Offset:** The offset value is used to fetch the next set of records. The offset value is returned in the response of the previous request.
- **Filter by formula:** This parameter will only return records that satisfy the formula. The formula will be evaluated for each record, and if the result is not 0, false, "", NaN, [], or #Error!, the record will be included in the result. e.g. `Name = 'John'`
- **Fields:** The fields you want to retrieve. If you don't specify the fields, all fields will be returned. e.g. `["Name", "Email", "Survey Response"]`
<img className="screenshot-full" src="/img/datasource-reference/airtable/list-records-v2.png" alt="Airtable List Records Query" />
<br/>
<div style={{textAlign: 'center'}}>
<img style={{ border:'0', marginBottom:'15px', borderRadius:'5px', boxShadow: '0px 1px 3px rgba(0, 0, 0, 0.2)' }} className="screenshot-full" src="/img/datasource-reference/airtable/list-records-v2.png" alt="Airtable List Records Query" />
</div>
Example response from Airtable:
```json
{
"records": [
{
"id": "recu9xMnUdr2n2cw8",
"fields": {
"Notes": "Meeting to discuss project details",
"Name": "John Doe"
<details>
<summary>**Response Example**</summary>
```json
{
"records": [
{
"id": "recu9xMnUdr2n2cw8",
"fields": {
"Notes": "Meeting to discuss project details",
"Name": "John Doe"
},
"createdTime": "2021-05-12T14:30:33.000Z"
},
"createdTime": "2021-05-12T14:30:33.000Z"
{
"id": "recyIdR7bVdQvmKXa",
"fields": {
"Notes": "Follow-up call regarding contract",
"Name": "Jane Smith"
},
"createdTime": "2021-05-12T14:30:33.000Z"
},
{
"id": "recAOzdIHaRpvRaGE",
"fields": {
"Notes": "Client feedback review meeting",
"Name": "Alice Johnson"
},
"createdTime": "2021-05-12T14:30:33.000Z"
}
],
"offset": "recAOzdIHaRpvRaGE"
}
```
</details>
### Retrieve Record
This operation fetches a specific record from the specified table.
#### Required Parameters
- **Base ID**
- **Table name**
- **Record ID**
<img className="screenshot-full" src="/img/datasource-reference/airtable/retrieve-record-v2.png" alt="Airtable Retrieve Record Query" />
<details>
<summary>**Response Example**</summary>
```json
{
"id": "recu9xMnUdr2n2cw8",
"fields": {
"Notes": "Discuss project timeline",
"Name": "Michael Scott"
},
{
"id": "recyIdR7bVdQvmKXa",
"fields": {
"Notes": "Follow-up call regarding contract",
"Name": "Jane Smith"
},
"createdTime": "2021-05-12T14:30:33.000Z"
},
{
"id": "recAOzdIHaRpvRaGE",
"fields": {
"Notes": "Client feedback review meeting",
"Name": "Alice Johnson"
},
"createdTime": "2021-05-12T14:30:33.000Z"
}
],
"offset": "recAOzdIHaRpvRaGE"
}
```
"createdTime": "2021-05-12T14:30:33.000Z"
}
```
</details>
</div>
### Create Record
### Retrieve record
This operation creates a new record in the specified table.
#### Required parameters:
#### Required Parameters
- **Base ID**: To find the Base ID, first visit **[Airtable API](https://airtable.com/api)**. Then select the base you want to connect to. The Base ID will be mentioned in the API documentation. Example Base ID: `appDT3UCPffPiSmFd`
- **Table name**: The name of the table from which you want to fetch the records.
- **Record ID**: The ID of the record you want to retrieve.
- **Base ID**
- **Table name**
- **Records**
<div style={{textAlign: 'center'}}>
<img style={{ border:'0', marginBottom:'15px', borderRadius:'5px', boxShadow: '0px 1px 3px rgba(0, 0, 0, 0.2)' }} className="screenshot-full" src="/img/datasource-reference/airtable/retrieve-record-v2.png" alt="Airtable Retrieve Record Query" />
</div>
<img className="screenshot-full" src="/img/datasource-reference/airtable/create-record-v2.png" alt="Airtable Create Record Query" />
Example response from Airtable:
```json
{
"id": "recu9xMnUdr2n2cw8",
"fields": {
"Notes": "Discuss project timeline",
"Name": "Michael Scott"
},
"createdTime": "2021-05-12T14:30:33.000Z"
}
```
### Create record
#### Required parameters:
- **Base ID**: To find the Base ID, first visit **[Airtable API](https://airtable.com/api)**. Then select the base you want to connect to. The Base ID will be mentioned in the API documentation. Example Base ID: `appDT3UCPffPiSmFd`
- **Table name**: The name of the table where you want to create the record.
- **Records**: The records you want to create. The records should be in the form of an array of objects. Each object should have a `fields` key, which contains the fields of the record. The field names should be the same as the field names in the Airtable table.
<br/>
<div style={{textAlign: 'center'}}>
<img style={{ border:'0', marginBottom:'15px', borderRadius:'5px', boxShadow: '0px 1px 3px rgba(0, 0, 0, 0.2)' }} className="screenshot-full" src="/img/datasource-reference/airtable/create-record-v2.png" alt="Airtable Create Record Query" />
</div>
Example creating a record:
#### Example
```json title="Records"
[{
@ -134,81 +155,82 @@ Example creating a record:
}
}]
```
Query returns the following response when the record is created successfully:
```json
{
"records": [
{
"id": "recu6jhA7tzv4K66s",
"createdTime": "2024-06-11T06:01:44.000Z",
"fields": {
"Name": "Katrina Petersons",
"Email": "katrina.petersions@example.com",
"Date": "06-11-2024",
<details>
<summary>**Response Example**</summary>
```json
{
"records": [
{
"id": "recu6jhA7tzv4K66s",
"createdTime": "2024-06-11T06:01:44.000Z",
"fields": {
"Name": "Katrina Petersons",
"Email": "katrina.petersions@example.com",
"Date": "06-11-2024",
}
}
}
]
}
```
]
}
```
</details>
### Update record
Update a specific record by providing new data.
#### Required parameters:
- **Base ID**: To find the Base ID, first visit **[Airtable API](https://airtable.com/api)**. Then select the base you want to connect to. The Base ID will be mentioned in the API documentation. Example Base ID: `appDT3UCPffPiSmFd`
- **Table name**: The name of the table where you want to update the record.
- **Record ID**: The ID of the record you want to update.
- **Body**: The fields you want to update. The fields should be in the form of an object. The field names should be the same as the field names in the Airtable table.
<br/>
<div style={{textAlign: 'center'}}>
<img style={{ border:'0', marginBottom:'15px', borderRadius:'5px', boxShadow: '0px 1px 3px rgba(0, 0, 0, 0.2)' }} className="screenshot-full" src="/img/datasource-reference/airtable/update-record-v2.png" alt="Airtable Update Record Query" />
</div>
- **Base ID**
- **Table name**
- **Record ID**
- **Body**
Example updating a record:
<img className="screenshot-full" src="/img/datasource-reference/airtable/update-record-v2.png" alt="Airtable Update Record Query" />
```json title="Body"
#### Example
```json
{
"Email": "katrina.petersions2@example.com"
}
```
Query returns the following response when the record is updated successfully:
```json
{
"records": [
{
"id": "recu6jhA7tzv4K66s",
"createdTime": "2024-06-11T07:01:44.000Z",
"fields": {
"Name": "Katrina Petersons",
"Email": "katrina.petersions2@example.com",
"Date": "06-11-2024",
<details>
<summary>**Response Example**</summary>
```json
{
"records": [
{
"id": "recu6jhA7tzv4K66s",
"createdTime": "2024-06-11T07:01:44.000Z",
"fields": {
"Name": "Katrina Petersons",
"Email": "katrina.petersions2@example.com",
"Date": "06-11-2024",
}
}
}
]
}
```
]
}
```
</details>
### Delete record
This operation removes a record from the specified table.
#### Required parameters:
- **Base ID**: To find the Base ID, first visit **[Airtable API](https://airtable.com/api)**. Then select the base you want to connect to. The Base ID will be mentioned in the API documentation. Example Base ID: `appDT3UCPffPiSmFd`
- **Table name**: The name of the table where you want to delete the record.
- **Record ID**: The ID of the record you want to delete.
<br/>
<div style={{textAlign: 'center'}}>
<img style={{ border:'0', marginBottom:'15px', borderRadius:'5px', boxShadow: '0px 1px 3px rgba(0, 0, 0, 0.2)' }} className="screenshot-full" src="/img/datasource-reference/airtable/delete-record-v2.png" alt="Airtable Delete Record Query" />
</div>
- **Base ID**
- **Table name**
- **Record ID**
Query returns the following response when the record is deleted successfully:
<img className="screenshot-full" src="/img/datasource-reference/airtable/delete-record-v2.png" alt="Airtable Delete Record Query" />
```json
{
deleted: true
id: "recIKsyZgqI4zoqS7"
}
```
<details>
<summary>**Response Example**</summary>
```json
{
deleted: true
id: "recIKsyZgqI4zoqS7"
}
```
</details>

View file

@ -7,9 +7,9 @@ ToolJet offers the capability to establish a connection with Azure Blob storage
## Connection
To establish a connection with the Azure Blob data source, you can either click on the **+ Add new Data source** button located on the query panel or navigate to the **[Data Sources](/docs/data-sources/overview)** page from the ToolJet dashboard and choose Amazon Athena as the data source.
To establish a connection with the Azure Blob data source, you can either click on the **+ Add new Data source** button located on the query panel or navigate to the **[Data Sources](/docs/data-sources/overview)** page from the ToolJet dashboard and choose Azure Blob as the data source.
ToolJet requires the following to connect to your Athena.
ToolJet requires the following to connect to your Azure Blob.
- **Connection String**
<div style={{textAlign: 'center'}}>

View file

@ -3,13 +3,13 @@ id: s3
title: Amazon S3
---
ToolJet can connect to **Amazon S3** buckets and perform various operation on them.
ToolJet can connect to **Amazon S3** buckets and perform various operations on them.
<div style={{paddingTop:'24px',}}>
<div style={{paddingTop:'24px'}}>
## Connection
To establish a connection with the **Amazon S3** data source, you can either click on the **+Add new Data source** button located on the query panel or navigate to the **[Data Sources](/docs/data-sources/overview/)** page from the ToolJet dashboard.
To establish a connection with the **Amazon S3** data source, you can either click on the **+ Add new Data source** button located on the query panel or navigate to the **[Data Sources](/docs/data-sources/overview/)** page from the ToolJet dashboard.
ToolJet supports connecting to AWS S3 using **IAM Access Keys**, **AWS Instance Credentials** or **AWS ARN Role**.
@ -19,29 +19,22 @@ If you are using **IAM Access Keys**, you will need to provide the following det
- **Access key**
- **Secret key**
It is recommended to create a new IAM user for the database so that you can control the access levels of ToolJet.
**Note:** It is recommended to create a new IAM user for the database so that you can control the access levels of ToolJet.
<div style={{textAlign: 'left'}}>
<img style={{ border:'0', marginBottom:'15px' }} className="screenshot-full" src="/img/datasource-reference/aws-s3/iamnew.png" alt="aws s3 modal" />
</div>
<img className="screenshot-full" src="/img/datasource-reference/aws-s3/iamnew.png" alt="aws s3 modal" />
To connect to AWS S3 using **AWS Instance Credentials**, select the **Use AWS Instance Credentials**. 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.
<div style={{textAlign: 'left'}}>
<img style={{ border:'0', marginBottom:'15px' }} className="screenshot-full" src="/img/datasource-reference/aws-s3/instanew.png" alt="aws s3 modal" />
</div>
<img className="screenshot-full" src="/img/datasource-reference/aws-s3/instanew.png" alt="aws s3 modal" />
If you are using **AWS ARN Role**, you will need to provide the following details:
- **Region**
- **Role ARN**
<div style={{textAlign: 'left'}}>
<img style={{ border:'0', marginBottom:'15px', width:'100%' }} className="screenshot-full" src="/img/datasource-reference/aws-s3/arnnew.png" alt="aws s3 modal" />
</div>
Click on **Test Connection** button to verify if the credentials are correct and that the database is accessible to ToolJet server. Click on **Save** button to save the data source.
<img className="screenshot-full" src="/img/datasource-reference/aws-s3/arnnew.png" alt="aws s3 modal" />
:::tip
You can now connect to **[different S3 Hosts using custom endpoints](/docs/how-to/s3-custom-endpoints)**.
@ -53,16 +46,13 @@ You can now connect to **[different S3 Hosts using custom endpoints](/docs/how-t
## Querying AWS S3
Click on **+Add** button of the **[query manager](/docs/app-builder/query-panel/#query-manager)** and select the data source added in the previous step as the data source. Select the operation that you want to perform, fill in the required parameters and click on **Run** button to run the query.
<div style={{textAlign: 'left'}}>
1. Click on **+ Add** button of the query manager at the bottom panel of the editor.
2. Select the **Amazon AWS S3** datasource added in previous step.
3. Select the desired operation from the dropdown and enter the required parameters.
4. Click on the **Preview** button to preview the output or Click on the **Run** button to trigger the query.
<img className="screenshot-full" src="/img/datasource-reference/aws-s3/operations3.png" alt="aws s3 query" />
</div>
<br/>
:::info
Query results can be transformed using transformations. Read our [transformations documentation](/docs/tutorial/transformations).
:::
@ -71,156 +61,121 @@ Query results can be transformed using transformations. Read our [transformation
<div style={{paddingTop:'24px'}}>
## Query operations
## Supported Operations
You can create query for AWS S3 data source to perform several actions such as:
1. **[Create a new bucket](#create-a-new-bucket)**
2. **[Read object](#read-object)**
3. **[Upload object](#upload-object)**
4. **[Remove object](#remove-object)**
5. **[List buckets](#list-buckets)**
6. **[List objects in a bucket](#list-objects-in-a-bucket)**
7. **[Signed url for download](#signed-url-for-download)**
8. **[Signed url for upload](#signed-url-for-upload)**
- **[Create a new bucket](#create-a-new-bucket)**
- **[Read object](#read-object)**
- **[Upload object](#upload-object)**
- **[Remove object](#remove-object)**
- **[List buckets](#list-buckets)**
- **[List objects in a bucket](#list-objects-in-a-bucket)**
- **[Signed URL for download](#signed-url-for-download)**
- **[Signed URL for upload](#signed-url-for-upload)**
</div>
### Create a new bucket
### Create a New Bucket
You can create a new bucket in your S3 by using this operation.
#### Required parameters:
#### Required Parameters
- **Bucket Name**: Specify the bucket name.
- **Bucket Name**
<div style={{textAlign: 'left'}}>
<img style={{marginBottom:'15px'}} className="screenshot-full" src="/img/datasource-reference/aws-s3/createbucket.png" alt="Create a new bucket - S3 operation" />
<img className="screenshot-full" src="/img/datasource-reference/aws-s3/createbucket.png" alt="Create a new bucket - S3 operation" />
</div>
### Read object
### Read Object
You can read an object in a bucket by using this operation.
#### Required parameters:
#### Required Parameters
- **Bucket**: Specify the bucket name.
- **Key**: Key of the object/file.
- **Bucket**
- **Key**
<img style={{marginBottom:'15px'}} className="screenshot-full" src="/img/datasource-reference/aws-s3/readv2-v3.png" alt="aws s3 read object" />
<div style={{textAlign: 'left'}}>
<img style={{ border:'0'}} className="screenshot-full" src="/img/datasource-reference/aws-s3/readv2-v3.png" alt="aws s3 read object" />
</div>
### Upload object
### Upload Object
You can use this operation to upload objects(files) to your S3 bucket.
#### Required parameters:
#### Required Parameters
- **Bucket**: Specify the bucket name.
- **Key**: Key of the object/file.
- **Content Type**: Specify file type such as text, image etc.
- **Upload data**: File/object that is to be uploaded.
- **Bucket**
- **Key**
- **Content Type**
- **Upload data**
<img style={{marginBottom:'15px'}} className="screenshot-full" src="/img/datasource-reference/aws-s3/uplobjv2-v3.png" alt="aws s3 upload"/>
<div style={{textAlign: 'left'}}>
<img style={{ border:'0'}} className="screenshot-full" src="/img/datasource-reference/aws-s3/uplobjv2-v3.png" alt="aws s3 upload"/>
</div>
### Remove object
### Remove Object
You can use this operation to remove an object from your S3 bucket.
#### Required parameters:
#### Required Parameters
- **Bucket**: Specify the bucket name.
- **Key**: Key of the object/file.
- **Bucket**
- **Key**
<div style={{textAlign: 'left'}}>
<img style={{marginBottom:'15px'}} className="screenshot-full" src="/img/datasource-reference/aws-s3/removeobject.png" alt="Create a new bucket - S3 operation" />
<img style={{ border:'0'}} className="screenshot-full" src="/img/datasource-reference/aws-s3/removeobject.png" alt="Create a new bucket - S3 operation" />
</div>
### List buckets
### List Buckets
This operation will list all the buckets in your S3. This does not require any parameter.
<img style={{marginBottom:'15px'}} className="screenshot-full" src="/img/datasource-reference/aws-s3/listbucketsv2-v3.png" alt="aws s3 bucket" />
<div style={{textAlign: 'left'}}>
<img style={{ border:'0'}} className="screenshot-full" src="/img/datasource-reference/aws-s3/listbucketsv2-v3.png" alt="aws s3 bucket" />
</div>
### List objects in a bucket
### List Objects in a Bucket
This operation will fetch the list of all the files in your bucket. It requires the following parameters:
#### Required parameters:
#### Required Parameters
- **Bucket**: Specify the bucket name.
- **Bucket**
#### Optional parameters:
#### Optional Parameters
- **Prefix**: To limit the response to keys that begin with the specified prefix.
- **Max keys**: The maximum number of keys returned in the response body. Default value is 1000.
- **Offset**: The key to start with when listing objects in a bucket.
- **Next Continuation Token**: `Next Continuation Token` indicates Amazon S3 that the list is being continued on this bucket with a token. ContinuationToken is obfuscated and is not a real key.
- **Prefix**
- **Max keys**
- **Offset**
- **Next Continuation Token**
:::info
**Next Continuation Token**
For listing a bucket for objects that begin with a specific character or a prefix, then use the `Offset` parameter. For example, if you want to list all the objects that begin with `a`, then set the `Offset` parameter to `a`. Similarly, if you want to list all the objects that begin with `ab`, then set the `Offset` parameter to `ab`.
The `Next Continuation Token` is used to list the next set of objects in a bucket. It is returned by the API when the response is truncated. The results will contain `Next Continuation Token` if there are more keys in the bucket that satisfy the list query. To get the next set of objects, set the `Next Continuation Token` parameter and run the query again.
**Next Continuation Token** <br/>
For listing a bucket for objects that begin with a specific character or a prefix, then use the **Offset** parameter. For example, if you want to list all the objects that begin with **a**, then set the **Offset** parameter to **a**. Similarly, if you want to list all the objects that begin with **ab**, then set the **Offset** parameter to **ab**. <br/>
The **Next Continuation Token** is used to list the next set of objects in a bucket. It is returned by the API when the response is truncated. The results will contain **Next Continuation Token** if there are more keys in the bucket that satisfy the list query. To get the next set of objects, set the **Next Continuation Token** parameter and run the query again. <br/>
The results will continue from where the last listing finished.
:::
<img style={{marginBottom:'15px'}} className="screenshot-full" src="/img/datasource-reference/aws-s3/listobjectsv2-v3.png" alt="aws s3 list object" />
<div style={{textAlign: 'left'}}>
<img style={{ border:'0'}} className="screenshot-full" src="/img/datasource-reference/aws-s3/listobjectsv2-v3.png" alt="aws s3 list object" />
</div>
### Signed URL for download
### Signed URL for Download
The object owner can optionally share objects with others by creating a presigned URL, using their own security credentials, to grant time-limited permission to download the objects.
#### Required parameters:
#### Required Parameters
- **Bucket**: Name of the bucket for uploading the file.
- **Key**: The object key.
- **Expires in**: The expiration time of URL.
- **Bucket**
- **Key**
- **Expires in**
<img style={{marginBottom:'15px'}} className="screenshot-full" src="/img/datasource-reference/aws-s3/urldownv2-v3.png" alt="aws s3 signed download" />
<div style={{textAlign: 'left'}}>
<img style={{ border:'0'}} className="screenshot-full" src="/img/datasource-reference/aws-s3/urldownv2-v3.png" alt="aws s3 signed download" />
</div>
### Signed URL for upload
### Signed URL for Upload
The presigned URLs are useful if you want your user/customer to be able to upload a specific object to your bucket, but you don't require them to have AWS security credentials or permissions.
#### Required parameters:
- **Bucket**: Name of the bucket for uploading the file.
- **Key**: The object key.
- **Expires in**: The expiration time of URL.
- **Content Type**: The content type such as text, image etc.
<div style={{textAlign: 'left'}}>
<img style={{ border:'0', marginBottom:'15px' }} className="screenshot-full" src="/img/datasource-reference/aws-s3/urluplv2-v3.png" alt="aws s3 signed upload" />
</div>
#### Required Parameters
- **Bucket**
- **Key**
- **Expires in**
- **Content Type**
<img className="screenshot-full" src="/img/datasource-reference/aws-s3/urluplv2-v3.png" alt="aws s3 signed upload" />
:::info
We built an app to view and upload files to AWS S3 buckets. Check out the complete tutorial **[here](https://blog.tooljet.com/build-an-aws-s3-broswer-with-tooljet/)**.
:::
:::
</div>

View file

@ -3,52 +3,55 @@ id: twilio
title: Twilio
---
# Twilio
ToolJet can connect to Twilio account to send sms.
ToolJet can connect to your Twilio account to send sms.
<div style={{textAlign: 'center'}}>
![ToolJet - Data source - Twilio](/img/datasource-reference/twilio/connect.png)
</div>
<div style={{paddingTop:'24px'}}>
## Connection
- To add the Twilio datasource, click the **Datasource manager** icon on the left-sidebar of the app builder and click on the `Add datasource` button, then select **Twilio** from the modal that pops up.
- In the next dialog, you'll be asked to enter the Auth Token, Account SID, and Messaging Service SID.
- You can get the **Auth Token and Account SID** on the dashboard of your Twilio account.
To establish a connection with the Twilio data source, you can either click on the **+ Add new Data source** button located on the query panel or navigate to the **[Data Sources](/docs/data-sources/overview)** page from the ToolJet dashboard and choose Twilio as the data source.
<div style={{textAlign: 'center'}}>
ToolJet requires the following to connect to Twilio:
- **Auth Token**
- **Account SID**
- **Messaging Service SID**
![ToolJet - Data source - Twilio](/img/datasource-reference/twilio/auth.png)
You can get the **Auth Token and Account SID** on the dashboard of your Twilio account.
<img className="screenshot-full" src="/img/datasource-reference/twilio/auth.png" alt="ToolJet - Data source - Twilio" />
For **Messaging Service SID**, you'll need to create a messaging service first from the Services under Messaging in the left-sidebar.
<img className="screenshot-full" src="/img/datasource-reference/twilio/sid.png" alt="ToolJet - Data source - Twilio" />
<img className="screenshot-full" src="/img/datasource-reference/twilio/connect-v2.png" alt="ToolJet - Data source - Twilio" />
</div>
- For **Messaging Service SID**, you'll need to create a messaging service first from the Services under Messaging in the left-sidebar.
<div style={{paddingTop:'24px'}}>
<div style={{textAlign: 'center'}}>
## Querying Twilio
![ToolJet - Data source - Twilio](/img/datasource-reference/twilio/sid.png)
1. Click on **+ Add** button of the query manager at the bottom panel of the editor.
2. Select the **Twilio** datasource added in previous step.
3. Select **Send SMS** from the dropdown and enter the required parameters.
4. Click on the **Preview** button to preview the output or Click on the **Run** button to trigger the query.
</div>
- After entering the three credentials, you can **Save** the datasource.
<div style={{paddingTop:'24px'}}>
## Supported operations
1. **Send message**
### Send message
This operation will send the specified message to specified mobile number.
<div style={{textAlign: 'center'}}>
#### Required Parameters
- **To Number**
- **Body**
![ToolJet - Data source - Twilio](/img/datasource-reference/twilio/sms.png)
<img className="screenshot-full" src="/img/datasource-reference/twilio/sms-v2.png" alt="ToolJet - Data source - Twilio" />
</div>

View file

@ -3,90 +3,145 @@ id: typesense
title: TypeSense
---
# TypeSense
ToolJet can connect to your TypeSense deployment to read and write data.
## Connection
Please make sure the host/IP of the TypeSense deployment is accessible from your VPC if you have self-hosted ToolJet. If you are using ToolJet cloud, please **whitelist our IP**.
<div style={{paddingTop:'24px'}}>
ToolJet requires the following to connect to your TypeSense deployment:
## Connection
To establish a connection with the Typesense data source, you can either click on the **+ Add new Data source** button located on the query panel or navigate to the **[Data Sources](/docs/data-sources/overview)** page from the ToolJet dashboard and choose Typesense as the data source.
:::info
Please make sure the **Host/IP** of the database is accessible from your VPC if you have self-hosted ToolJet. If you are using ToolJet cloud, please **whitelist** our IP.
:::
ToolJet requires the following to connect to TypeSense deployment:
- **Host**
- **Port**
- **API Key**
- **Protocol**
<div style={{textAlign: 'center'}}>
<img className="screenshot-full" src="/img/datasource-reference/typesense/connect.png" alt="typesense connect" />
<img className="screenshot-full" src="/img/datasource-reference/typesense/connect-v2.png" alt="typesense connect" />
</div>
<div style={{paddingTop:'24px'}}>
## Querying TypeSense
Click on `+` button of the query manager at the bottom panel of the editor and select the TypeSense added in the previous step as the data source.
Select the operation that you want to perform on your TypeSense cluster and click `Create` to save the query.
<div style={{textAlign: 'center'}}>
<img className="screenshot-full" src="/img/datasource-reference/typesense/query.png" alt="typesense query" />
</div>
1. Click on **+ Add** button of the query manager at the bottom panel of the editor.
2. Select the **Typesence** datasource added in previous step.
3. Select the desired operation from the dropdown and enter the required parameters.
4. Click on the **Preview** button to preview the output or Click on the **Run** button to trigger the query.
:::tip
Query results can be transformed using transformations. Read our transformations documentation to see how: **[link](/docs/tutorial/transformations)**
:::
## Supported operations
</div>
#### 1. Create a Collection
<div style={{paddingTop:'24px'}}>
## Supported Operations
### Create a Collection
With this operation you can easily create `Collections` in your TypeSense cluster. In the schema field, you'll need to define the schema for creating a new collection. Check out TypeSense docs to know more about collections **[here](https://typesense.org/docs/0.22.2/api/collections.html#create-a-collection)**
#### Required Parameter
- **Schema**
<img className="screenshot-full" src="/img/datasource-reference/typesense/collection.png" alt="typesense collection" />
<img className="screenshot-full" src="/img/datasource-reference/typesense/collection-v2.png" alt="typesense collection" style={{marginBottom:'15px'}}/>
#### Example
#### 2. Index a document
```yaml
[
{ "name": "id", "type": "string" },
{ "name": "name", "type": "string" },
{ "name": "price", "type": "float" }
]
```
### Index a Document
Use this operation to index a document to your collection. You'll need to specify the **Collection Name** where you want your document to be indexed and also provide the document data according the schema defined in the collection. Read more about Indexing a document in TypeSense **[here](
https://typesense.org/docs/0.22.2/api/documents.html#index-a-single-document)**.
#### Required Parameter
- **Collection**
- **Document**
<img className="screenshot-full" src="/img/datasource-reference/typesense/index.png" alt="typesense index" />
<img className="screenshot-full" src="/img/datasource-reference/typesense/index-v2.png" alt="typesense index" style={{marginBottom:'15px'}}/>
```yaml
{
"id": "1",
"name": "Laptop",
"price": 999.99
}
```
#### 3. Search
### Search
Use this operation to perform a search within the specified collection. Know more about the search parameters in the TypeSense doc **[here](https://typesense.org/docs/0.22.2/api/documents.html#search)**.
#### Required Parameter
- **Collection**
<img className="screenshot-full" src="/img/datasource-reference/typesense/search.png" alt="typesense search" />
<img className="screenshot-full" src="/img/datasource-reference/typesense/search-v2.png" alt="typesense search" style={{marginBottom:'15px'}}/>
```yaml
{
"filter_by": "price:<1000",
"sort_by": "price:desc",
"per_page": 10
}
```
#### 4. Get a document
### Get a Document
Use this operation to fetch an individual document in a collection by providing the `id` of the document. Read more about it **[here](https://typesense.org/docs/0.22.2/api/documents.html#retrieve-a-document)**.
#### Required Parameter
- **Collection**
- **Id**
<img className="screenshot-full" src="/img/datasource-reference/typesense/get.png" alt="typesense get"/>
<img className="screenshot-full" src="/img/datasource-reference/typesense/get-v2.png" alt="typesense get" style={{marginBottom:'15px'}}/>
#### 5. Update a document
### Update a Document
Use this operation to update an individual document by providing the **Collection Name** and **Id** of the document. You'll need to provide the updated document data in the form of specified schema. Check out the TypeSense's doc on updating a document **[here](https://typesense.org/docs/0.22.2/api/documents.html#update-a-document)**.
#### Required Parameter
- **Collection**
- **Id**
- **Document**
<img className="screenshot-full" src="/img/datasource-reference/typesense/update.png" alt="typesense update" />
<img className="screenshot-full" src="/img/datasource-reference/typesense/update-v2.png" alt="typesense update" style={{marginBottom:'15px'}}/>
```yaml
{
"name": "Gaming Laptop",
"price": 1199.99
}
```
#### 6. Delete a document
### Delete a Document
Delete a document from collection by providing the `Id` of the document. Check out the TypeSense's doc on deleting documents **[here](https://typesense.org/docs/0.22.2/api/documents.html#delete-documents)**.
#### Required Parameter
- **Collection**
- **Id**
<img className="screenshot-full" src="/img/datasource-reference/typesense/delete.png" alt="typesense delete" />
<img className="screenshot-full" src="/img/datasource-reference/typesense/delete-v2.png" alt="typesense delete" style={{marginBottom:'15px'}}/>
<br/><br/>
:::tip
Make sure that you supply JSON strings instead of JavaScript objects for any document or schema that is being passed to the server, in any of the above operations.
:::
</div>

View file

@ -2,63 +2,89 @@
id: woocommerce
title: WooCommerce
---
# WooCommerce
ToolJet can connect to WooCommerce databases to read and write data.
- [Connection](#connection)
- [Getting Started](#querying-woocommerce)
<div style={{paddingTop:'24px'}}>
## Connection
Auth
You may use [HTTP Basic Auth] by providing the REST API Consumer Key as the username and the REST API Consumer Secret as the password.
To establish a connection with the WooCommerce data source, you can either click on the **+ Add new Data source** button located on the query panel or navigate to the **[Data Sources](/docs/data-sources/overview)** page from the ToolJet dashboard and choose WooCommerce as the data source.
ToolJet requires the following to connect to WooCommerce
- **Host**
- **Consumer key**
- **Consumer secret**
![ToolJet - Data Source - Woocommerce](/img/datasource-reference/woocommerce/woocomerce-auth.png)
<img className="screenshot-full" src="/img/datasource-reference/woocommerce/woocomerce-auth-v2.png" alt="ToolJet - Data Source - Woocommerce" />
:::info
NOTE: For generating keys visit admin dashboard of woocommerce , more info: https://woocommerce.github.io/woocommerce-rest-api-docs/?javascript#authentication
:::
## Querying Woocommerce
</div>
**Operations**
<div style={{paddingTop:'24px'}}>
**Customer**
## Querying WooCommerce
- list customer
- update customer
- delete customer
- batch update customer
- create customer
- retrieve customer
1. Click on **+ Add** button of the query manager at the bottom panel of the editor.
2. Select the **WooCommerce** datasource added in previous step.
3. Select the desired resource from the dropdown and then select the desired operation and enter the required parameters.
4. Click on the **Preview** button to preview the output or Click on the **Run** button to trigger the query.
**PRODUCT**
:::tip
Query results can be transformed using transformations. Read our transformations documentation to see how: **[link](/docs/tutorial/transformations)**
:::
- list product
- update product
- delete product
- batch update product
- create product
- retrieve product
</div>
**ORDER**
<div style={{paddingTop:'24px'}}>
- list order
- update order
- delete order
- batch update order
- create order
- retrieve order
## Resource
**Coupon**
### Customer
- list coupon
- create coupon
#### Supported Operations
- **list customer**
- **update customer**
- **delete customer**
- **batch update customer**
- **create customer**
- **retrieve customer**
### Product
#### Supported Operations
- **list product**
- **update product**
- **delete product**
- **batch update product**
- **create product**
- **retrieve product**
### Order
#### Supported Operations
- **list order**
- **update order**
- **delete order**
- **batch update order**
- **create order**
- **retrieve order**
### Coupon
#### Supported Operations
- **list coupon**
- **create coupon**
:::info
NOTE: For more info visit https://woocommerce.github.io/woocommerce-rest-api-docs/?javascript.
:::
:::
</div>

View file

@ -3,94 +3,114 @@ id: zendesk
title: Zendesk
---
# Zendesk
ToolJet can connect to Zendesk APIs to read and write data using OAuth 2.0, which helps us to limit an application's access to a user's account.
- [Connection](#connection)
- [Querying Zendesk](#querying-zendesk)
<div style={{paddingTop:'24px'}}>
## Connection
To establish a connection with the Zendesk data source, you can either click on the **+ Add new Data source** button located on the query panel or navigate to the **[Data Sources](/docs/data-sources/overview)** page from the ToolJet dashboard and choose Zendesk as the data source.
ToolJet connects to your Zendesk app using :
- **Zendesk Sub-domain**
- **Client ID**
- **Client Secret**
## Authorization Scopes
### Authorization Scopes
You can create a Zendesk data source with one of either of the two permission scopes :
1. **Read Only**
2. **Read and Write**
- **Read Only**
- **Read and Write**
:::info
You must first be a verified user to make Zendesk API requests. This is configured in the Admin Center interface in **Apps and integrations > APIs > Zendesk APIs.** For more information, see Security and Authentication in the [Zendesk Support API reference](https://developer.zendesk.com/api-reference/ticketing/introduction/#security-and-authentication) or [check out Zendesk's docs](https://support.zendesk.com/hc/en-us/articles/4408845965210).
:::
To connect Zendesk datasource to your ToolJet application, go to the data source manager on the left-sidebar and click on the `+` button. Select Zendesk from the list of available datasources, provide the credentials and click **Connect to Zendesk** and authenticate via OAuth. And click **Save** to save the datasource.
</div>
<div style={{textAlign: 'center'}}>
<div style={{paddingTop:'24px'}}>
![ToolJet - Data source - Zendesk](/img/datasource-reference/zendesk/zendesk-v2.gif)
## Querying Zendesk
1. Click on **+ Add** button of the query manager at the bottom panel of the editor.
2. Select the **Zendesk** datasource added in previous step.
3. Select the desired operation and enter the required parameters.
4. Click on the **Preview** button to preview the output or Click on the **Run** button to trigger the query.
<img className="screenshot-full" src="/img/datasource-reference/zendesk/zendesk-v2.gif" alt="ToolJet - Data source - Zendesk" />
</div>
## Querying Zendesk
1. **[List Tickets](/docs/data-sources/zendesk#list-tickets)**
2. **[List requested Tickets](/docs/data-sources/zendesk#list-requested-tickets)**
3. **[Show a Ticket](/docs/data-sources/zendesk#show-tickets)**
4. **[Update a Ticket](/docs/data-sources/zendesk#update-tickets)**
5. **[List Users](/docs/data-sources/zendesk#list-users)**
6. **[Get Profile](/docs/data-sources/zendesk#get-profile)**
7. **[Search query](/docs/data-sources/zendesk#search-query)**
<div style={{paddingTop:'24px'}}>
## Supported Operations
- **[List Tickets](#list-tickets)**
- **[List requested Tickets](#list-requested-tickets)**
- **[Show a Ticket](#show-tickets)**
- **[Update a Ticket](#update-tickets)**
- **[List Users](#list-users)**
- **[Get User](#get-user)**
- **[Search](#search)**
### List Tickets
Lists all the tickets in your Zendesk account.
### List requested Tickets
<img className="screenshot-full" src="/img/datasource-reference/zendesk/list-tickets.png" alt="ToolJet - Data source - Zendesk" />
### List Requested Tickets
Lists all the tickets requested by the user.
| Fields | description |
| ----------- | ----------- |
| User ID | The id of the user |
#### Required Parameter
- **User ID**
<img className="screenshot-full" src="/img/datasource-reference/zendesk/list-requested-tickets.png" alt="ToolJet - Data source - Zendesk" />
### Show Tickets
Gets a ticket's properties with the given ID, though not the ticket comments.
| Fields | description |
| ----------- | ----------- |
| Ticket ID | The id of the ticket |
#### Required Parameter
- **Ticket ID**
<img className="screenshot-full" src="/img/datasource-reference/zendesk/show.png" alt="ToolJet - Data source - Zendesk" />
### Update Tickets
Updates a ticket's properties with the given ID.
| Fields | description |
| ----------- | ----------- |
| Ticket ID | The id of the ticket |
| Body | The properties and values to update. Example: `{{({ "ticket": {"status": "solved"} })}}` |
#### Required Parameter
- **Ticket ID**
- **Body**
<img className="screenshot-full" src="/img/datasource-reference/zendesk/update.png" alt="ToolJet - Data source - Zendesk" />
### List Users
Lists all the users in your Zendesk account.
### Get Profile
<img className="screenshot-full" src="/img/datasource-reference/zendesk/list-users.png" alt="ToolJet - Data source - Zendesk" />
### Get User
Gets a user's profile with the given ID.
| Fields | description |
| ----------- | ----------- |
| User ID | The id of the user |
#### Required Parameter
- **User ID**
<img className="screenshot-full" src="/img/datasource-reference/zendesk/get.png" alt="ToolJet - Data source - Zendesk" />
### Search
### Search Query
The Search Query uses Zendesk's Search API to return tickets, users, and organizations with defined filters.
#### Required Parameter
- **Query**
Common filters include:
- `type:ticket`
- `type:user`
- `type:organization`
- `type:ticket organization:12345 status:open`
| Fields | description |
| ----------- | ----------- |
| Query | The search query |
<img className="screenshot-full" src="/img/datasource-reference/zendesk/search.png" alt="ToolJet - Data source - Zendesk" />
</div>

View file

@ -83,6 +83,7 @@ To remove a plugin, follow these steps:
- **[OpenAI](/docs/marketplace/plugins/marketplace-plugin-openai)**
- **[Plivo](/docs/marketplace/plugins/marketplace-plugin-plivo)**
- **[Pocketbase](/docs/marketplace/plugins/marketplace-plugin-pocketbase)**
- **[Portkey](/docs/marketplace/plugins/marketplace-plugin-portkey)**
- **[PrestoDB](/docs/marketplace/plugins/marketplace-plugin-prestodb)**
- **[Salesforce](/docs/marketplace/plugins/marketplace-plugin-salesforce)**
- **[Supabase](/docs/marketplace/plugins/marketplace-plugin-supabase)**

View file

@ -0,0 +1,232 @@
---
id: marketplace-plugin-portkey
title: Portkey
---
ToolJet can integrate with Portkey to access AI services such as text completion, chat completion, prompt completion, and embedding creation. This integration enables ToolJet to leverage Portkey's LMOps platform to develop, launch, maintain, and iterate on generative AI features.
<div style={{textAlign: 'center', paddingBottom: '24px'}}>
<img className="screenshot-full" src="/img/marketplace/plugins/portkey/overview.png" alt="Portkey Dashboard Overview" />
</div>
:::note
Before following this guide, it is assumed that you have already completed the process of **[Using Marketplace plugins](/docs/marketplace/marketplace-overview#using-marketplace-plugins)**.
:::
## Connection
To connect to Portkey, the following credentials are required:
- **API Key**: Your Portkey API Key. Refer to the **[Portkey API Authentication Documentation](https://docs.portkey.ai/docs/api-reference/authentication#obtaining-your-api-key)** for instructions on obtaining your API Key.
- **Default Virtual Key** (Optional): Your default Portkey Virtual Key. Visit the **[Portkey Virtual Keys Documentation](https://docs.portkey.ai/docs/product/ai-gateway-streamline-llm-integrations/virtual-keys#creating-virtual-keys)** to learn how to create and retrieve your Virtual Key.
- **Config** (Optional): Your default Portkey configuration.
- **Gateway URL** (Optional): Your default Portkey Gateway URL. See the **[Portkey API Authentication Documentation](https://docs.portkey.ai/docs/api-reference/authentication#obtaining-your-api-key)** for details on how to obtain your Gateway URL.
<div style={{textAlign: 'center'}}>
<img className="screenshot-full" src="/img/marketplace/plugins/portkey/configuration.png" alt="Configuring Portkey in ToolJet" />
</div>
## Supported Operations
Portkey in ToolJet supports the following operations:
- **[Completion](#completion)**
- **[Chat](#chat)**
- **[Prompt Completion](#prompt-completion)**
- **[Create Embedding](#create-embedding)**
### Completion
This operation generates text completions based on a given prompt.
#### Parameters:
- **Prompt**: The input text to generate completions for.
- **Model**: The AI model to use.
- **Max Tokens**: Maximum number of tokens to generate.
- **Temperature**: Controls randomness.
- **Stop Sequences**: Sequences where the API will stop generating further tokens.
- **Metadata**: Additional metadata for the request.
- **Other Parameters**: Any other parameters to include in the request.
<div style={{textAlign: 'center'}}>
<img className="screenshot-full" src="/img/marketplace/plugins/portkey/completion.png" alt="Completion Operation for Portkey" />
</div>
<details>
<summary>**Response Example**</summary>
```json
{
"id": "cmpl-9vNUfM8OP0SwSqXcnPwkqzR7ep8Sy",
"object": "text_completion",
"created": 1723462033,
"model": "gpt-3.5-turbo-instruct",
"choices": [
{
"text": "nn"Experience the perfect brew at Bean There."",
"index": 0,
"logprobs": null,
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 13,
"completion_tokens": 10,
"total_tokens": 23
}
}
```
</details>
### Chat
This operation generates chat completions based on a series of messages.
#### Parameters:
- **Messages**: An array of message objects representing the conversation.
- **Model**: The AI model to use.
- **Max Tokens**: Maximum number of tokens to generate.
- **Temperature**: Controls randomness.
- **Stop Sequence**: Sequences where the API will stop generating further tokens.
- **Metadata**: Additional metadata for the request.
- **Other Parameters**: Any other parameters to include in the request.
<div style={{textAlign: 'center'}}>
<img className="screenshot-full" src="/img/marketplace/plugins/portkey/chat.png" alt="Chat Operation for Portkey" />
</div>
<details>
<summary>**Response Example**</summary>
```json
{
"id": "chatcmpl-9vNIlfllXOPEmroKFajK2nlJHzhXA",
"object": "chat.completion",
"created": 1723461295,
"model": "gpt-3.5-turbo-0125",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "The capital of France is Paris.",
"refusal": null
},
"logprobs": null,
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 24,
"completion_tokens": 7,
"total_tokens": 31
},
"system_fingerprint": null
}
```
</details>
### Prompt Completion
This operation generates completions based on a pre-defined prompt.
#### Parameters:
- **Prompt ID**: The ID of the pre-defined prompt to use.
- **Variables**: Variables to be used in the prompt.
- **Parameters**: Additional parameters for the prompt completion.
- **Metadata**: Additional metadata for the request.
<div style={{textAlign: 'center'}}>
<img className="screenshot-full" src="/img/marketplace/plugins/portkey/prompt-completion.png" alt="Prompt Completion Operation for Portkey" />
</div>
<details>
<summary>**Response Example**</summary>
```json
{
"id": "chatcmpl-9w6D8jZciWVf1DzkgqNZK14KUvA4d",
"object": "chat.completion",
"created": 1723633926,
"model": "gpt-4o-mini-2024-07-18",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "The Industrial Revolution, starting in the late 18th century, transformed production from hand methods to machine-based processes, introducing new manufacturing techniques, steam power, and machine tools. It marked a shift from bio-fuels to coal, with the textile industry leading the way. This period resulted in significant population growth, increased average income, and improved living standards.",
"refusal": null
},
"logprobs": null,
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 145,
"completion_tokens": 71,
"total_tokens": 216
},
"system_fingerprint": "fp_48196bc67a"
}
```
</details>
### Create Embedding
This operation creates embeddings for given input text.
#### Parameters:
- **Input**: The input text to create embeddings for.
- **Model**: The AI model to use for creating embeddings.
- **Metadata**: Additional metadata for the request.
<div style={{textAlign: 'center'}}>
<img className="screenshot-full" src="/img/marketplace/plugins/portkey/embedding.png" alt="Create Embedding Operation for Portkey" />
</div>
<details>
<summary>**Response Example**</summary>
```json
{
"object": "list",
"data": [
{
"object": "embedding",
"index": 0,
"embedding": [
-0.02083237,
-0.016892163,
-0.0045676464,
-0.05084554,
-0.025968939,
0.029597048,
0.029987168,
0.02907689,
0.0105982395,
-0.024356445,
-0.00935636,
0.0066352785,
0.034018397,
-0.042002838,
0.03856979,
-0.014681488,
...,
0.024707552
]
}
],
"model": "text-embedding-3-small",
"usage": {
"prompt_tokens": 9,
"total_tokens": 9
}
}
```
</details>
For all operations, you can optionally specify:
- **Config**: Configuration options for the request.
- **Virtual Key**: A specific virtual key to use for the request, overriding the default.
---

View file

@ -15,6 +15,10 @@ Please find the latest LTS version here: <br/>
| Version | Release Date | Docker Pull Command |
|---------|--------------|----------------------|
| Latest EE-LTS | N/A | `docker pull tooljet/tooljet:EE-LTS-latest` |
| [EE-LTS-2.50.9.41](https://hub.docker.com/layers/tooljet/tooljet/EE-LTS-2.50.9.41/images/sha256-d36444747af6f81d4456ca4d1f7dcf92c3e77e13e23ca9407c22de1c62451bd7?context=explore) | September 24 , 2024 | `docker pull tooljet/tooljet:EE-LTS-2.50.9.41` |
| [EE-LTS-2.50.9.40](https://hub.docker.com/layers/tooljet/tooljet/EE-LTS-2.50.9.40/images/sha256-26338b926568dc514c26988f6cd01f84bb3edf950fac08982365fabb95900f78?context=explore) | September 18 , 2024 | `docker pull tooljet/tooljet:EE-LTS-2.50.9.40` |
| [EE-LTS-2.50.9.39](https://hub.docker.com/layers/tooljet/tooljet/EE-LTS-2.50.9.39/images/sha256-6f1b7a00432e0e29a05adb375d3ddd9da877d6eb53d489be14ca0061953bbb57?context=explore) | September 12 , 2024 | `docker pull tooljet/tooljet:EE-LTS-2.50.9.39` |
| [EE-LTS-2.50.9.38](https://hub.docker.com/layers/tooljet/tooljet/EE-LTS-2.50.9.38/images/sha256-1974afb5f8483f4bfb7bf7575d7d8b4f0f7747dd7c88139cbf559c3ce8b1fdbd?context=explore) | September 12 , 2024 | `docker pull tooljet/tooljet:EE-LTS-2.50.9.38` |
| [EE-LTS-2.50.9.37](https://hub.docker.com/layers/tooljet/tooljet/EE-LTS-2.50.9.37/images/sha256-b1a13a5424bf14af77bb455f39e07d2a774303bcf4286aa7bd6d0a78c1a58e59?context=explore) | September 11 , 2024 | `docker pull tooljet/tooljet:EE-LTS-2.50.9.37` |
| [EE-LTS-2.50.9.36](https://hub.docker.com/layers/tooljet/tooljet/EE-LTS-2.50.9.36/images/sha256-969ae46a17c5873882641b7e23b02e087874194d9546e0a55d21d49044becd9e?context=explore) | September 10 , 2024 | `docker pull tooljet/tooljet:EE-LTS-2.50.9.36` |
| [EE-LTS-2.50.9.35](https://hub.docker.com/layers/tooljet/tooljet/EE-LTS-2.50.9.35/images/sha256-8a1b0014d470aff108ad75fd6982e01696740f2154a3bb49f08671b93d55485b?context=explore) | September 3 , 2024 | `docker pull tooljet/tooljet:EE-LTS-2.50.9.35` |
@ -27,10 +31,6 @@ Please find the latest LTS version here: <br/>
| [EE-LTS-2.50.9.28](https://hub.docker.com/layers/tooljet/tooljet/EE-LTS-2.50.9.28/images/sha256-f33982c51a59b126aea9da9eef2cace0cd074411583ea896edc3f6db5b578a6b?context=explore) | August 19, 2024 | `docker pull tooljet/tooljet:EE-LTS-2.50.9.28` |
| [EE-LTS-2.50.9.27](https://hub.docker.com/layers/tooljet/tooljet/EE-LTS-2.50.9.27/images/sha256-ae4810ddd12b2e397a07085e2ea62e98c4ea16c139d2673e4ab890d19b40f868?context=explore) | August 13, 2024 | `docker pull tooljet/tooljet:EE-LTS-2.50.9.27` |
| [EE-LTS-2.50.9.26](https://hub.docker.com/layers/tooljet/tooljet/EE-LTS-2.50.9.26/images/sha256-8e17e23f2d61b463aaf0f87e5e90fa4580faf3fa6e790afcff64ef399454f85f?context=explore) | August 12, 2024 | `docker pull tooljet/tooljet:EE-LTS-2.50.9.26` |
| [EE-LTS-2.50.9.25](https://hub.docker.com/layers/tooljet/tooljet/EE-LTS-2.50.9.25/images/sha256-fdf2858e364c238abd49418321a34676449383733ca3c6fb79ae4714e113a064?context=explore) | August 2, 2024 | `docker pull tooljet/tooljet:EE-LTS-2.50.9.25` |
| [EE-LTS-2.50.9.24](https://hub.docker.com/layers/tooljet/tooljet/EE-LTS-2.50.9.24/images/sha256-a51522503c4b31eb5cd27bd105fe8693f371f17fcf6bf9c86c3fff3d6d9faf4f?context=explore) | August 1, 2024 | `docker pull tooljet/tooljet:EE-LTS-2.50.9.24` |
| [EE-LTS-2.50.9.23](https://hub.docker.com/layers/tooljet/tooljet/EE-LTS-2.50.9.23/images/sha256-449700fb75a86def8a147c4e6592e1a5c43b8e0486dde5196aa7c9f3df1a17dd?context=explore) | July 30, 2024 | `docker pull tooljet/tooljet:EE-LTS-2.50.9.23` |
| [EE-LTS-2.50.9.22](https://hub.docker.com/layers/tooljet/tooljet/EE-LTS-2.50.9.22/images/sha256-8df4b8279a02f55f9eff7f26b744cf73d1fb8c9d4bf2f3d3b16243849ac2f9c4?context=explore) | July 30, 2024 | `docker pull tooljet/tooljet:EE-LTS-2.50.9.22` |
:::info
Users are encouraged to upgrade to the latest LTS version to ensure they benefit from the latest improvements and maintain a secure and efficient environment.

View file

@ -164,9 +164,44 @@ If this is a new installation of the application, you may start directly with th
- Users on versions earlier than **v2.23.0-ee2.10.2** must first upgrade to this version before proceeding to the LTS version.
## Troubleshooting
For specific issues or questions, refer to our **[Slack](https://tooljet.slack.com/join/shared_invite/zt-25438diev-mJ6LIZpJevG0LXCEcL0NhQ#)**.
## Debugging with Docker
In this section, we provide guidance on how to enable debugging for ToolJet services using Docker and Visual Studio Code. These additions will significantly benefit contributors by streamlining the debugging process and enhancing the overall development experience.
#### VSCode Launch Configuration:
A new configuration has been added in `.vscode/launch.json` to facilitate launching the client and server in debug mode. This allows contributors to easily debug the application within the Visual Studio Code environment. Configurations include:
- **Docker Debug Client**: Launch the client running in a Docker container for debugging within Visual Studio Code.
- **Docker Debug Server**: Debug the server in a Docker container, allowing developers to leverage Node.js debugging tools directly from their IDE.
#### VSCode Task Configuration:
A new task has been introduced in `.vscode/tasks.json` to manage Docker Compose commands for debugging. This includes tasks to start the client and server in detached mode, making it easier to initiate debugging sessions.
#### Docker Compose Debug Configuration:
The `docker-compose-debug.yaml` file defines the services for debugging, exposing the necessary port (9229) for Node.js debugging. This setup ensures that the server runs in debug mode, allowing for effective troubleshooting.
### Benefits of Debugging Configuration
These changes streamline the debugging process, making it more efficient for contributors to identify and fix issues. The integration with Visual Studio Code allows for advanced debugging features such as breakpoints and real-time variable inspection. Furthermore, standardizing the debugging setup fosters better collaboration among team members, facilitating knowledge sharing and improving the overall development workflow.
By implementing these configurations, ToolJet aims to enhance the development experience, enabling contributors to resolve issues swiftly and maintain project momentum.
If you want to run docker in debug mode use this command
```bash
docker-compose -f docker-compose.yaml -f docker-compose-debug.yaml up --build
```
**Open the Project in VSCode**: Open the ToolJet directory in Visual Studio Code.
Check Launch Configurations:
- Open the debug view by clicking on the Debug icon in the Activity Bar on the side of the window.
- Select the appropriate configuration, such as Docker Debug Client or Docker Debug Server.

View file

@ -417,6 +417,7 @@
"marketplace/plugins/marketplace-plugin-salesforce",
"marketplace/plugins/marketplace-plugin-supabase",
"marketplace/plugins/marketplace-plugin-pocketbase",
"marketplace/plugins/marketplace-plugin-portkey",
"marketplace/plugins/marketplace-plugin-prestodb"
]
}
@ -494,4 +495,4 @@
]
}
]
}
}

View file

@ -420,6 +420,7 @@
"marketplace/plugins/marketplace-plugin-salesforce",
"marketplace/plugins/marketplace-plugin-supabase",
"marketplace/plugins/marketplace-plugin-pocketbase",
"marketplace/plugins/marketplace-plugin-portkey",
"marketplace/plugins/marketplace-plugin-prestodb",
"marketplace/plugins/marketplace-plugin-jira"
]
@ -497,4 +498,4 @@
]
}
]
}
}