Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Relative image links #9

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open
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
4 changes: 2 additions & 2 deletions docs/courses/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,5 @@ These tasks can and should be automated! And you don't need advanced technical k

## Available courses

- [Level 1: Beginner course](/courses/level-one/)
- [Level 2: Intermediate course](/courses/level-two/)
- [Level 1: Beginner course](level-one/)
- [Level 2: Intermediate course](level-two/)
8 changes: 4 additions & 4 deletions docs/courses/level-one/chapter-1.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ In this lesson you will learn how to navigate the Editor UI. We will walk throug

## Getting started

First of all, you need to get n8n. There are different [ways to set up n8n](/hosting/options/){:target="_blank" .external}, choose the option that best suits your skills and needs.
First of all, you need to get n8n. There are different [ways to set up n8n](../../hosting/options/){:target="_blank" .external}, choose the option that best suits your skills and needs.

!!! warning "n8n version"

Expand All @@ -20,7 +20,7 @@ Next, you'll learn how to navigate the Editor UI.

## Editor UI settings

The [Editor UI](/editor-ui/){:target="_blank" .external} represents the web interface where you build [workflows](/workflows/workflows/){:target="_blank" .external}. Think of it as a canvas on which the artist in you designs automations. From the Editor UI you can access all your workflows and credentials, as well as support pages.
The [Editor UI](../../editor-ui/){:target="_blank" .external} represents the web interface where you build [workflows](../../workflows/workflows/){:target="_blank" .external}. Think of it as a canvas on which the artist in you designs automations. From the Editor UI you can access all your workflows and credentials, as well as support pages.

### Left-side panel

