Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
79 changes: 79 additions & 0 deletions docs/_workflows/courses/level-two/chapter-2-xml-node.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
{
"name": "My workflow",
"nodes": [
{
"parameters": {},
"type": "n8n-nodes-base.manualTrigger",
"typeVersion": 1,
"position": [
-240,
-64
],
"id": "64d9bef9-d2f3-4eb1-b80c-8527f27b13a7",
"name": "When clicking ‘Execute workflow’"
},
{
"parameters": {
"url": "https://pokeapi.co/api/v2/pokemon",
"options": {}
},
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
0,
-64
],
"id": "f07f1544-e6a2-4905-866c-8c35abe5f90c",
"name": "HTTP Request2"
},
{
"parameters": {
"mode": "jsonToxml",
"options": {}
},
"type": "n8n-nodes-base.xml",
"typeVersion": 1,
"position": [
240,
-64
],
"id": "b9dc143d-4d3d-4f3b-8aa8-675b97611eb9",
"name": "XML"
}
],
"pinData": {},
"connections": {
"When clicking ‘Execute workflow’": {
"main": [
[
{
"node": "HTTP Request2",
"type": "main",
"index": 0
}
]
]
},
"HTTP Request2": {
"main": [
[
{
"node": "XML",
"type": "main",
"index": 0
}
]
]
}
},
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "bb1b4024-7326-4747-8e48-ae9a0fff59d4",
"meta": {
"instanceId": "710be9ee229a3ddcf917e926782dde029a4fcfb94e8e57a48ed9b5520f72263d"
},
"id": "UAjZxFzAGSNDTKtV",
"tags": []
}
87 changes: 87 additions & 0 deletions docs/_workflows/courses/level-two/chapter-2.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
{
"name": "My workflow",
"nodes": [
{
"parameters": {
"url": "https://blog.n8n.io/",
"options": {}
},
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
-32,
-64
],
"id": "89ebabef-086c-4df1-b719-36f0ca47c2d5",
"name": "HTTP Request1"
},
{
"parameters": {
"operation": "extractHtmlContent",
"extractionValues": {
"values": [
{
"cssSelector": ".post .item-title a",
"returnValue": "html"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.html",
"typeVersion": 1.2,
"position": [
208,
-64
],
"id": "b49bc372-d684-46c7-b5b1-585ac1f60a95",
"name": "HTML"
},
{
"parameters": {},
"type": "n8n-nodes-base.manualTrigger",
"typeVersion": 1,
"position": [
-240,
-64
],
"id": "64d9bef9-d2f3-4eb1-b80c-8527f27b13a7",
"name": "When clicking ‘Execute workflow’"
}
],
"pinData": {},
"connections": {
"HTTP Request1": {
"main": [
[
{
"node": "HTML",
"type": "main",
"index": 0
}
]
]
},
"When clicking ‘Execute workflow’": {
"main": [
[
{
"node": "HTTP Request1",
"type": "main",
"index": 0
}
]
]
}
},
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "bb1b4024-7326-4747-8e48-ae9a0fff59d4",
"meta": {
"instanceId": "710be9ee229a3ddcf917e926782dde029a4fcfb94e8e57a48ed9b5520f72263d"
},
"id": "UAjZxFzAGSNDTKtV",
"tags": []
}
2 changes: 1 addition & 1 deletion docs/courses/level-one/chapter-1.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ Once you have n8n running, open the Editor UI in a browser window. Log in to you

It should look like this:

<figure><img src="/_images/courses/level-one/chapter-one/l1-c1-editor-ui.png" alt="Editor UI" style="width:100%"><figcaption align = "center"><i>Editor UI</i></figcaption></figure>
<figure><img src="/_images/courses/level-one/chapter-one/level-one-course-editor-ui.png" alt="Editor UI" style="width:100%"><figcaption align = "center"><i>Editor UI</i></figcaption></figure>

## Editor UI settings

Expand Down
9 changes: 9 additions & 0 deletions docs/courses/level-two/chapter-2.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,11 @@ Let's get the title of the latest n8n blog post:
<figure><img src="/_images/courses/level-two/chapter-two/exercise_html_htmlextractnode.png" alt="Result of HTML Extract node" style="width:100%"><figcaption align = "center"><i>Result of HTML Extract node</i></figcaption></figure>


The finished workflow will look like this:

[[ workflowDemo("file:////courses/level-two/chapter-2.json") ]]
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bug: Workflow Demo Shortcodes Fail to Load

The workflowDemo shortcodes in this chapter appear to have two path-related issues. The file paths are missing the _workflows directory component, and they use a non-standard file://// protocol. This combination will likely prevent the embedded workflow demos from loading correctly.

Additional Locations (1)

Fix in Cursor Fix in Web



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.

### XML Exercise
Expand All @@ -79,6 +84,10 @@ In the [final exercise of Chapter 1](/courses/level-two/chapter-1.md#exercise_2)
To transform data the other way around, select the mode **XML to JSON**.


The finished workflow will look like this:

[[ workflowDemo("file:////courses/level-two/chapter-2-xml-node.json") ]]
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bug: Incorrect File URI Syntax Causes Demo Load Failures

The workflowDemo shortcode uses file://// in its file paths. This non-standard URI syntax, which should be file:/// for absolute paths, may prevent the workflow demos from loading correctly.

Fix in Cursor Fix in Web


## Date, time, and interval data

Date and time data types include `DATE`, `TIME`, `DATETIME`, `TIMESTAMP`, and `YEAR`. The dates and times can be passed in different formats, for example:
Expand Down
96 changes: 95 additions & 1 deletion docs/courses/level-two/chapter-5/chapter-5.1.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,103 @@ Next, build a small workflow that merges data from Airtable and a REST Countries
3. Use the [**Merge node**](/integrations/builtin/core-nodes/n8n-nodes-base.merge.md) 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.

## Create a new workflow

Open your Editor UI and create a new workflow using one of the following commands:

- Press ++ctrl+alt+n++ or ++cmd+option+n++ on your keyboard.
- Open the left menu, navigate to **Workflows**, and select **Add workflow**.

/// note | No node for that service?
The HTTP Request node is one of the most versatile nodes, allowing you to make HTTP requests to query data from apps and services. You can use it to access data from apps or services that don't have a dedicated node in n8n.
///

## Add an Airtable node

Add an Airtable node and connect it.

In the node panel:

1. Search for Airtable.
2. Select **Search a record** from the **Record Actions** search results.

This will add the Airtable node to your canvas and open the node details window.

In the Airtable node window, configure the following parameters:

- **Credential to connect with**:
- Select **Create new credential**.
- Keep the default option **Connect using: Access Token** selected.
- **Access token**: Follow the instructions on the [Airtable credential](/integrations/builtin/credentials/airtable.md) page to create your token. Use the recommended scopes and add access to your beginners course base. Save the credential and close the Credential window when you're finished.
- **Resource**: Record.
- **Operation**: Search. This operation will search records in the existing table.
- **Base**: Select your base from the list.
- **Table**: Customers.

## Test the Airtable node

Once you've finished configuring the Airtable node, execute it by selecting **Execute step**. This might take a moment to process, but you can follow the progress by viewing the base in Airtable.

Your results should look like this:

<figure><img src="/_images/courses/level-two/chapter-five/l2-c5-1-airtable-search-node.png" alt="Airtable node results" style="width:100%"><figcaption align="center"><i>Airtable node results</i></figcaption></figure>

## Add an HTTP Request node

Add an HTTP Request node and connect it.

In the node panel:

1. Search for HTTP Request.

In the HTTP Request node window, configure the following parameters:

- **Method**: GET
- **URL**: https://restcountries.com/v3.1/all
- **Authentication**: None
- **Send Query Parameters**: Set toggle to On
- **Set Query Parameters**:
- **Name**: fields
- **Value**: name,region,subregion

## Test the HTTP Request node

Once you've finished configuring the HTTP Request node, execute it by selecting **Execute step**.

Your results should look like this:

<figure><img src="/_images/courses/level-two/chapter-five/l2-c5-1-http-node.png" alt="HTTP Request node results" style="width:100%"><figcaption align="center"><i>HTTP Request node results</i></figcaption></figure>

## Add a Merge node

Add a Merge node and connect it.

In the node panel:

1. Search for Merge.

In the Merge node window, configure the following parameters:

- **Mode**: Combine
- **Combine By**: Matching Fields
- **Fields To Match Have Different Names**: Set toggle to On
- **Fields to Match**: Toggle On
- **Input 1 Field**: customerCountry
- **Input 2 Field**: name.common

## Test the Merge node

Once you've finished configuring the Merge node, execute it by selecting **Execute step**.

Your results should look like this:

<figure><img src="/_images/courses/level-two/chapter-five/l2-c5-1-merge-node.png" alt="Merge node results" style="width:100%"><figcaption align="center"><i>Merge node results</i></figcaption></figure>

## Final Workflow

The workflow should look like this:

<figure><img src="/_images/courses/level-two/chapter-five/workflow1.png" alt="Workflow 1 for merging data from Airtable and the Countries API" style="width:100%"><figcaption align = "center"><i>Workflow 1 for merging data from Airtable and the Countries API</i></figcaption></figure>
<figure><img src="/_images/courses/level-two/chapter-five/workflow1.png" alt="Workflow 1 for merging data from Airtable and the Countries API" style="width:100%"><figcaption align="center"><i>Workflow 1 for merging data from Airtable and the Countries API</i></figcaption></figure>


/// question | Quiz questions
Expand Down