docs: dev resources (#8588)

* docs: dev resources

* Update packages/noco-docs/docs/160.developer-resources/010.rest-APIs/010.accessing-apis.md

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update packages/noco-docs/docs/160.developer-resources/010.rest-APIs/010.accessing-apis.md

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update packages/noco-docs/docs/160.developer-resources/010.rest-APIs/010.accessing-apis.md

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update packages/noco-docs/docs/160.developer-resources/020.webhook/040.actions-on-webhook.md

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update packages/noco-docs/docs/160.developer-resources/020.webhook/020.create-webhook.md

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update packages/noco-docs/docs/160.developer-resources/020.webhook/020.create-webhook.md

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update packages/noco-docs/docs/160.developer-resources/010.rest-APIs/010.accessing-apis.md

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update packages/noco-docs/docs/160.developer-resources/020.webhook/020.create-webhook.md

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update packages/noco-docs/docs/160.developer-resources/020.webhook/040.actions-on-webhook.md

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update packages/noco-docs/docs/160.developer-resources/010.rest-APIs/010.accessing-apis.md

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update packages/noco-docs/docs/160.developer-resources/010.rest-APIs/050.upload-via-api.md

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update packages/noco-docs/docs/160.developer-resources/010.rest-APIs/005.overview.md

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update packages/noco-docs/docs/160.developer-resources/010.rest-APIs/005.overview.md

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update packages/noco-docs/docs/160.developer-resources/010.rest-APIs/005.overview.md

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update packages/noco-docs/docs/160.developer-resources/020.webhook/040.actions-on-webhook.md

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update packages/noco-docs/docs/160.developer-resources/020.webhook/020.create-webhook.md

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* fix: review comments

Signed-off-by: Raju Udava <86527202+dstala@users.noreply.github.com>

---------

Signed-off-by: Raju Udava <86527202+dstala@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
This commit is contained in:
Raju Udava
2024-05-31 06:42:43 +05:30
committed by GitHub
parent 30d43d7252
commit 27a5149d8e
9 changed files with 665 additions and 0 deletions

View File

@@ -0,0 +1,17 @@
---
title: 'Webhook overview'
description: 'Learn how to create, modify and delete webhooks.'
tags: ['Webhook', 'Overview']
keywords: ['Webhook overview', 'NocoDB webhook', 'create webhook', 'modify webhook', 'delete webhook']
---
You can employ webhooks to notify external systems whenever there are additions, updates, or removals of records within NocoDB. This feature allows you to receive instantaneous notifications for any changes made to your database. NocoDB also offers webhooks for bulk endpoints for creating, updating, or deleting multiple records simultaneously.
Note that, Webhooks currently are specific to associated table.
- [Create Webhook](create-webhook)
- [Disable Webhook](actions-on-webhook#enable/disable-webhook)
- [Modify Webhook](actions-on-webhook#edit-webhook)
- [Duplicate Webhook](actions-on-webhook#duplicate-webhook)
- [Delete Webhook](actions-on-webhook#delete-webhook)

View File

@@ -0,0 +1,340 @@
---
title: 'Create webhook'
description: 'Learn how to create a webhook in NocoDB.'
tags: ['Webhook', 'Create']
keywords: ['NocoDB webhook', 'create webhook']
---
## Create Webhook
### Accessing webhook page
1. Click on table for which webhook needs to be configured on the left sidebar
2. Open `Details` tab in topbar,
3. Click on `Webhooks` tab
4. Click `Add New Webhook`
![Accessing webhook](/img/v2/webhook/create-webhook-1.png)
### Configuring webhook
1. Name of the webhook
2. Select the event for which webhook needs to be triggered
| Trigger | Details |
|-------------------|-------------------------------------|
| After Insert | After a single record is inserted |
| After Update | After a single record is updated |
| After Delete | After a single record is deleted |
| After Bulk Insert | After bulk records are inserted |
| After Bulk Update | After bulk records are updated |
| After Bulk Delete | After bulk records are deleted |
3. Method & URL: Configure the endpoint to which webhook needs to be triggered. Supported methods are GET, POST, DELETE, PUT, HEAD, PATCH
4. Headers & Parameters: Configure Request headers & parameters (optional)
5. Condition: Only records meeting the configured criteria will trigger webhook (optional)
6. Test webhook (with sample payload) to verify if parameter are configured appropriately (optional)
7. Save the webhook
![Configuring webhook](/img/v2/automations/webhooks/create-webhook-2.png)
### Webhook with conditions
In case of webhook with conditions, only records meeting the configured criteria will trigger webhook. For example, trigger webhook only when `Status` is `Complete`. You can also configure multiple conditions using `AND` or `OR` operators. For example, trigger webhook only when `Status` is `Complete` and `Priority` is `High`.
The webhook will be triggered only when the configured condition wasn't met before the record was updated. For example, if you have configured webhook with condition `Status` `is` `Complete` and `Priority` `is` `High` and you update the record with `Status` `Complete` and `Priority` `Low` to `High`, webhook will be triggered. However, if you update any other fields of the record with `Status` `Complete` and `Priority` `High`, webhook won't be triggered.
In summary, the webhook will be triggered only when `Condition(old-record) = false` and `Condition(new-record) = true`.
### Webhook response sample
<Tabs>
<TabItem value="After Insert" label="After Insert">
```bash
{
"type": "records.after.insert",
"id": "9dac1c54-b3be-49a1-a676-af388145fa8c",
"data": {
"table_id": "md_xzru7dcqrecc60",
"table_name": "Film",
"view_id": "vw_736wrpoas7tr0c",
"view_name": "Film",
"records": [
{
"FilmId": 1011,
"Title": "FOO",
"Language": {
"LanguageId": 1,
"Name": "English"
},
}
]
}
}
```
</TabItem>
<TabItem value="After Update" label="After Update">
```bash
{
"type": "records.after.update",
"id": "6a6ebfe4-b0b5-434e-b5d6-5212adbf82fa",
"data": {
"table_id": "md_xzru7dcqrecc60",
"table_name": "Film",
"view_id": "vw_736wrpoas7tr0c",
"view_name": "Film",
"previous_records": [
{
"FilmId": 1,
"Title": "ACADEMY DINOSAUR",
"Description": "A Epic Drama of a Feminist in The Canadian Rockies",
"Actor List": [
{
"ActorId": 10,
"FirstName": "CHRISTIAN"
}
],
}
],
"records": [
{
"FilmId": 1,
"Title": "ACADEMY DINOSAUR (Edited)",
"Actor List": [
{
"ActorId": 10,
"FirstName": "CHRISTIAN"
}
],
}
]
}
}
```
</TabItem>
<TabItem value="After Delete" label="After Delete">
```bash
{
"type": "records.after.delete",
"id": "e593079f-70e5-4965-8944-5ff7aeed005c",
"data": {
"table_id": "md_xzru7dcqrecc60",
"table_name": "Film",
"view_id": "vw_736wrpoas7tr0c",
"view_name": "Film",
"records": [
{
"FilmId": 1010,
"Title": "ALL-EDITED",
"Language": {
"LanguageId": 1,
"Name": "English"
},
}
]
}
}
```
</TabItem>
<TabItem value="After Bulk Insert" label="After Bulk Insert">
```bash
{
"type": "records.after.bulkInsert",
"id": "f8397b06-a399-4a3a-b6b0-6d1c0c2f7578",
"data": {
"table_id": "md_xzru7dcqrecc60",
"table_name": "Film",
"view_id": "vw_3fq2e9q8drkblw",
"view_name": "GridView",
"records_inserted": 2
}
}
```
</TabItem>
<TabItem value="After Bulk Update" label="After Bulk Update">
```bash
{
"type": "records.after.bulkUpdate",
"id": "e983cea5-8e38-438e-96a0-048751f6830b",
"data": {
"table_id": "md_xzru7dcqrecc60",
"table_name": "Film",
"view_id": "vw_3fq2e9q8drkblw",
"view_name": "Sheet-1",
"previous_records": [
[
{
"FilmId": 1005,
"Title": "Q",
"Language": {
"LanguageId": 1,
"Name": "English"
},
},
{
"FilmId": 1004,
"Title": "P",
"Language": {
"LanguageId": 1,
"Name": "English"
}
}
]
],
"records": [
[
{
"FilmId": 1005,
"Title": "Q-EDITED",
"Language": {
"LanguageId": 1,
"Name": "English"
}
},
{
"FilmId": 1004,
"Title": "P-EDITED",
"Language": {
"LanguageId": 1,
"Name": "English"
},
}
]
]
}
}
```
</TabItem>
<TabItem value="After Bulk Delete" label="After Bulk Delete">
```bash
{
"type": "records.after.bulkDelete",
"id": "e7f1f4e5-7052-4ca2-9355-241ceb836f43",
"data": {
"table_id": "md_xzru7dcqrecc60",
"table_name": "Film",
"view_id": "vw_3fq2e9q8drkblw",
"view_name": "Sheet-1",
"records": [
[
{
"FilmId": 1022,
"Title": "x",
"Language": {
"LanguageId": 1,
"Name": "English"
},
},
{
"FilmId": 1023,
"Title": "x",
"Language": {
"LanguageId": 1,
"Name": "English"
},
}
]
]
}
}
```
</TabItem>
</Tabs>
[//]: # (## Call Log)
[//]: # ()
[//]: # (Call Log allows user to check the call history of the hook. By default, it has been disabled. However, it can be configured by using environment variable `NC_AUTOMATION_LOG_LEVEL`.)
[//]: # ()
[//]: # (- `NC_AUTOMATION_LOG_LEVEL=OFF`: No logs will be displayed and no history will be inserted to meta database.)
[//]: # (- `NC_AUTOMATION_LOG_LEVEL=ERROR`: only error logs will be displayed and history of error logs will be inserted to meta database.)
[//]: # (- `NC_AUTOMATION_LOG_LEVEL=ALL`: Both error and success logs will be displayed and history of both types of logs will be inserted to meta database. **This option is only available for Enterprise Edition.**)
[//]: # ()
[//]: # (![image]&#40;https://user-images.githubusercontent.com/35857179/228790148-1e3f21c7-9385-413a-843f-b93073ca6bea.png&#41;)
### Webhook with custom payload ☁
In the enterprise edition, you can set up a personalized payload for your webhook. Just head to the `Body` tab to make the necessary configurations. Users can utilize [handlebar syntax](https://handlebarsjs.com/guide/#simple-expressions), which allows them to access and manipulate the data easily.
Use `{{ json event }}` to access the event data. Sample response is as follows
```json
{
"type": "records.after.insert",
"id": "0698517a-d83a-4e72-bf7a-75f46b704ad1",
"data": {
"table_id": "m969t01blwprpef",
"table_name": "Table-2",
"view_id": "vwib3bvfxdqgymun",
"view_name": "Table-2",
"rows": [
{
"Id": 1,
"Tags": "Sample Text",
"CreatedAt": "2024-04-11T10:40:20.998Z",
"UpdatedAt": "2024-04-11T10:40:20.998Z"
}
]
}
}
```
:::info
**Note:** The custom payload feature is only available in the enterprise edition.
:::
#### Discord Webhook
Discord webhook can be configured to send messages to a Discord channel. Discord request body should contain content, embeds or attachments, otherwise request will fail. Below is an example of Discord webhook payload. More details can be found [here](https://birdie0.github.io/discord-webhooks-guide/discord_webhook.html)
```json
{
"content": "Hello, this is a webhook message",
"embeds": [
{
"title": "Webhook",
"description": "This is a webhook message",
"color": 16711680
}
]
}
```
To send complete event data to Discord, use below payload
```json
{
"content" : {{ json ( json event ) }}
}
```
One can also customize the payload as per the requirement. For example, to send only the `Title` field to Discord, use below payload. Note that, the value of `content` is what that will get displayed in the Discord channel.
```json
{
"content": "{{ event.data.rows.[0].Title }}"
}
```
## Environment Variables
In self-hosted version, you can configure the following environment variables to customize the webhook behavior.
- NC_ALLOW_LOCAL_HOOKS: Allow localhost based links to be triggered. Default: false
Find more about environment variables [here](/getting-started/self-hosted/environment-variables)

View File

@@ -0,0 +1,46 @@
---
title: 'Actions on webhook'
description: 'Learn how to enable/disable, duplicate and delete webhooks.'
tags: ['Webhook', 'Delete', 'Duplicate', 'Disable', 'Enable']
keywords: ['Webhook overview', 'NocoDB webhook', 'create webhook', 'modify webhook', 'delete webhook']
---
### Enable/disable Webhook
To disable a Webhook
+
- Open `Webhook` tab to find list of webhooks created
+
- Toggle `Activate` button to enable/disable
![Webhook List](/img/v2/webhook/webhook-list-2.png)
### Edit Webhook
To edit a Webhook
- Open `Webhook` tab to find list of webhooks created
- Click on webhook to be edited
- This will open up the webhook configuration page, which is similar to the page used for [creating webhook](/automation/webhook/create-webhook). Reconfigure the webhook as required
- Click on `Save` button to save the changes
### Duplicate Webhook
To duplicate a Webhook
- Open `Webhook` tab to find list of webhooks created
- Click on `...` actions button associated with the webhook to be duplicate
- Select `Duplicate`
![Webhook context menu](/img/v2/webhook/webhook-list-3.png)
A copy of the webhook will be created (disabled by default) with a suffix ` - Copy`
### Delete Webhook
To delete a Webhook
- Open the `Webhook` tab to find the list of webhooks created
- Click on the `...` actions button associated with the webhook to be deleted
- Select `Delete`
![Webhook context menu](/img/v2/webhook/webhook-list-3.png)

View File

@@ -0,0 +1,8 @@
{
"label": "Webhook",
"collapsible": true,
"collapsed": true,
"link": {
"type": "generated-index"
}
}