diff --git a/.vale.ini b/.vale.ini index 6fae4fcc2..bfa53bbff 100644 --- a/.vale.ini +++ b/.vale.ini @@ -5,4 +5,4 @@ Vocab = default BasedOnStyles = from-write-good, n8n-styles, from-microsoft, Vale Vale.Terms = NO from-alex.Profanity = NO -TokenIgnores = (\-\-8\<\-\- \".*\"), (-only), (\*\*.*\*\*), (\*\*Release date:\*\*.*), (\[\[\%.*\%\]\]), (\[.*\]\(.*\)), (\[.*\]\(.*\)\{:target=_blank .external-link\}), (\[\[.*\]\]), (Rocket\.Chat), (\(https.*\)) +TokenIgnores = (\-\-8\<\-\- \".*\"), (-only), (\*\*.*\*\*), (\*\*Release date:\*\*.*), (\[\[\%.*\%\]\]), (\[.*\]\(.*\)\{:target=_blank .external-link\}), (\[\[.*\]\]), (Rocket\.Chat), (\(https.*\)), (how\smany), (too\smany) diff --git a/_overrides/partials/header.html b/_overrides/partials/header.html index 584018bec..35a03ce33 100644 --- a/_overrides/partials/header.html +++ b/_overrides/partials/header.html @@ -7,15 +7,6 @@
- diff --git a/_snippets/integrations/builtin/cluster-nodes/langchain-sub-nodes/chat-memory-manager-purpose.md b/_snippets/integrations/builtin/cluster-nodes/langchain-sub-nodes/chat-memory-manager-purpose.md new file mode 100644 index 000000000..8c708645c --- /dev/null +++ b/_snippets/integrations/builtin/cluster-nodes/langchain-sub-nodes/chat-memory-manager-purpose.md @@ -0,0 +1,5 @@ +This node is useful when you: + +* Can't add a memory node directly. +* Need to do more complex memory management, beyond what the memory nodes offer. For example, you can add this node to check the memory size of the Agent node's response, and reduce it if needed. +* Want to inject messages to the AI that look like user messages, to give the AI more context. diff --git a/_snippets/integrations/builtin/cluster-nodes/vector-store-mode.md b/_snippets/integrations/builtin/cluster-nodes/vector-store-mode.md index df150b1db..8f16d23b7 100644 --- a/_snippets/integrations/builtin/cluster-nodes/vector-store-mode.md +++ b/_snippets/integrations/builtin/cluster-nodes/vector-store-mode.md @@ -5,7 +5,7 @@ Vector Store nodes in n8n have three modes: **Get Many**, **Insert Documents** a #### Get Many -In this mode, you can retrieve multiple documents from your vector database by providing a prompt. The prompt will be embedded and used for similarity search. The node will return the documents that are most similar to the prompt with their similarity score. This is useful if you want to retrieve a list of similar documents and pass them to a chain as additional context. +In this mode, you can retrieve multiple documents from your vector database by providing a prompt. The prompt will be embedded and used for similarity search. The node will return the documents that are most similar to the prompt with their similarity score. This is useful if you want to retrieve a list of similar documents and pass them to an agent as additional context. #### Insert Documents diff --git a/docs/_downloads/venafi-tpp.pdf b/docs/_downloads/venafi-tpp.pdf deleted file mode 100644 index 29d047674..000000000 Binary files a/docs/_downloads/venafi-tpp.pdf and /dev/null differ diff --git a/docs/_extra/css/extra.css b/docs/_extra/css/extra.css index c1b914978..6bbbc68a9 100644 --- a/docs/_extra/css/extra.css +++ b/docs/_extra/css/extra.css @@ -239,15 +239,13 @@ margin-top: 1.75em; } -/* extra top nav */ +/* The tab links for other n8n sites */ -.n8n-top-nav { - margin-bottom:1em; +.n8n-other-sites { + display: flex; + justify-content: space-between; } -.n8n-top-nav-list { - border-bottom: 1px solid #707183; -} /* ensure headings don't disappear below top nav after adding extra top nav */ @media screen and (min-width: 76.25em) { diff --git a/docs/_images/advanced-ai/examples/vector-store-website.png b/docs/_images/advanced-ai/examples/vector-store-website.png new file mode 100644 index 000000000..7e621fec4 Binary files /dev/null and b/docs/_images/advanced-ai/examples/vector-store-website.png differ diff --git a/docs/_images/courses/level-two/chapter-three/exercise_merge.png b/docs/_images/courses/level-two/chapter-three/exercise_merge.png index 6b7a05188..681e51c9a 100644 Binary files a/docs/_images/courses/level-two/chapter-three/exercise_merge.png and b/docs/_images/courses/level-two/chapter-three/exercise_merge.png differ diff --git a/docs/_images/courses/level-two/chapter-three/exercise_splitinbatches.png b/docs/_images/courses/level-two/chapter-three/exercise_splitinbatches.png index ca43b22c0..d7a82da80 100644 Binary files a/docs/_images/courses/level-two/chapter-three/exercise_splitinbatches.png and b/docs/_images/courses/level-two/chapter-three/exercise_splitinbatches.png differ diff --git a/docs/_images/courses/level-two/chapter-two/exercise_datetime.png b/docs/_images/courses/level-two/chapter-two/exercise_datetime.png index c5bcb7042..79280ad85 100644 Binary files a/docs/_images/courses/level-two/chapter-two/exercise_datetime.png and b/docs/_images/courses/level-two/chapter-two/exercise_datetime.png differ diff --git a/docs/_images/integrations/builtin/credentials/philipshue/using-oauth.gif b/docs/_images/integrations/builtin/credentials/philipshue/using-oauth.gif deleted file mode 100644 index 54a9acc32..000000000 Binary files a/docs/_images/integrations/builtin/credentials/philipshue/using-oauth.gif and /dev/null differ diff --git a/docs/_images/integrations/builtin/credentials/segment/using-access-token.gif b/docs/_images/integrations/builtin/credentials/segment/using-access-token.gif deleted file mode 100644 index a8f552a56..000000000 Binary files a/docs/_images/integrations/builtin/credentials/segment/using-access-token.gif and /dev/null differ diff --git a/docs/_images/integrations/builtin/credentials/thehive/using-api.gif b/docs/_images/integrations/builtin/credentials/thehive/using-api.gif deleted file mode 100644 index ce186290a..000000000 Binary files a/docs/_images/integrations/builtin/credentials/thehive/using-api.gif and /dev/null differ diff --git a/docs/_images/integrations/builtin/credentials/todoist/using-access-token.gif b/docs/_images/integrations/builtin/credentials/todoist/using-access-token.gif deleted file mode 100644 index 9a6a1d060..000000000 Binary files a/docs/_images/integrations/builtin/credentials/todoist/using-access-token.gif and /dev/null differ diff --git a/docs/_images/integrations/builtin/credentials/todoist/using-oauth.gif b/docs/_images/integrations/builtin/credentials/todoist/using-oauth.gif deleted file mode 100644 index bc58806ef..000000000 Binary files a/docs/_images/integrations/builtin/credentials/todoist/using-oauth.gif and /dev/null differ diff --git a/docs/_images/integrations/builtin/credentials/travisci/using-access-token.gif b/docs/_images/integrations/builtin/credentials/travisci/using-access-token.gif deleted file mode 100644 index 2c9a36c91..000000000 Binary files a/docs/_images/integrations/builtin/credentials/travisci/using-access-token.gif and /dev/null differ diff --git a/docs/_images/integrations/builtin/credentials/trello/using-access-token.gif b/docs/_images/integrations/builtin/credentials/trello/using-access-token.gif deleted file mode 100644 index a27670e78..000000000 Binary files a/docs/_images/integrations/builtin/credentials/trello/using-access-token.gif and /dev/null differ diff --git a/docs/_images/integrations/builtin/credentials/twake/using-workspace-key.gif b/docs/_images/integrations/builtin/credentials/twake/using-workspace-key.gif deleted file mode 100644 index 6709f2854..000000000 Binary files a/docs/_images/integrations/builtin/credentials/twake/using-workspace-key.gif and /dev/null differ diff --git a/docs/_images/integrations/builtin/credentials/twist/using-oauth.gif b/docs/_images/integrations/builtin/credentials/twist/using-oauth.gif deleted file mode 100644 index c072957c0..000000000 Binary files a/docs/_images/integrations/builtin/credentials/twist/using-oauth.gif and /dev/null differ diff --git a/docs/_images/integrations/builtin/credentials/twitter/api-keys.png b/docs/_images/integrations/builtin/credentials/twitter/api-keys.png deleted file mode 100644 index 6df04f1ef..000000000 Binary files a/docs/_images/integrations/builtin/credentials/twitter/api-keys.png and /dev/null differ diff --git a/docs/_images/integrations/builtin/credentials/twitter/app-settings-button.png b/docs/_images/integrations/builtin/credentials/twitter/app-settings-button.png deleted file mode 100644 index fee4ef916..000000000 Binary files a/docs/_images/integrations/builtin/credentials/twitter/app-settings-button.png and /dev/null differ diff --git a/docs/_images/integrations/builtin/credentials/twitter/developer-agreement.png b/docs/_images/integrations/builtin/credentials/twitter/developer-agreement.png deleted file mode 100644 index 124ef7e89..000000000 Binary files a/docs/_images/integrations/builtin/credentials/twitter/developer-agreement.png and /dev/null differ diff --git a/docs/_images/integrations/builtin/credentials/twitter/elevated-access.png b/docs/_images/integrations/builtin/credentials/twitter/elevated-access.png deleted file mode 100644 index 4f683511b..000000000 Binary files a/docs/_images/integrations/builtin/credentials/twitter/elevated-access.png and /dev/null differ diff --git a/docs/_images/integrations/builtin/credentials/twitter/email-validation.png b/docs/_images/integrations/builtin/credentials/twitter/email-validation.png deleted file mode 100644 index 708578571..000000000 Binary files a/docs/_images/integrations/builtin/credentials/twitter/email-validation.png and /dev/null differ diff --git a/docs/_images/integrations/builtin/credentials/twitter/essential-access.png b/docs/_images/integrations/builtin/credentials/twitter/essential-access.png deleted file mode 100644 index c5a804986..000000000 Binary files a/docs/_images/integrations/builtin/credentials/twitter/essential-access.png and /dev/null differ diff --git a/docs/_images/integrations/builtin/credentials/twitter/oauth-settings.png b/docs/_images/integrations/builtin/credentials/twitter/oauth-settings.png deleted file mode 100644 index 7ca5537a1..000000000 Binary files a/docs/_images/integrations/builtin/credentials/twitter/oauth-settings.png and /dev/null differ diff --git a/docs/_images/integrations/builtin/credentials/typeform/using-oauth.gif b/docs/_images/integrations/builtin/credentials/typeform/using-oauth.gif deleted file mode 100644 index 4af8c6045..000000000 Binary files a/docs/_images/integrations/builtin/credentials/typeform/using-oauth.gif and /dev/null differ diff --git a/docs/_images/integrations/builtin/credentials/unleashedsoftware/using-access-token.gif b/docs/_images/integrations/builtin/credentials/unleashedsoftware/using-access-token.gif deleted file mode 100644 index 77a33b1fa..000000000 Binary files a/docs/_images/integrations/builtin/credentials/unleashedsoftware/using-access-token.gif and /dev/null differ diff --git a/docs/_images/integrations/builtin/credentials/uplead/using-access-token.gif b/docs/_images/integrations/builtin/credentials/uplead/using-access-token.gif deleted file mode 100644 index 0a2eddf35..000000000 Binary files a/docs/_images/integrations/builtin/credentials/uplead/using-access-token.gif and /dev/null differ diff --git a/docs/_images/integrations/builtin/credentials/uproc/using-api.gif b/docs/_images/integrations/builtin/credentials/uproc/using-api.gif deleted file mode 100644 index 9794834ef..000000000 Binary files a/docs/_images/integrations/builtin/credentials/uproc/using-api.gif and /dev/null differ diff --git a/docs/_images/integrations/builtin/credentials/vero/using-access-token.gif b/docs/_images/integrations/builtin/credentials/vero/using-access-token.gif deleted file mode 100644 index 596202a90..000000000 Binary files a/docs/_images/integrations/builtin/credentials/vero/using-access-token.gif and /dev/null differ diff --git a/docs/_images/integrations/builtin/credentials/vonage/using-api.gif b/docs/_images/integrations/builtin/credentials/vonage/using-api.gif deleted file mode 100644 index 6af13c99d..000000000 Binary files a/docs/_images/integrations/builtin/credentials/vonage/using-api.gif and /dev/null differ diff --git a/docs/_images/integrations/builtin/credentials/webflow/using-access-token.gif b/docs/_images/integrations/builtin/credentials/webflow/using-access-token.gif deleted file mode 100644 index d1a711fd5..000000000 Binary files a/docs/_images/integrations/builtin/credentials/webflow/using-access-token.gif and /dev/null differ diff --git a/docs/_images/integrations/builtin/credentials/webflow/using-oauth.gif b/docs/_images/integrations/builtin/credentials/webflow/using-oauth.gif deleted file mode 100644 index b150814ef..000000000 Binary files a/docs/_images/integrations/builtin/credentials/webflow/using-oauth.gif and /dev/null differ diff --git a/docs/_images/integrations/builtin/credentials/woocommerce/using-access-token.gif b/docs/_images/integrations/builtin/credentials/woocommerce/using-access-token.gif deleted file mode 100644 index 1eef27aea..000000000 Binary files a/docs/_images/integrations/builtin/credentials/woocommerce/using-access-token.gif and /dev/null differ diff --git a/docs/_images/integrations/builtin/credentials/wufoo/using-api-key.gif b/docs/_images/integrations/builtin/credentials/wufoo/using-api-key.gif deleted file mode 100644 index 7a5fa1c17..000000000 Binary files a/docs/_images/integrations/builtin/credentials/wufoo/using-api-key.gif and /dev/null differ diff --git a/docs/_images/integrations/builtin/credentials/yourls/using-api.gif b/docs/_images/integrations/builtin/credentials/yourls/using-api.gif deleted file mode 100644 index a869adf1c..000000000 Binary files a/docs/_images/integrations/builtin/credentials/yourls/using-api.gif and /dev/null differ diff --git a/docs/_images/integrations/builtin/credentials/zoho/getting-oauth-credentials.gif b/docs/_images/integrations/builtin/credentials/zoho/getting-oauth-credentials.gif deleted file mode 100644 index abec44f3d..000000000 Binary files a/docs/_images/integrations/builtin/credentials/zoho/getting-oauth-credentials.gif and /dev/null differ diff --git a/docs/_images/integrations/builtin/credentials/zoom/using-access-token.gif b/docs/_images/integrations/builtin/credentials/zoom/using-access-token.gif deleted file mode 100644 index 7f8f9c44a..000000000 Binary files a/docs/_images/integrations/builtin/credentials/zoom/using-access-token.gif and /dev/null differ diff --git a/docs/_images/integrations/builtin/credentials/zoom/using-oauth.gif b/docs/_images/integrations/builtin/credentials/zoom/using-oauth.gif deleted file mode 100644 index 8dc39a723..000000000 Binary files a/docs/_images/integrations/builtin/credentials/zoom/using-oauth.gif and /dev/null differ diff --git a/docs/_images/integrations/builtin/credentials/zulip/using-access-token.gif b/docs/_images/integrations/builtin/credentials/zulip/using-access-token.gif deleted file mode 100644 index d9206fb5c..000000000 Binary files a/docs/_images/integrations/builtin/credentials/zulip/using-access-token.gif and /dev/null differ diff --git a/docs/_includes/integrations/cluster-nodes/memory-shared.html b/docs/_includes/integrations/cluster-nodes/memory-shared.html new file mode 100644 index 000000000..65c49604f --- /dev/null +++ b/docs/_includes/integrations/cluster-nodes/memory-shared.html @@ -0,0 +1 @@ +If you add more than one [[ page.meta.title ]] node to your workflow, all nodes access the same memory instance by default. Be careful when doing destructive actions that override existing memory contents, such as the override all messages operation in the Chat Memory Manager node. If you want more than one memory instance in your workflow, set different session IDs in different memory nodes. diff --git a/docs/_workflows/advanced-ai/examples/populate_a_pinecone_vector_database_from_a_website.json b/docs/_workflows/advanced-ai/examples/populate_a_pinecone_vector_database_from_a_website.json new file mode 100644 index 000000000..5a567f975 --- /dev/null +++ b/docs/_workflows/advanced-ai/examples/populate_a_pinecone_vector_database_from_a_website.json @@ -0,0 +1,718 @@ +{ + "name": "Populate a Pinecone vector database from a website", + "nodes": [ + { + "parameters": { + "model": "text-embedding-3-large", + "options": {}, + "requestOptions": {} + }, + "id": "856f2426-b4b5-4180-a422-d26692844afb", + "name": "Embeddings OpenAI", + "type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi", + "typeVersion": 1, + "position": [ + 80, + 1040 + ], + "credentials": { + "openAiApi": { + "id": "tW3bkXa0SAK0OzvR", + "name": "OpenAi account Debs" + } + } + }, + { + "parameters": { + "options": {}, + "requestOptions": {} + }, + "id": "1e702984-6f79-416e-981a-6728d4b3c233", + "name": "Default Data Loader", + "type": "@n8n/n8n-nodes-langchain.documentDefaultDataLoader", + "typeVersion": 1, + "position": [ + 260, + 960 + ] + }, + { + "parameters": { + "options": { + "splitCode": "markdown" + }, + "requestOptions": {} + }, + "id": "2d1f30fd-f251-4389-8f6d-2c950018a91f", + "name": "Recursive Character Text Splitter", + "type": "@n8n/n8n-nodes-langchain.textSplitterRecursiveCharacterTextSplitter", + "typeVersion": 1, + "position": [ + 300, + 1160 + ] + }, + { + "parameters": { + "batchSize": 10, + "options": {} + }, + "id": "4e8a9d4c-6009-4d9b-b603-0438c65ba9df", + "name": "Loop Over Items", + "type": "n8n-nodes-base.splitInBatches", + "typeVersion": 3, + "position": [ + -840, + 1040 + ] + }, + { + "parameters": { + "model": { + "__rl": true, + "value": "gpt-4o", + "mode": "list", + "cachedResultName": "gpt-4o" + }, + "options": {}, + "requestOptions": {} + }, + "id": "e7967355-41b4-4bc5-b192-c8bc0699e925", + "name": "OpenAI Model", + "type": "@n8n/n8n-nodes-langchain.lmOpenAi", + "typeVersion": 1, + "position": [ + -1320, + 1680 + ], + "credentials": { + "openAiApi": { + "id": "tW3bkXa0SAK0OzvR", + "name": "OpenAi account Debs" + } + } + }, + { + "parameters": { + "url": "https://n8n-io.github.io/n8n-demo-website/sitemap.xml", + "options": {} + }, + "id": "5fb88663-f28b-4da2-acd9-1cbb0c5d28e7", + "name": "Get sitemap", + "type": "n8n-nodes-base.httpRequest", + "typeVersion": 4.2, + "position": [ + -1480, + 740 + ] + }, + { + "parameters": { + "options": { + "explicitRoot": false, + "ignoreAttrs": true + } + }, + "id": "0e6287b8-9a65-4af0-8e69-3aae3648fd13", + "name": "Turn XML sitemap into JSON", + "type": "n8n-nodes-base.xml", + "typeVersion": 1, + "position": [ + -1260, + 740 + ] + }, + { + "parameters": { + "fieldToSplitOut": "url", + "options": {} + }, + "id": "acd3e717-99f5-4238-aa4d-795caef660b1", + "name": "Turn the URL array into multiple items", + "type": "n8n-nodes-base.splitOut", + "typeVersion": 1, + "position": [ + -1040, + 740 + ] + }, + { + "parameters": {}, + "id": "f3b4ad5e-b261-4b97-9077-3b9259d5b37d", + "name": "Wait 5 seconds", + "type": "n8n-nodes-base.wait", + "typeVersion": 1.1, + "position": [ + -320, + 1060 + ], + "webhookId": "f4e7dead-77ad-4216-a5a0-ef95914bf3ab" + }, + { + "parameters": { + "url": "={{ $json.loc }}", + "options": {} + }, + "id": "361b2a70-d0c5-4498-8a70-0688710e76e6", + "name": "Get pages listed in the sitemap", + "type": "n8n-nodes-base.httpRequest", + "typeVersion": 4.2, + "position": [ + -580, + 1060 + ] + }, + { + "parameters": {}, + "id": "14ddd282-9bf0-459f-9595-5154e16f9cc0", + "name": "Chat Trigger", + "type": "@n8n/n8n-nodes-langchain.chatTrigger", + "typeVersion": 1, + "position": [ + -1620, + 1420 + ], + "webhookId": "4b338d3c-b03f-42f2-94c1-9353d0f1fbc2" + }, + { + "parameters": { + "promptType": "define", + "text": "={{ $('Chat Trigger').item.json.chatInput }}" + }, + "id": "263585e6-02bb-4940-9bb3-15f32b0f8079", + "name": "Question and Answer Chain", + "type": "@n8n/n8n-nodes-langchain.chainRetrievalQa", + "typeVersion": 1.3, + "position": [ + -1280, + 1420 + ] + }, + { + "parameters": { + "topK": 10, + "requestOptions": {} + }, + "id": "91ad53ec-a761-43f6-a6f1-835263222e0c", + "name": "Vector Store Retriever", + "type": "@n8n/n8n-nodes-langchain.retrieverVectorStore", + "typeVersion": 1, + "position": [ + -1080, + 1620 + ] + }, + { + "parameters": { + "model": "text-embedding-3-large", + "options": {}, + "requestOptions": {} + }, + "id": "5c55cb38-be26-405d-bd39-d29e0a33b683", + "name": "Embeddings OpenAI2", + "type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi", + "typeVersion": 1, + "position": [ + -780, + 2040 + ], + "credentials": { + "openAiApi": { + "id": "tW3bkXa0SAK0OzvR", + "name": "OpenAi account Debs" + } + } + }, + { + "parameters": { + "fieldsToAggregate": { + "fieldToAggregate": [ + { + "fieldToAggregate": "content" + } + ] + }, + "options": {} + }, + "id": "48dbd7f7-1ca1-41e2-9fd5-e916ea76589b", + "name": "Aggregate", + "type": "n8n-nodes-base.aggregate", + "typeVersion": 1, + "position": [ + -100, + 740 + ] + }, + { + "parameters": { + "content": "**Aggregate into one item**\n\nThe Pinecone node loops over each input item. This is standard n8n node behavior.\n\nThis means if you want to use the **Clear namespace** setting in the Pinecone node, you need to input a single item.", + "height": 381.66422439067196, + "color": 5 + }, + "id": "5b70d4ae-1889-43d3-b92d-bf73e43236bd", + "name": "Sticky Note", + "type": "n8n-nodes-base.stickyNote", + "typeVersion": 1, + "position": [ + -160, + 520 + ] + }, + { + "parameters": { + "content": "### Workflow to scrape data and send it to Pinecone", + "height": 878.8927796727229, + "width": 2382.6739342193496, + "color": 7 + }, + "id": "e9b5d557-51af-48d1-af33-8783f9ca3718", + "name": "Sticky Note1", + "type": "n8n-nodes-base.stickyNote", + "typeVersion": 1, + "position": [ + -1856.703373323493, + 480 + ] + }, + { + "parameters": { + "content": "### Workflow to chat and get answers from the Pinecone vector database", + "height": 825.9872504327399, + "width": 1181.407211476183, + "color": 7 + }, + "id": "7efa097b-d4f2-49a4-9da5-4fcf6b83be3b", + "name": "Sticky Note2", + "type": "n8n-nodes-base.stickyNote", + "typeVersion": 1, + "position": [ + -1680, + 1380 + ] + }, + { + "parameters": { + "content": "## Try it out \n\n1. Set credentials and choose your Pinecone vector database. See the notes on individual nodes for details.\n2. Select **Test workflow** to run the main workflow and load data into Pinecone.\n3. Select **Chat** and try asking:\n\n_What is the purpose of the n8n demo website?_", + "height": 326.49681260818465, + "color": 4 + }, + "id": "f21bc32b-a405-4d71-b6c9-7bffbb6faed9", + "name": "Sticky Note3", + "type": "n8n-nodes-base.stickyNote", + "typeVersion": 1, + "position": [ + -2040, + 560 + ] + }, + { + "parameters": { + "content": "**Setup**\n\n1. In Pinecone, create a vector database. Set **Dimensions** to `3072` and **Metric** to `cosine`. You can use the free starter plan.\n2. In the Pinecone node, set your credentials.\n3. Select your Pinecone index.", + "height": 381.3701016273242, + "width": 304.1011298750183, + "color": 2 + }, + "id": "4be87782-f811-418f-b4b5-9e12c4cf7970", + "name": "Sticky Note4", + "type": "n8n-nodes-base.stickyNote", + "typeVersion": 1, + "position": [ + 140, + 520 + ] + }, + { + "parameters": { + "mode": "insert", + "pineconeIndex": { + }, + "options": { + "clearNamespace": true, + "pineconeNamespace": "test-web-scraper" + } + }, + "id": "94035a97-5a09-493c-aaae-dcba7bbf8526", + "name": "Pinecone Vector Store", + "type": "@n8n/n8n-nodes-langchain.vectorStorePinecone", + "typeVersion": 1, + "position": [ + 160, + 740 + ], + "credentials": { + "pineconeApi": { + "id": "lruA9GaKZSEY8dky", + "name": "Debs Pinecone" + } + } + }, + { + "parameters": { + "content": "## Next steps\n\nLearn more about [Advanced AI in n8n](https://docs.n8n.io/advanced-ai/)", + "width": 331.8066536811489 + }, + "id": "2be1433b-0488-4c7e-8c10-e771d4dd4686", + "name": "Sticky Note5", + "type": "n8n-nodes-base.stickyNote", + "typeVersion": 1, + "position": [ + 460, + 1280 + ] + }, + { + "parameters": { + "content": "**Set your credentials**", + "height": 206.68134932939768, + "width": 182.42633582707612, + "color": 2 + }, + "id": "fffbb04d-6d61-4dfa-bfd3-46b8c92a36d5", + "name": "Sticky Note6", + "type": "n8n-nodes-base.stickyNote", + "typeVersion": 1, + "position": [ + 20, + 1000 + ] + }, + { + "parameters": { + "content": "**Set your credentials**", + "height": 184.89671964234537, + "width": 173.09006596119673, + "color": 2 + }, + "id": "810ac5e1-d730-47af-9282-64ab0b4fca16", + "name": "Sticky Note7", + "type": "n8n-nodes-base.stickyNote", + "typeVersion": 1, + "position": [ + -1369.107685156473, + 1620.2285847094058 + ] + }, + { + "parameters": { + "content": "**Set your credentials**", + "height": 192.67694453057842, + "width": 221.3274602682409, + "color": 2 + }, + "id": "2cecc8ac-3c65-4294-8a5d-2842bc07d10a", + "name": "Sticky Note8", + "type": "n8n-nodes-base.stickyNote", + "typeVersion": 1, + "position": [ + -860, + 1980 + ] + }, + { + "parameters": { + "pineconeIndex": { + "__rl": true, + "value": "debs-test", + "mode": "list", + "cachedResultName": "debs-test" + }, + "options": { + "pineconeNamespace": "test-web-scraper" + } + }, + "id": "e673c46e-0815-4b58-9a8f-2fb86445b578", + "name": "Pinecone Vector Store2", + "type": "@n8n/n8n-nodes-langchain.vectorStorePinecone", + "typeVersion": 1, + "position": [ + -980, + 1840 + ], + "credentials": { + "pineconeApi": { + "id": "lruA9GaKZSEY8dky", + "name": "Debs Pinecone" + } + } + }, + { + "parameters": { + "content": "**Set your credentials**\n\n**Select your Pinecone index***", + "width": 367.59568816702017, + "color": 2 + }, + "id": "ca4499ae-4e27-4848-9654-f7e744c081e7", + "name": "Sticky Note9", + "type": "n8n-nodes-base.stickyNote", + "typeVersion": 1, + "position": [ + -1080, + 1760 + ] + }, + { + "parameters": {}, + "id": "b43ddbd1-adfd-4bba-bee5-4b81229e88dd", + "name": "Start the workflow by clicking \"Test workflow\"", + "type": "n8n-nodes-base.manualTrigger", + "typeVersion": 1, + "position": [ + -1700, + 740 + ] + }, + { + "parameters": { + "operation": "extractHtmlContent", + "extractionValues": { + "values": [ + { + "key": "content", + "cssSelector": ".md-content", + "returnValue": "html" + } + ] + }, + "options": { + "trimValues": true, + "cleanUpText": true + } + }, + "id": "d39624d7-93c0-4452-81b1-ffa04b216ceb", + "name": "Extract main content", + "type": "n8n-nodes-base.html", + "typeVersion": 1.2, + "position": [ + -380, + 740 + ] + }, + { + "parameters": { + "content": "**Batch the calls to the website**\n\nFor the small demo website in this example, this is not essential. If you want to use this example with a larger website, batching like this helps avoid timeouts. Using the Wait node between batches avoids hitting the website with too many requests too fast.", + "height": 298.48800301054644, + "width": 316.2462039046831, + "color": 5 + }, + "id": "9825926d-ce6d-429e-9006-6ff5fd1f46ca", + "name": "Sticky Note10", + "type": "n8n-nodes-base.stickyNote", + "typeVersion": 1, + "position": [ + -1220, + 1020 + ] + }, + { + "parameters": { + "content": "## How to scrape a different website\n\nThis workflow uses a small example website provided by n8n. To use a different site:\n\n1. Change the sitemap URL in **Get sitemap**.\n2. Update **Extract main content** according to the HTML structure of the website you're scraping.", + "height": 356.06166718347 + }, + "id": "7c2e4bde-3900-49b0-9bee-704e34664163", + "name": "Sticky Note11", + "type": "n8n-nodes-base.stickyNote", + "typeVersion": 1, + "position": [ + -2040, + 960 + ] + } + ], + "pinData": {}, + "connections": { + "Embeddings OpenAI": { + "ai_embedding": [ + [ + { + "node": "Pinecone Vector Store", + "type": "ai_embedding", + "index": 0 + } + ] + ] + }, + "Default Data Loader": { + "ai_document": [ + [ + { + "node": "Pinecone Vector Store", + "type": "ai_document", + "index": 0 + } + ] + ] + }, + "Recursive Character Text Splitter": { + "ai_textSplitter": [ + [ + { + "node": "Default Data Loader", + "type": "ai_textSplitter", + "index": 0 + } + ] + ] + }, + "Loop Over Items": { + "main": [ + [ + { + "node": "Extract main content", + "type": "main", + "index": 0 + } + ], + [ + { + "node": "Get pages listed in the sitemap", + "type": "main", + "index": 0 + } + ] + ] + }, + "Get sitemap": { + "main": [ + [ + { + "node": "Turn XML sitemap into JSON", + "type": "main", + "index": 0 + } + ] + ] + }, + "Turn XML sitemap into JSON": { + "main": [ + [ + { + "node": "Turn the URL array into multiple items", + "type": "main", + "index": 0 + } + ] + ] + }, + "Turn the URL array into multiple items": { + "main": [ + [ + { + "node": "Loop Over Items", + "type": "main", + "index": 0 + } + ] + ] + }, + "Wait 5 seconds": { + "main": [ + [ + { + "node": "Loop Over Items", + "type": "main", + "index": 0 + } + ] + ] + }, + "Get pages listed in the sitemap": { + "main": [ + [ + { + "node": "Wait 5 seconds", + "type": "main", + "index": 0 + } + ] + ] + }, + "Chat Trigger": { + "main": [ + [ + { + "node": "Question and Answer Chain", + "type": "main", + "index": 0 + } + ] + ] + }, + "OpenAI Model": { + "ai_languageModel": [ + [ + { + "node": "Question and Answer Chain", + "type": "ai_languageModel", + "index": 0 + } + ] + ] + }, + "Vector Store Retriever": { + "ai_retriever": [ + [ + { + "node": "Question and Answer Chain", + "type": "ai_retriever", + "index": 0 + } + ] + ] + }, + "Embeddings OpenAI2": { + "ai_embedding": [ + [ + { + "node": "Pinecone Vector Store2", + "type": "ai_embedding", + "index": 0 + } + ] + ] + }, + "Aggregate": { + "main": [ + [ + { + "node": "Pinecone Vector Store", + "type": "main", + "index": 0 + } + ] + ] + }, + "Pinecone Vector Store2": { + "ai_vectorStore": [ + [ + { + "node": "Vector Store Retriever", + "type": "ai_vectorStore", + "index": 0 + } + ] + ] + }, + "Start the workflow by clicking \"Test workflow\"": { + "main": [ + [ + { + "node": "Get sitemap", + "type": "main", + "index": 0 + } + ] + ] + }, + "Extract main content": { + "main": [ + [ + { + "node": "Aggregate", + "type": "main", + "index": 0 + } + ] + ] + } + } +} diff --git a/docs/advanced-ai/examples/agent-chain-comparison.md b/docs/advanced-ai/examples/agent-chain-comparison.md index f6ec90d81..c2c0d43f3 100644 --- a/docs/advanced-ai/examples/agent-chain-comparison.md +++ b/docs/advanced-ai/examples/agent-chain-comparison.md @@ -1,5 +1,5 @@ --- -contentType: overview +contentType: explanation title: Agents vs chains description: A workflow example that demonstrates key differences between agents and chains. workflowFile: advanced-ai/examples/agents_vs_chains.json diff --git a/docs/advanced-ai/examples/api-workflow-tool.md b/docs/advanced-ai/examples/api-workflow-tool.md index 40ef8e729..d09d5ed3d 100644 --- a/docs/advanced-ai/examples/api-workflow-tool.md +++ b/docs/advanced-ai/examples/api-workflow-tool.md @@ -1,5 +1,5 @@ --- -contentType: overview +contentType: howto title: Call an API to fetch data description: Use the n8n workflow tool to load data from an API using the HTTP Request node into your AI workflow. workflowFile: advanced-ai/examples/let_your_ai_call_an_api.json diff --git a/docs/advanced-ai/examples/human-fallback.md b/docs/advanced-ai/examples/human-fallback.md index f2369deb6..533f67525 100644 --- a/docs/advanced-ai/examples/human-fallback.md +++ b/docs/advanced-ai/examples/human-fallback.md @@ -1,5 +1,5 @@ --- -contentType: overview +contentType: howto title: Set a human fallback for AI workflows description: Have a workflow that triggers a human answer when the AI can't help. workflowFile: advanced-ai/examples/ask_a_human.json diff --git a/docs/advanced-ai/examples/introduction.md b/docs/advanced-ai/examples/introduction.md index 28931aa70..0347fd182 100644 --- a/docs/advanced-ai/examples/introduction.md +++ b/docs/advanced-ai/examples/introduction.md @@ -25,7 +25,20 @@ This section provides explanations of important AI concepts, and workflow templa [:octicons-arrow-right-24: What is a tool in AI?](/advanced-ai/examples/understand-tools/) [:octicons-arrow-right-24: Chat with Google Sheets](/advanced-ai/examples/data-google-sheets/) [:octicons-arrow-right-24: Call an API to fetch data](/advanced-ai/examples/api-workflow-tool/) - [:octicons-arrow-right-24: Set up a human fallback](/advanced-ai/examples/human-fallback/) + [:octicons-arrow-right-24: Set up a human fallback](/advanced-ai/examples/human-fallback/) + +- __Vector databases__ + + Learn about vector databases in AI, along with related concepts including embeddings and retrievers. Then try out an example that scrapes a website, loads date into a vector database, and allows you to chat with an AI that uses the data. + + [:octicons-arrow-right-24: What is a vector database?](/advanced-ai/examples/understand-vector-databases/) + [:octicons-arrow-right-24: Populate a Pinecone vector database from a website](/advanced-ai/examples/vector-store-website/) + +- __Memory__ + + Learn about memory in AI. + + [:octicons-arrow-right-24: What is memory in AI?](/advanced-ai/examples/understand-memory/) - __More concepts and examples coming soon__ diff --git a/docs/advanced-ai/examples/understand-chains.md b/docs/advanced-ai/examples/understand-chains.md index 7c8df84ef..6d0d410e4 100644 --- a/docs/advanced-ai/examples/understand-chains.md +++ b/docs/advanced-ai/examples/understand-chains.md @@ -14,7 +14,7 @@ Chains bring together different components of AI to create a cohesive system. Th n8n provides three chain nodes: * [Basic LLM Chain](/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.chainllm/): use to interact with an LLM, without any additional components. -* [Retrieval Q&A Chain](/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.chainretrievalqa/): can connect to a vector store using a retriever, or to an n8n workflow using the Workflow Retriever node. Use this if you want to create a workflow that supports asking questions about specific documents. +* [Question and Answer Chain](/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.chainretrievalqa/): can connect to a vector store using a retriever, or to an n8n workflow using the Workflow Retriever node. Use this if you want to create a workflow that supports asking questions about specific documents. * [Summarization Chain](/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.chainsummarization/): takes an input and returns a summary. There's an important difference between chains in n8n and in other tools such as LangChain: none of the chain nodes support memory. This means they can't remember previous user queries. If you use LangChain to code an AI application, you can give your application memory. In n8n, if you need your workflow to support memory, use an agent. This is essential if you want users to be able to have a natural ongoing conversation with your app. diff --git a/docs/advanced-ai/examples/understand-memory.md b/docs/advanced-ai/examples/understand-memory.md new file mode 100644 index 000000000..eed8ccffc --- /dev/null +++ b/docs/advanced-ai/examples/understand-memory.md @@ -0,0 +1,24 @@ +--- +title: What is memory in AI? +description: Understand memory in the context of AI. Learn what's special about memory in n8n. +contentType: explanation +--- + +# What is memory in AI? + +Memory is a key part of AI chat services. The memory keeps a history of previous messages, allowing for an ongoing conversation with the AI, rather than every interaction starting fresh. + +## AI memory in n8n + +To add memory to your AI workflow you can use either: + +* [Window Buffer Memory](/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.memorybufferwindow/): stores a customizable length of chat history for the current session. This is the easiest to get started with. +* One of the memory services that n8n provides nodes for. These include: + * [Motorhead](/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.memorymotorhead/) + * [Redis Chat Memory](/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.memoryredischat/) + * [Xata](/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.memoryxata/) + * [Zep](/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.memoryzep/) + +If you need to do advanced AI memory management in your workflows, use the [Chat Memory Manager](/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.memorymanager/) node. + +--8<-- "_snippets/integrations/builtin/cluster-nodes/langchain-sub-nodes/chat-memory-manager-purpose.md" diff --git a/docs/advanced-ai/examples/understand-tools.md b/docs/advanced-ai/examples/understand-tools.md index 9a3395112..f6181929d 100644 --- a/docs/advanced-ai/examples/understand-tools.md +++ b/docs/advanced-ai/examples/understand-tools.md @@ -16,15 +16,16 @@ Here are a couple of other ways of expressing it: > We can think of these tools as being almost like functions that your AI model can call ([source](https://www.udemy.com/course/chatgpt-and-langchain-the-complete-developers-masterclass/){:target=_blank .external-link}) -## Tools in n8n +## AI tools in n8n -n8n provides tool sub-nodes that you can connect to your AI agent. As well as providing some popular tools, such as [Wikipedia](/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.toolwikipedia/) and [SerpAPI](/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.toolserpapi/), n8n provides two especially powerful tools: +n8n provides tool sub-nodes that you can connect to your AI agent. As well as providing some popular tools, such as [Wikipedia](/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.toolwikipedia/) and [SerpAPI](/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.toolserpapi/), n8n provides three especially powerful tools: * [Custom n8n Workflow Tool](/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.toolworkflow/): use this to load any n8n workflow as a tool. * [Custom Code Tool](/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.toolcode/): write code that your agent can run. +* [HTTP Request Tool](/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.toolhttprequest/): make calls to fetch a website or data from an API. The next three examples highlight the Custom n8n Workflow Tool: - [Chat with Google Sheets](/advanced-ai/examples/data-google-sheets/) - [Call an API to fetch data](/advanced-ai/examples/api-workflow-tool/) -- [Set up a human fallback](/advanced-ai/examples/human-fallback/) +- [Set up a human fallback](/advanced-ai/examples/human-fallback/) diff --git a/docs/advanced-ai/examples/understand-vector-databases.md b/docs/advanced-ai/examples/understand-vector-databases.md new file mode 100644 index 000000000..4156af8bc --- /dev/null +++ b/docs/advanced-ai/examples/understand-vector-databases.md @@ -0,0 +1,52 @@ +--- +title: What are vector databases? +description: Understand vector databases. Learn how n8n provides vector databases, along with the key components to work with them, including embeddings, retrievers, and document loaders. +contentType: explanation +--- + +# What are vector databases? + +Vector databases store information as numbers: + +> A vector database is a type of database that stores data as high-dimensional vectors, which are mathematical representations of features or attributes. ([source](https://learn.microsoft.com/en-us/semantic-kernel/memories/vector-db){:target=_blank .external-link}) + +This enables fast and accurate similarity searches. With a vector database, instead of using conventional database queries, you can search for relevant data based on semantic and contextual meaning. + +## A simplified example + +A vector database could store the sentence "n8n is a source-available automation tool that you can self-host", but instead of storing it as text, the vector database stores an array of dimensions (numbers between 0 and 1) that represent its features. This doesn't mean turning each letter in the sentence into a number. Instead, the vectors in the vector database describe the sentence. + +Suppose that in a vector store `0.1` represents `automation tool`, `0.2` represents `source available`, and `0.3` represents `can be self-hosted`. You could end up with the following vectors: + +| Sentence | Vector (array of dimensions) | +| -------- | ------ | +| n8n is a source-available automation tool that you can self-host | [0.1, 0.2, 0.3] | +| Zapier is an automation tool | [0.1] | +| Make is an automation tool | [0.1] | +| Confluence is a wiki tool that you can self-host | [0.3] | + +/// note | This example is very simplified +In practice, vectors are far more complex. A vector can range in size from tens to thousands of dimensions. The dimensions don't have a one-to-one relationship to a single feature, so you can't translate individual dimensions directly into single concepts. This example gives an approximate mental model, not a true technical understanding. +/// + + +## Demonstrating the power of similarity search + +Qdrant provide [vector search demos](https://qdrant.tech/demo/){:target=_blank .external-link} to help users understand the power of vector databases. The [food discovery demo](https://food-discovery.qdrant.tech/){:target=_blank .external-link} shows how a vector store can help match pictures based on visual similarities. + +> This demo uses data from Delivery Service. Users may like or dislike the photo of a dish, and the app will recommend more similar meals based on how they look. It's also possible to choose to view results from the restaurants within the delivery radius. ([source](https://qdrant.tech/demo/){:target=_blank .external-link}) + +For full technical details, refer to the [Qdrant demo-food-discovery GitHub repository](https://github.com/qdrant/demo-food-discovery){:target=_blank .external-link}. + +## Embeddings, retrievers, text splitters, and document loaders + +Vector databases require other tools to function: + +- Document loaders and text splitters: document loaders pull in documents and data, and prepare them for embedding. Document loaders can use text splitters to break documents into chunks. +- Embeddings: these are the tools that turn the data (text, images, and so on) into vectors, and back into raw data. Note that n8n only supports text embeddings. +- Retrievers: retrievers fetch documents from vector databases. You need to pair them with an embedding to translate the vectors back into data. + + + + + diff --git a/docs/advanced-ai/examples/vector-store-website.md b/docs/advanced-ai/examples/vector-store-website.md new file mode 100644 index 000000000..b9f658e24 --- /dev/null +++ b/docs/advanced-ai/examples/vector-store-website.md @@ -0,0 +1,29 @@ +--- +contentType: howto +title: Populate a Pinecone vector database from a website +description: Scrape a website, load the data into Pinecone, then query it using a chat workflow. +workflowFile: advanced-ai/examples/populate_a_pinecone_vector_database_from_a_website.json +--- + +# Populate a Pinecone vector database from a website + +Use n8n to scrape a website, load the data into Pinecone, then query it using a chat workflow. This workflow uses the [HTTP node](/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/) to get website data, extracts the relevant content using the [HTML node](/integrations/builtin/core-nodes/n8n-nodes-base.html/), then uses the [Pinecone Vector Store node](/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.vectorstorepinecone/) to send it to Pinecone. + +
+!["Screenshot of the two workflows in this example"](/_images/advanced-ai/examples/vector-store-website.png) +
[Download the example workflow](/_workflows/[[ page.meta.workflowFile ]])
+
+ +## Key features + +This workflow uses: + +* [HTTP node](/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/): fetches website data. +* [HTML node](/integrations/builtin/core-nodes/n8n-nodes-base.html/): simplifies the data by extracting the main content from the page. +* [Pinecone Vector Store node](/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.vectorstorepinecone/) and [Embeddings OpenAI](/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.embeddingsopenai/): transform the data into vectors and store it in Pinecone. +* [Chat Trigger](/integrations/builtin/core-nodes/n8n-nodes-langchain.chattrigger/) and [Question and Answer Chain](/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.chainretrievalqa/) to query the vector database. + + +## Using the example + +[[% include "_includes/examples-color-key.html" %]] diff --git a/docs/code/builtin/output-other-nodes.md b/docs/code/builtin/output-other-nodes.md index 01cc0f0dc..902e7c4ba 100644 --- a/docs/code/builtin/output-other-nodes.md +++ b/docs/code/builtin/output-other-nodes.md @@ -15,20 +15,20 @@ You can use Python in the Code node. It isn't available in expressions. === "JavaScript" | Method | Description | Available in Code node? | | ------ | ----------- | :-------------------------: | - | `$("").all(branchIndex?, runIndex?)` | Returns all items from a given node. | :white_check_mark: | - | `$("").first(branchIndex?, runIndex?)` | The first item output by the given node | :white_check_mark: | - | `$("").last(branchIndex?, run Index?)` | The last item output by the given node. | :white_check_mark: | + | `$("").all(branchIndex?, runIndex?)` | Returns all items from a given node. If `branchIndex` isn't given it will default to the output that connects `node-name` with the node where you use the expression or code. | :white_check_mark: | + | `$("").first(branchIndex?, runIndex?)` | The first item output by the given node. If `branchIndex` isn't given it will default to the output that connects `node-name` with the node where you use the expression or code. | :white_check_mark: | + | `$("").last(branchIndex?, runIndex?)` | The last item output by the given node. If `branchIndex` isn't given it will default to the output that connects `node-name` with the node where you use the expression or code. | :white_check_mark: | | `$("").item` | The linked item. This is the item in the specified node used to produce the current item. Refer to [Item linking](/data/data-mapping/data-item-linking/) for more information on item linking. | :x: | | `$("").params` | Object containing the query settings of the given node. This includes data such as the operation it ran, result limits, and so on. | :white_check_mark: | | `$("").context` | Boolean. Only available when working with the Loop Over Items node. Provides information about what's happening in the node. Use this to determine whether the node is still processing items. | :white_check_mark: | - | `$("").itemMatching(currentNodeinputIndex)` | Use instead of `$("").item` in the Code node if you need to trace back from an input item. | :white_check_mark: | + | `$("").itemMatching(currentNodeInputIndex)` | Use instead of `$("").item` in the Code node if you need to trace back from an input item. | :white_check_mark: | === "Python" | Method | Description | Available in Code node? | | ------ | ----------- | :-------------------------: | - | `_("").all(branchIndex?, runIndex?)` | Returns all items from a given node. | :white_check_mark: | - | `_("").first(branchIndex?, runIndex?)` | The first item output by the given node | :white_check_mark: | - | `_("").last(branchIndex?, run Index?)` | The last item output by the given node. | :white_check_mark: | + | `_("").all(branchIndex?, runIndex?)` | Returns all items from a given node. If `branchIndex` isn't given it will default to the output that connects`node-name` with the node where you use the expression or code. | :white_check_mark: | + | `_("").first(branchIndex?, runIndex?)` | The first item output by the given node. If `branchIndex` isn't given it will default to the output that connects`node-name` with the node where you use the expression or code. | :white_check_mark: | + | `_("").last(branchIndex?, runIndex?)` | The last item output by the given node. If `branchIndex` isn't given it will default to the output that connects`node-name` with the node where you use the expression or code. | :white_check_mark: | | `_("").item` | The linked item. This is the item in the specified node used to produce the current item. Refer to [Item linking](/data/data-mapping/data-item-linking/) for more information on item linking. | :x: | | `_("").params` | Object containing the query settings of the given node. This includes data such as the operation it ran, result limits, and so on. | :white_check_mark: | | `_("").context` | Boolean. Only available when working with the Loop Over Items node. Provides information about what's happening in the node. Use this to determine whether the node is still processing items. | :white_check_mark: | - | `_("").itemMatching(currentNodeinputIndex)` | Use instead of `_("").item` in the Code node if you need to trace back from an input item. Refer to [Retrieve linked items from earlier in the workflow](/code/cookbook/builtin/itemmatching/) for an example. | :white_check_mark: | + | `_("").itemMatching(currentNodeInputIndex)` | Use instead of `_("").item` in the Code node if you need to trace back from an input item. Refer to [Retrieve linked items from earlier in the workflow](/code/cookbook/builtin/itemmatching/) for an example. | :white_check_mark: | diff --git a/docs/courses/level-two/chapter-1.md b/docs/courses/level-two/chapter-1.md index b801d678c..d07d82789 100644 --- a/docs/courses/level-two/chapter-1.md +++ b/docs/courses/level-two/chapter-1.md @@ -63,7 +63,7 @@ An n8n node performs its action on each item of incoming data. ## Creating data sets with the Code node -Now that you are familiar with the n8n data structure, you can use it to create your own data sets or simulate node outputs. To do this, use the Code node to write JavaScript code defining your array of objects with the following structure: +Now that you are familiar with the n8n data structure, you can use it to create your own data sets or simulate node outputs. To do this, use the [Code node](/integrations/builtin/core-nodes/n8n-nodes-base.code/){:target="_blank"} to write JavaScript code defining your array of objects with the following structure: ```javascript return [ @@ -102,34 +102,34 @@ In a Code node, create an array of objects named `myContacts` that contains the ??? note "Show me the solution" - In the Code node, in the JavaScript Code field you have to write the following code: + In the **Code node**, in the JavaScript Code field you have to write the following code: - ```js - var myContacts = [ - { - json: { - name: 'Alice', - email: { - personal: 'alice@home.com', - work: 'alice@wonderland.org' + ```javascript + var myContacts = [ + { + json: { + name: 'Alice', + email: { + personal: 'alice@home.com', + work: 'alice@wonderland.org' + }, + } + }, + { + json: { + name: 'Bob', + email: { + personal: 'bob@mail.com', + work: 'contact@thebuilder.com' }, - } - }, - { - json: { - name: 'Bob', - email: { - personal: 'bob@mail.com', - work: 'contact@thebuilder.com' - }, - } - }, - ]; + } + }, + ]; - return myContacts; + return myContacts; ``` - When you execute the Code node, the result should look like this: + When you execute the **Code node**, the result should look like this:
Result of Code node
@@ -137,7 +137,7 @@ In a Code node, create an array of objects named `myContacts` that contains the ## Referencing node data with the Code node -Just like you can use [expressions](/code/expressions/) to reference data from other nodes, you can also use some [methods and variables](/code/builtin/overview/) in the Code node. +Just like you can use [expressions](/code/expressions/) to reference data from other nodes, you can also use some [methods and variables](/code/builtin/overview/) in the **Code node**. Please make sure you read these pages before continuing to the next exercise. @@ -146,15 +146,15 @@ Please make sure you read these pages before continuing to the next exercise. Let's build on the previous exercise, in which you used the Code node to create a data set of two contacts with their names and emails. Now, connect a second Code node to the first one. In the new node, write code to create a new column named `workEmail` that references the work email of the first contact. ??? note "Show me the solution" - In the Code node, in the JavaScript Code field you have to write the following code: + In the **Code node**, in the JavaScript Code field you have to write the following code: + ```javascript + let items = $input.all(); + items[0].json.workEmail = items[0].json.email['work']; + return items; + ``` - let items = $input.all(); - items[0].json.workEmail = items[0].json.email['work']; - return items; - - - When you execute the Code node, the result should look like this: + When you execute the **Code node**, the result should look like this:
Code node reference
@@ -170,56 +170,61 @@ The two most common operations for data transformation are: There are several ways to transform data for the purposes mentioned above: -- Using n8n's [data transformation nodes](/data/#data-transformation-nodes). This is the way to modify the structure of incoming data that contain lists (arrays), without needing to use JavaScript code in the Code node. Use [Split Out](/integrations/builtin/core-nodes/n8n-nodes-base.splitout/) to separate a single data item containing a list into multiple items, and [Aggregate](/integrations/builtin/core-nodes/n8n-nodes-base.aggregate/) to take separate items, or portions of them, and group them together into individual items. -- With the Code node, you can write JavaScript functions to modify the data structure of incoming data using the *Run Once for All Items* mode: - - To create multiple items from a single item, you can use this JavaScript code: - - ```js +- Use n8n's [data transformation nodes](/data/#data-transformation-nodes). Use these nodes to modify the structure of incoming data that contain lists (arrays) without needing to use JavaScript code in the **Code node**: + - Use the [**Split Out node**](/integrations/builtin/core-nodes/n8n-nodes-base.splitout/) to separate a single data item containing a list into multiple items. + - Use the [**Aggregate node**](/integrations/builtin/core-nodes/n8n-nodes-base.aggregate/) to take separate items, or portions of them, and group them together into individual items. +- Use the **Code node** to write JavaScript functions to modify the data structure of incoming data using the **Run Once for All Items** mode: + - To create multiple items from a single item, you can use this JavaScript code: + ```javascript return $input.all().map(item => { return { json: item } }); ``` - - To create a single item from multiple items, you can use this JavaScript code: - - ```js - return [ - { - json: { - data_object: $input.all().map(item => item.json) - } + - To create a single item from multiple items, you can use this JavaScript code: + ```javascript + return [ + { + json: { + data_object: $input.all().map(item => item.json) + } } ]; ``` +These JavaScript examples assume your entire input is what you want to transform. As in the exercise above, you can also execute either operation on a specific field by identifying that in the items list, for example, if our workEmail example had multiple emails in a single field, we could run some code like this: +```javascript +let items = $input.all(); +return items[0].json.workEmail.map(item => { + return { + json: item + } +}); +``` + ### Exercise -Use the HTTP Request node to make a GET request to the Quotable API `https://api.quotable.io/quotes`. Transform the data in the `results` field with the Split Out node and also with the Code node. +1. Use the **HTTP Request node** to make a GET request to the Quotable API `https://api.quotable.io/quotes`. (This API requires no authentication). +2. Transform the data in the `results` field with the **Split Out node**. +3. Transform the data in the `results` field with the **Code node**. ??? note "Show me the solution" - To get the quotes from the Quotable API, execute the *HTTP Request node* with the following parameters: - - - Authentication: None - - Request Method: GET - - URL: https://api.quotable.io/quotes - - To transform the data with the Code node, connect this node to the *HTTP Request node* and write the following code in the JavaScript Code field: - - ```js + 1. To get the quotes from the Quotable API, execute the **HTTP Request node** with the following parameters: + - **Authentication**: None + - **Request Method**: GET + - **URL**: https://api.quotable.io/quotes + 2. To transform the data with the **Split Out node**, connect this node to the **HTTP Request node** and set the following parameters: + - **Field To Split Out**: results + - **Include**: No Other Fields + 3. To transform the data with the **Code node**, connect this node to the **HTTP Request node** and write the following code in the JavaScript Code field: + ```javascript + let items = $input.all(); return items[0].json.results.map(item => { return { json: item } }); - ``` - - To transform the data with the Split Out node, connect this node to the *HTTP Request node* and set the following parameters: - - - Operation: Split Out Items - - Field To Split Out: results - - Include: No Other Fields + ``` diff --git a/docs/courses/level-two/chapter-2.md b/docs/courses/level-two/chapter-2.md index 5ed9a3c65..da288c850 100644 --- a/docs/courses/level-two/chapter-2.md +++ b/docs/courses/level-two/chapter-2.md @@ -14,60 +14,66 @@ 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. /// -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/). +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 the [**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). +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). -### Exercise +### HTML Exercise -Let's get the title of the latest n8n blog post. Use the HTTP Request node to make a GET request to the URL `https://blog.n8n.io/`. Then, connect an HTML node and configure it to extract the title of the first post on the page. +Let's get the title of the latest n8n blog post: + +1. Use the **HTTP Request node** to make a GET request to the URL `https://blog.n8n.io/` (this endpoint requires no authentication). +2. Connect an **HTML node** and configure it to extract the title of the first blog post on the page. + - Hint: If you're not familiar with CSS selectors or reading HTML, the CSS selector `.item-title a` should help! ??? note "Show me the solution" - Configure the HTTP Request node with the following parameters: - - - Authentication: None - - Request Method: GET - - URL: https://blog.n8n.io/ - + 1. Configure the HTTP Request node with the following parameters: + - **Authentication**: None + - **Request Method**: GET + - **URL**: https://blog.n8n.io/ The result should look like this: -
Result of HTTP Request node
+
Result of HTTP Request node
Result of HTTP Request node
- Connect an HTML node to the HTTP Request node and configure the former's parameters: - - * Operation: Extract HTML Content - * Source Data: JSON - * JSON Property: data - * Extraction Values: - * Key: title - * CSS Selector: .item-title a - * Return Value: HTML + 2. Connect an **HTML node** to the **HTTP Request node** and configure the former's parameters: + - **Operation**: Extract HTML Content + - **Source Data**: JSON + - **JSON Property**: data + - **Extraction Values**: + - **Key**: title + - **CSS Selector**: `.item-title a` + - **Return Value**: HTML You can add more values to extract more data. The result should look like this: -
Result of HTML Extract node
- +
Result of HTML Extract node
Result of HTML Extract node
-Use the XML node to convert XML to JSON and JSON to XML. This operation is useful if you work with different web services that use either XML or JSON, and need to get and submit data between them in the two formats. +Use the **XML node** to convert XML to JSON and JSON to XML. This operation is useful if you work with different web services that use either XML or JSON and need to get and submit data between them in the two formats. -### Exercise +### XML Exercise -In a previous exercise, you used an HTTP Request node to make a request to an API. Now, use the XML node to convert the JSON output to XML. +In the [final exercise of Chapter 1](/courses/level-two/chapter-1/#exercise_2), you used an **HTTP Request node** to make a request to the Quotable API. In this exercise, we'll return to that same API but we'll convert the output to XML: + +1. Add an **HTTP Request node** that makes the same request to the Quotable API at `https://api.quotable.io/quotes`. +2. Use the XML node to convert the JSON output to XML. ??? note "Show me the solution" - Get data from the Quotable API using the HTTP Request node and connect an XML node to it with the following parameters: - - - Mode: **JSON to XML** - - Property name: **data** + 1. To get the quotes from the Quotable API, execute the **HTTP Request node** with the following parameters: + - **Authentication**: None + - **Request Method**: GET + - **URL**: https://api.quotable.io/quotes + 2. Connect an **XML node** to it with the following parameters: + - **Mode**: JSON to XML + - **Property name**: data The result should look like this: -
XML node (JSON to XML) – Table View
+
Table view of XML Node (JSON to XML)
XML node (JSON to XML) – Table View
To transform data the other way around, select the mode **XML to JSON**. @@ -82,129 +88,186 @@ Date and time data types include `DATE`, `TIME`, `DATETIME`, `TIMESTAMP`, and `Y - `TIMESTAMP`: 1616108400 (Unix timestamp), 1616108400000 (Unix ms timestamp) - `YEAR`: 2022, 22 -If you need to convert date and time data to different formats, and calculate dates, use the [Date & Time node](/integrations/builtin/core-nodes/n8n-nodes-base.datetime/). +There are a few ways you can work with dates and times: -You can also schedule workflows to run at a specific time, interval, or duration, using the [Schedule Trigger](/integrations/builtin/core-nodes/n8n-nodes-base.scheduletrigger/) node. +- Use the [**Date & Time node**](/integrations/builtin/core-nodes/n8n-nodes-base.datetime/) to convert date and time data to different formats and calculate dates. +- Use [**Schedule Trigger node**](/integrations/builtin/core-nodes/n8n-nodes-base.scheduletrigger/) to schedule workflows to run at a specific time, interval, or duration. + +Sometimes, you might need to pause the workflow execution. This might be necessary if you know that a service doesn't process the data instantly or it's slow to return all the results. In these cases, you don't want n8n to pass incomplete data to the next node. + +If you run into situations like this, use the [**Wait node**](/integrations/builtin/core-nodes/n8n-nodes-base.wait/) after the node that you want to delay. The **Wait node** pauses the workflow execution and will resume execution: + +- At a specific time. +- After a specified time interval. +- On a webhook call. -In some cases, you might need to pause the workflow execution. This might be necessary, for example, if you know that a service doesn't process the data instantly or it's generally slower, so you don't want the incomplete data to be passed to the next node. In this case, you can use the [Wait node](/integrations/builtin/core-nodes/n8n-nodes-base.wait/) after the node that you want to delay. The Wait node pauses the workflow execution and resumes it at a specific time, after a time interval, or on a webhook call. - -### Exercise +### Date Exercise Build a workflow that adds five days to an input date from the Customer Datastore node that you used before. Then, if the calculated date occurred after 1959, the workflow waits 1 minute before [setting](/integrations/builtin/core-nodes/n8n-nodes-base.set/) the calculated date as a value. The workflow should be triggered every 30 minutes. + +To begin: + +1. Add the **Customer Datastore (n8n training) node** with the **Get All People** action selected. Return All. +2. Add the **Date & Time node** to Round Up the created Date from the datastore to End of Month. Output this to field new-date. Include all input fields. +3. Add the **If node** to check if that new rounded date is after `1960-01-01 00:00:00`. +4. Add the **Wait node** to the True output of that node and set it to wait for one minute. +5. Add the **Edit Fields (Set) node** to set a new field called outputValue to a String containing new-date. Include all input fields. +6. Add the **Schedule Trigger node** at the beginning of the workflow to trigger it every 30 minutes. (You can keep the [Manual Trigger node](/integrations/builtin/core-nodes/n8n-nodes-base.manualworkflowtrigger/) for testing!) + ??? note "Show me the solution" - You can build this workflow using the data from the *Customer Datastore node*, the three nodes for managing date and time, an *IF node* for conditional routing, and a *Set node* for setting the new calculated date. You can add a [Manual Trigger node](/integrations/builtin/core-nodes/n8n-nodes-base.manualworkflowtrigger/) too for easy testing during development. The workflow looks like this: + 1. Add the **Customer Datastore (n8n training) node** with the **Get All People** action selected. + - Select the option to **Return All**. + 2. Add a **Date & Time node** connected to the Customer Datastore node. Select the option to **Round a Date**. + - Add the `created` date as the **Date** to round. + - Select `Round Up` as the **Mode** and `End of Month` as the **To**. + - Set the **Output Field Name** as `new-date`. + - In **Options**, select **Add Option** and use the control to **Include Input Fields** + 3. Add an **If node** connected to the **Date & Time node**. + - Add the new-date field as the first part of the condition. + - Set the comparison to **Date &Time > is after** + - Add `1960-01-01 00:00:00` as the second part of the expression. (This should produce 3 items in the True Branch and 2 items in the False Branch) + 4. Add a **Wait node** to the True output of the **If node**. + - Set **Resume** to `After Time interval`. + - Set **Wait Amount** to `1.00`. + - Set **Wait Unit** to `Minutes`. + 5. Add an **Edit Fields (Set) node** to the **Wait node**. + - Use either JSON or Manual Mapping **Mode**. + - Set a new field called `outputValue` to be the value of the new-date field. + - Select the option to **Include Other Input Fields** and include **All** fields. + 6. Add a **Schedule Trigger node** at the beginning of the workflow. + - Set the **Trigger Interval** to use `Minutes`. + - Set the **Minutes Between Triggers** to 30. + - To test your schedule, be sure to activate the workflow. + - Be sure to connect this node to the **Customer Datastore (n8n training) node** you began with! + + The workflow should look like this: -
Workflow for transforming dates
+
Workflow for transforming dates
Workflow for transforming dates
- To check the configuration of each node, you can copy the JSON code of this workflow and paste it in your Editor UI. + To check the configuration of each node, you can copy the JSON code of this workflow and either paste it into the Editor UI or save it as a file and import from file into a new workflow. See [Export and import workflows](/workflows/export-import/) for more information. ```json { - "meta": { - "templateCredsSetupCompleted": true, - "instanceId": "cb484ba7b742928a2048bf8829668bed5b5ad9787579adea888f05980292a4a7" - }, + "name": "Course 2, Ch 2, Date exercise", "nodes": [ { "parameters": {}, - "id": "c2c4509b-c4d4-4e95-bd7d-039734954b68", + "id": "6bf64d5c-4b00-43cf-8439-3cbf5e5f203b", "name": "When clicking \"Test workflow\"", "type": "n8n-nodes-base.manualTrigger", "typeVersion": 1, "position": [ - 260, - 2080 + 620, + 280 ] }, { - "parameters": { - "action": "calculate", - "value": "={{$json[\"created\"]}}", - "duration": 5, - "dataPropertyName": "new-date", - "options": {} - }, - "name": "Date & Time", - "type": "n8n-nodes-base.dateTime", - "typeVersion": 1, - "position": [ - 660, - 2160 - ], - "id": "61b56e39-021f-4ad0-b72c-697978c4f384" - }, - { - "parameters": { - "unit": "minutes" - }, - "name": "Wait", - "type": "n8n-nodes-base.wait", - "typeVersion": 1, - "position": [ - 1040, - 2160 - ], - "webhookId": "d17effb8-ad90-4a74-bb88-daa3d3d18583", - "id": "842b788f-c236-4c67-bad0-155de7ef1be4" - }, - { - "parameters": { - "conditions": { - "dateTime": [ - { - "value1": "={{$json[\"new-date\"]}}", - "value2": "1960-01-01T00:00:00" - } - ] - } - }, - "name": "IF", - "type": "n8n-nodes-base.if", - "typeVersion": 1, - "position": [ - 840, - 2160 - ], - "id": "ce788b41-ba4c-41cd-85da-6bf23baa76aa" - }, - { - "parameters": { - "values": { - "string": [ - { - "name": "outputValue", - "value": "={{ $('IF').item.json['new-date'] }}" - } - ] - }, - "options": {} - }, - "name": "Set", - "type": "n8n-nodes-base.set", - "typeVersion": 1, - "position": [ - 1220, - 2160 - ], - "id": "df3e455c-5c5e-42af-ad5c-a9bb6869a921" - }, - { "parameters": { "operation": "getAllPeople", "returnAll": true }, - "name": "Customer Datastore", + "id": "a08a8157-99ee-4d50-8fe4-b6d7e16e858e", + "name": "Customer Datastore (n8n training)", "type": "n8n-nodes-base.n8nTrainingCustomerDatastore", "typeVersion": 1, "position": [ - 480, - 2160 + 840, + 360 + ] + }, + { + "parameters": { + "operation": "roundDate", + "date": "={{ $json.created }}", + "mode": "roundUp", + "outputFieldName": "new-date", + "options": { + "includeInputFields": true + } + }, + "id": "f66a4356-2584-44b6-a4e9-1e3b5de53e71", + "name": "Date & Time", + "type": "n8n-nodes-base.dateTime", + "typeVersion": 2, + "position": [ + 1080, + 360 + ] + }, + { + "parameters": { + "conditions": { + "options": { + "caseSensitive": true, + "leftValue": "", + "typeValidation": "strict" + }, + "conditions": [ + { + "id": "7c82823a-e603-4166-8866-493f643ba354", + "leftValue": "={{ $json['new-date'] }}", + "rightValue": "1960-01-01T00:00:00", + "operator": { + "type": "dateTime", + "operation": "after" + } + } + ], + "combinator": "and" + }, + "options": {} + }, + "id": "cea39877-6183-4ea0-9400-e80523636912", + "name": "If", + "type": "n8n-nodes-base.if", + "typeVersion": 2, + "position": [ + 1280, + 360 + ] + }, + { + "parameters": { + "amount": 1, + "unit": "minutes" + }, + "id": "5aa860b7-c73c-4df0-ad63-215850166f13", + "name": "Wait", + "type": "n8n-nodes-base.wait", + "typeVersion": 1.1, + "position": [ + 1480, + 260 ], - "id": "1f3573f7-1586-4e9a-9cbf-9eb7c7475b27" + "webhookId": "be78732e-787d-463e-9210-2c7e8239761e" + }, + { + "parameters": { + "assignments": { + "assignments": [ + { + "id": "e058832a-2461-4c6d-b584-043ecc036427", + "name": "outputValue", + "value": "={{ $json['new-date'] }}", + "type": "string" + } + ] + }, + "includeOtherFields": true, + "options": {} + }, + "id": "be034e9e-3cf1-4264-9d15-b6760ce28f91", + "name": "Edit Fields", + "type": "n8n-nodes-base.set", + "typeVersion": 3.3, + "position": [ + 1700, + 260 + ] }, { "parameters": { @@ -217,62 +280,30 @@ Build a workflow that adds five days to an input date from the Customer Datastor ] } }, - "id": "c3ce4d5e-524b-4806-9c25-43892113b5eb", + "id": "6e8e4308-d0e0-4d0d-bc29-5131b57cf061", "name": "Schedule Trigger", "type": "n8n-nodes-base.scheduleTrigger", "typeVersion": 1.1, "position": [ - 260, - 2260 + 620, + 480 ] } ], + "pinData": {}, "connections": { "When clicking \"Test workflow\"": { "main": [ [ { - "node": "Customer Datastore", + "node": "Customer Datastore (n8n training)", "type": "main", "index": 0 } ] ] }, - "Date & Time": { - "main": [ - [ - { - "node": "IF", - "type": "main", - "index": 0 - } - ] - ] - }, - "Wait": { - "main": [ - [ - { - "node": "Set", - "type": "main", - "index": 0 - } - ] - ] - }, - "IF": { - "main": [ - [ - { - "node": "Wait", - "type": "main", - "index": 0 - } - ] - ] - }, - "Customer Datastore": { + "Customer Datastore (n8n training)": { "main": [ [ { @@ -283,26 +314,58 @@ Build a workflow that adds five days to an input date from the Customer Datastor ] ] }, + "Date & Time": { + "main": [ + [ + { + "node": "If", + "type": "main", + "index": 0 + } + ] + ] + }, + "If": { + "main": [ + [ + { + "node": "Wait", + "type": "main", + "index": 0 + } + ] + ] + }, + "Wait": { + "main": [ + [ + { + "node": "Edit Fields", + "type": "main", + "index": 0 + } + ] + ] + }, "Schedule Trigger": { "main": [ [ { - "node": "Customer Datastore", + "node": "Customer Datastore (n8n training)", "type": "main", "index": 0 } ] ] } - }, - "pinData": {} + } } ``` ## Binary data -Up to now, you have mainly worked with text data. But what if you want to process data that's not text? For example, images or PDF files. This is binary data, as it's represented in the binary numeral system. In this form, binary data doesn't offer you useful information, so it needs to be converted into a readable form. +Up to now, you have mainly worked with text data. But what if you want to process data that's not text, like images or PDF files? These types of files are represented in the binary numeral system, so they're considered binary data. In this form, binary data doesn't offer you useful information, so you'll need to convert it into a readable form. In n8n, you can process binary data with the following nodes: @@ -315,7 +378,7 @@ In n8n, you can process binary data with the following nodes: Reading and writing files to disk isn't available on n8n Cloud. You'll read and write to the machine where you installed n8n. If you run n8n in Docker, your command runs in the n8n container and not the Docker host. The Read/Write Files From Disk node looks for files relative to the n8n install path. n8n recommends using absolute file paths to prevent any errors. /// -To read or write a binary file, you need to write the path (location) of the file in the node's `File(s) Selector` parameter (for the Read operation), or in the node's `File Path and Name` parameter (for the Write operation). +To read or write a binary file, you need to write the path (location) of the file in the node's `File(s) Selector` parameter (for the Read operation) or in the node's `File Path and Name` parameter (for the Write operation). /// warning | Naming the right path The file path looks slightly different depending on how you are running n8n: @@ -326,21 +389,24 @@ The file path looks slightly different depending on how you are running n8n: -### Exercise +### Binary Exercise 1 -Make an HTTP request to get this PDF file: `https://media.kaspersky.com/pdf/Kaspersky_Lab_Whitepaper_Anti_blocker.pdf.` Then, use the Extract From File node to convert the file from binary to JSON. +For our first binary exercise, let's convert a PDF file to JSON: + +1. Make an HTTP request to get this PDF file: `https://media.kaspersky.com/pdf/Kaspersky_Lab_Whitepaper_Anti_blocker.pdf.` +2. Use the **Extract From File node** to convert the file from binary to JSON. ??? note "Show me the solution" - In the HTTP Request node, you should see the PDF file, like this: + In the **HTTP Request node**, you should see the PDF file, like this: -
HTTP Request node to get PDF
+
HTTP Request node to get PDF
HTTP Request node to get PDF
- When you convert the PDF from binary to JSON Extract From File node, the result should look like this: + When you convert the PDF from binary to JSON using the **Extract From File node**, the result should look like this: -
Extract From File node
+
Extract From File node
Extract From File node
- To check the configuration of the nodes, you can copy-paste the JSON code of the workflow: + To check the configuration of the nodes, you can copy the JSON workflow code below and paste it into your Editor UI: ```json { @@ -416,17 +482,22 @@ Make an HTTP request to get this PDF file: `https://media.kaspersky.com/pdf/Kasp -### Exercise +### Binary Exercise 2 -Make an HTTP request to the Poetry DB API `https://poetrydb.org/random/1` and convert the returned data from JSON to binary using the Convert to File node. Then, write the new binary file data to the machine where n8n is running. Finally, to check that it worked out, read the generated binary file from the machine referencing it with an expression in the node. +For our second binary exercise, let's convert some JSON data to binary: + +1. Make an HTTP request to the Poetry DB API `https://poetrydb.org/random/1`. +2. Convert the returned data from JSON to binary using the **Convert to File node**. +3. Write the new binary file data to the machine where n8n is running using the **Read/Write Files From Disk node**. +4. To check that it worked out, use the **Read/Write Files From Disk node** to read the generated binary file. ??? note "Show me the solution" The workflow for this exercise looks like this: -
Workflow for moving JSON to binary data
+
Workflow for moving JSON to binary data
Workflow for moving JSON to binary data
- To check the configuration of the nodes, you can copy-paste the JSON code of the workflow: + To check the configuration of the nodes, you can copy the JSON workflow code below and paste it into your Editor UI: ```json { diff --git a/docs/courses/level-two/chapter-3.md b/docs/courses/level-two/chapter-3.md index 3ceb0de9c..5d22fad71 100644 --- a/docs/courses/level-two/chapter-3.md +++ b/docs/courses/level-two/chapter-3.md @@ -14,7 +14,7 @@ In some cases, you might need to merge (combine) and process data from different 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. +- Synchronizing data between multiple systems. This could include 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 aren't reflected in the main system. @@ -25,44 +25,49 @@ In a two-way sync, data is synchronized in both directions (between both systems /// -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: +In n8n, you can merge data from two different nodes using the [Merge node](/integrations/builtin/core-nodes/n8n-nodes-base.merge/){:target="_blank"}, which provides several merging options: -- Combine (Merge by Fields, Merge by Position and Multiplex) -- Append -- Choose Branch +- [Append](/integrations/builtin/core-nodes/n8n-nodes-base.merge/#append){:target="_blank"} +- [Combine](/integrations/builtin/core-nodes/n8n-nodes-base.merge/#combine){:target="_blank"} + - [Merge by Fields](/integrations/builtin/core-nodes/n8n-nodes-base.merge/#merge-by-fields){:target="_blank"}: requires input fields to match on + - [Merge by Position](/integrations/builtin/core-nodes/n8n-nodes-base.merge/#merge-by-position){:target="_blank"} + - [Multiplex](/integrations/builtin/core-nodes/n8n-nodes-base.merge/#multiplex){:target="_blank"} +- [Choose Branch](/integrations/builtin/core-nodes/n8n-nodes-base.merge/#choose-branch){:target="_blank"} -Notice that Combine/Merge by Fields mode requires a key. This key represents a common property between the two data sources, based on which the data can be merged. In the Merge node, they're called `Input 1 Field` and `Input 2 Field`. +Notice that Combine > Merge by Fields requires you enter input fields to match on. These fields should contain identical values between the data sources so n8n can properly match data together. In the **Merge node**, they're called `Input 1 Field` and `Input 2 Field`. -
Property Input fields in the Merge node
+
Property Input fields in the Merge node
Property Input fields in the Merge node
/// warning | Property Input in dot notation -If you want to reference nested values in the *Merge node* parameters `Input 1 Field` and `Input 2 Field`, 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 `Input 1 Field` and `Input 2 Field`, 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. +You can also find the **Merge node** under the alias Join. This might be more intuitive if you're familiar with SQL joins. /// -### Exercise +### Merge Exercise Build a workflow that merges data from the Customer Datastore node and Code node. -* Add a Merge node that takes Input 1 from a Customer Datastore node and Input 2 from a Code node. -* In the Customer Datastore node, run the operation Get All People. -* In the Code node, create an array of two objects with three properties: `name`, `language`, and `country`, where the property `country` has two sub-properties `code` and `name`. Fill out the values of these properties with the information of two characters from the Customer Database. For example, Jay Gatsby's language would be English and country name would be United States. -* In the Merge node, try out different merge modes. +1. Add a **Merge node** that takes `Input 1` from a **Customer Datastore node** and `Input 2` from a **Code node**. +2. In the **Customer Datastore node**, run the operation **Get All People**. +3. In the **Code node**, create an array of two objects with three properties: `name`, `language`, and `country`, where the property `country` has two sub-properties `code` and `name`. + - Fill out the values of these properties with the information of two characters from the Customer Database. + - For example, Jay Gatsby's language is English and country name is United States. +4. In the **Merge node**, try out different merge options. ??? note "Show me the solution" The workflow for this exercise looks like this: -
Workflow exercise for merging data
+
Workflow exercise for merging data
Workflow exercise for merging data
- If you merge data with the option *Keep Key Matches* using the country code as the common key, the result should look like this: + If you merge data with the option **Keep Matches** using the name as the input fields to match, the result should look like this (note this example only contains Jay Gatsby; yours might look different depending on which characters you selected): -
Output of Merge node with option to keep key matches
+
Output of Merge node with option to keep matches
Output of Merge node with option to keep matches
- To check the configuration of the nodes, you can copy-paste the JSON code of the workflow: + To check the configuration of the nodes, you can copy the JSON workflow code below and paste it into your Editor UI: ```json { @@ -178,36 +183,64 @@ Build a workflow that merges data from the Customer Datastore node and Code node ## Looping -In some cases, you might need to perform the same operation on each element of an array / each data item (for example sending a message to every contact in your address book). In technical terms, you need to iterate through the data (with loops). +In some cases, you might need to perform the same operation on each element of an array or each data item (for example sending a message to every contact in your address book). In technical terms, you need to iterate through the data (with loops). +n8n generally handles this repetitive processing automatically, as the nodes run once for each item, so you don't need to build loops into your workflows. -n8n handles this repetitive processing automatically, as the nodes run once for each item, so you don't need to build loops into your workflows. However, there are some [exceptions of nodes and operations](/flow-logic/looping/#node-exceptions){:target="_blank" .external} for which you need to build a loop into your workflow. +However, there are some [exceptions of nodes and operations](/flow-logic/looping/#node-exceptions){:target="_blank"} that will require you to build a loop into your workflow. -To [create a loop in an n8n workflow](/flow-logic/looping/#using-loops-in-n8n){:target="_blank" .external}, you need to connect the output of one node to the input of a previous node, and add an IF node to check when to stop the loop. +To [create a loop in an n8n workflow](/flow-logic/looping/#using-loops-in-n8n){:target="_blank"}, you need to connect the output of one node to the input of a previous node, and add an **If node** to check when to stop the loop. ## Splitting data in batches -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. +If you need to process large volumes of 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. + +For these processes, use the [**Loop Over Items node**](/integrations/builtin/core-nodes/n8n-nodes-base.splitinbatches/){:target="_blank"}. 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's not necessary to add an IF node to stop the loop. +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's not necessary to add an **If node** to stop the loop. /// -### Exercise +### Loop/Batch Exercise Build a workflow that reads the RSS feed from Medium and dev.to. The workflow should consist of three nodes: -- A Code node that returns the URLs of the RSS feeds of Medium (`https://medium.com/feed/n8n-io`) and dev.to (`https://dev.to/feed/n8n`) -- A Loop Over Items node with `Batch Size: 1`, that takes in the inputs from the Code node and RSS node and iterates over the items. -- An RSS Read node that gets the URL of the Medium RSS feed, passed as an expression: `{{$node["SplitInBatches"].json["url"]}}`. The RSS Read node is one of the exception nodes which processes only the first item it receives, so the Loop Over Items node is necessary for iterating over multiple items. +1. A **Code node** that returns the URLs of the RSS feeds of Medium (`https://medium.com/feed/n8n-io`) and dev.to (`https://dev.to/feed/n8n`). +2. A **Loop Over Items node** with `Batch Size: 1`, that takes in the inputs from the **Code node** and **RSS Read node** and iterates over the items. +3. An **RSS Read node** that gets the URL of the Medium RSS feed, passed as an expression: `{{ $json.url }}`. + - The **RSS Read node** is one of the [exception nodes](/flow-logic/looping/#node-exceptions){:target="_blank"} which processes only the first item it receives, so the **Loop Over Items node** is necessary for iterating over multiple items. ??? note "Show me the solution" + 1. Add a **Code Node**. You can format the code in several ways, one way is: + - Set **Mode** to `Run Once for All Items`. + - Set **Language** to `JavaScript`. + - Copy the code below and paste it into the JavaScript Code editor: + ```javascript + let urls = [ + { + json: { + url: 'https://medium.com/feed/n8n-io' + } + }, + { + json: { + url: 'https://dev.to/feed/n8n' + } + } + ] + return urls; + ``` + 2. Add a **Loop Over Items node** connected to the **Code node**. + - Set **Batch Size** to `1`. + 3. The **Loop Over Items node** automatically adds a node called "Replace Me". Replace that node with an **RSS Read node**. + - Set the **URL** to use the url from the Code Node: `{{ $json.url }}`. + The workflow for this exercise looks like this: -
Workflow for getting RSS feeds from two blogs
+
Workflow for getting RSS feeds from two blogs
Workflow for getting RSS feeds from two blogs
- To check the configuration of the nodes, you can copy-paste the JSON code of the workflow: + To check the configuration of the nodes, you can copy the JSON workflow code below and paste it into your Editor UI: ```json { diff --git a/docs/courses/level-two/chapter-4.md b/docs/courses/level-two/chapter-4.md index c54aec97d..92132d52c 100644 --- a/docs/courses/level-two/chapter-4.md +++ b/docs/courses/level-two/chapter-4.md @@ -4,44 +4,55 @@ contentType: tutorial # Dealing with errors in workflows -Sometimes it can happen that you're building a nice workflow, but when you try to execute it, it fails. There are many reasons why workflows executions may fail (some more or less mysterious), for example when a node isn't configured correctly or a third-party service that you're trying to connect to isn't working properly. +Sometimes you build a nice workflow, but it fails when you try to execute it. Workflow executions may fail for a variety of reasons, ranging from straightforward problems with incorrectly configuring a node or a failure in a third-party service to more mysterious errors. -But don't panic. We will show you some ways in which you can troubleshoot the issue, so you can get your workflow up and running as soon as possible. +But don't panic. In this lesson, you'll learn how you can troubleshoot errors so you can get your workflow up and running as soon as possible. ## Checking failed workflows -When one of your workflows fails, it's helpful to check the execution log by clicking on [**Executions**](/editor-ui/#executions){:target="_blank" .external} in the left-side panel. The executions log shows you a list of the latest execution time, status, mode, and running time of your saved workflows. +n8n tracks executions of your workflows. -To investigate a specific failed execution from the list, click on the name or 'view' button on the row of the respective execution. +When one of your workflows fails, you can check the Executions log to see what went wrong. The Executions log shows you a list of the latest execution time, status, mode, and running time of your saved workflows. -
Workflow Executions window
+Open the Executions log by selecting [**Executions**](/editor-ui/#executions) in the left-side panel. + +To investigate a specific failed execution from the list, select the name or the **View** button that appears when you hover over the row of the respective execution. + +
Executions log
Executions log
This will open the workflow in read-only mode, where you can see the execution of each node. This representation can help you identify at what point the workflow ran into issues. -To toggle between viewing the execution and the editor, click the **Editor | Executions** button at the top of the page. +To toggle between viewing the execution and the editor, select the **Editor | Executions** button at the top of the page. -
Workflow execution view
+
Workflow execution view
Workflow execution view
## Catching erroring workflows -To catch failed workflows, create a separate [Error Workflow](/flow-logic/error-handling/error-workflows/) with the [Error Trigger node](/integrations/builtin/core-nodes/n8n-nodes-base.errortrigger/), which gets executed if the main execution fails. +To catch failed workflows, create a separate [**Error Workflow**](/flow-logic/error-handling/error-workflows/) with the [**Error Trigger node**](/integrations/builtin/core-nodes/n8n-nodes-base.errortrigger/). This workflow will only execute if the main workflow execution fails. -Then, you can take further actions by connecting other nodes, for example sending notifications using email or Slack about the failed workflow and its errors. To receive error messages for a failed workflow, you need to select the option `Error Workflow` in the [Workflow Settings](/courses/level-one/chapter-5/chapter-5.8/) of the respective workflow. +Use additional nodes in your **Error Workflow** that make sense, like sending notifications about the failed workflow and its errors using email or Slack. -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. +To receive error messages for a failed workflow, set the **Error Workflow** in the [Workflow Settings](/workflows/settings/) to an Error Workflow that uses an **Error Trigger node**. + +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 this as another workflow's designated 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. +- If a workflow uses the Error trigger node, you don't have to activate the workflow. +- If a workflow contains the Error trigger node, by default, the workflow uses itself as the error workflow. +- You can't test error workflows when running workflows manually. The Error trigger only runs when an automatic workflow errors. - You can set the same Error Workflow for multiple workflows. /// ### Exercise -In the previous chapters, you've built several small workflows. Now, pick one of them that you want to monitor. Create an Error Workflow that sends a message to a communication platform (for example, Slack, Discord, Telegram, or even email) if that workflow fails. Don't forget to set this Error Workflow in the settings of the monitored workflow. +In the previous chapters, you've built several small workflows. Now, pick one of them that you want to monitor and create an Error Workflow for it: + +1. Create a new Error Workflow. +2. Add the **Error trigger node**. +3. Connect a node for the communication platform of your choice to the Error trigger node, like [Slack](/integrations/builtin/app-nodes/n8n-nodes-base.slack/), [Discord](/integrations/builtin/app-nodes/n8n-nodes-base.discord/), [Telegram](/integrations/builtin/app-nodes/n8n-nodes-base.telegram/), or even [Gmail](/integrations/builtin/app-nodes/n8n-nodes-base.gmail/) or a more generic [Send Email](/integrations/builtin/core-nodes/n8n-nodes-base.sendemail/). +4. In the workflow you want to monitor, open the [Workflow Settings](/workflows/settings/) and select the new Error Workflow you just created. Note that this workflow needs to run automatically to trigger the error workflow. ??? note "Show me the solution" @@ -49,7 +60,7 @@ In the previous chapters, you've built several small workflows. Now, pick one of
Error workflow
- To check the configuration of the nodes, you can copy-paste the JSON code of the workflow: + To check the configuration of the nodes, you can copy the JSON workflow code below and paste it into your Editor UI: ```json { @@ -106,17 +117,25 @@ In the previous chapters, you've built several small workflows. Now, pick one of ## Throwing exceptions in workflows -Another way of troubleshooting workflows is to include a [Stop and Error node](/integrations/builtin/core-nodes/n8n-nodes-base.stopanderror/){:target="_blank" .external} in your workflow. This node throws an error, which can be set to one of two error types: an error message or an error object. The error message returns a custom message about the error, while the error object returns the type of error. +Another way of troubleshooting workflows is to include a [**Stop and Error node**](/integrations/builtin/core-nodes/n8n-nodes-base.stopanderror/) in your workflow. This node throws an error. You can specify the error type: -The Stop and Error node can only be added as the last node in a workflow. +- **Error Message**: returns a custom message about the error +- **Error Object**: returns the type of error + +You can only use the **Stop and Error node** as the last node in a workflow. /// 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 +- 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's better to throw an error at the time you know there might be a problem. -
Stop and Error node with error message
+
Stop and Error node with error message
Stop and Error node with error message
/// diff --git a/docs/courses/level-two/chapter-5/chapter-5.0.md b/docs/courses/level-two/chapter-5/chapter-5.0.md index 4339b8cb0..790884d0f 100644 --- a/docs/courses/level-two/chapter-5/chapter-5.0.md +++ b/docs/courses/level-two/chapter-5/chapter-5.0.md @@ -4,12 +4,12 @@ contentType: tutorial # Automating a business workflow -Remember [our friend Nathan](/courses/level-one/chapter-3){:target="_blank" .external}? +Remember [our friend Nathan](/courses/level-one/chapter-3)? -**Nathan 🙋:** Hello, it's me again. My manager was so impressed with my first workflow automation solution, that she entrusted me with more responsibility.
+**Nathan 🙋:** Hello, it's me again. My manager was so impressed with my first workflow automation solution that she entrusted me with more responsibility.
**You 👩‍🔧:** More work and responsibility. Congratulations, I guess. What do you need to do now?
-**Nathan 🙋:** I got access to all sales data and am responsible for creating two reports: one for regional sales and one for orders prices. They're based on data from different sources and come in different formats.
-**You 👩‍🔧:** Sounds like a lot of manual work–but the kind that can be automated. Let's do it! +**Nathan 🙋:** I got access to all our sales data and I'm now responsible for creating two reports: one for regional sales and one for orders prices. They're based on data from different sources and come in different formats.
+**You 👩‍🔧:** Sounds like a lot of manual work, but the kind that can be automated. Let's do it! ## Workflow design @@ -21,7 +21,7 @@ Now that we know what Nathan wants to automate, let's list the steps he needs to 3. Write binary files. 4. Send notifications using email and Discord. -n8n provides core nodes for all these steps. This use case is somewhat complex and it will be made up of three separate workflows: +n8n provides [core nodes](/integrations/builtin/node-types/#core-nodes) for all these steps. This use case is somewhat complex. We should build it from three separate workflows: 1. A workflow that merges the company data with external information. 2. A workflow that generates the reports. @@ -31,8 +31,8 @@ n8n provides core nodes for all these steps. This use case is somewhat complex a To build the workflows, you will need the following: -* An [Airtable](https://airtable.com/){:target="_blank" .external} account and [credentials](/integrations/builtin/credentials/airtable/){:target="_blank" .external}. -* A [Google](https://www.google.com/account/about/){:target="_blank" .external} account and [credentials](/integrations/builtin/credentials/google/){:target="_blank" .external} to access Gmail. +* An [Airtable](https://airtable.com/){:target="_blank" .external-link} account and [credentials](/integrations/builtin/credentials/airtable/). +* A [Google](https://www.google.com/account/about/){:target="_blank" .external-link} account and [credentials](/integrations/builtin/credentials/google/) to access Gmail. * A [Discord](https://discord.com/){:target="_blank" .external-link} account and webhook URL (you receive this using email when you sign up for this course). Next, you will build these three workflows with step-by-step instructions. diff --git a/docs/courses/level-two/chapter-5/chapter-5.1.md b/docs/courses/level-two/chapter-5/chapter-5.1.md index 012ce4044..f95ca9abf 100644 --- a/docs/courses/level-two/chapter-5/chapter-5.1.md +++ b/docs/courses/level-two/chapter-5/chapter-5.1.md @@ -4,27 +4,27 @@ contentType: tutorial # Workflow 1: Merging data -The company's customer data is stored in Airtable. It contains information about the customers' ID, country, email, and join date, but lacks data about their respective region and subregion. You need to fill in these last two fields in order to create the reports for regional sales. +Nathan's company stores its customer data in Airtable. This data contains information about the customers' ID, country, email, and join date, but lacks data about their respective region and subregion. You need to fill in these last two fields in order to create the reports for regional sales. To accomplish this task, you first need to make a copy of this table in your Airtable account: -Next, you have to build a small workflow that merges data from Airtable and a REST API. +Next, build a small workflow that merges data from Airtable and a REST Countries API: -1. Use the [Airtable node](/integrations/builtin/app-nodes/n8n-nodes-base.airtable/){:target="_blank" .external} to list the data in the Airtable table named `customers`. -2. use the [HTTP Request node](/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/){:target="_blank" .external} to get data from the REST Countries API: `https://restcountries.com/v3.1/all`. This will return data about world countries, split out into separate items. -3. Use the [Merge node](/integrations/builtin/core-nodes/n8n-nodes-base.merge/){:target="_blank" .external} to merge data from Airtable and the Countries API by country name (the common key), represented as `customerCountry` in Airtable and `name.common` in the Countries API, respectively. -4. Use the Airtable node to update the fields `region` and `subregion` in Airtable with the data from the Countries API. +1. Use the [**Airtable node**](/integrations/builtin/app-nodes/n8n-nodes-base.airtable/) to list the data in the Airtable table named `customers`. +2. Use the [**HTTP Request node**](/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/) to get data from the REST Countries API: `https://restcountries.com/v3.1/all`. This will return data about world countries, split out into separate items. +3. Use the [**Merge node**](/integrations/builtin/core-nodes/n8n-nodes-base.merge/) to merge data from Airtable and the Countries API by country name, represented as `customerCountry` in Airtable and `name.common` in the Countries API, respectively. +4. Use another Airtable node to update the fields `region` and `subregion` in Airtable with the data from the Countries API. The workflow should look like this: -
Workflow 1 for merging data from Airtable and the Countries API
+
Workflow 1 for merging data from Airtable and the Countries API
Workflow 1 for merging data from Airtable and the Countries API
/// question | Quiz questions -* How many items does the HTTP Request node return? -* How many items does the Merge node return? +* 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's the subregion assigned to the customerID 10? /// diff --git a/docs/courses/level-two/chapter-5/chapter-5.2.md b/docs/courses/level-two/chapter-5/chapter-5.2.md index a209a0d42..85d50e168 100644 --- a/docs/courses/level-two/chapter-5/chapter-5.2.md +++ b/docs/courses/level-two/chapter-5/chapter-5.2.md @@ -6,7 +6,7 @@ contentType: tutorial In this workflow, you will merge data from different sources, transform binary data, generate files, and send notifications about them. The final workflow should look like this: -
Workflow 2 for aggregating data and generating files
+
Workflow 2 for aggregating data and generating files
Workflow 2 for aggregating data and generating files
To make things easier, let's split the workflow into three parts. @@ -14,21 +14,23 @@ To make things easier, let's split the workflow into three parts. The first part of the workflow consists of five nodes: -
Workflow 1 – Getting data from different sources
+
Workflow 1: Getting data from different sources
Workflow 1: Getting data from different sources
-1. Use the [HTTP Request node](/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/){:target="_blank" .external} to get data from the API endpoint that stores company data. Configure the following node parameters: +1. Use the [**HTTP Request node**](/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/) to get data from the API endpoint that stores company data. Configure the following node parameters: - * **Authentication**: Header Auth - * **Credentials for Header Auth**: The Header Auth name and Header Auth value you received in the email when you signed up for this course. - * **URL**: The Dataset URL you received in the email when you signed up for this course. - * **Options** > **Add Option** > **Split Into Items**: toggle to true. - * **Headers** > **Add Header**: - * **Name**: `unique_id` - * **Value**: The unique ID you received in the email when you signed up for this course. + - **Method**: Get + - **URL**: The **Dataset URL** you received in the email when you signed up for this course. + - **Authentication**: Generic Credential Type + - **Generic Auth Type**: Header Auth + - **Credentials for Header Auth**: The Header Auth name and Header Auth value you received in the email when you signed up for this course. + - **Send Headers**: Toggle to true + - **Specify Headers**: Select `Using Fields Below` + - **Name**: `unique_id` + - **Value**: The unique ID you received in the email when you signed up for this course. -2. Use the [Airtable node](/integrations/builtin/app-nodes/n8n-nodes-base.airtable/){:target="_blank" .external} to list data from the `customers` table (where you updated the fields `region` and `subregion`). -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 [Sort](/integrations/builtin/core-nodes/n8n-nodes-base.sort/) node to sort data by `orderPrice` in descending order. +2. Use the [**Airtable node**](/integrations/builtin/app-nodes/n8n-nodes-base.airtable/) to list data from the `customers` table (where you updated the fields `region` and `subregion`). +3. Use the [**Merge node**](/integrations/builtin/core-nodes/n8n-nodes-base.merge/) to merge data from the Airtable and HTTP Request node, based on matching the input fields for `customerID`. +4. Use the [**Sort node**](/integrations/builtin/core-nodes/n8n-nodes-base.sort/) to sort data by `orderPrice` in descending order. /// question | Quiz questions * What's the name of the employee assigned to customer 1? @@ -38,46 +40,47 @@ The first part of the workflow consists of five nodes: ## Part 2: Generating file for regional sales -The second part of the workflow consists of five nodes: +The second part of the workflow consists of four nodes: -
Workflow 2 – Generating file for regional sales
+
Workflow 2: Generating file for regional sales
Workflow 2: Generating file for regional sales
-1. Use the [IF node](/integrations/builtin/core-nodes/n8n-nodes-base.if/){:target="_blank" .external} to filter order from the region Americas. -2. Use the [Convert to File](/integrations/builtin/core-nodes/n8n-nodes-base.converttofile/){:target="_blank" .external} to transform the incoming data from JSON to binary format. Convert each item to a file. -3. Use the [Gmail node](/integrations/builtin/app-nodes/n8n-nodes-base.gmail/){:target="_blank" .external} (or another email node) to send the files using email to an address you have access to. Note that you need to add an attachment with the data property. -4. Use the [Discord node](/integrations/builtin/app-nodes/n8n-nodes-base.discord/){:target="_blank" .external} to send a message in the n8n Discord channel `#course-level-two`. In the node, configure the following parameters: - * Webhook URL: The webhook URL you received in the email when you signed up for this course. - * Text: "I sent the file using email with the label ID `{label ID}`. My ID: " followed by your ID.
Note that you need to replace the text in curly braces `{}` with expressions that reference the data from the nodes. +1. Use the [**If node**](/integrations/builtin/core-nodes/n8n-nodes-base.if/) to filter to only display orders from the region `Americas`. +2. Use the [**Convert to File**](/integrations/builtin/core-nodes/n8n-nodes-base.converttofile/) to transform the incoming data from JSON to binary format. Convert each item to a separate file. (Bonus points if you can figure out how to name each report based on the orderID!) +3. Use the [**Gmail node**](/integrations/builtin/app-nodes/n8n-nodes-base.gmail/) (or another email node) to send the files using email to an address you have access to. Note that you need to add an attachment with the data property. +4. Use the [**Discord node**](/integrations/builtin/app-nodes/n8n-nodes-base.discord/) to send a message in the n8n Discord channel `#course-level-two`. In the node, configure the following parameters: + * **Webhook URL**: The Discord URL you received in the email when you signed up for this course. + * **Text**: "I sent the file using email with the label ID `{label ID}`. My ID: " followed by the unique ID emailed to you when you registered for this course.
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's the total price of the orders in the region Americas? -* How many items are returned by the *Write Binary File node*? +* How many orders are assigned to the `Americas` region? +* What's the total price of the orders in the `Americas` region? +* How many items does the **Write Binary File node** return? /// ## Part 3: Generating files for total sales -The third part of the workflow consists of seven nodes: +The third part of the workflow consists of five nodes: -
Workflow 3 – Generating files for total sales
+
Workflow 3: Generating files for total sales
Workflow 3: Generating files for total sales
-1. Use the [Loop Over Items node](/integrations/builtin/core-nodes/n8n-nodes-base.splitinbatches/){:target="_blank" .external} to split data from the Item Lists node into batches of 5. -2. Use the [Set node](/integrations/builtin/core-nodes/n8n-nodes-base.set/){:target="_blank" .external} to set four values, referenced with expressions from the previous node: `customerEmail`, `customerRegion`, `customerSince`, and `orderPrice`. -3. Use the [Date & Time node](/integrations/builtin/core-nodes/n8n-nodes-base.datetime/){:target="_blank" .external} to change the date format of the field `customerSince` to the format MM/DD/YYYY. Set the 'Include Input Fields' option to keep all the data together. -4. Use the [Convert to File node](/integrations/builtin/core-nodes/n8n-nodes-base.converttofile/){:target="_blank" .external} to create a CSV spreadsheet with the file name set as the expression: `{{$runIndex > 0 ? 'file_low_orders':'file_high_orders'}}`. -5. Use the [Discord node](/integrations/builtin/app-nodes/n8n-nodes-base.discord/){:target="_blank" .external} to send a message in the n8n Discord channel `#course-level-two`. In the node, configure the following parameters: - * 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.
The `{file name}` should be an expression that references data from the Spreadsheet File node.
+1. Use the [**Loop Over Items node**](/integrations/builtin/core-nodes/n8n-nodes-base.splitinbatches/) to split data from the Item Lists node into batches of 5. +2. Use the [**Set node**](/integrations/builtin/core-nodes/n8n-nodes-base.set/) to set four values, referenced with expressions from the previous node: `customerEmail`, `customerRegion`, `customerSince`, and `orderPrice`. +3. Use the [**Date & Time node**](/integrations/builtin/core-nodes/n8n-nodes-base.datetime/) to change the date format of the field `customerSince` to the format MM/DD/YYYY. + - Set the **Include Input Fields** option to keep all the data together. +4. Use the [**Convert to File node**](/integrations/builtin/core-nodes/n8n-nodes-base.converttofile/) to create a CSV spreadsheet with the file name set as the expression: `{{$runIndex > 0 ? 'file_low_orders':'file_high_orders'}}`. +5. Use the [**Discord node**](/integrations/builtin/app-nodes/n8n-nodes-base.discord/) to send a message in the n8n Discord channel `#course-level-two`. In the node, configure the following parameters: + * **Webhook URL**: The Discord URL you received in the email when you signed up for this course. + * **Text**: "I created the spreadsheet `{file name}`. My ID:" followed by the unique ID emailed to you when you registered for this course.
Note that you need to replace `{file name}` with an expression that references data from the previous **Convert to File node**.
/// question | Quiz questions * What's the lowest order price in the first batch of items? * What's the formatted date of customer 7? -* How many items are returned by the *Convert to File node*? +* How many items does the **Convert to File node** return? /// ??? note "Show me the solution" - To check the configuration of the nodes, you can copy-paste the JSON code of the workflow: + To check the configuration of the nodes, you can copy the JSON workflow code below and paste it into your Editor UI: ```json { diff --git a/docs/courses/level-two/chapter-5/chapter-5.3.md b/docs/courses/level-two/chapter-5/chapter-5.3.md index 3c7d9c8fe..b107a4036 100644 --- a/docs/courses/level-two/chapter-5/chapter-5.3.md +++ b/docs/courses/level-two/chapter-5/chapter-5.3.md @@ -4,26 +4,29 @@ contentType: tutorial # Workflow 3: Monitoring workflow errors -To accomplish this task, you have to create an Error workflow that monitors the main workflow. +Last but not least, let's help Nathan know if there are any errors running the workflow. -1. Add an Error Trigger node (and execute it as a test). -2. To the Error Trigger node, connect a Discord node and configure the fields:
+To accomplish this task, create an Error workflow that monitors the main workflow: - * Webhook URL: The URL that you received in the email from n8n when you signed up for this course. - * Text: The workflow `{workflow name}` failed, with the error message: `{execution error message}`. Last node executed: `{name of the last executed node}`. Check this workflow execution here: `{execution URL}` My Unique ID: `{your ID from the course signup email}` +1. Create a new workflow. +2. Add an **Error Trigger node** (and execute it as a test). +3. Connect a **Discord node** to the **Error Trigger node** and configure these fields:
+ + * **Webhook URL**: The Discord URL that you received in the email from n8n when you signed up for this course. + * **Text**: "The workflow `{workflow name}` failed, with the error message: `{execution error message}`. Last node executed: `{name of the last executed node}`. Check this workflow execution here: `{execution URL}` My Unique ID: " followed by the unique ID emailed to you when you registered for this course. Note that you need to replace the text in curly brackets `{}` with expressions that take the respective information from the Error Trigger node.
-3. Execute the Discord node. -4. Set the newly created workflow as Error Workflow for the main workflow. +4. Execute the Discord node. +5. Set the newly created workflow as the **Error Workflow** for the main workflow you created in the previous lesson. The workflow should look like this: -
Workflow 3 for monitoring workflow errors
+
Workflow 3 for monitoring workflow errors
Workflow 3 for monitoring workflow errors
/// 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 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's the expression to reference the workflow name? /// diff --git a/docs/courses/level-two/chapter-6.md b/docs/courses/level-two/chapter-6.md index 8289a6e0c..ab99efad1 100644 --- a/docs/courses/level-two/chapter-6.md +++ b/docs/courses/level-two/chapter-6.md @@ -21,4 +21,4 @@ You can test your knowledge by taking a **quiz**, which consists of questions ab ## What's next? - Create new workflows for your work or personal use and share them with us. Don't have any ideas? Find inspiration on the [workflows page](https://n8n.io/workflows){:target="_blank" .external-link} and on our [blog](https://n8n.io/blog/){:target="_blank" .external-link}. -- Dive deeper into n8n's features by reading the [docs](/){:target="_blank" .external}. +- Dive deeper into n8n's features by reading the [docs](/). diff --git a/docs/courses/level-two/index.md b/docs/courses/level-two/index.md index 98ced7a90..51972d499 100644 --- a/docs/courses/level-two/index.md +++ b/docs/courses/level-two/index.md @@ -24,20 +24,20 @@ The focus in this course is on working with data. You will learn how to: - Use functions and JavaScript code in the [Code node](/integrations/builtin/core-nodes/n8n-nodes-base.code). - Deal with error workflows and workflow errors. -You will learn all this by completing short practical exercises after the theoretical explanations, and building a business workflow following instructions. +You will learn all this by completing short practical exercises after the theoretical explanations and building a business workflow following instructions. ## What do I need to get started? To follow along this course (at a comfortable pace) you will need the following: - **n8n set up**: You can use the [self-hosted version](/hosting/installation/npm/) or [n8n Cloud](/manage-cloud/overview/). -- **A user ID**: [Sign up here](https://n8n-community.typeform.com/to/HQoQ7nXg) to get your unique ID and other credentials you will need in the course. -- **Basic n8n skills**. We strongly recommend taking the [Level 1 course](/courses/level-one/) prior to this one. -- **Basic JavaScript understanding**. +- **A user ID**: [Sign up here](https://n8n-community.typeform.com/to/HQoQ7nXg){:target="_blank" .external-link} to get your unique ID and other credentials you will need in the course. +- **Basic n8n skills**: We strongly recommend taking the [Level 1 course](/courses/level-one/) before this one. +- **Basic JavaScript understanding** ## How long does the course take? -Completing the course should take around **two hours**. You don't have to complete it in one go, feel free to take breaks and resume whenever you are ready. +Completing the course should take around **two hours**. You don't have to complete it in one go; feel free to take breaks and resume whenever you are ready. ## How do I complete the course? @@ -46,6 +46,6 @@ There are two milestones in this course that test your knowledge of what you hav - [x] Building the [main workflow](/courses/level-two/chapter-5/chapter-5.0/) - [x] Passing the [quiz](https://n8n-community.typeform.com/to/r9hDbytg){:target="_blank" .external} at the end of the course -You can always **check your progress** throughout the course by entering your unique ID [here](https://internal.users.n8n.cloud/webhook/course-level-2/verify). +You can always **check your progress** throughout the course by entering your unique ID [here](https://internal.users.n8n.cloud/webhook/course-level-2/verify){:target="_blank" .external-link}. If you successfully complete the milestones above, you will get [**a badge and an avatar**](https://community.n8n.io/badges/105/completed-n8n-course-level-2){:target="_blank" .external} in your forum profile. You can then share your profile and course verification ID to showcase your n8n skills to others. diff --git a/docs/help-community/contributing.md b/docs/help-community/contributing.md index a054ae9cc..06f9b45fb 100644 --- a/docs/help-community/contributing.md +++ b/docs/help-community/contributing.md @@ -55,8 +55,6 @@ The repository for the docs is [here](https://github.com/n8n-io/n8n-docs){:targe You can write an article for the [n8n blog](https://n8n.io/blog/){:target=_blank class=.external-link}. Your article can be, for example, a [workflow tutorial](https://n8n.io/blog/tag/tutorial/){:target=_blank class=.external-link}, an opinion piece on automation, or some domain-specific [automation ideas](https://n8n.io/blog/tag/ideas/){:target=_blank class=.external-link}. -[This board](https://github.com/orgs/n8n-io/projects/3){:target=_blank .external-link} lists the most in-demand topics. - ### Process to submit a post n8n appreciates all contributions. Publishing a tutorial on your own site that supports the community is a great contribution. However, if you want n8n to highlight your post on our blog, you need to go through this process. diff --git a/docs/hosting/configuration/environment-variables/deployment.md b/docs/hosting/configuration/environment-variables/deployment.md index 94b803e29..9cee1574d 100644 --- a/docs/hosting/configuration/environment-variables/deployment.md +++ b/docs/hosting/configuration/environment-variables/deployment.md @@ -19,8 +19,9 @@ This page lists the deployment configuration options for your self-hosted n8n in | :------- | :---- | :------- | :---------- | | `N8N_EDITOR_BASE_URL` | String | - | Public URL where users can access the editor. Also used for emails sent from n8n. | | `N8N_CONFIG_FILES` | String | - | Use to provide the path to any JSON [configuration file](/hosting/configuration/configuration-methods/). | -| `N8N_DISABLE_UI` | Boolean | `false` | Disable the UI (true) or not (false). | -| `N8N_TEMPLATES_ENABLED` | Boolean | `true` | Enable workflow templates (true) or disable (false). | +| `N8N_DISABLE_UI` | Boolean | `false` | Set to `true` to disable the UI. | +| `N8N_PREVIEW_MODE` | Boolean | `false` | Set to `true` to run in preview mode. | +| `N8N_TEMPLATES_ENABLED` | Boolean | `false` | Enables workflow templates (true) or disable (false). | | `N8N_TEMPLATES_HOST` | String | `https://api.n8n.io` | Change this if creating your own workflow template library. Note that to use your own workflow templates library, your API must provide the same endpoints and response structure as n8n's. Refer to [Workflow templates](/workflows/templates/) for more information. | | `N8N_ENCRYPTION_KEY` | String | Random key generated by n8n | Provide a custom key used to encrypt credentials in the n8n database. By default n8n generates a random key on first launch. | | `N8N_USER_FOLDER` | String | `user-folder` | Provide the path where n8n will create the `.n8n` folder. This directory stores user-specific data, such as database file and encryption key. | @@ -34,15 +35,17 @@ This page lists the deployment configuration options for your self-hosted n8n in | `N8N_PERSONALIZATION_ENABLED` | Boolean | `true` | Whether to ask users personalisation questions and then customise n8n accordingly. | | `N8N_VERSION_NOTIFICATIONS_ENABLED` | Boolean | `true` | When enabled, n8n sends notifications of new versions and security updates. | | `N8N_VERSION_NOTIFICATIONS_ENDPOINT` | String | `https://api.n8n.io/versions/` | The endpoint to retrieve where version information. | -| `N8N_VERSION_NOTIFICATIONS_INFO_URL` | String | `https://docs.n8n.io/getting-started/installation/updating.html` | The URL displayed in the New Versions panel for additional information. | +| `N8N_VERSION_NOTIFICATIONS_INFO_URL` | String | `https://docs.n8n.io/getting-started/installation/updating.html` | The URL displayed in the New Versions panel for more information. | | `N8N_DIAGNOSTICS_ENABLED` | Boolean | `true` | Whether to share selected, anonymous [telemetry](/privacy-security/privacy/) with n8n. Note that if you set this to `false`, you can't enable Ask AI in the Code node. | | `N8N_DIAGNOSTICS_CONFIG_FRONTEND` | String | `1zPn9bgWPzlQc0p8Gj1uiK6DOTn;https://telemetry.n8n.io` | Telemetry configuration for the frontend. | | `N8N_DIAGNOSTICS_CONFIG_BACKEND` | String | `1zPn7YoGC3ZXE9zLeTKLuQCB4F6;https://telemetry.n8n.io/v1/batch` | Telemetry configuration for the backend. | | `N8N_PUSH_BACKEND` | String | `websocket` | Choose whether the n8n backend uses server-sent events (`sse`) or WebSockets (`websocket`) to send changes to the UI. | -| `VUE_APP_URL_BASE_API` | String | `http://localhost:5678/` | Used when building the `n8n-editor-ui` package manually to set how the frontend can reach the backend API. Refer to [Configure the Base URL](/hosting/configuration/configuration-examples/base-url/). - | +| `VUE_APP_URL_BASE_API` | String | `http://localhost:5678/` | Used when building the `n8n-editor-ui` package manually to set how the frontend can reach the backend API. Refer to [Configure the Base URL](/hosting/configuration/configuration-examples/base-url/). | | `N8N_HIRING_BANNER_ENABLED` | Boolean | `true` | Whether to show the n8n hiring banner in the console (true) or not (false). | | `N8N_PUBLIC_API_SWAGGERUI_DISABLED` | Boolean | `false` | Whether the Swagger UI (API playground) is disabled (true) or not (false). | | `N8N_PUBLIC_API_DISABLED` | Boolean | `false` | Whether to disable the public API (true) or not (false). | | `N8N_PUBLIC_API_ENDPOINT` | String | `api` | Path for the public API endpoints. | | `N8N_GRACEFUL_SHUTDOWN_TIMEOUT` | Number | `30` | How long should the n8n process wait (in seconds) for components to shut down before exiting the process. | +| `N8N_DEV_RELOAD` | Boolean | `false` | When working on the n8n source code, set this to `true` to automatically reload or restart the application when changes occur in the source code files. | +| `N8N_REINSTALL_MISSING_PACKAGES` | Boolean | `false` | If set to `true`, n8n will automatically attempt to reinstall any missing packages. | +| `N8N_TUNNEL_SUBDOMAIN` | String | - | Specifies the subdomain for the n8n tunnel. If not set, n8n generates a random subdomain.| diff --git a/docs/hosting/configuration/environment-variables/executions.md b/docs/hosting/configuration/environment-variables/executions.md index 0e48afbf2..c4a188bed 100644 --- a/docs/hosting/configuration/environment-variables/executions.md +++ b/docs/hosting/configuration/environment-variables/executions.md @@ -30,3 +30,4 @@ This page lists environment variables to configure workflow execution settings. | `EXECUTIONS_DATA_HARD_DELETE_BUFFER` | Number | `1` | How old (hours) the finished execution data has to be to get hard-deleted. By default, this buffer excludes recent executions as the user may need them while building a workflow. | | `EXECUTIONS_DATA_PRUNE_HARD_DELETE_INTERVAL` | Number | `15` | How often (minutes) execution data should be hard-deleted. | | `EXECUTIONS_DATA_PRUNE_SOFT_DELETE_INTERVAL` | Number | `60` | How often (minutes) execution data should be soft-deleted. | +| `N8N_CONCURRENCY_PRODUCTION_LIMIT` | Number | `-1` | Max production executions allowed to run concurrently, in both regular and scaling modes. `-1` to disable in regular mode. | diff --git a/docs/hosting/configuration/environment-variables/external-hooks.md b/docs/hosting/configuration/environment-variables/external-hooks.md index 5c3e2662b..d68617d16 100644 --- a/docs/hosting/configuration/environment-variables/external-hooks.md +++ b/docs/hosting/configuration/environment-variables/external-hooks.md @@ -17,4 +17,5 @@ You can define external hooks that n8n executes whenever a specific operation ru | Variable | Type | Description | | :------- | :---- | :---------- | -| `EXTERNAL_HOOK_FILES` | String | Files containing external hooks. Provide multiple files as a colon-separated list ("`:`"). | +| `EXTERNAL_HOOK_FILES` | String | Files containing backend external hooks. Provide multiple files as a colon-separated list ("`:`"). | +| `EXTERNAL_FRONTEND_HOOKS_URLS` | String | URLs to files containing frontend external hooks. Provide multiple URLs as a colon-separated list ("`:`"). | \ No newline at end of file diff --git a/docs/hosting/configuration/environment-variables/logs.md b/docs/hosting/configuration/environment-variables/logs.md index fa4025bf1..942568ce2 100644 --- a/docs/hosting/configuration/environment-variables/logs.md +++ b/docs/hosting/configuration/environment-variables/logs.md @@ -28,6 +28,7 @@ This page lists environment variables to set up logging for debugging. Refer to | `DB_LOGGING_ENABLED` | Boolean | `false` | Whether to enable database-specific logging. | | `DB_LOGGING_OPTIONS` | Enum string: `query`, `error`, `schema`, `warn`, `info`, `log` | `error` | Database log output level. To enable all logging, specify `all`. Refer to [TypeORM logging options](https://orkhan.gitbook.io/typeorm/docs/logging#logging-options){:target=_blank .external-link} | | `DB_LOGGING_MAX_EXECUTION_TIME` | Number | `1000` | Maximum execution time (in milliseconds) before n8n logs a warning. Set to `0` to disable long running query warning. | +| `CODE_ENABLE_STDOUT` | Boolean | `false` | Set to`true` to send Code node logs to process's stdout for debugging, monitoring, or logging purposes. | ## Log streaming diff --git a/docs/hosting/configuration/environment-variables/security.md b/docs/hosting/configuration/environment-variables/security.md index 4d7f9e855..5c79dc57a 100644 --- a/docs/hosting/configuration/environment-variables/security.md +++ b/docs/hosting/configuration/environment-variables/security.md @@ -16,3 +16,7 @@ hide: | Variable | Type | Default | Description | | :------- | :---- | :------- | :---------- | | `N8N_BLOCK_ENV_ACCESS_IN_NODE` | Boolean | `false` | Whether to allow users to access environment variables in expressions and the Code node (false) or not (true). | +| `N8N_RESTRICT_FILE_ACCESS_TO` | String | | Limits access to files in these directories. Provide multiple files as a colon-separated list ("`:`"). | +| `N8N_BLOCK_FILE_ACCESS_TO_N8N_FILES` | Boolean | `true` | Set to `true` to block access to all files in the `.n8n` directory and user defined configuration files. | +| `N8N_SECURITY_AUDIT_DAYS_ABANDONED_WORKFLOW` | Number | 90 | Number of days to consider a workflow abandoned if it's not executed. | +| `N8N_SECURE_COOKIE` | Boolean | `true` | Ensures that cookies are only sent over HTTPS, enhancing security.| \ No newline at end of file diff --git a/docs/hosting/scaling/concurrency-control.md b/docs/hosting/scaling/concurrency-control.md new file mode 100644 index 000000000..9e993f990 --- /dev/null +++ b/docs/hosting/scaling/concurrency-control.md @@ -0,0 +1,31 @@ +--- +contentType: explanation +--- + +# Concurrency control + +In regular mode, n8n doesn't limit how many production executions may run at the same time. This can lead to a scenario where too many concurrent executions thrash the event loop, causing performance degradation and unresponsiveness. + +To prevent this, you can set a concurrency limit for production executions in regular mode. Use this to control how many production executions run concurrently, and queue up any concurrent production executions over the limit. These executions remain in the queue until concurrency capacity frees up, and are then processed in FIFO order. + +Concurrency control is disabled by default. To enable it: + +```sh +export N8N_CONCURRENCY_PRODUCTION_LIMIT=20 +``` + +Keep in mind: + +- Concurrency control applies only to production executions: those started from a webhook or trigger node. It doesn't apply to any other kinds, such as manual executions, sub-workflow executions, error executions, or started from CLI. +- You can't retry queued executions. Cancelling or deleting a queued execution also removes it from the queue. +- On instance startup, n8n resumes queued executions up to the concurrency limit and re-enqueues the rest. + +- To monitor concurrency control, watch logs for executions being added to the queue and released. In a future version, n8n will show concurrency control in the UI. + + +## Comparison to scaling mode + +In scaling mode, you can control how many jobs a worker may run concurrently using the [`--concurrency` flag](/hosting/scaling/queue-mode/#configure-worker-concurrency). + +Concurrency control in scaling mode is a separate mechanism from concurrency control in regular mode, but the environment variable `N8N_CONCURRENCY_PRODUCTION_LIMIT` controls both of them. In scaling mode, n8n takes the limit from this variable if set to a value other than `-1`, falling back to the `--concurrency` flag or its default. + diff --git a/docs/integrations/builtin/app-nodes/n8n-nodes-base.autopilot.md b/docs/integrations/builtin/app-nodes/n8n-nodes-base.autopilot.md index 2649f235f..4a10f81f2 100644 --- a/docs/integrations/builtin/app-nodes/n8n-nodes-base.autopilot.md +++ b/docs/integrations/builtin/app-nodes/n8n-nodes-base.autopilot.md @@ -10,6 +10,9 @@ Use the Autopilot node to automate work in Autopilot, and integrate Autopilot wi On this page, you'll find a list of operations the Autopilot node supports and links to more resources. +/// warning | Autopilot branding change +Autopilot has become Ortto. The Autopilot credentials and nodes are only compatible with Autopilot, not the new Ortto API. +/// /// note | Credentials Refer to [Autopilot credentials](/integrations/builtin/credentials/autopilot/) for guidance on setting up authentication. /// @@ -28,12 +31,12 @@ For usage examples and templates to help you get started, take a look at n8n's [ * Contact Journey * Add contact to list * Contact List - * Add contact to list. - * Check if contact is on list. - * Get all contacts on list. - * Remove a contact from a list. + * Add contact to list + * Check if contact is on list + * Get all contacts on list + * Remove a contact from a list * List - * Create a list. + * Create a list * Get all lists diff --git a/docs/integrations/builtin/app-nodes/n8n-nodes-base.s3.md b/docs/integrations/builtin/app-nodes/n8n-nodes-base.s3.md index 62b04b101..e16c0627d 100644 --- a/docs/integrations/builtin/app-nodes/n8n-nodes-base.s3.md +++ b/docs/integrations/builtin/app-nodes/n8n-nodes-base.s3.md @@ -6,7 +6,13 @@ contentType: integration # S3 -Use the S3 node to automate work in S3, and integrate S3 with other applications. n8n has built-in support for a wide range of S3 features, including creating, deleting, and getting buckets, files, and folders. +Use the S3 node to automate work in non-AWS S3 storage and integrate S3 with other applications. n8n has built-in support for a wide range of S3 features, including creating, deleting, and getting buckets, files, and folders. For AWS S3, use [AWS S3](/integrations/builtin/app-nodes/n8n-nodes-base.awss3/). + +Use the S3 node for non-AWS S3 solutions like: + +* [MinIO](https://min.io/){:target="_blank" .external-link} +* [Wasabi](https://wasabi.com/){:target="_blank" .external-link} +* [Digital Ocean spaces](https://www.digitalocean.com/products/spaces){:target="_blank" .external-link} On this page, you'll find a list of operations the S3 node supports and links to more resources. @@ -30,19 +36,21 @@ For usage examples and templates to help you get started, take a look at n8n's [ * Download a file * Get all files * Upload a file + + /// note | Attach file for upload + To attach a file for upload, use another node to pass the file as a data property. Nodes like the [Read/Write Files from Disk](/integrations/builtin/core-nodes/n8n-nodes-base.filesreadwrite/) node or the [HTTP Request](/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/) work well. + /// + * Folder * Create a folder * Delete a folder * Get all folders -**Note:** To attach a file for upload, you will need to use an additional node such as the [Read/Write Files from Disk](/integrations/builtin/core-nodes/n8n-nodes-base.filesreadwrite/) node or the [HTTP Request](/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/) node to pass the file as a data property. - - ## Node reference ### Setting file permissions in Wasabi -When uploading files to [Wasabi](https://wasabi.com/), permissions for the files must be set using the **ACL** dropdown and not the toggles. +When uploading files to [Wasabi](https://wasabi.com/){:target="_blank" .external-link}, you must set permissions for the files using the **ACL** dropdown and not the toggles. ![File permissions when using the S3 node with Wasabi](/_images/integrations/builtin/app-nodes/s3/acl_dropdown.png) diff --git a/docs/integrations/builtin/app-nodes/n8n-nodes-base.twitter.md b/docs/integrations/builtin/app-nodes/n8n-nodes-base.twitter.md index f0783515d..6dd378faa 100644 --- a/docs/integrations/builtin/app-nodes/n8n-nodes-base.twitter.md +++ b/docs/integrations/builtin/app-nodes/n8n-nodes-base.twitter.md @@ -1,20 +1,20 @@ --- -title: Twitter -description: Documentation for the Twitter node in n8n, a workflow automation platform. Includes details of operations and configuration, and links to examples and credentials information. +title: X +description: Documentation for the X node in n8n, a workflow automation platform. Includes details of operations and configuration, and links to examples and credentials information. contentType: integration --- -# Twitter +# X -Use the Twitter node to automate work in Twitter, and integrate Twitter with other applications. n8n has built-in support for a wide range of Twitter features, including creating direct messages, and deleting, searching, liking and retweeting a tweet. +Use the X node to automate work in X and integrate X with other applications. n8n has built-in support for a wide range of X features, including creating direct messages and deleting, searching, liking, and retweeting a tweet. -On this page, you'll find a list of operations the Twitter node supports and links to more resources. +On this page, you'll find a list of operations the X node supports and links to more resources. /// note | Credentials -Refer to [Twitter credentials](/integrations/builtin/credentials/twitter/) for guidance on setting up authentication. +Refer to [X credentials](/integrations/builtin/credentials/twitter/) for guidance on setting up authentication. /// /// note | Examples and templates -For usage examples and templates to help you get started, take a look at n8n's [Twitter integrations](https://n8n.io/integrations/twitter/){:target="_blank" .external-link} list. +For usage examples and templates to help you get started, take a look at n8n's [X integrations](https://n8n.io/integrations/twitter/){:target="_blank" .external-link} list. /// ## Basic Operations diff --git a/docs/integrations/builtin/app-nodes/n8n-nodes-base.vero.md b/docs/integrations/builtin/app-nodes/n8n-nodes-base.vero.md index 84dd908bf..8fc746072 100644 --- a/docs/integrations/builtin/app-nodes/n8n-nodes-base.vero.md +++ b/docs/integrations/builtin/app-nodes/n8n-nodes-base.vero.md @@ -1,20 +1,20 @@ --- -title: VERO -description: Documentation for the VERO node in n8n, a workflow automation platform. Includes details of operations and configuration, and links to examples and credentials information. +title: Vero +description: Documentation for the Vero node in n8n, a workflow automation platform. Includes details of operations and configuration, and links to examples and credentials information. contentType: integration --- -# VERO +# Vero -Use the VERO node to automate work in VERO, and integrate VERO with other applications. n8n has built-in support for a wide range of VERO features, including creating and deleting users. +Use the Vero node to automate work in Vero and integrate Vero with other applications. n8n has built-in support for a wide range of Vero features, including creating and deleting users. -On this page, you'll find a list of operations the VERO node supports and links to more resources. +On this page, you'll find a list of operations the Vero node supports and links to more resources. /// note | Credentials -Refer to [VERO credentials](/integrations/builtin/credentials/vero/) for guidance on setting up authentication. +Refer to [Vero credentials](/integrations/builtin/credentials/vero/) for guidance on setting up authentication. /// /// note | Examples and templates -For usage examples and templates to help you get started, take a look at n8n's [VERO integrations](https://n8n.io/integrations/vero/){:target="_blank" .external-link} list. +For usage examples and templates to help you get started, take a look at n8n's [Vero integrations](https://n8n.io/integrations/vero/){:target="_blank" .external-link} list. /// ## Basic Operations diff --git a/docs/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.memorybufferwindow.md b/docs/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.memorybufferwindow.md index 5587f372d..ff336754f 100644 --- a/docs/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.memorybufferwindow.md +++ b/docs/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.memorybufferwindow.md @@ -31,4 +31,10 @@ View [example workflows and related content](https://n8n.io/integrations/window- Refer to [LangChain's Buffer Window Memory documentation](https://js.langchain.com/docs/modules/memory/types/buffer_window){:target=_blank .external-link} for more information about the service. --8<-- "_snippets/integrations/builtin/cluster-nodes/langchain-overview-link.md" + +## Single memory instance + +[[% include "_includes/integrations/cluster-nodes/memory-shared.html" %]] + + --8<-- "_glossary/ai-glossary.md" diff --git a/docs/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.memorymanager.md b/docs/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.memorymanager.md index dcaeecd7a..f22c9bf04 100644 --- a/docs/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.memorymanager.md +++ b/docs/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.memorymanager.md @@ -7,6 +7,8 @@ description: Documentation for the Chat Memory Manager node in n8n, a workflow a The Chat Memory Manager node manages chat message memories within your workflows. Use this node to load, insert, and delete chat messages in an in-memory vector store. +--8<-- "_snippets/integrations/builtin/cluster-nodes/langchain-sub-nodes/chat-memory-manager-purpose.md" + On this page, you'll find a list of operations that the Chat Memory Manager node supports, along with links to more resources. /// note | Examples and templates @@ -20,8 +22,14 @@ For usage examples and templates to help you get started, refer to n8n's [Chat M * **Operation Mode**: choose between **Get Many Messages**, **Insert Messages**, and **Delete Messages** operations. * **Insert Mode**: available in **Insert Messages** mode. Choose between **Insert Messages** to add alongside existing messages or **Override All Messages** to replace current memory. * **Delete Mode**: available in **Delete Messages** mode. Select either **Last N** to delete the last N messages or **All Messages** to clear all messages from memory. -* **Chat Messages**: available in **Insert Messages** mode. Define the chat messages to insert into the memory, including message type (AI, System, User), message content, and visibility in UI. -* **Messages Count**: available in **Delete Messages** mode and when **Last N** is selected. Specify the number of latest messages to delete. +* **Chat Messages**: available in **Insert Messages** mode. Define the chat messages to insert into the memory, including: + * **Type Name or ID**: set the message type. Select one of: + * **AI**: use this for messages from the AI. + * **System**: add a message containing instructions for the AI. + * **User**: use this for messages from the user. This message type is sometimes called the 'human' message in other AI tools and guides. + * **Message**: the message contents. + * **Hide Message in Chat**: whether n8n should display the message to the user in the chat UI. +* **Messages Count**: available in **Delete Messages** mode and when you select **Last N**. Specify the number of latest messages to delete. * **Simplify Output**: available in **Get Many Messages** mode. Toggle to simplify the output to include only the sender (AI, user, or system) and the text. ## Related resources diff --git a/docs/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.memorymotorhead.md b/docs/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.memorymotorhead.md index c88d5f020..68a5c5622 100644 --- a/docs/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.memorymotorhead.md +++ b/docs/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.memorymotorhead.md @@ -31,4 +31,9 @@ View [example workflows and related content](https://n8n.io/integrations/motorhe Refer to [LangChain's Motorhead documentation](https://js.langchain.com/docs/modules/memory/integrations/motorhead_memory){:target=_blank .external-link} for more information about the service. --8<-- "_snippets/integrations/builtin/cluster-nodes/langchain-overview-link.md" + +## Single memory instance + +[[% include "_includes/integrations/cluster-nodes/memory-shared.html" %]] + --8<-- "_glossary/ai-glossary.md" diff --git a/docs/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.memoryredischat.md b/docs/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.memoryredischat.md index 7a6d12b86..560fe7c73 100644 --- a/docs/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.memoryredischat.md +++ b/docs/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.memoryredischat.md @@ -31,4 +31,9 @@ View [example workflows and related content](https://n8n.io/integrations/redis-c Refer to [LangChain's Redis Chat Memory documentation](https://js.langchain.com/docs/modules/memory/integrations/redis){:target=_blank .external-link} for more information about the service. --8<-- "_snippets/integrations/builtin/cluster-nodes/langchain-overview-link.md" + +## Single memory instance + +[[% include "_includes/integrations/cluster-nodes/memory-shared.html" %]] + --8<-- "_glossary/ai-glossary.md" diff --git a/docs/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.memoryxata.md b/docs/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.memoryxata.md index 19439ff6f..438baff41 100644 --- a/docs/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.memoryxata.md +++ b/docs/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.memoryxata.md @@ -31,4 +31,9 @@ View [example workflows and related content](https://n8n.io/integrations/xata/){ Refer to [LangChain's Xata documentation](https://js.langchain.com/docs/modules/memory/integrations/xata){:target=_blank .external-link} for more information about the service. --8<-- "_snippets/integrations/builtin/cluster-nodes/langchain-overview-link.md" + +## Single memory instance + +[[% include "_includes/integrations/cluster-nodes/memory-shared.html" %]] + --8<-- "_glossary/ai-glossary.md" diff --git a/docs/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.memoryzep.md b/docs/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.memoryzep.md index e70f5b113..23a719a4a 100644 --- a/docs/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.memoryzep.md +++ b/docs/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.memoryzep.md @@ -30,4 +30,9 @@ View [example workflows and related content](https://n8n.io/integrations/zep/){: Refer to [LangChain's Zep documentation](https://js.langchain.com/docs/modules/memory/integrations/zep_memory){:target=_blank .external-link} for more information about the service. --8<-- "_snippets/integrations/builtin/cluster-nodes/langchain-overview-link.md" + +## Single memory instance + +[[% include "_includes/integrations/cluster-nodes/memory-shared.html" %]] + --8<-- "_glossary/ai-glossary.md" diff --git a/docs/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.toolhttprequest.md b/docs/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.toolhttprequest.md new file mode 100644 index 000000000..3f8deb282 --- /dev/null +++ b/docs/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.toolhttprequest.md @@ -0,0 +1,25 @@ +--- +title: HTTP Request +description: Documentation for the HTTP Request node in n8n, a workflow automation platform. Includes details of operations and configuration, and links to examples and credentials information. +contentType: integration +--- + +# HTTP Request + +The HTTP Request tool works just like the [HTTP Request](/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/) node but it allows you to use it with an AI agent as a tool to collect information from a website or API. + +On this page, you'll find a list of operations the HTTP Request node supports, and links to more resources. + +/// note | Credentials +Refer to [HTTP Request credentials](/integrations/builtin/credentials/httprequest/) for guidance on setting up authentication. +/// + +--8<-- "_snippets/integrations/builtin/cluster-nodes/sub-node-expression-resolution.md" + + +## Related resources + +--8<-- "_snippets/integrations/builtin/cluster-nodes/tools-link.md" + +--8<-- "_snippets/integrations/builtin/cluster-nodes/langchain-overview-link.md" +--8<-- "_glossary/ai-glossary.md" diff --git a/docs/integrations/builtin/credentials/acuityscheduling.md b/docs/integrations/builtin/credentials/acuityscheduling.md index 2dd89b7d6..cb1396563 100644 --- a/docs/integrations/builtin/credentials/acuityscheduling.md +++ b/docs/integrations/builtin/credentials/acuityscheduling.md @@ -6,7 +6,7 @@ contentType: integration # Acuity Scheduling credentials -You can use these credentials to authenticate the following nodes with Acuity Scheduling. +You can use these credentials to authenticate the following nodes: - [Acuity Scheduling Trigger](/integrations/builtin/trigger-nodes/n8n-nodes-base.acuityschedulingtrigger/) diff --git a/docs/integrations/builtin/credentials/adalo.md b/docs/integrations/builtin/credentials/adalo.md index 9aa63a4d3..d6e16c4ab 100644 --- a/docs/integrations/builtin/credentials/adalo.md +++ b/docs/integrations/builtin/credentials/adalo.md @@ -6,7 +6,7 @@ contentType: integration # Adalo credentials -You can use these credentials to authenticate the following nodes with Adalo: +You can use these credentials to authenticate the following nodes: - [Adalo node](/integrations/builtin/app-nodes/n8n-nodes-base.adalo/) diff --git a/docs/integrations/builtin/credentials/affinity.md b/docs/integrations/builtin/credentials/affinity.md index e610c2e9a..fdb12ff8c 100644 --- a/docs/integrations/builtin/credentials/affinity.md +++ b/docs/integrations/builtin/credentials/affinity.md @@ -6,7 +6,7 @@ contentType: integration # Affinity credentials -You can use these credentials to authenticate the following nodes with Affinity. +You can use these credentials to authenticate the following nodes: - [Affinity](/integrations/builtin/app-nodes/n8n-nodes-base.affinity/) - [Affinity Trigger](/integrations/builtin/trigger-nodes/n8n-nodes-base.affinitytrigger/) diff --git a/docs/integrations/builtin/credentials/agilecrm.md b/docs/integrations/builtin/credentials/agilecrm.md index 0e8264720..fa994d2a1 100644 --- a/docs/integrations/builtin/credentials/agilecrm.md +++ b/docs/integrations/builtin/credentials/agilecrm.md @@ -6,7 +6,7 @@ contentType: integration # Agile CRM credentials -You can use these credentials to authenticate the following nodes with Agile CRM. +You can use these credentials to authenticate the following nodes: - [Agile CRM](/integrations/builtin/app-nodes/n8n-nodes-base.agilecrm/) diff --git a/docs/integrations/builtin/credentials/airtable.md b/docs/integrations/builtin/credentials/airtable.md index c46019e38..8ce5c9ee8 100644 --- a/docs/integrations/builtin/credentials/airtable.md +++ b/docs/integrations/builtin/credentials/airtable.md @@ -6,7 +6,7 @@ contentType: integration # Airtable credentials -You can use these credentials to authenticate the following nodes with Airtable. +You can use these credentials to authenticate the following nodes: - [Airtable](/integrations/builtin/app-nodes/n8n-nodes-base.airtable/) - [Airtable Trigger](/integrations/builtin/trigger-nodes/n8n-nodes-base.airtabletrigger/) diff --git a/docs/integrations/builtin/credentials/alienvault.md b/docs/integrations/builtin/credentials/alienvault.md index 706ad49f7..2fb8adff7 100644 --- a/docs/integrations/builtin/credentials/alienvault.md +++ b/docs/integrations/builtin/credentials/alienvault.md @@ -5,7 +5,7 @@ description: Documentation for the AlienVault credentials. Use these credentials # AlienVault credentials -You can use these credentials to authenticate when using the [HTTP Request node](/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/) to make a [Custom API call](/integrations/custom-operations/). +--8<-- "_snippets/integrations/builtin/credentials/cred-only-statement.md" ## Prerequisites diff --git a/docs/integrations/builtin/credentials/amqp.md b/docs/integrations/builtin/credentials/amqp.md index a19fc656d..622ddf082 100644 --- a/docs/integrations/builtin/credentials/amqp.md +++ b/docs/integrations/builtin/credentials/amqp.md @@ -6,18 +6,35 @@ contentType: integration # AMQP credentials -You can use these credentials to authenticate the following nodes with AMQP. +You can use these credentials to authenticate the following nodes: - [AMQP Sender](/integrations/builtin/app-nodes/n8n-nodes-base.amqp/) - [AMQP Trigger](/integrations/builtin/trigger-nodes/n8n-nodes-base.amqptrigger/) ## Prerequisites -You need to have a AMQP 1.0 compatible message broker installed. +Install an AMQP 1.0-compatible message broker like [ActiveMQ](https://activemq.apache.org/){:target=_blank .external-link}. Refer to [AMQP Products](https://www.amqp.org/about/examples){:target=_blank .external-link} for a list of options. -## Using ActiveMQ connection +## Supported authentication methods -Use your Hostname, Port, User, and Password as the AMQP Sender credential data in n8n. +- AMQP connection -**Note:** The default username for ActiveMQ is `admin` and the default password is `admin`. +## Related resources +Advanced Message Queuing Protocol (AMQP) is an open standard application layer protocol for message-oriented middleware. The defining features of AMQP are message orientation, queuing, routing, reliability and security. Refer to the [OASIS AMQP Version 1.0 Standard](http://docs.oasis-open.org/amqp/core/v1.0/amqp-core-overview-v1.0.html){:target=_blank .external-link} for more information. + +Refer to your provider's documentation for more information about the service. Refer to [ActiveMQ's API documentation](https://activemq.apache.org/components/classic/documentation/rest){:target=_blank .external-link} as one example. + +## Using AMQP connection + +To configure this credential, you'll need: + +- A **Hostname**: Enter the hostname of your AMQP message broker. +- A **Port**: Enter the port number the connection should use. +- A **User**: Enter the name of the user to establish the connection as. + - For example, the default username in ActiveMQ is `admin`. +- A **Password**: Enter the user's password. + - For example, the default password in ActiveMQ is `admin`. +- _Optional:_ **Transport Type**: Enter either `tcp` or `tls`. + +Refer to your provider's documentation for more detailed instructions. diff --git a/docs/integrations/builtin/credentials/auth0management.md b/docs/integrations/builtin/credentials/auth0management.md index c6b8b2ea1..44863e53b 100644 --- a/docs/integrations/builtin/credentials/auth0management.md +++ b/docs/integrations/builtin/credentials/auth0management.md @@ -5,7 +5,7 @@ description: Documentation for the Auth0 Management credentials. Use these crede # Auth0 Management credentials -You can use these credentials to authenticate when using the [HTTP Request node](/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/) to make a [Custom API call](/integrations/custom-operations/). +--8<-- "_snippets/integrations/builtin/credentials/cred-only-statement.md" ## Prerequisites diff --git a/docs/integrations/builtin/credentials/automizy.md b/docs/integrations/builtin/credentials/automizy.md index 064668702..38cc5f166 100644 --- a/docs/integrations/builtin/credentials/automizy.md +++ b/docs/integrations/builtin/credentials/automizy.md @@ -24,5 +24,7 @@ Refer to [Automizy's API documentation](https://developers.automizy.com/automizy ## Using API token -Create new or access existing API tokens from your [Automizy dashboard](https://app.automizy.com/dashboard){:target=_blank .external-link} by selecting **Settings** > **API Token**. +To configure this credential, you'll need: + +- An **API Token**: Create new or access existing API tokens from your [**Automizy dashboard**](https://app.automizy.com/dashboard){:target=_blank .external-link} **> Settings > API Token**. diff --git a/docs/integrations/builtin/credentials/autopilot.md b/docs/integrations/builtin/credentials/autopilot.md index 4c72e6ed3..fb7fc4c18 100644 --- a/docs/integrations/builtin/credentials/autopilot.md +++ b/docs/integrations/builtin/credentials/autopilot.md @@ -6,29 +6,30 @@ contentType: integration # Autopilot credentials -You can use these credentials to authenticate the following nodes with Autopilot. +You can use these credentials to authenticate the following nodes: - [Autopilot](/integrations/builtin/app-nodes/n8n-nodes-base.autopilot/) - [Autopilot Trigger](/integrations/builtin/trigger-nodes/n8n-nodes-base.autopilottrigger/) +/// warning | Autopilot branding change +Autopilot has become Ortto. The Autopilot credentials and nodes are only compatible with Autopilot, not the new Ortto API. +/// + ## Prerequisites -Create an [Autopilot](https://app.autopilothq.com) account. +Create an [Autopilot](https://app.autopilothq.com){:target=_blank .external-link} account. -## Using API Key +## Supported authentication methods -1. Open your Autopilot [dashboard](https://app.autopilothq.com). -2. Click on the gears icon on the left sidebar to open the ***Settings*** menu. -3. Click on ***Autopilot API***. -4. Click on the ***Generate*** button to create the API key. -5. Copy the displayed API key. -6. Enter a name for your credentials in the ***Credentials Name*** field in the 'Autopilot API' credentials in n8n. -7. Paste the API key in the ***API Key*** field in the 'Autopilot API' credentials in n8n. -8. Click on the ***Create*** button to create the credentials. +- API key -The following video demonstrates the steps mentioned above. +## Related resources -
- -
+Refer to [Autopilot's API documentation](https://autopilot.docs.apiary.io/#){:target=_blank .external-link} for more information about the service. + +## Using API key + +To configure this credential, you'll need: + +- An **API Key**: Generate an API key in **Settings > Autopilot API**. Refer to [Autopilot API authentication](https://autopilot.docs.apiary.io/#reference/authentication){:target=_blank .external-link} for more information. diff --git a/docs/integrations/builtin/credentials/bitbucket.md b/docs/integrations/builtin/credentials/bitbucket.md index d3ba85a25..9a3318e62 100644 --- a/docs/integrations/builtin/credentials/bitbucket.md +++ b/docs/integrations/builtin/credentials/bitbucket.md @@ -6,7 +6,7 @@ contentType: integration # Bitbucket credentials -You can use these credentials to authenticate the following nodes with Bitbucket. +You can use these credentials to authenticate the following nodes: - [Bitbucket Trigger](/integrations/builtin/trigger-nodes/n8n-nodes-base.bitbuckettrigger/) diff --git a/docs/integrations/builtin/credentials/cal.md b/docs/integrations/builtin/credentials/cal.md index 09ba3a514..3d96ec9ae 100644 --- a/docs/integrations/builtin/credentials/cal.md +++ b/docs/integrations/builtin/credentials/cal.md @@ -6,7 +6,7 @@ contentType: integration # Cal credentials -You can use these credentials to authenticate the following nodes with Cal. +You can use these credentials to authenticate the following nodes: - [Cal Trigger](/integrations/builtin/trigger-nodes/n8n-nodes-base.caltrigger/) diff --git a/docs/integrations/builtin/credentials/calendly.md b/docs/integrations/builtin/credentials/calendly.md index 3c77dc08c..9109c26a7 100644 --- a/docs/integrations/builtin/credentials/calendly.md +++ b/docs/integrations/builtin/credentials/calendly.md @@ -6,7 +6,7 @@ contentType: integration # Calendly credentials -You can use these credentials to authenticate the following nodes with Calendly. +You can use these credentials to authenticate the following nodes: - [Calendly Trigger](/integrations/builtin/trigger-nodes/n8n-nodes-base.calendlytrigger/) diff --git a/docs/integrations/builtin/credentials/carbonblack.md b/docs/integrations/builtin/credentials/carbonblack.md index f3dd325e6..dcaf14512 100644 --- a/docs/integrations/builtin/credentials/carbonblack.md +++ b/docs/integrations/builtin/credentials/carbonblack.md @@ -5,7 +5,7 @@ description: Documentation for the Carbon Black credentials. Use these credentia # Carbon Black credentials -You can use these credentials to authenticate when using the [HTTP Request node](/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/) to make a [Custom API call](/integrations/custom-operations/). +--8<-- "_snippets/integrations/builtin/credentials/cred-only-statement.md" ## Prerequisites diff --git a/docs/integrations/builtin/credentials/chargebee.md b/docs/integrations/builtin/credentials/chargebee.md index e5c770b87..1c1f36faa 100644 --- a/docs/integrations/builtin/credentials/chargebee.md +++ b/docs/integrations/builtin/credentials/chargebee.md @@ -6,7 +6,7 @@ contentType: integration # Chargebee credentials -You can use these credentials to authenticate the following nodes with Chargebee. +You can use these credentials to authenticate the following nodes: - [Chargebee](/integrations/builtin/app-nodes/n8n-nodes-base.chargebee/) - [Chargebee Trigger](/integrations/builtin/trigger-nodes/n8n-nodes-base.chargebeetrigger/) diff --git a/docs/integrations/builtin/credentials/circleci.md b/docs/integrations/builtin/credentials/circleci.md index 447e1bc6d..4fde80098 100644 --- a/docs/integrations/builtin/credentials/circleci.md +++ b/docs/integrations/builtin/credentials/circleci.md @@ -6,7 +6,7 @@ contentType: integration # CircleCI credentials -You can use these credentials to authenticate the following nodes with CircleCI. +You can use these credentials to authenticate the following nodes: - [CircleCI](/integrations/builtin/app-nodes/n8n-nodes-base.circleci/) diff --git a/docs/integrations/builtin/credentials/ciscomeraki.md b/docs/integrations/builtin/credentials/ciscomeraki.md index 055a82ead..d522b5385 100644 --- a/docs/integrations/builtin/credentials/ciscomeraki.md +++ b/docs/integrations/builtin/credentials/ciscomeraki.md @@ -5,7 +5,7 @@ description: Documentation for the Cisco Meraki credentials. Use these credentia # Cisco Meraki credentials -You can use these credentials to authenticate when using the [HTTP Request node](/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/) to make a [Custom API call](/integrations/custom-operations/). +--8<-- "_snippets/integrations/builtin/credentials/cred-only-statement.md" ## Prerequisites diff --git a/docs/integrations/builtin/credentials/ciscosecureendpoint.md b/docs/integrations/builtin/credentials/ciscosecureendpoint.md index 2822d3e64..7857fb046 100644 --- a/docs/integrations/builtin/credentials/ciscosecureendpoint.md +++ b/docs/integrations/builtin/credentials/ciscosecureendpoint.md @@ -5,7 +5,7 @@ description: Documentation for the Cisco Secure Endpoint credentials. Use these # Cisco Secure Endpoint credentials -You can use these credentials to authenticate when using the [HTTP Request node](/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/) to make a [Custom API call](/integrations/custom-operations/). +--8<-- "_snippets/integrations/builtin/credentials/cred-only-statement.md" ## Prerequisites diff --git a/docs/integrations/builtin/credentials/ciscoumbrella.md b/docs/integrations/builtin/credentials/ciscoumbrella.md index 93becdee2..5f74dd08b 100644 --- a/docs/integrations/builtin/credentials/ciscoumbrella.md +++ b/docs/integrations/builtin/credentials/ciscoumbrella.md @@ -5,7 +5,7 @@ description: Documentation for the Cisco Umbrella credentials. Use these credent # Cisco Umbrella credentials -You can use these credentials to authenticate when using the [HTTP Request node](/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/) to make a [Custom API call](/integrations/custom-operations/). +--8<-- "_snippets/integrations/builtin/credentials/cred-only-statement.md" ## Prerequisites diff --git a/docs/integrations/builtin/credentials/citrixadc.md b/docs/integrations/builtin/credentials/citrixadc.md index 4ddce6dd2..e9d504e53 100644 --- a/docs/integrations/builtin/credentials/citrixadc.md +++ b/docs/integrations/builtin/credentials/citrixadc.md @@ -6,13 +6,28 @@ contentType: integration # Citrix ADC credentials -You can use these credentials to authenticate the following nodes with Citrix ADC: +You can use these credentials to authenticate the following nodes: * [Citrix ADC node](/integrations/builtin/app-nodes/n8n-nodes-base.citrixadc/) -Enter the following information in the **Citrix ADC account** credentials modal: +## Prerequisites -* The URL of your Citrix ADC instance -* Username -* Password +Install a [NetScaler/Citrix ADC appliance](https://docs.netscaler.com/en-us/citrix-adc/current-release/getting-started-with-citrix-adc){:target=_blank .external-link}. +## Supported authentication methods + +- Basic auth + +## Related resources + +Refer to [Citrix ADC's 14.1 NITRO API documentation](https://developer-docs.netscaler.com/en-us/adc-nitro-api/current-release){:target=_blank .external-link} for more information about the service. + +## Using basic auth + +To configure this credential, you'll need: + +* A **URL**: Enter the URL of your NetScaler/Citrix ADC instance. +* A **Username**: Enter your NetScaler/Citrix ADC username. +* A **Password**: Enter your NetScaler/Citrix ADC password. + +Refer to [Performing Basic Citrix ADC Operations](https://developer-docs.netscaler.com/en-us/adc-nitro-api/current-release/performing-basic-netscaler-operations){:target=_blank .external-link} for more information. diff --git a/docs/integrations/builtin/credentials/crowdstrike.md b/docs/integrations/builtin/credentials/crowdstrike.md index fe2a04d95..7a91c1ae7 100644 --- a/docs/integrations/builtin/credentials/crowdstrike.md +++ b/docs/integrations/builtin/credentials/crowdstrike.md @@ -5,7 +5,7 @@ description: Documentation for the CrowdStrike credentials. Use these credential # CrowdStrike credentials -You can use these credentials to authenticate when using the [HTTP Request node](/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/) to make a [Custom API call](/integrations/custom-operations/). +--8<-- "_snippets/integrations/builtin/credentials/cred-only-statement.md" ## Prerequisites diff --git a/docs/integrations/builtin/credentials/elasticsearch.md b/docs/integrations/builtin/credentials/elasticsearch.md index f6df85694..fca0a614d 100644 --- a/docs/integrations/builtin/credentials/elasticsearch.md +++ b/docs/integrations/builtin/credentials/elasticsearch.md @@ -35,6 +35,8 @@ To configure this credential, you'll need: 2. In the **Applications** section, copy the endpoint of the **Elasticsearch** application. 3. Add this in n8n as the **Base URL**. +- **Ignore SSL Issues**: When turned on, n8n will connect even if SSL certificate validation fails. + /// note | Custom endpoint aliases If you add a [custom endpoint alias](https://www.elastic.co/guide/en/cloud/current/ec-regional-deployment-aliases.html){:target=_blank .external-link} to a deployment, update your n8n credential **Base URL** with the new endpoint. /// diff --git a/docs/integrations/builtin/credentials/emelia.md b/docs/integrations/builtin/credentials/emelia.md index 1b7917ba4..6abcb4f74 100644 --- a/docs/integrations/builtin/credentials/emelia.md +++ b/docs/integrations/builtin/credentials/emelia.md @@ -6,7 +6,7 @@ contentType: integration # Emelia credentials -You can use these credentials to authenticate the following nodes with Emelia. +You can use these credentials to authenticate the following nodes: - [Emelia](/integrations/builtin/app-nodes/n8n-nodes-base.emelia/) - [Emelia Trigger](/integrations/builtin/trigger-nodes/n8n-nodes-base.emeliatrigger/) diff --git a/docs/integrations/builtin/credentials/f5bigip.md b/docs/integrations/builtin/credentials/f5bigip.md index 6e2901077..1422c4021 100644 --- a/docs/integrations/builtin/credentials/f5bigip.md +++ b/docs/integrations/builtin/credentials/f5bigip.md @@ -5,7 +5,7 @@ description: Documentation for the F5 Big-IP credentials. Use these credentials # F5 Big-IP credentials -You can use these credentials to authenticate when using the [HTTP Request node](/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/) to make a [Custom API call](/integrations/custom-operations/). +--8<-- "_snippets/integrations/builtin/credentials/cred-only-statement.md" ## Prerequisites diff --git a/docs/integrations/builtin/credentials/facebookapp.md b/docs/integrations/builtin/credentials/facebookapp.md index e0ac597b5..9e5523efb 100644 --- a/docs/integrations/builtin/credentials/facebookapp.md +++ b/docs/integrations/builtin/credentials/facebookapp.md @@ -6,7 +6,7 @@ contentType: integration # Facebook App credentials -You can use these credentials to authenticate the following nodes with Facebook. +You can use these credentials to authenticate the following nodes: - [Facebook Trigger](/integrations/builtin/trigger-nodes/n8n-nodes-base.facebooktrigger/) diff --git a/docs/integrations/builtin/credentials/facebookgraph.md b/docs/integrations/builtin/credentials/facebookgraph.md index 8d5224452..16a42e8e6 100644 --- a/docs/integrations/builtin/credentials/facebookgraph.md +++ b/docs/integrations/builtin/credentials/facebookgraph.md @@ -6,7 +6,7 @@ contentType: integration # Facebook Graph API credentials -You can use these credentials to authenticate the following nodes with Facebook. +You can use these credentials to authenticate the following nodes: - [Facebook Graph API](/integrations/builtin/app-nodes/n8n-nodes-base.facebookgraphapi/) diff --git a/docs/integrations/builtin/credentials/filemaker.md b/docs/integrations/builtin/credentials/filemaker.md index 5d48cfc9d..c75229691 100644 --- a/docs/integrations/builtin/credentials/filemaker.md +++ b/docs/integrations/builtin/credentials/filemaker.md @@ -6,17 +6,29 @@ contentType: integration # FileMaker credentials -You can use these credentials to authenticate the following nodes with FileMaker. +You can use these credentials to authenticate the following nodes: - [FileMaker](/integrations/builtin/app-nodes/n8n-nodes-base.filemaker/) ## Prerequisites -Create an user account on a FileMaker server. +- Create a user account on a [FileMaker Server](https://www.claris.com/filemaker/){:target=_blank .external-link} with the `fmrest` extended privilege to [Access via FileMaker Data API](https://help.claris.com/en/data-api-guide/content/enable-access.html){:target=_blank .external-link}. +- Ensure the FileMaker Server can use the [FileMaker Data API](https://help.claris.com/en/data-api-guide/content/index.html){:target=_blank .external-link}. -## Using Database Connection +## Supported authentication methods -1. Retrieve your FileMaker credentials and connection parameters. -2. Use the credentials and connection parameters with your FileMaker node credentials in n8n. -3. Click on the ***Save*** button to save your credentials. +- Database connection + +## Related resources + +Refer to [Filemaker's Data API Guide](https://help.claris.com/en/data-api-guide/content/index.html){:target=_blank .external-link} for more information about the service. + +## Using database connection + +To configure this credential, you'll need: + +- A **Host**: The IP address or host name of your FileMaker Server. +- A **Database**: The database name as it appears in the **Databases** list within Filemaker. +- The **Login** for the account with the `fmrest` extended privilege. +- The **Password** for the account with the `fmrest` extended privilege. diff --git a/docs/integrations/builtin/credentials/fortigate.md b/docs/integrations/builtin/credentials/fortigate.md index 5f7b02097..b1b8eceaf 100644 --- a/docs/integrations/builtin/credentials/fortigate.md +++ b/docs/integrations/builtin/credentials/fortigate.md @@ -5,7 +5,7 @@ description: Documentation for the Fortinet FortiGate credentials. Use these cre # Fortinet FortiGate credentials -You can use these credentials to authenticate when using the [HTTP Request node](/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/) to make a [Custom API call](/integrations/custom-operations/). +--8<-- "_snippets/integrations/builtin/credentials/cred-only-statement.md" ## Prerequisites diff --git a/docs/integrations/builtin/credentials/ftp.md b/docs/integrations/builtin/credentials/ftp.md index 98401d83c..7c30fad68 100644 --- a/docs/integrations/builtin/credentials/ftp.md +++ b/docs/integrations/builtin/credentials/ftp.md @@ -12,17 +12,37 @@ You can use these credentials to authenticate the following nodes: ## Prerequisites -Create an account on an FTP server. +Create an account on a File Transfer Protocol (FTP) server. ## Supported authentication methods -- FTP account +- FTP account: Use this method if your FTP server doesn't support SSH tunneling or encrypted connections. +- SFTP account: Use this method if your FTP server supports SSH tunneling and encrypted connections. + +## Related resources + +File Transfer Protocol (FTP) and Secure Shell File Transfer Protocol (SFTP) are protocols for transferring files directly between an FTP/SFTP client and server. ## Using FTP account To configure this credential, you'll need: -- The FTP **Host** -- The FTP **Port** -- FTP **Username** -- FTP **Password** +- A **Host**: Enter the name or IP address of your FTP server's host. +- A **Port**: Enter the port number the connection should use. +- A **Username**: Enter the name of the user the connection should use. +- A **Password**: Enter the user's password. + +Review your FTP server provider's documentation for instructions on getting the information you need. + +## Using SFTP account + +To configure this credential, you'll need: + +- A **Host**: Enter the name or IP address of your FTP server's host. +- A **Port**: Enter the port number the connection should use. +- A **Username**: Enter the name of the user the connection should use. +- A **Password**: Enter the user's password. +- A **Private Key**: Enter a string for either key-based or host-based user authentication (OpenSSH format). +- A **Passphrase**: If the **Private Key** is encrypted, enter the passphrase used to decrypt it. + +Review your FTP server provider's documentation for instructions on getting the information you need. \ No newline at end of file diff --git a/docs/integrations/builtin/credentials/gumroad.md b/docs/integrations/builtin/credentials/gumroad.md index af27286b3..52eb57ec8 100644 --- a/docs/integrations/builtin/credentials/gumroad.md +++ b/docs/integrations/builtin/credentials/gumroad.md @@ -6,7 +6,7 @@ contentType: integration # Gumroad credentials -You can use these credentials to authenticate the following nodes with Gumroad. +You can use these credentials to authenticate the following nodes: - [Gumroad Trigger](/integrations/builtin/trigger-nodes/n8n-nodes-base.gumroadtrigger/) diff --git a/docs/integrations/builtin/credentials/httprequest.md b/docs/integrations/builtin/credentials/httprequest.md index 66fe5696c..e9e922d06 100644 --- a/docs/integrations/builtin/credentials/httprequest.md +++ b/docs/integrations/builtin/credentials/httprequest.md @@ -9,6 +9,7 @@ contentType: integration You can use these credentials to authenticate the following nodes: - [HTTP Request](/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/) +- [HTTP Request Tool](/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.toolhttprequest) ## Prerequisites @@ -220,4 +221,4 @@ To configure your SSL Certificates credential, you'll need to add: If your SSL certificate is in a single file (such as a `.pfx` file), you'll need to open the file to copy details from it to paste into the appropriate fields: - Enter the Public Key/CRT as the **Certificate** -- Enter the **Private Key**/KEY in that field \ No newline at end of file +- Enter the **Private Key**/KEY in that field diff --git a/docs/integrations/builtin/credentials/hybridanalysis.md b/docs/integrations/builtin/credentials/hybridanalysis.md index 6c5ba257e..2d05804c0 100644 --- a/docs/integrations/builtin/credentials/hybridanalysis.md +++ b/docs/integrations/builtin/credentials/hybridanalysis.md @@ -5,7 +5,7 @@ description: Documentation for the Hybrid Analysis credentials. Use these creden # Hybrid Analysis credentials -You can use these credentials to authenticate when using the [HTTP Request node](/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/) to make a [Custom API call](/integrations/custom-operations/). +--8<-- "_snippets/integrations/builtin/credentials/cred-only-statement.md" ## Prerequisites diff --git a/docs/integrations/builtin/credentials/impervawaf.md b/docs/integrations/builtin/credentials/impervawaf.md index 76cc0653a..bc78a2d60 100644 --- a/docs/integrations/builtin/credentials/impervawaf.md +++ b/docs/integrations/builtin/credentials/impervawaf.md @@ -5,7 +5,7 @@ description: Documentation for the Imperva WAF credentials. Use these credential # Imperva WAF credentials -You can use these credentials to authenticate when using the [HTTP Request node](/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/) to make a [Custom API call](/integrations/custom-operations/). +--8<-- "_snippets/integrations/builtin/credentials/cred-only-statement.md" ## Prerequisites diff --git a/docs/integrations/builtin/credentials/kibana.md b/docs/integrations/builtin/credentials/kibana.md index 15d913555..804117b13 100644 --- a/docs/integrations/builtin/credentials/kibana.md +++ b/docs/integrations/builtin/credentials/kibana.md @@ -5,7 +5,7 @@ description: Documentation for the Kibana credentials. Use these credentials to # Kibana credentials -You can use these credentials to authenticate when using the [HTTP Request node](/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/) to make a [Custom API call](/integrations/custom-operations/). +--8<-- "_snippets/integrations/builtin/credentials/cred-only-statement.md" ## Prerequisites diff --git a/docs/integrations/builtin/credentials/linkedin.md b/docs/integrations/builtin/credentials/linkedin.md index f6f3143d4..74317a3b0 100644 --- a/docs/integrations/builtin/credentials/linkedin.md +++ b/docs/integrations/builtin/credentials/linkedin.md @@ -6,29 +6,66 @@ contentType: integration # LinkedIn credentials -You can use these credentials to authenticate the following nodes with LinkedIn. +You can use these credentials to authenticate the following nodes: - [LinkedIn](/integrations/builtin/app-nodes/n8n-nodes-base.linkedin/) ## Prerequisites -* A [LinkedIn](https://www.linkedin.com/){:target=_blank .external-link} account. -* A LinkedIn Company Page. +* Create a [LinkedIn](https://www.linkedin.com/){:target=_blank .external-link} account. +* Create a LinkedIn [Company Page](https://www.linkedin.com/help/linkedin/answer/a543852){:target=_blank .external-link}. -## Using OAuth +## Supported authentication methods -/// note | Note for n8n Cloud users -You can skip this setup. Enter the **Credentials Name** and select **Connect my account** to connect your LinkedIn account to n8n. -/// -This section provides outline steps for setting up OAuth with LinkedIn. Refer to [LinkedIn's documentation](https://learn.microsoft.com/en-gb/linkedin/){:target=_blank .external-link} for detailed information. +- Community Management OAuth2: Use this method if you're a new LinkedIn user or creating a new LinkedIn app. +- OAuth2: Use this method for older LinkedIn apps and user accounts. -To enable OAuth, you need to: +## Related Resources -1. Create a [new app](https://www.linkedin.com/developers/apps/new){:target=_blank .external-link}. - * Provide a LinkedIn Company Page for **LinkedIn Page**. Refer to [Associate an App with a LinkedIn Page](https://www.linkedin.com/help/linkedin/answer/a548360){:target=_blank .external-link} for more guidance. -2. Enable APIs for your app. You need to enable **Share on LinkedIn** and **Sign In with LinkedIn**. +Refer to [LinkedIn's Community Management API documentation](https://learn.microsoft.com/en-us/linkedin/marketing/community-management/community-management-overview?view=li-lms-2024-04){:target=_blank .external-link} for more information about the service. + +This credential works with API version `202404`. + +## Using Community Management OAuth2 + +To configure this credential, you'll need: + +- A **Client ID**: Generated after you create a new developer app. +- A **Client Secret**: Generated after you create a new developer app. + +To enable OAuth, you need to create a [new developer app](https://www.linkedin.com/developers/apps/new){:target=_blank .external-link}. + +Use these settings for your app: + +- Enter a LinkedIn Company Page for **LinkedIn Page**. Refer to [Associate an App with a LinkedIn Page](https://www.linkedin.com/help/linkedin/answer/a548360){:target=_blank .external-link} for more guidance. +- Enable APIs for your app, including: + - **Share on LinkedIn** + - **Sign In with LinkedIn using OpenID Connect** /// note | Posting from organization accounts To post as an organization, you need to put your app through LinkedIn's [Community Management App Review](https://learn.microsoft.com/en-us/linkedin/marketing/community-management-app-review){:target=_blank .external-link} process. -/// \ No newline at end of file +/// + +Refer to [Getting Access to LinkedIn APIs](https://learn.microsoft.com/en-us/linkedin/shared/authentication/getting-access){:target=_blank .external-link} for more information on scopes and permissions. + +## Using OAuth2 + +--8<-- "_snippets/integrations/builtin/credentials/cloud-oauth-button.md" + +All users must select: + +- **Organization Support**: If turned on, the credential requests permission to post as an organization using the `w_organization_social` scope. + - To use this option, you must put your app through LinkedIn's [Community Management App Review](https://learn.microsoft.com/en-us/linkedin/marketing/community-management-app-review){:target=_blank .external-link} process. +- **Legacy**: If turned on, the credential uses legacy scopes for `r_liteprofile` and `r_emailaddress` instead of the newer `profile` and `email` scopes. + +If you need to configure OAuth2 from scratch, create a [new developer app](https://www.linkedin.com/developers/apps/new){:target=_blank .external-link}. + +Use these settings for your app: + +- Enter a LinkedIn Company Page for **LinkedIn Page**. Refer to [Associate an App with a LinkedIn Page](https://www.linkedin.com/help/linkedin/answer/a548360){:target=_blank .external-link} for more guidance. +- Enable APIs for your app, including: + - **Share on LinkedIn** + - **Sign In with LinkedIn using OpenID Connect** + +Refer to [Getting Access to LinkedIn APIs](https://learn.microsoft.com/en-us/linkedin/shared/authentication/getting-access){:target=_blank .external-link} for more information on scopes and permissions. \ No newline at end of file diff --git a/docs/integrations/builtin/credentials/magento2.md b/docs/integrations/builtin/credentials/magento2.md index 566f65710..2f38963b0 100644 --- a/docs/integrations/builtin/credentials/magento2.md +++ b/docs/integrations/builtin/credentials/magento2.md @@ -6,30 +6,40 @@ contentType: integration # Magento 2 credentials -You can use these credentials to authenticate the following nodes: +You can use these credentials to authenticate the following node: - [Magento 2](/integrations/builtin/app-nodes/n8n-nodes-base.magento2/) ## Prerequisites -Create a [Magento](https://magento.com/) account. +- Create a [Magento](https://magento.com/){:target=_blank .external-link} account. +- Set your store to **Allow OAuth Access Tokens to be used as standalone Bearer tokens**. + - Go to **Admin > Stores > Configuration > Services > OAuth > Consumer Settings**. + - Set the **Allow OAuth Access Tokens to be used as standalone Bearer tokens** option to **Yes**. + - You can also enable this setting from the CLI by running the following command: -## Using Access Token + ``` + bin/magento config:set oauth/consumer/enable_integration_as_bearer 1 + ``` -From your Magento [admin](https://docs.magento.com/user-guide/stores/admin.html) panel: +This step is necessary until n8n updates the Magento 2 credentials to use OAuth. Refer to [Integration Tokens](https://developer.adobe.com/commerce/webapi/get-started/authentication/gs-authentication-token/#integration-tokens){:target=_blank .external-link} for more information. -1. Navigate to **System** > **Extensions** > **Integrations**. -2. Select **Add New Integration**. -3. Enter a name for your n8n integration and your admin password. -4. Navigate to the **API** tab and select the Magento resources this n8n integration should be able to access. -5. Select **Save** to confirm your selections. -6. From the **Integrations** page, click **Activate** for the new n8n integration. -7. Select **Allow** to display a dialog screen with the credentials. -8. Copy the **Access Token** value to use in n8n. +## Supported authentication methods -From n8n: +- API access token -1. Enter the **Host** address of your Magento store. -2. Enter the **Access Token** obtained above. -3. Click **Save** to create the credentials. +## Related resources +Refer to [Magento's API documentation](https://devdocs.magento.com/redoc/2.3/){:target=_blank .external-link} for more information about the service. + +## Using API access token + +To configure this credential, you'll need: + +- A **Host**: Enter the address of your Magento store. +- An **Access Token**: Get an access token from the [**Admin Panel**](https://docs.magento.com/user-guide/stores/admin.html){:target=_blank .external-link}: + 1. Go to **System > Extensions > Integrations**. + 2. Add a new Integration. + 3. Go to the **API** tab and select the Magento resources you'd like the n8n integration to access. + 4. From the **Integrations** page, **Activate** the new integration. + 5. Select **Allow** to display your access token so you can copy it and enter it in n8n. diff --git a/docs/integrations/builtin/credentials/mautic.md b/docs/integrations/builtin/credentials/mautic.md index d04c632ef..2d48ba67c 100644 --- a/docs/integrations/builtin/credentials/mautic.md +++ b/docs/integrations/builtin/credentials/mautic.md @@ -6,7 +6,7 @@ contentType: integration # Mautic credentials -You can use these credentials to authenticate the following nodes with Mautic. +You can use these credentials to authenticate the following nodes: - [Mautic](/integrations/builtin/app-nodes/n8n-nodes-base.mautic/) - [Mautic Trigger](/integrations/builtin/trigger-nodes/n8n-nodes-base.mautictrigger/) diff --git a/docs/integrations/builtin/credentials/microsoftentra.md b/docs/integrations/builtin/credentials/microsoftentra.md index bc9bf6687..b915d4b33 100644 --- a/docs/integrations/builtin/credentials/microsoftentra.md +++ b/docs/integrations/builtin/credentials/microsoftentra.md @@ -5,7 +5,7 @@ description: Documentation for the Microsoft Entra ID credentials. Use these cre # Microsoft Entra ID credentials -You can use these credentials to authenticate when using the [HTTP Request node](/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/) to make a [Custom API call](/integrations/custom-operations/). +--8<-- "_snippets/integrations/builtin/credentials/cred-only-statement.md" ## Prerequisites diff --git a/docs/integrations/builtin/credentials/mist.md b/docs/integrations/builtin/credentials/mist.md index 052efb6fe..db8d7798b 100644 --- a/docs/integrations/builtin/credentials/mist.md +++ b/docs/integrations/builtin/credentials/mist.md @@ -5,7 +5,7 @@ description: Documentation for the Mist credentials. Use these credentials to au # Mist credentials -You can use these credentials to authenticate when using the [HTTP Request node](/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/) to make a [Custom API call](/integrations/custom-operations/). +--8<-- "_snippets/integrations/builtin/credentials/cred-only-statement.md" ## Prerequisites diff --git a/docs/integrations/builtin/credentials/okta.md b/docs/integrations/builtin/credentials/okta.md index 19f0bed26..bdd402990 100644 --- a/docs/integrations/builtin/credentials/okta.md +++ b/docs/integrations/builtin/credentials/okta.md @@ -5,7 +5,7 @@ description: Documentation for the Okta credentials. Use these credentials to au # Okta credentials -You can use these credentials to authenticate when using the [HTTP Request node](/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/) to make a [Custom API call](/integrations/custom-operations/). +--8<-- "_snippets/integrations/builtin/credentials/cred-only-statement.md" ## Prerequisites diff --git a/docs/integrations/builtin/credentials/opencti.md b/docs/integrations/builtin/credentials/opencti.md index 557406bfc..4996d5f77 100644 --- a/docs/integrations/builtin/credentials/opencti.md +++ b/docs/integrations/builtin/credentials/opencti.md @@ -5,7 +5,7 @@ description: Documentation for the OpenCTI credentials. Use these credentials to # OpenCTI credentials -You can use these credentials to authenticate when using the [HTTP Request node](/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/) to make a [Custom API call](/integrations/custom-operations/). +--8<-- "_snippets/integrations/builtin/credentials/cred-only-statement.md" ## Prerequisites diff --git a/docs/integrations/builtin/credentials/philipshue.md b/docs/integrations/builtin/credentials/philipshue.md index 275ebb716..d30ffcca2 100644 --- a/docs/integrations/builtin/credentials/philipshue.md +++ b/docs/integrations/builtin/credentials/philipshue.md @@ -6,25 +6,33 @@ contentType: integration # Philips Hue credentials -You can use these credentials to authenticate the following nodes with Philips Hue. +You can use these credentials to authenticate the following nodes: - [Philips Hue](/integrations/builtin/app-nodes/n8n-nodes-base.philipshue/) ## Prerequisites -Create a [Philips Hue Developer](https://developers.meethue.com/) account. +Create a [Philips Hue](https://www.philips-hue.com/en-us){:target=_blank .external-link} account. -## Using OAuth +## Supported authentication methods -1. Access the [Add new Hue Remote API app](https://developers.meethue.com/add-new-hue-remote-api-app/) page. -2. Enter a name in the ***App name*** field. -3. Enter a description in the ***Application description*** field. -4. Copy the 'OAuth Callback URL' provided in the Philips Hue OAuth2 API credentials in n8n and paste it in the ***Callback URL*** field in the *Add new Hue Remote API app* page. -5. Click on the ***Submit*** button. -6. Click on the ***AppId*** to reveal the credentials. -7. Use the displayed ***AppId***, ***ClientId*** and the ***ClientSecret*** with your Philips Hue OAuth2 API credentials in n8n. -8. Click on the circle button in the OAuth section to connect a Philips Hue account to n8n. -9. Click the ***Save*** button to save your credentials in n8n. +- OAuth2 -![Getting Philips Hue credentials](/_images/integrations/builtin/credentials/philipshue/using-oauth.gif) +## Related resources +Refer to [Philips Hue's CLIP API documentation](https://developers.meethue.com/develop/hue-api-v2/api-reference/){:target=_blank .external-link} for more information about the service. + +## Using OAuth2 + +--8<-- "_snippets/integrations/builtin/credentials/cloud-oauth-button.md" + +If you're using the built-in OAuth connection, you don't need to enter an **APP ID**. + +If you need to configure OAuth2 from scratch, you'll need a [Philips Hue developer](https://developers.meethue.com/){:target=_blank .external-link} account + +Create a new remote app on the [Add new Hue Remote API app](https://developers.meethue.com/add-new-hue-remote-api-app/) page. + +Use these settings for your app: + +- Copy the **OAuth Callback URL** from n8n and add it as a **Callback URL**. +- Copy the **AppId**, **ClientId**, and **ClientSecret** and enter these in the corresponding fields in n8n. diff --git a/docs/integrations/builtin/credentials/qradar.md b/docs/integrations/builtin/credentials/qradar.md index a52981f5c..b2b148840 100644 --- a/docs/integrations/builtin/credentials/qradar.md +++ b/docs/integrations/builtin/credentials/qradar.md @@ -5,7 +5,7 @@ description: Documentation for the QRadar credentials. Use these credentials to # QRadar credentials -You can use these credentials to authenticate when using the [HTTP Request node](/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/) to make a [Custom API call](/integrations/custom-operations/). +--8<-- "_snippets/integrations/builtin/credentials/cred-only-statement.md" ## Prerequisites diff --git a/docs/integrations/builtin/credentials/qualys.md b/docs/integrations/builtin/credentials/qualys.md index bd4055bf6..56bdc153d 100644 --- a/docs/integrations/builtin/credentials/qualys.md +++ b/docs/integrations/builtin/credentials/qualys.md @@ -5,7 +5,7 @@ description: Documentation for the Qualys credentials. Use these credentials to # Qualys credentials -You can use these credentials to authenticate when using the [HTTP Request node](/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/) to make a [Custom API call](/integrations/custom-operations/). +--8<-- "_snippets/integrations/builtin/credentials/cred-only-statement.md" ## Prerequisites diff --git a/docs/integrations/builtin/credentials/recordedfuture.md b/docs/integrations/builtin/credentials/recordedfuture.md index c24e7defa..b904f1126 100644 --- a/docs/integrations/builtin/credentials/recordedfuture.md +++ b/docs/integrations/builtin/credentials/recordedfuture.md @@ -5,7 +5,7 @@ description: Documentation for the Recorded Future credentials. Use these creden # Recorded Future credentials -You can use these credentials to authenticate when using the [HTTP Request node](/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/) to make a [Custom API call](/integrations/custom-operations/). +--8<-- "_snippets/integrations/builtin/credentials/cred-only-statement.md" ## Prerequisites diff --git a/docs/integrations/builtin/credentials/s3.md b/docs/integrations/builtin/credentials/s3.md index 951c1ec19..aa7a8904b 100644 --- a/docs/integrations/builtin/credentials/s3.md +++ b/docs/integrations/builtin/credentials/s3.md @@ -6,17 +6,36 @@ contentType: integration # S3 credentials -You can use these credentials to authenticate the following nodes with S3. +You can use these credentials to authenticate the following nodes: - [S3](/integrations/builtin/app-nodes/n8n-nodes-base.s3/) ## Prerequisites -Create an account on S3 compatible server. +Create an account on an S3-compatible server. Use the S3 node for generic or non-AWS S3 like: -## Using Access Token +* [MinIO](https://min.io/){:target="_blank" .external-link} +* [Wasabi](https://wasabi.com/){:target="_blank" .external-link} +* [Digital Ocean spaces](https://www.digitalocean.com/products/spaces){:target="_blank" .external-link} -1. Retrieve your S3 endpoint, access key ID, and secret access key from your S3 compatible server. -2. Use the S3 endpoint, access key ID, and the secret access key in your S3 node credentials in n8n. -3. Click on the ***Save*** button to save your credentials. +## Supported authentication methods + +- S3 endpoint + +## Related resources + +Refer to your S3-compatible provider's documentation for more information on the services. For example, refer to [Wasabi's REST API documentation](https://docs.wasabi.com/docs/rest-api-introduction){:target="_blank" .external-link} or [Digital Ocean's Spaces API Reference Documentation](https://docs.digitalocean.com/reference/api/spaces-api/){:target="_blank" .external-link}. + +## Using S3 endpoint + +To configure this credential, you'll need: + +- An **S3 Endpoint**: Enter the URL endpoint for the S3 storage backend. +- A **Region**: Enter the region for your S3 storage. Some providers call this the "region slug." +- An **Access Key ID**: Enter the S3 access key your S3 provider uses to access the bucket or space. Some providers call this API keys. +- A **Secret Access Key**: Enter the secret access key for the **Access Key ID**. +- **Force Path Style**: When turned on, the connection uses path-style addressing for buckets. +- **Ignore SSL Issues**: When turned on, n8n will connect even if SSL certificate validation fails. + +Refer to your S3-compatible provider's documentation for more information. diff --git a/docs/integrations/builtin/credentials/segment.md b/docs/integrations/builtin/credentials/segment.md index d3d7984ba..4326a31aa 100644 --- a/docs/integrations/builtin/credentials/segment.md +++ b/docs/integrations/builtin/credentials/segment.md @@ -6,22 +6,27 @@ contentType: integration # Segment credentials -You can use these credentials to authenticate the following nodes with Segment. +You can use these credentials to authenticate the following nodes: - [Segment](/integrations/builtin/app-nodes/n8n-nodes-base.segment/) ## Prerequisites -Create a [Segment](https://segment.com/) account. +Create a [Segment](https://segment.com/){:target=_blank .external-link} account. -## Using Access Token +## Supported authentication methods -1. Access your Segment Dashboard. -2. Click on Sources, on the left panel. -3. Click on Add Source. -4. Select Node.js. -5. Copy write key. -6. Use session write key for your Segment node credentials in n8n. +- API key -![Getting Segment credentials](/_images/integrations/builtin/credentials/segment/using-access-token.gif) +## Related resources + +Refer to [Segment's Sources documentation](https://segment.com/docs/connections/sources/){:target=_blank .external-link} for more information about the service. + +## Using API key + +To configure this credential, you'll need: + +- A **Write Key**: To get a Write Key, go to **Sources > Add Source**. Add a **Node.js** source and copy that write key to add to your n8n credential. + +Refer to [Locate your Write Key](https://segment.com/docs/connections/find-writekey/){:target=_blank .external-link} for more information. diff --git a/docs/integrations/builtin/credentials/taiga.md b/docs/integrations/builtin/credentials/taiga.md index 06e857c28..361779c72 100644 --- a/docs/integrations/builtin/credentials/taiga.md +++ b/docs/integrations/builtin/credentials/taiga.md @@ -6,18 +6,29 @@ contentType: integration # Taiga credentials -You can use these credentials to authenticate the following nodes with Taiga. +You can use these credentials to authenticate the following nodes: - [Taiga](/integrations/builtin/app-nodes/n8n-nodes-base.taiga/) - [Taiga Trigger](/integrations/builtin/trigger-nodes/n8n-nodes-base.taigatrigger/) ## Prerequisites -Create a [Taiga](https://taiga.io/) account. +Create a [Taiga](https://taiga.io/){:target=_blank .external-link} account. -## Using Username and Password +## Supported authentication methods -Use your username and password with the Taiga node credentials in n8n. +- Basic auth -**Note:** For self-hosted instances, you will have to additionally use your Taiga URL with the Taiga node credentials in n8n. +## Related resources + +Refer to [Taiga's API documentation](https://docs.taiga.io/api.html){:target=_blank .external-link} for more information about the service. + +## Using basic auth + +To configure this credential, you'll need: + +- A **Username**: Enter your username or user email address. Refer to [Normal login](https://docs.taiga.io/api.html#auth-normal-login){:target=_blank .external-link} for more information. +- A **Password**: Enter your password. +- The **Environment**: Choose between **Cloud** or **Self-Hosted**. For **Self-Hosted** instances, you'll also need to add: + - The **URL**: Enter your Taiga URL. diff --git a/docs/integrations/builtin/credentials/tapfiliate.md b/docs/integrations/builtin/credentials/tapfiliate.md index 422481afd..54dd9ae7f 100644 --- a/docs/integrations/builtin/credentials/tapfiliate.md +++ b/docs/integrations/builtin/credentials/tapfiliate.md @@ -6,28 +6,26 @@ contentType: integration # Tapfiliate credentials -You can use these credentials to authenticate the following nodes with Tapfiliate. +You can use these credentials to authenticate the following nodes: - [Tapfiliate](/integrations/builtin/app-nodes/n8n-nodes-base.tapfiliate/) ## Prerequisites -Create a [Tapfiliate](https://tapfiliate.com/) account. +Create a [Tapfiliate](https://tapfiliate.com/){:target=_blank .external-link} account. -## Using API Key +## Supported authentication methods -1. Open your Tapfiliate [dashboard](https://app.tapfiliate.com/dashboard/) page. -2. Click on your avatar on the bottom left of the window. -3. Select 'Profile Settings' from the dropdown list. -4. Scroll down to the ***API Key*** section. -5. Copy the displayed ***API Key***. -6. Enter a name for your credentials in the ***Credentials Name*** field in the 'Tapfiliate API' credentials in n8n. -7. Paste the API key in the ***API Key*** field in the 'Tapfiliate API' credentials in n8n. -8. Click the ***Create*** button to create your credentials in n8n. +- API key -The following video demonstrates the steps mentioned above. +## Related resources -
- -
+Refer to [Tapfiliate's API documentation](https://tapfiliate.com/docs/rest/){:target=_blank .external-link} for more information about the service. +## Using API key + +To configure this credential, you'll need: + +- An **API Key**: Get your API Key from your [**Profile Settings**](https://app.tapfiliate.com/a/profile/){:target=_blank .external-link} **> API Key**. + +Refer to [Your API key](https://support.tapfiliate.com/en/articles/1441950-your-api-key){:target=_blank .external-link} for more information. diff --git a/docs/integrations/builtin/credentials/thehive.md b/docs/integrations/builtin/credentials/thehive.md index ea4bf010d..86be41749 100644 --- a/docs/integrations/builtin/credentials/thehive.md +++ b/docs/integrations/builtin/credentials/thehive.md @@ -6,23 +6,35 @@ contentType: integration # TheHive credentials -You can use these credentials to authenticate the following nodes with TheHive. +You can use these credentials to authenticate the following nodes: - [TheHive](/integrations/builtin/app-nodes/n8n-nodes-base.thehive/) /// note | TheHive and TheHive 5 -n8n provides two nodes for TheHive. Use these credentials with TheHive node, for version 3 or 4 API of the API. If you are using TheHive5 node for version 5 of the API, use [TheHive 5 credentials](/integrations/builtin/credentials/thehive5/). +n8n provides two nodes for TheHive. Use these credentials with TheHive node for TheHive 3 or TheHive 4. If you're using TheHive5 node, use [TheHive 5 credentials](/integrations/builtin/credentials/thehive5/). /// + ## Prerequisites Install [TheHive](https://github.com/TheHive-Project/TheHiveDocs/blob/master/installation/install-guide.md){:target=_blank .external-link} on your server. -## Using API Key +## Supported authentication methods -1. Access your TheHive dashboard. -2. Click on the **Organization** tab in the top right. -3. Click on the **Create API Key** button for the user you want to generate the API Key for. -4. Use this **API Key** and your instance **URL** with your TheHive node credentials in n8n. +- API key -![Getting TheHive credentials](/_images/integrations/builtin/credentials/thehive/using-api.gif) +## Related resources + +Refer to [TheHive 3's API documentation](https://docs.thehive-project.org/thehive/legacy/thehive3/api/){:target=_blank .external-link} and [TheHive 4's API documentation](https://docs.thehive-project.org/thehive/){:target=_blank .external-link} for more information about the services. + +## Using API key + +To configure this credential, you'll need: + +- An **API Key**: Create an API key from **Organization > Create API Key**. Refer to [API Authentication](https://docs.thehive-project.org/thehive/legacy/thehive3/api/authentication/){:target=_blank .external-link} for more information. +- Your **URL**: The URL of your TheHive server. +- An **API Version**: Choose between: + - **TheHive 3 (api v0)** + - **TheHive 4 (api v1)** + - For TheHive 5, use [TheHive 5 credentials](/integrations/builtin/credentials/thehive5/) instead. +- **Ignore SSL Issues**: When turned on, n8n will connect even if SSL certificate validation fails. diff --git a/docs/integrations/builtin/credentials/thehive5.md b/docs/integrations/builtin/credentials/thehive5.md index 1cf38dd14..adcb835de 100644 --- a/docs/integrations/builtin/credentials/thehive5.md +++ b/docs/integrations/builtin/credentials/thehive5.md @@ -4,17 +4,37 @@ description: Documentation for TheHive 5 credentials. Use these credentials to a contentType: integration --- -# TheHive5 credentials +# TheHive 5 credentials -You can use these credentials to authenticate the following nodes with TheHive5. +You can use these credentials to authenticate the following nodes with TheHive 5. - [TheHive 5](/integrations/builtin/app-nodes/n8n-nodes-base.thehive5/) /// note | TheHive and TheHive 5 -n8n provides two nodes for TheHive. Use these credentials with TheHive5 node, for version 5 the API. If you are using TheHive node for version 3 or 4 of the API, use [TheHive credentials](/integrations/builtin/credentials/thehive/). +n8n provides two nodes for TheHive. Use these credentials with TheHive 5 node. If you're using TheHive node for TheHive 3 or TheHive 4, use [TheHive credentials](/integrations/builtin/credentials/thehive/). /// -n8n supports authentication with TheHive using an API key. + +## Prerequisites + +Install [TheHive 5](https://docs.strangebee.com/thehive/download/){:target=_blank .external-link} on your server. + +## Supported authentication methods + +- API key ## Related resources Refer to [TheHive's API documentation](https://docs.strangebee.com/thehive/api-docs/){:target=_blank .external-link} for more information about the service. + +## Using API key + +To configure this credential, you'll need: + +- An **API Key**: Users with `orgAdmin` and `superAdmin` accounts can generate API keys: + - `orgAdmin` account: Go to **Organization > Create API Key** for the user you wish to generate a key for. + - `superAdmin` account: Go to **Users > Create API Key** for the user you wish to generate a key for. + - Refer to [API Authentication](https://docs.strangebee.com/cortex/api/api-guide/?h=api+key#authentication){:target=_blank .external-link} for more information. +- A **URL**: The URL of your TheHive server. +- **Ignore SSL Issues**: When turned on, n8n will connect even if SSL certificate validation fails. + + diff --git a/docs/integrations/builtin/credentials/timescaledb.md b/docs/integrations/builtin/credentials/timescaledb.md index 9e87f59c9..8319abc4b 100644 --- a/docs/integrations/builtin/credentials/timescaledb.md +++ b/docs/integrations/builtin/credentials/timescaledb.md @@ -6,16 +6,37 @@ contentType: integration # TimescaleDB credentials -You can use these credentials to authenticate the following nodes with TimescaleDB. +You can use these credentials to authenticate the following nodes: - [TimescaleDB](/integrations/builtin/app-nodes/n8n-nodes-base.timescaledb/) ## Prerequisites -An available instance of TimescaleDB. +An available instance of [TimescaleDB](https://www.timescale.com/){:target=_blank .external-link}. -## Using Database Connection +## Supported authentication methods -1. Retrieve your TimescaleDB credentials and connection parameters. -2. Use the credentials and connection parameters with your TimescaleDB node credentials in n8n. +- Database connection +## Related resources + +Refer to [Timescale's documentation](https://docs.timescale.com/){:target=_blank .external-link} for more information about the service. + +## Using database connection + +To configure this credential, you'll need: + +- The **Host**: The fully qualified server name or IP address of your TimescaleDB server. +- The **Database**: The name of the database to connect to. +- A **User**: The user name you want to log in with. +- A **Password**: Enter the password for the database user you are connecting to. +- **Ignore SSL Issues**: If turned on, n8n will connect even if SSL certificate validation fails and you won't see the **SSL** selector. +- **SSL**: This setting controls the `ssl-mode` connection string for the connection. Options include: + - **Allow**: Sets the `ssl-mode` parameter to `allow`. First try a non-SSL connection; if that fails, try an SSL connection. + - **Disable**: Sets the `ssl-mode` parameter to `disable`. Only try a non-SSL connection. + - **Require**: Sets the `ssl-mode` parameter to `require`, which is the default for TimescaleDB connection strings. Only try an SSL connection. If a root CA file is present, verify that a trusted certificate authority (CA) issued the server certificate. + - **Verify**: Sets the `ssl-mode` parameter to `verify-ca`. Only try an SSL connection and verify that a trusted certificate authority (CA) issued the server certificate. + - **Verify-Full**: Sets the `ssl-mode` parameter to `verify-full`. Only try an SSL connection, verify that a trusted certificate authority (CA) issued the server certificate and that the requested server host name matches that in the certificate. +- **Port**: The port number of the TimescaleDB server. + +Refer to [Timescale's connection settings documentation](https://docs.timescale.com/use-timescale/latest/integrations/query-admin/qstudio/#connection-settings){:target=_blank .external-link} for more information about the non-SSL fields. Refer to [Connect with a stricter SSL](https://docs.timescale.com/use-timescale/latest/security/strict-ssl/){:target=_blank .external-link} for more information about the SSL options. \ No newline at end of file diff --git a/docs/integrations/builtin/credentials/todoist.md b/docs/integrations/builtin/credentials/todoist.md index 7eb22e461..33ee7eddb 100644 --- a/docs/integrations/builtin/credentials/todoist.md +++ b/docs/integrations/builtin/credentials/todoist.md @@ -6,37 +6,45 @@ contentType: integration # Todoist credentials -You can use these credentials to authenticate the following nodes with Todoist. +You can use these credentials to authenticate the following nodes: - [Todoist](/integrations/builtin/app-nodes/n8n-nodes-base.todoist/) ## Prerequisites -Create a [Todoist](https://todoist.com/) account. +Create a [Todoist](https://todoist.com/){:target=_blank .external-link} account. -## Using OAuth +## Supported authentication methods -/// note | Note for n8n Cloud users -You'll only need to enter the Credentials Name and click on the circle button in the OAuth section to connect your Todoist account to n8n. -/// +- API key +- OAuth2 -1. Access your Todoist [App Management Console](https://developer.todoist.com/appconsole.html) -2. Enter a name in the ***App display name*** field and click on the ***Create app*** button. -3. Copy the ***OAuth Callback URL*** from n8n and paste it in the ***OAuth redirect URL*** field. -4. Click on the ***Save settings*** button. -5. Use the provided ***Client ID*** and ***Client secret*** with your Todoist OAuth2 API credentials in n8n. -6. Click on the circle button in the OAuth section to connect a Todoist account to n8n. -7. Click the ***Save*** button to save your credentials in n8n. +## Related resources -![Getting Todoist OAuth credentials](/_images/integrations/builtin/credentials/todoist/using-oauth.gif) +Refer to [Todoist's REST API documentation](https://developer.todoist.com/rest/v2/#overview){:target=_blank .external-link} for more information about the service. -## Using Access Token +## Using API key -1. Access your Todoist dashboard. -2. Click on the gear icon in the top right. -3. Select Integrations on the left panel. -4. Scroll down to see your API token. -5. Use the API token with your Todoist node credentials in n8n. +To configure this credential, you'll need: -![Getting Todoist credentials](/_images/integrations/builtin/credentials/todoist/using-access-token.gif) +- An **API Key**: Get your personal API token from your [**Integration settings**](https://todoist.com/prefs/integrations){:target=_blank .external-link} and enter it here. + + +## Using OAuth2 + +--8<-- "_snippets/integrations/builtin/credentials/cloud-oauth-button.md" + +To configure this credential from scratch, you'll need: + +- A **Client ID** +- A **Client Secret** + +Get both by creating an application in the Todoist [App Management Console](https://developer.todoist.com/appconsole.html){:target=_blank .external-link}. + +Use these settings for your application: + +- Copy the **OAuth Callback URL** from n8n and add it as the **OAuth redirect URL**. +- Copy the **Client ID** and **Client Secret** from Todoist and add it to n8n. + +Refer to the Todoist [Authorization Guide](https://developer.todoist.com/guides/#authorization){:target=_blank .external-link} for more information. diff --git a/docs/integrations/builtin/credentials/toggl.md b/docs/integrations/builtin/credentials/toggl.md index c4d6836b0..9bdcb0c9d 100644 --- a/docs/integrations/builtin/credentials/toggl.md +++ b/docs/integrations/builtin/credentials/toggl.md @@ -6,15 +6,28 @@ contentType: integration # Toggl credentials -You can use these credentials to authenticate the following nodes with Toggl. +You can use these credentials to authenticate the following nodes: - [Toggl Trigger](/integrations/builtin/trigger-nodes/n8n-nodes-base.toggltrigger/) ## Prerequisites -Create a [Toggl](https://toggl.com/) account. +Create a [Toggl](https://toggl.com/){:target=_blank .external-link} account. -## Using Username and Password +## Supported authentication methods -1. Use your Toggle username and password with your node credentials in n8n. +- Basic auth + +## Related resources + +Refer to [Toggl's API documentation](https://engineering.toggl.com/docs/){:target=_blank .external-link} for more information about the service. + +## Using basic auth + +To configure this credential, you'll need: + +- A **Username**: Enter your user email address. +- A **Password**: Enter your user password. + +Refer to [Authentication](https://engineering.toggl.com/docs/authentication){:target=_blank .external-link} for more information. diff --git a/docs/integrations/builtin/credentials/totp.md b/docs/integrations/builtin/credentials/totp.md index 629d07619..93021fce8 100644 --- a/docs/integrations/builtin/credentials/totp.md +++ b/docs/integrations/builtin/credentials/totp.md @@ -6,10 +6,25 @@ contentType: integration # TOTP credentials -You can use these credentials to authenticate the following nodes with TOTP. +You can use these credentials to authenticate the following nodes: - [TOTP](/integrations/builtin/core-nodes/n8n-nodes-base.totp/) -To use TOTP, you need a **Secret**, which is the secret key encoded in the QR code during authenticator setup, and a **Label**, which is the identifier for the account. +## Prerequisites -Refer to [Google Authenticator | Key URI format](https://github.com/google/google-authenticator/wiki/Key-Uri-Format){:target=_blank .external-link} for more information. +Generate a TOTP **Secret** and **Label**. + +## Supported authentication methods + +- Secret and label + +## Related resources + +Time-based One-time Password (TOTP) is an algorithm that generates a one-time password (OTP) using the current time. Refer to [Google Authenticator | Key URI format](https://github.com/google/google-authenticator/wiki/Key-Uri-Format){:target=_blank .external-link} for more information. + +## Using secret and label + +To configure this credential, you'll need: + +- A **Secret**: The secret key encoded in the QR code during authenticator setup. It's an arbitrary key value encoded in Base32, for example: `BVDRSBXQB2ZEL5HE`. Refer to [Google Authenticator Secret](https://github.com/google/google-authenticator/wiki/Key-Uri-Format#secret){:target=_blank .external-link} for more information. +- A **Label**: The identifier for the account. It contains an account name as a URI-encoded string. You can include prefixes to identify the provider or service managing the account. If you use prefixes, use a literal or url-encoded colon to separate the issuer prefix and the account name, for example: `GitHub:john-doe`. Refer to [Google Authenticator Label](https://github.com/google/google-authenticator/wiki/Key-Uri-Format#label){:target=_blank .external-link} for more information. diff --git a/docs/integrations/builtin/credentials/travisci.md b/docs/integrations/builtin/credentials/travisci.md index 970e0e2d7..35f04af7f 100644 --- a/docs/integrations/builtin/credentials/travisci.md +++ b/docs/integrations/builtin/credentials/travisci.md @@ -6,22 +6,25 @@ contentType: integration # Travis CI credentials -You can use these credentials to authenticate the following nodes with Travis CI. +You can use these credentials to authenticate the following nodes: - [Travis CI](/integrations/builtin/app-nodes/n8n-nodes-base.travisci/) ## Prerequisites -Create a [Travis CI](https://travis-ci.org/) account. +Create a [Travis CI](https://travis-ci.org/){:target=_blank .external-link} account. -## Using Access Token +## Supported authentication methods -1. Open your Travis CI dashboard. -2. Click on the user icon in the top right. -3. Click on 'Settings' in the dropdown list. -4. Click on the ***Settings*** tab on the page. -5. Copy the ***Token*** from the ***API authentication*** section and use it with your Travis API credentials in n8n. -6. Click on the ***Save*** button to save your credentials. +- API token -![Getting Travis CI credentials](/_images/integrations/builtin/credentials/travisci/using-access-token.gif) +## Related resources + +Refer to [Travis CI's API documentation](https://docs.travis-ci.com/user/developer/){:target=_blank .external-link} for more information about the service. + +## Using API token + +To configure this credential, you'll need: + +- An **API Token**: Get your API token from **Account Settings >** [**API Token**](https://packagecloud.io/api_token){:target=_blank .external-link} or generate one through the Travis CI [command line client](https://github.com/travis-ci/travis.rb#installation){:target=_blank .external-link} . diff --git a/docs/integrations/builtin/credentials/trellixepo.md b/docs/integrations/builtin/credentials/trellixepo.md index 6a2fd2dfc..1b294b7df 100644 --- a/docs/integrations/builtin/credentials/trellixepo.md +++ b/docs/integrations/builtin/credentials/trellixepo.md @@ -5,14 +5,27 @@ description: Documentation for the Trellix ePO credentials. Use these credential # Trellix ePO credentials -You can use these credentials to authenticate when using the HTTP Request node to make a [Custom API call](/integrations/custom-operations/). +--8<-- "_snippets/integrations/builtin/credentials/cred-only-statement.md" -## Authentication methods +## Prerequisites -n8n supports username and password authentication for Trellix ePO. +Create a [Trellix ePolicy Orchestrator](https://www.trellix.com/products/epo/){:target=_blank .external-link} account. + +## Supported authentication methods + +- Basic auth ## Related resources Refer to [Trellix ePO's documentation](https://docs.trellix.com/bundle/epolicy-orchestrator-web-api-reference-guide/page/GUID-D87A6839-AED2-47B0-BE93-5BF83F710278.html){:target=_blank .external-link} for more information about the service. This is a credential-only node. Refer to [Custom API operations](/integrations/custom-operations/) to learn more. View [example workflows and related content](https://n8n.io/integrations/trellix-epo/){:target=_blank .external-link} on n8n's website. + +## Using basic auth + +To configure this credential, you'll need: + +- A **Username** to connect as. +- A **Password** for that user account. + +n8n uses These fields to build the `-u` parameter in the format of `-u username:pw`. Refer to [Web API basics](https://docs.trellix.com/bundle/epolicy-orchestrator-web-api-reference-guide/page/GUID-2503B69D-2BCE-4491-9969-041838B39C1F.html){:target=_blank .external-link} for more information. \ No newline at end of file diff --git a/docs/integrations/builtin/credentials/trello.md b/docs/integrations/builtin/credentials/trello.md index 196f16339..593f8d3dd 100644 --- a/docs/integrations/builtin/credentials/trello.md +++ b/docs/integrations/builtin/credentials/trello.md @@ -6,21 +6,29 @@ contentType: integration # Trello credentials -You can use these credentials to authenticate the following nodes with Trello: +You can use these credentials to authenticate the following nodes: - [Trello](/integrations/builtin/app-nodes/n8n-nodes-base.trello/) - [Trello Trigger](/integrations/builtin/trigger-nodes/n8n-nodes-base.trellotrigger/) ## Prerequisites -Create a [Trello](https://trello.com/) account. +- Create a [Trello](https://trello.com/){:target=_blank .external-link} account. +- Create a Trello [Power-Up](https://developer.atlassian.com/cloud/trello/guides/power-ups/managing-power-ups/#adding-a-new-custom-power-up){:target=_blank .external-link}. -## Using an access token +## Supported authentication methods -1. Go to the [Trello API Key ](https://trello.com/app-key){:target_blank .external-link} portal. The page 404s if you're not signed into Trello. -1. Copy your API key at the top. -1. Select **generate a Token** to create your token. When prompted, allow it all the permissions it asks for. ---8<-- "_snippets/integrations/builtin/credentials/open-credential-modal-list.md" -1. Enter the API key and API token. -1. Select **Save**. n8n tests the connection. +- API key +## Related resources + +Refer to [Trello's API documentation](https://developer.atlassian.com/cloud/trello/guides/rest-api/api-introduction/){:target=_blank .external-link} for more information about the service. + +## Using API key + +To configure this credential, you'll need: + +- An **API Key**: Generated from your Power-Up. Refer to [Managing your API key](https://developer.atlassian.com/cloud/trello/guides/rest-api/api-introduction/#managing-your-api-key){:target=_blank .external-link} for more information. +- An **API Token**: Generated from your Power-Up. Refer to [Authentication and Authorization](https://developer.atlassian.com/cloud/trello/guides/rest-api/api-introduction/#authentication-and-authorization){:target=_blank .external-link} for more information. + +Once you've created your Power-Up, open its **API Key** tab and select the option to **Generate a new API key**. With your key generated, select the **Token** option next to it. When prompted, allow it all the permissions it asks for. Copy the Key and Token and add them to your n8n credential. \ No newline at end of file diff --git a/docs/integrations/builtin/credentials/twake.md b/docs/integrations/builtin/credentials/twake.md index f68eb1985..2bb3a6500 100644 --- a/docs/integrations/builtin/credentials/twake.md +++ b/docs/integrations/builtin/credentials/twake.md @@ -6,30 +6,43 @@ contentType: integration # Twake credentials -You can use these credentials to authenticate the following nodes with Twake. +You can use these credentials to authenticate the following nodes: - [Twake](/integrations/builtin/app-nodes/n8n-nodes-base.twake/) ## Prerequisites -Create a [Twake](https://twake.app/) account. +Create a [Twake](https://twake.app/){:target=_blank .external-link} account. -## Using Access Token +## Supported authentication methods -1. Access your [Twake](https://web.twake.app) workspace. -2. Click on ***Main*** in the top left corner. -3. Select 'Workspace settings' from the dropdown list. -4. Select ***Applications and connectors***. -5. Click on the ***Search applications...*** button. -6. Search for `n8n` and click on the ***Display*** button. -7. Click on ***Install*** and select ***Confirm***. -8. Click on ***Configure*** and copy the Workspace Key. -9. Use the Workspace Key with your Twake node credentials in n8n. - -![Getting Twake workspace key](/_images/integrations/builtin/credentials/twake/using-workspace-key.gif) +- Cloud API key +- Server API key ## Related resources Refer to [Twake's documentation](https://doc.twake.app/developers-api/api-reference){:target=_blank .external-link} for more information about the service. -This is a credential-only node. Refer to [Custom API operations](/integrations/custom-operations/) to learn more. View [example workflows and related content](https://n8n.io/integrations/twake/){:target=_blank .external-link} on n8n's website. \ No newline at end of file +## Using Cloud API key + +To configure this credential, you'll need: + +- A **Workspace Key**: Generated when you install the **n8n** application to your Twake Cloud environment and select **Configure**. Refer to [How to connect n8n to Twake](https://help.twake.app/en/latest/applications/connectors/index.html#how-to-connect-n8n-to-twake){:target=_blank .external-link} for more detailed instructions. + +## Using Server API key + +To configure this credential, you'll need: + +- A **Host URL**: The URL of your Twake self-hosted instance. +- A **Public ID**: Generated when you create an app. +- A **Private API Key**: Generated when you create an app. + +To generate your **Public ID** and **Private API Key**, [create a Twake application](https://doc.twake.app/developers-api/get-started/create-your-first-application){:target=_blank .external-link}: + +1. Go to **Workspace Settings > Applications and connectors > Access your applications and connectors > Create an application**. +2. Enter appropriate details. +3. Once you've created your app, view its **API Details**. +4. Copy the **Public identifier** and add it as the n8n **Public ID**. +5. Copy the **Private key** and add it as the n8n **Private API Key**. + +Refer to [API settings](https://doc.twake.app/developers-api/get-started/create-your-first-application#id-3.-api-settings){:target=_blank .external-link} for more information. \ No newline at end of file diff --git a/docs/integrations/builtin/credentials/twilio.md b/docs/integrations/builtin/credentials/twilio.md index 20bb8ea30..e4f077205 100644 --- a/docs/integrations/builtin/credentials/twilio.md +++ b/docs/integrations/builtin/credentials/twilio.md @@ -6,52 +6,53 @@ contentType: integration # Twilio credentials -You can use these credentials to authenticate the following nodes with Twilio. +You can use these credentials to authenticate the following nodes: - [Twilio](/integrations/builtin/app-nodes/n8n-nodes-base.twilio/) - [Twilio trigger](/integrations/builtin/trigger-nodes/n8n-nodes-base.twiliotrigger/) ## Prerequisites -Create a [Twilio](https://twilio.com/) account. +Create a [Twilio](https://twilio.com/){:target=_blank .external-link} account. + +## Supported authentication methods + +- Auth token: Twilio recommends this method for local testing only. +- API key: Twilio recommends this method for production. + +## Related resources + +Refer to [Twilio's API documentation](https://www.twilio.com/docs){:target=_blank .external-link} for more information about the service. ## Using Auth Token -1. Open your Twilio project [dashboard](https://www.twilio.com/console). -2. Copy the displayed Account SID. -3. Enter a name for your credentials in the ***Credentials Name*** field in the 'Twilio API' credentials in n8n. -4. Paste the Account SID in the ***Account SID*** field in the 'Twilio API' credentials in n8n. -5. Copy the Auth Token from the Twilio project dashboard. -6. Paste the Auth Token in the ***Auth Token*** field in the 'Twilio API' credentials in n8n. -7. Click on the ***Create*** button to create the credentials. +To configure this credential, you'll need: -The following video demonstrates the steps mentioned above. +- An **Auth Type**: Select **Auth Token**. +- An **Account SID**: The Account SID acts as a username. Go to **Console Dashboard > Account Info** to view and copy your Account SID. +- An **Auth Token**: The Auth Token acts as a password. Go to **Console Dashboard > Account Info** to view and copy (or change) your Auth Token. -
- -
+Refer to [Auth Tokens and How to Change Them](https://help.twilio.com/articles/223136027-Auth-Tokens-and-How-to-Change-Them){:target=_blank .external-link} for more detailed instructions. -## Using API Key +## Using API key -1. Open your Twilio project [dashboard](https://www.twilio.com/console). -2. Copy the displayed Account SID. -3. Enter a name for your credentials in the ***Credentials Name*** field in the 'Twilio API' credentials in n8n. -4. Select 'API Key' from the ***Auth Type*** dropdown list. -5. Paste the Account SID in the ***Account SID*** field in the 'Twilio API' credentials in n8n. -6. Click on ***Settings*** in the left-sidebar. -7. Select ***API Keys*** under the ***Settings***. -8. Click on the ***Create new API Key*** button. -9. Enter a name in the ***Friendly Name*** field. -10. Click on the ***Create API Key*** button. -11. Copy the displayed SID. -12. Paste the SID in the ***API Key SID*** field in the 'Twilio API' credentials in n8n. -13. Copy the Secret from the Twilio dashboard. -14. Paste the Secret in the ***API Key Secret*** field in the 'Twilio API' credentials in n8n. -15. Click on the ***Create*** button to create the credentials. +To configure this credential, you'll need: -The following video demonstrates the steps mentioned above. +- An **Auth Type**: Select **API Key**. +- An **Account SID**: The Account SID acts as a username. Go to **Console Dashboard > Account Info** to view and copy your Account SID. +- An **API Key SID**: Generated when you create an API key. +- An **API Key Secret**: Generated when you create an API key. -
- -
+To create an API key, go to your **Account > Keys & credentials > API keys & tokens > Create API Key**. Copy the **SID** and **Secret** displayed with the key and enter them in your n8n credential. Refer to [Create an API key](https://www.twilio.com/docs/iam/api-keys#create-an-api-key){:target=_blank .external-link} for more detailed instructions. +### Selecting an API key type + +When you create a Twilio API key, you must select an API key type. The options are: + +* **Main**: This key type gives you the same level of access as using your Account SID and Auth Token in API requests. +* **Standard**: This key type gives you access to all the functionality in Twilio's APIs except the API key resources and Account resources. +* **Restricted**: This key type is in beta. n8n hasn't tested the credential against this key type; if you try it, let us know if you run into any issues. + +The n8n credential works with **Main** and **Standard** key types. + +Refer to [Types of API keys](https://www.twilio.com/docs/iam/api-keys#types-of-api-keys){:target=_blank .external-link} for more information on the key types. diff --git a/docs/integrations/builtin/credentials/twist.md b/docs/integrations/builtin/credentials/twist.md index 89bfbd8c2..cf526f2b2 100644 --- a/docs/integrations/builtin/credentials/twist.md +++ b/docs/integrations/builtin/credentials/twist.md @@ -6,43 +6,47 @@ contentType: integration # Twist credentials -You can use these credentials to authenticate the following nodes with Twist. +You can use these credentials to authenticate the following nodes: - [Twist](/integrations/builtin/app-nodes/n8n-nodes-base.twist/) ## Prerequisites -Create a [Twist](https://twist.com/) account. +- Create a [Twist](https://twist.com/){:target=_blank .external-link} account. +- [Create a general integration](https://twist.com/app_console/create_app){:target=_blank .external-link} and configure a valid OAuth Redirect URL. Refer to [Using OAuth2](#using-oauth2) for more information. -## Using OAuth +## Supported authentication methods -/// note | Callback URL with Twist -**Note:** The Redirect URL should be a URL in your domain. For example, `https://mytemplatemaker.example.com/gr_callback`. Twist doesn't accept the localhost callback URL. Refer to the [FAQs](#how-to-configure-the-oauth-credentials-for-the-local-environment) to learn to configure the credentials for the local environment. -/// +- OAuth2 -1. Access your [Twist](https://twist.com) workspace. -2. Click on your avatar in the top right corner. -3. Select 'Add integrations...' from the dropdown list. -4. Click on ***Build*** on the top. -5. Click on the ***Add a new integration*** button. -6. Enter a name in the ***Integration name*** field. -7. Enter a description in the ***Description*** field. -8. Select 'General integration' from the ***Integration type*** dropdown list. -9. Click on the ***Create my integration*** button. -10. Click on ***OAuth Authentication*** from the left sidebar. -11. Copy the 'OAuth Callback URL' provided in the Twist OAuth2 API credentials in n8n and paste it in the ***OAuth 2 redirect URL*** field on your Twist integration page. -12. Click on the ***Update integration*** button. -13. Use the ***Client ID*** and ***Client Secret*** with your Twist node credentials in n8n. -14. Click on the circle button in the OAuth section to connect a Twist account to n8n. -15. Click the ***Save*** button to save your credentials in n8n. +## Related resources -![Getting Twist credentials](/_images/integrations/builtin/credentials/twist/using-oauth.gif) +Refer to [Twist's API documentation](https://developer.twist.com/v3/#authorization){:target=_blank .external-link} for more information about authenticating with the service. -## FAQs +## Using OAuth2 +To configure this credential, you'll need: -### How to configure the OAuth credentials for the local environment? -Twist doesn't accept the localhost callback URL. However, you can follow the steps mentioned below to configure the OAuth credentials for the local environment: -1. We will use [ngrok](https://ngrok.com/) to expose the local server running on port `5678` to the internet. In your terminal, run the following command: +- A **Client ID**: Generated once you create a general integration. +- A **Client Secret**: Generated once you create a general integration. + +To generate your Client ID and Client Secret, [create a general integration](https://twist.com/app_console/create_app){:target=_blank .external-link}. + +Use these settings for your integration's **OAuth Authentication**: + +- Copy the **OAuth Redirect URL** from n8n and enter it as the **OAuth 2 redirect URL** in Twist. + + /// note | OAuth Redirect URL for self-hosted n8n + Twist doesn't accept a `localhost` Redirect URL. The Redirect URL should be a URL in your domain, for example: `https://mytemplatemaker.example.com/gr_callback`. If your n8n **OAuth Redirect URL** contains localhost, refer below to [Local environment redirect URL](#local-environment-redirect-url) for generating a URL that Twist will allow. + /// + +- Select **Update OAuth settings** to save those changes. +- Copy the **Client ID** and **Client Secret** from Twist and enter them in the appropriate fields in n8n. + +### Local environment redirect URL + +Twist doesn't accept a localhost callback URL. These steps should allow you to configure the OAuth credentials for the local environment: + +1. Use [ngrok](https://ngrok.com/) to expose the local server running on port `5678` to the internet. In your terminal, run the following command: ```sh ngrok http 5678 ``` @@ -50,6 +54,5 @@ ngrok http 5678 ```sh export WEBHOOK_URL= ``` -3. Start your n8n instance. -4. Follow the instructions mentioned in the [Using OAuth](#using-oauth) section to configure your credentials. +3. Use the generated URL as your **OAuth 2 redirect URL** in Twist. diff --git a/docs/integrations/builtin/credentials/twitter.md b/docs/integrations/builtin/credentials/twitter.md index 41f150189..50a108794 100644 --- a/docs/integrations/builtin/credentials/twitter.md +++ b/docs/integrations/builtin/credentials/twitter.md @@ -1,48 +1,87 @@ --- -title: Twitter credentials -description: Documentation for Twitter credentials. Use these credentials to authenticate Twitter in n8n, a workflow automation platform. +title: X credentials +description: Documentation for X credentials. Use these credentials to authenticate X in n8n, a workflow automation platform. contentType: integration --- -# Twitter credentials +# X credentials -You can use these credentials to authenticate the following nodes with Twitter. +You can use these credentials to authenticate the following nodes: -- [Twitter](/integrations/builtin/app-nodes/n8n-nodes-base.twitter/) +- [X](/integrations/builtin/app-nodes/n8n-nodes-base.twitter/) ## Prerequisites -Create a [Twitter developer account](https://developer.twitter.com/). +- Create an [X developer](https://developer.x.com/en){:target=_blank .external-link} account. +- Create a [Twitter app](https://developer.x.com/en/docs/apps){:target=_blank .external-link} or use the default project and app created when you sign up for the developer portal. Refer to each supported authentication method below for more details on the app's configuration. + +## Supported authentication methods + +- OAuth: Listed as OAuth in n8n, this corresponds to X's [OAuth 1.0a](https://developer.x.com/en/docs/authentication/oauth-1-0a){:target=_blank .external-link} authentication method. +- OAuth2 + +## Related resources + +Refer to [X's API documentation](https://developer.x.com/en/docs/twitter-api){:target=_blank .external-link} for more information about the service. Refer to [X's API authentication documentation](https://developer.x.com/en/docs/authentication/overview){:target=_blank .external-link} for more information about authenticating with the service. ## Using OAuth -1. Access the [Twitter Developer](https://developer.twitter.com/en/portal/projects-and-apps) portal. -2. Fill out the questionnaire to gain essential access and click **Next** once done. -![Getting essential access to the Twitter API](/_images/integrations/builtin/credentials/twitter/essential-access.png) -3. Confirm the Developer agreement by checking the box and clicking **Submit** once done. -![The Twitter Developer Agreement](/_images/integrations/builtin/credentials/twitter/developer-agreement.png) -4. Twitter will now send you a confirmation email. Click the **Confirm your email** button in the email. -![Email Validation Email](/_images/integrations/builtin/credentials/twitter/email-validation.png) -5. After confirming your email, you are redirected to the [#Welcome to the Twitter Developer Platform](https://developer.twitter.com/en/portal/register/welcome) page. Enter a name for your Twitter application and click the **Get keys** button. -6. Copy the **API Key**, **API Key Secret** shown on the next page. -![API Keys provided by Twitter](/_images/integrations/builtin/credentials/twitter/api-keys.png) -7. Click the **Skip to dashboard** link at the bottom of the page and click the **Yes, I saved them** button. -8. Click the **Gear button** next to your newly created app to open it's **App settings**. -![The App settings button](/_images/integrations/builtin/credentials/twitter/app-settings-button.png) -9. In the Authentication settings sections, click **Edit**. -10. Turn on the **Enable 3-legged OAuth** switch and paste the URL shown in the **OAuth Redirect URL** of the n8n credentials screen into the **Callback URLs** field of your Twitter apps authentication settings. -11. Enter a valid Website URL in the respective field (for example https://n8n.io). -![The App settings button](/_images/integrations/builtin/credentials/twitter/oauth-settings.png) -12. Save your input by clicking the **Save** button at the bottom of the page. -13. Under App permissions, click **Edit** and choose the appropriate permissions for your app (pick **Read and write and Direct message** if you want to use all functions of the Twitter n8n in n8n) and click **Save** to confirm. -14. In the sidebar on the left, click on the Project your app has been created in (usually **Project 1**) and then on the **Apply for Elevated** button. -15. Fill out the questionnaire and confirm the inputs on each questionnaire page with a click on **Next** (**Submit** on the final page). -![Application process for elevated access to the Twitter API](/_images/integrations/builtin/credentials/twitter/elevated-access.png) -16. Once you receive confirmation that your application has been approved, you're ready to use the n8n Twitter node. -17. In the n8n credentials screen, paste your **API Key** from steps 6 above into the **Consumer Key** field, and your **API Key Secret** into the **Consumer Secret** field. -18. Click **Connect my account** and confirm the connection by clicking **Authorize app**. +--8<-- "_snippets/integrations/builtin/credentials/cloud-oauth-button.md" + +If you need to configure OAuth from scratch, create a [Twitter app](https://developer.x.com/en/docs/apps){:target=_blank .external-link}. + +Use these settings for your app: + +1. In the app's **Keys & tokens > Consumer Keys** section, generate or regenerate your keys. +2. Copy the **API Key** and add it to n8n as the **Consumer Key**. +3. Copy the **API Secret** and add it to n8n as the **Consumer Secret**. +4. In the app's **Settings > User Authentication**, set appropriate **App permissions**. Choose **Read and write and Direct message** if you want to use all functions of the n8n X node. +5. Select a **Type of app**. +6. In **App Info**, copy the n8n **OAuth Redirect URL** and paste it in as the **Callback URI / Redirect URL**. +7. Add a **Website URL**. + +Refer to X's [API Key and Secret documentation](https://developer.x.com/en/docs/authentication/oauth-1-0a/api-key-and-secret) for more information on API Keys and Secrets. Refer to X's [OAuth 1.0a Authentication documentation](https://developer.x.com/en/docs/authentication/oauth-1-0a){:target=_blank .external-link} for more information on working with this authentication method. + +/// note | X rate limits +This credential uses the OAuth 1.0a User Context authentication method, so you'll be subject to user rate limits. Refer to [X rate limits](#x-rate-limits) below for more information. +/// + +## Using OAuth2 + +To configure this credential, you'll need: + +- A **Client ID**: Generated when you configure a Twitter app for OAuth2. +- A **Client Secret**: Generated when you configure a Twitter app for OAuth2. + +To generate your Client ID and Client Secret, create a [Twitter app](https://developer.x.com/en/docs/apps){:target=_blank .external-link}. + +Use these settings for your app: + +1. In the app's **Settings > User Authentication**, set appropriate **App permissions**. Choose **Read and write and Direct message** if you want to use all functions of the n8n X node. +2. Select a **Type of app**. +3. In **App Info**, copy the n8n **OAuth Redirect URL** and paste it in as the **Callback URI / Redirect URL**. +4. Add a **Website URL**. +5. Copy the **Client ID** and **Client Secret** from your Twitter app and enter them into your n8n credential. + +Refer to X's [OAuth 2.0 Authentication documentation](https://developer.x.com/en/docs/authentication/oauth-2-0){:target=_blank .external-link} for more information on working with this authentication method. + +/// note | X rate limits +This credential uses the OAuth 2.0 Bearer Token authentication method, so you'll be subject to app rate limits. Refer to [X rate limits](#x-rate-limits) below for more information. +/// ## Further Reference - [Application-only Authentication](https://developer.twitter.com/en/docs/authentication/oauth-2-0/application-only) +## X rate limits + +X has time-based rate limits per endpoint based on your developer access plan level. X calculates app rate limits and user rate limits independently. Refer to [Rate limits](https://developer.x.com/en/docs/twitter-api/rate-limits){:target=_blank .external-link} for the access plan level rate limits and guidance on avoiding hitting them. + +Use the guidance below for calculating rate limits: + +- If you're [Using OAuth](#using-oauth), user rate limits apply. You'll have one limit per time window for each set of users' access tokens. +- If you're [Using OAuth2](#using-oauth2), app rate limits apply. You'll have a limit per time window for requests made by your app. + +X calculates user rate limits and app rate limits independently. + +Refer to [Rate limits and authentication methods](https://developer.x.com/en/docs/twitter-api/rate-limits#auth){:target=_blank .external-link} for more information about these rate limit types. \ No newline at end of file diff --git a/docs/integrations/builtin/credentials/typeform.md b/docs/integrations/builtin/credentials/typeform.md index 4e0afed14..f74e25064 100644 --- a/docs/integrations/builtin/credentials/typeform.md +++ b/docs/integrations/builtin/credentials/typeform.md @@ -6,44 +6,36 @@ contentType: integration # Typeform credentials -You can use these credentials to authenticate the following nodes with Typeform. +You can use these credentials to authenticate the following nodes: - [Typeform Trigger](/integrations/builtin/trigger-nodes/n8n-nodes-base.typeformtrigger/) ## Prerequisites -Create a [Typeform](https://typeform.com/) account. +Create a [Typeform](https://typeform.com/){:target=_blank .external-link} account. -## Using OAuth +## Supported authentication methods -1. Access your Typeform dashboard. -2. Go to your user profile in the top right. -3. Click on 'Settings' and then click on 'Developer apps' in the sidebar. -4. Click on the ***Register a new app*** button. -5. Copy the 'OAuth Callback URL' provided in the Typeform OAuth2 API credentials in n8n and paste it in the ***Redirect URI(s)*** section in the Typeform app registration page. -6. Enter any other information necessary and click on the ***Register app*** button. -7. Use the displayed ***Client ID*** and ***Client secret*** with your Typeform OAuth2 API credentials in n8n. -8. Click on the circle button in the OAuth section to connect a Typeform account to n8n. -9. Click the ***Save*** button to save your credentials. +- API token +- OAuth2 -![Getting TypeForm OAuth credentials](/_images/integrations/builtin/credentials/typeform/using-oauth.gif) +## Related resources -## Using Access Token +Refer to [Typeform's API documentation](https://www.typeform.com/developers/get-started/){:target=_blank .external-link} for more information about the service. -1. Open the Typeform [dashboard](https://admin.typeform.com). -2. Click on your avatar on the top right and select 'Settings'. -3. Click on ***Personal tokens*** under the ***Profile*** section in the sidebar. -4. Click on the ***Generate a new token*** button. -5. Enter a name in the ***Token name*** field. -6. Click on the ***Generate token*** button. -7. Click on the ***Copy*** button to copy the access token. -9. Enter a name for your credentials in the ***Credentials Name*** field in the 'Typeform API' credentials in n8n. -10. Paste the access token in the ***Access Token*** field in the 'Typeform API' credentials in n8n. -11. Click the ***Create*** button to save your credentials in n8n. +## Using API token -The following video demonstrates the steps mentioned above. +To configure this credential, you'll need: -
- -
+- An **Access Token**: Your personal access token. To get your personal access token, go to your **Account >** [**Personal Tokens**](https://admin.typeform.com/user/tokens){:target=_blank .external-link}. Refer to Typeform's [Personal access token documentation](https://www.typeform.com/developers/get-started/personal-access-token/){:target=_blank .external-link} for more information. +## Using OAuth2 + +To configure this credential, you'll need: + +- A **Client ID**: Generated when you register an app. +- A **Client Secret**: Generated when you register an app. + +To get your Client ID and Client Secret, [create an application in the Typeform Admin panel](https://www.typeform.com/developers/get-started/applications/#1-create-an-application-in-the-typeform-admin-panel){:target=_blank .external-link}. For the **Redirect URI(s)**, copy the **OAuth Redirect URL** from n8n and enter it. + +Enter the app's **Client ID** and **Client Secret** into your n8n credential. Refer to [Find your app's client ID and secret](https://www.typeform.com/developers/get-started/applications/#2-find-your-apps-client-id-and-client-secret){:target=_blank .external-link} for more information. diff --git a/docs/integrations/builtin/credentials/unleashedsoftware.md b/docs/integrations/builtin/credentials/unleashedsoftware.md index 6708ae3c3..96f837a00 100644 --- a/docs/integrations/builtin/credentials/unleashedsoftware.md +++ b/docs/integrations/builtin/credentials/unleashedsoftware.md @@ -6,20 +6,31 @@ contentType: integration # Unleashed Software credentials -You can use these credentials to authenticate the following nodes with Unleashed Software. +You can use these credentials to authenticate the following nodes: - [Unleashed Software](/integrations/builtin/app-nodes/n8n-nodes-base.unleashedsoftware/) ## Prerequisites -Create an [Unleashed Software](https://www.unleashedsoftware.com/) account. +Create an [Unleashed Software](https://www.unleashedsoftware.com/){:target=_blank .external-link} account. -## Using Access Token +## Supported authentication methods -1. Access your Unleashed Software dashboard. -2. Click on ***Integration*** in the left sidebar and select ***Unleashed API Access***. -3. Use the displayed ***API Id*** and ***API Key*** with your Unleashed API credentials in n8n. -4. Click on the ***Save*** button to save your credentials. +- API key -![Getting Unleashed Software credentials](/_images/integrations/builtin/credentials/unleashedsoftware/using-access-token.gif) +## Related resources +Refer to [Unleashed's API documentation](https://apidocs.unleashedsoftware.com/){:target=_blank .external-link} for more information about the service. + +## Using API key + +To configure this credential, you'll need: + +- An **API ID**: Go to **Integrations > Unleashed API Access** to find your **API ID**. +- An **API Key**: Go to **Integrations > Unleashed API Access** to find your **API Key**. + +Refer to [Unleashed API Access](https://support.unleashedsoftware.com/hc/en-us/articles/4402393233689-Unleashed-API-Access){:target=_blank .external-link} for more information. + +/// note | Account owner required +You must log in as an Unleashed account owner to view the API ID and API Key. +/// diff --git a/docs/integrations/builtin/credentials/uplead.md b/docs/integrations/builtin/credentials/uplead.md index a0ed3a0d8..b7f1b46c5 100644 --- a/docs/integrations/builtin/credentials/uplead.md +++ b/docs/integrations/builtin/credentials/uplead.md @@ -6,21 +6,25 @@ contentType: integration # UpLead credentials -You can use these credentials to authenticate the following nodes with UpLead. +You can use these credentials to authenticate the following nodes: - [UpLead](/integrations/builtin/app-nodes/n8n-nodes-base.uplead/) ## Prerequisites -Create an [UpLead](https://uplead.com/) account. +Create an [UpLead](https://uplead.com/){:target=_blank .external-link} account. -## Using Access Token +## Supported authentication methods -1. Access your UpLead dashboard. -2. Click on your name in the bottom left. -3. Click on Profile. -4. Scroll down and click on the *Generate New API Key*. -5. Use the API Key with your UpLead node credentials in n8n. +- API key -![Getting UpLead credentials](/_images/integrations/builtin/credentials/uplead/using-access-token.gif) +## Related resources + +Refer to [UpLead's API documentation](https://docs.uplead.com/#overview){:target=_blank .external-link} for more information about the service. + +## Using API key + +To configure this credential, you'll need: + +- An **API Key**: Go to your **Account > Profiles** to **Generate New API Key**. Refer to [How can I generate an API key?](https://support.uplead.com/en/articles/5621412-how-can-i-generate-an-api-key){:target=_blank .external-link} for more information. diff --git a/docs/integrations/builtin/credentials/uproc.md b/docs/integrations/builtin/credentials/uproc.md index 8b2a51fc7..47fe0e7ad 100644 --- a/docs/integrations/builtin/credentials/uproc.md +++ b/docs/integrations/builtin/credentials/uproc.md @@ -6,20 +6,27 @@ contentType: integration # uProc credentials -You can use these credentials to authenticate the following nodes with uProc. +You can use these credentials to authenticate the following nodes: - [uProc](/integrations/builtin/app-nodes/n8n-nodes-base.uproc/) ## Prerequisites -Create a [uProc](https://uProc.io) account. +Create a [uProc](https://uproc.io){:target=_blank .external-link} account. + +## Supported authentication methods + +- API key + +## Related resources + +Refer to [uProc's API documentation](https://docs.uproc.io/api/){:target=_blank .external-link} for more information about the service. ## Using API Key -1. Access the [uProc dashboard](https://app.uproc.io/#/dashboard). -2. Click on the ***Settings*** tab on the left sidebar. -3. Click on the ***Integrations*** tab. -4. Use the displayed ***Email*** and ***API Key (real)*** with your uProc node credentials in n8n. +To configure this credential, you'll need: + +- An **Email** address: Enter the email address you use to log in to uProc. This is also displayed in **Settings > Integrations > API Credentials**. +- An **API Key**: Go to **Settings > Integrations > API Credentials**. Copy the **API Key (real)** from the **API Credentials** section and enter it in your n8n credential. -![Getting uProc credentials](/_images/integrations/builtin/credentials/uproc/using-api.gif) diff --git a/docs/integrations/builtin/credentials/uptimerobot.md b/docs/integrations/builtin/credentials/uptimerobot.md index 9744e7d1a..c69ebdcb4 100644 --- a/docs/integrations/builtin/credentials/uptimerobot.md +++ b/docs/integrations/builtin/credentials/uptimerobot.md @@ -6,29 +6,34 @@ contentType: integration # UptimeRobot credentials -You can use these credentials to authenticate the following nodes with UptimeRobot. +You can use these credentials to authenticate the following nodes: - [UptimeRobot](/integrations/builtin/app-nodes/n8n-nodes-base.uptimerobot/) ## Prerequisites -Create an [UptimeRobot](https://uptimeRobot.com/) account. +Create an [UptimeRobot](https://uptimerobot.com/){:target=_blank .external-link} account. -## Using API Key +## Supported authentication methods -1. Open your UptimeRobot [dashboard](https://uptimerobot.com/dashboard). -2. Click on ***My Settings*** in the navigation menu. -3. Scroll down to the ***API Settings*** at the bottom. -4. Click on ***Create the main API key*** under the ***Main API Key*** section. -4. Click on ***Create the main API key*** button. -5. Copy the displayed API key. -6. Enter the name for your credentials in the ***Credentials Name*** field in the 'UptimeRobot API' credentials in n8n. -7. Paste the API key in the ***API Key*** field in the 'UptimeRobot API' credentials in n8n. -8. Click on the ***Create*** button to create your credentials. +- API key -The following video demonstrates the steps mentioned above. +## Related resources -
- -
+Refer to [UptimeRobot's API documentation](https://uptimerobot.com/api/){:target=_blank .external-link} for more information about the service. +## Using API key + +To configure this credential, you'll need: + +- An **API Key**: Get your API Key from **My Settings > API Settings**. Create a **Main API Key** and enter this key in your n8n credential. + +### API key types + +UptimeRobot supports three API key types: + +- **Account-specific** (also known as **main**): Pulls data for multiple monitors. +- **Monitor-specific**: Pulls data for a single monitor. +- **Read-only**: Only runs `GET` API calls. + +To complete all of the operations in the UptimeRobot node, use the **Main** or **Account-specific** API key type. Refer to [API authentication](https://uptimerobot.com/api/#auth){:target=_blank .external-link} for more information. diff --git a/docs/integrations/builtin/credentials/urlscanio.md b/docs/integrations/builtin/credentials/urlscanio.md index acf943954..c104a9345 100644 --- a/docs/integrations/builtin/credentials/urlscanio.md +++ b/docs/integrations/builtin/credentials/urlscanio.md @@ -6,26 +6,24 @@ contentType: integration # urlscan.io credentials -You can use these credentials to authenticate the following nodes with UptimeRobot. +You can use these credentials to authenticate the following nodes: - [urlscan.io](/integrations/builtin/app-nodes/n8n-nodes-base.urlscanio/) ## Prerequisites -Create an [urlscan.io](https://urlscan.io/) account. +Create an [urlscan.io](https://urlscan.io/){:target=_blank .external-link} account. + +## Supported authentication methods + +- API key + +## Related resources + +Refer to [urlscan.io's API documentation](https://urlscan.io/docs/api/){:target=_blank .external-link} for more information about the service. ## Using API key -From urlscan.io: - -1. Navigate to your **Settings&API** page. -2. Under the API Keys section click **+ Create new API key**. -3. Enter a description for your new API key as prompted and click **+ Create API key**. -4. Copy the new API key for use in n8n. - -From n8n: - -5. Enter the **API Key** obtained above. -6. Click **Save** to create your credentials. - +To configure this credential, you'll need: +- An **API Key**: Get your API key from **Settings & API > API Keys**. diff --git a/docs/integrations/builtin/credentials/venafitlsprotectcloud.md b/docs/integrations/builtin/credentials/venafitlsprotectcloud.md index e2f95d526..9393be6b8 100644 --- a/docs/integrations/builtin/credentials/venafitlsprotectcloud.md +++ b/docs/integrations/builtin/credentials/venafitlsprotectcloud.md @@ -6,13 +6,26 @@ contentType: integration # Venafi TLS Protect Cloud credentials -You can use these credentials to authenticate the following nodes with Venafi TLS Protect Cloud: +You can use these credentials to authenticate the following nodes: * [Venafi TLS Protect Cloud node](/integrations/builtin/app-nodes/n8n-nodes-base.venafitlsprotectcloud/) * [Venafi TLS Protect Cloud trigger node](/integrations/builtin/trigger-nodes/n8n-nodes-base.venafitlsprotectcloudtrigger/) +## Prerequisites -Follow the Venafi REST API documentation on [Obtaining an API Key](https://docs.venafi.cloud/api/obtaining-api-key/){:target=_blank .external-link}. +Create a Venafi [TLS Protect Cloud](https://venafi.com/tls-protect/){:target=_blank .external-link} account. -Enter the API key in the **Venafi TLS Protect Cloud account** credentials modal. Refer to [Add and edit credentials](/credentials/add-edit-credentials/) for more information on working with credentials in n8n. +## Supported authentication methods +- API key + +## Related resources + +Refer to [Venafi TLS Protect Cloud's API documentation](https://docs.venafi.cloud/api/vaas-rest-api/){:target=_blank .external-link} for more information about the service. + +## Using API key + +To configure this credential, you'll need: + +- A **Region**: Select the region that matches your business needs. Choose **EU** if you're located in the European Union. Otherwise, choose **US**. +- An **API Key**: Go to your **avatar > Preferences > API Keys** to get your API key. You can also use VCert to get your API key. Refer to [Obtaining an API Key](https://docs.venafi.cloud/api/obtaining-api-key/){:target=_blank .external-link} for more information. diff --git a/docs/integrations/builtin/credentials/venafitlsprotectdatacenter.md b/docs/integrations/builtin/credentials/venafitlsprotectdatacenter.md index 2a8df80b6..0857d3367 100644 --- a/docs/integrations/builtin/credentials/venafitlsprotectdatacenter.md +++ b/docs/integrations/builtin/credentials/venafitlsprotectdatacenter.md @@ -6,13 +6,34 @@ contentType: integration # Venafi TLS Protect Datacenter credentials -You can use these credentials to authenticate the following nodes with Venafi TLS Protect Datacenter: +You can use these credentials to authenticate the following nodes: * [Venafi TLS Protect Datacenter node](/integrations/builtin/app-nodes/n8n-nodes-base.venafitlsprotectdatacenter/) +## Prerequisites -Venafi provide a [PDF guide](/_downloads/venafi-tpp.pdf) to getting credentials. Follow the steps in the guide, making a note of the name and client ID you choose. When choosing scopes, make sure you choose the scopes needed for the operations you want to perform within n8n. For example, if you plan to work with certificates, including deleting them, include the **Certificate** scope in your Venafi credentials setup, with the **delete** option enabled. +- Create a Venafi [TLS Protect Datacenter](https://venafi.com/){:target=_blank .external-link} account. +- Set the expiration and refresh time for tokens. Refer to [Setting up token authentication](https://docs.venafi.com/Docs/current/TopNav/Content/SDK/AuthSDK/t-SDKa-Setup-OAuth.php){:target=_blank .external-link} for more information. +- Create an [API integration](https://docs.venafi.com/Docs/current/TopNav/Content/API-ApplicationIntegration/c-APIAppIntegrations-about.php){:target=_blank .external-link} in **API > Integrations**. Refer to [Integrating other systems with Venafi products](https://docs.venafi.com/Docs/current/TopNav/Content/API-ApplicationIntegration/t-APIAppIntegrations-creating.php){:target=_blank .external-link} for detailed instructions. + - Take note of the Client ID for your integration. + - Choose the scopes needed for the operations you want to perform within n8n. Refer to the scopes table in [Integrating other systems with Venafi products](https://docs.venafi.com/Docs/current/TopNav/Content/API-ApplicationIntegration/t-APIAppIntegrations-creating.php){:target=_blank .external-link} for more details on available scopes. -Enter the client ID, your username and password, and your Venafi domain, in the n8n **Venafi TLS Protect Datacenter account** modal. Refer to [Add and edit credentials](/credentials/add-edit-credentials/) for more information on working with credentials in n8n. +## Supported authentication methods + +- API integration + +## Related resources + +Refer to [Venafi's API integration documentation](https://docs.venafi.com/Docs/currentSDK/TopNav/Content/SDK/WebSDK/c-sdk-AboutThisGuide.php){:target=_blank .external-link} for more information about the service. + +## Using API integration + +To configure this credential, you'll need: + +- A **Domain**: Enter your Venafi TLS Protect Datacenter domain. +- A **Client ID**: Enter the **Client ID** from your API integration. Refer to the information and links in [Prerequisites](#prerequisites) for more information on creating an API integration. +- A **Username**: Enter your username. +- A **Password**: Enter your password. +- **Allow Self-Signed Certificates**: If turned on, the credential will allow self-signed certificates. \ No newline at end of file diff --git a/docs/integrations/builtin/credentials/vero.md b/docs/integrations/builtin/credentials/vero.md index 058a652c6..2f3cf3bdd 100644 --- a/docs/integrations/builtin/credentials/vero.md +++ b/docs/integrations/builtin/credentials/vero.md @@ -1,25 +1,30 @@ --- -title: VERO credentials -description: Documentation for VERO credentials. Use these credentials to authenticate VERO in n8n, a workflow automation platform. +title: Vero credentials +description: Documentation for Vero credentials. Use these credentials to authenticate Vero in n8n, a workflow automation platform. contentType: integration --- -# VERO credentials +# Vero credentials -You can use these credentials to authenticate the following nodes with Vero. +You can use these credentials to authenticate the following nodes: -- [VERO](/integrations/builtin/app-nodes/n8n-nodes-base.vero/) +- [Vero](/integrations/builtin/app-nodes/n8n-nodes-base.vero/) ## Prerequisites -Create a [VERO](https://getvero.com/) account. +Create a [Vero](https://getvero.com/){:target=_blank .external-link} account. -## Using Access Token +## Supported authentication methods -1. Access your VERO dashboard. -2. Click on the cog icon in the bottom left. -3. Scroll down to see your Auth token. -4. Use the auth token with your VERO node credentials in n8n. +- API auth token -![Getting VERO credentials](/_images/integrations/builtin/credentials/vero/using-access-token.gif) +## Related resources + +Refer to [Vero's API documentation](https://developers.getvero.com/track-api-reference/#/){:target=_blank .external-link} for more information about the service. + +## Using API auth token + +To configure this credential, you'll need: + +- An **Auth Token**: Get your auth token from your Vero account [settings](https://app.getvero.com/settings/project){:target=_blank .external-link}. Refer to [API authentication](https://developers.getvero.com/track-api-reference/#/#authentication){:target=_blank .external-link} for more information. diff --git a/docs/integrations/builtin/credentials/virustotal.md b/docs/integrations/builtin/credentials/virustotal.md index 6da5d2523..5becce866 100644 --- a/docs/integrations/builtin/credentials/virustotal.md +++ b/docs/integrations/builtin/credentials/virustotal.md @@ -5,15 +5,25 @@ description: Documentation for the VirusTotal credentials. Use these credentials # VirusTotal credentials -You can use these credentials to authenticate when using the HTTP Request node to make a [Custom API call](/integrations/custom-operations/). +--8<-- "_snippets/integrations/builtin/credentials/cred-only-statement.md" -## Authentication methods +## Prerequisites -VirusTotal uses an API key to authenticate. +Create a [VirusTotal](https://www.virustotal.com){:target=_blank .external-link} account. + +## Supported authentication methods + +- API key ## Related resources -Refer to [VirusTotal's documentation](https://developers.virustotal.com/reference/authentication){:target=_blank .external-link} for more information about the service. - +Refer to [VirusTotal's documentation](https://docs.virustotal.com/reference/overview){:target=_blank .external-link} for more information about the service. This is a credential-only node. Refer to [Custom API operations](/integrations/custom-operations/) to learn more. View [example workflows and related content](https://n8n.io/integrations/virustotal/){:target=_blank .external-link} on n8n's website. + + +## Using API key + +To configure this credential, you'll need: + +- An **API Token**: Go to your **user account menu > API key** to get your API key. Enter this as the **API Token** in your n8n credential. Refer to [API authentication](https://docs.virustotal.com/reference/authentication){:target=_blank .external-link} for more information. diff --git a/docs/integrations/builtin/credentials/vonage.md b/docs/integrations/builtin/credentials/vonage.md index 05ba42acc..d07f427d3 100644 --- a/docs/integrations/builtin/credentials/vonage.md +++ b/docs/integrations/builtin/credentials/vonage.md @@ -6,19 +6,28 @@ contentType: integration # Vonage credentials -You can use these credentials to authenticate the following nodes with Vonage. +You can use these credentials to authenticate the following nodes: - [Vonage](/integrations/builtin/app-nodes/n8n-nodes-base.vonage/) ## Prerequisites -Create a [Vonage](https://vonage.com) account. +Create a [Vonage developer](https://developer.vonage.com){:target=_blank .external-link} account. -## Using API Key +## Supported authentication methods -1. Access the [Vonage API dashboard](https://dashboard.nexmo.com/). -2. Copy the ***API key*** and the ***API Secret*** from the dashboard. -3. Use this ***API Key*** and ***API Secret*** with your Vonage node credentials in n8n. +- API key -![Getting Vonage credentials](/_images/integrations/builtin/credentials/vonage/using-api.gif) +## Related resources + +Refer to [Vonage's SMS API documentation](https://developer.vonage.com/en/api/sms){:target=_blank .external-link} for more information about the service. + +## Using API key + +To configure this credential, you'll need: + +- An **API Key** +- An **API Secret** + +Get your **API Key** and **API Secret** from your [developer dashboard](https://dashboard.nexmo.com/){:target=_blank .external-link} **user account > Settings > API Settings**. Refer to [Retrieve your account information](https://developer.vonage.com/en/account/guides/dashboard-management#retrieve-your-account-information){:target=_blank .external-link} for more information. diff --git a/docs/integrations/builtin/credentials/webflow.md b/docs/integrations/builtin/credentials/webflow.md index 170cd4edc..978807d2e 100644 --- a/docs/integrations/builtin/credentials/webflow.md +++ b/docs/integrations/builtin/credentials/webflow.md @@ -6,46 +6,41 @@ contentType: integration # Webflow credentials -You can use these credentials to authenticate the following nodes with Webflow: +You can use these credentials to authenticate the following nodes: - [Webflow](/integrations/builtin/app-nodes/n8n-nodes-base.webflow/) - [Webflow Trigger](/integrations/builtin/trigger-nodes/n8n-nodes-base.webflowtrigger/) ## Prerequisites -Create a [Webflow](https://webflow.com/){:target=_blank .external-link} account. +- Create a [Webflow](https://webflow.com/){:target=_blank .external-link} account. +- [Create a site](https://developers.webflow.com/data/v1.0.0/docs/access-token#1-create-a-new-site){:target=_blank .external-link}: Required for API access token authentication only. -## Using OAuth +## Supported authentication methods -/// note | Note for n8n Cloud users -Enter the credential name, then select **Connect my account** circle button in the OAuth section to connect your Webflow account to n8n automatically. -/// +- API access token +- OAuth2 -1. In your Webflow dashboard, select **Account**. -1. Select **Workspaces** from the dropdown list. -1. Select the **Integrations** tab. -1. In the **Workspace apps** section, select **+ Refister New App**. -1. Enter the name of your application in the **Application Name** field. -1. Enter the description of your application in the **Application Description** field. -1. Copy the **OAuth callback URL** from the **Webflow OAuth2 API** credentials in n8n and paste it in the **Redirect URI** field in the Webflow integrations page. -1. Enter the homepage URL of your application in the **Application Homepage** field. -1. Select **Create** -1. Select **View Details** to get the **Client Id** and **Client Secret***. -1. Use these credentials with your Webflow OAuth2 API credentials in n8n. -1. Select **Connect my account** to test your connection. -1. Select **Save** to save your credentials. +## Related resources -![Getting Webflow OAuth credentials](/_images/integrations/builtin/credentials/webflow/using-oauth.gif) +Refer to [Webflow's API documentation](https://developers.webflow.com/data/reference/rest-introduction){:target=_blank .external-link} for more information about the service. -## Using Access Token +## Using API access token -1. Access your Webflow dashboard. -2. Select your desired project. -3. Select the W icon in the top left. -4. Select **Project Settings**. -5. Select the **Integrations** tab. -6. Scroll down and select **Generate API token**. -7. Use the API token with your Webflow node credentials in n8n. +To configure this credential, you'll need: -![Getting Webflow credentials](/_images/integrations/builtin/credentials/webflow/using-access-token.gif) +- A Site **Access Token**: Access tokens are site-specific. Go to your site's **Project Settings > Integrations > API Access** and select **Generate API token**. Refer to [Generate an API token](https://developers.webflow.com/data/v1.0.0/docs/access-token#2-generate-an-api-token){:target=_blank .external-link} for more information. + +## Using OAuth2 + +--8<-- "_snippets/integrations/builtin/credentials/cloud-oauth-button.md" + +If you need to configure OAuth2 from scratch, [register an application](https://developers.webflow.com/data/v1.0.0/docs/oauth#app-registration){:target=_blank .external-link} in your workspace. + +Use these settings for your application: + +- Copy the **OAuth callback URL** from n8n and add it as a **Redirect URI** in your application. +- Once you've created your application, copy the **Client ID** and **Client Secret** and enter them in your n8n credential. + +Refer to [OAuth 2.0](https://developers.webflow.com/data/v1.0.0/docs/oauth){:target=_blank .external-link} for more information on Webflow's OAuth web flow. diff --git a/docs/integrations/builtin/credentials/wekan.md b/docs/integrations/builtin/credentials/wekan.md index c7b177520..b3a9626ac 100644 --- a/docs/integrations/builtin/credentials/wekan.md +++ b/docs/integrations/builtin/credentials/wekan.md @@ -6,7 +6,7 @@ contentType: integration # WeKan credentials -You can use these credentials to authenticate the following nodes with WeKan. +You can use these credentials to authenticate the following nodes: - [WeKan](/integrations/builtin/app-nodes/n8n-nodes-base.wekan/) @@ -14,7 +14,19 @@ You can use these credentials to authenticate the following nodes with WeKan. Install [WeKan](https://github.com/wekan/wekan/wiki) on your server. -## Using API Key +## Supported authentication methods -1. Use the WeKan username, password, and URL with your WeKan node credentials in n8n. +- Basic auth + +## Related resources + +Refer to [Wekan's API documentation](https://github.com/wekan/wekan/wiki/REST-API){:target=_blank .external-link} for more information about authenticating with the service. + +## Using basic auth + +To configure this credential, you'll need: + +- A **Username**: Enter your Wekan username. +- A **Password**: Enter your Wekan password. +- A **URL**: Enter your Wekan domain. diff --git a/docs/integrations/builtin/credentials/wise.md b/docs/integrations/builtin/credentials/wise.md index 51625d916..c01a3d686 100644 --- a/docs/integrations/builtin/credentials/wise.md +++ b/docs/integrations/builtin/credentials/wise.md @@ -6,61 +6,53 @@ contentType: integration # Wise credentials -You can use these credentials to authenticate the following nodes with Wise. +You can use these credentials to authenticate the following nodes: - [Wise](/integrations/builtin/app-nodes/n8n-nodes-base.wise/) - [Wise Trigger](/integrations/builtin/trigger-nodes/n8n-nodes-base.wisetrigger/) ## Prerequisites -Create a [Wise](https://wise.com/) account. +Create a [Wise](https://wise.com/){:target=_blank .external-link} account. -## Using API Token +## Supported authentication methods -1. Open your Wise [dashboard](https://wise.com/user/account/). -2. Click on the username on the top right and select 'Settings' from the dropdown list. -3. Scroll down to the bottom and click on ***API tokens***. -4. Click on the ***Add new token*** button. -5. Enter a name in the ***Name or description*** field. -6. Click on the ***Create token*** button. -7. Scroll down to the bottom and click on ***API tokens***. -8. Click on ***Reveal key*** to reveal the newly generated API key. -9. Enter your Wise account password in the ***Please enter your password*** field. -10. Copy the displayed API key. -11. Enter the name for your credentials in the ***Credentials Name*** field in the 'Wise API' credentials in n8n. -12. Paste the API key in the ***API Token*** field in the 'Wise API' credentials in n8n. -13. If you're using a Wise sandbox account, select 'Test' from the ***Environment*** dropdown list in the 'Wise API' credentials in n8n. -14. Click on the ***Create*** button to create your credentials. +- API token -The following video demonstrates the steps mentioned above. +## Related resources -
- -
+Refer to [Wise's API documentation](https://docs.wise.com/api-docs/api-reference){:target=_blank .external-link} for more information about the service. +## Using API token -## Personal Token SCA +To configure this credential, you'll need: -When making a request to an SCA (strong customer authentication) protected endpoint, Wise returns a 403 Forbidden HTTP status code. -SCA is required on some operations. Refer to [Wise documentation | Strong Customer Authentication & 2FA](https://docs.wise.com/api-docs/features/strong-customer-authentication-2fa){:target=_blank .external-link} for details. It is disabled when using test endpoints. +- An **API Token**: Go to your **user menu > Settings > API tokens** to generate an API token. Enter the generated API key in your n8n credential. Refer to [Getting started with the API](https://wise.com/help/articles/2958107/getting-started-with-the-api){:target=_blank .external-link} for more information. +- Your **Environment**: Select the environment that best matches your Wise account environment. + - If you're using a Wise test sandbox account, select **Test**. + - Otherwise, select **Live**. +- **Private Key (Optional)**: For live endpoints requiring Strong Customer Authentication (SCA), generate a public and private key. Enter the private key here. Refer to [Add a private key](#add-a-private-key) for more information. + - If you're using a **Test** environment, you'll only need to enter a Private Key if you've enabled Strong Customer Authentication on the [public keys management page](https://sandbox.transferwise.tech/public-keys){:target=_blank .external-link}. -If SCA is required, Wise returns an error similar to below: +## Add a private key + +Wise protects some live endpoints and operations with Strong Customer Authentication (SCA). Refer to [Strong Customer Authentication & 2FA](https://docs.wise.com/api-docs/features/strong-customer-authentication-2fa){:target=_blank .external-link} for details. + +If you make a request to an endpoint that requires SCA, Wise returns a 403 Forbidden HTTP status code. The error returned will look like this: > This request requires Strong Customer Authentication (SCA). Please add a key pair to your account and n8n credentials. See https://api-docs.transferwise.com/#strong-customer-authentication-personal-token +To use endpoints requiring SCA, generate an RSA key pair and add the relevant key information to both Wise and n8n: -To enable signing a token you need to create and add a public and private key. Add the public key to Wise in user [profile settings](https://wise.com/settings/public-keys){:target=_blank .external-link}. +1. Generate an RSA key pair: -To generate an RSA key pair: - -```sh -$ openssl genrsa -out private.pem 2048 -$ openssl rsa -pubout -in private.pem -out public.pem -``` -With the generated keys, add them to n8n and Wise: - -- Add the content of the public key `public.pem` to your Wise user [profile settings](https://wise.com/settings/public-keys){:target=_blank .external-link}. -- Add the content of the private key `private.pem` to your n8n Wise Credential under **Private Key (Optional)**. + ```sh + $ openssl genrsa -out private.pem 2048 + $ openssl rsa -pubout -in private.pem -out public.pem + ``` +2. Add the content of the public key `public.pem` to your Wise **user menu > Settings > API tokens > Manage public keys**. +3. Add the content of the private key `private.pem` in n8n to the **Private Key (Optional)**. +Refer to [Personal Token SCA](https://docs.wise.com/api-docs/features/strong-customer-authentication-2fa/personal-token-sca){:target=_blank .external-link} for more information. diff --git a/docs/integrations/builtin/credentials/wolframalpha.md b/docs/integrations/builtin/credentials/wolframalpha.md index a470a45f6..c2d1b9b1b 100644 --- a/docs/integrations/builtin/credentials/wolframalpha.md +++ b/docs/integrations/builtin/credentials/wolframalpha.md @@ -11,10 +11,29 @@ You can use these credentials to authenticate the following nodes: ## Prerequisites -You need an App ID. +- Register a [Wolfram ID](https://account.wolfram.com){:target=_blank .external-link} and verify your email address for your Wolfram ID. +- Sign in to the [Wolfram|Alpha Developer Portal](https://developer.wolframalpha.com){:target=_blank .external-link}. + +## Supported authentication methods + +- API key ## Related resources -Refer to [Wolfram|Alpha's documentation](https://products.wolframalpha.com/api){:target=_blank .external-link} for more information about the service. +Refer to [Wolfram|Alpha's Simple API documentation](https://products.wolframalpha.com/simple-api/documentation){:target=_blank .external-link} for more information about the service. --8<-- "_snippets/integrations/builtin/cluster-nodes/langchain-overview-link.md" + +## Using API key + +To configure this credential, you'll need: + +- An **App ID**: To get an App ID, open the Developer Portal and go to [**API Access**](https://developer.wolframalpha.com/access){:target=_blank .external-link}. Select **Get an App ID** to register an application and get an App ID. Select **Simple API** as the **API**. Copy the generated **App ID** and add it to your n8n credential. + +## Resolve Forbidden connection error + +If you enter your App ID and get an error that the credential is **Forbidden**, make sure that you have verified your email address for your Wolfram ID. + +Go to your [Wolfram ID Details](https://account.wolfram.com/wolframid){:target=_blank .external-link} and select the link near your email address to send a verification email. You must open the link in that email to verify your email address. + +It may take several minutes for the verification to populate to the API, but once it does, retrying the n8n credential should succeed. \ No newline at end of file diff --git a/docs/integrations/builtin/credentials/woocommerce.md b/docs/integrations/builtin/credentials/woocommerce.md index 4231fd6e0..1c7308555 100644 --- a/docs/integrations/builtin/credentials/woocommerce.md +++ b/docs/integrations/builtin/credentials/woocommerce.md @@ -6,26 +6,39 @@ contentType: integration # WooCommerce credentials -You can use these credentials to authenticate the following nodes with WooCommerce. +You can use these credentials to authenticate the following nodes: - [WooCommerce](/integrations/builtin/app-nodes/n8n-nodes-base.woocommerce/) - [WooCommerce Trigger](/integrations/builtin/trigger-nodes/n8n-nodes-base.woocommercetrigger/) ## Prerequisites -Install the [WooCommerce](https://woocommerce.com/) plugin on your WordPress website. +- Install the [WooCommerce](https://woocommerce.com/){:target=_blank .external-link} plugin on your WordPress website. +- In WordPress, go to **Settings > Permalinks** and set your WordPress permalinks to use something other than **Plain**. -## Using Access Token +## Supported authentication methods -1. Access your WordPress dashboard. -2. Select 'Settings' from the ***WooCommerce*** dropdown list. -3. Click on the ***Advanced*** tab. -4. Click on ***REST API***. -5. Click on the ***Create an API Key*** button. -6. Enter the necessary details. -7. Select 'Read/Write' from the ***Permissions*** dropdown list. -8. Click on the ***Generate API Key*** button. -9. Use your WooCommerce website URL, Consumer key & Consumer secret with your WooCommerce node credentials in n8n. +- API key -![Getting WooCommerce credentials](/_images/integrations/builtin/credentials/woocommerce/using-access-token.gif) +## Related resources + +Refer to [WooCommerce's REST API documentation](https://developer.woocommerce.com/docs/getting-started-with-the-woocommerce-rest-api/){:target=_blank .external-link} for more information about the service. + +## Using API key + +To configure this credential, you'll need: + +- A **Consumer Key**: Created when you generate an API key. +- A **Consumer Secret**: Created when you generate an API key. +- A **WooCommerce URL**: Enter your WordPress site URL. +- **Include Credentials in Query**: If turned on, n8n includes your credentials as query string parameters instead of in the Authorization header. + - Some servers may not parse the Authorization header and will display a "Consumer key is missing" error when authenticating over SSL. If you run into this error, turn this setting on to provide the consumer key/secret as query string parameters instead. + +To generate an API key: + +1. Go to **WooCommerce > Settings > Advanced > Rest API > Add key**. +2. Select **Read/Write** from the **Permissions** dropdown. +3. Copy the generated **Consumer Key** and **Consumer Secret** and enter them into your n8n credentials. + +Refer to [Generate Keys](https://developer.woocommerce.com/docs/getting-started-with-the-woocommerce-rest-api/#3-generate-keys){:target=_blank .external-link} for more information. diff --git a/docs/integrations/builtin/credentials/wordpress.md b/docs/integrations/builtin/credentials/wordpress.md index b171adf76..2ee6fe1a9 100644 --- a/docs/integrations/builtin/credentials/wordpress.md +++ b/docs/integrations/builtin/credentials/wordpress.md @@ -6,24 +6,28 @@ contentType: integration # WordPress credentials -You can use these credentials to authenticate the following nodes with WordPress. +You can use these credentials to authenticate the following nodes: - [WordPress](/integrations/builtin/app-nodes/n8n-nodes-base.wordpress/) ## Prerequisites - Create a [WordPress](https://wordpress.com/){:target=_blank .external-link} account or deploy WordPress on a server. +- [Enable two-factor authentication](https://wordpress.com/support/security/two-step-authentication/){:target=_blank .external-link} for your WordPress user account. (Required to create an app password.) -## Using Username and Password +## Supported authentication methods -1. Log in to your WordPress dashboard. -2. Select your profile image, then select **Profile**. -3. Scroll down to the **Application Password** section. -4. Enter an application name in the **New Application Password Name** field. -5. Select **Add New Application Password**. -6. Copy the displayed application password. -7. Enter your WordPress username in the **Username** field in the 'WordPress API' credentials in n8n. -8. Paste the application password in the **Password** field in the 'WordPress API' credentials in n8n. -9. Enter your WordPress website URL in the **WordPress URL** field in the 'WordPress API' credentials in n8n. -10. Select **Save** to save the credentials. +- Basic auth +## Related resources + +Refer to [WordPress's API documentation](https://developer.wordpress.com/docs/api/){:target=_blank .external-link} for more information about the service. + +## Using basic auth + +To configure this credential, you'll need: + +- A **Username**: Enter your WordPress username. +- A **Password**: Do not enter your WordPress password. Instead, go to your **Profile > Security > Application Passwords** and add a new application password for n8n. Copy that password and enter it in your n8n credential. Refer to [Add a New Application Password](https://wordpress.com/support/security/two-step-authentication/application-specific-passwords/#add-a-new-application-password){:target=_blank .external-link} for more information. +- Your **WordPress URL**: Enter your WordPress site's URL. +- **Ignore SSL Issues**: When turned on, n8n will connect even if SSL certificate validation fails. diff --git a/docs/integrations/builtin/credentials/workable.md b/docs/integrations/builtin/credentials/workable.md index 8b3a20edb..c1671520b 100644 --- a/docs/integrations/builtin/credentials/workable.md +++ b/docs/integrations/builtin/credentials/workable.md @@ -12,15 +12,27 @@ You can use these credentials to authenticate the following nodes: ## Prerequisites -Create a [Workable](https://www.workable.com/) account. +Create a [Workable](https://www.workable.com/){:target=_blank .external-link} account. -## Using API Key +## Supported authentication methods -1. Log in to [Workable](https://www.workable.com/). -2. Click on the avatar on the top-right and select **Settings**, then **[Integrations](https://workable.com/backend/settings/integrations)**. -3. Scroll down to **Access Token** and click **Generate new token**. -4. Copy the newly generated token. -6. Paste the token in the **Access Token** field of the **Workable API** credentials screen in n8n. -7. Add the part between `https://` and `.workable.com` of your Workable subdomain in the Subdomain field of the n8n credentials screen. -8. Click the **Save** button to save your credentials in n8n. +- API key +## Related resources + +Refer to [Workable's API documentation](https://workable.readme.io/reference/generate-an-access-token){:target=_blank .external-link} for more information about the service. + +## Using API key + +To configure this credential, you'll need: + +- A **Subdomain**: Your Workable subdomain is the part of your Workable domain between `https://` and `.workable.com`. So if the full domain is `https://n8n.workable.com`, the subdomain is `n8n`. The subdomain is also displayed on your Workable **Company Profile** page. +- An **Access Token**: Go to your **profile >** [**Integrations**](https://workable.com/backend/settings/integrations){:target=_blank .external-link} **> Apps** and select **Generate API token**. Refer to [Generate a new token](https://help.workable.com/hc/en-us/articles/115015785428-Generating-revoking-access-tokens-for-Workable-s-API#Generateanewtoken) for more information. + + + /// note | Token scopes + If you're using this credential with the [Workable Trigger](/integrations/builtin/trigger-nodes/n8n-nodes-base.workabletrigger/) node, select the `r_candidates` and `r_jobs` scopes when you generate your token. If you're using this credential in other ways, select scopes that are relevant for your use case. + + Refer to [Supported API scopes](https://help.workable.com/hc/en-us/articles/115015785428-Generating-revoking-access-tokens-for-Workable-s-API#SupportedAPIscopes){:target=_blank .external-link} for more information on scopes. + /// + diff --git a/docs/integrations/builtin/credentials/wufoo.md b/docs/integrations/builtin/credentials/wufoo.md index 7e0eead6c..2b6c46909 100644 --- a/docs/integrations/builtin/credentials/wufoo.md +++ b/docs/integrations/builtin/credentials/wufoo.md @@ -6,22 +6,26 @@ contentType: integration # Wufoo credentials -You can use these credentials to authenticate the following nodes with Wufoo. +You can use these credentials to authenticate the following nodes: - [Wufoo Trigger](/integrations/builtin/trigger-nodes/n8n-nodes-base.wufootrigger/) ## Prerequisites -Create a [Wufoo](https://wufoo.com) account. +Create a [Wufoo](https://wufoo.com){:target=_blank .external-link} account. -## Using API Key +## Supported authentication methods -1. Access the [Wufoo Form Manager](https://app.wufoo.com/#/form-manager). -2. To the right of the form, click on ***...*** and select ***API Information*** from the dropdown list. -3. Copy the ***API Key***. -4. Click on ***Account*** from the top right corner and select 'My Account' from the dropdown list. -5. Copy the ***Subdomain***. -6. Use this ***API Key*** and ***Subdomain*** with your Wufoo Trigger node credentials in n8n. +- API key -![Getting Wufoo credentials](/_images/integrations/builtin/credentials/wufoo/using-api-key.gif) +## Related resources + +Refer to [Wufoo's API documentation](https://wufoo.github.io/docs/){:target=_blank .external-link} for more information about the service. + +## Using API key + +To configure this credential, you'll need: + +- An **API Key**: Get your API key from the [Wufoo Form Manager](https://app.wufoo.com/#/form-manager){:target=_blank .external-link}. To the right of a form, select **More > API Information**. Refer to [Using API Information and Webhooks](https://help.surveymonkey.com/en/wufoo/integrations/wufoo-api/){:target=_blank .external-link} for more information. +- A **Subdomain**: Your subdomain is the part of your Wufoo URL that comes after `https://` and before `wufoo.com`. So if the full domain is `https://n8n.wufoo.com`, the subdomain is `n8n`. Admins can view the subdomain in the [**Account Manager**](https://help.surveymonkey.com/en/wufoo/account-manager){:target=_blank .external-link}. Refer to [Your Subdomain](https://help.surveymonkey.com/en/wufoo/account/your-subdomain/){:target=_blank .external-link} for more information. diff --git a/docs/integrations/builtin/credentials/xata.md b/docs/integrations/builtin/credentials/xata.md index b8a191d83..e52b6e10f 100644 --- a/docs/integrations/builtin/credentials/xata.md +++ b/docs/integrations/builtin/credentials/xata.md @@ -11,10 +11,26 @@ You can use these credentials to authenticate the following nodes: ## Prerequisites -You need your database endpoint, branch, and API key. +Create a [Xata](https://xata.io/){:target=_blank .external-link} database or an account on an existing database. + +## Supported authentication methods + +- API key ## Related resources Refer to [Xata's documentation](https://xata.io/docs/rest-api/authentication){:target=_blank .external-link} for more information about the service. --8<-- "_snippets/integrations/builtin/cluster-nodes/langchain-overview-link.md" + +## Using API key + +To configure this credential, you'll need: + +- The **Database Endpoint**: The Workspace API requires that you identify the database you're requesting information from using this format: `https://{workspace-display-name}-{workspace-id}.{region}.xata.sh/db/{dbname}`. Refer to [Workspace API](https://xata.io/docs/rest-api#workspace-api){:target=_blank .external-link} for more information. + - `{workspace-display-name}`: The workspace display name is an optional identifier you can include in your Database Endpoint. The API ignores it, but including it can make it easier to figure out which workspace this database is in if you're saving multiple credentials. + - `{workspace-id}`: The unique ID of the workspace, 6 alphanumeric characters. + - `{region}`: The hosting region for the database. This value must match the database region configuration. + - `{dbname}`: The name of the database you're interacting with. +- A **Branch**: Enter the name of the GitHub branch for your database. +- An **API Key**: To generate an API key, go to [**Account Settings**](https://app.xata.io/settings){:target=_blank .external-link} and select **+ Add a key**. Refer to [Generate an API Key](https://xata.io/docs/rest-api#generate-an-api-key){:target=_blank .external-link} for more information. \ No newline at end of file diff --git a/docs/integrations/builtin/credentials/xero.md b/docs/integrations/builtin/credentials/xero.md index a6167ca82..4605acaa1 100644 --- a/docs/integrations/builtin/credentials/xero.md +++ b/docs/integrations/builtin/credentials/xero.md @@ -6,7 +6,7 @@ contentType: integration # Xero credentials -You can use these credentials to authenticate the following nodes with Xero. +You can use these credentials to authenticate the following nodes: - [Xero](/integrations/builtin/app-nodes/n8n-nodes-base.xero/) @@ -14,14 +14,28 @@ You can use these credentials to authenticate the following nodes with Xero. Create a [Xero](https://www.xero.com/){:target=_blank .external-link} account. -## Using OAuth +## Supported authentication methods -1. Go to the [apps page](https://developer.xero.com/myapps) in the Xero developer portal. -2. Select **New app**. -3. Make sure **Web app** is selected. -4. Copy the **OAuth Callback URL** provided in the Xero OAuth API credentials in n8n and paste it into **OAuth 2.0 redirect URI** in the Xero app creation page. -5. Select **Create app**. -6. Select **Generate a secret** and use the **Client ID** and the **Client secret** with your Xero OAuth API credentials in n8n. -7. Select **Save** to save your credentials. +- OAuth2 + +## Related resources + +Refer to [Zero's API documentation](https://developer.xero.com/documentation/api/accounting/overview){:target=_blank .external-link} for more information about the service. + +## Using OAuth2 + +To configure this credential, you'll need: + +- A **Client ID**: Generated when you create a new app for a custom connection. +- A **Client Secret**: Generated when you create a new for a custom connection. + +To generate your Client ID and Client Secret, [create an OAuth2 custom connection app](https://developer.xero.com/documentation/guides/oauth2/custom-connections/){:target=_blank .external-link} in your Xero developer portal [**My Apps**](https://developer.xero.com/app/manage){:target=_blank .external-link}. + +Use these settings for your app: + +- Select **Web app** as the **Integration Type**. +- Copy the **OAuth Redirect URL** from n8n and add it as an **OAuth 2.0 redirect URI** in your app. +- Select appropriate **scopes** for your app. Refer to [OAuth2 Scopes](https://developer.xero.com/documentation/guides/oauth2/scopes/){:target=_blank .external-link} for more information. + - To use all functionality in the [Xero](/integrations/builtin/app-nodes/n8n-nodes-base.xero/) node, add the `accounting.contacts` and `accounting.transactions` scopes. Refer to Xero's [OAuth Custom Connections](https://developer.xero.com/documentation/guides/oauth2/custom-connections){:target=_blank .external-link} documentation for more information. diff --git a/docs/integrations/builtin/credentials/yourls.md b/docs/integrations/builtin/credentials/yourls.md index 709be3244..8be6a447f 100644 --- a/docs/integrations/builtin/credentials/yourls.md +++ b/docs/integrations/builtin/credentials/yourls.md @@ -6,21 +6,26 @@ contentType: integration # Yourls credentials -You can use these credentials to authenticate the following nodes with Yourls. +You can use these credentials to authenticate the following nodes: - [Yourls](/integrations/builtin/app-nodes/n8n-nodes-base.yourls/) ## Prerequisites -Install [Yourls](https://github.com/YOURLS/YOURLS) on your server. +Install [Yourls](https://github.com/YOURLS/YOURLS){:target=_blank .external-link} on your server. -## Using API +## Supported authentication methods -1. Access your Yourls Admin dashboard. -2. Click on ***Tools*** on the top left. -3. Scroll down to the ***Secure passwordless API call*** section. -4. Copy the ***signature token***. -5. Use this ***Signature*** and the URL of your Yourls instance with your Yourls node credentials in n8n. +- API key -![Getting Yourls credentials](/_images/integrations/builtin/credentials/yourls/using-api.gif) +## Related resources + +Refer to [Yourl's documentation](https://yourls.org/docs){:target=_blank .external-link} for more information about the service. + +## Using API key + +To configure this credential, you'll need: + +- A **Signature** token: Go to **Tools > Secure passwordless API call** to get your **Signature** token. Refer to [Yourl's Passworldess API documentation](https://yourls.org/docs/guide/advanced/passwordless-api){:target=_blank .external-link} for more information. +- A **URL**: Enter the URL of your Yourls instance. diff --git a/docs/integrations/builtin/credentials/zammad.md b/docs/integrations/builtin/credentials/zammad.md index bb4a94b04..f09ad59f2 100644 --- a/docs/integrations/builtin/credentials/zammad.md +++ b/docs/integrations/builtin/credentials/zammad.md @@ -6,25 +6,44 @@ contentType: integration # Zammad credentials -You can use these credentials to authenticate the following nodes with Zammad. +You can use these credentials to authenticate the following nodes: - [Zammad](/integrations/builtin/app-nodes/n8n-nodes-base.zammad/) ## Prerequisites -1. Create a hosted [Zammad](https://zammad.com/) account or set up your own Zammad instance. -2. For the token-based authentication make sure `Token Access` is enabled in the API section of your Zammad instance's System settings. +- Create a hosted [Zammad](https://zammad.com/){:target=_blank .external-link} account or set up your own Zammad instance. +- For token authentication, enable **API Token Access** in **Settings > System > API**. Refer to [Setting up a Zammad](https://admin-docs.zammad.org/en/latest/system/integrations/zabbix.html?#setting-up-a-zammad){:target=_blank .external-link} for more information. -## Basic Auth +## Supported authentication methods -1. Enter the URL of your Zammad instance in the **Base URL** field of the n8n credentials screen. -2. Enter your Zammad email om the **Email** field and your password in the **Password** field. +- Basic auth +- Token auth: Zammad recommends using this authentication method. -## Token Auth +## Related resources -1. Log in to your Zammad instance -2. Click your avatar in the lower left corner, then click on **Profile** -3. Select **Token Access** and click **Create** -4. Enter a name for your new token and pick all required permissions. Click **Create** once done. -5. Copy the token shown into the **Access Token** field in n8n. Enter the URL of your Zammad instance in the **Base URL** field. +Refer to [Zammad's API Authentication documentation](https://docs.zammad.org/en/latest/api/intro.html?#authentication){:target=_blank .external-link} for more information about authenticating with the service. + +## Using basic auth + +To configure this credential, you'll need: + +- A **Base URL**: Enter the URL of your Zammad instance. +- An **Email** address: Enter the email address you use to log in to Zammad. +- A **Password**: Enter your Zammad password. +- **Ignore SSL Issues**: When turned on, n8n will connect even if SSL certificate validation fails. + +## Using token auth + +To configure this credential, you'll need: + +- A **Base URL**: Enter the URL of your Zammad instance. +- An **Access Token**: Once **API Token Access** is enabled for the Zammad instance, any user with the `user_preferences.access_token` permission can generate an **Access Token** by going to your **avatar > Profile > Token Access** and **Create** a new token. + - The access token permissions depend on what actions you'd like to complete with this credential. For all functionality within the [Zammad](/integrations/builtin/app-nodes/n8n-nodes-base.zammad/) node, select: + - `admin.group` + - `admin.organization` + - `admin.user` + - `ticket.agent` + - `ticket.customer` +- **Ignore SSL Issues**: When turned on, n8n will connect even if SSL certificate validation fails. diff --git a/docs/integrations/builtin/credentials/zendesk.md b/docs/integrations/builtin/credentials/zendesk.md index 2ac8be577..6b2dc5e78 100644 --- a/docs/integrations/builtin/credentials/zendesk.md +++ b/docs/integrations/builtin/credentials/zendesk.md @@ -6,70 +6,49 @@ contentType: integration # Zendesk credentials -You can use these credentials to authenticate the following nodes with Zendesk. +You can use these credentials to authenticate the following nodes: - [Zendesk](/integrations/builtin/app-nodes/n8n-nodes-base.zendesk/) - [Zendesk Trigger](/integrations/builtin/trigger-nodes/n8n-nodes-base.zendesktrigger/) ## Prerequisites -Create a [Zendesk](https://zendesk.com/) account. +- Create a [Zendesk](https://zendesk.com/){:target=_blank .external-link} account. +- For API token authentication, enable token access to the API in Admin Center under **Apps and integrations > APIs > Zendesk APIs**. -## Using OAuth +## Supported authentication methods -1. Open your Zendesk dashboard. -2. Click on the gear icon on the left. -3. Click on 'API' under the ***CHANNELS*** section in the sidebar. -4. Click on the ***OAuth Clients*** tab. -5. Click on the ***Add OAuth client*** button. -6. Enter the client name in the ***Client Name*** field. -7. Enter a description in the ***Description*** field. -8. Copy the 'OAuth Callback URL' provided in the 'Zendesk OAuth2 API' credentials in n8n. -9. Paste it in the ***Redirect URLs*** field on the Zendesk API credentials page. -10. Click on the ***Save*** button. -11. Click on the ***OK*** button on the ***Please store the secret that will appear*** pop-up. -12. Scroll down to the ***Secret*** section and copy the displayed ***Secret***. -13. Paste this secret in the ***Client Secret*** field in the 'Zendesk OAuth2 API' credentials in n8n. -14. Copy the ***Unique identifier*** from the Zendesk API credentials page. -15. Paste it in the ***Client ID*** field in the 'Zendesk OAuth2 API' credentials in n8n. -16. Enter your Zendesk subdomain in the ***Subdomain*** field in the 'Zendesk OAuth2 API' credentials in n8n. Refer to the [FAQs](#how-do-i-get-my-zendesk-subdomain) to learn more about subdomain. -17. Enter the name for your credentials in the ***Credentials Name*** field in the 'Zendesk OAuth2 API' credentials in n8n. -18. Click on the circle button in the OAuth section to connect a Zendesk account to n8n. -19. Click on the ***Save*** button to save your credentials. +- API token +- OAuth2 -The following video demonstrates the steps mentioned above. +## Related resources -
- -
+Refer to [Zendesk's API documentation](https://developer.zendesk.com/api-reference/){:target=_blank .external-link} for more information about the service. -## Using Access Token +## Using API token -1. Open your Zendesk dashboard. -2. Click on the gear icon on the left. -3. Click on 'API' under the ***CHANNELS*** section in the sidebar. -4. If ***Token access*** is disabled, click on the switch to toggle it to 'Enabled'. -5. Click on the ***Add API token*** button. -6. Enter a description in the ***API token description*** field. -7. Click on the ***Copy*** button to copy the API token. -8. Click on the ***Save*** button. -9. Enter the name for your credentials in the ***Credentials Name*** field in the 'Zendesk API' credentials in n8n. -10. Enter your Zendesk subdomain in the ***Subdomain*** field. Refer to the [FAQs](#how-do-i-get-my-zendesk-subdomain) to learn more about subdomain. -11. Enter your Zendesk email address in the ***Email*** field. -12. Paste the ***API token*** in the ***API Token*** field. -13. Click on the ***Save*** button to save your credentials. +To configure this credential, you'll need: -The following video demonstrates the steps mentioned above. +- Your **Subdomain**: Your Zendesk subdomain is the portion of the URL between `https://` and `.zendesk.com`. For example, if the Zendesk URL is `https://n8n-example.zendesk.com/agent/dashboard`, the subdomain is `n8n-example`. +- An **Email** address: Enter the email address you use to log in to Zendesk. +- An **API Token**: Generate an API token in **Apps and integrations > APIs > Zendesk API**. Refer to [API token](https://developer.zendesk.com/api-reference/introduction/security-and-auth/#api-token){:target=_blank .external-link} for more information. -
- -
+## Using OAuth2 -## FAQs +To configure this credential, you'll need: -### How do I get my Zendesk subdomain? +- A **Client ID**: Generated when you create a new OAuth client. +- A **Client Secret**: Generated when you create a new OAuth client. +- Your **Subdomain**: Your Zendesk subdomain is the portion of the URL between `https://` and `.zendesk.com`. For example, if the Zendesk URL is `https://n8n-example.zendesk.com/agent/dashboard`, the subdomain is `n8n-example`. -To get your Zendesk subdomain, follow the steps mentioned below. -1. Access your Zendesk dashboard. -2. Copy the string of characters located between `https://` and `.zendesk.com/agent/dashboard` in your Zendesk URL. This string is the subdomain. For example, if your Zendesk URL is `https://example.zendesk.com/agent/dashboard`, the subdomain will be `example`. +To create a new OAuth client, go to **Apps and integrations > APIs > Zendesk API > OAuth Clients**. + +Use these settings: + + - Copy the **OAuth Redirect URL** from n8n and enter it as a **Redirect URL** in the OAuth client. + - Copy the **Unique identifier** for the Zendesk client and enter this as your n8n **Client ID**. + - Copy the **Secret** from Zendesk and enter this as your n8n **Client Secret** + + + Refer to [Registering your application with Zendesk](https://support.zendesk.com/hc/en-us/articles/4408845965210-Using-OAuth-authentication-with-your-application#topic_s21_lfs_qk){:target=_blank .external-link} for more information. diff --git a/docs/integrations/builtin/credentials/zep.md b/docs/integrations/builtin/credentials/zep.md index ce78da40d..643c27b96 100644 --- a/docs/integrations/builtin/credentials/zep.md +++ b/docs/integrations/builtin/credentials/zep.md @@ -12,10 +12,21 @@ You can use these credentials to authenticate the following nodes: ## Prerequisites -You need the API URL and API key. +Create a [Zep server](https://www.getzep.com/){:target=_blank .external-link} on the cloud or self-hosted with at least one project. + +## Supported authentication methods + +- API key ## Related resources -Refer to [Zep's documentation](https://docs.getzep.com/sdk/){:target=_blank .external-link} for more information about the service. +Refer to [Zep's Cloud SDK documentation](https://help.getzep.com/sdks){:target=_blank .external-link} and [Open Source SDK documentation](https://docs.getzep.com/sdk/){:target=_blank .external-link} for more information about the service. --8<-- "_snippets/integrations/builtin/cluster-nodes/langchain-overview-link.md" + +## Using API key + +To configure this credential, you'll need: + +- An **API URL**: For Cloud instances, enter `https://api.getzep.com`. For self-hosted instances, enter the URL for your Zep server. +- An **API Key**: Generate a new API key from [**Project Settings**](https://help.getzep.com/projects){:target=_blank .external-link}. diff --git a/docs/integrations/builtin/credentials/zoho.md b/docs/integrations/builtin/credentials/zoho.md index f3a3ebec9..987a3bceb 100644 --- a/docs/integrations/builtin/credentials/zoho.md +++ b/docs/integrations/builtin/credentials/zoho.md @@ -6,28 +6,42 @@ contentType: integration # Zoho credentials -You can use these credentials to authenticate the following nodes with Zoho. +You can use these credentials to authenticate the following nodes: - [Zoho CRM](/integrations/builtin/app-nodes/n8n-nodes-base.zohocrm/) ## Prerequisites -Create a [Zoho](https://www.zoho.com/) account. +Create a [Zoho](https://www.zoho.com/){:target=_blank .external-link} account. -## Using OAuth +## Supported authentication methods -/// note | Note for n8n Cloud users -You'll only need to enter the Credentials Name and click on the circle button in the OAuth section to connect your Zoho account to n8n. -/// +- OAuth2 -1. Access your [Zoho Developer Console](https://api-console.zoho.com/). -2. Click on the 'GET STARTED' button. -3. Click on the 'Server-based Applications' box. -4. Copy the 'OAuth Callback URL' provided in the Zoho OAuth2 API credentials in n8n and paste it in the *Authorized Redirect URIs* field in the Zoho API Console app creation page. -5. Fill in any other necessary information and click on the 'CREATE' button. -6. Use the 'Client ID' and the 'Client Secret' displayed with your Zoho OAuth2 API credentials in n8n. -7. Click on the circle button in the OAuth section to connect a Zoho CRM account to n8n. -8. Click the *Save* button to save your credentials. +## Related resources -![Getting Zoho credentials](/_images/integrations/builtin/credentials/zoho/getting-oauth-credentials.gif) +Refer to [Zoho's CRM API documentation](https://www.zoho.com/crm/developer/docs/api/v3/){:target=_blank .external-link} for more information about the service. + +## Using OAuth2 + +To configure this credential, you'll need: + +- An **Access Token URL**: Zoho provides region-specific access token URLs. Select the region that best fits your Zoho data center: + - **AU**: Select this option for Australia data center. + - **CN**: Select this option for Canada data center. + - **EU**: Select this option for the European Union data center. + - **IN**: Select this option for the India data center. + - **US**: Select this option for the United States data center. + +Refer to [Multi DC](https://www.zoho.com/crm/developer/docs/api/v3/multi-dc.html){:target=_blank .external-link} for more information about selecting a data center. + +--8<-- "_snippets/integrations/builtin/credentials/cloud-oauth-button.md" + +If you need to configure OAuth2 from scratch, [register an application](https://www.zoho.com/accounts/protocol/oauth-setup.html){:target=_blank .external-link} with Zoho. + +Use these settings for your application: + +- Select **Server-based Applications** as the **Client Type**. +- Copy the **OAuth Callback URL** from n8n and enter it in the Zoho **Authorized Redirect URIs** field. +- Copy the **Client ID** and **Client Secret** from the application and enter them in your n8n credential. diff --git a/docs/integrations/builtin/credentials/zoom.md b/docs/integrations/builtin/credentials/zoom.md index a8ee0cf99..74133cf4c 100644 --- a/docs/integrations/builtin/credentials/zoom.md +++ b/docs/integrations/builtin/credentials/zoom.md @@ -6,43 +6,55 @@ contentType: integration # Zoom credentials -You can use these credentials to authenticate the following nodes with Zoom. +You can use these credentials to authenticate the following nodes: - [Zoom](/integrations/builtin/app-nodes/n8n-nodes-base.zoom/) ## Prerequisites -Create a [Zoom](https://zoom.us/) account. +Create a [Zoom](https://zoom.us/){:target=_blank .external-link} account. Your account must have one of the following permissions: -## Using OAuth +- Account owner +- Account admin +- Zoom for developers role - +## Supported authentication methods -1. Visit the [Zoom App Marketplace](https://marketplace.zoom.us/) and select the 'Build App' option in the *Develop* dropdown on the top-right corner. -2. Create a new OAuth app. -3. Select 'User-managed app'. -4. Set the "Would you like to publish this app on Zoom App Marketplace?" slider to off. -5. Click on the *Create* button. -6. Copy the 'OAuth Callback URL' provided in the Zoom OAuth2 API credentials in n8n and paste it in the 'Redirect URL for OAuth' section in the Zoom app creation page. -7. Copy the Whitelist URL' provided in the Zoom OAuth2 API credentials in n8n and paste it in the 'Redirect URL for OAuth' section in the Zoom app creation page. -8. Copy the Client ID and Client Secret provided in the Zoom app creation page and paste it in the Zoom OAuth2 API credentials in n8n. -9. Enter any necessary information and click continue. -10. In the 'Scopes' section, click *Add Scopes* and choose the scopes that you plan to use. -11. Click on the circle button in the OAuth section to connect your Zoom account to n8n. -12. Click the *Save* button to save your credentials. +- API JWT token +- OAuth2 -![Getting Zoom OAuth credentials](/_images/integrations/builtin/credentials/zoom/using-oauth.gif) +/// warning | API JWT token deprecation +Zoom removed support for JWT access tokens in June 2023. You must use OAuth2 for all new credentials. +/// -## Using Access Token +## Related resources -1. Visit the [Zoom App Marketplace](https://marketplace.zoom.us/) and select the 'Build App' option in the *Develop* dropdown on the top-right corner. -2. Create a new JWT app and enter any necessary information. -3. Go to the 'App Credentials' tab. -4. Click on *View JWT Token* and copy the given token. -5. Go to the 'Activation' tab and click on the *Activate your app* button. -6. Use the JWT token you copied with your Zoom API credentials in n8n. +Refer to [Zoom's API documentation](https://developers.zoom.us/docs/api/){:target=_blank .external-link} for more information about the service. -![Getting Zoom JWT credentials](/_images/integrations/builtin/credentials/zoom/using-access-token.gif) +## Using API JWT token +This authentication method has been fully deprecated by Zoom. Don't create new credentials with it. + +To configure this credential, you'll need: + +- A **JWT token**: To create a JWT token, create a new JWT app in the [Zoom App Marketplace](https://marketplace.zoom.us/){:target=_blank .external-link}. + +## Using OAuth2 + +To configure this credential, you'll need: + +- A **Client ID**: Generated when you create an OAuth app on the Zoom App Marketplace. +- A **Client Secret**: Generated when you create an OAuth app. + +To generate your **Client ID** and **Client Secret**, [create an OAuth app](https://developers.zoom.us/docs/integrations/create/){:target=_blank .external-link}. + +Use these settings for your OAuth app: + +- Select **User-managed app** for **Select how the app is managed**. +- Copy the **OAuth Callback URL** from n8n and enter it as an **OAuth Redirect URL** in Zoom. +- If your n8n credential displays a **Whitelist URL**, also enter that URL as a an **OAuth Redirect URL**. +- Enter **Scopes** for the scopes you plan to use. For all functionality in the [Zoom](/integrations/builtin/app-nodes/n8n-nodes-base.zoom/) node, select: + - `meeting:read` + - `meeting:write` + - Refer to [OAuth scopes | Meeting scopes](https://developers.zoom.us/docs/integrations/oauth-scopes/#meeting-scopes){:target=_blank .external-link} for more information on meeting scopes. +- Copy the **Client ID** and **Client Secret** provided in the Zoom app and enter them in your n8n credential. diff --git a/docs/integrations/builtin/credentials/zscalerzia.md b/docs/integrations/builtin/credentials/zscalerzia.md index 56603c2c0..bea1ab10e 100644 --- a/docs/integrations/builtin/credentials/zscalerzia.md +++ b/docs/integrations/builtin/credentials/zscalerzia.md @@ -5,14 +5,29 @@ description: Documentation for the Zscaler ZIA credentials. Use these credential # Zscaler ZIA credentials -You can use these credentials to authenticate when using the HTTP Request node to make a [Custom API call](/integrations/custom-operations/) to the Zscaler ZIA API. +--8<-- "_snippets/integrations/builtin/credentials/cred-only-statement.md" -## Authentication methods +## Prerequisites -n8n supports Zscaler ZIA authentication with admin credentials and an API key. +Create an admin account on a [Zscaler Internet Access (ZIA)](https://www.zscaler.com/products/zscaler-internet-access){:target=_blank .external-link} cloud instance. + +## Supported authentication methods + +- Basic auth and API key combo ## Related resources Refer to [Zscaler ZIA's documentation](https://help.zscaler.com/zia/getting-started-zia-api){:target=_blank .external-link} for more information about the service. This is a credential-only node. Refer to [Custom API operations](/integrations/custom-operations/) to learn more. View [example workflows and related content](https://n8n.io/integrations/zscaler-zia/){:target=_blank .external-link} on n8n's website. + +## Using basic auth and API key combo + +To configure this credential, you'll need: + +- A **Base URL**: Enter the base URL of your Zscaler ZIA cloud name. To get your base URL, log in to the ZIA Admin Portal and go to **Administration > Cloud Service API Security**. The base URL is displayed in both the **Cloud Service API Key** tab and the **OAuth 2.0 Authorization Servers** tab. +- A **Username**: Enter your ZIA admin username. +- A **Password**: Enter your ZIA admin password. +- An **Api Key**: Get an API key by creating one from **Administration > Cloud Service API Security > Cloud Service API Key**. + +Refer to [About Cloud Service API Key](https://help.zscaler.com/zia/about-cloud-service-api-key){:target=_blank .external-link} for more detailed instructions. diff --git a/docs/integrations/builtin/credentials/zulip.md b/docs/integrations/builtin/credentials/zulip.md index 9f0cd22e1..611a6664c 100644 --- a/docs/integrations/builtin/credentials/zulip.md +++ b/docs/integrations/builtin/credentials/zulip.md @@ -6,21 +6,27 @@ contentType: integration # Zulip credentials -You can use these credentials to authenticate the following nodes with Zulip. +You can use these credentials to authenticate the following nodes: - [Zulip](/integrations/builtin/app-nodes/n8n-nodes-base.zulip/) ## Prerequisites -Create a [Zulip](https://zulip.com/) account. +Create a [Zulip](https://zulip.com/){:target=_blank .external-link} account. -## Using Access Token +## Supported authentication methods -1. Access your Zulip dashboard. -2. Click on the gear icon on the top right. -3. Click on ***Settings***. -4. Click on the ***Show/change your API key*** button under the ***API Key*** section. -5. Use your Email, URL, and API Key in your Zulip credentials. +- API key -![Getting Zulip credentials](/_images/integrations/builtin/credentials/zulip/using-access-token.gif) +## Related resources + +Refer to [Zulip's API documentation](https://zulip.com/api/){:target=_blank .external-link} for more information about the service. + +## Using API key + +To configure this credential, you'll need: + +- A **URL**: Enter the URL of your Zulip domain. +- An **Email** address: Enter the email address you use to log in to Zulip. +- An **API Key**: Get your API key in the **Gear cog > Personal Settings > Account & privacy > API Key**. Refer to [API Keys](https://zulip.com/api/api-keys){:target=_blank .external-link} for more information. diff --git a/docs/manage-cloud/cloud-data-management.md b/docs/manage-cloud/cloud-data-management.md index bee8d8913..5428c7904 100644 --- a/docs/manage-cloud/cloud-data-management.md +++ b/docs/manage-cloud/cloud-data-management.md @@ -74,8 +74,7 @@ n8n automatically prunes execution logs after a certain time or once you reach t Heavier executions and use cases can exceed database capacity despite the automatic pruning practices. In cases like this, n8n will manually prune data to protect instance stability. 1. An alert system warns n8n if an instance is at 85% disk capacity. -2. A member of the Support team contacts the instance owner to inform them and ask permission for data pruning: - - If the owner grants permission, n8n deletes execution data. n8n does this by running a backup of the instance (workflows, users, credentials and execution data) and restoring it without execution data. - - If the owner doesn't grant permission, n8n takes no action. +2. n8n prunes execution data. n8n does this by running a backup of the instance (workflows, users, credentials and execution data) and restoring it without execution data. + -Due to the human steps in this process, the alert system isn't perfect. If warnings are triggered after hours or if data consumption rates are high, there might not be time to warn the user or prune the data before the remaining disk space fills up. +Due to the human steps in this process, the alert system isn't perfect. If warnings are triggered after hours or if data consumption rates are high, there might not be time to prune the data before the remaining disk space fills up. diff --git a/docs/release-notes.md b/docs/release-notes.md index ad6146b8e..c478bcc52 100644 --- a/docs/release-notes.md +++ b/docs/release-notes.md @@ -28,6 +28,39 @@ n8n uses [semantic versioning](https://semver.org/){:target=_blank .external-lin * MINOR version when adding functionality in a backward-compatible manner. * PATCH version when making backward-compatible bug fixes. +## n8n@1.47.0 + +View the [commits](https://github.com/n8n-io/n8n/compare/n8n@1.46.0...n8n@1.47.0){:target=_blank .external-link} for this version.
+**Release date:** 2024-06-20 + +/// warning | Breaking change +Calling `$(...).last()` (or `(...).first()` or `$(...).all()`) without arguments now returns the last item (or first or all items) of the output that connects two nodes. Previously, it returned the item/items of the first output of that node. Refer to the [breaking changes log](https://github.com/n8n-io/n8n/blob/master/packages/cli/BREAKING-CHANGES.md#1470){:target=_blank .external-link} for details. +/// + +This release contains bug fixes, feature enhancements, a new node, node enhancements and performance improvements. + +For full release details, refer to [Releases](https://github.com/n8n-io/n8n/releases){:target=_blank .external-link} on GitHub. + +
+ +#### New node: HTTP request tool + +This release adds the HTTP request tool. You can use it with an AI agent as a tool to collect information from a website or API. Refer to the [HTTP request tool](/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.toolhttprequest/) for details. + +
+ +### Contributors + +[Daniel](https://github.com/daniel-alba17){:target=_blank .external-link} +[ekadin-mtc](https://github.com/ekadin-mtc){:target=_blank .external-link} +[Eric Francis](https://github.com/EricFrancis12){:target=_blank .external-link} +[Josh Sorenson](https://github.com/joshsorenson){:target=_blank .external-link} +[Mohammad Alsmadi](https://github.com/smadixd){:target=_blank .external-link} +[Nikolai T. Jensen](https://github.com/ch0wm3in){:target=_blank .external-link} +[n8n-ninja](https://github.com/n8n-ninja){:target=_blank .external-link} +[pebosi](https://github.com/pebosi){:target=_blank .external-link} +[Taylor Hoffmann](https://github.com/TaylorHo){:target=_blank .external-link} + ## n8n@1.45.1 View the [commits](https://github.com/n8n-io/n8n/compare/n8n@1.45.0...n8n@1.45.1){:target=_blank .external-link} for this version.
@@ -51,7 +84,6 @@ This is the `next` version. n8n recommends using the `latest` version. The `next /// - This release contains feature enhancements, node enhancements, and bug fixes. For full release details, refer to [Releases](https://github.com/n8n-io/n8n/releases){:target=_blank .external-link} on GitHub. diff --git a/docs/user-management/rbac/projects.md b/docs/user-management/rbac/projects.md index a1fee60aa..28ff2a7d6 100644 --- a/docs/user-management/rbac/projects.md +++ b/docs/user-management/rbac/projects.md @@ -51,6 +51,16 @@ To delete a project: * **Transfer its workflows and credentials to another project**: n8n prompts you to choose a project to move the data to. * **Delete its workflows and credentials**: n8n prompts you to confirm that you want to delete all the data in the project. +## Move workflows and credentials between projects + +Workflow and credential owners can move a workflow or credential into a different project. + +1. Select **Workflow menu** ![Workflow menu icon](/_images/common-icons/three-dot-options-menu.png){.off-glb} or **Credential menu** ![Workflow menu icon](/_images/common-icons/three-dot-options-menu.png){.off-glb} > **Move**. +1. Select the project you want to move to. +1. Select **Next**. +1. Confirm you understand the impact of the move: workflows may stop working if the credentials they need aren't available in the target project, and n8n removes any current individual sharing. +1. Select **Confirm move to new project**. + ## Using external secrets in projects To use [external secrets](/external-secrets/) in a project, you must have an [instance owner or instance admin](/user-management/account-types/) as a member of the project. diff --git a/mkdocs.yml b/mkdocs.yml index 4e1f9cbe0..a94dcecc9 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -35,6 +35,7 @@ theme: - content.code.copy # https://squidfunk.github.io/mkdocs-material/reference/tooltips/#improved-tooltips - content.tooltips + # https://squidfunk.github.io/mkdocs-material/setup/setting-up-the-footer/?h=footer#navigation - navigation.footer # https://squidfunk.github.io/mkdocs-material/setup/setting-up-navigation/#section-index-pages - navigation.indexes @@ -44,7 +45,8 @@ theme: - navigation.sections # https://squidfunk.github.io/mkdocs-material/setup/setting-up-navigation/?h=navigation+tabs#navigation-tabs - navigation.tabs - - navigation.tabs.sticky + # https://squidfunk.github.io/mkdocs-material/setup/setting-up-navigation/#back-to-top-button + - navigation.top # https://squidfunk.github.io/mkdocs-material/setup/setting-up-navigation/?h=navigation+tabs#anchor-tracking - navigation.tracking copyright: > @@ -291,6 +293,7 @@ nav: - Data pinning: data/data-pinning.md - Data editing: data/data-editing.md - Data filtering: data/data-filtering.md + - Data mocking: data/data-mocking.md - Binary data: data/binary-data.md - Manage n8n Cloud: - Overview: manage-cloud/overview.md @@ -604,10 +607,10 @@ nav: - integrations/builtin/app-nodes/n8n-nodes-base.sendy.md - integrations/builtin/app-nodes/n8n-nodes-base.sentryio.md - integrations/builtin/app-nodes/n8n-nodes-base.servicenow.md + - integrations/builtin/app-nodes/n8n-nodes-base.sms77.md - integrations/builtin/app-nodes/n8n-nodes-base.shopify.md - integrations/builtin/app-nodes/n8n-nodes-base.signl4.md - integrations/builtin/app-nodes/n8n-nodes-base.slack.md - - integrations/builtin/app-nodes/n8n-nodes-base.sms77.md - integrations/builtin/app-nodes/n8n-nodes-base.snowflake.md - integrations/builtin/app-nodes/n8n-nodes-base.splunk.md - integrations/builtin/app-nodes/n8n-nodes-base.spontit.md @@ -631,7 +634,6 @@ nav: - integrations/builtin/app-nodes/n8n-nodes-base.twake.md - integrations/builtin/app-nodes/n8n-nodes-base.twilio.md - integrations/builtin/app-nodes/n8n-nodes-base.twist.md - - integrations/builtin/app-nodes/n8n-nodes-base.twitter.md - integrations/builtin/app-nodes/n8n-nodes-base.unleashedsoftware.md - integrations/builtin/app-nodes/n8n-nodes-base.uplead.md - integrations/builtin/app-nodes/n8n-nodes-base.uproc.md @@ -647,6 +649,7 @@ nav: - integrations/builtin/app-nodes/n8n-nodes-base.wise.md - integrations/builtin/app-nodes/n8n-nodes-base.woocommerce.md - integrations/builtin/app-nodes/n8n-nodes-base.wordpress.md + - integrations/builtin/app-nodes/n8n-nodes-base.twitter.md - integrations/builtin/app-nodes/n8n-nodes-base.xero.md - integrations/builtin/app-nodes/n8n-nodes-base.yourls.md - integrations/builtin/app-nodes/n8n-nodes-base.youtube.md @@ -786,8 +789,8 @@ nav: - integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmollama.md - integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmopenai.md - integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmopenhuggingfaceinference.md - - integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.memorybufferwindow.md - integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.memorymanager.md + - integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.memorybufferwindow.md - integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.memorymotorhead.md - integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.memoryredischat.md - integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.memoryxata.md @@ -804,6 +807,7 @@ nav: - integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.textsplittertokensplitter.md - integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.toolcalculator.md - integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.toolcode.md + - integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.toolhttprequest.md - integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.toolserpapi.md - integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.toolwikipedia.md - integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.toolwolframalpha.md @@ -1027,11 +1031,11 @@ nav: - integrations/builtin/credentials/sentryio.md - integrations/builtin/credentials/serp.md - integrations/builtin/credentials/servicenow.md + - integrations/builtin/credentials/sms77.md - integrations/builtin/credentials/shopify.md - integrations/builtin/credentials/shuffler.md - integrations/builtin/credentials/signl4.md - integrations/builtin/credentials/slack.md - - integrations/builtin/credentials/sms77.md - integrations/builtin/credentials/snowflake.md - integrations/builtin/credentials/splunk.md - integrations/builtin/credentials/spontit.md @@ -1060,7 +1064,6 @@ nav: - integrations/builtin/credentials/twake.md - integrations/builtin/credentials/twilio.md - integrations/builtin/credentials/twist.md - - integrations/builtin/credentials/twitter.md - integrations/builtin/credentials/typeform.md - integrations/builtin/credentials/unleashedsoftware.md - integrations/builtin/credentials/uplead.md @@ -1082,6 +1085,7 @@ nav: - integrations/builtin/credentials/wordpress.md - integrations/builtin/credentials/workable.md - integrations/builtin/credentials/wufoo.md + - integrations/builtin/credentials/twitter.md - integrations/builtin/credentials/xata.md - integrations/builtin/credentials/xero.md - integrations/builtin/credentials/yourls.md @@ -1197,6 +1201,7 @@ nav: - Overview: hosting/scaling/overview.md - Performance and benchmarking: hosting/scaling/performance-benchmarking.md - Configuring queue mode: hosting/scaling/queue-mode.md + - Concurrency control: hosting/scaling/concurrency-control.md - Execution data: hosting/scaling/execution-data.md - Binary data: hosting/scaling/binary-data.md - External storage for binary data: hosting/scaling/external-storage.md @@ -1265,10 +1270,13 @@ nav: - What is a chain?: advanced-ai/examples/understand-chains.md - What is an agent?: advanced-ai/examples/understand-agents.md - Agents vs chains example: advanced-ai/examples/agent-chain-comparison.md + - What is memory?: advanced-ai/examples/understand-memory.md - What is a tool?: advanced-ai/examples/understand-tools.md - Use Google Sheets as a data source: advanced-ai/examples/data-google-sheets.md - Call an API to fetch data: advanced-ai/examples/api-workflow-tool.md - Set a human fallback for AI workflows: advanced-ai/examples/human-fallback.md + - What is a vector database?: advanced-ai/examples/understand-vector-databases.md + - Populate a Pinecone vector database from a website: advanced-ai/examples/vector-store-website.md - API: - api/index.md - Authentication: api/authentication.md diff --git a/styles/config/vocabularies/default/accept.txt b/styles/config/vocabularies/default/accept.txt index cee1477d9..30c90d269 100644 --- a/styles/config/vocabularies/default/accept.txt +++ b/styles/config/vocabularies/default/accept.txt @@ -177,6 +177,7 @@ Okta Ollama onboarding Onfleet +Ortto Oura Peekalink PhantomBuster diff --git a/styles/from-write-good/TooWordy.yml b/styles/from-write-good/TooWordy.yml index 275701b19..aa8e122cb 100644 --- a/styles/from-write-good/TooWordy.yml +++ b/styles/from-write-good/TooWordy.yml @@ -142,7 +142,6 @@ tokens: - minimize - minimum - modify - - monitor - multiple - necessitate - nevertheless