Merge pull request #1724 from n8n-io/DOC-653-admonition-syntax

Doc 653 admonition syntax
This commit is contained in:
Deborah 2023-11-08 08:53:56 +00:00 committed by GitHub
commit 8e10fdaec7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
608 changed files with 3533 additions and 3415 deletions

View File

@ -1,5 +1,6 @@
!!! note "AI generated code overwrites your code"
If you've already written some code on the **Code** tab, the AI generated code will replace it. n8n recommends using AI as a starting point to create your initial code, then editing it as needed.
/// note | AI generated code overwrites your code
If you've already written some code on the **Code** tab, the AI generated code will replace it. n8n recommends using AI as a starting point to create your initial code, then editing it as needed.
///
To use ChatGPT to generate code in the Code node:

View File

@ -1,5 +1,6 @@
!!! note "In version 1.9.0 n8n changed the templating language for expressions"
If you have issues with expressions in 1.9.0:
* Please report the issue on the [forums](https://community.n8n.io/){:target=_blank .external-link}.
* Self-hosted users can switch back to RiotTmpl: set `N8N_EXPRESSION_EVALUATOR` to `tmpl`. Refer to [Environment variables](/hosting/environment-variables/) for more information on configuring self-hosted n8n.
/// note | In version 1.9.0 n8n changed the templating language for expressions
If you have issues with expressions in 1.9.0:
* Please report the issue on the [forums](https://community.n8n.io/){:target=_blank .external-link}.
* Self-hosted users can switch back to RiotTmpl: set `N8N_EXPRESSION_EVALUATOR` to `tmpl`. Refer to [Environment variables](/hosting/environment-variables/) for more information on configuring self-hosted n8n.
///

View File

@ -1,5 +1,6 @@
!!! note "Programmatic-style nodes only"
This guidance applies to programmatic-style nodes. If you're using declarative style, n8n handles paired items for you automatically.
/// note | Programmatic-style nodes only
This guidance applies to programmatic-style nodes. If you're using declarative style, n8n handles paired items for you automatically.
///
n8n's item linking allows users to access data from items that precede the current item. n8n needs to know which input item a given output item comes from. If this information is missing, expressions in other nodes may break. As a node developer, you must ensure any items returned by your node support this.

View File

@ -1,2 +1,3 @@
!!! info "Feature availability"
Embed requires an embed license. For more information about when to use Embed, as well as costs and licensing processes, refer to [Embed](https://n8n.io/embed/){:target=_blank .external-link} on the n8n website.
/// info | Feature availability
Embed requires an embed license. For more information about when to use Embed, as well as costs and licensing processes, refer to [Embed](https://n8n.io/embed/){:target=_blank .external-link} on the n8n website.
///

View File

@ -8,19 +8,21 @@
1. Add other nodes as needed to build your sub-workflow functionality.
1. Save the sub-workflow.
!!! note "Sub-workflow mustn't contain errors"
If there are errors in the sub-workflow, the parent workflow can't trigger it.
/// note | Sub-workflow mustn't contain errors
If there are errors in the sub-workflow, the parent workflow can't trigger it.
///
/// note | Load data into sub-workflow before building
This requires the ability to [load data from previous executions](/workflows/executions/debug/), which is available to Pro and Enterprise users.
!!! note "Load data into sub-workflow before building"
This requires the ability to [load data from previous executions](/workflows/executions/debug/), which is available to Pro and Enterprise users.
If you want to load data into your subworkflow to use while building it:
If you want to load data into your subworkflow to use while building it:
1. Create the subworkflow and add the **Execute Workflow Trigger**.
1. In the subworkflow [settings](/workflows/settings/), set **Save successful production executions** to **Save**.
1. Skip ahead to setting up the parent workflow, and run it.
1. Follow the steps to [load data from previous executions](/workflows/executions/debug/).
You'll now have example data pinned in the trigger node, which allows you to work with real data when configuring the rest of the workflow.
///
1. Create the subworkflow and add the **Execute Workflow Trigger**.
1. In the subworkflow [settings](/workflows/settings/), set **Save successful production executions** to **Save**.
1. Skip ahead to setting up the parent workflow, and run it.
1. Follow the steps to [load data from previous executions](/workflows/executions/debug/).
You'll now have example data pinned in the trigger node, which allows you to work with real data when configuring the rest of the workflow.
### Call the sub-workflow
@ -28,8 +30,9 @@
1. Add the **Execute Workflow** node.
1. In the **Execute Workflow** node, set the sub-workflow you want to call. You can choose to call the workflow by ID, load a workflow from a local file, add workflow JSON as a parameter in the node, or target a workflow by URL.
!!! note "Find your workflow ID"
Your sub-workflow's ID is the alphanumeric string at the end of its URL.
/// note | Find your workflow ID
Your sub-workflow's ID is the alphanumeric string at the end of its URL.
///
1. Save your workflow.

View File

@ -1,6 +1,7 @@
!!! note "Parameter resolution in sub-nodes"
Sub-nodes behave differently to other nodes when processing multiple items using an expression.
/// note | Parameter resolution in sub-nodes
Sub-nodes behave differently to other nodes when processing multiple items using an expression.
Most nodes, including root nodes, take any number of items as input, process these items, and output the results. You can use expressions to refer to input items, and the node resolves the expression for each item in turn. For example, given an input of five `name` values, the expression `{{ $json.name }}` resolves to each name in turn.
Most nodes, including root nodes, take any number of items as input, process these items, and output the results. You can use expressions to refer to input items, and the node resolves the expression for each item in turn. For example, given an input of five `name` values, the expression `{{ $json.name }}` resolves to each name in turn.
In sub-nodes, the expression always resolves to the first item. For example, given an input of five `name` values, the expression `{{ $json.name }}` always resolves to the first name.
In sub-nodes, the expression always resolves to the first item. For example, given an input of five `name` values, the expression `{{ $json.name }}` always resolves to the first name.
///

View File

@ -1,15 +1,16 @@
The Code node allows you to write custom JavaScript or Python and run it as a step in your workflow.
!!! note "Coding in n8n"
This page gives usage information about the Code node. For more guidance on coding in n8n, refer to the [Code](/code/) section. It includes:
* Reference documentation on [Built-in methods and variables](/code/builtin/)
* Guidance on [Handling dates](/code/luxon/) and [Querying JSON](/code/jmespath/)
* A growing collection of examples in the [Cookbook](/code/cookbook/)
/// note | Coding in n8n
This page gives usage information about the Code node. For more guidance on coding in n8n, refer to the [Code](/code/) section. It includes:
!!! note "Function and Function Item nodes"
The Code node replaces the Function and Function Item nodes from version 0.198.0 onwards. If you're using an older version of n8n, you can still view the [Function node documentation](https://github.com/n8n-io/n8n-docs/blob/67935ad2528e2e30d7984ea917e4af2910a096ec/docs/integrations/builtin/core-nodes/n8n-nodes-base.function.md){:target=_blank .external-link} and [Function Item node documentation](https://github.com/n8n-io/n8n-docs/blob/67935ad2528e2e30d7984ea917e4af2910a096ec/docs/integrations/builtin/core-nodes/n8n-nodes-base.functionItem.md){:target=_blank .external-link}.
* Reference documentation on [Built-in methods and variables](/code/builtin/)
* Guidance on [Handling dates](/code/luxon/) and [Querying JSON](/code/jmespath/)
* A growing collection of examples in the [Cookbook](/code/cookbook/)
///
/// note | Function and Function Item nodes
The Code node replaces the Function and Function Item nodes from version 0.198.0 onwards. If you're using an older version of n8n, you can still view the [Function node documentation](https://github.com/n8n-io/n8n-docs/blob/67935ad2528e2e30d7984ea917e4af2910a096ec/docs/integrations/builtin/core-nodes/n8n-nodes-base.function.md){:target=_blank .external-link} and [Function Item node documentation](https://github.com/n8n-io/n8n-docs/blob/67935ad2528e2e30d7984ea917e4af2910a096ec/docs/integrations/builtin/core-nodes/n8n-nodes-base.functionItem.md){:target=_blank .external-link}.
///
## Usage
How to use the Code node.
@ -47,9 +48,9 @@ The syntax to use the built-in methods and variables is `$variableName` or `$met
n8n added Python support in version 1.0. It doesn't include a Python executable. Instead, n8n provides Python support using [Pyodide](https://pyodide.org/en/stable/){:target=_blank .external-link}, which is a port of CPython to WebAssembly. This limits the available Python packages to the [Packages included with Pyodide](https://pyodide.org/en/stable/usage/packages-in-pyodide.html#packages-in-pyodide){:target=_blank .external-link}. n8n downloads the package automatically the first time you use it.
!!! note "Slower than JavaScript"
The Code node takes longer to process Python than JavaScript. This is due to the additional compilation steps.
/// note | Slower than JavaScript
The Code node takes longer to process Python than JavaScript. This is due to the additional compilation steps.
///
### Built-in methods and variables
n8n provides built-in methods and variables for working with data and accessing n8n data. Refer to [Built-in methods and variables](/code/builtin/) for more information.

View File

@ -1,6 +1,7 @@
!!! note "API differences"
Different APIs implement pagination in different ways. Check the API documentation for the API you're using for details. You need to find out things like:
/// note | API differences
Different APIs implement pagination in different ways. Check the API documentation for the API you're using for details. You need to find out things like:
* Does the API provide the URL for the next page?
* Are there API-specific limits on page size or page number?
* The structure of the data that the API returns.
* Does the API provide the URL for the next page?
* Are there API-specific limits on page size or page number?
* The structure of the data that the API returns.
///

View File

@ -1,6 +1,6 @@
!!! info "0.236.0 and below"
n8n removed this execution behavior in version 1.0. This section applies to workflows using the **v0 (legacy)** workflow execution order. By default, this is all workflows built before version 1.0. You can change the execution order in your [workflow settings](/workflows/settings/).
/// info | 0.236.0 and below
n8n removed this execution behavior in version 1.0. This section applies to workflows using the **v0 (legacy)** workflow execution order. By default, this is all workflows built before version 1.0. You can change the execution order in your [workflow settings](/workflows/settings/).
///
If you add a Merge node to a workflow containing an If node, it can result in both output branches of the If node executing.
The Merge node is triggered by one branch, then goes and executes the other branch.

View File

@ -1,5 +1,6 @@
!!! note "Timezone settings"
The node relies on the timezone setting. n8n uses either:
/// note | Timezone settings
The node relies on the timezone setting. n8n uses either:
1. The workflow timezone, if set. Refer to [Workflow settings](/workflows/settings/) for more information.
2. The n8n instance timezone, if the workflow timezone isn't set. The default is `America/New York` for self-hosted instances. n8n Cloud tries to detect the instance owner's timezone when they sign up, falling back to GMT as the default. Self-hosted users can change the instance setting using [Environment variables](/hosting/environment-variables/environment-variables/#timezone-and-localization). Cloud admins can change the instance timezone in the [Admin dashboard](/cloud-admin-dashboard/).
1. The workflow timezone, if set. Refer to [Workflow settings](/workflows/settings/) for more information.
2. The n8n instance timezone, if the workflow timezone isn't set. The default is `America/New York` for self-hosted instances. n8n Cloud tries to detect the instance owner's timezone when they sign up, falling back to GMT as the default. Self-hosted users can change the instance setting using [Environment variables](/hosting/environment-variables/environment-variables/#timezone-and-localization). Cloud admins can change the instance timezone in the [Admin dashboard](/cloud-admin-dashboard/).
///

View File

@ -1,11 +1,12 @@
1. Access your [Google Cloud Console - Library](https://console.cloud.google.com/apis/library){:target=_blank .external-link}. Make sure you're in the correct project.
1. Search for and select the API(s) you want to enable. For example, for the Gmail node, search for and enable the Gmail API.
!!! note "Some integrations need additional APIs"
The following integrations require the Google Drive API, as well as their own API:
* Google Docs
* Google Sheets
* Google Slides
/// note | Some integrations need additional APIs
The following integrations require the Google Drive API, as well as their own API:
* Google Docs
* Google Sheets
* Google Slides
///
1. Select **ENABLE**.

View File

@ -1,4 +1,5 @@
n8n recommends using an SVG for your node icon, but you can also use PNG. If using PNG, the icon resolution should be 60x60px. Node icons should have a square or near-square aspect ratio.
!!! note "Don't reference Font Awesome"
If you want to use a Font Awesome icon in your node, download and embed the image.
/// note | Don't reference Font Awesome
If you want to use a Font Awesome icon in your node, download and embed the image.
///

View File

@ -17,20 +17,22 @@ You can test your node as you build it by running it in a local n8n instance.
npm link <node-package-name>
```
!!! note "Check your directory"
Make sure you run `npm link <node-name>` in the nodes directory within your n8n installation. This can be:
* `~/.n8n/custom/`
* `~/.n8n/<your-custom-name>`: if your n8n installation set a different name using `N8N_CUSTOM_EXTENSIONS`.
/// note | Check your directory
Make sure you run `npm link <node-name>` in the nodes directory within your n8n installation. This can be:
* `~/.n8n/custom/`
* `~/.n8n/<your-custom-name>`: if your n8n installation set a different name using `N8N_CUSTOM_EXTENSIONS`.
///
4. Start n8n:
```
n8n start
```
5. Open n8n in your browser. You should see your nodes when you search for them in the nodes panel.
!!! note "Node names"
Make sure you search using the node name, not the package name. For example, if your npm package name is `n8n-nodes-weather-nodes`, and the package contains nodes named `rain`, `sun`, `snow`, you should search for `rain`, not `weather-nodes`.
/// note | Node names
Make sure you search using the node name, not the package name. For example, if your npm package name is `n8n-nodes-weather-nodes`, and the package contains nodes named `rain`, `sun`, `snow`, you should search for `rain`, not `weather-nodes`.
///
### Troubleshooting

View File

@ -1,6 +1,6 @@
!!! note "Subject to change"
The standards described in this document are for the first release of the community nodes repository. These may change in future releases.
/// note | Subject to change
The standards described in this document are for the first release of the community nodes repository. These may change in future releases.
///
Community nodes are npm packages, hosted in the npm registry.
When building a node to submit to the community node repository, use the following resources to make sure your node setup is correct:

View File

@ -1,5 +1,6 @@
!!! note "Latest and Next versions"
n8n releases a new minor version most weeks. The `latest` version is for production use. `next` is the most recent release. You should treat `next` as a beta: it may be unstable. To report issues, use the [forum](https://community.n8n.io/c/questions/12){:target=_blank .external-link}.
/// note | Latest and Next versions
n8n releases a new minor version most weeks. The `latest` version is for production use. `next` is the most recent release. You should treat `next` as a beta: it may be unstable. To report issues, use the [forum](https://community.n8n.io/c/questions/12){:target=_blank .external-link}.
Current `latest`: 1.14.2
Current `next`: 1.15.2
Current `latest`: 1.14.2
Current `next`: 1.15.2
///

View File

@ -1,6 +1,7 @@
## n8n with tunnel
!!! danger
This is only meant for local development and testing. Do not use it in production.
/// danger
This is only meant for local development and testing. Do not use it in production.
///
To be able to use webhooks for trigger nodes of external services like GitHub, n8n has to be reachable from the web. To make that easy, n8n has a special [tunnel service](https://github.com/localtunnel/localtunnel) which redirects requests from our servers to your local n8n instance.

View File

@ -1,9 +1,10 @@
!!! note "Self-hosting knowledge prerequisites"
Self-hosting n8n requires technical knowledge, including:
/// note | Self-hosting knowledge prerequisites
Self-hosting n8n requires technical knowledge, including:
* Setting up and configuring servers and containers
* Managing application resources and scaling
* Securing servers and applications
* Configuring n8n
n8n recommends self-hosting for expert users. Mistakes can lead to data loss, security issues, and downtime. If you aren't experienced at managing servers, n8n recommends [n8n Cloud](https://n8n.io/cloud/){:target=_blank .external-link}.
* Setting up and configuring servers and containers
* Managing application resources and scaling
* Securing servers and applications
* Configuring n8n
n8n recommends self-hosting for expert users. Mistakes can lead to data loss, security issues, and downtime. If you aren't experienced at managing servers, n8n recommends [n8n Cloud](https://n8n.io/cloud/){:target=_blank .external-link}.
///

View File

@ -1,3 +1,3 @@
!!! info "Feature availability"
* Available on Enterprise.
* You need access to the n8n instance owner account to set up source control, and to send work to and from Git.
/// info | Feature availability
* Available on Enterprise.
/// * You need access to the n8n instance owner account to set up source control, and to send work to and from Git.

View File

@ -1,2 +1,3 @@
!!! note "Recommendation: don't push and pull to the same n8n instance"
You can push work from an instance to a branch, and pull to the same instance. n8n doesn't recommend this. To reduce the risk of merge conflicts and overwriting work, try to create a process where work goes in one direction: either to Git, or from Git, but not both.
/// note | Recommendation: don't push and pull to the same n8n instance
You can push work from an instance to a branch, and pull to the same instance. n8n doesn't recommend this. To reduce the risk of merge conflicts and overwriting work, try to create a process where work goes in one direction: either to Git, or from Git, but not both.
///

View File

@ -1,7 +1,8 @@
!!! info "Feature availability"
Custom executions data is available on:
/// info | Feature availability
Custom executions data is available on:
* Cloud: Pro, Enterprise
* Self-Hosted: Enterprise
* Cloud: Pro, Enterprise
* Self-Hosted: Enterprise
Available in version 0.222.0 and above.
Available in version 0.222.0 and above.
///

View File

@ -2,9 +2,9 @@
The Cron node is useful to schedule the workflows to run periodically at fixed dates, times, or intervals. This works in a similar way to the [cron](https://en.wikipedia.org/wiki/Cron) software utility in Unix-like systems. This core node is a Trigger node.
!!! note "Keep in mind"
1. If a workflow is using the Cron node as a trigger, make sure that you save and activate the workflow.
2. Make sure that the timezone is set correctly for the n8n instance (or the workflow).
/// note | Keep in mind
1. If a workflow is using the Cron node as a trigger, make sure that you save and activate the workflow.
/// 2. Make sure that the timezone is set correctly for the n8n instance (or the workflow).

View File

@ -1,16 +1,16 @@
# Function
!!! warning "Deprecated in 0.198.0"
n8n deprecated this node in version 0.198.0. Older workflows continue to work, and the node is still available in older versions n8n. From 0.198.0, n8n replaces the Function node with the [Code](/integrations/builtin/core-nodes/n8n-nodes-base.code/) node.
/// warning | Deprecated in 0.198.0
n8n deprecated this node in version 0.198.0. Older workflows continue to work, and the node is still available in older versions n8n. From 0.198.0, n8n replaces the Function node with the [Code](/integrations/builtin/core-nodes/n8n-nodes-base.code/) node.
///
Using the function node, you can:
* Transform data from other nodes
* Implement custom functionality
!!! note "Function node and function item node"
Note that the Function node is different from the [Function Item](/integrations/builtin/core-nodes/n8n-nodes-base.functionitem/) node. Refer to [Data | Code](/data/code/) to learn about the difference between the two.
/// note | Function node and function item node
Note that the Function node is different from the [Function Item](/integrations/builtin/core-nodes/n8n-nodes-base.functionitem/) node. Refer to [Data | Code](/data/code/) to learn about the difference between the two.
///
The Function node supports:

View File

@ -1,13 +1,13 @@
# Function Item
!!! warning "Deprecated in 0.198.0"
n8n deprecated this node in version 0.198.0. Older workflows continue to work, and the node is still available in older versions n8n. From 0.198.0, n8n replaces the Function node with the [Code](/integrations/builtin/core-nodes/n8n-nodes-base.code/) node.
/// warning | Deprecated in 0.198.0
n8n deprecated this node in version 0.198.0. Older workflows continue to work, and the node is still available in older versions n8n. From 0.198.0, n8n replaces the Function node with the [Code](/integrations/builtin/core-nodes/n8n-nodes-base.code/) node.
///
The Function Item node is used to add custom snippets to JavaScript code that should be executed once for every item that it receives as the input.
!!! note "Keep in mind"
Please note that the Function Item node is different from the [Function](/integrations/builtin/core-nodes/n8n-nodes-base.function/) node. Check out [this](/data/code/) page to learn about the difference between the two.
/// note | Keep in mind
Please note that the Function Item node is different from the [Function](/integrations/builtin/core-nodes/n8n-nodes-base.function/) node. Check out [this](/data/code/) page to learn about the difference between the two.
///
The Function Item node supports promises. So instead of returning the items directly, it is also possible to return a promise which resolves accordingly.

View File

@ -2,5 +2,6 @@
[Venafi](https://www.venafi.com/){:target=_blank .external-link} is a cybersecurity company providing services for machine identity management. They offer solutions to manage and protect identities for a wide range of machine types, delivering global visibility, lifecycle automation, and actionable intelligence.
!!! note "Credentials"
You can find authentication information for this node [here](/integrations/builtin/credentials/venafitlsprotectdatacenter/).
/// note | Credentials
You can find authentication information for this node [here](/integrations/builtin/credentials/venafitlsprotectdatacenter/).
///

View File

@ -9,9 +9,9 @@ The Retrieval QA Chain node allows you to answer a query based on document conte
On this page, you'll find the node parameters for the Retrieval QA Chain node, and links to more resources.
!!! note "Examples and templates"
For usage examples and templates to help you get started, refer to n8n's [LangChain integrations](https://n8n.io/integrations/langchain/){:target=_blank .external-link} page.
/// note | Examples and templates
For usage examples and templates to help you get started, refer to n8n's [LangChain integrations](https://n8n.io/integrations/langchain/){:target=_blank .external-link} page.
///
## Node parameters
### Query

View File

@ -11,12 +11,12 @@ The _Name_ node allows you to automate work in _Name_ and integrate _Name_ with
On this page, you'll find the node parameters for the _Name_ node, and links to more resources.
!!! note "Credentials"
You can find authentication information for this node [here](/integrations/builtin/credentials/_Name_/).
!!! note "Examples and templates"
For usage examples and templates to help you get started, refer to n8n's [LangChain integrations](https://n8n.io/integrations/langchain/){:target=_blank .external-link} page.
/// note | Credentials
You can find authentication information for this node [here](/integrations/builtin/credentials/_Name_/).
///
/// note | Examples and templates
For usage examples and templates to help you get started, refer to n8n's [LangChain integrations](https://n8n.io/integrations/langchain/){:target=_blank .external-link} page.
///
## Node parameters
* _Bullet list_

View File

@ -15,9 +15,9 @@ When you build a workflow, you create a set of instructions for how to process d
To define your data process, you link nodes together in a sequence. This is your workflow logic. n8n supports complex logic.
!!! Details "What is data?"
In n8n, data is any information processed by the workflow. n8n formats data as JSON. Refer to [Data](/data/) for more information on the data structure, and working with n8n workflow data.
/// Details | What is data?
In n8n, data is any information processed by the workflow. n8n formats data as JSON. Refer to [Data](/data/) for more information on the data structure, and working with n8n workflow data.
///
## Fetch data
Your workflow needs data. There are three main ways to get this data:

View File

@ -23,5 +23,6 @@ The API documentation assumes you are familiar with REST APIs. If you're not, th
* [IBM Cloud Learn Hub - What is a REST API?](https://www.ibm.com/cloud/learn/rest-apis): more detailed information about REST APIs.
* [MDN web docs - An overview of HTTP](https://developer.mozilla.org/en-US/docs/Web/HTTP/Overview): REST APIs work over HTTP, and use HTTP verbs, or methods, to indicate the type of action to perform.
!!! tip "Use the API playground (self-hosted n8n only)"
Trying out the API in the [playground](/api/using-api-playground/) can help you understand how APIs work. If you're worried about changing live data, consider setting up a test workflow, or test n8n instance, to explore safely.
/// tip | Use the API playground (self-hosted n8n only)
Trying out the API in the [playground](/api/using-api-playground/) can help you understand how APIs work. If you're worried about changing live data, consider setting up a test workflow, or test n8n instance, to explore safely.
///

View File

@ -5,8 +5,9 @@ contentType: howto
# Using the API playground
!!! info "Feature availability"
The API playground isn't available on Cloud. It's available for all self-hosted pricing tiers.
/// info | Feature availability
The API playground isn't available on Cloud. It's available for all self-hosted pricing tiers.
///
The n8n API comes with a built-in Swagger UI playground in self-hosted versions. This provides interactive documentation, allowing you to try out requests. The path to access the playground depends on your hosting.
@ -18,18 +19,18 @@ N8N_HOST:N8N_PORT/N8N_PATH/api/v<api-version-number>/docs
The API version number is `1`. There may be multiple versions available in the future.
!!! warning "Real data"
If you click **Authorize** and enter your API key in the API playground, you have access to your live data. This is useful for trying out requests. However, be aware you can change or delete real data.
/// warning | Real data
If you click **Authorize** and enter your API key in the API playground, you have access to your live data. This is useful for trying out requests. However, be aware you can change or delete real data.
///
The API includes built-in documentation about credential formats. This is available using the `credentials` endpoint:
```shell
N8N_HOST:N8N_PORT/N8N_PATH/api/v<api-version-number>/credentials/schema/{credentialTypeName}
```
!!! note "How to find `credentialTypeName`"
To find the type, download your workflow as JSON and examine it. For example, for a Google Drive node the `{credentialTypeName}` is `googleDriveOAuth2Api` :
```json
/// note | How to find `credentialTypeName`
To find the type, download your workflow as JSON and examine it. For example, for a Google Drive node the `{credentialTypeName}` is `googleDriveOAuth2Api` :
///```json
{
...,
"credentials": {

View File

@ -13,9 +13,9 @@ n8n Cloud is n8n's hosted solution. In addition to all the features of n8n, it p
[Sign up for n8n Cloud](https://www.n8n.cloud/){:target=_blank .external-link}
!!! note "Russia and Belarus"
n8n Cloud is not available in Russia and Belarus. Refer to our blog post [Update on n8n cloud accounts in Russia and Belarus](https://n8n.io/blog/update-on-n8n-cloud-accounts-in-russia-and-belarus/) for more information.
/// note | Russia and Belarus
n8n Cloud is not available in Russia and Belarus. Refer to our blog post [Update on n8n cloud accounts in Russia and Belarus](https://n8n.io/blog/update-on-n8n-cloud-accounts-in-russia-and-belarus/) for more information.
///
## Cloud configuration
You can configure settings for your n8n instance in your [Admin dashboard](/cloud-admin-dashboard/). This includes changing your n8n version.
@ -23,9 +23,9 @@ You can configure settings for your n8n instance in your [Admin dashboard](/clou
## Cloud IP addresses
!!! warning "Cloud IP addresses change without warning"
n8n can't guarantee static source IPs, as Cloud operates in a dynamic cloud provider environment and scales its infrastructure to meet demand. You should use strong authentication and secure transport protocols when connecting into and out of n8n.
/// warning | Cloud IP addresses change without warning
n8n can't guarantee static source IPs, as Cloud operates in a dynamic cloud provider environment and scales its infrastructure to meet demand. You should use strong authentication and secure transport protocols when connecting into and out of n8n.
///
Outbound traffic may currently appear to originate from any of:
* 20.79.227.226

View File

@ -5,9 +5,9 @@ contentType: explanation
# Faircode license
!!! note "Proprietary licenses for Enterprise"
Proprietary licenses are available for enterprise customers. [Get in touch](mailto:license@n8n.io)
/// note | Proprietary licenses for Enterprise
Proprietary licenses are available for enterprise customers. [Get in touch](mailto:license@n8n.io)
///
n8n is [fair-code](http://faircode.io) licensed under the [Sustainable Use License](https://github.com/n8n-io/n8n/blob/master/LICENSE.md){:target=\_blank .external-link} and [n8n Enterprise License](https://github.com/n8n-io/n8n/blob/master/LICENSE_EE.md){:target=\_blank .external-link}.
## License FAQs

View File

@ -6,9 +6,9 @@ contentType: explanation
# AI coding with GPT
!!! info "Experimental feature with limited availability"
As an experimental feature, n8n is gradually rolling this out on Cloud from version 1.3.0. If you don't see the feature when you first upgrade to 1.3.0, please be patient: it's coming soon.
Not available on self-hosted.
/// info | Experimental feature with limited availability
As an experimental feature, n8n is gradually rolling this out on Cloud from version 1.3.0. If you don't see the feature when you first upgrade to 1.3.0, please be patient: it's coming soon.
/// Not available on self-hosted.
Python isn't supported.
## Use AI in the Code node

View File

@ -9,9 +9,9 @@ hide:
n8n provides these methods to make it easier to perform common tasks in expressions.
!!! note "Python support"
You can use Python in the Code node. It isn't available in expressions.
/// note | Python support
You can use Python in the Code node. It isn't available in expressions.
///
=== "JavaScript"
| Method | Description | Available in Code node? |
| ------ | ----------- | :---------------------: |

View File

@ -9,9 +9,9 @@ hide:
Methods for working with the input of the current node. Some methods and variables aren't available in the Code node.
!!! note "Python support"
You can use Python in the Code node. It isn't available in expressions.
/// note | Python support
You can use Python in the Code node. It isn't available in expressions.
///
=== "JavaScript"
| Method | Description | Available in Code node? |
| ------ | ----------- | :-------------------------: |

View File

@ -8,9 +8,9 @@ contentType: reference
A reference document listing built-in convenience functions to support data transformation in expressions for arrays.
!!! note "JavaScript in expressions"
You can use any JavaScript in expressions. Refer to [Expressions](/code/expressions/) for more information.
/// note | JavaScript in expressions
You can use any JavaScript in expressions. Refer to [Expressions](/code/expressions/) for more information.
///
[[% import "_macros/data-functions.html" as dataFunctions %]]
[[% for func in df_array %]]

View File

@ -8,9 +8,9 @@ contentType: reference
A reference document listing built-in convenience functions to support data transformation in expressions for dates.
!!! note "JavaScript in expressions"
You can use any JavaScript in expressions. Refer to [Expressions](/code/expressions/) for more information.
/// note | JavaScript in expressions
You can use any JavaScript in expressions. Refer to [Expressions](/code/expressions/) for more information.
///
[[% import "_macros/data-functions.html" as dataFunctions %]]
[[% for func in df_date %]]

View File

@ -8,9 +8,9 @@ contentType: overview
Data transformation functions are helper functions to make data transformation easier in expressions.
!!! note "JavaScript in expressions"
You can use any JavaScript in expressions. Refer to [Expressions](/code/expressions/) for more information.
/// note | JavaScript in expressions
You can use any JavaScript in expressions. Refer to [Expressions](/code/expressions/) for more information.
///
For a list of available functions, refer to the page for your data type:
* [Arrays](/code/builtin/data-transformation-functions/arrays/)

View File

@ -8,9 +8,9 @@ contentType: reference
A reference document listing built-in convenience functions to support data transformation in expressions for numbers.
!!! note "JavaScript in expressions"
You can use any JavaScript in expressions. Refer to [Expressions](/code/expressions/) for more information.
/// note | JavaScript in expressions
You can use any JavaScript in expressions. Refer to [Expressions](/code/expressions/) for more information.
///
[[% import "_macros/data-functions.html" as dataFunctions %]]
[[% for func in df_number %]]

View File

@ -8,9 +8,9 @@ contentType: reference
A reference document listing built-in convenience functions to support data transformation in expressions for objects.
!!! note "JavaScript in expressions"
You can use any JavaScript in expressions. Refer to [Expressions](/code/expressions/) for more information.
/// note | JavaScript in expressions
You can use any JavaScript in expressions. Refer to [Expressions](/code/expressions/) for more information.
///
[[% import "_macros/data-functions.html" as dataFunctions %]]
[[% for func in df_object %]]

View File

@ -8,9 +8,9 @@ contentType: reference
A reference document listing built-in convenience functions to support data transformation in expressions for strings.
!!! note "JavaScript in expressions"
You can use any JavaScript in expressions. Refer to [Expressions](/code/expressions/) for more information.
/// note | JavaScript in expressions
You can use any JavaScript in expressions. Refer to [Expressions](/code/expressions/) for more information.
///
[[% import "_macros/data-functions.html" as dataFunctions %]]
[[% for func in df_string %]]

View File

@ -9,9 +9,9 @@ hide:
Methods for working with date and time.
!!! note "Python support"
You can use Python in the Code node. It isn't available in expressions.
/// note | Python support
You can use Python in the Code node. It isn't available in expressions.
///
=== "JavaScript"
| Method | Description | Available in Code node? |
| ------ | ----------- | :-------------------------: |

View File

@ -13,7 +13,7 @@ Refer to [HTTP Request](/integrations/builtin/core-nodes/n8n-nodes-base.httprequ
Refer to [HTTP Request node cookbook | Pagination](/code/cookbook/http-node/pagination/) for example pagination configurations.
!!! note "HTTP node only"
These variables are for use in expressions in the HTTP node. You can't use them in other nodes.
/// note | HTTP node only
These variables are for use in expressions in the HTTP node. You can't use them in other nodes.
///
--8<-- "_snippets/integrations/builtin/core-nodes/http/pagination-variables.md"

View File

@ -7,9 +7,9 @@ contentType: overview
n8n provides built-in methods and variables for working with data and accessing n8n data. This section provides a reference of available methods and variables for use in expressions, with a short description.
!!! note "Availability in the expressions editor and the Code node"
Some methods and variables aren't available in the Code node. These are noted in the documentation.
/// note | Availability in the expressions editor and the Code node
Some methods and variables aren't available in the Code node. These are noted in the documentation.
///
All data transformation functions are only available in the expressions editor.
The [Cookbook](/code/cookbook/) contains examples for some common tasks, including some [Code node only](/code/cookbook/code-node/) functions.

View File

@ -9,9 +9,9 @@ hide:
This is an n8n-provided method for working with the [JMESPath](/code/jmespath/) library.
!!! note "Python support"
You can use Python in the Code node. It isn't available in expressions.
/// note | Python support
You can use Python in the Code node. It isn't available in expressions.
///
=== "JavaScript"
| Method | Description | Available in Code node? |
| ------ | ----------- | :-------------------------: |

View File

@ -15,9 +15,9 @@ This includes:
* Metadata about workflows, executions, and nodes.
* Information about instance [Variables](/code/variables/) and [External secrets](/external-secrets/).
!!! note "Python support"
You can use Python in the Code node. It isn't available in expressions.
/// note | Python support
You can use Python in the Code node. It isn't available in expressions.
///
=== "JavaScript"
| Method | Description | Available in Code node? |
| ------ | ----------- | :-------------------------: |

View File

@ -9,9 +9,9 @@ hide:
Methods for working with the output of other nodes. Some methods and variables aren't available in the Code node.
!!! note "Python support"
You can use Python in the Code node. It isn't available in expressions.
/// note | Python support
You can use Python in the Code node. It isn't available in expressions.
///
=== "JavaScript"
| Method | Description | Available in Code node? |
| ------ | ----------- | :-------------------------: |

View File

@ -11,9 +11,9 @@ contentType: reference
This gives access to the static workflow data.
!!! note "Experimental feature"
Static data isn't available when testing workflows. The workflow must be active and called by a trigger or webhook to save static data.
/// note | Experimental feature
Static data isn't available when testing workflows. The workflow must be active and called by a trigger or webhook to save static data.
///
You can save data directly in the workflow. This data should be small.
As an example: you can save a timestamp of the last item processed from

View File

@ -5,9 +5,10 @@ contentType: reference
# `vars`
!!! info "Feature availability"
* Available on Self-hosted Enterprise and Pro and Enterprise Cloud plans.
* You need access to the n8n instance owner account to create variables.
/// info | Feature availability
* Available on Self-hosted Enterprise and Pro and Enterprise Cloud plans.
* You need access to the n8n instance owner account to create variables.
///
`vars` contains all [Variables](/code/variables/) for the active environment. It's read-only: you can access variables using `vars`, but must set them using the UI.
@ -22,5 +23,6 @@ contentType: reference
_vars.<variable-name>
```
!!! note "vars and env"
`vars` gives access to user-created variables. It's part of the [Environments](/source-control-environments/) feature. `env` gives access to the [configuration environment variables](/hosting/environment-variables/environment-variables/) for your n8n instance.
/// note | vars and env
`vars` gives access to user-created variables. It's part of the [Environments](/source-control-environments/) feature. `env` gives access to the [configuration environment variables](/hosting/environment-variables/environment-variables/) for your n8n instance.
///

View File

@ -10,9 +10,9 @@ The binary data buffer contains all the binary file data processed by a workflow
* Using the data in calculations: for example, calculating a hash value based on it.
* Complex HTTP requests: for example, combining file upload with sending other data formats.
!!! note "Not available in Python"
`getBinaryDataBuffer()` isn't supported when using Python.
/// note | Not available in Python
`getBinaryDataBuffer()` isn't supported when using Python.
///
You can access the buffer using n8n's `getBinaryDataBuffer()` function:

View File

@ -7,9 +7,9 @@ contentType: overview
This section contains examples and recipes for tasks you can do with expressions.
!!! note "Python support"
You can use Python in the Code node. It isn't available in expressions.
/// note | Python support
You can use Python in the Code node. It isn't available in expressions.
///
[[% import "_macros/section-toc.html" as sectionToc %]]
[[ sectionToc.sectionToc(page) ]]

View File

@ -21,12 +21,12 @@ n8n supports two libraries:
- [Luxon](https://github.com/moment/luxon/){:target=_blank .external-link}, for working with data and time.
- [JMESPath](https://jmespath.org/){:target=_blank .external-link}, for querying JSON.
!!! note "No Python support"
Expressions must use JavaScript.
!!! note "Data in n8n"
When writing expressions, it's helpful to understand data structure and behavior in n8n. Refer to [Data](/data/) for more information on working with data in your workflows.
/// note | No Python support
Expressions must use JavaScript.
///
/// note | Data in n8n
When writing expressions, it's helpful to understand data structure and behavior in n8n. Refer to [Data](/data/) for more information on working with data in your workflows.
///
## Writing expressions

View File

@ -33,15 +33,15 @@ var jmespath = require('jmespath');
jmespath.search(object, searchString);
```
!!! note "Expressions must be single-line"
The longer code example doesn't work in Expressions, as they must be single-line.
/// note | Expressions must be single-line
The longer code example doesn't work in Expressions, as they must be single-line.
///
`object` is a JSON object, such as the output of a previous node. `searchString` is an expression written in the JMESPath query language. The [JMESPath Specification](https://jmespath.org/specification.html#jmespath-specification){:target=_blank .external-link} provides a list of supported expressions, while their [Tutorial](https://jmespath.org/tutorial.html) and [Examples](https://jmespath.org/examples.html){:target=_blank .external-link} provide interactive examples.
!!! warning "Search parameter order"
The examples in the [JMESPath Specification](https://jmespath.org/specification.html#jmespath-specification){:target=_blank .external-link} follow the pattern `search(searchString, object)`. The [JMESPath JavaScript library](https://github.com/jmespath/jmespath.js/){:target=_blank .external-link}, which n8n uses, supports `search(object, searchString)` instead. This means that when using examples from the JMESPath documentation, you may need to change the order of the search function parameters.
/// warning | Search parameter order
The examples in the [JMESPath Specification](https://jmespath.org/specification.html#jmespath-specification){:target=_blank .external-link} follow the pattern `search(searchString, object)`. The [JMESPath JavaScript library](https://github.com/jmespath/jmespath.js/){:target=_blank .external-link}, which n8n uses, supports `search(object, searchString)` instead. This means that when using examples from the JMESPath documentation, you may need to change the order of the search function parameters.
///
## Common tasks

View File

@ -8,12 +8,13 @@ contentType: howto
n8n passes dates between nodes as strings, so you need to parse them. Luxon makes this easier.
!!! note "Python support"
Luxon is a JavaScript library. The two convenience [variables](#variables) created by n8n are available when using Python in the Code node, but their functionality is limited:
* You can't perform Luxon operations on these variables. For example, there is no Python equivalent for `$today.minus(...)`.
* The generic Luxon functionality, such as [Convert date string to Luxon](#convert-date-string-to-Luxon), isn't available for Python users.
/// note | Python support
Luxon is a JavaScript library. The two convenience [variables](#variables) created by n8n are available when using Python in the Code node, but their functionality is limited:
* You can't perform Luxon operations on these variables. For example, there is no Python equivalent for `$today.minus(...)`.
* The generic Luxon functionality, such as [Convert date string to Luxon](#convert-date-string-to-Luxon), isn't available for Python users.
///
## Variables
@ -79,9 +80,9 @@ This section provides examples for some common operations. More examples, and de
You can convert date strings and other date formats to a Luxon DateTime object. You can convert from standard formats and from arbitrary strings.
!!! note "A difference between Luxon DateTime and JavaScript Date"
With vanilla JavaScript, you can convert a string to a date with `new Date('2019-06-23')`. In Luxon, you must use a function explicitly stating the format, such as `DateTime.fromISO('2019-06-23')` or `DateTime.fromFormat("23-06-2019", "dd-MM-yyyy")`.
/// note | A difference between Luxon DateTime and JavaScript Date
With vanilla JavaScript, you can convert a string to a date with `new Date('2019-06-23')`. In Luxon, you must use a function explicitly stating the format, such as `DateTime.fromISO('2019-06-23')` or `DateTime.fromFormat("23-06-2019", "dd-MM-yyyy")`.
///
#### If you have a date in a supported standard technical format:
Most dates use `fromISO()`. This creates a Luxon DateTime from an ISO 8601 string. For example:

View File

@ -5,17 +5,18 @@ contentType: howto
# Custom variables
!!! info "Feature availability"
* Available on Self-hosted Enterprise and Pro Cloud plans.
* You need access to the n8n instance owner account to create and edit variables. All users can use existing variables.
/// info | Feature availability
* Available on Self-hosted Enterprise and Pro Cloud plans.
* You need access to the n8n instance owner account to create and edit variables. All users can use existing variables.
Available in version 0.225.0 and above.
Available in version 0.225.0 and above.
///
Custom variables allow you to store and reuse values in n8n workflows.
!!! warning "Variables are shared"
When you create a variable, it's available to everyone on your n8n instance.
/// warning | Variables are shared
When you create a variable, it's available to everyone on your n8n instance.
///
## Create variables
To create a new variable:

View File

@ -10,10 +10,9 @@ In this lesson you will learn how to navigate the Editor UI. We will walk throug
First of all, you need to get n8n. There are different [ways to set up n8n](/hosting/options/){:target="_blank" .external}, choose the option that best suits your skills and needs.
!!! warning "n8n version"
This course was developed on n8n version 0.175.1. In other versions, the Editor UI might look different, but the core functionality of the workflows should not be impacted.
/// warning | n8n version
This course was developed on n8n version 0.175.1. In other versions, the Editor UI might look different, but the core functionality of the workflows should not be impacted.
///
Once you have n8n running, open the Editor UI in a browser window. It should look like this:
<figure><img src="/_images/courses/level-one/chapter-one/editor-ui.png" alt="Editor UI" style="width:100%"><figcaption align = "center"><i>Editor UI</i></figcaption></figure>
@ -63,11 +62,13 @@ The *canvas* is the gray grid background in the Editor UI. On the canvas, there
<figure><img src="/_images/courses/level-one/chapter-one/workflow-canvas.png" alt="Workflow canvas" style="width:100%"><figcaption align = "center"><i>Workflow canvas</i></figcaption></figure>
!!! note "Moving the canvas"
You can move the workflow canvas around in two ways:
/// note | Moving the canvas
You can move the workflow canvas around in two ways:
- Click **Ctrl + Left Mouse Button** on the canvas and move it around
- Place two fingers on your touchpad and slide
///
- Click **Ctrl + Left Mouse Button** on the canvas and move it around
- Place two fingers on your touchpad and slide
Don't worry about workflow execution and activation for now, we will explain these concepts later on in the course.
@ -75,18 +76,18 @@ Don't worry about workflow execution and activation for now, we will explain the
You can think of nodes as building blocks that serve different functions but, when put together, they make up a functioning machinery an automated workflow.
!!! note "Node"
A node is an individual step in your workflow — one that either (a) loads, (b) processes or (c) sends data.
/// note | Node
A node is an individual step in your workflow — one that either (a) loads, (b) processes or (c) sends data.
///
Based on their function, nodes can be classified into two types:
- **Regular Nodes** add, remove, and edit data, as well as request and send external data.
- **Trigger Nodes** start a workflow and supply the initial data.
!!! note "Keep in mind"
Among the Regular and Trigger nodes there are some nodes that do not represent any app or service, instead they serve general functions like scheduling workflows (e.g. Cron and Interval nodes) or adding JavaScript functions (e.g. Function and Function Item nodes). We refer to these as *Core Nodes*.
/// note | Keep in mind
Among the Regular and Trigger nodes there are some nodes that do not represent any app or service, instead they serve general functions like scheduling workflows (e.g. Cron and Interval nodes) or adding JavaScript functions (e.g. Function and Function Item nodes). We refer to these as *Core Nodes*.
///
### Start node
@ -134,9 +135,9 @@ If you hover on a node, you'll notice that four icons appear on top:
<figure><img src="/_images/courses/level-one/chapter-one/Node-buttons.gif" alt="The four node buttons" style="width:100%"><figcaption align = "center"><i>The four node buttons</i></figcaption></figure>
!!! note "Moving a workflow"
To move a workflow around the canvas, select all nodes with your mouse or by clicking **Ctrl + A**, click and hold on a node, then drag it to any point you want on the canvas.
/// note | Moving a workflow
To move a workflow around the canvas, select all nodes with your mouse or by clicking **Ctrl + A**, click and hold on a node, then drag it to any point you want on the canvas.
///
## Summary

View File

@ -19,10 +19,9 @@ Open the nodes panel, search for the *Hacker News* node, and click on it to add
When you add a new node to the Editor UI, the node will be automatically activated and open a window with two tabs on the left side: ***Parameters*** and ***Settings***.
!!! note "Parameters vs Settings"
*Parameters* are different for each node, depending on its functionality.<br />
*Settings* are the same for all nodes.
/// note | Parameters vs Settings
*Parameters* are different for each node, depending on its functionality.<br />
/// *Settings* are the same for all nodes.
### Parameters
@ -47,9 +46,9 @@ The configuration of the parameters for the *Hacker News node* should now look l
The *Settings* section includes several options for node design and executions. In this case, we'll configure only the first two settings, which set the node's appearance in the Editor UI. In the *Hacker News node* settings, edit:
- *Notes:* Get the 10 latest articles
!!! note "Node notes"
It is often helpful, especially for complex or shared workflows, to add a short description in the node about what it does.
/// note | Node notes
It is often helpful, especially for complex or shared workflows, to add a short description in the node about what it does.
///
- *Display note in flow?:* toggle to true<br/>
This option will display the description note under the node in the Editor UI.
@ -58,13 +57,14 @@ The configuration of the settings for the *Hacker News node* looks like this:
<figure><img src="/_images/courses/level-one/chapter-two/l1-c2-hacker-news-node-setting-configuration.png" alt="Hacker News node renaming" style="width:100%"><figcaption align = "center"><i>Hacker News node renaming</i></figcaption></figure>
!!! note "Renaming a node"
You can rename the node with a name that's more descriptive for your use case. There are two ways to do this:
/// note | Renaming a node
You can rename the node with a name that's more descriptive for your use case. There are two ways to do this:
- Select the node you want to rename and at the same time press the F2 key on your keyboard.
- Double-click on the node to open the node window. Click on the name of the node in the top left corner of the window, rename it as you like, then click *Rename* to save the node under the new name.
- Select the node you want to rename and at the same time press the F2 key on your keyboard.
- Double-click on the node to open the node window. Click on the name of the node in the top left corner of the window, rename it as you like, then click *Rename* to save the node under the new name.
<figure><img src="/_images/courses/level-one/chapter-two/l1-c2-renaming-a-node-from-the-keyboard.png" alt="Renaming a node" style="width:100%"><figcaption align = "center"><i>Renaming a node from the keyboard</i></figcaption></figure>
<figure><img src="/_images/courses/level-one/chapter-two/l1-c2-renaming-a-node-from-the-keyboard.png" alt="Renaming a node" style="width:100%"><figcaption align = "center"><i>Renaming a node from the keyboard</i></figcaption></figure>
///
## 3. Save the workflow
@ -85,9 +85,9 @@ Click on the *Execute Node* button in the top right corner of the node window. Y
## Node executions
!!! note "Node execution"
A node execution represents a run of that node to retrieve the specified data.
/// note | Node execution
A node execution represents a run of that node to retrieve the specified data.
///
If a node is executed successfully a small green circle with a number inside will appear on top of the node.
@ -95,9 +95,9 @@ If a node is executed successfully a small green circle with a number inside wil
If the parameters are configured correctly and everything works fine, the requested data will be displayed in the node window in *Table*, *JSON* and *Schema* format. You can switch between these views by selecting the one you want from the *JSON|Table|Schema* button at the top of the node window.
!!! note "Table vs JSON views"
The *Table* view is the default. It displays the requested data in a table, where the rows are the records and the columns are the available attributes of those records.
/// note | Table vs JSON views
The *Table* view is the default. It displays the requested data in a table, where the rows are the records and the columns are the available attributes of those records.
///
<figure><img src="/_images/courses/level-one/chapter-two/l1-c2-results-in-json-view-for-the-hacker-news-node.png" alt="Results in JSON view for the Hacker News node" style="width:100%"><figcaption align = "center"><i>Results in JSON view for the Hacker News node</i></figcaption></figure>
@ -110,9 +110,9 @@ This field displays the number of items (records) that are returned by the node
- Under the node name beside the **Parameters** tab, there is a link to the node's **Docs**. Check it out if you run into trouble or are not sure how to configure the node's parameters.
!!! warning "Error in nodes"
A red warning icon on a node means that the node has errors. This might happen if the node credentials are missing or incorrect, or the node parameters are not configured correctly.
/// warning | Error in nodes
A red warning icon on a node means that the node has errors. This might happen if the node credentials are missing or incorrect, or the node parameters are not configured correctly.
///
<figure style="text-align:center;"><img src="/_images/courses/level-one/chapter-one/error-node.png" alt="Error in nodes" style="width:30%" align="center"><figcaption align = "center"><i>Error in nodes</i></figcaption></figure>

View File

@ -19,9 +19,9 @@ In the previous chapter, you used a specific action in the app (YCombinator). Ho
Though it's not possible to directly export the data, the data warehouse has a couple of API endpoints. That's all we need to access the data via the [***HTTP Request node***](/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/){:target="_blank" .external} in n8n.
!!! note "No node for that service?"
The *HTTP Request node* is one of the most versatile nodes, allowing you to make HTTP requests which can be used to query data from apps and services. You can use it to access data from apps or services that don't have a dedicated node in n8n.
/// note | No node for that service?
The *HTTP Request node* is one of the most versatile nodes, allowing you to make HTTP requests which can be used to query data from apps and services. You can use it to access data from apps or services that don't have a dedicated node in n8n.
///
Now, in your Editor UI, add an *HTTP Request node* like you learned in the lesson [Adding nodes](/courses/level-one/chapter-1/#adding-nodes). The node window will open, where you need to configure some parameters.
@ -36,9 +36,9 @@ In the panel, select:
- *Authentication > Generic Credential Type > Generic Auth Type:* Header Auth<br/>
This option requires credentials to allow you to access the data.
!!! note "Credentials"
Credentials are unique pieces of information that identify a user or a service and enable them to access apps or services (in our case, represented as n8n nodes). A common form of credentials is a username and a password, but they can take other forms depending on the service.
/// note | Credentials
Credentials are unique pieces of information that identify a user or a service and enable them to access apps or services (in our case, represented as n8n nodes). A common form of credentials is a username and a password, but they can take other forms depending on the service.
///
To add your credentials, click on the field *Credential for Header Auth* and select *Create New Credential*. This will open the Credentials window.
@ -47,9 +47,9 @@ In the *Connection* tab, fill in the two fields:
- *Name:* The Header Auth name you received in the email when you signed up for this course.
- *Value:* The Header Auth value you received in the email when you signed up for this course.
!!! note "Credentials naming"
New credentials are named "*node name* account" by default. You can rename the credentials by clicking on the name, similarly to renaming nodes. It's good practice to give them names that identify the app/service, type, and purpose of the credential. A naming convention makes it easier to keep track of and identify your credentials.
/// note | Credentials naming
New credentials are named "*node name* account" by default. You can rename the credentials by clicking on the name, similarly to renaming nodes. It's good practice to give them names that identify the app/service, type, and purpose of the credential. A naming convention makes it easier to keep track of and identify your credentials.
///
Click on the *Save* button in the top right corner to save your credentials. Your *Credentials Connection* window should look like this:
<figure><img src="/_images/courses/level-one/chapter-five/l1-c5-5-1-http-request-node-credentials.png" alt="HTTP Request node credentials" style="width:100%"><figcaption align = "center"><i>HTTP Request node credentials</i></figcaption></figure>

View File

@ -31,9 +31,9 @@ Now that the table is prepared let's return to the workflow in the Editor UI.
Add an ***Airtable node*** connected to the HTTP Request node.
!!! note "Spreadsheet nodes"
You can replace the *Airtable* node with another spreadsheet app/service. For example, n8n also has nodes for [*Google Sheets*](/integrations/builtin/app-nodes/n8n-nodes-base.googlesheets/){:target="_blank" .external} and [*Spreadsheet File*](/integrations/builtin/core-nodes/n8n-nodes-base.spreadsheetfile/){:target="_blank" .external}.
/// note | Spreadsheet nodes
You can replace the *Airtable* node with another spreadsheet app/service. For example, n8n also has nodes for [*Google Sheets*](/integrations/builtin/app-nodes/n8n-nodes-base.googlesheets/){:target="_blank" .external} and [*Spreadsheet File*](/integrations/builtin/core-nodes/n8n-nodes-base.spreadsheetfile/){:target="_blank" .external}.
///
In the *Airtable node* window, configure the following parameters:

View File

@ -10,9 +10,9 @@ To insert only processing orders into Airtable we need to filter our data by *or
This if-then-else command is conditional logic. In n8n workflows, conditional logic can be implemented with the [**IF node**](/integrations/builtin/core-nodes/n8n-nodes-base.if/){:target="_blank" .external}, which splits a workflow conditionally based on comparison operations.
!!! note "IF vs Switch"
If you need to filter data on more than two conditional routes that are possible with the *IF* node (true and false), use the [*Switch node*](/integrations/builtin/core-nodes/n8n-nodes-base.switch/){:target="_blank" .external}. The *Switch node* is similar to the *IF* node, but supports multiple output routes.
/// note | IF vs Switch
If you need to filter data on more than two conditional routes that are possible with the *IF* node (true and false), use the [*Switch node*](/integrations/builtin/core-nodes/n8n-nodes-base.switch/){:target="_blank" .external}. The *Switch node* is similar to the *IF* node, but supports multiple output routes.
///
Back to your workflow, remove the connection between the *HTTP Request* node and the *Airtable* node. Add an *IF* node connected to the *HTTP Request* node.
@ -21,8 +21,9 @@ In the *IF* node window click on *Add Condition* > *string* and configure the pa
- *Value 1*: Current Node > Input Data > JSON > orderStatus → `{{$json["orderStatus"]}}` <br>
To select this value, click the **Expression** tab on the right side of the Value 1 field.
!!! note "Expressions"
An expression is a string of characters and symbols in a programming language that represents a value depending upon its input. In n8n workflows, you can use expressions in a node to refer to another node for input data. In our example, the IF node references the data output by the HTTP Request node.
/// note | Expressions
An expression is a string of characters and symbols in a programming language that represents a value depending upon its input. In n8n workflows, you can use expressions in a node to refer to another node for input data. In our example, the IF node references the data output by the HTTP Request node.
///
<figure><img src="/_images/courses/level-one/chapter-five/l1-c5-5-3-if-node-expression-editor.png" alt="Expression Editor in the IF node" style="width:100%"><figcaption align = "center"><i>Expression Editor in the IF node</i></figcaption></figure>
@ -30,9 +31,9 @@ To select this value, click the **Expression** tab on the right side of the Valu
- *Operation:* equal
- *Value 2:* processing
!!! warning "Data Type"
Make sure to select the correct data type (boolean, date & time, number, or string) of the referenced data in *Add Condition*.
/// warning | Data Type
Make sure to select the correct data type (boolean, date & time, number, or string) of the referenced data in *Add Condition*.
///
Now execute the IF node and have a look at the resulting data, which should look like this:

View File

@ -10,9 +10,9 @@ The next step in Nathan's workflow is to insert the *employeeName* and *orderId*
For this, you need to use the [**Set node**](/integrations/builtin/core-nodes/n8n-nodes-base.set/){:target="_blank" .external}, which allows you to select and set the data you want to be transferred from one app/service to another.
!!! note "Set node"
The *Set* node can set completely new data as well as overwrite data that already exists. This node is crucial in workflows which expect incoming data from previous nodes, such as when inserting values into spreadsheets or databases.
/// note | Set node
The *Set* node can set completely new data as well as overwrite data that already exists. This node is crucial in workflows which expect incoming data from previous nodes, such as when inserting values into spreadsheets or databases.
///
In your workflow, add a new *Set* node between the *IF* node and the *Airtable* node. In the Set node window you need to toggle *Keep Only Set* to true and then add two values:

View File

@ -13,9 +13,9 @@ The next step in Nathan's workflow is to calculate two values from the booked or
To calculate data and add more functionality to your workflows you can use the **Code node**, which lets you write custom JavaScript code.
!!! warning "Code node modes"
The **Code node** has two operational *Modes* that change the way it processes data. The *Run Once for All Items* mode allows you to accumulate data from all items on the input list. The *Run Once for Each Item* is used to add custom snippets of JavaScript code that should be executed once for every item that it receives as the input. Learn more about how to use the [Code node](/integrations/builtin/core-nodes/n8n-nodes-base.code/){:target="_blank" .external}.
/// warning | Code node modes
The **Code node** has two operational *Modes* that change the way it processes data. The *Run Once for All Items* mode allows you to accumulate data from all items on the input list. The *Run Once for Each Item* is used to add custom snippets of JavaScript code that should be executed once for every item that it receives as the input. Learn more about how to use the [Code node](/integrations/builtin/core-nodes/n8n-nodes-base.code/){:target="_blank" .external}.
///
- Create your own node.
- Write custom expressions.
- Use the Code node.
@ -69,9 +69,9 @@ return [{json:{totalBooked, bookedSum}}];
Notice the format in which we return the results of the calculation:
`return [{json:{totalBooked, bookedSum}}]`
!!! warning "Data structure error"
If you don't use the correct data structure, you will get an error message: `Error: Always an Array of items has to be returned!`
/// warning | Data structure error
If you don't use the correct data structure, you will get an error message: `Error: Always an Array of items has to be returned!`
///
Now execute the node and you should see the following results:

View File

@ -8,9 +8,9 @@ In this step of the workflow you will learn how to send messages to a Discord ch
Now that you have a calculated summary of the booked orders, you need to notify Nathan's team in their Discord channel. For this workflow, you will send messages to the [n8n server](https://discord.gg/G98WXzsjky){:target="_blank" .external} on Discord.
!!! note "Communication nodes"
You can replace the Discord node with another communication app. For example, n8n also has nodes for [Slack](/integrations/builtin/app-nodes/n8n-nodes-base.slack/){:target="_blank" .external} and [Mattermost](/integrations/builtin/app-nodes/n8n-nodes-base.mattermost/){:target="_blank" .external}.
/// note | Communication nodes
You can replace the Discord node with another communication app. For example, n8n also has nodes for [Slack](/integrations/builtin/app-nodes/n8n-nodes-base.slack/){:target="_blank" .external} and [Mattermost](/integrations/builtin/app-nodes/n8n-nodes-base.mattermost/){:target="_blank" .external}.
///
In your workflow, add a Discord node connected to the Code node. In the Discord node window, configure the parameters:

View File

@ -18,9 +18,9 @@ In your workflow, add the Schedule trigger node, and configure its parameters:
<figure><img src="/_images/courses/level-one/chapter-five/l1-c5-5-7-schedule-trigger-node.png" alt="Schedule Trigger Node" style="width:100%"><figcaption align = "center"><i>Schedule Trigger Node</i></figcaption></figure>
!!! warning "Keep in mind"
To ensure accurate scheduling with the Schedule Trigger Node, be sure the timezone is set correctly for your n8n instance (or the workflow).
/// warning | Keep in mind
To ensure accurate scheduling with the Schedule Trigger Node, be sure the timezone is set correctly for your n8n instance (or the workflow).
///
## What's next?

View File

@ -27,9 +27,9 @@ The *Workflow Executions* window displays a table with the following information
* _Status / Running time:_ The status of the workflow (Running, Succeeded or Error) / The duration it took the workflow to execute
* _Execution ID:_ The ID of this workflow execution
!!! note "Workflow execution status"
In the **Workflow Executions** window you can filter the displayed executions by workflow and by status (**All**, **Error**, **Running**, or **Success**).
The information displayed here depends on what workflows and executions you set up in *Workflow Settings* to be saved.
/// note | Workflow execution status
In the **Workflow Executions** window you can filter the displayed executions by workflow and by status (**All**, **Error**, **Running**, or **Success**).
///The information displayed here depends on what workflows and executions you set up in *Workflow Settings* to be saved.
**Workflow Settings**

View File

@ -12,9 +12,9 @@ In this chapter you will learn how to export and import workflows.
n8n workflows can be saved locally as JSON files. This is useful if you want to share your workflow with someone else, or import a workflow from someone else.
!!! warning "Sharing credentials"
Note that the exported JSON file of your workflow will contain your credentials as well. If you don't want to share your credentials (recommended), delete them from the JSON file.
/// warning | Sharing credentials
Note that the exported JSON file of your workflow will contain your credentials as well. If you don't want to share your credentials (recommended), delete them from the JSON file.
///
You can export and import workflows in two ways:

View File

@ -13,43 +13,44 @@ In a basic sense, n8n nodes function as an Extract, Transform, Load (ETL) tool.
The data that moves along from node to node in your workflow must be in a format (structure) that can be recognized and interpreted by each node. In n8n, this required structure is an array of objects.
!!! note "What is an array of objects?"
/// note | What is an array of objects?
An array is a list of values. The array can be empty or contain several elements. Each element is stored at a position (index) in the list, starting at 0, and can be referenced by the index number. For example, in the array `["Leonardo", "Michelangelo", "Donatello", "Raphael"];` the element `Donatello` is stored at index 2.
An array is a list of values. The array can be empty or contain several elements. Each element is stored at a position (index) in the list, starting at 0, and can be referenced by the index number. For example, in the array `["Leonardo", "Michelangelo", "Donatello", "Raphael"];` the element `Donatello` is stored at index 2.
An object stores key-value pairs, instead of values at numbered indexes as in arrays. The order of the pairs is not important, as the values can be accessed by referencing the key name. For example, the object below contains two properties (`name` and `color`):
An object stores key-value pairs, instead of values at numbered indexes as in arrays. The order of the pairs is not important, as the values can be accessed by referencing the key name. For example, the object below contains two properties (`name` and `color`):
```json
{
name: 'Michelangelo',
color: 'blue',
}
```
```json
An array of objects is an array that contains one or more objects. For example, the array `turtles` below contains four objects:
```javascript
var turtles = [
{
name: 'Michelangelo',
color: 'orange',
},
{
name: 'Donatello',
color: 'purple',
},
{
name: 'Raphael',
color: 'red',
},
{
name: 'Leonardo',
color: 'blue',
}
```
];
```
An array of objects is an array that contains one or more objects. For example, the array `turtles` below contains four objects:
You can access the properties of an object using dot notation with the syntax `object.property`. For example, `turtles[1].color` gets the color of the second turtle.
///
```javascript
var turtles = [
{
name: 'Michelangelo',
color: 'orange',
},
{
name: 'Donatello',
color: 'purple',
},
{
name: 'Raphael',
color: 'red',
},
{
name: 'Leonardo',
color: 'blue',
}
];
```
You can access the properties of an object using dot notation with the syntax `object.property`. For example, `turtles[1].color` gets the color of the second turtle.
Data sent from one node to another is sent as an array of JSON objects. The elements in this collection are called [Items](/workflows/items/){:target="_blank"}.
@ -78,21 +79,22 @@ For example, the array of objects representing the Ninja turtles would look like
<figure><img src="/_images/courses/level-two/chapter-one/exercise_function_notnested.png" alt="" style="width:100%"><figcaption align = "center"><i>Array of objects in the Code node</i></figcaption></figure>
!!! warning "JSON objects"
/// warning | JSON objects
Notice that this array of objects contains an extra key: `json`. n8n expects you to wrap each object in an array in another object, with the key `json`.
Notice that this array of objects contains an extra key: `json`. n8n expects you to wrap each object in an array in another object, with the key `json`.
<figure><img src="/_images/courses/level-two/chapter-one/explanation_datastructure.png" alt="" style="width:100%"><figcaption align = "center"><i>Illustration of data structure in n8n</i></figcaption></figure>
It's good practice to pass the data in the right structure used by n8n. But don't worry if you forget to add the `json` key to an item, n8n (version 0.166.0 and above) adds it automatically.
<figure><img src="/_images/courses/level-two/chapter-one/explanation_datastructure.png" alt="" style="width:100%"><figcaption align = "center"><i>Illustration of data structure in n8n</i></figcaption></figure>
It's good practice to pass the data in the right structure used by n8n. But don't worry if you forget to add the `json` key to an item, n8n (version 0.166.0 and above) adds it automatically.
///
You can also have nested pairs, for example if you want to define a primary and a secondary color. In this case, you need to further wrap the key-value pairs in curly braces `{}`.
!!! note "n8n data structure video"
[This talk](https://www.youtube.com/watch?v=mQHT3Unn4tY) offers a more detailed explanation of data structure in n8n.
/// note | n8n data structure video
[This talk](https://www.youtube.com/watch?v=mQHT3Unn4tY) offers a more detailed explanation of data structure in n8n.
<iframe width="560" height="315" src="https://www.youtube.com/embed/mQHT3Unn4tY" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
///
<iframe width="560" height="315" src="https://www.youtube.com/embed/mQHT3Unn4tY" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
### Exercise

View File

@ -11,10 +11,9 @@ In this chapter, you will learn how to process different types of data using [n8
You're most likely familiar with HTML and XML.
!!! note "HTML vs. XML"
HTML is a markup language used to describe the structure and semantics of a web page. XML looks similar to HTML, but the tag names are different, as they describe the kind of data they hold.
/// note | HTML vs. XML
HTML is a markup language used to describe the structure and semantics of a web page. XML looks similar to HTML, but the tag names are different, as they describe the kind of data they hold.
///
If you need to process HTML or XML data in your n8n workflows, use the [HTML node](/integrations/builtin/core-nodes/n8n-nodes-base.html/) or [XML node](/integrations/builtin/core-nodes/n8n-nodes-base.xml/).
Use the HTML node to extract HTML content of a webpage, by referencing CSS selectors. This is useful if you want to collect structured information from a website (web-scraping).
@ -280,12 +279,13 @@ In n8n, you can process binary data with the following nodes:
To read or write a binary file, you need to write the path (location) of the file in the node's `File Name` parameter.
!!! warning "Naming the right path"
/// warning | Naming the right path
The file path looks slightly different depending on how you are running n8n:
The file path looks slightly different depending on how you are running n8n:
- npm: `~/my_file.json`
- n8n cloud / Docker: `/tmp/my_file.json`
///
- npm: `~/my_file.json`
- n8n cloud / Docker: `/tmp/my_file.json`
### Exercise

View File

@ -16,12 +16,14 @@ Merging data can involve:
- Creating one data set from multiple sources.
- Synchronizing data between multiple systems. For example, removing duplicate data, or updating data in one system when it changes in another.
!!! note "One-way vs. two-way sync"
In a one-way sync, data is synchronized in one direction. One system serves as the single source of truth. When information changes in that main system, it automatically changes in the secondary system; but if information changes in the secondary system, the changes are not reflected in the main system.
/// note | One-way vs. two-way sync
In a one-way sync, data is synchronized in one direction. One system serves as the single source of truth. When information changes in that main system, it automatically changes in the secondary system; but if information changes in the secondary system, the changes are not reflected in the main system.
In a two-way sync, data is synchronized in both directions (between both systems). When information changes in either of the two systems, it automatically changes in the other one as well.
[This blog tutorial](https://n8n.io/blog/how-to-sync-data-between-two-systems/) explains how to sync data one-way and two-way between two CRMs.
///
In a two-way sync, data is synchronized in both directions (between both systems). When information changes in either of the two systems, it automatically changes in the other one as well.
[This blog tutorial](https://n8n.io/blog/how-to-sync-data-between-two-systems/) explains how to sync data one-way and two-way between two CRMs.
In n8n, you can merge data from two different nodes using the [Merge node](/integrations/builtin/core-nodes/n8n-nodes-base.merge/){:target="_blank" .external}, which provides several merging modes:
@ -38,13 +40,13 @@ Notice that three of these modes require a key (Merge By Key, Keep Key Matches,
<figure><img src="/_images/courses/level-two/chapter-three/explanation_mergepropertyinput.png" alt="" style="width:100%"><figcaption align = "center"><i>Property Input fields in the Merge node</i></figcaption></figure>
!!! warning "Property Input in dot notation"
/// warning | Property Input in dot notation
If you want to reference nested values in the *Merge node* parameters `Property Input 1` and `Property Input 2`, you need to enter the property key in dot-notation format (as text, not as an expression).
///
If you want to reference nested values in the *Merge node* parameters `Property Input 1` and `Property Input 2`, you need to enter the property key in dot-notation format (as text, not as an expression).
!!! note
You can also find the Merge node under the alias Join. This might be more intuitive if you're familiar with SQL joins.
/// note
You can also find the Merge node under the alias Join. This might be more intuitive if you're familiar with SQL joins.
///
### Exercise
@ -80,10 +82,9 @@ To [create a loop in an n8n workflow](/flow-logic/looping/#using-loops-in-n8n){:
If you need to process large incoming data, execute the Code node multiple times, or avoid API rate limits, it's best to split the data into batches (groups) and process these batches. You can do this with the [Loop Over Items node](/integrations/builtin/core-nodes/n8n-nodes-base.splitinbatches/){:target="_blank" .external}. This node splits input data into a specified batch size and, with each iteration, returns a predefined amount of data.
!!! warning "Execution of Loop Over Items node"
The Loop Over Items node stops executing after all the incoming items get divided into batches and passed on to the next node in the workflow, so it is not necessary to add an IF node to stop the loop.
/// warning | Execution of Loop Over Items node
The Loop Over Items node stops executing after all the incoming items get divided into batches and passed on to the next node in the workflow, so it is not necessary to add an IF node to stop the loop.
///
### Exercise

View File

@ -30,10 +30,9 @@ Then, you can take further actions by connecting other nodes, for example sendin
The only difference between a regular workflow and an Error Workflow is that the latter contains an Error Trigger node. Make sure to create this node before you set a workflow as Error Workflow.
!!! note "Error workflows"
- You don't need to activate workflows that use the Error Workflow node.
- A workflow that uses the *Error Trigger node* uses itself as the error workflow.
/// note | Error workflows
- You don't need to activate workflows that use the Error Workflow node.
/// - A workflow that uses the *Error Trigger node* uses itself as the error workflow.
- The Error Trigger node is designed to get triggered only when the monitored workflow gets executed automatically. This means you can't test this (to see the result of) an error workflow while executing the monitored workflow manually.
- You can set the same Error Workflow for multiple workflows.
@ -109,13 +108,14 @@ Another way of troubleshooting workflows is to include a [Stop and Error node](/
The Stop and Error node can only be added as the last node in a workflow.
!!! note "When to throw errors"
/// note | When to throw errors
Throwing exceptions with the Stop and Error node is useful for verifying the data (or assumptions about the data) from a node and returning custom error messages.
Throwing exceptions with the Stop and Error node is useful for verifying the data (or assumptions about the data) from a node and returning custom error messages.
If you are working with data from a third-party service, you may come across problems such as: wrongly formatted JSON output, data with the wrong type (for example, numeric data that has a non-numeric value), missing values, or errors from remote servers.
If you are working with data from a third-party service, you may come across problems such as: wrongly formatted JSON output, data with the wrong type (for example, numeric data that has a non-numeric value), missing values, or errors from remote servers.
Though this kind of invalid data might not cause the workflow to fail right away, it could cause problems later on, and then it can become difficult to track the source error. This is why it is better to throw an error at the time you know there might be a problem.
Though this kind of invalid data might not cause the workflow to fail right away, it could cause problems later on, and then it can become difficult to track the source error. This is why it is better to throw an error at the time you know there might be a problem.
<figure><img src="/_images/courses/level-two/chapter-four/exercise_errors_stopanderror.png" alt="" style="width:100%"><figcaption align = "center"><i>Stop and Error node with error message</i></figcaption></figure>
<figure><img src="/_images/courses/level-two/chapter-four/exercise_errors_stopanderror.png" alt="" style="width:100%"><figcaption align = "center"><i>Stop and Error node with error message</i></figcaption></figure>
///

View File

@ -22,9 +22,8 @@ The workflow should look like this:
<figure><img src="/_images/courses/level-two/chapter-five/workflow1.png" alt="" style="width:100%"><figcaption align = "center"><i>Workflow 1 for merging data from Airtable and the Countries API</i></figcaption></figure>
!!! question "Quiz questions"
* How many items does the HTTP Request node return?
* How many items does the Merge node return?
/// question | Quiz questions
* How many items does the HTTP Request node return?
/// * How many items does the Merge node return?
* How many unique regions are assigned in the customers table?
* What is the subregion assigned to the customerID 10?

View File

@ -30,10 +30,9 @@ The first part of the workflow consists of five nodes:
3. Use the [Merge node](/integrations/builtin/core-nodes/n8n-nodes-base.merge/){:target="_blank" .external} to merge data from the Airtable and HTTP Request node, based on the common key `customer ID`.
4. Use the [Item Lists node](/integrations/builtin/core-nodes/n8n-nodes-base.itemlists/){:target="_blank" .external} to sort data by orderPrice in descending order.
!!! question "Quiz questions"
* What is the name of the employee assigned to customer 1?
* What is the order status of customer 6?
/// question | Quiz questions
* What is the name of the employee assigned to customer 1?
/// * What is the order status of customer 6?
* What is the highest order price?
## Part 2 Generating file for regional sales
@ -50,10 +49,9 @@ The second part of the workflow consists of five nodes:
* Webhook URL: The webhook URL you received in the email when you signed up for this course.
* Text: "I sent the file via email with the label ID `{label ID}` and wrote the binary file `{file name}`. My ID: " followed by your ID. <br/> Note that you need to replace the text in curly braces `{}` with expressions that reference the data from the nodes.
!!! question "Quiz questions"
* How many orders are assigned to the region Americas?
* What is the total price of the orders in the region Americas?
/// question | Quiz questions
* How many orders are assigned to the region Americas?
/// * What is the total price of the orders in the region Americas?
* How many items are returned by the *Write Binary File node*?
## Part 3 Generating files for total sales
@ -70,8 +68,7 @@ The third part of the workflow consists of seven nodes:
* Webhook URL: The webhook URL you received in the email when you signed up for this course.
* Text: "I created the spreadsheet `{file name}`. My ID:" followed by your ID. <br/> The `{file name}` should be an expression that references data from the Spreadsheet File node.<br/>
!!! question "Quiz questions"
* What is the lowest order price in the first batch of items?
* What is the formatted date of customer 7?
/// question | Quiz questions
* What is the lowest order price in the first batch of items?
/// * What is the formatted date of customer 7?
* How many items are returned by the *Spreadsheet File node*?

View File

@ -21,9 +21,8 @@ The workflow should look like this:
<figure><img src="/_images/courses/level-two/chapter-five/workflow3.png" alt="" style="width:100%"><figcaption align = "center"><i>Workflow 3 for monitoring workflow errors</i></figcaption></figure>
!!! question "Quiz questions"
* What fields does the Error Trigger node return?
* What information about the execution does the Error Trigger node return?
/// question | Quiz questions
* What fields does the Error Trigger node return?
/// * What information about the execution does the Error Trigger node return?
* What information about the workflow does the Error Trigger node return?
* What is the expression to reference the workflow name?

View File

@ -5,8 +5,9 @@ contentType: howto
# Credential sharing
!!! info "Feature availability"
Available on Pro and Enterprise Cloud plans, and Enterprise self-hosted plans.
/// info | Feature availability
Available on Pro and Enterprise Cloud plans, and Enterprise self-hosted plans.
///
Credential sharing allows you to share a credential you created with other users in the same n8n workspace as you. The other users can then use the credential in their workflows. They can't access or edit the credential details.

View File

@ -6,9 +6,9 @@ contentType: howto
n8n allows you to edit [pinned data](/data/data-pinning/). This means you can check different scenarios without setting up each scenario and sending the relevant data from your external system. It makes it easier to test edge cases.
!!! note "For development only"
Data editing isn't available for production workflow executions. It's a feature to help test workflows during development.
/// note | For development only
Data editing isn't available for production workflow executions. It's a feature to help test workflows during development.
///
## Edit output data
To edit output data:

View File

@ -13,9 +13,9 @@ You can use this when working with data from external sources, to avoid having t
* If the external resource has data or usage limits, pinning data during tests avoids consuming your resource limits.
* You can fetch and pin the data you want to test, then have confidence that the data is consistent in all your workflow tests.
!!! note "For development only"
Data pinning isn't available for production workflow executions. It's a feature to help test workflows during development.
/// note | For development only
Data pinning isn't available for production workflow executions. It's a feature to help test workflows during development.
///
## Pin data
@ -24,9 +24,9 @@ To pin data in a node:
1. Run the node to load data.
2. In the **OUTPUT** view, select **Pin data** <span class="inline-image">![Pin data icon](/_images/data/data-pinning/data-pinning-button.png)</span>. When data pinning is active, the button changes to show this <span class="inline-image">![Active pin data icon](/_images/data/data-pinning/data-pinning-button-active.png)</span>.
!!! note "Nodes that output binary data"
You can't pin data if the output data includes binary data.
/// note | Nodes that output binary data
You can't pin data if the output data includes binary data.
///
## Unpin data

View File

@ -33,9 +33,9 @@ In n8n, all data passed between nodes is an array of objects. It has the followi
]
```
!!! note "Skipping the 'json' key and array syntax"
From 0.166.0 onwards, when using the Function node or Code node, n8n automatically adds the `json` key if it's missing. It also automatically wraps your items in an array (`[]`) if needed. This is only the case when using the Function or Code nodes. When building your own nodes, you must still make sure the node returns data with the `json` key.
/// note | Skipping the 'json' key and array syntax
From 0.166.0 onwards, when using the Function node or Code node, n8n automatically adds the `json` key if it's missing. It also automatically wraps your items in an array (`[]`) if needed. This is only the case when using the Function or Code nodes. When building your own nodes, you must still make sure the node returns data with the `json` key.
///
## Data item processing
--8<-- "_snippets/flow-logic/data-flow-nodes.md"

View File

@ -14,8 +14,8 @@ For example, the image below shows the output of an [HTTP Request](/integrations
To transform this kind of structure into the n8n data structure you can use the [Item Lists](/integrations/builtin/core-nodes/n8n-nodes-base.itemlists/) node.
!!! note
If you're using the HTTP Request node, you should use the Split Into items option to transform the data. You don't have to use a Code node in that case.
/// note
If you're using the HTTP Request node, you should use the Split Into items option to transform the data. You don't have to use a Code node in that case.
///

View File

@ -24,17 +24,17 @@ n8n offers two ways to apply credential overwrites: using Environment Variable a
Credential overwrites can be set using environment variable by setting the `CREDENTIALS_OVERWRITE_DATA` to `{ CREDENTIAL_NAME: { PARAMETER: VALUE }}`.
!!! warning
Even though this is possible, it isn't recommended. Environment variables aren't protected in n8n, so the data can leak to users.
/// warning
Even though this is possible, it isn't recommended. Environment variables aren't protected in n8n, so the data can leak to users.
///
#### Using REST APIs
The recommended way is to load the data using a custom REST endpoint. Set the `CREDENTIALS_OVERWRITE_ENDPOINT` to a path under which this endpoint should be made available.
!!! note
The endpoints can be called just one at a time for security reasons.
/// note
The endpoints can be called just one at a time for security reasons.
///
For example:
@ -65,10 +65,10 @@ For example:
curl -H "Content-Type: application/json" --data @oauth-credentials.json http://localhost:5678/send-credentials
```
!!! note
There are cases when credentials are based on others. For example, the `googleSheetsOAuth2Api` extends the `googleOAuth2Api`.
In this case, you can set parameters on the parent credentials (`googleOAuth2Api`) which will be used by all child-credentials (`googleSheetsOAuth2Api`).
/// note
There are cases when credentials are based on others. For example, the `googleSheetsOAuth2Api` extends the `googleOAuth2Api`.
In this case, you can set parameters on the parent credentials (`googleOAuth2Api`) which will be used by all child-credentials (`googleSheetsOAuth2Api`).
///
## Environment variables

View File

@ -15,9 +15,9 @@ When managing an embedded n8n deployment, spanning across teams or organizations
!!! warning
The APIs referenced in this document are subject to change at any time. Be sure the check for continued functionality with each version upgrade.
/// warning
The APIs referenced in this document are subject to change at any time. Be sure the check for continued functionality with each version upgrade.
///
## Workflow per user

View File

@ -61,8 +61,9 @@ In the following example the primary color changes to <span style="color:#0099ff
![Example Theme Color Customization](/_images/embed/white-label/color-transition.gif)
!!! note
Similar CSS variables in `_tokens.dark.scss` for dark mode are an upcoming feature that you can't toggle using n8n's UI yet.
/// note
Similar CSS variables in `_tokens.dark.scss` for dark mode are an upcoming feature that you can't toggle using n8n's UI yet.
///
## Theme logos

View File

@ -6,10 +6,11 @@ contentType: howto
# External secrets
!!! info "Feature availability"
* External secrets are available on Enterprise Self-hosted and Enterprise Cloud plans.
* n8n supports Infisical and HashiCorp Vault.
* n8n doesn't support [HashiCorp Vault Secrets](https://developer.hashicorp.com/hcp/docs/vault-secrets){:target=_blank .external-link}.
/// info | Feature availability
* External secrets are available on Enterprise Self-hosted and Enterprise Cloud plans.
* n8n supports Infisical and HashiCorp Vault.
* n8n doesn't support [HashiCorp Vault Secrets](https://developer.hashicorp.com/hcp/docs/vault-secrets){:target=_blank .external-link}.
///
You can use an external secrets store to manage credentials for n8n.
@ -17,9 +18,9 @@ n8n stores all credentials encrypted in its database, and restricts access to th
## Connect n8n to your secrets store
!!! note "Secret names"
Your secret names can't contain spaces, hyphens, or other special characters. n8n supports secret names containing alphanumeric characters (a-z, A-Z, and 0-9), and underscores.
/// note | Secret names
Your secret names can't contain spaces, hyphens, or other special characters. n8n supports secret names containing alphanumeric characters (a-z, A-Z, and 0-9), and underscores.
///
1. In n8n, go to **Settings** > **External Secrets**.
1. Select **Set Up** for your store provider.
1. Enter the credentials for your provider:
@ -32,12 +33,14 @@ n8n stores all credentials encrypted in its database, and restricts access to th
* Infisical: provide a **Service Token**. Refer to Infisical's [Service token](https://infisical.com/docs/documentation/platform/token){:target=_blank .external-link} documentation for information on getting your token. If you self-host Infisical, enter the **Site URL**.
!!! note "Infisical environment"
Make sure you select the correct Infisical environment when creating your token. n8n will load secrets from this environment, and won't have access to secrets in other Infisical environments. n8n only support service tokens that have access to a single environment.
!!! note "Infisical folders"
n8n doesn't support [Infisical folders](https://infisical.com/docs/documentation/platform/folder){:target=_blank .external-link}.
/// note | Infisical environment
Make sure you select the correct Infisical environment when creating your token. n8n will load secrets from this environment, and won't have access to secrets in other Infisical environments. n8n only support service tokens that have access to a single environment.
///
/// note | Infisical folders
n8n doesn't support [Infisical folders](https://infisical.com/docs/documentation/platform/folder){:target=_blank .external-link}.
///
1. **Save** your configuration.
1. Enable the provider using the **Disabled / Enabled** toggle.

View File

@ -7,11 +7,12 @@ description: How to handle execution errors.
When designing your flow logic, it's a good practice to consider potential errors, and set up methods to handle them gracefully. With an error workflow, you can control how n8n responds to a workflow execution failure.
!!! note "Investigating errors"
To investigate failed executions, you can:
/// note | Investigating errors
To investigate failed executions, you can:
* Review your [Executions](/workflows/executions/), for a [single workflow](/workflows/executions/single-workflow-executions/) or [all workflows you have access to](/workflows/executions/all-executions/). You can [load data from previous execution](/workflows/executions/debug/) into your current workflow.
* Enable [Log streaming](/log-streaming/).
* Review your [Executions](/workflows/executions/), for a [single workflow](/workflows/executions/single-workflow-executions/) or [all workflows you have access to](/workflows/executions/all-executions/). You can [load data from previous execution](/workflows/executions/debug/) into your current workflow.
* Enable [Log streaming](/log-streaming/).
///
## Create and set an error workflow

View File

@ -29,9 +29,9 @@ You can use the Merge node to combine data from two previous nodes, even if the
Use the Code node to merge data from multiple node executions. This is useful in some [Looping](/flow-logic/looping/) scenarios.
!!! note "Node executions and workflow executions"
This section describes merging data from multiple node executions. This is when a node executes multiple times during a single workflow execution.
/// note | Node executions and workflow executions
This section describes merging data from multiple node executions. This is when a node executes multiple times during a single workflow execution.
///
Refer to this [example workflow](https://n8n.io/workflows/1814-merge-multiple-runs-into-one/){:target=_blank .external-link} using Loop Over Items and Wait to artificially create multiple executions.
## Compare, merge, and split again

View File

@ -45,9 +45,9 @@ n8n execute --file <WORKFLOW_FILE>
You can change the active status of a workflow using the CLI.
!!! note "Restart required"
These commands operate on your n8n database. If you execute them
while n8n is running, the changes don't take effect until you restart n8n.
/// note | Restart required
These commands operate on your n8n database. If you execute them
/// while n8n is running, the changes don't take effect until you restart n8n.
Set the active status of a workflow by its ID to false:
@ -144,9 +144,9 @@ n8n export:credentials --backup --output=backups/latest/
Export all the credentials in plain text format. You can use this to migrate from one installation to another that has a different secret key in the configuration file.
!!! warning "Sensitive information"
All sensitive information is visible in the files.
/// warning | Sensitive information
All sensitive information is visible in the files.
///
```bash
n8n export:credentials --all --decrypted --output=backups/decrypted.json
```
@ -156,9 +156,9 @@ n8n export:credentials --all --decrypted --output=backups/decrypted.json
You can import your workflows and credentials from n8n using the CLI.
!!! warning "Update the IDs"
When exporting workflows and credentials, n8n also exports their IDs. If you have workflows and credentials with the same IDs in your existing database, they will be overwritten. To avoid this, delete or change the IDs before importing.
/// warning | Update the IDs
When exporting workflows and credentials, n8n also exports their IDs. If you have workflows and credentials with the same IDs in your existing database, they will be overwritten. To avoid this, delete or change the IDs before importing.
///
Available flags:
@ -168,12 +168,14 @@ Available flags:
| --input | Input file name or directory if you use --separate. |
| --separate | Imports `*.json` files from directory provided by --input. |
!!! note "Migrating to SQLite"
n8n limits workflow and credential names to 128 characters, but SQLite doesn't enforce size limits.
/// note | Migrating to SQLite
n8n limits workflow and credential names to 128 characters, but SQLite doesn't enforce size limits.
This might result in errors like **Data too long for column name** during the import process.
This might result in errors like **Data too long for column name** during the import process.
In this case, you can edit the names from the n8n interface and export again, or edit the JSON file directly before importing.
///
In this case, you can edit the names from the n8n interface and export again, or edit the JSON file directly before importing.

View File

@ -67,20 +67,22 @@ Example file:
}
```
!!! note "Formatting as JSON"
You can't always work out the correct JSON from the [Environment variables reference](/hosting/environment-variables/environment-variables/). For example, to set `N8N_METRICS` to `true`, you need to do:
/// note | Formatting as JSON
You can't always work out the correct JSON from the [Environment variables reference](/hosting/environment-variables/environment-variables/). For example, to set `N8N_METRICS` to `true`, you need to do:
```json
{
"endpoints": {
"metrics": {
"enable": true
}
```json
{
"endpoints": {
"metrics": {
"enable": true
}
}
```
}
```
Refer to the [Schema file in the source code](https://github.com/n8n-io/n8n/blob/master/packages/cli/src/config/schema.ts){:target=_blank .external-link} for full details of the expected settings.
///
Refer to the [Schema file in the source code](https://github.com/n8n-io/n8n/blob/master/packages/cli/src/config/schema.ts){:target=_blank .external-link} for full details of the expected settings.
### Docker
@ -123,9 +125,9 @@ The following environment variables support file input:
### Base URL
!!! warning "Requires manual UI build"
This variable requires a manual build of the `n8n-editor-ui` package. You can't use it with the default n8n Docker image. The default is `/`, meaning that it uses the root-domain.
/// warning | Requires manual UI build
This variable requires a manual build of the `n8n-editor-ui` package. You can't use it with the default n8n Docker image. The default is `/`, meaning that it uses the root-domain.
///
Tells the front end how to reach the REST API of the back end:
```bash
@ -145,9 +147,9 @@ export N8N_ENCRYPTION_KEY=<SOME RANDOM STRING>
### Execute all workflows in the same process
!!! warning "Deprecated"
n8n deprecated `own` mode and the `EXECUTIONS_PROCESS` flag in version 1.0. They will be removed in a future release. Main mode is now the default, so this step isn't needed for version 1.0 and above.
Use [Queue mode](/hosting/scaling/queue-mode/) if you need full execution isolation.
/// warning | Deprecated
n8n deprecated `own` mode and the `EXECUTIONS_PROCESS` flag in version 1.0. They will be removed in a future release. Main mode is now the default, so this step isn't needed for version 1.0 and above.
/// Use [Queue mode](/hosting/scaling/queue-mode/) if you need full execution isolation.
All workflows run in their own separate process. This ensures that all CPU cores get used and that they don't block each other on CPU intensive tasks. It also makes sure that one execution crashing doesn't take down the whole application. The disadvantage is that it slows down the start-time considerably and uses much more memory. If your workflows aren't CPU intensive, and they have to start very fast, it's possible to run them all directly in the main-process with this setting.
@ -234,9 +236,9 @@ export WEBHOOK_URL=https://n8n.example.com/
### Prometheus
!!! note "Experimental"
Prometheus metrics are an experimental feature.
/// note | Experimental
Prometheus metrics are an experimental feature.
///
To collect and expose metrics, n8n uses the [prom-client](https://www.npmjs.com/package/prom-client) library.
The `/metrics` endpoint is disabled by default, but it's possible to enable it using the `N8N_METRICS` environment variable.

View File

@ -9,9 +9,9 @@ hide:
# Configuration environment variables
!!! note "File-based configuration"
You can provide a [configuration file](/hosting/environment-variables/configuration-methods/) for n8n. You can also append `_FILE` to certain variables to provide their configuration in a separate file. Variables that support this have the "/`_FILE`" option listed below.
/// note | File-based configuration
You can provide a [configuration file](/hosting/environment-variables/configuration-methods/) for n8n. You can also append `_FILE` to certain variables to provide their configuration in a separate file. Variables that support this have the "/`_FILE`" option listed below.
///
## Credentials
Enabling overwrites for credentials allows you to set default values for credentials which get automatically populated. The user can't see or change these credentials. The format is `{ CREDENTIAL_NAME: { PARAMETER: VALUE }}`.
@ -31,12 +31,14 @@ Enabling overwrites for credentials allows you to set default values for credent
### MySQL
!!! warning "Deprecated"
n8n deprecated MySQL and MariaDB as backend databases in version 0.227.0.
/// warning | Deprecated
n8n deprecated MySQL and MariaDB as backend databases in version 0.227.0.
n8n recommends using PostgreSQL.
n8n recommends using PostgreSQL.
Refer to [how to export and import workflows and credentials](/hosting/cli-commands/) for instructions.
///
Refer to [how to export and import workflows and credentials](/hosting/cli-commands/) for instructions.
| Variable | Type | Default | Description |
| :------- | :---- | :------- | :---------- |

View File

@ -5,9 +5,10 @@ contentType: howTo
# External storage
!!! info "Feature availability"
* Available on Self-hosted Enterprise plans
* If you want access to this feature on Cloud Enterprise, [contact n8n](https://n8n-community.typeform.com/to/y9X2YuGa){:target=_blank .external-link}.
/// info | Feature availability
* Available on Self-hosted Enterprise plans
* If you want access to this feature on Cloud Enterprise, [contact n8n](https://n8n-community.typeform.com/to/y9X2YuGa){:target=_blank .external-link}.
///
n8n can store binary data produced by workflow executions externally. This feature is useful to avoid relying on the filesystem for storing large amounts of binary data.
@ -17,9 +18,9 @@ n8n will introduce external storage for other data types in the future.
n8n supports [AWS S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html){:target=_blank .external-link} as an external store for binary data produced by workflow executions. You can use other S3-compatible services like Cloudflare R2 and Backblaze B2, but n8n doesn't officially support these.
!!! info "Enterprise-tier feature"
You will need an [Enterprise license key](/enterprise-key/) for external storage. If your license key expires and you remain on S3 mode, the instance will be able to read from, but not write to, the S3 bucket.
/// info | Enterprise-tier feature
You will need an [Enterprise license key](/enterprise-key/) for external storage. If your license key expires and you remain on S3 mode, the instance will be able to read from, but not write to, the S3 bucket.
///
### Setup
Create and configure a bucket following the [AWS documentation](https://docs.aws.amazon.com/AmazonS3/latest/userguide/creating-bucket.html){:target=_blank .external-link}. You can use the following policy, replacing `<bucket-name>` with the name of the bucket you created:
@ -50,9 +51,9 @@ export N8N_EXTERNAL_STORAGE_S3_ACCESS_KEY=...
export N8N_EXTERNAL_STORAGE_S3_ACCESS_SECRET=...
```
!!! note "No region"
If your provider doesn't require a region, you can set `N8N_EXTERNAL_STORAGE_S3_BUCKET_REGION` to `'auto'`.
/// note | No region
If your provider doesn't require a region, you can set `N8N_EXTERNAL_STORAGE_S3_BUCKET_REGION` to `'auto'`.
///
Tell n8n to store binary data in S3:
```sh
@ -74,5 +75,6 @@ n8n continues to read older binary data stored in the filesystem from the filesy
If you store binary data in S3 and later switch to filesystem mode, the instance continues to read any data stored in S3, as long as `s3` remains listed in `N8N_AVAILABLE_BINARY_DATA_MODES` and your S3 credentials remain valid.
!!! note "Binary data pruning"
Binary data pruning operates on the active binary data mode. For example, if your instance stored data in S3, and you later switched to filesystem mode, n8n only prunes binary data in the filesystem. This may change in future.
/// note | Binary data pruning
Binary data pruning operates on the active binary data mode. For example, if your instance stored data in S3, and you later switched to filesystem mode, n8n only prunes binary data in the filesystem. This may change in future.
///

View File

@ -14,9 +14,9 @@ contentType: tutorial
Before proceeding, install [Docker Desktop](https://docs.docker.com/get-docker/){:target=_blank .external-link}.
!!! note "Linux Users"
Docker Desktop is available for Mac and Windows. Linux users must install [Docker Engine](https://docs.docker.com/engine/install/) and [Docker Compose](https://docs.docker.com/compose/install/) individually for your distribution.
/// note | Linux Users
Docker Desktop is available for Mac and Windows. Linux users must install [Docker Engine](https://docs.docker.com/engine/install/) and [Docker Compose](https://docs.docker.com/compose/install/) individually for your distribution.
///
--8<-- "_snippets/self-hosting/warning.md"
@ -46,9 +46,9 @@ It's important to still persist data in the `/home/node/.n8n` folder as it conta
If no directory is found, n8n creates automatically one on
startup. In this case, existing credentials saved with a different encryption key can not be used anymore.
!!! note "Keep in mind"
Persisting the `/home/node/.n8n` directory even when using alternate databases is the recommended best practice, but not explicitly required. The encryption key can be provided via the `N8N_ENCRYPTION_KEY` [environment variable](/hosting/environment-variables/environment-variables/#deployment).
/// note | Keep in mind
Persisting the `/home/node/.n8n` directory even when using alternate databases is the recommended best practice, but not explicitly required. The encryption key can be provided via the `N8N_ENCRYPTION_KEY` [environment variable](/hosting/environment-variables/environment-variables/#deployment).
///
### PostgresDB
To use n8n with Postgres, provide the corresponding [configuration](/hosting/configuration/):
@ -74,12 +74,14 @@ A complete `docker-compose` file for Postgres can be found [here](https://github
### MySQL
!!! warning "Deprecated"
n8n deprecated MySQL and MariaDB as backend databases in version 0.227.0.
/// warning | Deprecated
n8n deprecated MySQL and MariaDB as backend databases in version 0.227.0.
n8n recommends using PostgreSQL.
n8n recommends using PostgreSQL.
Refer to [how to export and import workflows and credentials](/hosting/cli-commands/) for instructions.
///
Refer to [how to export and import workflows and credentials](/hosting/cli-commands/) for instructions.
To use n8n with MySQL, provide the corresponding [configuration](/hosting/configuration/):

View File

@ -8,9 +8,9 @@ contentType: overview
This sections provides guides to install n8n for self-hosting. You can use these guides for both the Enterprise and Community editions.
!!! note "Looking for LangChain?"
n8n's LangChain support is in beta. This means it's not part of the main product yet. Refer to [Access LangChain in n8n](/langchain/access-langchain/) for information on how to try it out.
/// note | Looking for LangChain?
n8n's LangChain support is in beta. This means it's not part of the main product yet. Refer to [Access LangChain in n8n](/langchain/access-langchain/) for information on how to try it out.
///
## Installation guides for n8n

View File

@ -48,9 +48,9 @@ n8n
n8n start
```
!!! note "Keep in mind"
Windows users remember to change into the `.n8n` directory of your Home folder (`~/.n8n`) before running `n8n start`.
/// note | Keep in mind
Windows users remember to change into the `.n8n` directory of your Home folder (`~/.n8n`) before running `n8n start`.
///
### Next steps
Try out n8n using the [Quickstarts](/try-it-out/).

View File

@ -143,12 +143,14 @@ Send all the manifests to the cluster by running the following command in the `n
kubectl apply -f .
```
!!! note "Namespace error"
You may see an error message about not finding an "n8n" namespace as that resources isn't ready yet. You can run the same command again, or apply the namespace manifest first with the following command:
/// note | Namespace error
You may see an error message about not finding an "n8n" namespace as that resources isn't ready yet. You can run the same command again, or apply the namespace manifest first with the following command:
```shell
kubectl apply -f namespace.yaml
```
///
```shell
kubectl apply -f namespace.yaml
```
## Set up DNS
@ -161,9 +163,9 @@ To find the address of the n8n service running on the instance:
3. Select the **Resources** tab, then **Service and networking** > **Services**.
4. Select the **n8n** service and copy the **Load balancer URLs** value. Use this value suffixed with the n8n service port (5678) for DNS.
!!! note "Use HTTP"
This guide uses HTTP connections for the services it defines, for example in `n8n-deployment.yaml`. However, if you click the **Load balancer URLs** value, EKS takes you to an "HTTPS" URL which results in an error. To solve this, when you open the n8n subdomain, make sure to use HTTP.
/// note | Use HTTP
This guide uses HTTP connections for the services it defines, for example in `n8n-deployment.yaml`. However, if you click the **Load balancer URLs** value, EKS takes you to an "HTTPS" URL which results in an error. To solve this, when you open the n8n subdomain, make sure to use HTTP.
///
## Delete resources
If you need to delete the setup, you can remove the resources created by the manifests with the following command:

View File

@ -60,9 +60,9 @@ For larger scale n8n deployments, Postgres provides a more robust database backe
To maintain data between pod restarts, the Postgres deployment needs a persistent volume. The default storage class is suitable for this purpose and is defined in the `postgres-claim0-persistentvolumeclaim.yaml` manifest.
!!! note "Specialized storage classes"
If you have specialised or higher requirements for storage classes, [read more on the options Azure offers in the documentation](https://learn.microsoft.com/en-us/azure/aks/concepts-storage#storage-classes){:target="_blank" .external-link}.
/// note | Specialized storage classes
If you have specialised or higher requirements for storage classes, [read more on the options Azure offers in the documentation](https://learn.microsoft.com/en-us/azure/aks/concepts-storage#storage-classes){:target="_blank" .external-link}.
///
### Postgres environment variables
Postgres needs some environment variables set to pass to the application running in the containers.
@ -141,20 +141,22 @@ Send all the manifests to the cluster with the following command:
kubectl apply -f .
```
!!! note "Namespace error"
You may see an error message about not finding an "n8n" namespace as that resources isn't ready yet. You can run the same command again, or apply the namespace manifest first with the following command:
/// note | Namespace error
You may see an error message about not finding an "n8n" namespace as that resources isn't ready yet. You can run the same command again, or apply the namespace manifest first with the following command:
```shell
kubectl apply -f namespace.yaml
```
///
```shell
kubectl apply -f namespace.yaml
```
## Set up DNS
n8n typically operates on a subdomain. Create a DNS record with your provider for the subdomain and point it to the IP address of the n8n service. Find the IP address of the n8n service from the **Services & ingresses** menu item of the cluster you want to use under the **External IP** column. You need to add the n8n port, "5678" to the URL.
!!! note "Static IP addresses with AKS"
[Read this tutorial](https://learn.microsoft.com/en-us/azure/aks/static-ip){:target="_blank" .external-link} for more details on how to use a static IP address with AKS.
/// note | Static IP addresses with AKS
[Read this tutorial](https://learn.microsoft.com/en-us/azure/aks/static-ip){:target="_blank" .external-link} for more details on how to use a static IP address with AKS.
///
## Delete resources
Remove the resources created by the manifests with the following command:

View File

@ -20,12 +20,12 @@ This hosting guide shows you how to self-host n8n on a DigitalOcean droplet. It
3. In your project, select **Droplets** from the **Manage** menu.
4. [Create a new Droplet](https://docs.digitalocean.com/products/droplets/how-to/create/){:target=_blank .external-link} using the [Docker image](https://marketplace.digitalocean.com/apps/docker){:target="_blank" .external-link} available on the **Marketplace** tab.
!!! note "Droplet resources"
When creating the Droplet, DigitalOcean asks you to choose a plan. For most usage levels, a basic shared CPU plan is enough.
!!! note "SSH or Password"
DigitalOcean lets you choose between SSH and password-based authentication. SSH is more secure. The rest of this guide assumes you are using SSH.
/// note | Droplet resources
When creating the Droplet, DigitalOcean asks you to choose a plan. For most usage levels, a basic shared CPU plan is enough.
///
/// note | SSH or Password
DigitalOcean lets you choose between SSH and password-based authentication. SSH is more secure. The rest of this guide assumes you are using SSH.
///
## Log in to your Droplet and create new user
The rest of this guide requires you to log in to the Droplet using a terminal with SSH. Refer to [How to Connect to Droplets with SSH](https://docs.digitalocean.com/products/droplets/how-to/connect-with-ssh/){:target="_blank" .external-link} for more information.

View File

@ -194,9 +194,9 @@ The above example would result in: <https://n8n.example.com>
n8n will only be reachable using `https` and not using `http`.
!!! warning "Secure your n8n instance"
Make sure that you [set up authentication](/hosting/user-management/) your n8n instance.
/// warning | Secure your n8n instance
Make sure that you [set up authentication](/hosting/user-management/) your n8n instance.
///
## Next steps
--8<-- "_snippets/self-hosting/installation/server-setups-next-steps.md"

View File

@ -153,21 +153,22 @@ Send all the manifests to the cluster with the following command:
kubectl apply -f .
```
!!! note "Namespace error"
You may see an error message about not finding an "n8n" namespace as that resources isn't ready yet. You can run the same command again, or apply the namespace manifest first with the following command:
/// note | Namespace error
You may see an error message about not finding an "n8n" namespace as that resources isn't ready yet. You can run the same command again, or apply the namespace manifest first with the following command:
```shell
kubectl apply -f namespace.yaml
```
///
```shell
kubectl apply -f namespace.yaml
```
## Set up DNS
n8n typically operates on a subdomain. Create a DNS record with your provider for the subdomain and point it to the IP address of the n8n service. Find the IP address of the n8n service from the **Services & Ingress** menu item of the cluster you want to use under the **Endpoints** column.
!!! note "GKE and IP addresses"
[Read this GKE tutorial](https://cloud.google.com/kubernetes-engine/docs/tutorials/configuring-domain-name-static-ip#configuring_your_domain_name_records){:target="_blank" .external-link} for more details on how reserved IP addresses work with GKE and Kubernetes resources.
/// note | GKE and IP addresses
[Read this GKE tutorial](https://cloud.google.com/kubernetes-engine/docs/tutorials/configuring-domain-name-static-ip#configuring_your_domain_name_records){:target="_blank" .external-link} for more details on how reserved IP addresses work with GKE and Kubernetes resources.
///
## Delete resources
Remove the resources created by the manifests with the following command:

View File

@ -39,9 +39,9 @@ Select **Deploy app**.
After Heroku builds and deploys the app it provides links to **Manage App** or **View** the application.
!!! note "Heroku and DNS"
Refer to the [Heroku documentation](https://devcenter.heroku.com/categories/networking-dns){:target="_blank" .external-link} to find out how to connect your domain to a Heroku application.
/// note | Heroku and DNS
Refer to the [Heroku documentation](https://devcenter.heroku.com/categories/networking-dns){:target="_blank" .external-link} to find out how to connect your domain to a Heroku application.
///
## Changing the deployment template
You can make changes to the deployment template by forking the [repository](https://github.com/n8n-io/n8n-heroku){:target=_blank .external-link} and deploying from you fork.
@ -54,9 +54,9 @@ By default the Dockerfile pulls the latest n8n image, if you want to use a diffe
Heroku doesn't allow Docker-based applications to define an exposed port with the `EXPOSE` command. Instead, Heroku provides a `PORT` environment variable that it dynamically populates at application runtime. The `entrypoint.sh` file overrides the default Docker image command to instead set the port variable that Heroku provides. You can then access n8n on port 80 in a web browser.
!!! note "Docker limitations with Heroku"
[Read this guide](https://devcenter.heroku.com/articles/container-registry-and-runtime#unsupported-dockerfile-commands){:target="_blank" .external-link} for more details on the limitations of using Docker with Heroku.
/// note | Docker limitations with Heroku
[Read this guide](https://devcenter.heroku.com/articles/container-registry-and-runtime#unsupported-dockerfile-commands){:target="_blank" .external-link} for more details on the limitations of using Docker with Heroku.
///
### Configuring Heroku
The `heroku.yml` file defines the application you want to create on Heroku. It consists of two sections:

View File

@ -21,12 +21,12 @@ This hosting guide shows you how to self-host n8n on a Hetzner cloud server. It
You can change most of the settings to suit your needs, but as this guide uses Docker to run the application, under the **Image** section, select "Docker CE" from the **APPS** tab.
!!! note "Type"
When creating the server, Hetzner asks you to choose a plan. For most usage levels, the CPX11 type is enough.
!!! note "SSH keys"
Hetzner lets you choose between SSH and password-based authentication. SSH is more secure. The rest of this guide assumes you are using SSH.
/// note | Type
When creating the server, Hetzner asks you to choose a plan. For most usage levels, the CPX11 type is enough.
///
/// note | SSH keys
Hetzner lets you choose between SSH and password-based authentication. SSH is more secure. The rest of this guide assumes you are using SSH.
///
## Log in to your server
The rest of this guide requires you to log in to the server using a terminal with SSH. Refer to [Access with SSH/rsync/BorgBackup](https://docs.hetzner.com/robot/storage-box/access/access-ssh-rsync-borg){:target="_blank" .external-link} for more information. You can find the public IP in the listing of the servers in your project.

View File

@ -6,9 +6,9 @@ contentType: howto
Logging is an important feature for debugging. n8n uses the [winston](https://www.npmjs.com/package/winston){:target=_blank .external-link} logging library.
!!! note "Log streaming"
n8n Self-hosted Enterprise tier includes [Log streaming](/log-streaming/), in addition to the logging options described in this document.
/// note | Log streaming
n8n Self-hosted Enterprise tier includes [Log streaming](/log-streaming/), in addition to the logging options described in this document.
///
## Setup
To set up logging in n8n, you need to set the following environment variables (you can also set the values in the [configuration file](/hosting/configuration/#configuration-via-file))

View File

@ -28,8 +28,9 @@ Access the endpoint:
<your-instance-url>/metrics
```
!!! info "Feature availability"
The `/metrics` endpoint isn't available on n8n Cloud.
/// info | Feature availability
The `/metrics` endpoint isn't available on n8n Cloud.
///
## Enable metrics and healthz for self-hosted n8n

View File

@ -12,9 +12,9 @@ To do this, configure the corresponding [environment variables](/hosting/environ
## Reduce saved data
!!! note "Configuration at workflow level"
You can also configure these settings on an individual workflow basis using the [workflow settings](/workflows/workflows/#workflow-settings).
/// note | Configuration at workflow level
You can also configure these settings on an individual workflow basis using the [workflow settings](/workflows/workflows/#workflow-settings).
///
You can select which executions data n8n saves. For example, you can save only executions that result in an `Error`.
```sh
@ -92,5 +92,6 @@ n8n:
- EXECUTIONS_DATA_PRUNE_MAX_COUNT=50000
```
!!! note "SQLite"
If you run n8n using the default SQLite database, the disk space of any pruned data isn't automatically freed up but rather reused for future executions data. To free up this space configure the `DB_SQLITE_VACUUM_ON_STARTUP` [environment variable](/hosting/environment-variables/environment-variables/#sqlite) or manually run the [VACUUM](https://www.sqlite.org/lang_vacuum.html){:target=_blank .external-link} operation.
/// note | SQLite
If you run n8n using the default SQLite database, the disk space of any pruned data isn't automatically freed up but rather reused for future executions data. To free up this space configure the `DB_SQLITE_VACUUM_ON_STARTUP` [environment variable](/hosting/environment-variables/environment-variables/#sqlite) or manually run the [VACUUM](https://www.sqlite.org/lang_vacuum.html){:target=_blank .external-link} operation.
///

Some files were not shown because too many files have changed in this diff Show More