Expand Down Expand Up @@ -56,7 +56,7 @@ The *canvas* is the gray grid background in the Editor UI. On the canvas, there
- Buttons to zoom the canvas to fit the screen, zoom in or out of the canvas, and reset the canvas to the original resolution.
- A button to *Execute Workflow*. When you click on it, all nodes on the canvas are executed.
- A button with a *+* sign inside. This button opens the nodes panel.
- A button with a note icon inside. This button adds a [sticky note](/workflows/sticky-notes){:target="_blank" .external} to the canvas.
- A button with a note icon inside. This button adds a [sticky note](../../workflows/sticky-notes){:target="_blank" .external} to the canvas.
- A square with a green play icon inside. This is the *Start node*. You will learn more about nodes in the [next section](#nodes).

<figure><img src="/_images/courses/level-one/chapter-one/Workflow-canvas.png" alt="Workflow canvas" style="width:100%"><figcaption align = "center"><i>Workflow canvas</i></figcaption></figure>
Expand Down Expand Up @@ -88,7 +88,7 @@ Based on their function, nodes can be classified into two types:

### Start node

The [*Start node*](/integrations/builtin/core-nodes/n8n-nodes-base.start/){:target="_blank" .external} is the default starting point in any workflow. Every time you create a new workflow, a *Start node* will be included by default.
The [*Start node*](../../integrations/builtin/core-nodes/n8n-nodes-base.start/){:target="_blank" .external} is the default starting point in any workflow. Every time you create a new workflow, a *Start node* will be included by default.

The **Start** node cannot be deleted or duplicated. If you have a workflow in which you don't use the Start node, you can remove the connection, deactivate it, and move it away from the workflow. If you need more than one Start node, you probably need to use other Trigger nodes or create separate workflows.

Expand Down
14 changes: 7 additions & 7 deletions docs/courses/level-one/chapter-2.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ Additional fields are options that you can add to certain nodes to make your req

The configuration of the parameters for the *Hacker News node* should now look like this:

<figure><img src="/_images/courses/level-one/chapter-one/Hacker-news-params.png" alt="Hacker News node parameters" style="width:100%"><figcaption align = "center"><i>Hacker News node parameters</i></figcaption></figure>
<figure><img src="../../_images/courses/level-one/chapter-one/Hacker-news-params.png" alt="Hacker News node parameters" style="width:100%"><figcaption align = "center"><i>Hacker News node parameters</i></figcaption></figure>

### Settings

Expand All @@ -51,7 +51,7 @@ This option will display the description note under the node in the Editor UI.

The configuration of the settings for the *Hacker News node* looks like this:

<figure><img src="/_images/courses/level-one/chapter-one/Hacker-news-settings.png" alt="Hacker News node renaming" style="width:100%"><figcaption align = "center"><i>Hacker News node renaming</i></figcaption></figure>
<figure><img src="../../_images/courses/level-one/chapter-one/Hacker-news-settings.png" alt="Hacker News node renaming" style="width:100%"><figcaption align = "center"><i>Hacker News node renaming</i></figcaption></figure>


!!! note "Renaming a node"
Expand All @@ -60,7 +60,7 @@ The configuration of the settings for the *Hacker News node* looks like this:
- Select the node you want to rename and at the same time press the F2 key on your keyboard.
- Double-click on the node to open the node window. Click on the name of the node in the top left corner of the window, rename it as you like, then click *Rename* to save the node under the new name.

<figure><img src="/_images/courses/level-one/chapter-one/Renaming-node-keyboard.png" alt="Renaming a node" style="width:100%"><figcaption align = "center"><i>Renaming a node from the keyboard</i></figcaption></figure>
<figure><img src="../../_images/courses/level-one/chapter-one/Renaming-node-keyboard.png" alt="Renaming a node" style="width:100%"><figcaption align = "center"><i>Renaming a node from the keyboard</i></figcaption></figure>


## 3. Save the workflow
Expand All @@ -77,7 +77,7 @@ There are two ways in which you can save a workflow:

Click on the *Execute Node* button in the top right corner of the node window. You should see 10 results in *Table* view.

<figure><img src="/_images/courses/level-one/chapter-one/Hacker-news-table.png" alt="Results in Table view for the Hacker News node" style="width:100%"><figcaption align = "center"><i>Results in Table view for the Hacker News node</i></figcaption></figure>
<figure><img src="../../_images/courses/level-one/chapter-one/Hacker-news-table.png" alt="Results in Table view for the Hacker News node" style="width:100%"><figcaption align = "center"><i>Results in Table view for the Hacker News node</i></figcaption></figure>

## Node executions

Expand All @@ -87,15 +87,15 @@ Click on the *Execute Node* button in the top right corner of the node window. Y

If a node executed successfully a small green circle with a number inside will appear on top of the node.

<figure><img src="/_images/courses/level-one/chapter-one/Hacker-news-success.png" alt="Successfully executed workflow" style="width:100%"><figcaption align = "center"><i>Successfully executed workflow</i></figcaption></figure>
<figure><img src="../../_images/courses/level-one/chapter-one/Hacker-news-success.png" alt="Successfully executed workflow" style="width:100%"><figcaption align = "center"><i>Successfully executed workflow</i></figcaption></figure>

If the parameters are configured correctly and everything works fine, the requested data will be displayed in the node window in *Table* and *JSON* format. You can switch between these views by selecting the one you want from the *JSON|Table* button at the top of the node window.

!!! note "Table vs JSON views"
The *Table* view is the default. It displays the requested data in a table, where the rows are the records and the columns are the available attributes of those records.


<figure><img src="/_images/courses/level-one/chapter-one/Hacker-news-json.png" alt="Results in JSON view for the Hacker News node" style="width:100%"><figcaption align = "center"><i>Results in JSON view for the Hacker News node</i></figcaption></figure>
<figure><img src="../../_images/courses/level-one/chapter-one/Hacker-news-json.png" alt="Results in JSON view for the Hacker News node" style="width:100%"><figcaption align = "center"><i>Results in JSON view for the Hacker News node</i></figcaption></figure>

The node window displays more information about the node execution:

Expand All @@ -109,7 +109,7 @@ This field displays the number of items (records) that are returned by the node
!!! warning "Error in nodes"
A red warning icon on a node means that the node has errors. This might happen if the node credentials are missing or incorrect, or the node parameters are not configured correctly.

<figure style="text-align:center;"><img src="/_images/courses/level-one/chapter-one/Error-node.png" alt="Error in nodes" style="width:30%" align="center"><figcaption align = "center"><i>Error in nodes</i></figcaption></figure>
<figure style="text-align:center;"><img src="../../_images/courses/level-one/chapter-one/Error-node.png" alt="Error in nodes" style="width:30%" align="center"><figcaption align = "center"><i>Error in nodes</i></figcaption></figure>


## Summary
Expand Down
20 changes: 10 additions & 10 deletions docs/courses/level-one/chapter-4.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,21 +13,21 @@ Nathan's workflow involves sending data from the company's data warehouse to two

n8n provides integrations for all these steps, so Nathan's workflow in n8n would look like this:

<figure><img src="/_images/courses/level-one/chapter-two/Finished-workflow.png" alt="Finished workflow" style="width:100%"><figcaption align = "center"><i>Nathan's workflow</i></figcaption></figure>
<figure><img src="../../_images/courses/level-one/chapter-two/Finished-workflow.png" alt="Finished workflow" style="width:100%"><figcaption align = "center"><i>Nathan's workflow</i></figcaption></figure>

You will build this workflow in 8 steps:

1. [Getting data from the data warehouse](/courses/level-one/chapter-5/chapter-5.1/)
2. [Inserting data into Airtable](/courses/level-one/chapter-5/chapter-5.2/)
3. [Filtering orders](/courses/level-one/chapter-5/chapter-5.3/)
4. [Setting values for processing orders](/courses/level-one/chapter-5/chapter-5.4/)
5. [Calculating booked orders](/courses/level-one/chapter-5/chapter-5.5/)
6. [Notifying the team](/courses/level-one/chapter-5/chapter-5.6/)
7. [Scheduling the workflow](/courses/level-one/chapter-5/chapter-5.7/)
8. [Activating and examining the workflow](/courses/level-one/chapter-5/chapter-5.8/)
1. [Getting data from the data warehouse](../chapter-5.1/)
2. [Inserting data into Airtable](../chapter-5.2/)
3. [Filtering orders](../chapter-5.3/)
4. [Setting values for processing orders](../chapter-5.4/)
5. [Calculating booked orders](../chapter-5.5/)
6. [Notifying the team](../chapter-5.6/)
7. [Scheduling the workflow](../chapter-5.7/)
8. [Activating and examining the workflow](../chapter-5.8/)

To build this workflow, you will need credentials that are sent in the email from n8n when you sign up for this course. If you haven't signed up already, you can do it [here](https://n8n-community.typeform.com/to/PDEMrevI?typeform-source=127.0.0.1){:target="_blank" .external-link}. If you haven't received a confirmation email after signing up, [contact us](mailto:course@n8n.io).

<div style="text-align:center;">
<button style="font-weight: 600;padding: 20px 46px;border-radius: 30px;color: #fff;background-color: #ff6d5a;border-color: #ff6d5a;border: 1px solid #ff6d5a;font-size: 14px;"><a href="/courses/level-one/chapter-5/chapter-5.1/" style="color: #fff;">Start building!</a></button>
<button style="font-weight: 600;padding: 20px 46px;border-radius: 30px;color: #fff;background-color: #ff6d5a;border-color: #ff6d5a;border: 1px solid #ff6d5a;font-size: 14px;"><a href="../chapter-5.1/" style="color: #fff;">Start building!</a></button>
</div>
12 changes: 6 additions & 6 deletions docs/courses/level-one/chapter-5/chapter-5.1.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,15 +13,15 @@ The first thing you need to do is get data from ABCorp's old data warehouse.

In the previous chapter, you used a regular node for a specific app (YCombinator). However, not all apps or services have dedicated nodes – like the legacy data warehouse from Nathan's company.

Though it's not possible to directly export the data, the data warehouse has a couple of API endpoints. That's all we need to access the data via the [***HTTP Request node***](/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/){:target="_blank" .external} in n8n.
Though it's not possible to directly export the data, the data warehouse has a couple of API endpoints. That's all we need to access the data via the [***HTTP Request node***](../../../integrations/builtin/core-nodes/n8n-nodes-base.httprequest/){:target="_blank" .external} in n8n.

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


Now, in your Editor UI, add an *HTTP Request node* like you learned in the lesson [Adding nodes](/courses/level-one/chapter-1/#adding-nodes). The node window will open, where you need to configure some parameters.
Now, in your Editor UI, add an *HTTP Request node* like you learned in the lesson [Adding nodes](../../chapter-1/#adding-nodes). The node window will open, where you need to configure some parameters.

<figure><img src="/_images/courses/level-one/chapter-two/HTTP-request-node.png" alt="HTTP Request node" style="width:100%"><figcaption align = "center"><i>HTTP Request node</i></figcaption></figure>
<figure><img src="../../../_images/courses/level-one/chapter-two/HTTP-request-node.png" alt="HTTP Request node" style="width:100%"><figcaption align = "center"><i>HTTP Request node</i></figcaption></figure>

In the left panel, select:

Expand All @@ -48,15 +48,15 @@ In the *Connection* tab, fill in the two fields:

Click on the *Save* button in the top right corner to save your credentials. Your *Credentials Connection* window should look like this:

<figure><img src="/_images/courses/level-one/chapter-two/HTTP-credentials.png" alt="HTTP Request node credentials" style="width:100%"><figcaption align = "center"><i>HTTP Request node credentials</i></figcaption></figure>
<figure><img src="../../../_images/courses/level-one/chapter-two/HTTP-credentials.png" alt="HTTP Request node credentials" style="width:100%"><figcaption align = "center"><i>HTTP Request node credentials</i></figcaption></figure>

Now click the *Save* button in the bottom right corner of the window.

In the *HTTP Request node* window, click the *Execute Node* button. The result of the HTTP request should look like this:

<figure><img src="/_images/courses/level-one/chapter-two/HTTP-Request-window.png" alt="HTTP Request node window" style="width:100%"><figcaption align = "center"><i>HTTP Request node window</i></figcaption></figure>
<figure><img src="../../../_images/courses/level-one/chapter-two/HTTP-Request-window.png" alt="HTTP Request node window" style="width:100%"><figcaption align = "center"><i>HTTP Request node window</i></figcaption></figure>

This view should be familiar to you from the [Hacker News mini-workflow](/courses/level-one/chapter-2/). This is the data from ABCorp's data warehouse that Nathan needs to work with. This data set includes sales information of 30 customers with 5 features:
This view should be familiar to you from the [Hacker News mini-workflow](../../chapter-2/). This is the data from ABCorp's data warehouse that Nathan needs to work with. This data set includes sales information of 30 customers with 5 features:

- *orderID:* The unique id of each order.
- *customerID:* The unique id of each customer.
Expand Down
10 changes: 5 additions & 5 deletions docs/courses/level-one/chapter-5/chapter-5.3.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@ In this step of the workflow you will learn how to filter data using conditional

To insert only processing orders into Airtable we need to filter our data by *orderStatus*. Basically, we want to tell the program that _if_ the *orderStatus* is processing, _then_ insert all records with this status into Airtable; _else_, i.e. if the *orderStatus* is not *processing*, calculate the sum of all orders with the other *orderStatus (booked)*.

This if-then-else command is conditional logic. In n8n workflows, conditional logic can be implemented with the [**IF node**](/integrations/builtin/core-nodes/n8n-nodes-base.if/){:target="_blank" .external}, which splits a workflow conditionally based on comparison operations.
This if-then-else command is conditional logic. In n8n workflows, conditional logic can be implemented with the [**IF node**](../../../integrations/builtin/core-nodes/n8n-nodes-base.if/){:target="_blank" .external}, which splits a workflow conditionally based on comparison operations.

!!! note "IF vs Switch"
If you need to filter data on more than two conditional routes that are possible with the *IF* node (true and false), use the [*Switch node*](/integrations/builtin/core-nodes/n8n-nodes-base.switch/){:target="_blank" .external}. The *Switch node* is similar to the *IF* node, but supports up to four conditional routes.
If you need to filter data on more than two conditional routes that are possible with the *IF* node (true and false), use the [*Switch node*](../../../integrations/builtin/core-nodes/n8n-nodes-base.switch/){:target="_blank" .external}. The *Switch node* is similar to the *IF* node, but supports up to four conditional routes.


Back to your workflow, remove the connection between the *HTTP Request* node and the *Airtable* node. Add an *IF* node connected to the *HTTP Request* node.
Expand All @@ -21,7 +21,7 @@ To select this value, click the **Expression** tab on the right side of the Valu
An expression is a string of characters and symbols in a programming language that represents a value depending upon its input. In n8n workflows, you can use expressions in a node to refer to another node for input data. In our example, the IF node references the data output by the HTTP Request node.


<figure><img src="/_images/courses/level-one/chapter-two/If-node-expression-editor.png" alt="Expression Editor in the IF node" style="width:100%"><figcaption align = "center"><i>Expression Editor in the IF node</i></figcaption></figure>
<figure><img src="../../../_images/courses/level-one/chapter-two/If-node-expression-editor.png" alt="Expression Editor in the IF node" style="width:100%"><figcaption align = "center"><i>Expression Editor in the IF node</i></figcaption></figure>

- *Operation:* equal
- *Value 2:* processing
Expand All @@ -32,13 +32,13 @@ To select this value, click the **Expression** tab on the right side of the Valu

Now execute the IF node and have a look at the resulting data, which should look like this:

<figure><img src="/_images/courses/level-one/chapter-two/If-node.png" alt="IF node" style="width:100%"><figcaption align = "center"><i>IF node</i></figcaption></figure>
<figure><img src="../../../_images/courses/level-one/chapter-two/If-node.png" alt="IF node" style="width:100%"><figcaption align = "center"><i>IF node</i></figcaption></figure>

Next, we want to insert this data into Airtable. You already know how to do this from the previous chapter where we inserted all data into the *orders* table.

At this stage, your workflow should look like this:

<figure><img src="/_images/courses/level-one/chapter-two/Workflow-with-If-node.png" alt="Workflow with the IF node" style="width:100%"><figcaption align = "center"><i>Workflow with the IF node</i></figcaption></figure>
<figure><img src="../../../_images/courses/level-one/chapter-two/Workflow-with-If-node.png" alt="Workflow with the IF node" style="width:100%"><figcaption align = "center"><i>Workflow with the IF node</i></figcaption></figure>

## What's next?

Expand Down
Loading