{
  "name": "🧑‍🎓 Test your data access techniques with progressive expression challenges",
  "nodes": [
    {
      "id": "c769722e-d2f2-42cf-9bc2-b13018b93b8a",
      "name": "Sticky Note13",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -400,
        -112
      ],
      "parameters": {
        "width": 460,
        "height": 552,
        "content": "## Expressions Knowledge Test\n\nWelcome to the practical test for n8n Expressions! The goal is to use expressions to pull specific data from the **\"Source Data\"** node.\n\n**How to use this test:**\n1.  F"
      }
    },
    {
      "id": "1881550a-caa1-4e9d-9399-153356d89eb0",
      "name": "Start Test!",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -144,
        240
      ]
    },
    {
      "id": "7af9ab86-755f-4ed5-89f3-2f945f19d5f3",
      "name": "Source Data",
      "type": "n8n-nodes-base.set",
      "position": [
        176,
        240
      ]
    },
    {
      "id": "04defff0-a2b6-4a05-8de4-160fc2857545",
      "name": "Instruction - Basic Access",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        400,
        16
      ],
      "parameters": {
        "width": 300,
        "height": 428,
        "content": "### Step 1: Basic Access\n\nModify the **\"Test - Basic Access\"** node.\n\n**Task:** Create a new field named `user_city`. Its value should be an expression that gets the `city` from the **\"Source Data\"** "
      }
    },
    {
      "id": "53f27214-cdef-45be-ad71-c60f96c0f7f0",
      "name": "Test - Basic Access",
      "type": "n8n-nodes-base.set",
      "position": [
        496,
        240
      ]
    },
    {
      "id": "fd464cfd-3ff0-4f64-90bb-dd086a2e7b2c",
      "name": "Check - Basic Access",
      "type": "n8n-nodes-base.if",
      "position": [
        752,
        240
      ]
    },
    {
      "id": "7df3c072-a908-498e-9034-13a7e03a4703",
      "name": "Success - Basic Access",
      "type": "n8n-nodes-base.noOp",
      "position": [
        992,
        128
      ]
    },
    {
      "id": "6e087d88-3c5d-454e-81ac-5aec12514edb",
      "name": "Error - Basic Access",
      "type": "n8n-nodes-base.stopAndError",
      "position": [
        992,
        448
      ]
    },
    {
      "id": "fa74e360-5b85-4fe0-9c65-547a5d788642",
      "name": "Instruction - Array Access",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1216,
        16
      ],
      "parameters": {
        "width": 300,
        "height": 428,
        "content": "### Step 2: Array Access\n\nModify the **\"Test - Array Access\"** node.\n\n**Task:** Create a field `third_tool`. Its value should be an expression that gets the *third* item from the `tools` array."
      }
    },
    {
      "id": "33fc1900-e793-4c4f-8d66-849be1ebee89",
      "name": "Test - Array Access",
      "type": "n8n-nodes-base.set",
      "position": [
        1312,
        240
      ]
    },
    {
      "id": "59622f54-9685-4115-bad0-3dcde79b0e76",
      "name": "Check - Array Access",
      "type": "n8n-nodes-base.if",
      "position": [
        1568,
        240
      ]
    },
    {
      "id": "516d40d3-3ec9-42ff-993e-0965695d1c63",
      "name": "Success - Array Access",
      "type": "n8n-nodes-base.noOp",
      "position": [
        1808,
        128
      ]
    },
    {
      "id": "823aa93b-3e0c-4bb4-a3fd-5d960c14d8b4",
      "name": "Error - Array Access",
      "type": "n8n-nodes-base.stopAndError",
      "position": [
        1808,
        448
      ]
    },
    {
      "id": "5c7f181c-3ebd-41e7-8012-bf26a7e724b6",
      "name": "Instruction - Nested Object",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2032,
        16
      ],
      "parameters": {
        "width": 300,
        "height": 428,
        "content": "### Step 3: Nested Object\n\nModify the **\"Test - Nested Object\"** node.\n\n**Task:** Create a field `street_address`. Its value should be an expression that gets the `street` from inside the `address` ob"
      }
    },
    {
      "id": "6c8d3b1d-4e67-4bf7-9d52-7c37c2a52ec3",
      "name": "Test - Nested Object",
      "type": "n8n-nodes-base.set",
      "position": [
        2128,
        240
      ]
    },
    {
      "id": "188028b2-01df-46ed-9977-ef9dcb6cb9ae",
      "name": "Check - Nested Object",
      "type": "n8n-nodes-base.if",
      "position": [
        2384,
        240
      ]
    },
    {
      "id": "ebe135cb-b246-4868-ad97-6bf20c43f3e0",
      "name": "Success - Nested Object",
      "type": "n8n-nodes-base.noOp",
      "position": [
        2624,
        128
      ]
    },
    {
      "id": "d1312875-9ecc-48db-81aa-14b189e4bd9c",
      "name": "Error - Nested Object",
      "type": "n8n-nodes-base.stopAndError",
      "position": [
        2624,
        448
      ]
    },
    {
      "id": "946cf25f-706d-4d05-aeaa-028e3a229856",
      "name": "Instruction - Array of Objects",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2848,
        16
      ],
      "parameters": {
        "width": 300,
        "height": 428,
        "content": "### Step 4: Array of Objects\n\nModify the **\"Test - Array of Objects\"** node.\n\n**Task:** Create a field `second_task_name`. Its value should be an expression that gets the `name` of the *second* object"
      }
    },
    {
      "id": "de975fc2-c145-4d5c-8426-03e5ce702846",
      "name": "Test - Array of Objects",
      "type": "n8n-nodes-base.set",
      "position": [
        2944,
        240
      ]
    },
    {
      "id": "0ab0b02e-60a3-4d7f-83d0-6516b479e08d",
      "name": "Check - Array of Objects",
      "type": "n8n-nodes-base.if",
      "position": [
        3200,
        240
      ]
    },
    {
      "id": "5db2abba-a971-4920-af0c-db95b4d8a1e2",
      "name": "Success - Array of Objects",
      "type": "n8n-nodes-base.noOp",
      "position": [
        3440,
        128
      ]
    },
    {
      "id": "5aab74e4-7bb8-4678-b6d3-1e00a7a22342",
      "name": "Error - Array of Objects",
      "type": "n8n-nodes-base.stopAndError",
      "position": [
        3440,
        448
      ]
    },
    {
      "id": "e98182bb-d555-48e0-9126-ca0590e2c424",
      "name": "Instruction - JS Function",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3664,
        16
      ],
      "parameters": {
        "width": 300,
        "height": 412,
        "content": "### Step 5: JS Function\n\nModify the **\"Test - JS Function\"** node.\n\n**Task:** Create a field `uppercase_name`. Its value should be an expression that gets the `name` and converts it to `UPPERCASE`."
      }
    },
    {
      "id": "06f1e85c-f4e5-4e49-b678-22bb189421c0",
      "name": "Test - JS Function",
      "type": "n8n-nodes-base.set",
      "position": [
        3760,
        240
      ]
    },
    {
      "id": "c485b7a3-5b91-4935-b9b6-3440c8e8a241",
      "name": "Check - JS Function",
      "type": "n8n-nodes-base.if",
      "position": [
        4016,
        240
      ]
    },
    {
      "id": "be45ea18-23db-407e-a886-a7aeef79c5ee",
      "name": "Success - JS Function",
      "type": "n8n-nodes-base.noOp",
      "position": [
        4256,
        128
      ]
    },
    {
      "id": "b56c667a-5818-49de-b042-0d2655f7bea2",
      "name": "Error - JS Function",
      "type": "n8n-nodes-base.stopAndError",
      "position": [
        4256,
        448
      ]
    },
    {
      "id": "4151ae3d-4b4c-4d4a-b5b7-b5de5288fd9a",
      "name": "Instruction - Final",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        4480,
        -48
      ],
      "parameters": {
        "width": 300,
        "height": 476,
        "content": "### Final Challenge!\n\nModify the **\"Test - Final\"** node.\n\n**Task:** Create a field `summary`. Its value should be a single string that reads:\n`The status of task 'Review PR' is Pending.`\n\nYou'll need"
      }
    },
    {
      "id": "3d990a6c-c598-4847-b89a-8eb158db4d21",
      "name": "Test - Final",
      "type": "n8n-nodes-base.set",
      "position": [
        4576,
        240
      ]
    },
    {
      "id": "d81171ab-97ac-4b14-bdae-1a7479ae2e31",
      "name": "Check - Final",
      "type": "n8n-nodes-base.if",
      "position": [
        4832,
        240
      ]
    },
    {
      "id": "e8e56a4a-0c20-42ce-91bc-120be38067ba",
      "name": "Success - Final",
      "type": "n8n-nodes-base.noOp",
      "position": [
        5072,
        112
      ]
    },
    {
      "id": "b1ea5a88-8acc-4e46-8998-162c2e01e995",
      "name": "Error - Final",
      "type": "n8n-nodes-base.stopAndError",
      "position": [
        5072,
        448
      ]
    },
    {
      "id": "4e2a56ad-59fd-40af-82cc-ce2e64478a69",
      "name": "🎉 SUCCESS 🎉",
      "type": "n8n-nodes-base.html",
      "position": [
        5424,
        224
      ]
    },
    {
      "id": "d9efe1c3-e838-46f9-91bf-074ea6dde9ff",
      "name": "Instruction - Basic Access1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        80,
        128
      ],
      "parameters": {
        "width": 300,
        "height": 316,
        "content": "![Source](https://media4.giphy.com/media/v1.Y2lkPTc5MGI3NjExendjcXhicnQ1bzljNnVkdWlucThyanBvbndmcm8zd3FkdjJ6bGNsdSZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/3ohzdZO0nAL1H2LdMA/giphy.gif)"
      }
    },
    {
      "id": "a5a89905-5c09-454e-9244-cec5233f6483",
      "name": "Answer - Basic Access",
      "type": "n8n-nodes-base.set",
      "position": [
        496,
        608
      ]
    },
    {
      "id": "41d01828-1e14-4b3d-9f11-09493d6cb486",
      "name": "Answer Note - Basic Access",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        400,
        464
      ],
      "parameters": {
        "width": 304,
        "height": 320,
        "content": "💡 **Answer Key**\n\nThis node contains the correct expression for the **Basic Access** step. You can use it as a reference if you get stuck."
      }
    },
    {
      "id": "923f04a6-4593-48df-981e-58ab0a8d9779",
      "name": "Feedback Correct1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        928,
        0
      ],
      "parameters": {
        "width": null,
        "height": 272,
        "content": "✅ **Correct!**\n\nGreat start. Let's access an array next."
      }
    },
    {
      "id": "4afc256b-88b6-47b2-b105-2b419f18b3f0",
      "name": "Feedback Incorrect1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        928,
        288
      ],
      "parameters": {
        "width": null,
        "height": 320,
        "content": "❌ **Incorrect.**\n\n**Hint:** Use the format\n`{{ $('Source Data').item.json.city }}`\nto get the city value."
      }
    },
    {
      "id": "37b4dc1e-2588-4243-b0d6-70e5956575f7",
      "name": "Answer - Array Access",
      "type": "n8n-nodes-base.set",
      "position": [
        1312,
        608
      ]
    },
    {
      "id": "2bbd9ac7-4acc-41b0-9511-0929e961b56a",
      "name": "Answer Note - Array Access",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1216,
        464
      ],
      "parameters": {
        "width": 304,
        "height": 320,
        "content": "💡 **Answer Key**\n\nThis node contains the correct expression for the **Array Access** step. You can use it as a reference if you get stuck."
      }
    },
    {
      "id": "399cccd8-ff46-49ca-8294-5a9f7484aa47",
      "name": "Feedback Correct2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1728,
        0
      ],
      "parameters": {
        "width": 256,
        "height": 272,
        "content": "✅ **Correct!**\n\nPerfect. Now for nested data."
      }
    },
    {
      "id": "ff5db2b3-6f5d-42d8-afc1-f79dcd551ce3",
      "name": "Feedback Incorrect2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1728,
        288
      ],
      "parameters": {
        "width": 256,
        "height": 320,
        "content": "❌ **Incorrect.**\n\n**Hint:** Remember that arrays are zero-indexed. The third item is at index `[2]`."
      }
    },
    {
      "id": "0cf6b471-7c91-4576-9a04-31bd99553aed",
      "name": "Answer - Nested Object",
      "type": "n8n-nodes-base.set",
      "position": [
        2128,
        608
      ]
    },
    {
      "id": "75b741f5-8eab-400c-8a8a-b35ed5f1e930",
      "name": "Answer Note - Nested Object",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2032,
        464
      ],
      "parameters": {
        "width": 304,
        "height": 320,
        "content": "💡 **Answer Key**\n\nThis node contains the correct expression for the **Nested Object** step. You can use it as a reference if you get stuck."
      }
    },
    {
      "id": "6b39c109-465c-474e-afe7-bfc00181e5a3",
      "name": "Feedback Correct3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2544,
        0
      ],
      "parameters": {
        "width": 256,
        "height": 272,
        "content": "✅ **Correct!**\n\nExcellent. Let's combine arrays and objects."
      }
    },
    {
      "id": "8836d90a-8aef-4c18-8fc3-156a7342689b",
      "name": "Feedback Incorrect3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2544,
        288
      ],
      "parameters": {
        "width": 256,
        "height": 320,
        "content": "❌ **Incorrect.**\n\n**Hint:** Chain the keys using dots, like `...json.address.street`."
      }
    },
    {
      "id": "13c9a37f-9cc1-4ec3-b04f-1c8ccb4ed400",
      "name": "Answer - Array of Objects",
      "type": "n8n-nodes-base.set",
      "position": [
        2944,
        608
      ]
    },
    {
      "id": "4021f70b-f8fc-4856-a8a9-32886a39075b",
      "name": "Answer Note - Array of Objects",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2848,
        464
      ],
      "parameters": {
        "width": 304,
        "height": 320,
        "content": "💡 **Answer Key**\n\nThis node contains the correct expression for the **Array of Objects** step. You can use it as a reference if you get stuck."
      }
    },
    {
      "id": "f1db5c03-4676-4f7f-b6d3-84e9d09ef886",
      "name": "Feedback Correct4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3360,
        0
      ],
      "parameters": {
        "width": 256,
        "height": 272,
        "content": "✅ **Correct!**\n\nYou're getting the hang of this. Time for some JavaScript magic."
      }
    },
    {
      "id": "76578357-6c68-4144-a8a4-4d64f121aa01",
      "name": "Feedback Incorrect4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3360,
        288
      ],
      "parameters": {
        "width": 256,
        "height": 320,
        "content": "❌ **Incorrect.**\n\n**Hint:** Combine array access `[1]` with object access `.name`."
      }
    },
    {
      "id": "794be646-6a3e-4b8d-a941-90d621dca210",
      "name": "Answer - JS Function",
      "type": "n8n-nodes-base.set",
      "position": [
        3760,
        592
      ]
    },
    {
      "id": "5beb208e-4c0c-4d73-8ace-daacbf00a245",
      "name": "Answer Note - JS Function",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3664,
        448
      ],
      "parameters": {
        "width": 304,
        "height": 336,
        "content": "💡 **Answer Key**\n\nThis node contains the correct expression for the **JS Function** step. You can use it as a reference if you get stuck."
      }
    },
    {
      "id": "3492291f-d171-418f-9dd5-40fbd766acbd",
      "name": "Feedback Correct5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        4176,
        0
      ],
      "parameters": {
        "width": 256,
        "height": 272,
        "content": "✅ **Correct!**\n\nAwesome! One final challenge to bring it all together."
      }
    },
    {
      "id": "d54f48f8-7924-4444-b840-6a3a2ea5f5c9",
      "name": "Feedback Incorrect5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        4176,
        288
      ],
      "parameters": {
        "width": 256,
        "height": 320,
        "content": "❌ **Incorrect.**\n\n**Hint:** Add `.toUpperCase()` to the end of your expression, inside the `{{ }}`."
      }
    },
    {
      "id": "550c88b1-4e26-4fb5-a0b3-cfcf649b595e",
      "name": "Answer - Final",
      "type": "n8n-nodes-base.set",
      "position": [
        4576,
        592
      ]
    },
    {
      "id": "edb83bc9-25ed-488d-ab71-dd77103d874b",
      "name": "Answer Note - Final",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        4480,
        448
      ],
      "parameters": {
        "width": 304,
        "height": 336,
        "content": "💡 **Answer Key**\n\nThis node contains the correct expression for the **Final** step. You can use it as a reference if you get stuck."
      }
    },
    {
      "id": "7a36c242-d76e-4675-8411-a24506e090c8",
      "name": "Feedback Correct6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        4992,
        32
      ],
      "parameters": {
        "width": 256,
        "height": 240,
        "content": "✅ **YOU DID IT!**"
      }
    },
    {
      "id": "d5a3c589-35f8-49be-a27b-6a82198438bc",
      "name": "Feedback Incorrect6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        4992,
        288
      ],
      "parameters": {
        "width": 256,
        "height": 320,
        "content": "❌ **Incorrect.**\n\n**Hint:** Combine static text and expressions like this:\n`Some text '{{ expression1 }}' and {{ expression2 }}`."
      }
    },
    {
      "id": "30003316-86b3-434e-844c-f67b0722f2e0",
      "name": "Congratulations!",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        5264,
        32
      ],
      "parameters": {
        "width": 416,
        "height": 576,
        "content": "🎉 **Congratulations! You've passed the test!**\n\nYou have successfully demonstrated your understanding of all the basic JSON data types.\n\nYou are now ready to work with data in n8n.\n\n-- Well done! --"
      }
    },
    {
      "id": "960695a0-b8db-4346-8566-7e5d4feb6571",
      "name": "Sticky Note10",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        5712,
        -384
      ],
      "parameters": {
        "width": 540,
        "height": 1280,
        "content": "## Was this helpful? Let me know!\n[![clic](https://supastudio.ia2s.app/storage/v1/object/public/assets/n8n/clic_down_lucas.gif)](https://n8n.ac)\n\nI really hope this test helped you check your Expressi"
      }
    },
    {
      "id": "d3a6fe0a-3670-40c2-bcb8-4a75e5721abe",
      "name": "Sticky Note16",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        5344,
        384
      ],
      "parameters": {
        "width": 272,
        "height": 184,
        "content": "[![Test Skills](https://supastudio.ia2s.app/storage/v1/object/public/assets/n8n/n8n_animation.gif)](https://n8n.io/creators/lucaspeyrin)"
      }
    }
  ],
  "connections": {
    "Source Data": {
      "main": [
        [
          {
            "node": "Test - Basic Access",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Start Test!": {
      "main": [
        [
          {
            "node": "Source Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Test - Final": {
      "main": [
        [
          {
            "node": "Check - Final",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check - Final": {
      "main": [
        [
          {
            "node": "Success - Final",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Error - Final",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Success - Final": {
      "main": [
        [
          {
            "node": "🎉 SUCCESS 🎉",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Test - JS Function": {
      "main": [
        [
          {
            "node": "Check - JS Function",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check - JS Function": {
      "main": [
        [
          {
            "node": "Success - JS Function",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Error - JS Function",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Test - Array Access": {
      "main": [
        [
          {
            "node": "Check - Array Access",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Test - Basic Access": {
      "main": [
        [
          {
            "node": "Check - Basic Access",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check - Array Access": {
      "main": [
        [
          {
            "node": "Success - Array Access",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Error - Array Access",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check - Basic Access": {
      "main": [
        [
          {
            "node": "Success - Basic Access",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Error - Basic Access",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Test - Nested Object": {
      "main": [
        [
          {
            "node": "Check - Nested Object",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Answer - Basic Access": {
      "main": [
        []
      ]
    },
    "Check - Nested Object": {
      "main": [
        [
          {
            "node": "Success - Nested Object",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Error - Nested Object",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Success - JS Function": {
      "main": [
        [
          {
            "node": "Test - Final",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Success - Array Access": {
      "main": [
        [
          {
            "node": "Test - Nested Object",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Success - Basic Access": {
      "main": [
        [
          {
            "node": "Test - Array Access",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Success - Nested Object": {
      "main": [
        [
          {
            "node": "Test - Array of Objects",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Test - Array of Objects": {
      "main": [
        [
          {
            "node": "Check - Array of Objects",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check - Array of Objects": {
      "main": [
        [
          {
            "node": "Success - Array of Objects",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Error - Array of Objects",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Success - Array of Objects": {
      "main": [
        [
          {
            "node": "Test - JS Function",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}